From 9018af4f1d9c15366719e3d633be9f84d3bf41ea Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 12 Dec 2017 10:45:20 -0800 Subject: [PATCH 1/3] Bumped hash --- config/version.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/version.php b/config/version.php index bfa1dd3b34..86a96ae474 100644 --- a/config/version.php +++ b/config/version.php @@ -1,8 +1,8 @@ 'v4.1.8-pre', - 'full_app_version' => 'v4.1.8-pre - build 3103-geb827cd', - 'build_version' => '3103', + 'app_version' => 'v4.1.8', + 'full_app_version' => 'v4.1.8-pre - build 3106-geb827cd', + 'build_version' => '3106', 'prerelease_version' => '', 'hash_version' => 'geb827cd', 'full_hash' => 'v4.1.7-69-geb827cd', From 2952497a60bfcc79a704c2c83f770462415d7a46 Mon Sep 17 00:00:00 2001 From: snipe Date: Tue, 12 Dec 2017 11:42:26 -0800 Subject: [PATCH 2/3] Removed bower components directory We use npm/webpack now --- .../blueimp-canvas-to-blob/.bower.json | 14 - .../blueimp-canvas-to-blob/.gitignore | 2 - .../blueimp-canvas-to-blob/.npmignore | 3 - .../blueimp-canvas-to-blob/.travis.yml | 3 - .../blueimp-canvas-to-blob/README.md | 84 - .../js/canvas-to-blob.js | 111 - .../js/canvas-to-blob.min.js | 2 - .../js/canvas-to-blob.min.js.map | 1 - .../blueimp-canvas-to-blob/package.json | 39 - .../blueimp-canvas-to-blob/test/index.html | 40 - .../blueimp-canvas-to-blob/test/test.js | 92 - .../test/vendor/chai.js | 6142 ----- .../test/vendor/load-image.js | 364 - .../test/vendor/mocha.css | 326 - .../test/vendor/mocha.js | 15466 ------------- .../blueimp-file-upload/.bower.json | 74 - .../blueimp-file-upload/bower.json | 64 - .../css/jquery.fileupload-noscript.css | 22 - .../css/jquery.fileupload-ui-noscript.css | 17 - .../css/jquery.fileupload-ui.css | 57 - .../css/jquery.fileupload.css | 37 - .../blueimp-file-upload/img/loading.gif | Bin 3897 -> 0 bytes .../blueimp-file-upload/img/progressbar.gif | Bin 3323 -> 0 bytes .../js/cors/jquery.postmessage-transport.js | 126 - .../js/cors/jquery.xdr-transport.js | 89 - .../js/jquery.fileupload-angular.js | 435 - .../js/jquery.fileupload-audio.js | 113 - .../js/jquery.fileupload-image.js | 324 - .../js/jquery.fileupload-jquery-ui.js | 161 - .../js/jquery.fileupload-process.js | 178 - .../js/jquery.fileupload-ui.js | 713 - .../js/jquery.fileupload-validate.js | 125 - .../js/jquery.fileupload-video.js | 113 - .../js/jquery.fileupload.js | 1482 -- .../js/jquery.iframe-transport.js | 217 - .../js/vendor/jquery.ui.widget.js | 572 - .../blueimp-load-image/.bower.json | 14 - .../blueimp-load-image/.gitignore | 2 - .../blueimp-load-image/.npmignore | 3 - .../blueimp-load-image/.travis.yml | 3 - bower_components/blueimp-load-image/README.md | 321 - .../blueimp-load-image/css/demo.css | 74 - .../blueimp-load-image/css/vendor/Jcrop.gif | Bin 329 -> 0 bytes .../css/vendor/jquery.Jcrop.css | 165 - .../blueimp-load-image/index.html | 69 - .../blueimp-load-image/js/demo/demo.js | 162 - .../blueimp-load-image/js/index.js | 6 - .../js/load-image-exif-map.js | 387 - .../blueimp-load-image/js/load-image-exif.js | 300 - .../blueimp-load-image/js/load-image-meta.js | 159 - .../js/load-image-orientation.js | 181 - .../js/load-image.all.min.js | 2 - .../js/load-image.all.min.js.map | 1 - .../blueimp-load-image/js/load-image.js | 364 - .../js/vendor/jquery.Jcrop.js | 1694 -- .../blueimp-load-image/js/vendor/jquery.js | 10351 --------- .../blueimp-load-image/package.json | 49 - .../blueimp-load-image/test/index.html | 44 - .../blueimp-load-image/test/test.js | 539 - .../test/vendor/canvas-to-blob.js | 111 - .../blueimp-load-image/test/vendor/chai.js | 6142 ----- .../blueimp-load-image/test/vendor/mocha.css | 326 - .../blueimp-load-image/test/vendor/mocha.js | 15466 ------------- bower_components/blueimp-tmpl/.bower.json | 14 - bower_components/blueimp-tmpl/.gitignore | 2 - bower_components/blueimp-tmpl/.npmignore | 3 - bower_components/blueimp-tmpl/.travis.yml | 3 - bower_components/blueimp-tmpl/README.md | 400 - bower_components/blueimp-tmpl/css/demo.css | 75 - bower_components/blueimp-tmpl/index.html | 81 - bower_components/blueimp-tmpl/js/compile.js | 80 - bower_components/blueimp-tmpl/js/demo/demo.js | 68 - bower_components/blueimp-tmpl/js/runtime.js | 48 - bower_components/blueimp-tmpl/js/tmpl.js | 86 - bower_components/blueimp-tmpl/js/tmpl.min.js | 2 - .../blueimp-tmpl/js/tmpl.min.js.map | 1 - bower_components/blueimp-tmpl/package.json | 40 - bower_components/blueimp-tmpl/test/index.html | 39 - bower_components/blueimp-tmpl/test/test.js | 305 - .../blueimp-tmpl/test/vendor/chai.js | 6142 ----- .../blueimp-tmpl/test/vendor/mocha.css | 326 - .../blueimp-tmpl/test/vendor/mocha.js | 15466 ------------- .../bootstrap-colorpicker/.bower.json | 32 - .../bootstrap-colorpicker/CONTRIBUTING.md | 39 - .../bootstrap-colorpicker/LICENSE | 13 - .../bootstrap-colorpicker/README.md | 24 - .../bootstrap-colorpicker/bower.json | 20 - .../dist/css/bootstrap-colorpicker.css | 230 - .../dist/css/bootstrap-colorpicker.css.map | 1 - .../dist/css/bootstrap-colorpicker.min.css | 10 - .../css/bootstrap-colorpicker.min.css.map | 1 - .../alpha-horizontal.png | Bin 557 -> 0 bytes .../dist/img/bootstrap-colorpicker/alpha.png | Bin 488 -> 0 bytes .../bootstrap-colorpicker/hue-horizontal.png | Bin 478 -> 0 bytes .../dist/img/bootstrap-colorpicker/hue.png | Bin 504 -> 0 bytes .../img/bootstrap-colorpicker/saturation.png | Bin 4143 -> 0 bytes .../dist/js/bootstrap-colorpicker.js | 1304 -- .../dist/js/bootstrap-colorpicker.min.js | 5 - .../docs/assets/main.css | 61 - .../docs/helpers/code/index.js | 23 - .../docs/includes/api.hbs | 271 - .../docs/includes/example.hbs | 13 - .../docs/includes/examples.hbs | 23 - .../docs/includes/examples/01_basic.hbs | 6 - .../docs/includes/examples/02_component.hbs | 9 - .../examples/03_component_options.hbs | 12 - .../docs/includes/examples/04_events.hbs | 8 - .../docs/includes/examples/05_transparent.hbs | 9 - .../docs/includes/examples/06_horizontal.hbs | 9 - .../docs/includes/examples/07_inline.hbs | 15 - .../docs/includes/examples/08_palette.hbs | 21 - .../docs/includes/examples/09_size.hbs | 37 - .../docs/includes/examples/10_disabled.hbs | 23 - .../docs/includes/examples/11_modal.hbs | 20 - .../docs/includes/social.hbs | 43 - .../bootstrap-colorpicker/docs/layout.hbs | 23 - .../docs/pages/index.hbs | 24 - .../bootstrap-colorpicker/serve.js | 31 - .../src/js/colorpicker-color.js | 650 - .../src/js/colorpicker-component.js | 559 - .../src/js/colorpicker-defaults.js | 64 - .../src/js/colorpicker-plugin-wrapper.js | 31 - .../src/less/colorpicker.less | 273 - .../src/sass/_colorpicker.scss | 273 - .../bootstrap-datepicker/.bower.json | 24 - .../bootstrap-datepicker/.editorconfig | 11 - .../bootstrap-datepicker/.gitignore | 4 - .../bootstrap-datepicker/.npmignore | 1 - .../bootstrap-datepicker/.travis.yml | 9 - .../bootstrap-datepicker/CHANGELOG.md | 360 - .../bootstrap-datepicker/CONTRIBUTING.md | 41 - .../bootstrap-datepicker/Gruntfile.js | 265 - bower_components/bootstrap-datepicker/LICENSE | 202 - .../bootstrap-datepicker/README.md | 32 - .../bootstrap-datepicker/bower.json | 12 - .../bootstrap-datepicker/build/build.less | 69 - .../bootstrap-datepicker/build/build3.less | 76 - .../build/build_standalone.less | 64 - .../build/build_standalone3.less | 55 - .../bootstrap-datepicker/composer.json | 39 - .../dist/css/bootstrap-datepicker.css | 471 - .../dist/css/bootstrap-datepicker.css.map | 1 - .../dist/css/bootstrap-datepicker.min.css | 9 - .../dist/css/bootstrap-datepicker.min.css.map | 1 - .../css/bootstrap-datepicker.standalone.css | 504 - .../bootstrap-datepicker.standalone.css.map | 1 - .../bootstrap-datepicker.standalone.min.css | 9 - ...ootstrap-datepicker.standalone.min.css.map | 1 - .../dist/css/bootstrap-datepicker3.css | 678 - .../dist/css/bootstrap-datepicker3.css.map | 1 - .../dist/css/bootstrap-datepicker3.min.css | 9 - .../css/bootstrap-datepicker3.min.css.map | 1 - .../css/bootstrap-datepicker3.standalone.css | 707 - .../bootstrap-datepicker3.standalone.css.map | 1 - .../bootstrap-datepicker3.standalone.min.css | 9 - ...otstrap-datepicker3.standalone.min.css.map | 1 - .../dist/js/bootstrap-datepicker.js | 2096 -- .../dist/js/bootstrap-datepicker.min.js | 9 - .../locales/bootstrap-datepicker.ar.min.js | 1 - .../locales/bootstrap-datepicker.az.min.js | 1 - .../locales/bootstrap-datepicker.bg.min.js | 1 - .../locales/bootstrap-datepicker.bs.min.js | 1 - .../locales/bootstrap-datepicker.ca.min.js | 1 - .../locales/bootstrap-datepicker.cs.min.js | 1 - .../locales/bootstrap-datepicker.cy.min.js | 1 - .../locales/bootstrap-datepicker.da.min.js | 1 - .../locales/bootstrap-datepicker.de.min.js | 1 - .../locales/bootstrap-datepicker.el.min.js | 1 - .../locales/bootstrap-datepicker.en-AU.min.js | 1 - .../locales/bootstrap-datepicker.en-GB.min.js | 1 - .../locales/bootstrap-datepicker.eo.min.js | 1 - .../locales/bootstrap-datepicker.es.min.js | 1 - .../locales/bootstrap-datepicker.et.min.js | 1 - .../locales/bootstrap-datepicker.eu.min.js | 1 - .../locales/bootstrap-datepicker.fa.min.js | 1 - .../locales/bootstrap-datepicker.fi.min.js | 1 - .../locales/bootstrap-datepicker.fo.min.js | 1 - .../locales/bootstrap-datepicker.fr-CH.min.js | 1 - .../locales/bootstrap-datepicker.fr.min.js | 1 - .../locales/bootstrap-datepicker.gl.min.js | 1 - .../locales/bootstrap-datepicker.he.min.js | 1 - .../locales/bootstrap-datepicker.hr.min.js | 1 - .../locales/bootstrap-datepicker.hu.min.js | 1 - .../locales/bootstrap-datepicker.hy.min.js | 1 - .../locales/bootstrap-datepicker.id.min.js | 1 - .../locales/bootstrap-datepicker.is.min.js | 1 - .../locales/bootstrap-datepicker.it-CH.min.js | 1 - .../locales/bootstrap-datepicker.it.min.js | 1 - .../locales/bootstrap-datepicker.ja.min.js | 1 - .../locales/bootstrap-datepicker.ka.min.js | 1 - .../locales/bootstrap-datepicker.kh.min.js | 1 - .../locales/bootstrap-datepicker.kk.min.js | 1 - .../locales/bootstrap-datepicker.ko.min.js | 1 - .../locales/bootstrap-datepicker.kr.min.js | 1 - .../locales/bootstrap-datepicker.lt.min.js | 1 - .../locales/bootstrap-datepicker.lv.min.js | 1 - .../locales/bootstrap-datepicker.me.min.js | 1 - .../locales/bootstrap-datepicker.mk.min.js | 1 - .../locales/bootstrap-datepicker.mn.min.js | 1 - .../locales/bootstrap-datepicker.ms.min.js | 1 - .../locales/bootstrap-datepicker.nb.min.js | 1 - .../locales/bootstrap-datepicker.nl-BE.min.js | 1 - .../locales/bootstrap-datepicker.nl.min.js | 1 - .../locales/bootstrap-datepicker.no.min.js | 1 - .../locales/bootstrap-datepicker.pl.min.js | 1 - .../locales/bootstrap-datepicker.pt-BR.min.js | 1 - .../locales/bootstrap-datepicker.pt.min.js | 1 - .../locales/bootstrap-datepicker.ro.min.js | 1 - .../bootstrap-datepicker.rs-latin.min.js | 1 - .../locales/bootstrap-datepicker.rs.min.js | 1 - .../locales/bootstrap-datepicker.ru.min.js | 1 - .../locales/bootstrap-datepicker.sk.min.js | 1 - .../locales/bootstrap-datepicker.sl.min.js | 1 - .../locales/bootstrap-datepicker.sq.min.js | 1 - .../bootstrap-datepicker.sr-latin.min.js | 1 - .../locales/bootstrap-datepicker.sr.min.js | 1 - .../locales/bootstrap-datepicker.sv.min.js | 1 - .../locales/bootstrap-datepicker.sw.min.js | 1 - .../locales/bootstrap-datepicker.th.min.js | 1 - .../locales/bootstrap-datepicker.tr.min.js | 1 - .../locales/bootstrap-datepicker.uk.min.js | 1 - .../locales/bootstrap-datepicker.vi.min.js | 1 - .../locales/bootstrap-datepicker.zh-CN.min.js | 1 - .../locales/bootstrap-datepicker.zh-TW.min.js | 1 - .../bootstrap-datepicker/docs/Makefile | 153 - .../bootstrap-datepicker/docs/README.md | 20 - .../docs/_screenshots/demo_head.html | 31 - .../docs/_screenshots/markup_component.html | 20 - .../docs/_screenshots/markup_daterange.html | 28 - .../docs/_screenshots/markup_inline.html | 15 - .../docs/_screenshots/markup_input.html | 17 - .../_screenshots/option_calendarweeks.html | 25 - .../docs/_screenshots/option_clearbtn.html | 18 - .../option_daysofweekdisabled.html | 18 - .../docs/_screenshots/option_enddate.html | 18 - .../docs/_screenshots/option_language.html | 31 - .../docs/_screenshots/option_multidate.html | 27 - .../docs/_screenshots/option_startdate.html | 18 - .../docs/_screenshots/option_todaybtn.html | 17 - .../_screenshots/option_todayhighlight.html | 45 - .../docs/_screenshots/option_weekstart.html | 23 - .../docs/_screenshots/script/common.css | 9 - .../docs/_screenshots/script/common.js | 2 - .../docs/_screenshots/script/debug.js | 21 - .../_screenshots/script/html-imports.min.js | 30 - .../docs/_screenshots/script/screenshot.js | 69 - .../docs/_static/screenshots/demo_head.png | Bin 37249 -> 0 bytes .../_static/screenshots/markup_component.png | Bin 13951 -> 0 bytes .../_static/screenshots/markup_daterange.png | Bin 20237 -> 0 bytes .../_static/screenshots/markup_inline.png | Bin 12398 -> 0 bytes .../docs/_static/screenshots/markup_input.png | Bin 14116 -> 0 bytes .../screenshots/option_calendarweeks.png | Bin 21973 -> 0 bytes .../_static/screenshots/option_clearbtn.png | Bin 14296 -> 0 bytes .../screenshots/option_daysofweekdisabled.png | Bin 13990 -> 0 bytes .../_static/screenshots/option_enddate.png | Bin 13386 -> 0 bytes .../_static/screenshots/option_language.png | Bin 47418 -> 0 bytes .../_static/screenshots/option_multidate.png | Bin 28718 -> 0 bytes .../_static/screenshots/option_startdate.png | Bin 13883 -> 0 bytes .../_static/screenshots/option_todaybtn.png | Bin 14549 -> 0 bytes .../screenshots/option_todayhighlight.png | Bin 19006 -> 0 bytes .../_static/screenshots/option_weekstart.png | Bin 24197 -> 0 bytes .../bootstrap-datepicker/docs/conf.py | 249 - .../bootstrap-datepicker/docs/events.rst | 50 - .../bootstrap-datepicker/docs/i18n.rst | 36 - .../bootstrap-datepicker/docs/index.rst | 141 - .../bootstrap-datepicker/docs/keyboard.rst | 27 - .../bootstrap-datepicker/docs/make.bat | 190 - .../bootstrap-datepicker/docs/markup.rst | 89 - .../bootstrap-datepicker/docs/methods.rst | 221 - .../bootstrap-datepicker/docs/options.rst | 483 - .../docs/requirements.txt | 1 - .../bootstrap-datepicker/grunt/.jshintrc | 7 - .../bootstrap-datepicker/js/.jscsrc | 22 - .../bootstrap-datepicker/js/.jshintrc | 26 - .../js/bootstrap-datepicker.js | 2112 -- .../js/locales/bootstrap-datepicker.ar.js | 15 - .../js/locales/bootstrap-datepicker.az.js | 12 - .../js/locales/bootstrap-datepicker.bg.js | 14 - .../js/locales/bootstrap-datepicker.bs.js | 15 - .../js/locales/bootstrap-datepicker.ca.js | 18 - .../js/locales/bootstrap-datepicker.cs.js | 18 - .../js/locales/bootstrap-datepicker.cy.js | 14 - .../js/locales/bootstrap-datepicker.da.js | 16 - .../js/locales/bootstrap-datepicker.de.js | 18 - .../js/locales/bootstrap-datepicker.el.js | 16 - .../js/locales/bootstrap-datepicker.en-AU.js | 18 - .../js/locales/bootstrap-datepicker.en-GB.js | 18 - .../js/locales/bootstrap-datepicker.eo.js | 17 - .../js/locales/bootstrap-datepicker.es.js | 18 - .../js/locales/bootstrap-datepicker.et.js | 18 - .../js/locales/bootstrap-datepicker.eu.js | 15 - .../js/locales/bootstrap-datepicker.fa.js | 17 - .../js/locales/bootstrap-datepicker.fi.js | 17 - .../js/locales/bootstrap-datepicker.fo.js | 15 - .../js/locales/bootstrap-datepicker.fr-CH.js | 21 - .../js/locales/bootstrap-datepicker.fr.js | 18 - .../js/locales/bootstrap-datepicker.gl.js | 13 - .../js/locales/bootstrap-datepicker.he.js | 15 - .../js/locales/bootstrap-datepicker.hr.js | 13 - .../js/locales/bootstrap-datepicker.hu.js | 18 - .../js/locales/bootstrap-datepicker.hy.js | 17 - .../js/locales/bootstrap-datepicker.id.js | 15 - .../js/locales/bootstrap-datepicker.is.js | 14 - .../js/locales/bootstrap-datepicker.it-CH.js | 20 - .../js/locales/bootstrap-datepicker.it.js | 18 - .../js/locales/bootstrap-datepicker.ja.js | 17 - .../js/locales/bootstrap-datepicker.ka.js | 17 - .../js/locales/bootstrap-datepicker.kh.js | 15 - .../js/locales/bootstrap-datepicker.kk.js | 15 - .../js/locales/bootstrap-datepicker.ko.js | 18 - .../js/locales/bootstrap-datepicker.kr.js | 17 - .../js/locales/bootstrap-datepicker.lt.js | 19 - .../js/locales/bootstrap-datepicker.lv.js | 16 - .../js/locales/bootstrap-datepicker.me.js | 17 - .../js/locales/bootstrap-datepicker.mk.js | 15 - .../js/locales/bootstrap-datepicker.mn.js | 17 - .../js/locales/bootstrap-datepicker.ms.js | 15 - .../js/locales/bootstrap-datepicker.nb.js | 15 - .../js/locales/bootstrap-datepicker.nl-BE.js | 18 - .../js/locales/bootstrap-datepicker.nl.js | 18 - .../js/locales/bootstrap-datepicker.no.js | 16 - .../js/locales/bootstrap-datepicker.pl.js | 17 - .../js/locales/bootstrap-datepicker.pt-BR.js | 17 - .../js/locales/bootstrap-datepicker.pt.js | 18 - .../js/locales/bootstrap-datepicker.ro.js | 16 - .../locales/bootstrap-datepicker.rs-latin.js | 16 - .../js/locales/bootstrap-datepicker.rs.js | 16 - .../js/locales/bootstrap-datepicker.ru.js | 17 - .../js/locales/bootstrap-datepicker.sk.js | 18 - .../js/locales/bootstrap-datepicker.sl.js | 14 - .../js/locales/bootstrap-datepicker.sq.js | 15 - .../locales/bootstrap-datepicker.sr-latin.js | 16 - .../js/locales/bootstrap-datepicker.sr.js | 16 - .../js/locales/bootstrap-datepicker.sv.js | 17 - .../js/locales/bootstrap-datepicker.sw.js | 15 - .../js/locales/bootstrap-datepicker.th.js | 14 - .../js/locales/bootstrap-datepicker.tr.js | 18 - .../js/locales/bootstrap-datepicker.uk.js | 17 - .../js/locales/bootstrap-datepicker.vi.js | 16 - .../js/locales/bootstrap-datepicker.zh-CN.js | 18 - .../js/locales/bootstrap-datepicker.zh-TW.js | 18 - .../bootstrap-datepicker/less/.csslintrc | 19 - .../bootstrap-datepicker/less/datepicker.less | 235 - .../less/datepicker3.less | 251 - .../bootstrap-datepicker/package.json | 41 - .../bootstrap-datepicker/tests/README.md | 30 - .../tests/assets/coverage.js | 48 - .../tests/assets/jquery-1.7.1.min.js | 4 - .../bootstrap-datepicker/tests/assets/mock.js | 49 - .../tests/assets/qunit-logging.js | 29 - .../tests/assets/qunit.css | 235 - .../tests/assets/qunit.js | 1669 -- .../tests/assets/utils.js | 21 - .../tests/suites/calendar-weeks.js | 48 - .../tests/suites/component.js | 240 - .../tests/suites/data-api.js | 114 - .../tests/suites/events.js | 417 - .../tests/suites/formats.js | 296 - .../tests/suites/inline.js | 28 - .../tests/suites/keyboard_navigation/2011.js | 228 - .../tests/suites/keyboard_navigation/2012.js | 483 - .../tests/suites/keyboard_navigation/all.js | 62 - .../tests/suites/methods.js | 170 - .../tests/suites/methods_jquery.js | 26 - .../tests/suites/mouse_navigation/2011.js | 66 - .../tests/suites/mouse_navigation/2012.js | 266 - .../tests/suites/mouse_navigation/all.js | 33 - .../tests/suites/noconflict.js | 20 - .../tests/suites/options.js | 1478 -- .../tests/suites/timezone.js | 24 - .../bootstrap-datepicker/tests/tests.html | 54 - .../bootstrap-datepicker/tests/timezone.html | 36 - bower_components/bootstrap-less/.bower.json | 22 - bower_components/bootstrap-less/LICENSE | 22 - bower_components/bootstrap-less/README.md | 25 - bower_components/bootstrap-less/bower.json | 11 - .../fonts/glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../fonts/glyphicons-halflings-regular.svg | 288 - .../fonts/glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes bower_components/bootstrap-less/js/affix.js | 162 - bower_components/bootstrap-less/js/alert.js | 94 - bower_components/bootstrap-less/js/button.js | 116 - .../bootstrap-less/js/carousel.js | 237 - .../bootstrap-less/js/collapse.js | 211 - .../bootstrap-less/js/dropdown.js | 161 - bower_components/bootstrap-less/js/modal.js | 339 - bower_components/bootstrap-less/js/popover.js | 108 - .../bootstrap-less/js/scrollspy.js | 172 - bower_components/bootstrap-less/js/tab.js | 153 - bower_components/bootstrap-less/js/tooltip.js | 476 - .../bootstrap-less/js/transition.js | 59 - .../bootstrap-less/less/alerts.less | 73 - .../bootstrap-less/less/badges.less | 66 - .../bootstrap-less/less/bootstrap.less | 50 - .../bootstrap-less/less/breadcrumbs.less | 26 - .../bootstrap-less/less/button-groups.less | 243 - .../bootstrap-less/less/buttons.less | 160 - .../bootstrap-less/less/carousel.less | 269 - .../bootstrap-less/less/close.less | 34 - .../bootstrap-less/less/code.less | 69 - .../less/component-animations.less | 33 - .../bootstrap-less/less/dropdowns.less | 214 - .../bootstrap-less/less/forms.less | 574 - .../bootstrap-less/less/glyphicons.less | 305 - .../bootstrap-less/less/grid.less | 84 - .../bootstrap-less/less/input-groups.less | 166 - .../bootstrap-less/less/jumbotron.less | 50 - .../bootstrap-less/less/labels.less | 64 - .../bootstrap-less/less/list-group.less | 124 - .../bootstrap-less/less/media.less | 61 - .../bootstrap-less/less/mixins.less | 39 - .../bootstrap-less/less/mixins/alerts.less | 14 - .../less/mixins/background-variant.less | 8 - .../less/mixins/border-radius.less | 18 - .../bootstrap-less/less/mixins/buttons.less | 52 - .../less/mixins/center-block.less | 7 - .../bootstrap-less/less/mixins/clearfix.less | 22 - .../bootstrap-less/less/mixins/forms.less | 85 - .../bootstrap-less/less/mixins/gradients.less | 59 - .../less/mixins/grid-framework.less | 91 - .../bootstrap-less/less/mixins/grid.less | 122 - .../bootstrap-less/less/mixins/hide-text.less | 21 - .../bootstrap-less/less/mixins/image.less | 33 - .../bootstrap-less/less/mixins/labels.less | 12 - .../less/mixins/list-group.less | 29 - .../less/mixins/nav-divider.less | 10 - .../less/mixins/nav-vertical-align.less | 9 - .../bootstrap-less/less/mixins/opacity.less | 8 - .../less/mixins/pagination.less | 23 - .../bootstrap-less/less/mixins/panels.less | 24 - .../less/mixins/progress-bar.less | 10 - .../less/mixins/reset-filter.less | 8 - .../bootstrap-less/less/mixins/resize.less | 6 - .../less/mixins/responsive-visibility.less | 15 - .../bootstrap-less/less/mixins/size.less | 10 - .../bootstrap-less/less/mixins/tab-focus.less | 9 - .../bootstrap-less/less/mixins/table-row.less | 28 - .../less/mixins/text-emphasis.less | 8 - .../less/mixins/text-overflow.less | 8 - .../less/mixins/vendor-prefixes.less | 227 - .../bootstrap-less/less/modals.less | 150 - .../bootstrap-less/less/navbar.less | 660 - .../bootstrap-less/less/navs.less | 242 - .../bootstrap-less/less/normalize.less | 427 - .../bootstrap-less/less/pager.less | 54 - .../bootstrap-less/less/pagination.less | 88 - .../bootstrap-less/less/panels.less | 265 - .../bootstrap-less/less/popovers.less | 135 - .../bootstrap-less/less/print.less | 107 - .../bootstrap-less/less/progress-bars.less | 87 - .../bootstrap-less/less/responsive-embed.less | 35 - .../less/responsive-utilities.less | 194 - .../bootstrap-less/less/scaffolding.less | 162 - .../bootstrap-less/less/tables.less | 234 - .../bootstrap-less/less/theme.less | 273 - .../bootstrap-less/less/thumbnails.less | 36 - .../bootstrap-less/less/tooltip.less | 102 - .../bootstrap-less/less/type.less | 302 - .../bootstrap-less/less/utilities.less | 55 - .../bootstrap-less/less/variables.less | 861 - .../bootstrap-less/less/wells.less | 29 - bower_components/bootstrap-sass/.bower.json | 45 - bower_components/bootstrap-sass/CHANGELOG.md | 210 - .../bootstrap-sass/CONTRIBUTING.md | 86 - bower_components/bootstrap-sass/LICENSE | 22 - bower_components/bootstrap-sass/README.md | 390 - .../glyphicons-halflings-regular.eot | Bin 20127 -> 0 bytes .../glyphicons-halflings-regular.svg | 288 - .../glyphicons-halflings-regular.ttf | Bin 45404 -> 0 bytes .../glyphicons-halflings-regular.woff | Bin 23424 -> 0 bytes .../glyphicons-halflings-regular.woff2 | Bin 18028 -> 0 bytes .../assets/javascripts/bootstrap-sprockets.js | 12 - .../assets/javascripts/bootstrap.js | 2377 -- .../assets/javascripts/bootstrap.min.js | 7 - .../assets/javascripts/bootstrap/affix.js | 162 - .../assets/javascripts/bootstrap/alert.js | 94 - .../assets/javascripts/bootstrap/button.js | 125 - .../assets/javascripts/bootstrap/carousel.js | 237 - .../assets/javascripts/bootstrap/collapse.js | 212 - .../assets/javascripts/bootstrap/dropdown.js | 165 - .../assets/javascripts/bootstrap/modal.js | 339 - .../assets/javascripts/bootstrap/popover.js | 108 - .../assets/javascripts/bootstrap/scrollspy.js | 172 - .../assets/javascripts/bootstrap/tab.js | 155 - .../assets/javascripts/bootstrap/tooltip.js | 520 - .../javascripts/bootstrap/transition.js | 59 - .../stylesheets/_bootstrap-compass.scss | 9 - .../assets/stylesheets/_bootstrap-mincer.scss | 19 - .../stylesheets/_bootstrap-sprockets.scss | 9 - .../assets/stylesheets/_bootstrap.scss | 56 - .../assets/stylesheets/bootstrap/_alerts.scss | 73 - .../assets/stylesheets/bootstrap/_badges.scss | 68 - .../stylesheets/bootstrap/_breadcrumbs.scss | 28 - .../stylesheets/bootstrap/_button-groups.scss | 244 - .../stylesheets/bootstrap/_buttons.scss | 168 - .../stylesheets/bootstrap/_carousel.scss | 270 - .../assets/stylesheets/bootstrap/_close.scss | 36 - .../assets/stylesheets/bootstrap/_code.scss | 69 - .../bootstrap/_component-animations.scss | 37 - .../stylesheets/bootstrap/_dropdowns.scss | 216 - .../assets/stylesheets/bootstrap/_forms.scss | 617 - .../stylesheets/bootstrap/_glyphicons.scss | 307 - .../assets/stylesheets/bootstrap/_grid.scss | 84 - .../stylesheets/bootstrap/_input-groups.scss | 171 - .../stylesheets/bootstrap/_jumbotron.scss | 54 - .../assets/stylesheets/bootstrap/_labels.scss | 66 - .../stylesheets/bootstrap/_list-group.scss | 130 - .../assets/stylesheets/bootstrap/_media.scss | 66 - .../assets/stylesheets/bootstrap/_mixins.scss | 40 - .../assets/stylesheets/bootstrap/_modals.scss | 150 - .../assets/stylesheets/bootstrap/_navbar.scss | 662 - .../assets/stylesheets/bootstrap/_navs.scss | 242 - .../stylesheets/bootstrap/_normalize.scss | 424 - .../assets/stylesheets/bootstrap/_pager.scss | 54 - .../stylesheets/bootstrap/_pagination.scss | 89 - .../assets/stylesheets/bootstrap/_panels.scss | 271 - .../stylesheets/bootstrap/_popovers.scss | 131 - .../assets/stylesheets/bootstrap/_print.scss | 101 - .../stylesheets/bootstrap/_progress-bars.scss | 87 - .../bootstrap/_responsive-embed.scss | 35 - .../bootstrap/_responsive-utilities.scss | 179 - .../stylesheets/bootstrap/_scaffolding.scss | 161 - .../assets/stylesheets/bootstrap/_tables.scss | 234 - .../assets/stylesheets/bootstrap/_theme.scss | 291 - .../stylesheets/bootstrap/_thumbnails.scss | 38 - .../stylesheets/bootstrap/_tooltip.scss | 101 - .../assets/stylesheets/bootstrap/_type.scss | 298 - .../stylesheets/bootstrap/_utilities.scss | 55 - .../stylesheets/bootstrap/_variables.scss | 874 - .../assets/stylesheets/bootstrap/_wells.scss | 29 - .../stylesheets/bootstrap/mixins/_alerts.scss | 14 - .../bootstrap/mixins/_background-variant.scss | 12 - .../bootstrap/mixins/_border-radius.scss | 18 - .../bootstrap/mixins/_buttons.scss | 65 - .../bootstrap/mixins/_center-block.scss | 7 - .../bootstrap/mixins/_clearfix.scss | 22 - .../stylesheets/bootstrap/mixins/_forms.scss | 88 - .../bootstrap/mixins/_gradients.scss | 58 - .../bootstrap/mixins/_grid-framework.scss | 81 - .../stylesheets/bootstrap/mixins/_grid.scss | 122 - .../bootstrap/mixins/_hide-text.scss | 21 - .../stylesheets/bootstrap/mixins/_image.scss | 33 - .../stylesheets/bootstrap/mixins/_labels.scss | 12 - .../bootstrap/mixins/_list-group.scss | 32 - .../bootstrap/mixins/_nav-divider.scss | 10 - .../bootstrap/mixins/_nav-vertical-align.scss | 9 - .../bootstrap/mixins/_opacity.scss | 8 - .../bootstrap/mixins/_pagination.scss | 24 - .../stylesheets/bootstrap/mixins/_panels.scss | 24 - .../bootstrap/mixins/_progress-bar.scss | 10 - .../bootstrap/mixins/_reset-filter.scss | 8 - .../bootstrap/mixins/_reset-text.scss | 18 - .../stylesheets/bootstrap/mixins/_resize.scss | 6 - .../mixins/_responsive-visibility.scss | 21 - .../stylesheets/bootstrap/mixins/_size.scss | 10 - .../bootstrap/mixins/_tab-focus.scss | 9 - .../bootstrap/mixins/_table-row.scss | 28 - .../bootstrap/mixins/_text-emphasis.scss | 12 - .../bootstrap/mixins/_text-overflow.scss | 8 - .../bootstrap/mixins/_vendor-prefixes.scss | 222 - bower_components/bootstrap-sass/bower.json | 36 - bower_components/bootstrap-sass/composer.json | 35 - .../bootstrap-sass/eyeglass-exports.js | 7 - bower_components/bootstrap-sass/package.json | 44 - bower_components/bootstrap-sass/sache.json | 5 - bower_components/bootstrap-table/.bower.json | 38 - bower_components/bootstrap-table/CHANGELOG.md | 413 - .../bootstrap-table/CONTRIBUTING.md | 213 - bower_components/bootstrap-table/DONATORS.md | 60 - bower_components/bootstrap-table/Gruntfile.js | 132 - bower_components/bootstrap-table/LICENSE | 21 - bower_components/bootstrap-table/README.md | 103 - bower_components/bootstrap-table/_config.yml | 31 - .../bootstrap-table.jquery.json | 30 - bower_components/bootstrap-table/bower.json | 27 - .../bootstrap-table/composer.json | 17 - .../dist/bootstrap-table-locale-all.js | 1698 -- .../dist/bootstrap-table-locale-all.min.js | 7 - .../bootstrap-table/dist/bootstrap-table.css | 306 - .../bootstrap-table/dist/bootstrap-table.js | 3019 --- .../dist/bootstrap-table.min.css | 1 - .../dist/bootstrap-table.min.js | 8 - .../bootstrap-table-accent-neutralise.js | 182 - .../bootstrap-table-accent-neutralise.min.js | 7 - .../angular/bootstrap-table-angular.js | 107 - .../angular/bootstrap-table-angular.min.js | 7 - .../cookie/bootstrap-table-cookie.js | 392 - .../cookie/bootstrap-table-cookie.min.js | 7 - .../copy-rows/bootstrap-table-copy-rows.js | 102 - .../bootstrap-table-copy-rows.min.js | 7 - .../editable/bootstrap-table-editable.js | 146 - .../editable/bootstrap-table-editable.min.js | 7 - .../export/bootstrap-table-export.js | 121 - .../export/bootstrap-table-export.min.js | 7 - .../bootstrap-table-filter-control.js | 672 - .../bootstrap-table-filter-control.min.js | 7 - .../filter/bootstrap-table-filter.js | 67 - .../filter/bootstrap-table-filter.min.js | 7 - .../flat-json/bootstrap-table-flat-json.js | 62 - .../bootstrap-table-flat-json.min.js | 7 - .../group-by-v2/bootstrap-table-group-by.css | 7 - .../group-by-v2/bootstrap-table-group-by.js | 226 - .../bootstrap-table-group-by.min.js | 7 - .../group-by/bootstrap-table-group-by.css | 53 - .../group-by/bootstrap-table-group-by.js | 243 - .../group-by/bootstrap-table-group-by.min.js | 7 - .../bootstrap-table-i18n-enhance.js | 34 - .../bootstrap-table-i18n-enhance.min.js | 7 - .../key-events/bootstrap-table-key-events.js | 80 - .../bootstrap-table-key-events.min.js | 7 - .../mobile/bootstrap-table-mobile.js | 136 - .../mobile/bootstrap-table-mobile.min.js | 7 - .../bootstrap-table-multi-toggle.js | 88 - .../bootstrap-table-multi-toggle.min.js | 7 - .../bootstrap-table-multiple-search.js | 71 - .../bootstrap-table-multiple-search.min.js | 7 - .../bootstrap-table-multiple-sort.js | 393 - .../bootstrap-table-multiple-sort.min.js | 7 - .../bootstrap-table-natural-sorting.js | 67 - .../bootstrap-table-natural-sorting.min.js | 7 - .../bootstrap-table-reorder-columns.js | 177 - .../bootstrap-table-reorder-columns.min.js | 7 - .../bootstrap-table-reorder-rows.css | 14 - .../bootstrap-table-reorder-rows.js | 116 - .../bootstrap-table-reorder-rows.min.js | 7 - .../resizable/bootstrap-table-resizable.js | 74 - .../bootstrap-table-resizable.min.js | 7 - .../bootstrap-table-select2-filter.js | 303 - .../bootstrap-table-select2-filter.min.js | 7 - .../bootstrap-table-sticky-header.css | 22 - .../bootstrap-table-sticky-header.js | 111 - .../bootstrap-table-sticky-header.min.js | 7 - .../toolbar/bootstrap-table-toolbar.js | 211 - .../toolbar/bootstrap-table-toolbar.min.js | 7 - .../dist/locale/bootstrap-table-af-ZA.js | 40 - .../dist/locale/bootstrap-table-af-ZA.min.js | 7 - .../dist/locale/bootstrap-table-ar-SA.js | 40 - .../dist/locale/bootstrap-table-ar-SA.min.js | 7 - .../dist/locale/bootstrap-table-ca-ES.js | 44 - .../dist/locale/bootstrap-table-ca-ES.min.js | 7 - .../dist/locale/bootstrap-table-cs-CZ.js | 44 - .../dist/locale/bootstrap-table-cs-CZ.min.js | 7 - .../dist/locale/bootstrap-table-da-DK.js | 37 - .../dist/locale/bootstrap-table-da-DK.min.js | 7 - .../dist/locale/bootstrap-table-de-DE.js | 37 - .../dist/locale/bootstrap-table-de-DE.min.js | 7 - .../dist/locale/bootstrap-table-el-GR.js | 28 - .../dist/locale/bootstrap-table-el-GR.min.js | 7 - .../dist/locale/bootstrap-table-en-US.js | 49 - .../dist/locale/bootstrap-table-en-US.min.js | 7 - .../dist/locale/bootstrap-table-es-AR.js | 31 - .../dist/locale/bootstrap-table-es-AR.min.js | 7 - .../dist/locale/bootstrap-table-es-CR.js | 40 - .../dist/locale/bootstrap-table-es-CR.min.js | 7 - .../dist/locale/bootstrap-table-es-ES.js | 43 - .../dist/locale/bootstrap-table-es-ES.min.js | 7 - .../dist/locale/bootstrap-table-es-MX.js | 32 - .../dist/locale/bootstrap-table-es-MX.min.js | 7 - .../dist/locale/bootstrap-table-es-NI.js | 40 - .../dist/locale/bootstrap-table-es-NI.min.js | 7 - .../dist/locale/bootstrap-table-es-SP.js | 40 - .../dist/locale/bootstrap-table-es-SP.min.js | 7 - .../dist/locale/bootstrap-table-et-EE.js | 43 - .../dist/locale/bootstrap-table-et-EE.min.js | 7 - .../dist/locale/bootstrap-table-fa-IR.js | 43 - .../dist/locale/bootstrap-table-fa-IR.min.js | 7 - .../dist/locale/bootstrap-table-fr-BE.js | 28 - .../dist/locale/bootstrap-table-fr-BE.min.js | 7 - .../dist/locale/bootstrap-table-fr-FR.js | 41 - .../dist/locale/bootstrap-table-fr-FR.min.js | 7 - .../dist/locale/bootstrap-table-he-IL.js | 43 - .../dist/locale/bootstrap-table-he-IL.min.js | 7 - .../dist/locale/bootstrap-table-hr-HR.js | 44 - .../dist/locale/bootstrap-table-hr-HR.min.js | 7 - .../dist/locale/bootstrap-table-hu-HU.js | 43 - .../dist/locale/bootstrap-table-hu-HU.min.js | 7 - .../dist/locale/bootstrap-table-it-IT.js | 42 - .../dist/locale/bootstrap-table-it-IT.min.js | 7 - .../dist/locale/bootstrap-table-ja-JP.js | 43 - .../dist/locale/bootstrap-table-ja-JP.min.js | 7 - .../dist/locale/bootstrap-table-ka-GE.js | 40 - .../dist/locale/bootstrap-table-ka-GE.min.js | 7 - .../dist/locale/bootstrap-table-ko-KR.js | 37 - .../dist/locale/bootstrap-table-ko-KR.min.js | 7 - .../dist/locale/bootstrap-table-ms-MY.js | 43 - .../dist/locale/bootstrap-table-ms-MY.min.js | 7 - .../dist/locale/bootstrap-table-nb-NO.js | 37 - .../dist/locale/bootstrap-table-nb-NO.min.js | 7 - .../dist/locale/bootstrap-table-nl-NL.js | 52 - .../dist/locale/bootstrap-table-nl-NL.min.js | 7 - .../dist/locale/bootstrap-table-pl-PL.js | 37 - .../dist/locale/bootstrap-table-pl-PL.min.js | 7 - .../dist/locale/bootstrap-table-pt-BR.js | 41 - .../dist/locale/bootstrap-table-pt-BR.min.js | 7 - .../dist/locale/bootstrap-table-pt-PT.js | 43 - .../dist/locale/bootstrap-table-pt-PT.min.js | 7 - .../dist/locale/bootstrap-table-ro-RO.js | 43 - .../dist/locale/bootstrap-table-ro-RO.min.js | 7 - .../dist/locale/bootstrap-table-ru-RU.js | 39 - .../dist/locale/bootstrap-table-ru-RU.min.js | 7 - .../dist/locale/bootstrap-table-sk-SK.js | 37 - .../dist/locale/bootstrap-table-sk-SK.min.js | 7 - .../dist/locale/bootstrap-table-sv-SE.js | 37 - .../dist/locale/bootstrap-table-sv-SE.min.js | 7 - .../dist/locale/bootstrap-table-th-TH.js | 37 - .../dist/locale/bootstrap-table-th-TH.min.js | 7 - .../dist/locale/bootstrap-table-tr-TR.js | 41 - .../dist/locale/bootstrap-table-tr-TR.min.js | 7 - .../dist/locale/bootstrap-table-uk-UA.js | 37 - .../dist/locale/bootstrap-table-uk-UA.min.js | 7 - .../dist/locale/bootstrap-table-ur-PK.js | 37 - .../dist/locale/bootstrap-table-ur-PK.min.js | 7 - .../dist/locale/bootstrap-table-vi-VN.js | 28 - .../dist/locale/bootstrap-table-vi-VN.min.js | 7 - .../dist/locale/bootstrap-table-zh-CN.js | 46 - .../dist/locale/bootstrap-table-zh-CN.min.js | 7 - .../dist/locale/bootstrap-table-zh-TW.js | 40 - .../dist/locale/bootstrap-table-zh-TW.min.js | 7 - bower_components/bootstrap-table/package.json | 44 - .../bootstrap-table/src/bootstrap-table.css | 306 - .../bootstrap-table/src/bootstrap-table.js | 3019 --- .../extensions/accent-neutralise/README.md | 17 - .../bootstrap-table-accent-neutralise.js | 182 - .../accent-neutralise/extension.json | 17 - .../angular/bootstrap-table-angular.js | 107 - .../src/extensions/cookie/README.md | 62 - .../cookie/bootstrap-table-cookie.js | 392 - .../src/extensions/cookie/extension.json | 17 - .../src/extensions/copy-rows/README.md | 41 - .../copy-rows/bootstrap-table-copy-rows.js | 102 - .../src/extensions/copy-rows/extension.json | 17 - .../src/extensions/editable/README.md | 71 - .../editable/bootstrap-table-editable.js | 146 - .../src/extensions/editable/extension.json | 17 - .../src/extensions/export/README.md | 38 - .../export/bootstrap-table-export.js | 121 - .../src/extensions/export/extension.json | 17 - .../src/extensions/filter-control/README.md | 68 - .../bootstrap-table-filter-control.js | 672 - .../extensions/filter-control/extension.json | 17 - .../src/extensions/filter/README.md | 17 - .../filter/bootstrap-table-filter.js | 67 - .../src/extensions/filter/extension.json | 17 - .../src/extensions/flat-json/README.md | 23 - .../flat-json/bootstrap-table-flat-json.js | 62 - .../src/extensions/flat-json/extension.json | 17 - .../src/extensions/group-by-v2/README.md | 24 - .../group-by-v2/bootstrap-table-group-by.css | 7 - .../group-by-v2/bootstrap-table-group-by.js | 226 - .../src/extensions/group-by-v2/extension.json | 12 - .../src/extensions/group-by/README.md | 62 - .../group-by/bootstrap-table-group-by.css | 53 - .../group-by/bootstrap-table-group-by.js | 243 - .../src/extensions/group-by/extension.json | 17 - .../src/extensions/i18n-enhance/README.md | 28 - .../bootstrap-table-i18n-enhance.js | 34 - .../extensions/i18n-enhance/extension.json | 17 - .../src/extensions/key-events/README.md | 24 - .../key-events/bootstrap-table-key-events.js | 80 - .../src/extensions/key-events/extension.json | 17 - .../src/extensions/mobile/README.md | 41 - .../mobile/bootstrap-table-mobile.js | 136 - .../src/extensions/mobile/extension.json | 17 - .../extensions/multi-column-toggle/README.md | 36 - .../bootstrap-table-multi-toggle.js | 88 - .../multi-column-toggle/extension.json | 17 - .../src/extensions/multiple-search/README.md | 23 - .../bootstrap-table-multiple-search.js | 71 - .../extensions/multiple-search/extension.json | 17 - .../src/extensions/multiple-sort/README.md | 96 - .../bootstrap-table-multiple-sort.js | 393 - .../extensions/multiple-sort/extension.json | 17 - .../src/extensions/natural-sorting/README.md | 27 - .../bootstrap-table-natural-sorting.js | 67 - .../extensions/natural-sorting/extension.json | 17 - .../src/extensions/reorder-columns/README.md | 41 - .../bootstrap-table-reorder-columns.js | 177 - .../extensions/reorder-columns/extension.json | 17 - .../src/extensions/reorder-rows/README.md | 74 - .../bootstrap-table-reorder-rows.css | 14 - .../bootstrap-table-reorder-rows.js | 116 - .../extensions/reorder-rows/extension.json | 17 - .../src/extensions/resizable/README.md | 66 - .../resizable/bootstrap-table-resizable.js | 74 - .../src/extensions/resizable/extension.json | 17 - .../src/extensions/select2-filter/README.md | 45 - .../bootstrap-table-select2-filter.js | 303 - .../extensions/select2-filter/extension.json | 17 - .../src/extensions/sticky-header/README.md | 24 - .../bootstrap-table-sticky-header.css | 22 - .../bootstrap-table-sticky-header.js | 111 - .../extensions/sticky-header/extension.json | 17 - .../src/extensions/toolbar/README.md | 53 - .../toolbar/bootstrap-table-toolbar.js | 211 - .../src/extensions/toolbar/extension.json | 17 - .../bootstrap-table/src/locale/README.md | 179 - .../src/locale/bootstrap-table-af-ZA.js | 40 - .../src/locale/bootstrap-table-ar-SA.js | 40 - .../src/locale/bootstrap-table-ca-ES.js | 44 - .../src/locale/bootstrap-table-cs-CZ.js | 44 - .../src/locale/bootstrap-table-da-DK.js | 37 - .../src/locale/bootstrap-table-de-DE.js | 37 - .../src/locale/bootstrap-table-el-GR.js | 28 - .../src/locale/bootstrap-table-en-US.js | 49 - .../locale/bootstrap-table-en-US.js.template | 49 - .../src/locale/bootstrap-table-es-AR.js | 31 - .../src/locale/bootstrap-table-es-CR.js | 40 - .../src/locale/bootstrap-table-es-ES.js | 43 - .../src/locale/bootstrap-table-es-MX.js | 32 - .../src/locale/bootstrap-table-es-NI.js | 40 - .../src/locale/bootstrap-table-es-SP.js | 40 - .../src/locale/bootstrap-table-et-EE.js | 43 - .../src/locale/bootstrap-table-fa-IR.js | 43 - .../src/locale/bootstrap-table-fr-BE.js | 28 - .../src/locale/bootstrap-table-fr-FR.js | 41 - .../src/locale/bootstrap-table-he-IL.js | 43 - .../src/locale/bootstrap-table-hr-HR.js | 44 - .../src/locale/bootstrap-table-hu-HU.js | 43 - .../src/locale/bootstrap-table-it-IT.js | 42 - .../src/locale/bootstrap-table-ja-JP.js | 43 - .../src/locale/bootstrap-table-ka-GE.js | 40 - .../src/locale/bootstrap-table-ko-KR.js | 37 - .../src/locale/bootstrap-table-ms-MY.js | 43 - .../src/locale/bootstrap-table-nb-NO.js | 37 - .../src/locale/bootstrap-table-nl-NL.js | 52 - .../src/locale/bootstrap-table-pl-PL.js | 37 - .../src/locale/bootstrap-table-pt-BR.js | 41 - .../src/locale/bootstrap-table-pt-PT.js | 43 - .../src/locale/bootstrap-table-ro-RO.js | 43 - .../src/locale/bootstrap-table-ru-RU.js | 39 - .../src/locale/bootstrap-table-sk-SK.js | 37 - .../src/locale/bootstrap-table-sv-SE.js | 37 - .../src/locale/bootstrap-table-th-TH.js | 37 - .../src/locale/bootstrap-table-tr-TR.js | 41 - .../src/locale/bootstrap-table-uk-UA.js | 37 - .../src/locale/bootstrap-table-ur-PK.js | 37 - .../src/locale/bootstrap-table-vi-VN.js | 28 - .../src/locale/bootstrap-table-zh-CN.js | 46 - .../src/locale/bootstrap-table-zh-TW.js | 40 - bower_components/bootstrap/.bower.json | 45 - bower_components/bootstrap/CHANGELOG.md | 5 - bower_components/bootstrap/Gemfile | 8 - bower_components/bootstrap/Gemfile.lock | 58 - bower_components/bootstrap/Gruntfile.js | 355 - bower_components/bootstrap/ISSUE_TEMPLATE.md | 22 - bower_components/bootstrap/LICENSE | 22 - bower_components/bootstrap/README.md | 135 - bower_components/bootstrap/bower.json | 35 - .../bootstrap/dist/css/bootstrap-grid.css | 1339 -- .../bootstrap/dist/css/bootstrap-grid.css.map | 1 - .../bootstrap/dist/css/bootstrap-grid.min.css | 1 - .../dist/css/bootstrap-grid.min.css.map | 1 - .../bootstrap/dist/css/bootstrap-reboot.css | 459 - .../dist/css/bootstrap-reboot.css.map | 1 - .../dist/css/bootstrap-reboot.min.css | 1 - .../dist/css/bootstrap-reboot.min.css.map | 1 - .../bootstrap/dist/css/bootstrap.css | 9320 -------- .../bootstrap/dist/css/bootstrap.css.map | 1 - .../bootstrap/dist/css/bootstrap.min.css | 6 - .../bootstrap/dist/css/bootstrap.min.css.map | 1 - .../bootstrap/dist/js/bootstrap.js | 3535 --- .../bootstrap/dist/js/bootstrap.min.js | 7 - .../bootstrap/grunt/change-version.js | 110 - .../bootstrap/grunt/configBridge.json | 10 - .../bootstrap/grunt/gcp-key.json.enc | Bin 2304 -> 0 bytes .../bootstrap/grunt/npm-shrinkwrap.json | 3864 ---- bower_components/bootstrap/grunt/postcss.js | 42 - .../bootstrap/grunt/sauce_browsers.yml | 84 - .../bootstrap/grunt/upload-preview.sh | 28 - bower_components/bootstrap/js/.babelrc | 14 - bower_components/bootstrap/js/.eslintrc.json | 230 - bower_components/bootstrap/js/dist/alert.js | 183 - .../bootstrap/js/dist/alert.js.map | 1 - bower_components/bootstrap/js/dist/button.js | 167 - .../bootstrap/js/dist/button.js.map | 1 - .../bootstrap/js/dist/carousel.js | 486 - .../bootstrap/js/dist/carousel.js.map | 1 - .../bootstrap/js/dist/collapse.js | 358 - .../bootstrap/js/dist/collapse.js.map | 1 - .../bootstrap/js/dist/dropdown.js | 287 - .../bootstrap/js/dist/dropdown.js.map | 1 - bower_components/bootstrap/js/dist/modal.js | 535 - .../bootstrap/js/dist/modal.js.map | 1 - bower_components/bootstrap/js/dist/popover.js | 193 - .../bootstrap/js/dist/popover.js.map | 1 - .../bootstrap/js/dist/scrollspy.js | 318 - .../bootstrap/js/dist/scrollspy.js.map | 1 - bower_components/bootstrap/js/dist/tab.js | 258 - bower_components/bootstrap/js/dist/tab.js.map | 1 - bower_components/bootstrap/js/dist/tooltip.js | 623 - .../bootstrap/js/dist/tooltip.js.map | 1 - bower_components/bootstrap/js/dist/util.js | 150 - .../bootstrap/js/dist/util.js.map | 1 - bower_components/bootstrap/js/src/alert.js | 193 - bower_components/bootstrap/js/src/button.js | 176 - bower_components/bootstrap/js/src/carousel.js | 497 - bower_components/bootstrap/js/src/collapse.js | 387 - bower_components/bootstrap/js/src/dropdown.js | 303 - bower_components/bootstrap/js/src/modal.js | 545 - bower_components/bootstrap/js/src/popover.js | 179 - .../bootstrap/js/src/scrollspy.js | 332 - bower_components/bootstrap/js/src/tab.js | 278 - bower_components/bootstrap/js/src/tooltip.js | 675 - bower_components/bootstrap/js/src/util.js | 161 - bower_components/bootstrap/nuget/MyGet.ps1 | 18 - .../bootstrap/nuget/bootstrap.nuspec | 27 - .../bootstrap/nuget/bootstrap.sass.nuspec | 27 - bower_components/bootstrap/package.js | 19 - bower_components/bootstrap/package.json | 112 - bower_components/bootstrap/sache.json | 5 - .../bootstrap/scss/.scss-lint.yml | 548 - bower_components/bootstrap/scss/_alert.scss | 55 - bower_components/bootstrap/scss/_badge.scss | 77 - .../bootstrap/scss/_breadcrumb.scss | 38 - .../bootstrap/scss/_button-group.scss | 202 - bower_components/bootstrap/scss/_buttons.scss | 170 - bower_components/bootstrap/scss/_card.scss | 276 - .../bootstrap/scss/_carousel.scss | 178 - bower_components/bootstrap/scss/_close.scss | 31 - bower_components/bootstrap/scss/_code.scss | 64 - .../bootstrap/scss/_custom-forms.scss | 263 - bower_components/bootstrap/scss/_custom.scss | 4 - .../bootstrap/scss/_dropdown.scss | 161 - bower_components/bootstrap/scss/_forms.scss | 388 - bower_components/bootstrap/scss/_grid.scss | 52 - bower_components/bootstrap/scss/_images.scss | 43 - .../bootstrap/scss/_input-group.scss | 178 - .../bootstrap/scss/_jumbotron.scss | 20 - .../bootstrap/scss/_list-group.scss | 141 - bower_components/bootstrap/scss/_media.scss | 8 - bower_components/bootstrap/scss/_mixins.scss | 57 - bower_components/bootstrap/scss/_modal.scss | 142 - bower_components/bootstrap/scss/_nav.scss | 119 - bower_components/bootstrap/scss/_navbar.scss | 268 - .../bootstrap/scss/_normalize.scss | 461 - .../bootstrap/scss/_pagination.scss | 67 - bower_components/bootstrap/scss/_popover.scss | 171 - bower_components/bootstrap/scss/_print.scss | 119 - .../bootstrap/scss/_progress.scss | 32 - bower_components/bootstrap/scss/_reboot.scss | 389 - .../bootstrap/scss/_responsive-embed.scss | 52 - bower_components/bootstrap/scss/_tables.scss | 153 - bower_components/bootstrap/scss/_tooltip.scss | 90 - .../bootstrap/scss/_transitions.scss | 34 - bower_components/bootstrap/scss/_type.scss | 143 - .../bootstrap/scss/_utilities.scss | 13 - .../bootstrap/scss/_variables.scss | 961 - .../bootstrap/scss/bootstrap-grid.scss | 43 - .../bootstrap/scss/bootstrap-reboot.scss | 10 - .../bootstrap/scss/bootstrap.scss | 54 - .../bootstrap/scss/mixins/_alert.scss | 14 - .../scss/mixins/_background-variant.scss | 12 - .../bootstrap/scss/mixins/_badge.scss | 11 - .../bootstrap/scss/mixins/_border-radius.scss | 35 - .../bootstrap/scss/mixins/_breakpoints.scss | 95 - .../bootstrap/scss/mixins/_buttons.scss | 86 - .../bootstrap/scss/mixins/_cards.scss | 47 - .../bootstrap/scss/mixins/_clearfix.scss | 7 - .../bootstrap/scss/mixins/_float.scss | 9 - .../bootstrap/scss/mixins/_forms.scss | 79 - .../bootstrap/scss/mixins/_gradients.scss | 37 - .../scss/mixins/_grid-framework.scss | 65 - .../bootstrap/scss/mixins/_grid.scss | 100 - .../bootstrap/scss/mixins/_hover.scss | 60 - .../bootstrap/scss/mixins/_image.scss | 36 - .../bootstrap/scss/mixins/_list-group.scss | 28 - .../bootstrap/scss/mixins/_lists.scss | 7 - .../bootstrap/scss/mixins/_nav-divider.scss | 10 - .../bootstrap/scss/mixins/_navbar-align.scss | 9 - .../bootstrap/scss/mixins/_pagination.scss | 21 - .../bootstrap/scss/mixins/_reset-text.scss | 17 - .../bootstrap/scss/mixins/_resize.scss | 6 - .../bootstrap/scss/mixins/_screen-reader.scss | 32 - .../bootstrap/scss/mixins/_size.scss | 6 - .../bootstrap/scss/mixins/_table-row.scss | 30 - .../bootstrap/scss/mixins/_text-emphasis.scss | 12 - .../bootstrap/scss/mixins/_text-hide.scss | 8 - .../bootstrap/scss/mixins/_text-truncate.scss | 8 - .../bootstrap/scss/mixins/_transforms.scss | 14 - .../bootstrap/scss/mixins/_visibility.scss | 5 - .../bootstrap/scss/utilities/_align.scss | 6 - .../bootstrap/scss/utilities/_background.scss | 19 - .../bootstrap/scss/utilities/_borders.scss | 37 - .../bootstrap/scss/utilities/_clearfix.scss | 3 - .../bootstrap/scss/utilities/_display.scss | 18 - .../bootstrap/scss/utilities/_flex.scss | 48 - .../bootstrap/scss/utilities/_float.scss | 9 - .../bootstrap/scss/utilities/_position.scss | 23 - .../scss/utilities/_screenreaders.scss | 11 - .../bootstrap/scss/utilities/_sizing.scss | 10 - .../bootstrap/scss/utilities/_spacing.scss | 43 - .../bootstrap/scss/utilities/_text.scss | 61 - .../bootstrap/scss/utilities/_visibility.scss | 55 - bower_components/ekko-lightbox/.bower.json | 39 - bower_components/ekko-lightbox/Gruntfile.js | 85 - .../ekko-lightbox/ISSUE_TEMPLATE.md | 9 - bower_components/ekko-lightbox/LICENSE | 21 - bower_components/ekko-lightbox/README.md | 22 - bower_components/ekko-lightbox/bower.json | 29 - .../ekko-lightbox/dist/ekko-lightbox.css | 2 - .../ekko-lightbox/dist/ekko-lightbox.js | 602 - .../ekko-lightbox/dist/ekko-lightbox.js.map | 1 - .../ekko-lightbox/dist/ekko-lightbox.min.css | 2 - .../dist/ekko-lightbox.min.css.map | 1 - .../ekko-lightbox/dist/ekko-lightbox.min.js | 2 - .../dist/ekko-lightbox.min.js.map | 1 - .../ekko-lightbox/ekko-lightbox.js | 590 - .../ekko-lightbox/ekko-lightbox.less | 130 - bower_components/ekko-lightbox/package.json | 46 - bower_components/fastclick/.bower.json | 24 - bower_components/fastclick/LICENSE | 22 - bower_components/fastclick/README.md | 140 - bower_components/fastclick/bower.json | 12 - bower_components/fastclick/lib/fastclick.js | 841 - bower_components/font-awesome/.bower.json | 37 - bower_components/font-awesome/.gitignore | 33 - bower_components/font-awesome/.npmignore | 42 - bower_components/font-awesome/HELP-US-OUT.txt | 7 - bower_components/font-awesome/bower.json | 22 - .../font-awesome/css/font-awesome.css | 2337 -- .../font-awesome/css/font-awesome.css.map | 7 - .../font-awesome/css/font-awesome.min.css | 4 - .../font-awesome/fonts/FontAwesome.otf | Bin 134808 -> 0 bytes .../fonts/fontawesome-webfont.eot | Bin 165742 -> 0 bytes .../fonts/fontawesome-webfont.svg | 2671 --- .../fonts/fontawesome-webfont.ttf | Bin 165548 -> 0 bytes .../fonts/fontawesome-webfont.woff | Bin 98024 -> 0 bytes .../fonts/fontawesome-webfont.woff2 | Bin 77160 -> 0 bytes .../font-awesome/less/animated.less | 34 - .../font-awesome/less/bordered-pulled.less | 25 - bower_components/font-awesome/less/core.less | 12 - .../font-awesome/less/fixed-width.less | 6 - .../font-awesome/less/font-awesome.less | 18 - bower_components/font-awesome/less/icons.less | 789 - .../font-awesome/less/larger.less | 13 - bower_components/font-awesome/less/list.less | 19 - .../font-awesome/less/mixins.less | 60 - bower_components/font-awesome/less/path.less | 15 - .../font-awesome/less/rotated-flipped.less | 20 - .../font-awesome/less/screen-reader.less | 5 - .../font-awesome/less/stacked.less | 20 - .../font-awesome/less/variables.less | 800 - .../font-awesome/scss/_animated.scss | 34 - .../font-awesome/scss/_bordered-pulled.scss | 25 - bower_components/font-awesome/scss/_core.scss | 12 - .../font-awesome/scss/_fixed-width.scss | 6 - .../font-awesome/scss/_icons.scss | 789 - .../font-awesome/scss/_larger.scss | 13 - bower_components/font-awesome/scss/_list.scss | 19 - .../font-awesome/scss/_mixins.scss | 60 - bower_components/font-awesome/scss/_path.scss | 15 - .../font-awesome/scss/_rotated-flipped.scss | 20 - .../font-awesome/scss/_screen-reader.scss | 5 - .../font-awesome/scss/_stacked.scss | 20 - .../font-awesome/scss/_variables.scss | 800 - .../font-awesome/scss/font-awesome.scss | 18 - bower_components/iCheck/.bower.json | 52 - bower_components/iCheck/bower.json | 42 - bower_components/iCheck/icheck.jquery.json | 48 - bower_components/iCheck/icheck.js | 509 - bower_components/iCheck/icheck.min.js | 11 - bower_components/iCheck/skins/all.css | 61 - bower_components/iCheck/skins/flat/_all.css | 530 - bower_components/iCheck/skins/flat/aero.css | 53 - bower_components/iCheck/skins/flat/aero.png | Bin 1520 -> 0 bytes .../iCheck/skins/flat/aero@2x.png | Bin 3218 -> 0 bytes bower_components/iCheck/skins/flat/blue.css | 53 - bower_components/iCheck/skins/flat/blue.png | Bin 1518 -> 0 bytes .../iCheck/skins/flat/blue@2x.png | Bin 3217 -> 0 bytes bower_components/iCheck/skins/flat/flat.css | 53 - bower_components/iCheck/skins/flat/flat.png | Bin 1515 -> 0 bytes .../iCheck/skins/flat/flat@2x.png | Bin 3217 -> 0 bytes bower_components/iCheck/skins/flat/green.css | 53 - bower_components/iCheck/skins/flat/green.png | Bin 1444 -> 0 bytes .../iCheck/skins/flat/green@2x.png | Bin 3117 -> 0 bytes bower_components/iCheck/skins/flat/grey.css | 53 - bower_components/iCheck/skins/flat/grey.png | Bin 1516 -> 0 bytes .../iCheck/skins/flat/grey@2x.png | Bin 3217 -> 0 bytes bower_components/iCheck/skins/flat/orange.css | 53 - bower_components/iCheck/skins/flat/orange.png | Bin 1518 -> 0 bytes .../iCheck/skins/flat/orange@2x.png | Bin 3275 -> 0 bytes bower_components/iCheck/skins/flat/pink.css | 53 - bower_components/iCheck/skins/flat/pink.png | Bin 1522 -> 0 bytes .../iCheck/skins/flat/pink@2x.png | Bin 3218 -> 0 bytes bower_components/iCheck/skins/flat/purple.css | 53 - bower_components/iCheck/skins/flat/purple.png | Bin 1519 -> 0 bytes .../iCheck/skins/flat/purple@2x.png | Bin 3218 -> 0 bytes bower_components/iCheck/skins/flat/red.css | 53 - bower_components/iCheck/skins/flat/red.png | Bin 1516 -> 0 bytes bower_components/iCheck/skins/flat/red@2x.png | Bin 3276 -> 0 bytes bower_components/iCheck/skins/flat/yellow.css | 53 - bower_components/iCheck/skins/flat/yellow.png | Bin 1516 -> 0 bytes .../iCheck/skins/flat/yellow@2x.png | Bin 3216 -> 0 bytes .../iCheck/skins/futurico/futurico.css | 53 - .../iCheck/skins/futurico/futurico.png | Bin 1734 -> 0 bytes .../iCheck/skins/futurico/futurico@2x.png | Bin 3446 -> 0 bytes bower_components/iCheck/skins/line/_all.css | 710 - bower_components/iCheck/skins/line/aero.css | 71 - bower_components/iCheck/skins/line/blue.css | 71 - bower_components/iCheck/skins/line/green.css | 71 - bower_components/iCheck/skins/line/grey.css | 71 - bower_components/iCheck/skins/line/line.css | 71 - bower_components/iCheck/skins/line/line.png | Bin 588 -> 0 bytes .../iCheck/skins/line/line@2x.png | Bin 1073 -> 0 bytes bower_components/iCheck/skins/line/orange.css | 71 - bower_components/iCheck/skins/line/pink.css | 71 - bower_components/iCheck/skins/line/purple.css | 71 - bower_components/iCheck/skins/line/red.css | 71 - bower_components/iCheck/skins/line/yellow.css | 71 - .../iCheck/skins/minimal/_all.css | 590 - .../iCheck/skins/minimal/aero.css | 59 - .../iCheck/skins/minimal/aero.png | Bin 1151 -> 0 bytes .../iCheck/skins/minimal/aero@2x.png | Bin 1409 -> 0 bytes .../iCheck/skins/minimal/blue.css | 59 - .../iCheck/skins/minimal/blue.png | Bin 1132 -> 0 bytes .../iCheck/skins/minimal/blue@2x.png | Bin 1410 -> 0 bytes .../iCheck/skins/minimal/green.css | 59 - .../iCheck/skins/minimal/green.png | Bin 1143 -> 0 bytes .../iCheck/skins/minimal/green@2x.png | Bin 1408 -> 0 bytes .../iCheck/skins/minimal/grey.css | 59 - .../iCheck/skins/minimal/grey.png | Bin 1142 -> 0 bytes .../iCheck/skins/minimal/grey@2x.png | Bin 1407 -> 0 bytes .../iCheck/skins/minimal/minimal.css | 59 - .../iCheck/skins/minimal/minimal.png | Bin 1114 -> 0 bytes .../iCheck/skins/minimal/minimal@2x.png | Bin 1410 -> 0 bytes .../iCheck/skins/minimal/orange.css | 59 - .../iCheck/skins/minimal/orange.png | Bin 1139 -> 0 bytes .../iCheck/skins/minimal/orange@2x.png | Bin 1407 -> 0 bytes .../iCheck/skins/minimal/pink.css | 59 - .../iCheck/skins/minimal/pink.png | Bin 1150 -> 0 bytes .../iCheck/skins/minimal/pink@2x.png | Bin 1409 -> 0 bytes .../iCheck/skins/minimal/purple.css | 59 - .../iCheck/skins/minimal/purple.png | Bin 1132 -> 0 bytes .../iCheck/skins/minimal/purple@2x.png | Bin 1409 -> 0 bytes bower_components/iCheck/skins/minimal/red.css | 59 - bower_components/iCheck/skins/minimal/red.png | Bin 1130 -> 0 bytes .../iCheck/skins/minimal/red@2x.png | Bin 1410 -> 0 bytes .../iCheck/skins/minimal/yellow.css | 59 - .../iCheck/skins/minimal/yellow.png | Bin 1135 -> 0 bytes .../iCheck/skins/minimal/yellow@2x.png | Bin 1406 -> 0 bytes .../iCheck/skins/polaris/polaris.css | 59 - .../iCheck/skins/polaris/polaris.png | Bin 6401 -> 0 bytes .../iCheck/skins/polaris/polaris@2x.png | Bin 16760 -> 0 bytes bower_components/iCheck/skins/square/_all.css | 590 - bower_components/iCheck/skins/square/aero.css | 59 - bower_components/iCheck/skins/square/aero.png | Bin 2167 -> 0 bytes .../iCheck/skins/square/aero@2x.png | Bin 4455 -> 0 bytes bower_components/iCheck/skins/square/blue.css | 59 - bower_components/iCheck/skins/square/blue.png | Bin 2185 -> 0 bytes .../iCheck/skins/square/blue@2x.png | Bin 4485 -> 0 bytes .../iCheck/skins/square/green.css | 59 - .../iCheck/skins/square/green.png | Bin 2193 -> 0 bytes .../iCheck/skins/square/green@2x.png | Bin 4498 -> 0 bytes bower_components/iCheck/skins/square/grey.css | 59 - bower_components/iCheck/skins/square/grey.png | Bin 2186 -> 0 bytes .../iCheck/skins/square/grey@2x.png | Bin 4483 -> 0 bytes .../iCheck/skins/square/orange.css | 59 - .../iCheck/skins/square/orange.png | Bin 2181 -> 0 bytes .../iCheck/skins/square/orange@2x.png | Bin 4474 -> 0 bytes bower_components/iCheck/skins/square/pink.css | 59 - bower_components/iCheck/skins/square/pink.png | Bin 2189 -> 0 bytes .../iCheck/skins/square/pink@2x.png | Bin 4479 -> 0 bytes .../iCheck/skins/square/purple.css | 59 - .../iCheck/skins/square/purple.png | Bin 2188 -> 0 bytes .../iCheck/skins/square/purple@2x.png | Bin 4501 -> 0 bytes bower_components/iCheck/skins/square/red.css | 59 - bower_components/iCheck/skins/square/red.png | Bin 2190 -> 0 bytes .../iCheck/skins/square/red@2x.png | Bin 4490 -> 0 bytes .../iCheck/skins/square/square.css | 59 - .../iCheck/skins/square/square.png | Bin 2175 -> 0 bytes .../iCheck/skins/square/square@2x.png | Bin 4478 -> 0 bytes .../iCheck/skins/square/yellow.css | 59 - .../iCheck/skins/square/yellow.png | Bin 2131 -> 0 bytes .../iCheck/skins/square/yellow@2x.png | Bin 4385 -> 0 bytes .../jquery-slimscroll/.bower.json | 59 - bower_components/jquery-slimscroll/README.md | 8 - bower_components/jquery-slimscroll/bower.json | 46 - .../examples/allow-page-scroll.html | 94 - .../jquery-slimscroll/examples/chaining.html | 80 - .../examples/disable-fade-out.html | 94 - .../examples/dynamic-content.html | 81 - .../examples/height-width.html | 125 - .../jquery-slimscroll/examples/index.html | 9 - .../examples/libs/prettify/prettify.css | 52 - .../examples/libs/prettify/prettify.js | 1477 -- .../examples/mouse-wheel.html | 99 - .../examples/multiple-elements.html | 120 - .../examples/navigation.html | 30 - .../jquery-slimscroll/examples/nested.html | 82 - .../examples/programmatic-scrolling.html | 138 - .../jquery-slimscroll/examples/rail.html | 190 - .../examples/scroll-events.html | 88 - .../jquery-slimscroll/examples/scrollbar.html | 189 - .../examples/start-position.html | 100 - .../jquery-slimscroll/examples/style.css | 13 - .../jquery-slimscroll/jquery.slimscroll.js | 474 - .../jquery.slimscroll.min.js | 16 - .../jquery-slimscroll/package.json | 32 - bower_components/jquery-ui/.bower.json | 23 - bower_components/jquery-ui/.gitignore | 4 - bower_components/jquery-ui/README.md | 12 - bower_components/jquery-ui/bower.json | 13 - bower_components/jquery-ui/component.json | 13 - bower_components/jquery-ui/composer.json | 69 - bower_components/jquery-ui/jquery-ui.js | 18706 ---------------- bower_components/jquery-ui/jquery-ui.min.js | 13 - bower_components/jquery-ui/package.json | 16 - .../jquery-ui/themes/base/accordion.css | 23 - .../jquery-ui/themes/base/all.css | 12 - .../jquery-ui/themes/base/autocomplete.css | 16 - .../jquery-ui/themes/base/base.css | 30 - .../jquery-ui/themes/base/button.css | 82 - .../jquery-ui/themes/base/checkboxradio.css | 34 - .../jquery-ui/themes/base/controlgroup.css | 65 - .../jquery-ui/themes/base/core.css | 97 - .../jquery-ui/themes/base/datepicker.css | 185 - .../jquery-ui/themes/base/dialog.css | 101 - .../jquery-ui/themes/base/draggable.css | 12 - .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 86 -> 0 bytes .../base/images/ui-icons_444444_256x240.png | Bin 7090 -> 0 bytes .../base/images/ui-icons_555555_256x240.png | Bin 7074 -> 0 bytes .../base/images/ui-icons_777620_256x240.png | Bin 4676 -> 0 bytes .../base/images/ui-icons_777777_256x240.png | Bin 7111 -> 0 bytes .../base/images/ui-icons_cc0000_256x240.png | Bin 4676 -> 0 bytes .../base/images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/base/jquery-ui.css | 1311 -- .../jquery-ui/themes/base/jquery-ui.min.css | 7 - .../jquery-ui/themes/base/menu.css | 64 - .../jquery-ui/themes/base/progressbar.css | 28 - .../jquery-ui/themes/base/resizable.css | 78 - .../jquery-ui/themes/base/selectable.css | 17 - .../jquery-ui/themes/base/selectmenu.css | 50 - .../jquery-ui/themes/base/slider.css | 75 - .../jquery-ui/themes/base/sortable.css | 12 - .../jquery-ui/themes/base/spinner.css | 52 - .../jquery-ui/themes/base/tabs.css | 51 - .../jquery-ui/themes/base/theme.css | 443 - .../jquery-ui/themes/base/tooltip.css | 19 - .../ui-bg_diagonals-thick_8_333333_40x40.png | Bin 383 -> 0 bytes .../images/ui-bg_glass_40_111111_1x400.png | Bin 323 -> 0 bytes .../images/ui-bg_glass_55_1c1c1c_1x400.png | Bin 323 -> 0 bytes .../ui-bg_highlight-hard_100_f9f9f9_1x100.png | Bin 315 -> 0 bytes .../ui-bg_highlight-hard_40_aaaaaa_1x100.png | Bin 316 -> 0 bytes .../ui-bg_highlight-soft_50_aaaaaa_1x100.png | Bin 327 -> 0 bytes .../ui-bg_inset-hard_45_cd0a0a_1x100.png | Bin 382 -> 0 bytes .../ui-bg_inset-hard_55_ffeb80_1x100.png | Bin 367 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_4ca300_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_bbbbbb_256x240.png | Bin 7092 -> 0 bytes .../images/ui-icons_ededed_256x240.png | Bin 7011 -> 0 bytes .../images/ui-icons_ffcf29_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/black-tie/jquery-ui.css | 1311 -- .../themes/black-tie/jquery-ui.min.css | 7 - .../jquery-ui/themes/black-tie/theme.css | 443 - .../ui-bg_diagonals-thick_75_f3d8d8_40x40.png | Bin 471 -> 0 bytes .../images/ui-bg_dots-small_65_a6a6a6_2x2.png | Bin 266 -> 0 bytes .../images/ui-bg_glass_55_fbf8ee_1x400.png | Bin 398 -> 0 bytes .../ui-bg_highlight-hard_100_eeeeee_1x100.png | Bin 316 -> 0 bytes .../ui-bg_highlight-hard_100_f6f6f6_1x100.png | Bin 316 -> 0 bytes .../ui-bg_highlight-soft_15_cc0000_1x100.png | Bin 385 -> 0 bytes .../images/ui-icons_004276_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/blitzer/jquery-ui.css | 1311 -- .../themes/blitzer/jquery-ui.min.css | 7 - .../jquery-ui/themes/blitzer/theme.css | 443 - .../ui-bg_diagonals-thick_90_eeeeee_40x40.png | Bin 380 -> 0 bytes .../images/ui-bg_glass_100_e4f1fb_1x400.png | Bin 408 -> 0 bytes .../images/ui-bg_glass_50_3baae3_1x400.png | Bin 394 -> 0 bytes .../images/ui-bg_glass_80_d7ebf9_1x400.png | Bin 404 -> 0 bytes .../ui-bg_highlight-hard_100_f2f5f7_1x100.png | Bin 390 -> 0 bytes .../ui-bg_highlight-hard_70_000000_1x100.png | Bin 310 -> 0 bytes .../ui-bg_highlight-soft_100_deedf7_1x100.png | Bin 445 -> 0 bytes .../ui-bg_highlight-soft_25_ffef8f_1x100.png | Bin 367 -> 0 bytes .../images/ui-icons_2694e8_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_3d80b3_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_72a7cf_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/cupertino/jquery-ui.css | 1311 -- .../themes/cupertino/jquery-ui.min.css | 7 - .../jquery-ui/themes/cupertino/theme.css | 443 - .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 374 -> 0 bytes .../ui-bg_highlight-hard_20_0972a5_1x100.png | Bin 381 -> 0 bytes .../ui-bg_highlight-soft_33_003147_1x100.png | Bin 401 -> 0 bytes .../ui-bg_highlight-soft_35_222222_1x100.png | Bin 342 -> 0 bytes .../ui-bg_highlight-soft_44_444444_1x100.png | Bin 328 -> 0 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 335 -> 0 bytes .../images/ui-bg_loop_25_000000_21x21.png | Bin 378 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_a83300_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cccccc_256x240.png | Bin 7034 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/dark-hive/jquery-ui.css | 1311 -- .../themes/dark-hive/jquery-ui.min.css | 7 - .../jquery-ui/themes/dark-hive/theme.css | 443 - .../ui-bg_diagonals-thick_15_0b3e6f_40x40.png | Bin 482 -> 0 bytes .../ui-bg_dots-medium_30_0b58a2_4x4.png | Bin 295 -> 0 bytes .../images/ui-bg_dots-small_20_333333_2x2.png | Bin 266 -> 0 bytes .../images/ui-bg_dots-small_30_a32d00_2x2.png | Bin 276 -> 0 bytes .../images/ui-bg_dots-small_40_00498f_2x2.png | Bin 282 -> 0 bytes .../ui-bg_gloss-wave_20_111111_500x100.png | Bin 3990 -> 0 bytes .../images/ui-icons_00498f_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_98d2fb_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_9ccdfc_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/dot-luv/jquery-ui.css | 1311 -- .../themes/dot-luv/jquery-ui.min.css | 7 - .../jquery-ui/themes/dot-luv/theme.css | 443 - .../ui-bg_gloss-wave_30_3d3644_500x100.png | Bin 5999 -> 0 bytes .../ui-bg_highlight-soft_100_dcd9de_1x100.png | Bin 400 -> 0 bytes .../ui-bg_highlight-soft_100_eae6ea_1x100.png | Bin 431 -> 0 bytes .../ui-bg_highlight-soft_25_30273a_1x100.png | Bin 420 -> 0 bytes .../ui-bg_highlight-soft_45_5f5964_1x100.png | Bin 405 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 7090 -> 0 bytes .../images/ui-icons_734d99_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_8d78a5_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_a8a3ae_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ebccce_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/eggplant/jquery-ui.css | 1311 -- .../themes/eggplant/jquery-ui.min.css | 7 - .../jquery-ui/themes/eggplant/theme.css | 443 - .../ui-bg_diagonals-small_25_c5ddfc_40x40.png | Bin 400 -> 0 bytes .../ui-bg_diagonals-thick_20_e69700_40x40.png | Bin 475 -> 0 bytes .../ui-bg_diagonals-thick_22_1484e6_40x40.png | Bin 467 -> 0 bytes .../ui-bg_diagonals-thick_26_2293f7_40x40.png | Bin 464 -> 0 bytes .../ui-bg_highlight-soft_100_f9f9f9_1x100.png | Bin 325 -> 0 bytes .../ui-bg_inset-hard_100_eeeeee_1x100.png | Bin 314 -> 0 bytes .../images/ui-icons_0a82eb_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_0b54d5_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_5fa5e3_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_fcdd4a_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../themes/excite-bike/jquery-ui.css | 1311 -- .../themes/excite-bike/jquery-ui.min.css | 7 - .../jquery-ui/themes/excite-bike/theme.css | 443 - .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 265 -> 0 bytes .../ui-bg_highlight-soft_100_f6f6f6_1x100.png | Bin 330 -> 0 bytes .../ui-bg_highlight-soft_25_0073ea_1x100.png | Bin 393 -> 0 bytes .../ui-bg_highlight-soft_50_dddddd_1x100.png | Bin 339 -> 0 bytes .../flick/images/ui-icons_0073ea_256x240.png | Bin 4676 -> 0 bytes .../flick/images/ui-icons_454545_256x240.png | Bin 7090 -> 0 bytes .../flick/images/ui-icons_666666_256x240.png | Bin 7111 -> 0 bytes .../flick/images/ui-icons_ff0084_256x240.png | Bin 4676 -> 0 bytes .../flick/images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/flick/jquery-ui.css | 1311 -- .../jquery-ui/themes/flick/jquery-ui.min.css | 7 - .../jquery-ui/themes/flick/theme.css | 443 - .../ui-bg_diagonals-small_40_db4865_40x40.png | Bin 390 -> 0 bytes .../ui-bg_diagonals-small_50_93c3cd_40x40.png | Bin 391 -> 0 bytes .../ui-bg_diagonals-small_50_ff3853_40x40.png | Bin 388 -> 0 bytes .../ui-bg_diagonals-small_75_ccd232_40x40.png | Bin 391 -> 0 bytes .../ui-bg_dots-medium_80_ffff38_4x4.png | Bin 283 -> 0 bytes .../images/ui-bg_dots-small_35_35414f_2x2.png | Bin 281 -> 0 bytes .../ui-bg_white-lines_85_f7f7ba_40x100.png | Bin 422 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 7090 -> 0 bytes .../images/ui-icons_88a206_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_c02669_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_e1e463_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffeb33_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/hot-sneaks/jquery-ui.css | 1311 -- .../themes/hot-sneaks/jquery-ui.min.css | 7 - .../jquery-ui/themes/hot-sneaks/theme.css | 443 - .../images/ui-bg_glass_100_f5f0e5_1x400.png | Bin 412 -> 0 bytes .../images/ui-bg_glass_25_cb842e_1x400.png | Bin 393 -> 0 bytes .../images/ui-bg_glass_70_ede4d4_1x400.png | Bin 409 -> 0 bytes .../ui-bg_highlight-hard_100_f4f0ec_1x100.png | Bin 385 -> 0 bytes .../ui-bg_highlight-hard_65_fee4bd_1x100.png | Bin 372 -> 0 bytes .../ui-bg_highlight-hard_75_f5f5b5_1x100.png | Bin 381 -> 0 bytes .../ui-bg_inset-soft_100_f4f0ec_1x100.png | Bin 461 -> 0 bytes .../images/ui-icons_c47a23_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cb672b_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_f08000_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_f35f07_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ff7519_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/humanity/jquery-ui.css | 1311 -- .../themes/humanity/jquery-ui.min.css | 7 - .../jquery-ui/themes/humanity/theme.css | 443 - .../ui-bg_diagonals-small_0_aaaaaa_40x40.png | Bin 265 -> 0 bytes .../ui-bg_diagonals-thick_15_444444_40x40.png | Bin 383 -> 0 bytes .../ui-bg_diagonals-thick_95_ffdc2e_40x40.png | Bin 469 -> 0 bytes .../images/ui-bg_glass_55_fbf5d0_1x400.png | Bin 394 -> 0 bytes .../ui-bg_highlight-hard_30_285c00_1x100.png | Bin 382 -> 0 bytes .../ui-bg_highlight-soft_33_3a8104_1x100.png | Bin 403 -> 0 bytes .../ui-bg_highlight-soft_50_4eb305_1x100.png | Bin 409 -> 0 bytes .../ui-bg_highlight-soft_60_4ca20b_1x100.png | Bin 417 -> 0 bytes .../ui-bg_inset-soft_10_285c00_1x100.png | Bin 424 -> 0 bytes .../images/ui-icons_4eb305_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_72b42d_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/le-frog/jquery-ui.css | 1311 -- .../themes/le-frog/jquery-ui.min.css | 7 - .../jquery-ui/themes/le-frog/theme.css | 443 - .../images/ui-bg_glass_15_5f391b_1x400.png | Bin 393 -> 0 bytes .../ui-bg_gloss-wave_20_1c160d_500x100.png | Bin 5851 -> 0 bytes .../ui-bg_gloss-wave_25_453326_500x100.png | Bin 5910 -> 0 bytes .../ui-bg_gloss-wave_30_44372c_500x100.png | Bin 5972 -> 0 bytes .../ui-bg_highlight-soft_20_201913_1x100.png | Bin 433 -> 0 bytes .../ui-bg_highlight-soft_20_619226_1x100.png | Bin 401 -> 0 bytes .../ui-bg_inset-soft_10_201913_1x100.png | Bin 438 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_9bcc60_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_add978_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_e3ddc9_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_f1fd86_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/mint-choc/jquery-ui.css | 1311 -- .../themes/mint-choc/jquery-ui.min.css | 7 - .../jquery-ui/themes/mint-choc/theme.css | 443 - .../images/ui-bg_glass_100_f8f8f8_1x400.png | Bin 324 -> 0 bytes .../images/ui-bg_glass_35_dddddd_1x400.png | Bin 323 -> 0 bytes .../images/ui-bg_glass_60_eeeeee_1x400.png | Bin 323 -> 0 bytes .../ui-bg_inset-hard_75_999999_1x100.png | Bin 310 -> 0 bytes .../ui-bg_inset-soft_50_c9c9c9_1x100.png | Bin 329 -> 0 bytes .../images/ui-icons_3383bb_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 7090 -> 0 bytes .../images/ui-icons_70b2e1_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_999999_256x240.png | Bin 7111 -> 0 bytes .../images/ui-icons_fbc856_256x240.png | Bin 4676 -> 0 bytes .../jquery-ui/themes/overcast/jquery-ui.css | 1311 -- .../themes/overcast/jquery-ui.min.css | 7 - .../jquery-ui/themes/overcast/theme.css | 443 - .../ui-bg_diagonal-maze_20_6e4f1c_10x10.png | Bin 354 -> 0 bytes .../ui-bg_diagonal-maze_40_000000_10x10.png | Bin 301 -> 0 bytes .../ui-bg_fine-grain_10_eceadf_60x60.png | Bin 10817 -> 0 bytes .../ui-bg_fine-grain_10_f8f7f6_60x60.png | Bin 9962 -> 0 bytes .../ui-bg_fine-grain_15_eceadf_60x60.png | Bin 10587 -> 0 bytes .../ui-bg_fine-grain_15_f7f3de_60x60.png | Bin 10949 -> 0 bytes .../ui-bg_fine-grain_15_ffffff_60x60.png | Bin 4262 -> 0 bytes .../ui-bg_fine-grain_65_654b24_60x60.png | Bin 14498 -> 0 bytes .../ui-bg_fine-grain_68_b83400_60x60.png | Bin 11935 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_3572ac_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_8c291d_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_b83400_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_fbdb93_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../themes/pepper-grinder/jquery-ui.css | 1311 -- .../themes/pepper-grinder/jquery-ui.min.css | 7 - .../jquery-ui/themes/pepper-grinder/theme.css | 443 - .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 394 -> 0 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 399 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 390 -> 0 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 5882 -> 0 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 391 -> 0 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 350 -> 0 bytes .../images/ui-icons_217bc0_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_469bdd_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 4676 -> 0 bytes .../jquery-ui/themes/redmond/jquery-ui.css | 1311 -- .../themes/redmond/jquery-ui.min.css | 7 - .../jquery-ui/themes/redmond/theme.css | 443 - .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 393 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 265 -> 0 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 323 -> 0 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 324 -> 0 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 390 -> 0 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 325 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_454545_256x240.png | Bin 7090 -> 0 bytes .../images/ui-icons_888888_256x240.png | Bin 7111 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4676 -> 0 bytes .../jquery-ui/themes/smoothness/jquery-ui.css | 1311 -- .../themes/smoothness/jquery-ui.min.css | 7 - .../jquery-ui/themes/smoothness/theme.css | 443 - .../images/ui-bg_glass_55_fcf0ba_1x400.png | Bin 391 -> 0 bytes .../ui-bg_gloss-wave_100_ece8da_500x100.png | Bin 5817 -> 0 bytes .../ui-bg_highlight-hard_100_f5f3e5_1x100.png | Bin 394 -> 0 bytes .../ui-bg_highlight-hard_100_fafaf4_1x100.png | Bin 379 -> 0 bytes .../ui-bg_highlight-hard_15_459e00_1x100.png | Bin 380 -> 0 bytes .../ui-bg_highlight-hard_95_cccccc_1x100.png | Bin 317 -> 0 bytes .../ui-bg_highlight-soft_25_67b021_1x100.png | Bin 411 -> 0 bytes .../ui-bg_highlight-soft_95_ffedad_1x100.png | Bin 409 -> 0 bytes .../ui-bg_inset-soft_15_2b2922_1x100.png | Bin 380 -> 0 bytes .../images/ui-icons_808080_256x240.png | Bin 7117 -> 0 bytes .../images/ui-icons_847e71_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_8DC262_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_eeeeee_256x240.png | Bin 7010 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../themes/south-street/jquery-ui.css | 1311 -- .../themes/south-street/jquery-ui.min.css | 7 - .../jquery-ui/themes/south-street/theme.css | 443 - .../images/ui-bg_glass_45_0078ae_1x400.png | Bin 403 -> 0 bytes .../images/ui-bg_glass_55_f8da4e_1x400.png | Bin 403 -> 0 bytes .../images/ui-bg_glass_75_79c9ec_1x400.png | Bin 406 -> 0 bytes .../ui-bg_gloss-wave_45_e14f1c_500x100.png | Bin 5922 -> 0 bytes .../ui-bg_gloss-wave_50_6eac2c_500x100.png | Bin 5964 -> 0 bytes .../ui-bg_gloss-wave_75_2191c0_500x100.png | Bin 6035 -> 0 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 350 -> 0 bytes .../start/images/ui-icons_0078ae_256x240.png | Bin 4676 -> 0 bytes .../start/images/ui-icons_056b93_256x240.png | Bin 4676 -> 0 bytes .../start/images/ui-icons_d8e7f3_256x240.png | Bin 4676 -> 0 bytes .../start/images/ui-icons_e0fdff_256x240.png | Bin 4676 -> 0 bytes .../start/images/ui-icons_f5e175_256x240.png | Bin 4676 -> 0 bytes .../start/images/ui-icons_f7a50d_256x240.png | Bin 4676 -> 0 bytes .../start/images/ui-icons_fcd113_256x240.png | Bin 4676 -> 0 bytes .../jquery-ui/themes/start/jquery-ui.css | 1311 -- .../jquery-ui/themes/start/jquery-ui.min.css | 7 - .../jquery-ui/themes/start/theme.css | 443 - ...ui-bg_diagonals-medium_20_d34d17_40x40.png | Bin 440 -> 0 bytes .../ui-bg_gloss-wave_45_817865_500x100.png | Bin 5939 -> 0 bytes .../ui-bg_gloss-wave_60_fece2f_500x100.png | Bin 5908 -> 0 bytes .../ui-bg_gloss-wave_70_ffdd57_500x100.png | Bin 5601 -> 0 bytes .../ui-bg_gloss-wave_90_fff9e5_500x100.png | Bin 5447 -> 0 bytes .../ui-bg_highlight-soft_100_feeebd_1x100.png | Bin 401 -> 0 bytes .../ui-bg_inset-soft_30_ffffff_1x100.png | Bin 261 -> 0 bytes .../sunny/images/ui-icons_3d3d3d_256x240.png | Bin 7074 -> 0 bytes .../sunny/images/ui-icons_bd7b00_256x240.png | Bin 4676 -> 0 bytes .../sunny/images/ui-icons_d19405_256x240.png | Bin 4676 -> 0 bytes .../sunny/images/ui-icons_eb990f_256x240.png | Bin 4676 -> 0 bytes .../sunny/images/ui-icons_ed9f26_256x240.png | Bin 4676 -> 0 bytes .../sunny/images/ui-icons_fadc7a_256x240.png | Bin 4676 -> 0 bytes .../sunny/images/ui-icons_ffe180_256x240.png | Bin 4676 -> 0 bytes .../jquery-ui/themes/sunny/jquery-ui.css | 1311 -- .../jquery-ui/themes/sunny/jquery-ui.min.css | 7 - .../jquery-ui/themes/sunny/theme.css | 443 - .../images/ui-bg_diamond_10_4f4221_10x8.png | Bin 365 -> 0 bytes .../images/ui-bg_diamond_20_372806_10x8.png | Bin 368 -> 0 bytes .../images/ui-bg_diamond_25_675423_10x8.png | Bin 370 -> 0 bytes .../images/ui-bg_diamond_25_d5ac5d_10x8.png | Bin 371 -> 0 bytes .../images/ui-bg_diamond_8_261803_10x8.png | Bin 368 -> 0 bytes .../images/ui-bg_diamond_8_443113_10x8.png | Bin 368 -> 0 bytes .../ui-bg_highlight-hard_65_fee4bd_1x100.png | Bin 372 -> 0 bytes .../images/ui-icons_070603_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_e8e2b5_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_e9cd86_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_efec9f_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_f2ec64_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_f9f2bd_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ff7519_256x240.png | Bin 4676 -> 0 bytes .../themes/swanky-purse/jquery-ui.css | 1311 -- .../themes/swanky-purse/jquery-ui.min.css | 7 - .../jquery-ui/themes/swanky-purse/theme.css | 443 - .../ui-bg_diagonals-small_50_262626_40x40.png | Bin 321 -> 0 bytes .../images/ui-bg_glass_40_0a0a0a_1x400.png | Bin 322 -> 0 bytes .../images/ui-bg_glass_55_f1fbe5_1x400.png | Bin 406 -> 0 bytes .../images/ui-bg_glass_60_000000_1x400.png | Bin 323 -> 0 bytes .../ui-bg_gloss-wave_55_000000_500x100.png | Bin 4360 -> 0 bytes .../ui-bg_gloss-wave_85_9fda58_500x100.png | Bin 5998 -> 0 bytes .../ui-bg_gloss-wave_95_f6ecd5_500x100.png | Bin 5856 -> 0 bytes .../images/ui-icons_000000_256x240.png | Bin 5582 -> 0 bytes .../images/ui-icons_1f1f1f_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_9fda58_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_b8ec79_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../jquery-ui/themes/trontastic/jquery-ui.css | 1311 -- .../themes/trontastic/jquery-ui.min.css | 7 - .../jquery-ui/themes/trontastic/theme.css | 443 - .../images/ui-bg_glass_20_555555_1x400.png | Bin 318 -> 0 bytes .../images/ui-bg_glass_40_0078a3_1x400.png | Bin 400 -> 0 bytes .../images/ui-bg_glass_40_ffc73d_1x400.png | Bin 374 -> 0 bytes .../ui-bg_gloss-wave_25_333333_500x100.png | Bin 3976 -> 0 bytes .../ui-bg_highlight-soft_80_eeeeee_1x100.png | Bin 335 -> 0 bytes .../ui-bg_inset-soft_25_000000_1x100.png | Bin 312 -> 0 bytes .../ui-bg_inset-soft_30_f58400_1x100.png | Bin 398 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_4b8e0b_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_a83300_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_cccccc_256x240.png | Bin 7034 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../themes/ui-darkness/jquery-ui.css | 1311 -- .../themes/ui-darkness/jquery-ui.min.css | 7 - .../jquery-ui/themes/ui-darkness/theme.css | 443 - .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 476 -> 0 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 384 -> 0 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 324 -> 0 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 406 -> 0 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 265 -> 0 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 5873 -> 0 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 342 -> 0 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 386 -> 0 bytes .../images/ui-icons_222222_256x240.png | Bin 7025 -> 0 bytes .../images/ui-icons_228ef1_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6487 -> 0 bytes .../themes/ui-lightness/jquery-ui.css | 1311 -- .../themes/ui-lightness/jquery-ui.min.css | 7 - .../jquery-ui/themes/ui-lightness/theme.css | 443 - .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 390 -> 0 bytes .../ui-bg_gloss-wave_16_121212_500x100.png | Bin 4031 -> 0 bytes .../ui-bg_highlight-hard_15_888888_1x100.png | Bin 311 -> 0 bytes .../ui-bg_highlight-hard_55_555555_1x100.png | Bin 311 -> 0 bytes .../ui-bg_highlight-soft_35_adadad_1x100.png | Bin 326 -> 0 bytes .../ui-bg_highlight-soft_60_dddddd_1x100.png | Bin 342 -> 0 bytes .../ui-bg_inset-soft_15_121212_1x100.png | Bin 322 -> 0 bytes .../vader/images/ui-icons_666666_256x240.png | Bin 7111 -> 0 bytes .../vader/images/ui-icons_aaaaaa_256x240.png | Bin 7075 -> 0 bytes .../vader/images/ui-icons_bbbbbb_256x240.png | Bin 7092 -> 0 bytes .../vader/images/ui-icons_c98000_256x240.png | Bin 4676 -> 0 bytes .../vader/images/ui-icons_cccccc_256x240.png | Bin 7034 -> 0 bytes .../vader/images/ui-icons_cd0a0a_256x240.png | Bin 4676 -> 0 bytes .../vader/images/ui-icons_f29a00_256x240.png | Bin 4676 -> 0 bytes .../jquery-ui/themes/vader/jquery-ui.css | 1311 -- .../jquery-ui/themes/vader/jquery-ui.min.css | 7 - .../jquery-ui/themes/vader/theme.css | 443 - bower_components/jquery-ui/ui/.jshintrc | 24 - bower_components/jquery-ui/ui/core.js | 21 - bower_components/jquery-ui/ui/data.js | 39 - .../jquery-ui/ui/disable-selection.js | 46 - bower_components/jquery-ui/ui/effect.js | 1635 -- .../jquery-ui/ui/effects/effect-blind.js | 70 - .../jquery-ui/ui/effects/effect-bounce.js | 110 - .../jquery-ui/ui/effects/effect-clip.js | 65 - .../jquery-ui/ui/effects/effect-drop.js | 69 - .../jquery-ui/ui/effects/effect-explode.js | 111 - .../jquery-ui/ui/effects/effect-fade.js | 47 - .../jquery-ui/ui/effects/effect-fold.js | 89 - .../jquery-ui/ui/effects/effect-highlight.js | 57 - .../jquery-ui/ui/effects/effect-puff.js | 42 - .../jquery-ui/ui/effects/effect-pulsate.js | 64 - .../jquery-ui/ui/effects/effect-scale.js | 56 - .../jquery-ui/ui/effects/effect-shake.js | 74 - .../jquery-ui/ui/effects/effect-size.js | 191 - .../jquery-ui/ui/effects/effect-slide.js | 76 - .../jquery-ui/ui/effects/effect-transfer.js | 40 - .../jquery-ui/ui/escape-selector.js | 21 - bower_components/jquery-ui/ui/focusable.js | 84 - .../jquery-ui/ui/form-reset-mixin.js | 77 - bower_components/jquery-ui/ui/form.js | 20 - .../jquery-ui/ui/i18n/datepicker-af.js | 37 - .../jquery-ui/ui/i18n/datepicker-ar-DZ.js | 39 - .../jquery-ui/ui/i18n/datepicker-ar.js | 39 - .../jquery-ui/ui/i18n/datepicker-az.js | 37 - .../jquery-ui/ui/i18n/datepicker-be.js | 37 - .../jquery-ui/ui/i18n/datepicker-bg.js | 38 - .../jquery-ui/ui/i18n/datepicker-bs.js | 37 - .../jquery-ui/ui/i18n/datepicker-ca.js | 37 - .../jquery-ui/ui/i18n/datepicker-cs.js | 37 - .../jquery-ui/ui/i18n/datepicker-cy-GB.js | 45 - .../jquery-ui/ui/i18n/datepicker-da.js | 37 - .../jquery-ui/ui/i18n/datepicker-de.js | 37 - .../jquery-ui/ui/i18n/datepicker-el.js | 37 - .../jquery-ui/ui/i18n/datepicker-en-AU.js | 37 - .../jquery-ui/ui/i18n/datepicker-en-GB.js | 37 - .../jquery-ui/ui/i18n/datepicker-en-NZ.js | 37 - .../jquery-ui/ui/i18n/datepicker-eo.js | 37 - .../jquery-ui/ui/i18n/datepicker-es.js | 37 - .../jquery-ui/ui/i18n/datepicker-et.js | 45 - .../jquery-ui/ui/i18n/datepicker-eu.js | 36 - .../jquery-ui/ui/i18n/datepicker-fa.js | 73 - .../jquery-ui/ui/i18n/datepicker-fi.js | 37 - .../jquery-ui/ui/i18n/datepicker-fo.js | 45 - .../jquery-ui/ui/i18n/datepicker-fr-CA.js | 37 - .../jquery-ui/ui/i18n/datepicker-fr-CH.js | 37 - .../jquery-ui/ui/i18n/datepicker-fr.js | 39 - .../jquery-ui/ui/i18n/datepicker-gl.js | 37 - .../jquery-ui/ui/i18n/datepicker-he.js | 37 - .../jquery-ui/ui/i18n/datepicker-hi.js | 37 - .../jquery-ui/ui/i18n/datepicker-hr.js | 37 - .../jquery-ui/ui/i18n/datepicker-hu.js | 36 - .../jquery-ui/ui/i18n/datepicker-hy.js | 37 - .../jquery-ui/ui/i18n/datepicker-id.js | 37 - .../jquery-ui/ui/i18n/datepicker-is.js | 45 - .../jquery-ui/ui/i18n/datepicker-it-CH.js | 37 - .../jquery-ui/ui/i18n/datepicker-it.js | 37 - .../jquery-ui/ui/i18n/datepicker-ja.js | 37 - .../jquery-ui/ui/i18n/datepicker-ka.js | 48 - .../jquery-ui/ui/i18n/datepicker-kk.js | 37 - .../jquery-ui/ui/i18n/datepicker-km.js | 37 - .../jquery-ui/ui/i18n/datepicker-ko.js | 37 - .../jquery-ui/ui/i18n/datepicker-ky.js | 38 - .../jquery-ui/ui/i18n/datepicker-lb.js | 45 - .../jquery-ui/ui/i18n/datepicker-lt.js | 45 - .../jquery-ui/ui/i18n/datepicker-lv.js | 45 - .../jquery-ui/ui/i18n/datepicker-mk.js | 37 - .../jquery-ui/ui/i18n/datepicker-ml.js | 37 - .../jquery-ui/ui/i18n/datepicker-ms.js | 37 - .../jquery-ui/ui/i18n/datepicker-nb.js | 49 - .../jquery-ui/ui/i18n/datepicker-nl-BE.js | 37 - .../jquery-ui/ui/i18n/datepicker-nl.js | 37 - .../jquery-ui/ui/i18n/datepicker-nn.js | 49 - .../jquery-ui/ui/i18n/datepicker-no.js | 50 - .../jquery-ui/ui/i18n/datepicker-pl.js | 37 - .../jquery-ui/ui/i18n/datepicker-pt-BR.js | 45 - .../jquery-ui/ui/i18n/datepicker-pt.js | 44 - .../jquery-ui/ui/i18n/datepicker-rm.js | 61 - .../jquery-ui/ui/i18n/datepicker-ro.js | 40 - .../jquery-ui/ui/i18n/datepicker-ru.js | 37 - .../jquery-ui/ui/i18n/datepicker-sk.js | 37 - .../jquery-ui/ui/i18n/datepicker-sl.js | 38 - .../jquery-ui/ui/i18n/datepicker-sq.js | 37 - .../jquery-ui/ui/i18n/datepicker-sr-SR.js | 37 - .../jquery-ui/ui/i18n/datepicker-sr.js | 37 - .../jquery-ui/ui/i18n/datepicker-sv.js | 37 - .../jquery-ui/ui/i18n/datepicker-ta.js | 53 - .../jquery-ui/ui/i18n/datepicker-th.js | 37 - .../jquery-ui/ui/i18n/datepicker-tj.js | 37 - .../jquery-ui/ui/i18n/datepicker-tr.js | 37 - .../jquery-ui/ui/i18n/datepicker-uk.js | 38 - .../jquery-ui/ui/i18n/datepicker-vi.js | 37 - .../jquery-ui/ui/i18n/datepicker-zh-CN.js | 37 - .../jquery-ui/ui/i18n/datepicker-zh-HK.js | 37 - .../jquery-ui/ui/i18n/datepicker-zh-TW.js | 37 - bower_components/jquery-ui/ui/ie.js | 15 - bower_components/jquery-ui/ui/jquery-1-7.js | 89 - bower_components/jquery-ui/ui/keycode.js | 45 - bower_components/jquery-ui/ui/labels.js | 62 - .../jquery-ui/ui/minified/core.js | 4 - .../jquery-ui/ui/minified/data.js | 4 - .../ui/minified/disable-selection.js | 4 - .../jquery-ui/ui/minified/effect.js | 4 - .../jquery-ui/ui/minified/escape-selector.js | 4 - .../jquery-ui/ui/minified/focusable.js | 4 - .../jquery-ui/ui/minified/form-reset-mixin.js | 4 - .../jquery-ui/ui/minified/form.js | 4 - .../ui/minified/i18n/datepicker-af.js | 4 - .../ui/minified/i18n/datepicker-ar-DZ.js | 4 - .../ui/minified/i18n/datepicker-ar.js | 4 - .../ui/minified/i18n/datepicker-az.js | 4 - .../ui/minified/i18n/datepicker-be.js | 4 - .../ui/minified/i18n/datepicker-bg.js | 4 - .../ui/minified/i18n/datepicker-bs.js | 4 - .../ui/minified/i18n/datepicker-ca.js | 4 - .../ui/minified/i18n/datepicker-cs.js | 4 - .../ui/minified/i18n/datepicker-cy-GB.js | 4 - .../ui/minified/i18n/datepicker-da.js | 4 - .../ui/minified/i18n/datepicker-de.js | 4 - .../ui/minified/i18n/datepicker-el.js | 4 - .../ui/minified/i18n/datepicker-en-AU.js | 4 - .../ui/minified/i18n/datepicker-en-GB.js | 4 - .../ui/minified/i18n/datepicker-en-NZ.js | 4 - .../ui/minified/i18n/datepicker-eo.js | 4 - .../ui/minified/i18n/datepicker-es.js | 4 - .../ui/minified/i18n/datepicker-et.js | 4 - .../ui/minified/i18n/datepicker-eu.js | 4 - .../ui/minified/i18n/datepicker-fa.js | 4 - .../ui/minified/i18n/datepicker-fi.js | 4 - .../ui/minified/i18n/datepicker-fo.js | 4 - .../ui/minified/i18n/datepicker-fr-CA.js | 4 - .../ui/minified/i18n/datepicker-fr-CH.js | 4 - .../ui/minified/i18n/datepicker-fr.js | 4 - .../ui/minified/i18n/datepicker-gl.js | 4 - .../ui/minified/i18n/datepicker-he.js | 4 - .../ui/minified/i18n/datepicker-hi.js | 4 - .../ui/minified/i18n/datepicker-hr.js | 4 - .../ui/minified/i18n/datepicker-hu.js | 4 - .../ui/minified/i18n/datepicker-hy.js | 4 - .../ui/minified/i18n/datepicker-id.js | 4 - .../ui/minified/i18n/datepicker-is.js | 4 - .../ui/minified/i18n/datepicker-it-CH.js | 4 - .../ui/minified/i18n/datepicker-it.js | 4 - .../ui/minified/i18n/datepicker-ja.js | 4 - .../ui/minified/i18n/datepicker-ka.js | 4 - .../ui/minified/i18n/datepicker-kk.js | 4 - .../ui/minified/i18n/datepicker-km.js | 4 - .../ui/minified/i18n/datepicker-ko.js | 4 - .../ui/minified/i18n/datepicker-ky.js | 4 - .../ui/minified/i18n/datepicker-lb.js | 4 - .../ui/minified/i18n/datepicker-lt.js | 4 - .../ui/minified/i18n/datepicker-lv.js | 4 - .../ui/minified/i18n/datepicker-mk.js | 4 - .../ui/minified/i18n/datepicker-ml.js | 4 - .../ui/minified/i18n/datepicker-ms.js | 4 - .../ui/minified/i18n/datepicker-nb.js | 4 - .../ui/minified/i18n/datepicker-nl-BE.js | 4 - .../ui/minified/i18n/datepicker-nl.js | 4 - .../ui/minified/i18n/datepicker-nn.js | 4 - .../ui/minified/i18n/datepicker-no.js | 4 - .../ui/minified/i18n/datepicker-pl.js | 4 - .../ui/minified/i18n/datepicker-pt-BR.js | 4 - .../ui/minified/i18n/datepicker-pt.js | 4 - .../ui/minified/i18n/datepicker-rm.js | 4 - .../ui/minified/i18n/datepicker-ro.js | 4 - .../ui/minified/i18n/datepicker-ru.js | 4 - .../ui/minified/i18n/datepicker-sk.js | 4 - .../ui/minified/i18n/datepicker-sl.js | 4 - .../ui/minified/i18n/datepicker-sq.js | 4 - .../ui/minified/i18n/datepicker-sr-SR.js | 4 - .../ui/minified/i18n/datepicker-sr.js | 4 - .../ui/minified/i18n/datepicker-sv.js | 4 - .../ui/minified/i18n/datepicker-ta.js | 4 - .../ui/minified/i18n/datepicker-th.js | 4 - .../ui/minified/i18n/datepicker-tj.js | 4 - .../ui/minified/i18n/datepicker-tr.js | 4 - .../ui/minified/i18n/datepicker-uk.js | 4 - .../ui/minified/i18n/datepicker-vi.js | 4 - .../ui/minified/i18n/datepicker-zh-CN.js | 4 - .../ui/minified/i18n/datepicker-zh-HK.js | 4 - .../ui/minified/i18n/datepicker-zh-TW.js | 4 - bower_components/jquery-ui/ui/minified/ie.js | 4 - .../jquery-ui/ui/minified/jquery-1-7.js | 4 - .../jquery-ui/ui/minified/keycode.js | 4 - .../jquery-ui/ui/minified/labels.js | 4 - .../jquery-ui/ui/minified/plugin.js | 4 - .../jquery-ui/ui/minified/position.js | 4 - .../ui/minified/safe-active-element.js | 4 - .../jquery-ui/ui/minified/safe-blur.js | 4 - .../jquery-ui/ui/minified/scroll-parent.js | 4 - .../jquery-ui/ui/minified/tabbable.js | 4 - .../jquery-ui/ui/minified/unique-id.js | 4 - .../jquery-ui/ui/minified/version.js | 4 - .../jquery-ui/ui/minified/widget.js | 4 - bower_components/jquery-ui/ui/plugin.js | 44 - bower_components/jquery-ui/ui/position.js | 498 - .../jquery-ui/ui/safe-active-element.js | 40 - bower_components/jquery-ui/ui/safe-blur.js | 21 - .../jquery-ui/ui/scroll-parent.js | 45 - bower_components/jquery-ui/ui/tabbable.js | 35 - bower_components/jquery-ui/ui/unique-id.js | 49 - bower_components/jquery-ui/ui/version.js | 17 - bower_components/jquery-ui/ui/widget.js | 733 - .../jquery-ui/ui/widgets/accordion.js | 613 - .../jquery-ui/ui/widgets/autocomplete.js | 682 - .../jquery-ui/ui/widgets/button.js | 386 - .../jquery-ui/ui/widgets/checkboxradio.js | 286 - .../jquery-ui/ui/widgets/controlgroup.js | 298 - .../jquery-ui/ui/widgets/datepicker.js | 2120 -- .../jquery-ui/ui/widgets/dialog.js | 940 - .../jquery-ui/ui/widgets/draggable.js | 1250 -- .../jquery-ui/ui/widgets/droppable.js | 497 - bower_components/jquery-ui/ui/widgets/menu.js | 673 - .../jquery-ui/ui/widgets/mouse.js | 226 - .../jquery-ui/ui/widgets/progressbar.js | 178 - .../jquery-ui/ui/widgets/resizable.js | 1201 - .../jquery-ui/ui/widgets/selectable.js | 310 - .../jquery-ui/ui/widgets/selectmenu.js | 687 - .../jquery-ui/ui/widgets/slider.js | 752 - .../jquery-ui/ui/widgets/sortable.js | 1554 -- .../jquery-ui/ui/widgets/spinner.js | 575 - bower_components/jquery-ui/ui/widgets/tabs.js | 924 - .../jquery-ui/ui/widgets/tooltip.js | 520 - .../jquery.iframe-transport/.bower.json | 38 - .../jquery.iframe-transport/LICENSE | 21 - .../jquery.iframe-transport/README.md | 19 - .../jquery.iframe-transport/bower.json | 28 - .../jquery.iframe-transport/demo/client.js | 45 - .../jquery.iframe-transport/demo/index.html | 50 - .../jquery.iframe-transport/demo/layout.css | 1 - .../jquery.iframe-transport/demo/spinner.gif | Bin 1849 -> 0 bytes .../jquery.iframe-transport.js | 247 - .../jquery.iframe-transport/package.json | 28 - bower_components/jquery/.bower.json | 25 - bower_components/jquery/AUTHORS.txt | 295 - bower_components/jquery/LICENSE.txt | 36 - bower_components/jquery/README.md | 65 - bower_components/jquery/bower.json | 14 - bower_components/jquery/dist/core.js | 482 - bower_components/jquery/dist/jquery.js | 10220 --------- bower_components/jquery/dist/jquery.min.js | 4 - bower_components/jquery/dist/jquery.min.map | 1 - bower_components/jquery/dist/jquery.slim.js | 8107 ------- .../jquery/dist/jquery.slim.min.js | 4 - .../jquery/dist/jquery.slim.min.map | 1 - .../jquery/external/sizzle/LICENSE.txt | 36 - .../jquery/external/sizzle/dist/sizzle.js | 2272 -- .../jquery/external/sizzle/dist/sizzle.min.js | 3 - .../external/sizzle/dist/sizzle.min.map | 1 - bower_components/jquery/src/.eslintrc.json | 18 - bower_components/jquery/src/ajax.js | 855 - bower_components/jquery/src/ajax/jsonp.js | 102 - bower_components/jquery/src/ajax/load.js | 76 - bower_components/jquery/src/ajax/parseXML.js | 30 - bower_components/jquery/src/ajax/script.js | 77 - .../jquery/src/ajax/var/location.js | 5 - bower_components/jquery/src/ajax/var/nonce.js | 7 - .../jquery/src/ajax/var/rquery.js | 5 - bower_components/jquery/src/ajax/xhr.js | 169 - bower_components/jquery/src/attributes.js | 13 - .../jquery/src/attributes/attr.js | 140 - .../jquery/src/attributes/classes.js | 174 - .../jquery/src/attributes/prop.js | 143 - .../jquery/src/attributes/support.js | 33 - bower_components/jquery/src/attributes/val.js | 188 - bower_components/jquery/src/callbacks.js | 234 - bower_components/jquery/src/core.js | 482 - bower_components/jquery/src/core/DOMEval.js | 16 - bower_components/jquery/src/core/access.js | 70 - bower_components/jquery/src/core/init.js | 127 - bower_components/jquery/src/core/parseHTML.js | 65 - .../jquery/src/core/ready-no-deferred.js | 105 - bower_components/jquery/src/core/ready.js | 95 - .../jquery/src/core/readyException.js | 13 - .../jquery/src/core/stripAndCollapse.js | 14 - bower_components/jquery/src/core/support.js | 20 - .../jquery/src/core/var/rsingleTag.js | 6 - bower_components/jquery/src/css.js | 426 - .../jquery/src/css/addGetHookIf.js | 26 - bower_components/jquery/src/css/adjustCSS.js | 71 - bower_components/jquery/src/css/curCSS.js | 59 - .../jquery/src/css/hiddenVisibleSelectors.js | 15 - bower_components/jquery/src/css/showHide.js | 105 - bower_components/jquery/src/css/support.js | 89 - .../jquery/src/css/var/cssExpand.js | 5 - .../jquery/src/css/var/getStyles.js | 17 - .../jquery/src/css/var/isHiddenWithinTree.js | 34 - .../jquery/src/css/var/rmargin.js | 5 - .../jquery/src/css/var/rnumnonpx.js | 7 - bower_components/jquery/src/css/var/swap.js | 26 - bower_components/jquery/src/data.js | 179 - bower_components/jquery/src/data/Data.js | 161 - .../jquery/src/data/var/acceptData.js | 19 - .../jquery/src/data/var/dataPriv.js | 7 - .../jquery/src/data/var/dataUser.js | 7 - bower_components/jquery/src/deferred.js | 389 - .../jquery/src/deferred/exceptionHook.js | 21 - bower_components/jquery/src/deprecated.js | 30 - bower_components/jquery/src/dimensions.js | 56 - bower_components/jquery/src/effects.js | 693 - bower_components/jquery/src/effects/Tween.js | 123 - .../jquery/src/effects/animatedSelector.js | 15 - bower_components/jquery/src/event.js | 745 - bower_components/jquery/src/event/ajax.js | 22 - bower_components/jquery/src/event/alias.js | 29 - bower_components/jquery/src/event/focusin.js | 55 - bower_components/jquery/src/event/support.js | 11 - bower_components/jquery/src/event/trigger.js | 185 - bower_components/jquery/src/exports/amd.js | 26 - bower_components/jquery/src/exports/global.js | 34 - bower_components/jquery/src/jquery.js | 41 - bower_components/jquery/src/manipulation.js | 486 - .../jquery/src/manipulation/_evalUrl.js | 23 - .../jquery/src/manipulation/buildFragment.js | 104 - .../jquery/src/manipulation/getAll.js | 31 - .../jquery/src/manipulation/setGlobalEval.js | 22 - .../jquery/src/manipulation/support.js | 35 - .../src/manipulation/var/rcheckableType.js | 5 - .../src/manipulation/var/rscriptType.js | 5 - .../jquery/src/manipulation/var/rtagName.js | 5 - .../jquery/src/manipulation/wrapMap.js | 29 - bower_components/jquery/src/offset.js | 232 - bower_components/jquery/src/queue.js | 145 - bower_components/jquery/src/queue/delay.js | 24 - .../jquery/src/selector-native.js | 237 - .../jquery/src/selector-sizzle.js | 19 - bower_components/jquery/src/selector.js | 3 - bower_components/jquery/src/serialize.js | 130 - bower_components/jquery/src/traversing.js | 178 - .../jquery/src/traversing/findFilter.js | 106 - .../jquery/src/traversing/var/dir.js | 22 - .../src/traversing/var/rneedsContext.js | 8 - .../jquery/src/traversing/var/siblings.js | 17 - .../jquery/src/var/ObjectFunctionString.js | 7 - bower_components/jquery/src/var/arr.js | 5 - bower_components/jquery/src/var/class2type.js | 6 - bower_components/jquery/src/var/concat.js | 7 - bower_components/jquery/src/var/document.js | 5 - .../jquery/src/var/documentElement.js | 7 - bower_components/jquery/src/var/fnToString.js | 7 - bower_components/jquery/src/var/getProto.js | 5 - bower_components/jquery/src/var/hasOwn.js | 7 - bower_components/jquery/src/var/indexOf.js | 7 - bower_components/jquery/src/var/pnum.js | 5 - bower_components/jquery/src/var/push.js | 7 - bower_components/jquery/src/var/rcssNum.js | 9 - .../jquery/src/var/rnothtmlwhite.js | 8 - bower_components/jquery/src/var/slice.js | 7 - bower_components/jquery/src/var/support.js | 6 - bower_components/jquery/src/var/toString.js | 7 - bower_components/jquery/src/wrap.js | 77 - bower_components/select2/.bower.json | 24 - bower_components/select2/.editorconfig | 6 - bower_components/select2/.gitignore | 3 - bower_components/select2/.jshintignore | 4 - bower_components/select2/.jshintrc | 25 - bower_components/select2/.travis.yml | 22 - bower_components/select2/CONTRIBUTING.md | 204 - bower_components/select2/Gruntfile.js | 370 - bower_components/select2/ISSUE_TEMPLATE.md | 46 - bower_components/select2/LICENSE.md | 21 - .../select2/PULL_REQUEST_TEMPLATE.md | 13 - bower_components/select2/README.md | 121 - bower_components/select2/bower.json | 12 - bower_components/select2/component.json | 19 - bower_components/select2/composer.json | 25 - bower_components/select2/dist/css/select2.css | 484 - .../select2/dist/css/select2.min.css | 1 - bower_components/select2/dist/js/i18n/ar.js | 3 - bower_components/select2/dist/js/i18n/az.js | 3 - bower_components/select2/dist/js/i18n/bg.js | 3 - bower_components/select2/dist/js/i18n/ca.js | 3 - bower_components/select2/dist/js/i18n/cs.js | 3 - bower_components/select2/dist/js/i18n/da.js | 3 - bower_components/select2/dist/js/i18n/de.js | 3 - bower_components/select2/dist/js/i18n/el.js | 3 - bower_components/select2/dist/js/i18n/en.js | 3 - bower_components/select2/dist/js/i18n/es.js | 3 - bower_components/select2/dist/js/i18n/et.js | 3 - bower_components/select2/dist/js/i18n/eu.js | 3 - bower_components/select2/dist/js/i18n/fa.js | 3 - bower_components/select2/dist/js/i18n/fi.js | 3 - bower_components/select2/dist/js/i18n/fr.js | 3 - bower_components/select2/dist/js/i18n/gl.js | 3 - bower_components/select2/dist/js/i18n/he.js | 3 - bower_components/select2/dist/js/i18n/hi.js | 3 - bower_components/select2/dist/js/i18n/hr.js | 3 - bower_components/select2/dist/js/i18n/hu.js | 3 - bower_components/select2/dist/js/i18n/id.js | 3 - bower_components/select2/dist/js/i18n/is.js | 3 - bower_components/select2/dist/js/i18n/it.js | 3 - bower_components/select2/dist/js/i18n/ja.js | 3 - bower_components/select2/dist/js/i18n/km.js | 3 - bower_components/select2/dist/js/i18n/ko.js | 3 - bower_components/select2/dist/js/i18n/lt.js | 3 - bower_components/select2/dist/js/i18n/lv.js | 3 - bower_components/select2/dist/js/i18n/mk.js | 3 - bower_components/select2/dist/js/i18n/ms.js | 3 - bower_components/select2/dist/js/i18n/nb.js | 3 - bower_components/select2/dist/js/i18n/nl.js | 3 - bower_components/select2/dist/js/i18n/pl.js | 3 - .../select2/dist/js/i18n/pt-BR.js | 3 - bower_components/select2/dist/js/i18n/pt.js | 3 - bower_components/select2/dist/js/i18n/ro.js | 3 - bower_components/select2/dist/js/i18n/ru.js | 3 - bower_components/select2/dist/js/i18n/sk.js | 3 - .../select2/dist/js/i18n/sr-Cyrl.js | 3 - bower_components/select2/dist/js/i18n/sr.js | 3 - bower_components/select2/dist/js/i18n/sv.js | 3 - bower_components/select2/dist/js/i18n/th.js | 3 - bower_components/select2/dist/js/i18n/tr.js | 3 - bower_components/select2/dist/js/i18n/uk.js | 3 - bower_components/select2/dist/js/i18n/vi.js | 3 - .../select2/dist/js/i18n/zh-CN.js | 3 - .../select2/dist/js/i18n/zh-TW.js | 3 - .../select2/dist/js/select2.full.js | 6436 ------ .../select2/dist/js/select2.full.min.js | 3 - bower_components/select2/dist/js/select2.js | 5725 ----- .../select2/dist/js/select2.min.js | 3 - bower_components/select2/docs/.gitignore | 2 - bower_components/select2/docs/README.md | 38 - .../docs/_includes/examples/basics.html | 97 - .../select2/docs/_includes/examples/data.html | 123 - .../_includes/examples/disabled-mode.html | 43 - .../_includes/examples/disabled-results.html | 29 - .../docs/_includes/examples/hide-search.html | 22 - .../examples/localization-rtl-diacritics.html | 82 - .../docs/_includes/examples/matcher.html | 39 - .../docs/_includes/examples/multiple-max.html | 24 - .../docs/_includes/examples/placeholders.html | 36 - .../examples/programmatic-control.html | 155 - .../select2/docs/_includes/examples/tags.html | 29 - .../themes-templating-responsive-design.html | 104 - .../docs/_includes/examples/tokenizer.html | 32 - .../select2/docs/_includes/footer.html | 20 - .../select2/docs/_includes/ga.html | 9 - .../select2/docs/_includes/head.html | 31 - .../docs/_includes/js-source-states.html | 62 - .../docs/_includes/nav/announcements-4.0.html | 26 - .../select2/docs/_includes/nav/examples.html | 96 - .../docs/_includes/nav/options-old.html | 55 - .../select2/docs/_includes/nav/options.html | 77 - .../select2/docs/_includes/navigation.html | 53 - .../docs/_includes/notice-previous.html | 7 - .../docs/_includes/options-old/adapters.html | 209 - .../options-old/backwards-compatibility.html | 200 - .../_includes/options-old/core-options.html | 790 - .../docs/_includes/options-old/dropdown.html | 308 - .../docs/_includes/options-old/events.html | 50 - .../options-old/setting-default-options.html | 37 - .../docs/_includes/options/compatibility.html | 10 - .../compatibility/initial-selection.html | 50 - .../options/compatibility/introduction.html | 18 - .../options/compatibility/matcher.html | 50 - .../options/compatibility/query-function.html | 50 - .../options/compatibility/text-input.html | 32 - .../select2/docs/_includes/options/core.html | 9 - .../_includes/options/core/amd-support.html | 46 - .../options/core/data-attributes.html | 76 - .../docs/_includes/options/core/options.html | 80 - .../select2/docs/_includes/options/data.html | 9 - .../docs/_includes/options/data/ajax.html | 147 - .../docs/_includes/options/data/array.html | 150 - .../docs/_includes/options/data/select.html | 69 - .../docs/_includes/options/dropdown.html | 10 - .../_includes/options/dropdown/filtering.html | 55 - .../_includes/options/dropdown/placement.html | 39 - .../options/dropdown/selections.html | 29 - .../_includes/options/dropdown/tagging.html | 89 - .../docs/_includes/options/events.html | 8 - .../_includes/options/events/internal.html | 9 - .../docs/_includes/options/events/jquery.html | 101 - .../docs/_includes/options/introduction.html | 9 - .../docs/_includes/options/not-written.html | 3 - .../docs/_includes/options/selections.html | 10 - .../selections/clearing-selections.html | 34 - .../options/selections/multiple.html | 17 - .../options/selections/placeholder.html | 84 - .../options/selections/templating.html | 37 - .../docs/_includes/social-buttons.html | 10 - .../select2/docs/_layouts/default.html | 57 - .../select2/docs/_layouts/home.html | 23 - .../select2/docs/_sass/_alert.scss | 47 - .../select2/docs/_sass/_anchorjs.scss | 27 - .../select2/docs/_sass/_buttons.scss | 20 - .../select2/docs/_sass/_code.scss | 16 - .../select2/docs/_sass/_dl-panels.scss | 24 - .../select2/docs/_sass/_examples.scss | 91 - .../select2/docs/_sass/_featurette.scss | 16 - .../select2/docs/_sass/_footer.scss | 42 - .../select2/docs/_sass/_hamburger.scss | 49 - .../select2/docs/_sass/_home.scss | 31 - .../select2/docs/_sass/_jumbotron.scss | 24 - .../select2/docs/_sass/_layout.scss | 14 - bower_components/select2/docs/_sass/_nav.scss | 59 - .../select2/docs/_sass/_prettify.scss | 50 - .../docs/_sass/_result-repository.scss | 62 - .../select2/docs/_sass/_sidenav.scss | 152 - .../select2/docs/_sass/_social.scss | 35 - .../docs/_sass/_syntax-highlighting.scss | 117 - .../select2/docs/_sass/_typography.scss | 6 - .../docs/_sass/vendor/bootstrap/_alerts.scss | 73 - .../docs/_sass/vendor/bootstrap/_badges.scss | 68 - .../_sass/vendor/bootstrap/_breadcrumbs.scss | 28 - .../vendor/bootstrap/_button-groups.scss | 244 - .../docs/_sass/vendor/bootstrap/_buttons.scss | 168 - .../_sass/vendor/bootstrap/_carousel.scss | 270 - .../docs/_sass/vendor/bootstrap/_close.scss | 36 - .../docs/_sass/vendor/bootstrap/_code.scss | 69 - .../bootstrap/_component-animations.scss | 37 - .../_sass/vendor/bootstrap/_dropdowns.scss | 216 - .../docs/_sass/vendor/bootstrap/_forms.scss | 617 - .../_sass/vendor/bootstrap/_glyphicons.scss | 307 - .../docs/_sass/vendor/bootstrap/_grid.scss | 84 - .../_sass/vendor/bootstrap/_input-groups.scss | 171 - .../_sass/vendor/bootstrap/_jumbotron.scss | 54 - .../docs/_sass/vendor/bootstrap/_labels.scss | 66 - .../_sass/vendor/bootstrap/_list-group.scss | 130 - .../docs/_sass/vendor/bootstrap/_media.scss | 66 - .../docs/_sass/vendor/bootstrap/_mixins.scss | 40 - .../docs/_sass/vendor/bootstrap/_modals.scss | 150 - .../docs/_sass/vendor/bootstrap/_navbar.scss | 662 - .../docs/_sass/vendor/bootstrap/_navs.scss | 242 - .../_sass/vendor/bootstrap/_normalize.scss | 424 - .../docs/_sass/vendor/bootstrap/_pager.scss | 54 - .../_sass/vendor/bootstrap/_pagination.scss | 89 - .../docs/_sass/vendor/bootstrap/_panels.scss | 271 - .../_sass/vendor/bootstrap/_popovers.scss | 131 - .../docs/_sass/vendor/bootstrap/_print.scss | 101 - .../vendor/bootstrap/_progress-bars.scss | 87 - .../vendor/bootstrap/_responsive-embed.scss | 35 - .../bootstrap/_responsive-utilities.scss | 179 - .../_sass/vendor/bootstrap/_scaffolding.scss | 161 - .../docs/_sass/vendor/bootstrap/_tables.scss | 234 - .../docs/_sass/vendor/bootstrap/_theme.scss | 291 - .../_sass/vendor/bootstrap/_thumbnails.scss | 38 - .../docs/_sass/vendor/bootstrap/_tooltip.scss | 101 - .../docs/_sass/vendor/bootstrap/_type.scss | 298 - .../_sass/vendor/bootstrap/_utilities.scss | 55 - .../_sass/vendor/bootstrap/_variables.scss | 874 - .../docs/_sass/vendor/bootstrap/_wells.scss | 29 - .../vendor/bootstrap/mixins/_alerts.scss | 14 - .../bootstrap/mixins/_background-variant.scss | 12 - .../bootstrap/mixins/_border-radius.scss | 18 - .../vendor/bootstrap/mixins/_buttons.scss | 65 - .../bootstrap/mixins/_center-block.scss | 7 - .../vendor/bootstrap/mixins/_clearfix.scss | 22 - .../_sass/vendor/bootstrap/mixins/_forms.scss | 88 - .../vendor/bootstrap/mixins/_gradients.scss | 58 - .../bootstrap/mixins/_grid-framework.scss | 81 - .../_sass/vendor/bootstrap/mixins/_grid.scss | 122 - .../vendor/bootstrap/mixins/_hide-text.scss | 21 - .../_sass/vendor/bootstrap/mixins/_image.scss | 33 - .../vendor/bootstrap/mixins/_labels.scss | 12 - .../vendor/bootstrap/mixins/_list-group.scss | 32 - .../vendor/bootstrap/mixins/_nav-divider.scss | 10 - .../bootstrap/mixins/_nav-vertical-align.scss | 9 - .../vendor/bootstrap/mixins/_opacity.scss | 8 - .../vendor/bootstrap/mixins/_pagination.scss | 24 - .../vendor/bootstrap/mixins/_panels.scss | 24 - .../bootstrap/mixins/_progress-bar.scss | 10 - .../bootstrap/mixins/_reset-filter.scss | 8 - .../vendor/bootstrap/mixins/_reset-text.scss | 18 - .../vendor/bootstrap/mixins/_resize.scss | 6 - .../mixins/_responsive-visibility.scss | 21 - .../_sass/vendor/bootstrap/mixins/_size.scss | 10 - .../vendor/bootstrap/mixins/_tab-focus.scss | 9 - .../vendor/bootstrap/mixins/_table-row.scss | 28 - .../bootstrap/mixins/_text-emphasis.scss | 12 - .../bootstrap/mixins/_text-overflow.scss | 8 - .../bootstrap/mixins/_vendor-prefixes.scss | 222 - .../_sass/vendor/font-awesome/_animated.scss | 34 - .../vendor/font-awesome/_bordered-pulled.scss | 25 - .../docs/_sass/vendor/font-awesome/_core.scss | 12 - .../vendor/font-awesome/_fixed-width.scss | 6 - .../_sass/vendor/font-awesome/_icons.scss | 697 - .../_sass/vendor/font-awesome/_larger.scss | 13 - .../docs/_sass/vendor/font-awesome/_list.scss | 19 - .../_sass/vendor/font-awesome/_mixins.scss | 26 - .../docs/_sass/vendor/font-awesome/_path.scss | 15 - .../vendor/font-awesome/_rotated-flipped.scss | 20 - .../_sass/vendor/font-awesome/_stacked.scss | 20 - .../_sass/vendor/font-awesome/_variables.scss | 708 - .../select2/docs/announcements-4.0.html | 752 - .../select2/docs/browserconfig.xml | 11 - bower_components/select2/docs/community.html | 154 - .../select2/docs/css/bootstrap.scss | 51 - .../select2/docs/css/font-awesome.scss | 16 - .../select2/docs/css/s2-docs.scss | 24 - bower_components/select2/docs/dist/.gitkeep | 0 bower_components/select2/docs/examples.html | 256 - .../docs/images/android-chrome-36x36.png | Bin 916 -> 0 bytes .../docs/images/android-chrome-48x48.png | Bin 1109 -> 0 bytes .../docs/images/android-chrome-72x72.png | Bin 1533 -> 0 bytes .../docs/images/apple-touch-icon-57x57.png | Bin 1894 -> 0 bytes .../docs/images/apple-touch-icon-60x60.png | Bin 1952 -> 0 bytes .../docs/images/apple-touch-icon-72x72.png | Bin 1626 -> 0 bytes .../images/apple-touch-icon-precomposed.png | Bin 1586 -> 0 bytes .../select2/docs/images/apple-touch-icon.png | Bin 1626 -> 0 bytes .../select2/docs/images/favicon-16x16.png | Bin 655 -> 0 bytes .../select2/docs/images/favicon-32x32.png | Bin 1155 -> 0 bytes .../select2/docs/images/favicon.ico | Bin 15086 -> 0 bytes bower_components/select2/docs/images/logo.png | Bin 2501 -> 0 bytes .../select2/docs/images/manifest.json | 23 - .../select2/docs/images/mstile-150x150.png | Bin 1394 -> 0 bytes .../select2/docs/images/mstile-310x150.png | Bin 1281 -> 0 bytes .../select2/docs/images/mstile-70x70.png | Bin 1546 -> 0 bytes .../select2/docs/images/safari-pinned-tab.svg | 17 - bower_components/select2/docs/index.html | 237 - .../select2/docs/options-old.html | 37 - bower_components/select2/docs/options.html | 37 - .../select2/docs/vendor/fonts/FontAwesome.otf | Bin 109688 -> 0 bytes .../docs/vendor/fonts/fontawesome-webfont.eot | Bin 70807 -> 0 bytes .../docs/vendor/fonts/fontawesome-webfont.svg | 655 - .../docs/vendor/fonts/fontawesome-webfont.ttf | Bin 142072 -> 0 bytes .../vendor/fonts/fontawesome-webfont.woff | Bin 83588 -> 0 bytes .../vendor/fonts/fontawesome-webfont.woff2 | Bin 66624 -> 0 bytes .../select2/docs/vendor/images/flags/ak.png | Bin 2212 -> 0 bytes .../select2/docs/vendor/images/flags/al.png | Bin 2623 -> 0 bytes .../select2/docs/vendor/images/flags/ar.png | Bin 10871 -> 0 bytes .../select2/docs/vendor/images/flags/az.png | Bin 5448 -> 0 bytes .../select2/docs/vendor/images/flags/ca.png | Bin 7159 -> 0 bytes .../select2/docs/vendor/images/flags/co.png | Bin 2593 -> 0 bytes .../select2/docs/vendor/images/flags/ct.png | Bin 9209 -> 0 bytes .../select2/docs/vendor/images/flags/de.png | Bin 7903 -> 0 bytes .../select2/docs/vendor/images/flags/fl.png | Bin 9018 -> 0 bytes .../select2/docs/vendor/images/flags/ga.png | Bin 4765 -> 0 bytes .../select2/docs/vendor/images/flags/hi.png | Bin 3170 -> 0 bytes .../select2/docs/vendor/images/flags/ia.png | Bin 7102 -> 0 bytes .../select2/docs/vendor/images/flags/id.png | Bin 7319 -> 0 bytes .../select2/docs/vendor/images/flags/il.png | Bin 10352 -> 0 bytes .../select2/docs/vendor/images/flags/in.png | Bin 6988 -> 0 bytes .../select2/docs/vendor/images/flags/ks.png | Bin 7758 -> 0 bytes .../select2/docs/vendor/images/flags/ky.png | Bin 10162 -> 0 bytes .../select2/docs/vendor/images/flags/la.png | Bin 11486 -> 0 bytes .../select2/docs/vendor/images/flags/ma.png | Bin 3985 -> 0 bytes .../select2/docs/vendor/images/flags/md.png | Bin 4103 -> 0 bytes .../select2/docs/vendor/images/flags/me.png | Bin 6238 -> 0 bytes .../select2/docs/vendor/images/flags/mi.png | Bin 10471 -> 0 bytes .../select2/docs/vendor/images/flags/mn.png | Bin 7938 -> 0 bytes .../select2/docs/vendor/images/flags/mo.png | Bin 7495 -> 0 bytes .../select2/docs/vendor/images/flags/ms.png | Bin 6088 -> 0 bytes .../select2/docs/vendor/images/flags/mt.png | Bin 7344 -> 0 bytes .../select2/docs/vendor/images/flags/nc.png | Bin 3995 -> 0 bytes .../select2/docs/vendor/images/flags/nd.png | Bin 11795 -> 0 bytes .../select2/docs/vendor/images/flags/ne.png | Bin 13899 -> 0 bytes .../select2/docs/vendor/images/flags/nh.png | Bin 12792 -> 0 bytes .../select2/docs/vendor/images/flags/nj.png | Bin 7098 -> 0 bytes .../select2/docs/vendor/images/flags/nm.png | Bin 1523 -> 0 bytes .../select2/docs/vendor/images/flags/nv.png | Bin 4268 -> 0 bytes .../select2/docs/vendor/images/flags/ny.png | Bin 9732 -> 0 bytes .../select2/docs/vendor/images/flags/oh.png | Bin 7666 -> 0 bytes .../select2/docs/vendor/images/flags/ok.png | Bin 7290 -> 0 bytes .../select2/docs/vendor/images/flags/or.png | Bin 9530 -> 0 bytes .../select2/docs/vendor/images/flags/pa.png | Bin 11193 -> 0 bytes .../select2/docs/vendor/images/flags/ri.png | Bin 6927 -> 0 bytes .../select2/docs/vendor/images/flags/sc.png | Bin 4485 -> 0 bytes .../select2/docs/vendor/images/flags/sd.png | Bin 10252 -> 0 bytes .../select2/docs/vendor/images/flags/tn.png | Bin 4005 -> 0 bytes .../select2/docs/vendor/images/flags/tx.png | Bin 1324 -> 0 bytes .../select2/docs/vendor/images/flags/ut.png | Bin 10674 -> 0 bytes .../select2/docs/vendor/images/flags/va.png | Bin 10138 -> 0 bytes .../select2/docs/vendor/images/flags/vt.png | Bin 6397 -> 0 bytes .../select2/docs/vendor/images/flags/wa.png | Bin 45254 -> 0 bytes .../select2/docs/vendor/images/flags/wi.png | Bin 8539 -> 0 bytes .../select2/docs/vendor/images/flags/wv.png | Bin 45254 -> 0 bytes .../select2/docs/vendor/images/flags/wy.png | Bin 4343 -> 0 bytes .../select2/docs/vendor/js/anchor.min.js | 6 - .../select2/docs/vendor/js/bootstrap.min.js | 6 - .../select2/docs/vendor/js/jquery.min.js | 4 - .../docs/vendor/js/placeholders.jquery.min.js | 2 - .../select2/docs/vendor/js/prettify.min.js | 28 - bower_components/select2/package.json | 66 - bower_components/select2/select2.jquery.json | 32 - bower_components/select2/src/js/banner.end.js | 6 - .../select2/src/js/banner.start.js | 6 - .../select2/src/js/jquery.mousewheel.shim.js | 6 - .../select2/src/js/jquery.select2.js | 57 - .../select2/src/js/jquery.shim.js | 14 - .../src/js/select2/compat/containerCss.js | 56 - .../src/js/select2/compat/dropdownCss.js | 56 - .../src/js/select2/compat/initSelection.js | 42 - .../src/js/select2/compat/inputData.js | 127 - .../select2/src/js/select2/compat/matcher.js | 42 - .../select2/src/js/select2/compat/query.js | 26 - .../select2/src/js/select2/compat/utils.js | 43 - .../select2/src/js/select2/core.js | 612 - .../select2/src/js/select2/data/ajax.js | 109 - .../select2/src/js/select2/data/array.js | 79 - .../select2/src/js/select2/data/base.js | 40 - .../src/js/select2/data/maximumInputLength.js | 31 - .../js/select2/data/maximumSelectionLength.js | 31 - .../src/js/select2/data/minimumInputLength.js | 30 - .../select2/src/js/select2/data/select.js | 285 - .../select2/src/js/select2/data/tags.js | 125 - .../select2/src/js/select2/data/tokenizer.js | 116 - .../select2/src/js/select2/defaults.js | 396 - .../select2/src/js/select2/diacritics.js | 847 - .../select2/src/js/select2/dropdown.js | 42 - .../src/js/select2/dropdown/attachBody.js | 222 - .../js/select2/dropdown/attachContainer.js | 18 - .../src/js/select2/dropdown/closeOnSelect.js | 35 - .../js/select2/dropdown/hidePlaceholder.js | 42 - .../src/js/select2/dropdown/infiniteScroll.js | 89 - .../dropdown/minimumResultsForSearch.js | 39 - .../select2/src/js/select2/dropdown/search.js | 101 - .../src/js/select2/dropdown/selectOnClose.js | 50 - .../js/select2/dropdown/stopPropagation.js | 38 - .../select2/src/js/select2/i18n/ar.js | 36 - .../select2/src/js/select2/i18n/az.js | 27 - .../select2/src/js/select2/i18n/bg.js | 47 - .../select2/src/js/select2/i18n/ca.js | 52 - .../select2/src/js/select2/i18n/cs.js | 61 - .../select2/src/js/select2/i18n/da.js | 40 - .../select2/src/js/select2/i18n/de.js | 37 - .../select2/src/js/select2/i18n/el.js | 52 - .../select2/src/js/select2/i18n/en.js | 44 - .../select2/src/js/select2/i18n/es.js | 52 - .../select2/src/js/select2/i18n/et.js | 53 - .../select2/src/js/select2/i18n/eu.js | 51 - .../select2/src/js/select2/i18n/fa.js | 38 - .../select2/src/js/select2/i18n/fi.js | 27 - .../select2/src/js/select2/i18n/fr.js | 49 - .../select2/src/js/select2/i18n/gl.js | 51 - .../select2/src/js/select2/i18n/he.js | 56 - .../select2/src/js/select2/i18n/hi.js | 39 - .../select2/src/js/select2/i18n/hr.js | 44 - .../select2/src/js/select2/i18n/hu.js | 27 - .../select2/src/js/select2/i18n/id.js | 30 - .../select2/src/js/select2/i18n/is.js | 41 - .../select2/src/js/select2/i18n/it.js | 48 - .../select2/src/js/select2/i18n/ja.js | 36 - .../select2/src/js/select2/i18n/km.js | 36 - .../select2/src/js/select2/i18n/ko.js | 36 - .../select2/src/js/select2/i18n/lt.js | 52 - .../select2/src/js/select2/i18n/lv.js | 51 - .../select2/src/js/select2/i18n/mk.js | 47 - .../select2/src/js/select2/i18n/ms.js | 30 - .../select2/src/js/select2/i18n/nb.js | 38 - .../select2/src/js/select2/i18n/nl.js | 43 - .../select2/src/js/select2/i18n/pl.js | 45 - .../select2/src/js/select2/i18n/pt-BR.js | 46 - .../select2/src/js/select2/i18n/pt.js | 40 - .../select2/src/js/select2/i18n/ro.js | 46 - .../select2/src/js/select2/i18n/ru.js | 58 - .../select2/src/js/select2/i18n/sk.js | 56 - .../select2/src/js/select2/i18n/sr-Cyrl.js | 55 - .../select2/src/js/select2/i18n/sr.js | 55 - .../select2/src/js/select2/i18n/sv.js | 37 - .../select2/src/js/select2/i18n/th.js | 33 - .../select2/src/js/select2/i18n/tr.js | 33 - .../select2/src/js/select2/i18n/uk.js | 43 - .../select2/src/js/select2/i18n/vi.js | 37 - .../select2/src/js/select2/i18n/zh-CN.js | 36 - .../select2/src/js/select2/i18n/zh-TW.js | 33 - .../select2/src/js/select2/keys.js | 25 - .../select2/src/js/select2/options.js | 122 - .../select2/src/js/select2/results.js | 523 - .../src/js/select2/selection/allowClear.js | 97 - .../select2/src/js/select2/selection/base.js | 158 - .../src/js/select2/selection/clickMask.js | 29 - .../src/js/select2/selection/eventRelay.js | 45 - .../src/js/select2/selection/multiple.js | 109 - .../src/js/select2/selection/placeholder.js | 49 - .../src/js/select2/selection/search.js | 222 - .../src/js/select2/selection/single.js | 99 - .../js/select2/selection/stopPropagation.js | 38 - .../select2/src/js/select2/translation.js | 36 - .../select2/src/js/select2/utils.js | 276 - .../select2/src/js/wrapper.end.js | 12 - .../select2/src/js/wrapper.start.js | 23 - .../select2/src/scss/_dropdown.scss | 73 - .../select2/src/scss/_multiple.scss | 35 - .../select2/src/scss/_single.scss | 34 - bower_components/select2/src/scss/core.scss | 48 - .../select2/src/scss/mixins/_gradients.scss | 13 - .../src/scss/theme/classic/_defaults.scss | 34 - .../src/scss/theme/classic/_multiple.scss | 93 - .../src/scss/theme/classic/_single.scss | 124 - .../src/scss/theme/classic/layout.scss | 64 - .../src/scss/theme/default/_multiple.scss | 98 - .../src/scss/theme/default/_single.scss | 83 - .../src/scss/theme/default/layout.scss | 97 - .../select2/tests/a11y/search-tests.js | 51 - .../select2/tests/a11y/selection-tests.js | 154 - .../select2/tests/data/array-tests.js | 318 - .../select2/tests/data/base-tests.js | 29 - .../select2/tests/data/inputData-tests.js | 158 - .../tests/data/maximumInputLength-tests.js | 138 - .../data/maximumSelectionLength-tests.js | 202 - .../tests/data/minimumInputLength-tests.js | 138 - .../select2/tests/data/select-tests.js | 457 - .../select2/tests/data/tags-tests.js | 261 - .../select2/tests/data/tokenizer-tests.js | 219 - .../tests/dropdown/dropdownCss-tests.js | 104 - .../tests/dropdown/positioning-tests.js | 177 - .../tests/dropdown/selectOnClose-tests.js | 137 - .../tests/dropdown/stopPropagation-tests.js | 33 - bower_components/select2/tests/helpers.js | 46 - .../select2/tests/integration.html | 21 - .../select2/tests/integration/dom-changes.js | 257 - .../select2/tests/integration/jquery-calls.js | 30 - .../tests/integration/select2-methods.js | 139 - .../select2/tests/options/ajax-tests.js | 32 - .../select2/tests/options/data-tests.js | 44 - .../select2/tests/options/deprecated-tests.js | 250 - .../tests/options/translation-tests.js | 28 - .../select2/tests/options/width-tests.js | 66 - .../select2/tests/results/focusing-tests.js | 138 - .../tests/selection/allowClear-tests.js | 218 - .../tests/selection/containerCss-tests.js | 104 - .../select2/tests/selection/multiple-tests.js | 149 - .../tests/selection/placeholder-tests.js | 74 - .../select2/tests/selection/search-tests.js | 191 - .../select2/tests/selection/single-tests.js | 117 - .../tests/selection/stopPropagation-tests.js | 33 - bower_components/select2/tests/unit.html | 95 - .../select2/tests/utils/decorator-tests.js | 189 - .../select2/tests/utils/escapeMarkup-tests.js | 36 - .../select2/tests/vendor/jquery-1.7.2.js | 9404 -------- .../select2/tests/vendor/qunit-1.23.1.css | 305 - .../select2/tests/vendor/qunit-1.23.1.js | 4334 ---- .../select2/vendor/jquery-2.1.0.js | 9111 -------- bower_components/tether/.bower.json | 35 - bower_components/tether/CHANGELOG.md | 13 - bower_components/tether/CONTRIBUTING.md | 59 - bower_components/tether/LICENSE | 8 - bower_components/tether/README.md | 106 - bower_components/tether/bower.json | 26 - bower_components/tether/component.json | 22 - .../dist/css/tether-theme-arrows-dark.css | 150 - .../dist/css/tether-theme-arrows-dark.min.css | 1 - .../tether/dist/css/tether-theme-arrows.css | 154 - .../dist/css/tether-theme-arrows.min.css | 1 - .../tether/dist/css/tether-theme-basic.css | 21 - .../dist/css/tether-theme-basic.min.css | 1 - bower_components/tether/dist/css/tether.css | 8 - .../tether/dist/css/tether.min.css | 1 - bower_components/tether/dist/js/tether.js | 1811 -- bower_components/tether/dist/js/tether.min.js | 1 - .../1-Overview/1-why_you_should_use_tether.md | 43 - .../tether/docs/1-Overview/2-repositioning.md | 46 - .../1-Overview/3-why_we_dont_support_IE_8.md | 47 - .../docs/2-Examples/1-list_of_examples.md | 27 - .../2-Examples/2-projects_using_tether.md | 37 - .../docs/3-Advanced/1-embedding_tether.md | 9 - .../docs/3-Advanced/2-extending_tether.md | 54 - .../tether/docs/coffee/intro.coffee | 113 - bower_components/tether/docs/css/intro.css | 218 - bower_components/tether/docs/intro.md | 591 - bower_components/tether/docs/js/intro.js | 117 - .../tether/docs/js/markAttachment.js | 51 - bower_components/tether/docs/sass/intro.sass | 233 - .../tether/docs/welcome/browser-demo.html | 76 - .../tether/docs/welcome/coffee/welcome.coffee | 212 - .../tether/docs/welcome/css/browser-demo.css | 86 - .../tether/docs/welcome/css/prism.css | 2 - .../tether/docs/welcome/css/welcome.css | 247 - .../tether/docs/welcome/index.html | 226 - .../tether/docs/welcome/js/drop.js | 239 - .../tether/docs/welcome/js/jquery.js | 9597 -------- .../tether/docs/welcome/js/log.js | 134 - .../tether/docs/welcome/js/tether-v0.1.3.js | 2 - .../tether/docs/welcome/js/welcome.js | 193 - .../docs/welcome/sass/_inline-block.sass | 6 - .../docs/welcome/sass/browser-demo.sass | 93 - .../tether/docs/welcome/sass/welcome.sass | 285 - .../tether/examples/chosen/chosen-sprite.png | Bin 646 -> 0 bytes .../examples/chosen/chosen-sprite@2x.png | Bin 738 -> 0 bytes .../tether/examples/chosen/chosen.css | 430 - .../tether/examples/chosen/chosen.js | 1166 - .../tether/examples/chosen/index.html | 110 - .../tether/examples/common/css/style.css | 48 - .../examples/content-visible/index.html | 64 - .../tether/examples/dolls/dolls.css | 18 - .../tether/examples/dolls/dolls.js | 83 - .../tether/examples/dolls/index.html | 7 - .../tether/examples/element-scroll/index.html | 499 - .../tether/examples/enable-disable/index.html | 37 - .../tether/examples/facebook/facebook.css | 86 - .../tether/examples/facebook/index.html | 209 - .../tether/examples/out-of-bounds/index.html | 38 - .../tether/examples/pin/index.html | 30 - .../tether/examples/resources/css/base.css | 10 - .../tether/examples/resources/js/jquery.js | 9597 -------- .../tether/examples/resources/js/log.js | 134 - .../tether/examples/scroll/index.html | 922 - .../tether/examples/simple/index.html | 30 - .../tether/examples/testbed/index.html | 36 - .../tether/examples/tooltip/index.html | 86 - .../tether/examples/viewport/colors.css | 145 - .../tether/examples/viewport/index.html | 70 - bower_components/tether/gulpfile.js | 96 - bower_components/tether/package.json | 40 - .../src/css/helpers/_tether-theme-arrows.sass | 192 - .../src/css/helpers/_tether-theme-basic.sass | 14 - .../tether/src/css/helpers/_tether.sass | 12 - .../tether/src/css/mixins/_inline-block.sass | 6 - .../tether/src/css/mixins/_pie-clearfix.sass | 7 - .../src/css/tether-theme-arrows-dark.sass | 12 - .../tether/src/css/tether-theme-arrows.sass | 12 - .../tether/src/css/tether-theme-basic.sass | 10 - bower_components/tether/src/css/tether.sass | 5 - bower_components/tether/src/js/abutment.js | 61 - bower_components/tether/src/js/constraint.js | 366 - .../tether/src/js/markAttachment.js | 46 - bower_components/tether/src/js/shift.js | 32 - bower_components/tether/src/js/tether.js | 809 - bower_components/tether/src/js/utils.js | 370 - 2523 files changed, 431006 deletions(-) delete mode 100644 bower_components/blueimp-canvas-to-blob/.bower.json delete mode 100644 bower_components/blueimp-canvas-to-blob/.gitignore delete mode 100644 bower_components/blueimp-canvas-to-blob/.npmignore delete mode 100644 bower_components/blueimp-canvas-to-blob/.travis.yml delete mode 100644 bower_components/blueimp-canvas-to-blob/README.md delete mode 100644 bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.js delete mode 100644 bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.min.js delete mode 100644 bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.min.js.map delete mode 100644 bower_components/blueimp-canvas-to-blob/package.json delete mode 100644 bower_components/blueimp-canvas-to-blob/test/index.html delete mode 100644 bower_components/blueimp-canvas-to-blob/test/test.js delete mode 100644 bower_components/blueimp-canvas-to-blob/test/vendor/chai.js delete mode 100644 bower_components/blueimp-canvas-to-blob/test/vendor/load-image.js delete mode 100644 bower_components/blueimp-canvas-to-blob/test/vendor/mocha.css delete mode 100644 bower_components/blueimp-canvas-to-blob/test/vendor/mocha.js delete mode 100644 bower_components/blueimp-file-upload/.bower.json delete mode 100644 bower_components/blueimp-file-upload/bower.json delete mode 100644 bower_components/blueimp-file-upload/css/jquery.fileupload-noscript.css delete mode 100644 bower_components/blueimp-file-upload/css/jquery.fileupload-ui-noscript.css delete mode 100644 bower_components/blueimp-file-upload/css/jquery.fileupload-ui.css delete mode 100644 bower_components/blueimp-file-upload/css/jquery.fileupload.css delete mode 100644 bower_components/blueimp-file-upload/img/loading.gif delete mode 100644 bower_components/blueimp-file-upload/img/progressbar.gif delete mode 100644 bower_components/blueimp-file-upload/js/cors/jquery.postmessage-transport.js delete mode 100644 bower_components/blueimp-file-upload/js/cors/jquery.xdr-transport.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload-angular.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload-audio.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload-image.js delete mode 100755 bower_components/blueimp-file-upload/js/jquery.fileupload-jquery-ui.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload-process.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload-ui.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload-validate.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload-video.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.fileupload.js delete mode 100644 bower_components/blueimp-file-upload/js/jquery.iframe-transport.js delete mode 100644 bower_components/blueimp-file-upload/js/vendor/jquery.ui.widget.js delete mode 100644 bower_components/blueimp-load-image/.bower.json delete mode 100644 bower_components/blueimp-load-image/.gitignore delete mode 100644 bower_components/blueimp-load-image/.npmignore delete mode 100644 bower_components/blueimp-load-image/.travis.yml delete mode 100644 bower_components/blueimp-load-image/README.md delete mode 100644 bower_components/blueimp-load-image/css/demo.css delete mode 100755 bower_components/blueimp-load-image/css/vendor/Jcrop.gif delete mode 100755 bower_components/blueimp-load-image/css/vendor/jquery.Jcrop.css delete mode 100644 bower_components/blueimp-load-image/index.html delete mode 100644 bower_components/blueimp-load-image/js/demo/demo.js delete mode 100644 bower_components/blueimp-load-image/js/index.js delete mode 100644 bower_components/blueimp-load-image/js/load-image-exif-map.js delete mode 100644 bower_components/blueimp-load-image/js/load-image-exif.js delete mode 100644 bower_components/blueimp-load-image/js/load-image-meta.js delete mode 100644 bower_components/blueimp-load-image/js/load-image-orientation.js delete mode 100644 bower_components/blueimp-load-image/js/load-image.all.min.js delete mode 100644 bower_components/blueimp-load-image/js/load-image.all.min.js.map delete mode 100644 bower_components/blueimp-load-image/js/load-image.js delete mode 100755 bower_components/blueimp-load-image/js/vendor/jquery.Jcrop.js delete mode 100644 bower_components/blueimp-load-image/js/vendor/jquery.js delete mode 100644 bower_components/blueimp-load-image/package.json delete mode 100644 bower_components/blueimp-load-image/test/index.html delete mode 100644 bower_components/blueimp-load-image/test/test.js delete mode 100644 bower_components/blueimp-load-image/test/vendor/canvas-to-blob.js delete mode 100644 bower_components/blueimp-load-image/test/vendor/chai.js delete mode 100644 bower_components/blueimp-load-image/test/vendor/mocha.css delete mode 100644 bower_components/blueimp-load-image/test/vendor/mocha.js delete mode 100644 bower_components/blueimp-tmpl/.bower.json delete mode 100644 bower_components/blueimp-tmpl/.gitignore delete mode 100644 bower_components/blueimp-tmpl/.npmignore delete mode 100644 bower_components/blueimp-tmpl/.travis.yml delete mode 100644 bower_components/blueimp-tmpl/README.md delete mode 100644 bower_components/blueimp-tmpl/css/demo.css delete mode 100644 bower_components/blueimp-tmpl/index.html delete mode 100755 bower_components/blueimp-tmpl/js/compile.js delete mode 100644 bower_components/blueimp-tmpl/js/demo/demo.js delete mode 100644 bower_components/blueimp-tmpl/js/runtime.js delete mode 100644 bower_components/blueimp-tmpl/js/tmpl.js delete mode 100644 bower_components/blueimp-tmpl/js/tmpl.min.js delete mode 100644 bower_components/blueimp-tmpl/js/tmpl.min.js.map delete mode 100644 bower_components/blueimp-tmpl/package.json delete mode 100644 bower_components/blueimp-tmpl/test/index.html delete mode 100644 bower_components/blueimp-tmpl/test/test.js delete mode 100644 bower_components/blueimp-tmpl/test/vendor/chai.js delete mode 100644 bower_components/blueimp-tmpl/test/vendor/mocha.css delete mode 100644 bower_components/blueimp-tmpl/test/vendor/mocha.js delete mode 100644 bower_components/bootstrap-colorpicker/.bower.json delete mode 100644 bower_components/bootstrap-colorpicker/CONTRIBUTING.md delete mode 100644 bower_components/bootstrap-colorpicker/LICENSE delete mode 100644 bower_components/bootstrap-colorpicker/README.md delete mode 100644 bower_components/bootstrap-colorpicker/bower.json delete mode 100644 bower_components/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.css delete mode 100644 bower_components/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.css.map delete mode 100644 bower_components/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css delete mode 100644 bower_components/bootstrap-colorpicker/dist/css/bootstrap-colorpicker.min.css.map delete mode 100644 bower_components/bootstrap-colorpicker/dist/img/bootstrap-colorpicker/alpha-horizontal.png delete mode 100644 bower_components/bootstrap-colorpicker/dist/img/bootstrap-colorpicker/alpha.png delete mode 100644 bower_components/bootstrap-colorpicker/dist/img/bootstrap-colorpicker/hue-horizontal.png delete mode 100644 bower_components/bootstrap-colorpicker/dist/img/bootstrap-colorpicker/hue.png delete mode 100644 bower_components/bootstrap-colorpicker/dist/img/bootstrap-colorpicker/saturation.png delete mode 100644 bower_components/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.js delete mode 100644 bower_components/bootstrap-colorpicker/dist/js/bootstrap-colorpicker.min.js delete mode 100644 bower_components/bootstrap-colorpicker/docs/assets/main.css delete mode 100644 bower_components/bootstrap-colorpicker/docs/helpers/code/index.js delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/api.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/example.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/01_basic.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/02_component.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/03_component_options.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/04_events.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/05_transparent.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/06_horizontal.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/07_inline.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/08_palette.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/09_size.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/10_disabled.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/examples/11_modal.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/includes/social.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/layout.hbs delete mode 100644 bower_components/bootstrap-colorpicker/docs/pages/index.hbs delete mode 100644 bower_components/bootstrap-colorpicker/serve.js delete mode 100644 bower_components/bootstrap-colorpicker/src/js/colorpicker-color.js delete mode 100644 bower_components/bootstrap-colorpicker/src/js/colorpicker-component.js delete mode 100644 bower_components/bootstrap-colorpicker/src/js/colorpicker-defaults.js delete mode 100644 bower_components/bootstrap-colorpicker/src/js/colorpicker-plugin-wrapper.js delete mode 100644 bower_components/bootstrap-colorpicker/src/less/colorpicker.less delete mode 100644 bower_components/bootstrap-colorpicker/src/sass/_colorpicker.scss delete mode 100644 bower_components/bootstrap-datepicker/.bower.json delete mode 100644 bower_components/bootstrap-datepicker/.editorconfig delete mode 100644 bower_components/bootstrap-datepicker/.gitignore delete mode 100644 bower_components/bootstrap-datepicker/.npmignore delete mode 100644 bower_components/bootstrap-datepicker/.travis.yml delete mode 100644 bower_components/bootstrap-datepicker/CHANGELOG.md delete mode 100644 bower_components/bootstrap-datepicker/CONTRIBUTING.md delete mode 100644 bower_components/bootstrap-datepicker/Gruntfile.js delete mode 100644 bower_components/bootstrap-datepicker/LICENSE delete mode 100644 bower_components/bootstrap-datepicker/README.md delete mode 100644 bower_components/bootstrap-datepicker/bower.json delete mode 100644 bower_components/bootstrap-datepicker/build/build.less delete mode 100644 bower_components/bootstrap-datepicker/build/build3.less delete mode 100644 bower_components/bootstrap-datepicker/build/build_standalone.less delete mode 100644 bower_components/bootstrap-datepicker/build/build_standalone3.less delete mode 100644 bower_components/bootstrap-datepicker/composer.json delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.min.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.standalone.min.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.min.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css delete mode 100644 bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker3.standalone.min.css.map delete mode 100644 bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.js delete mode 100644 bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ar.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.az.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bg.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.bs.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ca.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cs.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.cy.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.da.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.el.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-AU.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.en-GB.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eo.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.es.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.et.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.eu.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fa.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fi.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fo.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr-CH.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.fr.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.gl.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.he.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hr.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hu.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.hy.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.id.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.is.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it-CH.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.it.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ja.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ka.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kh.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kk.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ko.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.kr.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lt.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.lv.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.me.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mk.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.mn.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ms.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nb.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl-BE.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.nl.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.no.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pl.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt-BR.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.pt.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ro.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs-latin.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.rs.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.ru.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sk.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sl.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sq.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr-latin.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sr.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sv.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.sw.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.th.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.tr.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.uk.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.vi.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-CN.min.js delete mode 100644 bower_components/bootstrap-datepicker/dist/locales/bootstrap-datepicker.zh-TW.min.js delete mode 100644 bower_components/bootstrap-datepicker/docs/Makefile delete mode 100644 bower_components/bootstrap-datepicker/docs/README.md delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/demo_head.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/markup_component.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/markup_daterange.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/markup_inline.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/markup_input.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_calendarweeks.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_clearbtn.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_daysofweekdisabled.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_enddate.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_language.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_multidate.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_startdate.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_todaybtn.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_todayhighlight.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/option_weekstart.html delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/script/common.css delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/script/common.js delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/script/debug.js delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/script/html-imports.min.js delete mode 100644 bower_components/bootstrap-datepicker/docs/_screenshots/script/screenshot.js delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/demo_head.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/markup_component.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/markup_daterange.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/markup_inline.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/markup_input.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_calendarweeks.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_clearbtn.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_daysofweekdisabled.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_enddate.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_language.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_multidate.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_startdate.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_todaybtn.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_todayhighlight.png delete mode 100644 bower_components/bootstrap-datepicker/docs/_static/screenshots/option_weekstart.png delete mode 100644 bower_components/bootstrap-datepicker/docs/conf.py delete mode 100644 bower_components/bootstrap-datepicker/docs/events.rst delete mode 100644 bower_components/bootstrap-datepicker/docs/i18n.rst delete mode 100644 bower_components/bootstrap-datepicker/docs/index.rst delete mode 100644 bower_components/bootstrap-datepicker/docs/keyboard.rst delete mode 100644 bower_components/bootstrap-datepicker/docs/make.bat delete mode 100644 bower_components/bootstrap-datepicker/docs/markup.rst delete mode 100644 bower_components/bootstrap-datepicker/docs/methods.rst delete mode 100644 bower_components/bootstrap-datepicker/docs/options.rst delete mode 100644 bower_components/bootstrap-datepicker/docs/requirements.txt delete mode 100644 bower_components/bootstrap-datepicker/grunt/.jshintrc delete mode 100644 bower_components/bootstrap-datepicker/js/.jscsrc delete mode 100644 bower_components/bootstrap-datepicker/js/.jshintrc delete mode 100644 bower_components/bootstrap-datepicker/js/bootstrap-datepicker.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ar.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.az.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bg.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.bs.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ca.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cs.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.cy.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.da.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.de.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.el.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.en-AU.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.en-GB.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.eo.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.es.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.et.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.eu.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fa.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fi.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fo.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr-CH.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.fr.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.gl.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.he.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hr.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hu.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.hy.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.id.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.is.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it-CH.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.it.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ja.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ka.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kh.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kk.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ko.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.kr.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lt.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.lv.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.me.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mk.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.mn.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ms.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nb.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl-BE.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.nl.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.no.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pl.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt-BR.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.pt.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ro.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs-latin.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.rs.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.ru.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sk.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sl.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sq.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr-latin.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sr.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sv.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.sw.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.th.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.tr.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.uk.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.vi.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-CN.js delete mode 100644 bower_components/bootstrap-datepicker/js/locales/bootstrap-datepicker.zh-TW.js delete mode 100644 bower_components/bootstrap-datepicker/less/.csslintrc delete mode 100644 bower_components/bootstrap-datepicker/less/datepicker.less delete mode 100644 bower_components/bootstrap-datepicker/less/datepicker3.less delete mode 100644 bower_components/bootstrap-datepicker/package.json delete mode 100644 bower_components/bootstrap-datepicker/tests/README.md delete mode 100644 bower_components/bootstrap-datepicker/tests/assets/coverage.js delete mode 100644 bower_components/bootstrap-datepicker/tests/assets/jquery-1.7.1.min.js delete mode 100644 bower_components/bootstrap-datepicker/tests/assets/mock.js delete mode 100644 bower_components/bootstrap-datepicker/tests/assets/qunit-logging.js delete mode 100644 bower_components/bootstrap-datepicker/tests/assets/qunit.css delete mode 100644 bower_components/bootstrap-datepicker/tests/assets/qunit.js delete mode 100644 bower_components/bootstrap-datepicker/tests/assets/utils.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/calendar-weeks.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/component.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/data-api.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/events.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/formats.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/inline.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/2011.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/2012.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/keyboard_navigation/all.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/methods.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/methods_jquery.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2011.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/2012.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/mouse_navigation/all.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/noconflict.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/options.js delete mode 100644 bower_components/bootstrap-datepicker/tests/suites/timezone.js delete mode 100644 bower_components/bootstrap-datepicker/tests/tests.html delete mode 100644 bower_components/bootstrap-datepicker/tests/timezone.html delete mode 100644 bower_components/bootstrap-less/.bower.json delete mode 100644 bower_components/bootstrap-less/LICENSE delete mode 100755 bower_components/bootstrap-less/README.md delete mode 100644 bower_components/bootstrap-less/bower.json delete mode 100755 bower_components/bootstrap-less/fonts/glyphicons-halflings-regular.eot delete mode 100755 bower_components/bootstrap-less/fonts/glyphicons-halflings-regular.svg delete mode 100755 bower_components/bootstrap-less/fonts/glyphicons-halflings-regular.ttf delete mode 100755 bower_components/bootstrap-less/fonts/glyphicons-halflings-regular.woff delete mode 100644 bower_components/bootstrap-less/fonts/glyphicons-halflings-regular.woff2 delete mode 100755 bower_components/bootstrap-less/js/affix.js delete mode 100755 bower_components/bootstrap-less/js/alert.js delete mode 100755 bower_components/bootstrap-less/js/button.js delete mode 100755 bower_components/bootstrap-less/js/carousel.js delete mode 100755 bower_components/bootstrap-less/js/collapse.js delete mode 100755 bower_components/bootstrap-less/js/dropdown.js delete mode 100755 bower_components/bootstrap-less/js/modal.js delete mode 100755 bower_components/bootstrap-less/js/popover.js delete mode 100755 bower_components/bootstrap-less/js/scrollspy.js delete mode 100755 bower_components/bootstrap-less/js/tab.js delete mode 100755 bower_components/bootstrap-less/js/tooltip.js delete mode 100755 bower_components/bootstrap-less/js/transition.js delete mode 100755 bower_components/bootstrap-less/less/alerts.less delete mode 100755 bower_components/bootstrap-less/less/badges.less delete mode 100755 bower_components/bootstrap-less/less/bootstrap.less delete mode 100755 bower_components/bootstrap-less/less/breadcrumbs.less delete mode 100755 bower_components/bootstrap-less/less/button-groups.less delete mode 100755 bower_components/bootstrap-less/less/buttons.less delete mode 100755 bower_components/bootstrap-less/less/carousel.less delete mode 100755 bower_components/bootstrap-less/less/close.less delete mode 100755 bower_components/bootstrap-less/less/code.less delete mode 100755 bower_components/bootstrap-less/less/component-animations.less delete mode 100755 bower_components/bootstrap-less/less/dropdowns.less delete mode 100755 bower_components/bootstrap-less/less/forms.less delete mode 100755 bower_components/bootstrap-less/less/glyphicons.less delete mode 100755 bower_components/bootstrap-less/less/grid.less delete mode 100755 bower_components/bootstrap-less/less/input-groups.less delete mode 100755 bower_components/bootstrap-less/less/jumbotron.less delete mode 100755 bower_components/bootstrap-less/less/labels.less delete mode 100755 bower_components/bootstrap-less/less/list-group.less delete mode 100755 bower_components/bootstrap-less/less/media.less delete mode 100755 bower_components/bootstrap-less/less/mixins.less delete mode 100755 bower_components/bootstrap-less/less/mixins/alerts.less delete mode 100755 bower_components/bootstrap-less/less/mixins/background-variant.less delete mode 100755 bower_components/bootstrap-less/less/mixins/border-radius.less delete mode 100755 bower_components/bootstrap-less/less/mixins/buttons.less delete mode 100755 bower_components/bootstrap-less/less/mixins/center-block.less delete mode 100755 bower_components/bootstrap-less/less/mixins/clearfix.less delete mode 100755 bower_components/bootstrap-less/less/mixins/forms.less delete mode 100755 bower_components/bootstrap-less/less/mixins/gradients.less delete mode 100755 bower_components/bootstrap-less/less/mixins/grid-framework.less delete mode 100755 bower_components/bootstrap-less/less/mixins/grid.less delete mode 100755 bower_components/bootstrap-less/less/mixins/hide-text.less delete mode 100755 bower_components/bootstrap-less/less/mixins/image.less delete mode 100755 bower_components/bootstrap-less/less/mixins/labels.less delete mode 100755 bower_components/bootstrap-less/less/mixins/list-group.less delete mode 100755 bower_components/bootstrap-less/less/mixins/nav-divider.less delete mode 100755 bower_components/bootstrap-less/less/mixins/nav-vertical-align.less delete mode 100755 bower_components/bootstrap-less/less/mixins/opacity.less delete mode 100755 bower_components/bootstrap-less/less/mixins/pagination.less delete mode 100755 bower_components/bootstrap-less/less/mixins/panels.less delete mode 100755 bower_components/bootstrap-less/less/mixins/progress-bar.less delete mode 100755 bower_components/bootstrap-less/less/mixins/reset-filter.less delete mode 100755 bower_components/bootstrap-less/less/mixins/resize.less delete mode 100755 bower_components/bootstrap-less/less/mixins/responsive-visibility.less delete mode 100755 bower_components/bootstrap-less/less/mixins/size.less delete mode 100755 bower_components/bootstrap-less/less/mixins/tab-focus.less delete mode 100755 bower_components/bootstrap-less/less/mixins/table-row.less delete mode 100755 bower_components/bootstrap-less/less/mixins/text-emphasis.less delete mode 100755 bower_components/bootstrap-less/less/mixins/text-overflow.less delete mode 100755 bower_components/bootstrap-less/less/mixins/vendor-prefixes.less delete mode 100755 bower_components/bootstrap-less/less/modals.less delete mode 100755 bower_components/bootstrap-less/less/navbar.less delete mode 100755 bower_components/bootstrap-less/less/navs.less delete mode 100755 bower_components/bootstrap-less/less/normalize.less delete mode 100755 bower_components/bootstrap-less/less/pager.less delete mode 100755 bower_components/bootstrap-less/less/pagination.less delete mode 100755 bower_components/bootstrap-less/less/panels.less delete mode 100755 bower_components/bootstrap-less/less/popovers.less delete mode 100755 bower_components/bootstrap-less/less/print.less delete mode 100755 bower_components/bootstrap-less/less/progress-bars.less delete mode 100755 bower_components/bootstrap-less/less/responsive-embed.less delete mode 100755 bower_components/bootstrap-less/less/responsive-utilities.less delete mode 100755 bower_components/bootstrap-less/less/scaffolding.less delete mode 100755 bower_components/bootstrap-less/less/tables.less delete mode 100755 bower_components/bootstrap-less/less/theme.less delete mode 100755 bower_components/bootstrap-less/less/thumbnails.less delete mode 100755 bower_components/bootstrap-less/less/tooltip.less delete mode 100755 bower_components/bootstrap-less/less/type.less delete mode 100755 bower_components/bootstrap-less/less/utilities.less delete mode 100755 bower_components/bootstrap-less/less/variables.less delete mode 100755 bower_components/bootstrap-less/less/wells.less delete mode 100644 bower_components/bootstrap-sass/.bower.json delete mode 100644 bower_components/bootstrap-sass/CHANGELOG.md delete mode 100644 bower_components/bootstrap-sass/CONTRIBUTING.md delete mode 100644 bower_components/bootstrap-sass/LICENSE delete mode 100644 bower_components/bootstrap-sass/README.md delete mode 100644 bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.eot delete mode 100644 bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.svg delete mode 100644 bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf delete mode 100644 bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff delete mode 100644 bower_components/bootstrap-sass/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap-sprockets.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap.min.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/affix.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/alert.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/button.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/carousel.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/collapse.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/dropdown.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/modal.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/popover.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/scrollspy.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/tab.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/tooltip.js delete mode 100644 bower_components/bootstrap-sass/assets/javascripts/bootstrap/transition.js delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/_bootstrap-compass.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/_bootstrap-mincer.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/_bootstrap-sprockets.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/_bootstrap.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_alerts.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_badges.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_breadcrumbs.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_button-groups.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_buttons.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_carousel.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_close.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_code.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_component-animations.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_dropdowns.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_forms.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_glyphicons.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_grid.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_input-groups.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_jumbotron.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_labels.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_list-group.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_media.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_mixins.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_modals.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_navbar.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_navs.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_normalize.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_pager.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_pagination.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_panels.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_popovers.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_print.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_progress-bars.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-embed.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_responsive-utilities.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_scaffolding.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_tables.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_theme.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_thumbnails.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_tooltip.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_type.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_utilities.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_variables.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/_wells.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_alerts.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_background-variant.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_border-radius.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_buttons.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_center-block.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_clearfix.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_forms.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_gradients.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid-framework.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_grid.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_hide-text.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_image.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_labels.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_list-group.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-divider.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_opacity.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_pagination.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_panels.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_progress-bar.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_reset-filter.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_reset-text.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_resize.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_size.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_tab-focus.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_table-row.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_text-overflow.scss delete mode 100644 bower_components/bootstrap-sass/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss delete mode 100644 bower_components/bootstrap-sass/bower.json delete mode 100644 bower_components/bootstrap-sass/composer.json delete mode 100644 bower_components/bootstrap-sass/eyeglass-exports.js delete mode 100644 bower_components/bootstrap-sass/package.json delete mode 100644 bower_components/bootstrap-sass/sache.json delete mode 100644 bower_components/bootstrap-table/.bower.json delete mode 100644 bower_components/bootstrap-table/CHANGELOG.md delete mode 100644 bower_components/bootstrap-table/CONTRIBUTING.md delete mode 100644 bower_components/bootstrap-table/DONATORS.md delete mode 100644 bower_components/bootstrap-table/Gruntfile.js delete mode 100644 bower_components/bootstrap-table/LICENSE delete mode 100644 bower_components/bootstrap-table/README.md delete mode 100644 bower_components/bootstrap-table/_config.yml delete mode 100644 bower_components/bootstrap-table/bootstrap-table.jquery.json delete mode 100644 bower_components/bootstrap-table/bower.json delete mode 100644 bower_components/bootstrap-table/composer.json delete mode 100644 bower_components/bootstrap-table/dist/bootstrap-table-locale-all.js delete mode 100644 bower_components/bootstrap-table/dist/bootstrap-table-locale-all.min.js delete mode 100644 bower_components/bootstrap-table/dist/bootstrap-table.css delete mode 100644 bower_components/bootstrap-table/dist/bootstrap-table.js delete mode 100644 bower_components/bootstrap-table/dist/bootstrap-table.min.css delete mode 100644 bower_components/bootstrap-table/dist/bootstrap-table.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/accent-neutralise/bootstrap-table-accent-neutralise.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/angular/bootstrap-table-angular.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/angular/bootstrap-table-angular.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/cookie/bootstrap-table-cookie.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/cookie/bootstrap-table-cookie.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/copy-rows/bootstrap-table-copy-rows.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/copy-rows/bootstrap-table-copy-rows.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/editable/bootstrap-table-editable.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/editable/bootstrap-table-editable.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/export/bootstrap-table-export.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/export/bootstrap-table-export.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/filter-control/bootstrap-table-filter-control.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/filter-control/bootstrap-table-filter-control.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/filter/bootstrap-table-filter.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/filter/bootstrap-table-filter.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/flat-json/bootstrap-table-flat-json.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/flat-json/bootstrap-table-flat-json.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/group-by-v2/bootstrap-table-group-by.css delete mode 100644 bower_components/bootstrap-table/dist/extensions/group-by-v2/bootstrap-table-group-by.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/group-by-v2/bootstrap-table-group-by.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/group-by/bootstrap-table-group-by.css delete mode 100644 bower_components/bootstrap-table/dist/extensions/group-by/bootstrap-table-group-by.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/group-by/bootstrap-table-group-by.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/i18n-enhance/bootstrap-table-i18n-enhance.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/i18n-enhance/bootstrap-table-i18n-enhance.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/key-events/bootstrap-table-key-events.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/key-events/bootstrap-table-key-events.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/mobile/bootstrap-table-mobile.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/multi-column-toggle/bootstrap-table-multi-toggle.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/multi-column-toggle/bootstrap-table-multi-toggle.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/multiple-search/bootstrap-table-multiple-search.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/multiple-search/bootstrap-table-multiple-search.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/multiple-sort/bootstrap-table-multiple-sort.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/natural-sorting/bootstrap-table-natural-sorting.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/natural-sorting/bootstrap-table-natural-sorting.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/reorder-columns/bootstrap-table-reorder-columns.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/reorder-columns/bootstrap-table-reorder-columns.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/reorder-rows/bootstrap-table-reorder-rows.css delete mode 100644 bower_components/bootstrap-table/dist/extensions/reorder-rows/bootstrap-table-reorder-rows.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/reorder-rows/bootstrap-table-reorder-rows.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/resizable/bootstrap-table-resizable.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/resizable/bootstrap-table-resizable.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/select2-filter/bootstrap-table-select2-filter.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/select2-filter/bootstrap-table-select2-filter.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.css delete mode 100644 bower_components/bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/sticky-header/bootstrap-table-sticky-header.min.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/toolbar/bootstrap-table-toolbar.js delete mode 100644 bower_components/bootstrap-table/dist/extensions/toolbar/bootstrap-table-toolbar.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-af-ZA.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-af-ZA.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ar-SA.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ar-SA.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ca-ES.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ca-ES.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-cs-CZ.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-cs-CZ.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-da-DK.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-da-DK.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-de-DE.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-de-DE.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-el-GR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-el-GR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-en-US.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-en-US.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-AR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-AR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-CR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-CR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-ES.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-ES.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-MX.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-MX.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-NI.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-NI.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-SP.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-es-SP.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-et-EE.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-et-EE.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-fa-IR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-fa-IR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-fr-BE.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-fr-BE.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-fr-FR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-fr-FR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-he-IL.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-he-IL.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-hr-HR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-hr-HR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-hu-HU.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-hu-HU.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-it-IT.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-it-IT.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ja-JP.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ja-JP.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ka-GE.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ka-GE.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ko-KR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ko-KR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ms-MY.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ms-MY.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-nb-NO.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-nb-NO.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-nl-NL.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-nl-NL.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-pl-PL.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-pl-PL.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-pt-BR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-pt-BR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-pt-PT.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-pt-PT.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ro-RO.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ro-RO.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ru-RU.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ru-RU.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-sk-SK.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-sk-SK.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-sv-SE.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-sv-SE.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-th-TH.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-th-TH.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-tr-TR.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-tr-TR.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-uk-UA.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-uk-UA.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ur-PK.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-ur-PK.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-vi-VN.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-vi-VN.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-zh-CN.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-zh-CN.min.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-zh-TW.js delete mode 100644 bower_components/bootstrap-table/dist/locale/bootstrap-table-zh-TW.min.js delete mode 100644 bower_components/bootstrap-table/package.json delete mode 100644 bower_components/bootstrap-table/src/bootstrap-table.css delete mode 100644 bower_components/bootstrap-table/src/bootstrap-table.js delete mode 100644 bower_components/bootstrap-table/src/extensions/accent-neutralise/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/accent-neutralise/bootstrap-table-accent-neutralise.js delete mode 100644 bower_components/bootstrap-table/src/extensions/accent-neutralise/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/angular/bootstrap-table-angular.js delete mode 100644 bower_components/bootstrap-table/src/extensions/cookie/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/cookie/bootstrap-table-cookie.js delete mode 100644 bower_components/bootstrap-table/src/extensions/cookie/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/copy-rows/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/copy-rows/bootstrap-table-copy-rows.js delete mode 100644 bower_components/bootstrap-table/src/extensions/copy-rows/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/editable/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/editable/bootstrap-table-editable.js delete mode 100644 bower_components/bootstrap-table/src/extensions/editable/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/export/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/export/bootstrap-table-export.js delete mode 100644 bower_components/bootstrap-table/src/extensions/export/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/filter-control/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/filter-control/bootstrap-table-filter-control.js delete mode 100644 bower_components/bootstrap-table/src/extensions/filter-control/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/filter/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/filter/bootstrap-table-filter.js delete mode 100644 bower_components/bootstrap-table/src/extensions/filter/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/flat-json/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/flat-json/bootstrap-table-flat-json.js delete mode 100644 bower_components/bootstrap-table/src/extensions/flat-json/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by-v2/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by-v2/bootstrap-table-group-by.css delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by-v2/bootstrap-table-group-by.js delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by-v2/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by/bootstrap-table-group-by.css delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by/bootstrap-table-group-by.js delete mode 100644 bower_components/bootstrap-table/src/extensions/group-by/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/i18n-enhance/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/i18n-enhance/bootstrap-table-i18n-enhance.js delete mode 100644 bower_components/bootstrap-table/src/extensions/i18n-enhance/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/key-events/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/key-events/bootstrap-table-key-events.js delete mode 100644 bower_components/bootstrap-table/src/extensions/key-events/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/mobile/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/mobile/bootstrap-table-mobile.js delete mode 100644 bower_components/bootstrap-table/src/extensions/mobile/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/multi-column-toggle/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/multi-column-toggle/bootstrap-table-multi-toggle.js delete mode 100644 bower_components/bootstrap-table/src/extensions/multi-column-toggle/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/multiple-search/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/multiple-search/bootstrap-table-multiple-search.js delete mode 100644 bower_components/bootstrap-table/src/extensions/multiple-search/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/multiple-sort/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/multiple-sort/bootstrap-table-multiple-sort.js delete mode 100644 bower_components/bootstrap-table/src/extensions/multiple-sort/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/natural-sorting/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/natural-sorting/bootstrap-table-natural-sorting.js delete mode 100644 bower_components/bootstrap-table/src/extensions/natural-sorting/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/reorder-columns/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/reorder-columns/bootstrap-table-reorder-columns.js delete mode 100644 bower_components/bootstrap-table/src/extensions/reorder-columns/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/reorder-rows/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/reorder-rows/bootstrap-table-reorder-rows.css delete mode 100644 bower_components/bootstrap-table/src/extensions/reorder-rows/bootstrap-table-reorder-rows.js delete mode 100644 bower_components/bootstrap-table/src/extensions/reorder-rows/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/resizable/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/resizable/bootstrap-table-resizable.js delete mode 100644 bower_components/bootstrap-table/src/extensions/resizable/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/select2-filter/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/select2-filter/bootstrap-table-select2-filter.js delete mode 100644 bower_components/bootstrap-table/src/extensions/select2-filter/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/sticky-header/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/sticky-header/bootstrap-table-sticky-header.css delete mode 100644 bower_components/bootstrap-table/src/extensions/sticky-header/bootstrap-table-sticky-header.js delete mode 100644 bower_components/bootstrap-table/src/extensions/sticky-header/extension.json delete mode 100644 bower_components/bootstrap-table/src/extensions/toolbar/README.md delete mode 100644 bower_components/bootstrap-table/src/extensions/toolbar/bootstrap-table-toolbar.js delete mode 100644 bower_components/bootstrap-table/src/extensions/toolbar/extension.json delete mode 100644 bower_components/bootstrap-table/src/locale/README.md delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-af-ZA.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ar-SA.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ca-ES.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-cs-CZ.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-da-DK.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-de-DE.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-el-GR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-en-US.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-en-US.js.template delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-es-AR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-es-CR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-es-ES.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-es-MX.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-es-NI.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-es-SP.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-et-EE.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-fa-IR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-fr-BE.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-fr-FR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-he-IL.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-hr-HR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-hu-HU.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-it-IT.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ja-JP.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ka-GE.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ko-KR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ms-MY.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-nb-NO.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-nl-NL.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-pl-PL.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-pt-BR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-pt-PT.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ro-RO.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ru-RU.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-sk-SK.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-sv-SE.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-th-TH.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-tr-TR.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-uk-UA.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-ur-PK.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-vi-VN.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-zh-CN.js delete mode 100644 bower_components/bootstrap-table/src/locale/bootstrap-table-zh-TW.js delete mode 100644 bower_components/bootstrap/.bower.json delete mode 100644 bower_components/bootstrap/CHANGELOG.md delete mode 100644 bower_components/bootstrap/Gemfile delete mode 100644 bower_components/bootstrap/Gemfile.lock delete mode 100644 bower_components/bootstrap/Gruntfile.js delete mode 100644 bower_components/bootstrap/ISSUE_TEMPLATE.md delete mode 100644 bower_components/bootstrap/LICENSE delete mode 100644 bower_components/bootstrap/README.md delete mode 100644 bower_components/bootstrap/bower.json delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-grid.css delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-grid.css.map delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-grid.min.css delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-grid.min.css.map delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-reboot.css delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-reboot.css.map delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-reboot.min.css delete mode 100644 bower_components/bootstrap/dist/css/bootstrap-reboot.min.css.map delete mode 100644 bower_components/bootstrap/dist/css/bootstrap.css delete mode 100644 bower_components/bootstrap/dist/css/bootstrap.css.map delete mode 100644 bower_components/bootstrap/dist/css/bootstrap.min.css delete mode 100644 bower_components/bootstrap/dist/css/bootstrap.min.css.map delete mode 100644 bower_components/bootstrap/dist/js/bootstrap.js delete mode 100644 bower_components/bootstrap/dist/js/bootstrap.min.js delete mode 100755 bower_components/bootstrap/grunt/change-version.js delete mode 100644 bower_components/bootstrap/grunt/configBridge.json delete mode 100644 bower_components/bootstrap/grunt/gcp-key.json.enc delete mode 100644 bower_components/bootstrap/grunt/npm-shrinkwrap.json delete mode 100644 bower_components/bootstrap/grunt/postcss.js delete mode 100644 bower_components/bootstrap/grunt/sauce_browsers.yml delete mode 100755 bower_components/bootstrap/grunt/upload-preview.sh delete mode 100644 bower_components/bootstrap/js/.babelrc delete mode 100644 bower_components/bootstrap/js/.eslintrc.json delete mode 100644 bower_components/bootstrap/js/dist/alert.js delete mode 100644 bower_components/bootstrap/js/dist/alert.js.map delete mode 100644 bower_components/bootstrap/js/dist/button.js delete mode 100644 bower_components/bootstrap/js/dist/button.js.map delete mode 100644 bower_components/bootstrap/js/dist/carousel.js delete mode 100644 bower_components/bootstrap/js/dist/carousel.js.map delete mode 100644 bower_components/bootstrap/js/dist/collapse.js delete mode 100644 bower_components/bootstrap/js/dist/collapse.js.map delete mode 100644 bower_components/bootstrap/js/dist/dropdown.js delete mode 100644 bower_components/bootstrap/js/dist/dropdown.js.map delete mode 100644 bower_components/bootstrap/js/dist/modal.js delete mode 100644 bower_components/bootstrap/js/dist/modal.js.map delete mode 100644 bower_components/bootstrap/js/dist/popover.js delete mode 100644 bower_components/bootstrap/js/dist/popover.js.map delete mode 100644 bower_components/bootstrap/js/dist/scrollspy.js delete mode 100644 bower_components/bootstrap/js/dist/scrollspy.js.map delete mode 100644 bower_components/bootstrap/js/dist/tab.js delete mode 100644 bower_components/bootstrap/js/dist/tab.js.map delete mode 100644 bower_components/bootstrap/js/dist/tooltip.js delete mode 100644 bower_components/bootstrap/js/dist/tooltip.js.map delete mode 100644 bower_components/bootstrap/js/dist/util.js delete mode 100644 bower_components/bootstrap/js/dist/util.js.map delete mode 100644 bower_components/bootstrap/js/src/alert.js delete mode 100644 bower_components/bootstrap/js/src/button.js delete mode 100644 bower_components/bootstrap/js/src/carousel.js delete mode 100644 bower_components/bootstrap/js/src/collapse.js delete mode 100644 bower_components/bootstrap/js/src/dropdown.js delete mode 100644 bower_components/bootstrap/js/src/modal.js delete mode 100644 bower_components/bootstrap/js/src/popover.js delete mode 100644 bower_components/bootstrap/js/src/scrollspy.js delete mode 100644 bower_components/bootstrap/js/src/tab.js delete mode 100644 bower_components/bootstrap/js/src/tooltip.js delete mode 100644 bower_components/bootstrap/js/src/util.js delete mode 100644 bower_components/bootstrap/nuget/MyGet.ps1 delete mode 100644 bower_components/bootstrap/nuget/bootstrap.nuspec delete mode 100644 bower_components/bootstrap/nuget/bootstrap.sass.nuspec delete mode 100644 bower_components/bootstrap/package.js delete mode 100644 bower_components/bootstrap/package.json delete mode 100644 bower_components/bootstrap/sache.json delete mode 100644 bower_components/bootstrap/scss/.scss-lint.yml delete mode 100644 bower_components/bootstrap/scss/_alert.scss delete mode 100644 bower_components/bootstrap/scss/_badge.scss delete mode 100644 bower_components/bootstrap/scss/_breadcrumb.scss delete mode 100644 bower_components/bootstrap/scss/_button-group.scss delete mode 100644 bower_components/bootstrap/scss/_buttons.scss delete mode 100644 bower_components/bootstrap/scss/_card.scss delete mode 100644 bower_components/bootstrap/scss/_carousel.scss delete mode 100644 bower_components/bootstrap/scss/_close.scss delete mode 100644 bower_components/bootstrap/scss/_code.scss delete mode 100644 bower_components/bootstrap/scss/_custom-forms.scss delete mode 100644 bower_components/bootstrap/scss/_custom.scss delete mode 100644 bower_components/bootstrap/scss/_dropdown.scss delete mode 100644 bower_components/bootstrap/scss/_forms.scss delete mode 100644 bower_components/bootstrap/scss/_grid.scss delete mode 100644 bower_components/bootstrap/scss/_images.scss delete mode 100644 bower_components/bootstrap/scss/_input-group.scss delete mode 100644 bower_components/bootstrap/scss/_jumbotron.scss delete mode 100644 bower_components/bootstrap/scss/_list-group.scss delete mode 100644 bower_components/bootstrap/scss/_media.scss delete mode 100644 bower_components/bootstrap/scss/_mixins.scss delete mode 100644 bower_components/bootstrap/scss/_modal.scss delete mode 100644 bower_components/bootstrap/scss/_nav.scss delete mode 100644 bower_components/bootstrap/scss/_navbar.scss delete mode 100644 bower_components/bootstrap/scss/_normalize.scss delete mode 100644 bower_components/bootstrap/scss/_pagination.scss delete mode 100644 bower_components/bootstrap/scss/_popover.scss delete mode 100644 bower_components/bootstrap/scss/_print.scss delete mode 100644 bower_components/bootstrap/scss/_progress.scss delete mode 100644 bower_components/bootstrap/scss/_reboot.scss delete mode 100644 bower_components/bootstrap/scss/_responsive-embed.scss delete mode 100644 bower_components/bootstrap/scss/_tables.scss delete mode 100644 bower_components/bootstrap/scss/_tooltip.scss delete mode 100644 bower_components/bootstrap/scss/_transitions.scss delete mode 100644 bower_components/bootstrap/scss/_type.scss delete mode 100644 bower_components/bootstrap/scss/_utilities.scss delete mode 100644 bower_components/bootstrap/scss/_variables.scss delete mode 100644 bower_components/bootstrap/scss/bootstrap-grid.scss delete mode 100644 bower_components/bootstrap/scss/bootstrap-reboot.scss delete mode 100644 bower_components/bootstrap/scss/bootstrap.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_alert.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_background-variant.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_badge.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_border-radius.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_breakpoints.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_buttons.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_cards.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_clearfix.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_float.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_forms.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_gradients.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_grid-framework.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_grid.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_hover.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_image.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_list-group.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_lists.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_nav-divider.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_navbar-align.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_pagination.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_reset-text.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_resize.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_screen-reader.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_size.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_table-row.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_text-emphasis.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_text-hide.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_text-truncate.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_transforms.scss delete mode 100644 bower_components/bootstrap/scss/mixins/_visibility.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_align.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_background.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_borders.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_clearfix.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_display.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_flex.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_float.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_position.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_screenreaders.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_sizing.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_spacing.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_text.scss delete mode 100644 bower_components/bootstrap/scss/utilities/_visibility.scss delete mode 100644 bower_components/ekko-lightbox/.bower.json delete mode 100644 bower_components/ekko-lightbox/Gruntfile.js delete mode 100644 bower_components/ekko-lightbox/ISSUE_TEMPLATE.md delete mode 100644 bower_components/ekko-lightbox/LICENSE delete mode 100644 bower_components/ekko-lightbox/README.md delete mode 100644 bower_components/ekko-lightbox/bower.json delete mode 100644 bower_components/ekko-lightbox/dist/ekko-lightbox.css delete mode 100644 bower_components/ekko-lightbox/dist/ekko-lightbox.js delete mode 100644 bower_components/ekko-lightbox/dist/ekko-lightbox.js.map delete mode 100644 bower_components/ekko-lightbox/dist/ekko-lightbox.min.css delete mode 100644 bower_components/ekko-lightbox/dist/ekko-lightbox.min.css.map delete mode 100644 bower_components/ekko-lightbox/dist/ekko-lightbox.min.js delete mode 100644 bower_components/ekko-lightbox/dist/ekko-lightbox.min.js.map delete mode 100644 bower_components/ekko-lightbox/ekko-lightbox.js delete mode 100644 bower_components/ekko-lightbox/ekko-lightbox.less delete mode 100644 bower_components/ekko-lightbox/package.json delete mode 100644 bower_components/fastclick/.bower.json delete mode 100644 bower_components/fastclick/LICENSE delete mode 100644 bower_components/fastclick/README.md delete mode 100644 bower_components/fastclick/bower.json delete mode 100644 bower_components/fastclick/lib/fastclick.js delete mode 100644 bower_components/font-awesome/.bower.json delete mode 100644 bower_components/font-awesome/.gitignore delete mode 100644 bower_components/font-awesome/.npmignore delete mode 100644 bower_components/font-awesome/HELP-US-OUT.txt delete mode 100644 bower_components/font-awesome/bower.json delete mode 100644 bower_components/font-awesome/css/font-awesome.css delete mode 100644 bower_components/font-awesome/css/font-awesome.css.map delete mode 100644 bower_components/font-awesome/css/font-awesome.min.css delete mode 100644 bower_components/font-awesome/fonts/FontAwesome.otf delete mode 100644 bower_components/font-awesome/fonts/fontawesome-webfont.eot delete mode 100644 bower_components/font-awesome/fonts/fontawesome-webfont.svg delete mode 100644 bower_components/font-awesome/fonts/fontawesome-webfont.ttf delete mode 100644 bower_components/font-awesome/fonts/fontawesome-webfont.woff delete mode 100644 bower_components/font-awesome/fonts/fontawesome-webfont.woff2 delete mode 100644 bower_components/font-awesome/less/animated.less delete mode 100644 bower_components/font-awesome/less/bordered-pulled.less delete mode 100644 bower_components/font-awesome/less/core.less delete mode 100644 bower_components/font-awesome/less/fixed-width.less delete mode 100644 bower_components/font-awesome/less/font-awesome.less delete mode 100644 bower_components/font-awesome/less/icons.less delete mode 100644 bower_components/font-awesome/less/larger.less delete mode 100644 bower_components/font-awesome/less/list.less delete mode 100644 bower_components/font-awesome/less/mixins.less delete mode 100644 bower_components/font-awesome/less/path.less delete mode 100644 bower_components/font-awesome/less/rotated-flipped.less delete mode 100644 bower_components/font-awesome/less/screen-reader.less delete mode 100644 bower_components/font-awesome/less/stacked.less delete mode 100644 bower_components/font-awesome/less/variables.less delete mode 100644 bower_components/font-awesome/scss/_animated.scss delete mode 100644 bower_components/font-awesome/scss/_bordered-pulled.scss delete mode 100644 bower_components/font-awesome/scss/_core.scss delete mode 100644 bower_components/font-awesome/scss/_fixed-width.scss delete mode 100644 bower_components/font-awesome/scss/_icons.scss delete mode 100644 bower_components/font-awesome/scss/_larger.scss delete mode 100644 bower_components/font-awesome/scss/_list.scss delete mode 100644 bower_components/font-awesome/scss/_mixins.scss delete mode 100644 bower_components/font-awesome/scss/_path.scss delete mode 100644 bower_components/font-awesome/scss/_rotated-flipped.scss delete mode 100644 bower_components/font-awesome/scss/_screen-reader.scss delete mode 100644 bower_components/font-awesome/scss/_stacked.scss delete mode 100644 bower_components/font-awesome/scss/_variables.scss delete mode 100644 bower_components/font-awesome/scss/font-awesome.scss delete mode 100644 bower_components/iCheck/.bower.json delete mode 100644 bower_components/iCheck/bower.json delete mode 100644 bower_components/iCheck/icheck.jquery.json delete mode 100644 bower_components/iCheck/icheck.js delete mode 100644 bower_components/iCheck/icheck.min.js delete mode 100644 bower_components/iCheck/skins/all.css delete mode 100644 bower_components/iCheck/skins/flat/_all.css delete mode 100644 bower_components/iCheck/skins/flat/aero.css delete mode 100644 bower_components/iCheck/skins/flat/aero.png delete mode 100644 bower_components/iCheck/skins/flat/aero@2x.png delete mode 100644 bower_components/iCheck/skins/flat/blue.css delete mode 100644 bower_components/iCheck/skins/flat/blue.png delete mode 100644 bower_components/iCheck/skins/flat/blue@2x.png delete mode 100644 bower_components/iCheck/skins/flat/flat.css delete mode 100644 bower_components/iCheck/skins/flat/flat.png delete mode 100644 bower_components/iCheck/skins/flat/flat@2x.png delete mode 100644 bower_components/iCheck/skins/flat/green.css delete mode 100644 bower_components/iCheck/skins/flat/green.png delete mode 100644 bower_components/iCheck/skins/flat/green@2x.png delete mode 100644 bower_components/iCheck/skins/flat/grey.css delete mode 100644 bower_components/iCheck/skins/flat/grey.png delete mode 100644 bower_components/iCheck/skins/flat/grey@2x.png delete mode 100644 bower_components/iCheck/skins/flat/orange.css delete mode 100644 bower_components/iCheck/skins/flat/orange.png delete mode 100644 bower_components/iCheck/skins/flat/orange@2x.png delete mode 100644 bower_components/iCheck/skins/flat/pink.css delete mode 100644 bower_components/iCheck/skins/flat/pink.png delete mode 100644 bower_components/iCheck/skins/flat/pink@2x.png delete mode 100644 bower_components/iCheck/skins/flat/purple.css delete mode 100644 bower_components/iCheck/skins/flat/purple.png delete mode 100644 bower_components/iCheck/skins/flat/purple@2x.png delete mode 100644 bower_components/iCheck/skins/flat/red.css delete mode 100644 bower_components/iCheck/skins/flat/red.png delete mode 100644 bower_components/iCheck/skins/flat/red@2x.png delete mode 100644 bower_components/iCheck/skins/flat/yellow.css delete mode 100644 bower_components/iCheck/skins/flat/yellow.png delete mode 100644 bower_components/iCheck/skins/flat/yellow@2x.png delete mode 100644 bower_components/iCheck/skins/futurico/futurico.css delete mode 100644 bower_components/iCheck/skins/futurico/futurico.png delete mode 100644 bower_components/iCheck/skins/futurico/futurico@2x.png delete mode 100644 bower_components/iCheck/skins/line/_all.css delete mode 100644 bower_components/iCheck/skins/line/aero.css delete mode 100644 bower_components/iCheck/skins/line/blue.css delete mode 100644 bower_components/iCheck/skins/line/green.css delete mode 100644 bower_components/iCheck/skins/line/grey.css delete mode 100644 bower_components/iCheck/skins/line/line.css delete mode 100644 bower_components/iCheck/skins/line/line.png delete mode 100644 bower_components/iCheck/skins/line/line@2x.png delete mode 100644 bower_components/iCheck/skins/line/orange.css delete mode 100644 bower_components/iCheck/skins/line/pink.css delete mode 100644 bower_components/iCheck/skins/line/purple.css delete mode 100644 bower_components/iCheck/skins/line/red.css delete mode 100644 bower_components/iCheck/skins/line/yellow.css delete mode 100644 bower_components/iCheck/skins/minimal/_all.css delete mode 100644 bower_components/iCheck/skins/minimal/aero.css delete mode 100644 bower_components/iCheck/skins/minimal/aero.png delete mode 100644 bower_components/iCheck/skins/minimal/aero@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/blue.css delete mode 100644 bower_components/iCheck/skins/minimal/blue.png delete mode 100644 bower_components/iCheck/skins/minimal/blue@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/green.css delete mode 100644 bower_components/iCheck/skins/minimal/green.png delete mode 100644 bower_components/iCheck/skins/minimal/green@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/grey.css delete mode 100644 bower_components/iCheck/skins/minimal/grey.png delete mode 100644 bower_components/iCheck/skins/minimal/grey@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/minimal.css delete mode 100644 bower_components/iCheck/skins/minimal/minimal.png delete mode 100644 bower_components/iCheck/skins/minimal/minimal@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/orange.css delete mode 100644 bower_components/iCheck/skins/minimal/orange.png delete mode 100644 bower_components/iCheck/skins/minimal/orange@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/pink.css delete mode 100644 bower_components/iCheck/skins/minimal/pink.png delete mode 100644 bower_components/iCheck/skins/minimal/pink@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/purple.css delete mode 100644 bower_components/iCheck/skins/minimal/purple.png delete mode 100644 bower_components/iCheck/skins/minimal/purple@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/red.css delete mode 100644 bower_components/iCheck/skins/minimal/red.png delete mode 100644 bower_components/iCheck/skins/minimal/red@2x.png delete mode 100644 bower_components/iCheck/skins/minimal/yellow.css delete mode 100644 bower_components/iCheck/skins/minimal/yellow.png delete mode 100644 bower_components/iCheck/skins/minimal/yellow@2x.png delete mode 100644 bower_components/iCheck/skins/polaris/polaris.css delete mode 100644 bower_components/iCheck/skins/polaris/polaris.png delete mode 100644 bower_components/iCheck/skins/polaris/polaris@2x.png delete mode 100644 bower_components/iCheck/skins/square/_all.css delete mode 100644 bower_components/iCheck/skins/square/aero.css delete mode 100644 bower_components/iCheck/skins/square/aero.png delete mode 100644 bower_components/iCheck/skins/square/aero@2x.png delete mode 100644 bower_components/iCheck/skins/square/blue.css delete mode 100644 bower_components/iCheck/skins/square/blue.png delete mode 100644 bower_components/iCheck/skins/square/blue@2x.png delete mode 100644 bower_components/iCheck/skins/square/green.css delete mode 100644 bower_components/iCheck/skins/square/green.png delete mode 100644 bower_components/iCheck/skins/square/green@2x.png delete mode 100644 bower_components/iCheck/skins/square/grey.css delete mode 100644 bower_components/iCheck/skins/square/grey.png delete mode 100644 bower_components/iCheck/skins/square/grey@2x.png delete mode 100644 bower_components/iCheck/skins/square/orange.css delete mode 100644 bower_components/iCheck/skins/square/orange.png delete mode 100644 bower_components/iCheck/skins/square/orange@2x.png delete mode 100644 bower_components/iCheck/skins/square/pink.css delete mode 100644 bower_components/iCheck/skins/square/pink.png delete mode 100644 bower_components/iCheck/skins/square/pink@2x.png delete mode 100644 bower_components/iCheck/skins/square/purple.css delete mode 100644 bower_components/iCheck/skins/square/purple.png delete mode 100644 bower_components/iCheck/skins/square/purple@2x.png delete mode 100644 bower_components/iCheck/skins/square/red.css delete mode 100644 bower_components/iCheck/skins/square/red.png delete mode 100644 bower_components/iCheck/skins/square/red@2x.png delete mode 100644 bower_components/iCheck/skins/square/square.css delete mode 100644 bower_components/iCheck/skins/square/square.png delete mode 100644 bower_components/iCheck/skins/square/square@2x.png delete mode 100644 bower_components/iCheck/skins/square/yellow.css delete mode 100644 bower_components/iCheck/skins/square/yellow.png delete mode 100644 bower_components/iCheck/skins/square/yellow@2x.png delete mode 100644 bower_components/jquery-slimscroll/.bower.json delete mode 100644 bower_components/jquery-slimscroll/README.md delete mode 100644 bower_components/jquery-slimscroll/bower.json delete mode 100644 bower_components/jquery-slimscroll/examples/allow-page-scroll.html delete mode 100644 bower_components/jquery-slimscroll/examples/chaining.html delete mode 100644 bower_components/jquery-slimscroll/examples/disable-fade-out.html delete mode 100644 bower_components/jquery-slimscroll/examples/dynamic-content.html delete mode 100644 bower_components/jquery-slimscroll/examples/height-width.html delete mode 100644 bower_components/jquery-slimscroll/examples/index.html delete mode 100644 bower_components/jquery-slimscroll/examples/libs/prettify/prettify.css delete mode 100644 bower_components/jquery-slimscroll/examples/libs/prettify/prettify.js delete mode 100644 bower_components/jquery-slimscroll/examples/mouse-wheel.html delete mode 100644 bower_components/jquery-slimscroll/examples/multiple-elements.html delete mode 100644 bower_components/jquery-slimscroll/examples/navigation.html delete mode 100644 bower_components/jquery-slimscroll/examples/nested.html delete mode 100644 bower_components/jquery-slimscroll/examples/programmatic-scrolling.html delete mode 100644 bower_components/jquery-slimscroll/examples/rail.html delete mode 100644 bower_components/jquery-slimscroll/examples/scroll-events.html delete mode 100644 bower_components/jquery-slimscroll/examples/scrollbar.html delete mode 100644 bower_components/jquery-slimscroll/examples/start-position.html delete mode 100644 bower_components/jquery-slimscroll/examples/style.css delete mode 100644 bower_components/jquery-slimscroll/jquery.slimscroll.js delete mode 100644 bower_components/jquery-slimscroll/jquery.slimscroll.min.js delete mode 100644 bower_components/jquery-slimscroll/package.json delete mode 100644 bower_components/jquery-ui/.bower.json delete mode 100644 bower_components/jquery-ui/.gitignore delete mode 100644 bower_components/jquery-ui/README.md delete mode 100644 bower_components/jquery-ui/bower.json delete mode 100644 bower_components/jquery-ui/component.json delete mode 100644 bower_components/jquery-ui/composer.json delete mode 100644 bower_components/jquery-ui/jquery-ui.js delete mode 100644 bower_components/jquery-ui/jquery-ui.min.js delete mode 100644 bower_components/jquery-ui/package.json delete mode 100644 bower_components/jquery-ui/themes/base/accordion.css delete mode 100644 bower_components/jquery-ui/themes/base/all.css delete mode 100644 bower_components/jquery-ui/themes/base/autocomplete.css delete mode 100644 bower_components/jquery-ui/themes/base/base.css delete mode 100644 bower_components/jquery-ui/themes/base/button.css delete mode 100644 bower_components/jquery-ui/themes/base/checkboxradio.css delete mode 100644 bower_components/jquery-ui/themes/base/controlgroup.css delete mode 100644 bower_components/jquery-ui/themes/base/core.css delete mode 100644 bower_components/jquery-ui/themes/base/datepicker.css delete mode 100644 bower_components/jquery-ui/themes/base/dialog.css delete mode 100644 bower_components/jquery-ui/themes/base/draggable.css delete mode 100644 bower_components/jquery-ui/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png delete mode 100644 bower_components/jquery-ui/themes/base/images/ui-icons_444444_256x240.png delete mode 100644 bower_components/jquery-ui/themes/base/images/ui-icons_555555_256x240.png delete mode 100644 bower_components/jquery-ui/themes/base/images/ui-icons_777620_256x240.png delete mode 100644 bower_components/jquery-ui/themes/base/images/ui-icons_777777_256x240.png delete mode 100644 bower_components/jquery-ui/themes/base/images/ui-icons_cc0000_256x240.png delete mode 100644 bower_components/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/base/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/base/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/base/menu.css delete mode 100644 bower_components/jquery-ui/themes/base/progressbar.css delete mode 100644 bower_components/jquery-ui/themes/base/resizable.css delete mode 100644 bower_components/jquery-ui/themes/base/selectable.css delete mode 100644 bower_components/jquery-ui/themes/base/selectmenu.css delete mode 100644 bower_components/jquery-ui/themes/base/slider.css delete mode 100644 bower_components/jquery-ui/themes/base/sortable.css delete mode 100644 bower_components/jquery-ui/themes/base/spinner.css delete mode 100644 bower_components/jquery-ui/themes/base/tabs.css delete mode 100644 bower_components/jquery-ui/themes/base/theme.css delete mode 100644 bower_components/jquery-ui/themes/base/tooltip.css delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_glass_40_111111_1x400.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-icons_222222_256x240.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-icons_4ca300_256x240.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-icons_bbbbbb_256x240.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-icons_ededed_256x240.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-icons_ffcf29_256x240.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/black-tie/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/black-tie/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/black-tie/theme.css delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-bg_dots-small_65_a6a6a6_2x2.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-bg_glass_55_fbf8ee_1x400.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_eeeeee_1x100.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_f6f6f6_1x100.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-soft_15_cc0000_1x100.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-icons_004276_256x240.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-icons_cc0000_256x240.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/blitzer/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/blitzer/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/blitzer/theme.css delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_50_3baae3_1x400.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-icons_2694e8_256x240.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-icons_2e83ff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-icons_3d80b3_256x240.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-icons_72a7cf_256x240.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/cupertino/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/cupertino/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/cupertino/theme.css delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-bg_loop_25_000000_21x21.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-icons_222222_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-icons_4b8e0b_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-icons_a83300_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-icons_cccccc_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dark-hive/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/dark-hive/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/dark-hive/theme.css delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-icons_00498f_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-icons_98d2fb_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-icons_9ccdfc_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/dot-luv/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/dot-luv/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/dot-luv/theme.css delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-icons_454545_256x240.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-icons_734d99_256x240.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-icons_8d78a5_256x240.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-icons_a8a3ae_256x240.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-icons_ebccce_256x240.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/eggplant/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/eggplant/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/eggplant/theme.css delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-icons_0a82eb_256x240.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-icons_0b54d5_256x240.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-icons_5fa5e3_256x240.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-icons_fcdd4a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/excite-bike/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/excite-bike/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/excite-bike/theme.css delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-icons_0073ea_256x240.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-icons_454545_256x240.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-icons_666666_256x240.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-icons_ff0084_256x240.png delete mode 100644 bower_components/jquery-ui/themes/flick/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/flick/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/flick/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/flick/theme.css delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_454545_256x240.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_88a206_256x240.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_c02669_256x240.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_e1e463_256x240.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_ffeb33_256x240.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/hot-sneaks/theme.css delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_25_cb842e_1x400.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_70_ede4d4_1x400.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-icons_c47a23_256x240.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-icons_cb672b_256x240.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-icons_f08000_256x240.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-icons_f35f07_256x240.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-icons_ff7519_256x240.png delete mode 100644 bower_components/jquery-ui/themes/humanity/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/humanity/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/humanity/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/humanity/theme.css delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_15_444444_40x40.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_glass_55_fbf5d0_1x400.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-hard_30_285c00_1x100.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_33_3a8104_1x100.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_50_4eb305_1x100.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_60_4ca20b_1x100.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-bg_inset-soft_10_285c00_1x100.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-icons_4eb305_256x240.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-icons_72b42d_256x240.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-icons_cd0a0a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/le-frog/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/le-frog/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/le-frog/theme.css delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-icons_222222_256x240.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-icons_9bcc60_256x240.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-icons_add978_256x240.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-icons_e3ddc9_256x240.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-icons_f1fd86_256x240.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/mint-choc/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/mint-choc/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/mint-choc/theme.css delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_35_dddddd_1x400.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_60_eeeeee_1x400.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-bg_inset-hard_75_999999_1x100.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-icons_3383bb_256x240.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-icons_454545_256x240.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-icons_70b2e1_256x240.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-icons_999999_256x240.png delete mode 100644 bower_components/jquery-ui/themes/overcast/images/ui-icons_fbc856_256x240.png delete mode 100644 bower_components/jquery-ui/themes/overcast/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/overcast/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/overcast/theme.css delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_222222_256x240.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_3572ac_256x240.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_8c291d_256x240.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_b83400_256x240.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_fbdb93_256x240.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/pepper-grinder/theme.css delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_85_dfeffc_1x400.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-icons_217bc0_256x240.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-icons_2e83ff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-icons_469bdd_256x240.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-icons_6da8d5_256x240.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-icons_cd0a0a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-icons_d8e7f3_256x240.png delete mode 100644 bower_components/jquery-ui/themes/redmond/images/ui-icons_f9bd01_256x240.png delete mode 100644 bower_components/jquery-ui/themes/redmond/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/redmond/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/redmond/theme.css delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/smoothness/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/smoothness/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/smoothness/theme.css delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-icons_808080_256x240.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-icons_847e71_256x240.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-icons_8DC262_256x240.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-icons_cd0a0a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-icons_eeeeee_256x240.png delete mode 100644 bower_components/jquery-ui/themes/south-street/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/south-street/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/south-street/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/south-street/theme.css delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-bg_glass_45_0078ae_1x400.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-bg_glass_55_f8da4e_1x400.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-bg_glass_75_79c9ec_1x400.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-icons_0078ae_256x240.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-icons_056b93_256x240.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-icons_d8e7f3_256x240.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-icons_e0fdff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-icons_f5e175_256x240.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-icons_f7a50d_256x240.png delete mode 100644 bower_components/jquery-ui/themes/start/images/ui-icons_fcd113_256x240.png delete mode 100644 bower_components/jquery-ui/themes/start/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/start/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/start/theme.css delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-icons_3d3d3d_256x240.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-icons_bd7b00_256x240.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-icons_d19405_256x240.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-icons_eb990f_256x240.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-icons_ed9f26_256x240.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-icons_fadc7a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/sunny/images/ui-icons_ffe180_256x240.png delete mode 100644 bower_components/jquery-ui/themes/sunny/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/sunny/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/sunny/theme.css delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_070603_256x240.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_e8e2b5_256x240.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_e9cd86_256x240.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_efec9f_256x240.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_f2ec64_256x240.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_f9f2bd_256x240.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_ff7519_256x240.png delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/swanky-purse/theme.css delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-bg_diagonals-small_50_262626_40x40.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_40_0a0a0a_1x400.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_55_f1fbe5_1x400.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_60_000000_1x400.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_55_000000_500x100.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_85_9fda58_500x100.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_95_f6ecd5_500x100.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-icons_000000_256x240.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-icons_1f1f1f_256x240.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-icons_9fda58_256x240.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-icons_b8ec79_256x240.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-icons_cd0a0a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/trontastic/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/trontastic/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/trontastic/theme.css delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_222222_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_a83300_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_cccccc_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/ui-darkness/theme.css delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_222222_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_228ef1_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ffffff_256x240.png delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/ui-lightness/theme.css delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-bg_glass_95_fef1ec_1x400.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-bg_gloss-wave_16_121212_500x100.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-hard_15_888888_1x100.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-hard_55_555555_1x100.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-bg_inset-soft_15_121212_1x100.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-icons_666666_256x240.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-icons_aaaaaa_256x240.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-icons_bbbbbb_256x240.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-icons_c98000_256x240.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-icons_cccccc_256x240.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-icons_cd0a0a_256x240.png delete mode 100644 bower_components/jquery-ui/themes/vader/images/ui-icons_f29a00_256x240.png delete mode 100644 bower_components/jquery-ui/themes/vader/jquery-ui.css delete mode 100644 bower_components/jquery-ui/themes/vader/jquery-ui.min.css delete mode 100644 bower_components/jquery-ui/themes/vader/theme.css delete mode 100755 bower_components/jquery-ui/ui/.jshintrc delete mode 100644 bower_components/jquery-ui/ui/core.js delete mode 100644 bower_components/jquery-ui/ui/data.js delete mode 100644 bower_components/jquery-ui/ui/disable-selection.js delete mode 100644 bower_components/jquery-ui/ui/effect.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-blind.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-bounce.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-clip.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-drop.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-explode.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-fade.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-fold.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-highlight.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-puff.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-pulsate.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-scale.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-shake.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-size.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-slide.js delete mode 100644 bower_components/jquery-ui/ui/effects/effect-transfer.js delete mode 100644 bower_components/jquery-ui/ui/escape-selector.js delete mode 100644 bower_components/jquery-ui/ui/focusable.js delete mode 100644 bower_components/jquery-ui/ui/form-reset-mixin.js delete mode 100644 bower_components/jquery-ui/ui/form.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-af.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ar-DZ.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ar.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-az.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-be.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-bg.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-bs.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ca.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-cs.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-cy-GB.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-da.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-de.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-el.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-en-AU.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-en-GB.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-en-NZ.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-eo.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-es.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-et.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-eu.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-fa.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-fi.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-fo.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-fr-CA.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-fr-CH.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-fr.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-gl.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-he.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-hi.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-hr.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-hu.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-hy.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-id.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-is.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-it-CH.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-it.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ja.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ka.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-kk.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-km.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ko.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ky.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-lb.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-lt.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-lv.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-mk.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ml.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ms.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-nb.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-nl-BE.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-nl.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-nn.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-no.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-pl.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-pt-BR.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-pt.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-rm.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ro.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ru.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-sk.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-sl.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-sq.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-sr-SR.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-sr.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-sv.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-ta.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-th.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-tj.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-tr.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-uk.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-vi.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-zh-CN.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-zh-HK.js delete mode 100644 bower_components/jquery-ui/ui/i18n/datepicker-zh-TW.js delete mode 100644 bower_components/jquery-ui/ui/ie.js delete mode 100644 bower_components/jquery-ui/ui/jquery-1-7.js delete mode 100644 bower_components/jquery-ui/ui/keycode.js delete mode 100644 bower_components/jquery-ui/ui/labels.js delete mode 100644 bower_components/jquery-ui/ui/minified/core.js delete mode 100644 bower_components/jquery-ui/ui/minified/data.js delete mode 100644 bower_components/jquery-ui/ui/minified/disable-selection.js delete mode 100644 bower_components/jquery-ui/ui/minified/effect.js delete mode 100644 bower_components/jquery-ui/ui/minified/escape-selector.js delete mode 100644 bower_components/jquery-ui/ui/minified/focusable.js delete mode 100644 bower_components/jquery-ui/ui/minified/form-reset-mixin.js delete mode 100644 bower_components/jquery-ui/ui/minified/form.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-af.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ar-DZ.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ar.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-az.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-be.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-bg.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-bs.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ca.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-cs.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-cy-GB.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-da.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-de.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-el.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-en-AU.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-en-GB.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-en-NZ.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-eo.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-es.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-et.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-eu.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-fa.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-fi.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-fo.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CA.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CH.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-fr.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-gl.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-he.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-hi.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-hr.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-hu.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-hy.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-id.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-is.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-it-CH.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-it.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ja.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ka.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-kk.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-km.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ko.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ky.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-lb.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-lt.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-lv.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-mk.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ml.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ms.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-nb.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-nl-BE.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-nl.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-nn.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-no.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-pl.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-pt-BR.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-pt.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-rm.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ro.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ru.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-sk.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-sl.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-sq.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-sr-SR.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-sr.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-sv.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-ta.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-th.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-tj.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-tr.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-uk.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-vi.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-CN.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-HK.js delete mode 100644 bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-TW.js delete mode 100644 bower_components/jquery-ui/ui/minified/ie.js delete mode 100644 bower_components/jquery-ui/ui/minified/jquery-1-7.js delete mode 100644 bower_components/jquery-ui/ui/minified/keycode.js delete mode 100644 bower_components/jquery-ui/ui/minified/labels.js delete mode 100644 bower_components/jquery-ui/ui/minified/plugin.js delete mode 100644 bower_components/jquery-ui/ui/minified/position.js delete mode 100644 bower_components/jquery-ui/ui/minified/safe-active-element.js delete mode 100644 bower_components/jquery-ui/ui/minified/safe-blur.js delete mode 100644 bower_components/jquery-ui/ui/minified/scroll-parent.js delete mode 100644 bower_components/jquery-ui/ui/minified/tabbable.js delete mode 100644 bower_components/jquery-ui/ui/minified/unique-id.js delete mode 100644 bower_components/jquery-ui/ui/minified/version.js delete mode 100644 bower_components/jquery-ui/ui/minified/widget.js delete mode 100644 bower_components/jquery-ui/ui/plugin.js delete mode 100644 bower_components/jquery-ui/ui/position.js delete mode 100644 bower_components/jquery-ui/ui/safe-active-element.js delete mode 100644 bower_components/jquery-ui/ui/safe-blur.js delete mode 100644 bower_components/jquery-ui/ui/scroll-parent.js delete mode 100644 bower_components/jquery-ui/ui/tabbable.js delete mode 100644 bower_components/jquery-ui/ui/unique-id.js delete mode 100644 bower_components/jquery-ui/ui/version.js delete mode 100644 bower_components/jquery-ui/ui/widget.js delete mode 100644 bower_components/jquery-ui/ui/widgets/accordion.js delete mode 100644 bower_components/jquery-ui/ui/widgets/autocomplete.js delete mode 100644 bower_components/jquery-ui/ui/widgets/button.js delete mode 100644 bower_components/jquery-ui/ui/widgets/checkboxradio.js delete mode 100644 bower_components/jquery-ui/ui/widgets/controlgroup.js delete mode 100644 bower_components/jquery-ui/ui/widgets/datepicker.js delete mode 100644 bower_components/jquery-ui/ui/widgets/dialog.js delete mode 100644 bower_components/jquery-ui/ui/widgets/draggable.js delete mode 100644 bower_components/jquery-ui/ui/widgets/droppable.js delete mode 100644 bower_components/jquery-ui/ui/widgets/menu.js delete mode 100644 bower_components/jquery-ui/ui/widgets/mouse.js delete mode 100644 bower_components/jquery-ui/ui/widgets/progressbar.js delete mode 100644 bower_components/jquery-ui/ui/widgets/resizable.js delete mode 100644 bower_components/jquery-ui/ui/widgets/selectable.js delete mode 100644 bower_components/jquery-ui/ui/widgets/selectmenu.js delete mode 100644 bower_components/jquery-ui/ui/widgets/slider.js delete mode 100644 bower_components/jquery-ui/ui/widgets/sortable.js delete mode 100644 bower_components/jquery-ui/ui/widgets/spinner.js delete mode 100644 bower_components/jquery-ui/ui/widgets/tabs.js delete mode 100644 bower_components/jquery-ui/ui/widgets/tooltip.js delete mode 100644 bower_components/jquery.iframe-transport/.bower.json delete mode 100644 bower_components/jquery.iframe-transport/LICENSE delete mode 100644 bower_components/jquery.iframe-transport/README.md delete mode 100644 bower_components/jquery.iframe-transport/bower.json delete mode 100644 bower_components/jquery.iframe-transport/demo/client.js delete mode 100644 bower_components/jquery.iframe-transport/demo/index.html delete mode 100644 bower_components/jquery.iframe-transport/demo/layout.css delete mode 100644 bower_components/jquery.iframe-transport/demo/spinner.gif delete mode 100644 bower_components/jquery.iframe-transport/jquery.iframe-transport.js delete mode 100644 bower_components/jquery.iframe-transport/package.json delete mode 100644 bower_components/jquery/.bower.json delete mode 100644 bower_components/jquery/AUTHORS.txt delete mode 100644 bower_components/jquery/LICENSE.txt delete mode 100644 bower_components/jquery/README.md delete mode 100644 bower_components/jquery/bower.json delete mode 100644 bower_components/jquery/dist/core.js delete mode 100644 bower_components/jquery/dist/jquery.js delete mode 100644 bower_components/jquery/dist/jquery.min.js delete mode 100644 bower_components/jquery/dist/jquery.min.map delete mode 100644 bower_components/jquery/dist/jquery.slim.js delete mode 100644 bower_components/jquery/dist/jquery.slim.min.js delete mode 100644 bower_components/jquery/dist/jquery.slim.min.map delete mode 100644 bower_components/jquery/external/sizzle/LICENSE.txt delete mode 100644 bower_components/jquery/external/sizzle/dist/sizzle.js delete mode 100644 bower_components/jquery/external/sizzle/dist/sizzle.min.js delete mode 100644 bower_components/jquery/external/sizzle/dist/sizzle.min.map delete mode 100644 bower_components/jquery/src/.eslintrc.json delete mode 100644 bower_components/jquery/src/ajax.js delete mode 100644 bower_components/jquery/src/ajax/jsonp.js delete mode 100644 bower_components/jquery/src/ajax/load.js delete mode 100644 bower_components/jquery/src/ajax/parseXML.js delete mode 100644 bower_components/jquery/src/ajax/script.js delete mode 100644 bower_components/jquery/src/ajax/var/location.js delete mode 100644 bower_components/jquery/src/ajax/var/nonce.js delete mode 100644 bower_components/jquery/src/ajax/var/rquery.js delete mode 100644 bower_components/jquery/src/ajax/xhr.js delete mode 100644 bower_components/jquery/src/attributes.js delete mode 100644 bower_components/jquery/src/attributes/attr.js delete mode 100644 bower_components/jquery/src/attributes/classes.js delete mode 100644 bower_components/jquery/src/attributes/prop.js delete mode 100644 bower_components/jquery/src/attributes/support.js delete mode 100644 bower_components/jquery/src/attributes/val.js delete mode 100644 bower_components/jquery/src/callbacks.js delete mode 100644 bower_components/jquery/src/core.js delete mode 100644 bower_components/jquery/src/core/DOMEval.js delete mode 100644 bower_components/jquery/src/core/access.js delete mode 100644 bower_components/jquery/src/core/init.js delete mode 100644 bower_components/jquery/src/core/parseHTML.js delete mode 100644 bower_components/jquery/src/core/ready-no-deferred.js delete mode 100644 bower_components/jquery/src/core/ready.js delete mode 100644 bower_components/jquery/src/core/readyException.js delete mode 100644 bower_components/jquery/src/core/stripAndCollapse.js delete mode 100644 bower_components/jquery/src/core/support.js delete mode 100644 bower_components/jquery/src/core/var/rsingleTag.js delete mode 100644 bower_components/jquery/src/css.js delete mode 100644 bower_components/jquery/src/css/addGetHookIf.js delete mode 100644 bower_components/jquery/src/css/adjustCSS.js delete mode 100644 bower_components/jquery/src/css/curCSS.js delete mode 100644 bower_components/jquery/src/css/hiddenVisibleSelectors.js delete mode 100644 bower_components/jquery/src/css/showHide.js delete mode 100644 bower_components/jquery/src/css/support.js delete mode 100644 bower_components/jquery/src/css/var/cssExpand.js delete mode 100644 bower_components/jquery/src/css/var/getStyles.js delete mode 100644 bower_components/jquery/src/css/var/isHiddenWithinTree.js delete mode 100644 bower_components/jquery/src/css/var/rmargin.js delete mode 100644 bower_components/jquery/src/css/var/rnumnonpx.js delete mode 100644 bower_components/jquery/src/css/var/swap.js delete mode 100644 bower_components/jquery/src/data.js delete mode 100644 bower_components/jquery/src/data/Data.js delete mode 100644 bower_components/jquery/src/data/var/acceptData.js delete mode 100644 bower_components/jquery/src/data/var/dataPriv.js delete mode 100644 bower_components/jquery/src/data/var/dataUser.js delete mode 100644 bower_components/jquery/src/deferred.js delete mode 100644 bower_components/jquery/src/deferred/exceptionHook.js delete mode 100644 bower_components/jquery/src/deprecated.js delete mode 100644 bower_components/jquery/src/dimensions.js delete mode 100644 bower_components/jquery/src/effects.js delete mode 100644 bower_components/jquery/src/effects/Tween.js delete mode 100644 bower_components/jquery/src/effects/animatedSelector.js delete mode 100644 bower_components/jquery/src/event.js delete mode 100644 bower_components/jquery/src/event/ajax.js delete mode 100644 bower_components/jquery/src/event/alias.js delete mode 100644 bower_components/jquery/src/event/focusin.js delete mode 100644 bower_components/jquery/src/event/support.js delete mode 100644 bower_components/jquery/src/event/trigger.js delete mode 100644 bower_components/jquery/src/exports/amd.js delete mode 100644 bower_components/jquery/src/exports/global.js delete mode 100644 bower_components/jquery/src/jquery.js delete mode 100644 bower_components/jquery/src/manipulation.js delete mode 100644 bower_components/jquery/src/manipulation/_evalUrl.js delete mode 100644 bower_components/jquery/src/manipulation/buildFragment.js delete mode 100644 bower_components/jquery/src/manipulation/getAll.js delete mode 100644 bower_components/jquery/src/manipulation/setGlobalEval.js delete mode 100644 bower_components/jquery/src/manipulation/support.js delete mode 100644 bower_components/jquery/src/manipulation/var/rcheckableType.js delete mode 100644 bower_components/jquery/src/manipulation/var/rscriptType.js delete mode 100644 bower_components/jquery/src/manipulation/var/rtagName.js delete mode 100644 bower_components/jquery/src/manipulation/wrapMap.js delete mode 100644 bower_components/jquery/src/offset.js delete mode 100644 bower_components/jquery/src/queue.js delete mode 100644 bower_components/jquery/src/queue/delay.js delete mode 100644 bower_components/jquery/src/selector-native.js delete mode 100644 bower_components/jquery/src/selector-sizzle.js delete mode 100644 bower_components/jquery/src/selector.js delete mode 100644 bower_components/jquery/src/serialize.js delete mode 100644 bower_components/jquery/src/traversing.js delete mode 100644 bower_components/jquery/src/traversing/findFilter.js delete mode 100644 bower_components/jquery/src/traversing/var/dir.js delete mode 100644 bower_components/jquery/src/traversing/var/rneedsContext.js delete mode 100644 bower_components/jquery/src/traversing/var/siblings.js delete mode 100644 bower_components/jquery/src/var/ObjectFunctionString.js delete mode 100644 bower_components/jquery/src/var/arr.js delete mode 100644 bower_components/jquery/src/var/class2type.js delete mode 100644 bower_components/jquery/src/var/concat.js delete mode 100644 bower_components/jquery/src/var/document.js delete mode 100644 bower_components/jquery/src/var/documentElement.js delete mode 100644 bower_components/jquery/src/var/fnToString.js delete mode 100644 bower_components/jquery/src/var/getProto.js delete mode 100644 bower_components/jquery/src/var/hasOwn.js delete mode 100644 bower_components/jquery/src/var/indexOf.js delete mode 100644 bower_components/jquery/src/var/pnum.js delete mode 100644 bower_components/jquery/src/var/push.js delete mode 100644 bower_components/jquery/src/var/rcssNum.js delete mode 100644 bower_components/jquery/src/var/rnothtmlwhite.js delete mode 100644 bower_components/jquery/src/var/slice.js delete mode 100644 bower_components/jquery/src/var/support.js delete mode 100644 bower_components/jquery/src/var/toString.js delete mode 100644 bower_components/jquery/src/wrap.js delete mode 100644 bower_components/select2/.bower.json delete mode 100644 bower_components/select2/.editorconfig delete mode 100644 bower_components/select2/.gitignore delete mode 100644 bower_components/select2/.jshintignore delete mode 100644 bower_components/select2/.jshintrc delete mode 100644 bower_components/select2/.travis.yml delete mode 100644 bower_components/select2/CONTRIBUTING.md delete mode 100644 bower_components/select2/Gruntfile.js delete mode 100644 bower_components/select2/ISSUE_TEMPLATE.md delete mode 100644 bower_components/select2/LICENSE.md delete mode 100644 bower_components/select2/PULL_REQUEST_TEMPLATE.md delete mode 100644 bower_components/select2/README.md delete mode 100644 bower_components/select2/bower.json delete mode 100644 bower_components/select2/component.json delete mode 100644 bower_components/select2/composer.json delete mode 100644 bower_components/select2/dist/css/select2.css delete mode 100644 bower_components/select2/dist/css/select2.min.css delete mode 100644 bower_components/select2/dist/js/i18n/ar.js delete mode 100644 bower_components/select2/dist/js/i18n/az.js delete mode 100644 bower_components/select2/dist/js/i18n/bg.js delete mode 100644 bower_components/select2/dist/js/i18n/ca.js delete mode 100644 bower_components/select2/dist/js/i18n/cs.js delete mode 100644 bower_components/select2/dist/js/i18n/da.js delete mode 100644 bower_components/select2/dist/js/i18n/de.js delete mode 100644 bower_components/select2/dist/js/i18n/el.js delete mode 100644 bower_components/select2/dist/js/i18n/en.js delete mode 100644 bower_components/select2/dist/js/i18n/es.js delete mode 100644 bower_components/select2/dist/js/i18n/et.js delete mode 100644 bower_components/select2/dist/js/i18n/eu.js delete mode 100644 bower_components/select2/dist/js/i18n/fa.js delete mode 100644 bower_components/select2/dist/js/i18n/fi.js delete mode 100644 bower_components/select2/dist/js/i18n/fr.js delete mode 100644 bower_components/select2/dist/js/i18n/gl.js delete mode 100644 bower_components/select2/dist/js/i18n/he.js delete mode 100644 bower_components/select2/dist/js/i18n/hi.js delete mode 100644 bower_components/select2/dist/js/i18n/hr.js delete mode 100644 bower_components/select2/dist/js/i18n/hu.js delete mode 100644 bower_components/select2/dist/js/i18n/id.js delete mode 100644 bower_components/select2/dist/js/i18n/is.js delete mode 100644 bower_components/select2/dist/js/i18n/it.js delete mode 100644 bower_components/select2/dist/js/i18n/ja.js delete mode 100644 bower_components/select2/dist/js/i18n/km.js delete mode 100644 bower_components/select2/dist/js/i18n/ko.js delete mode 100644 bower_components/select2/dist/js/i18n/lt.js delete mode 100644 bower_components/select2/dist/js/i18n/lv.js delete mode 100644 bower_components/select2/dist/js/i18n/mk.js delete mode 100644 bower_components/select2/dist/js/i18n/ms.js delete mode 100644 bower_components/select2/dist/js/i18n/nb.js delete mode 100644 bower_components/select2/dist/js/i18n/nl.js delete mode 100644 bower_components/select2/dist/js/i18n/pl.js delete mode 100644 bower_components/select2/dist/js/i18n/pt-BR.js delete mode 100644 bower_components/select2/dist/js/i18n/pt.js delete mode 100644 bower_components/select2/dist/js/i18n/ro.js delete mode 100644 bower_components/select2/dist/js/i18n/ru.js delete mode 100644 bower_components/select2/dist/js/i18n/sk.js delete mode 100644 bower_components/select2/dist/js/i18n/sr-Cyrl.js delete mode 100644 bower_components/select2/dist/js/i18n/sr.js delete mode 100644 bower_components/select2/dist/js/i18n/sv.js delete mode 100644 bower_components/select2/dist/js/i18n/th.js delete mode 100644 bower_components/select2/dist/js/i18n/tr.js delete mode 100644 bower_components/select2/dist/js/i18n/uk.js delete mode 100644 bower_components/select2/dist/js/i18n/vi.js delete mode 100644 bower_components/select2/dist/js/i18n/zh-CN.js delete mode 100644 bower_components/select2/dist/js/i18n/zh-TW.js delete mode 100644 bower_components/select2/dist/js/select2.full.js delete mode 100644 bower_components/select2/dist/js/select2.full.min.js delete mode 100644 bower_components/select2/dist/js/select2.js delete mode 100644 bower_components/select2/dist/js/select2.min.js delete mode 100644 bower_components/select2/docs/.gitignore delete mode 100644 bower_components/select2/docs/README.md delete mode 100644 bower_components/select2/docs/_includes/examples/basics.html delete mode 100644 bower_components/select2/docs/_includes/examples/data.html delete mode 100644 bower_components/select2/docs/_includes/examples/disabled-mode.html delete mode 100644 bower_components/select2/docs/_includes/examples/disabled-results.html delete mode 100644 bower_components/select2/docs/_includes/examples/hide-search.html delete mode 100644 bower_components/select2/docs/_includes/examples/localization-rtl-diacritics.html delete mode 100644 bower_components/select2/docs/_includes/examples/matcher.html delete mode 100644 bower_components/select2/docs/_includes/examples/multiple-max.html delete mode 100644 bower_components/select2/docs/_includes/examples/placeholders.html delete mode 100644 bower_components/select2/docs/_includes/examples/programmatic-control.html delete mode 100644 bower_components/select2/docs/_includes/examples/tags.html delete mode 100644 bower_components/select2/docs/_includes/examples/themes-templating-responsive-design.html delete mode 100644 bower_components/select2/docs/_includes/examples/tokenizer.html delete mode 100644 bower_components/select2/docs/_includes/footer.html delete mode 100644 bower_components/select2/docs/_includes/ga.html delete mode 100644 bower_components/select2/docs/_includes/head.html delete mode 100644 bower_components/select2/docs/_includes/js-source-states.html delete mode 100644 bower_components/select2/docs/_includes/nav/announcements-4.0.html delete mode 100644 bower_components/select2/docs/_includes/nav/examples.html delete mode 100644 bower_components/select2/docs/_includes/nav/options-old.html delete mode 100644 bower_components/select2/docs/_includes/nav/options.html delete mode 100644 bower_components/select2/docs/_includes/navigation.html delete mode 100644 bower_components/select2/docs/_includes/notice-previous.html delete mode 100644 bower_components/select2/docs/_includes/options-old/adapters.html delete mode 100644 bower_components/select2/docs/_includes/options-old/backwards-compatibility.html delete mode 100644 bower_components/select2/docs/_includes/options-old/core-options.html delete mode 100644 bower_components/select2/docs/_includes/options-old/dropdown.html delete mode 100644 bower_components/select2/docs/_includes/options-old/events.html delete mode 100644 bower_components/select2/docs/_includes/options-old/setting-default-options.html delete mode 100644 bower_components/select2/docs/_includes/options/compatibility.html delete mode 100644 bower_components/select2/docs/_includes/options/compatibility/initial-selection.html delete mode 100644 bower_components/select2/docs/_includes/options/compatibility/introduction.html delete mode 100644 bower_components/select2/docs/_includes/options/compatibility/matcher.html delete mode 100644 bower_components/select2/docs/_includes/options/compatibility/query-function.html delete mode 100644 bower_components/select2/docs/_includes/options/compatibility/text-input.html delete mode 100644 bower_components/select2/docs/_includes/options/core.html delete mode 100644 bower_components/select2/docs/_includes/options/core/amd-support.html delete mode 100644 bower_components/select2/docs/_includes/options/core/data-attributes.html delete mode 100644 bower_components/select2/docs/_includes/options/core/options.html delete mode 100644 bower_components/select2/docs/_includes/options/data.html delete mode 100644 bower_components/select2/docs/_includes/options/data/ajax.html delete mode 100644 bower_components/select2/docs/_includes/options/data/array.html delete mode 100644 bower_components/select2/docs/_includes/options/data/select.html delete mode 100644 bower_components/select2/docs/_includes/options/dropdown.html delete mode 100644 bower_components/select2/docs/_includes/options/dropdown/filtering.html delete mode 100644 bower_components/select2/docs/_includes/options/dropdown/placement.html delete mode 100644 bower_components/select2/docs/_includes/options/dropdown/selections.html delete mode 100644 bower_components/select2/docs/_includes/options/dropdown/tagging.html delete mode 100644 bower_components/select2/docs/_includes/options/events.html delete mode 100644 bower_components/select2/docs/_includes/options/events/internal.html delete mode 100644 bower_components/select2/docs/_includes/options/events/jquery.html delete mode 100644 bower_components/select2/docs/_includes/options/introduction.html delete mode 100644 bower_components/select2/docs/_includes/options/not-written.html delete mode 100644 bower_components/select2/docs/_includes/options/selections.html delete mode 100644 bower_components/select2/docs/_includes/options/selections/clearing-selections.html delete mode 100644 bower_components/select2/docs/_includes/options/selections/multiple.html delete mode 100644 bower_components/select2/docs/_includes/options/selections/placeholder.html delete mode 100644 bower_components/select2/docs/_includes/options/selections/templating.html delete mode 100644 bower_components/select2/docs/_includes/social-buttons.html delete mode 100644 bower_components/select2/docs/_layouts/default.html delete mode 100644 bower_components/select2/docs/_layouts/home.html delete mode 100644 bower_components/select2/docs/_sass/_alert.scss delete mode 100644 bower_components/select2/docs/_sass/_anchorjs.scss delete mode 100644 bower_components/select2/docs/_sass/_buttons.scss delete mode 100644 bower_components/select2/docs/_sass/_code.scss delete mode 100644 bower_components/select2/docs/_sass/_dl-panels.scss delete mode 100644 bower_components/select2/docs/_sass/_examples.scss delete mode 100644 bower_components/select2/docs/_sass/_featurette.scss delete mode 100644 bower_components/select2/docs/_sass/_footer.scss delete mode 100644 bower_components/select2/docs/_sass/_hamburger.scss delete mode 100644 bower_components/select2/docs/_sass/_home.scss delete mode 100644 bower_components/select2/docs/_sass/_jumbotron.scss delete mode 100644 bower_components/select2/docs/_sass/_layout.scss delete mode 100644 bower_components/select2/docs/_sass/_nav.scss delete mode 100644 bower_components/select2/docs/_sass/_prettify.scss delete mode 100644 bower_components/select2/docs/_sass/_result-repository.scss delete mode 100644 bower_components/select2/docs/_sass/_sidenav.scss delete mode 100644 bower_components/select2/docs/_sass/_social.scss delete mode 100644 bower_components/select2/docs/_sass/_syntax-highlighting.scss delete mode 100644 bower_components/select2/docs/_sass/_typography.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_alerts.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_badges.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_breadcrumbs.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_button-groups.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_buttons.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_carousel.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_close.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_code.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_component-animations.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_dropdowns.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_forms.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_glyphicons.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_grid.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_input-groups.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_jumbotron.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_labels.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_list-group.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_media.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_mixins.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_modals.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_navbar.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_navs.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_normalize.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_pager.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_pagination.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_panels.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_popovers.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_print.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_progress-bars.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-embed.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-utilities.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_scaffolding.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_tables.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_theme.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_thumbnails.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_tooltip.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_type.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_utilities.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_variables.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/_wells.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_alerts.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_background-variant.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_border-radius.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_buttons.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_center-block.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_clearfix.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_forms.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_gradients.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid-framework.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_hide-text.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_image.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_labels.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_list-group.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-divider.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-vertical-align.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_opacity.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_pagination.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_panels.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_progress-bar.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-filter.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-text.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_resize.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_responsive-visibility.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_size.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_tab-focus.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_table-row.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-emphasis.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-overflow.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_vendor-prefixes.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_animated.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_bordered-pulled.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_core.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_fixed-width.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_icons.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_larger.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_list.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_mixins.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_path.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_rotated-flipped.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_stacked.scss delete mode 100644 bower_components/select2/docs/_sass/vendor/font-awesome/_variables.scss delete mode 100644 bower_components/select2/docs/announcements-4.0.html delete mode 100644 bower_components/select2/docs/browserconfig.xml delete mode 100644 bower_components/select2/docs/community.html delete mode 100644 bower_components/select2/docs/css/bootstrap.scss delete mode 100644 bower_components/select2/docs/css/font-awesome.scss delete mode 100644 bower_components/select2/docs/css/s2-docs.scss delete mode 100644 bower_components/select2/docs/dist/.gitkeep delete mode 100644 bower_components/select2/docs/examples.html delete mode 100644 bower_components/select2/docs/images/android-chrome-36x36.png delete mode 100644 bower_components/select2/docs/images/android-chrome-48x48.png delete mode 100644 bower_components/select2/docs/images/android-chrome-72x72.png delete mode 100644 bower_components/select2/docs/images/apple-touch-icon-57x57.png delete mode 100644 bower_components/select2/docs/images/apple-touch-icon-60x60.png delete mode 100644 bower_components/select2/docs/images/apple-touch-icon-72x72.png delete mode 100644 bower_components/select2/docs/images/apple-touch-icon-precomposed.png delete mode 100644 bower_components/select2/docs/images/apple-touch-icon.png delete mode 100644 bower_components/select2/docs/images/favicon-16x16.png delete mode 100644 bower_components/select2/docs/images/favicon-32x32.png delete mode 100644 bower_components/select2/docs/images/favicon.ico delete mode 100644 bower_components/select2/docs/images/logo.png delete mode 100644 bower_components/select2/docs/images/manifest.json delete mode 100644 bower_components/select2/docs/images/mstile-150x150.png delete mode 100644 bower_components/select2/docs/images/mstile-310x150.png delete mode 100644 bower_components/select2/docs/images/mstile-70x70.png delete mode 100644 bower_components/select2/docs/images/safari-pinned-tab.svg delete mode 100644 bower_components/select2/docs/index.html delete mode 100644 bower_components/select2/docs/options-old.html delete mode 100644 bower_components/select2/docs/options.html delete mode 100644 bower_components/select2/docs/vendor/fonts/FontAwesome.otf delete mode 100644 bower_components/select2/docs/vendor/fonts/fontawesome-webfont.eot delete mode 100644 bower_components/select2/docs/vendor/fonts/fontawesome-webfont.svg delete mode 100644 bower_components/select2/docs/vendor/fonts/fontawesome-webfont.ttf delete mode 100644 bower_components/select2/docs/vendor/fonts/fontawesome-webfont.woff delete mode 100644 bower_components/select2/docs/vendor/fonts/fontawesome-webfont.woff2 delete mode 100755 bower_components/select2/docs/vendor/images/flags/ak.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/al.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ar.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/az.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ca.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/co.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ct.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/de.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/fl.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ga.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/hi.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ia.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/id.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/il.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/in.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ks.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ky.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/la.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ma.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/md.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/me.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/mi.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/mn.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/mo.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ms.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/mt.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/nc.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/nd.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ne.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/nh.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/nj.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/nm.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/nv.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ny.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/oh.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ok.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/or.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/pa.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ri.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/sc.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/sd.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/tn.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/tx.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/ut.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/va.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/vt.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/wa.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/wi.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/wv.png delete mode 100755 bower_components/select2/docs/vendor/images/flags/wy.png delete mode 100755 bower_components/select2/docs/vendor/js/anchor.min.js delete mode 100644 bower_components/select2/docs/vendor/js/bootstrap.min.js delete mode 100644 bower_components/select2/docs/vendor/js/jquery.min.js delete mode 100644 bower_components/select2/docs/vendor/js/placeholders.jquery.min.js delete mode 100644 bower_components/select2/docs/vendor/js/prettify.min.js delete mode 100644 bower_components/select2/package.json delete mode 100644 bower_components/select2/select2.jquery.json delete mode 100644 bower_components/select2/src/js/banner.end.js delete mode 100644 bower_components/select2/src/js/banner.start.js delete mode 100644 bower_components/select2/src/js/jquery.mousewheel.shim.js delete mode 100644 bower_components/select2/src/js/jquery.select2.js delete mode 100644 bower_components/select2/src/js/jquery.shim.js delete mode 100644 bower_components/select2/src/js/select2/compat/containerCss.js delete mode 100644 bower_components/select2/src/js/select2/compat/dropdownCss.js delete mode 100644 bower_components/select2/src/js/select2/compat/initSelection.js delete mode 100644 bower_components/select2/src/js/select2/compat/inputData.js delete mode 100644 bower_components/select2/src/js/select2/compat/matcher.js delete mode 100644 bower_components/select2/src/js/select2/compat/query.js delete mode 100644 bower_components/select2/src/js/select2/compat/utils.js delete mode 100644 bower_components/select2/src/js/select2/core.js delete mode 100644 bower_components/select2/src/js/select2/data/ajax.js delete mode 100644 bower_components/select2/src/js/select2/data/array.js delete mode 100644 bower_components/select2/src/js/select2/data/base.js delete mode 100644 bower_components/select2/src/js/select2/data/maximumInputLength.js delete mode 100644 bower_components/select2/src/js/select2/data/maximumSelectionLength.js delete mode 100644 bower_components/select2/src/js/select2/data/minimumInputLength.js delete mode 100644 bower_components/select2/src/js/select2/data/select.js delete mode 100644 bower_components/select2/src/js/select2/data/tags.js delete mode 100644 bower_components/select2/src/js/select2/data/tokenizer.js delete mode 100644 bower_components/select2/src/js/select2/defaults.js delete mode 100644 bower_components/select2/src/js/select2/diacritics.js delete mode 100644 bower_components/select2/src/js/select2/dropdown.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/attachBody.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/attachContainer.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/closeOnSelect.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/hidePlaceholder.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/infiniteScroll.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/minimumResultsForSearch.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/search.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/selectOnClose.js delete mode 100644 bower_components/select2/src/js/select2/dropdown/stopPropagation.js delete mode 100644 bower_components/select2/src/js/select2/i18n/ar.js delete mode 100644 bower_components/select2/src/js/select2/i18n/az.js delete mode 100644 bower_components/select2/src/js/select2/i18n/bg.js delete mode 100644 bower_components/select2/src/js/select2/i18n/ca.js delete mode 100644 bower_components/select2/src/js/select2/i18n/cs.js delete mode 100644 bower_components/select2/src/js/select2/i18n/da.js delete mode 100644 bower_components/select2/src/js/select2/i18n/de.js delete mode 100644 bower_components/select2/src/js/select2/i18n/el.js delete mode 100644 bower_components/select2/src/js/select2/i18n/en.js delete mode 100644 bower_components/select2/src/js/select2/i18n/es.js delete mode 100644 bower_components/select2/src/js/select2/i18n/et.js delete mode 100644 bower_components/select2/src/js/select2/i18n/eu.js delete mode 100644 bower_components/select2/src/js/select2/i18n/fa.js delete mode 100644 bower_components/select2/src/js/select2/i18n/fi.js delete mode 100644 bower_components/select2/src/js/select2/i18n/fr.js delete mode 100644 bower_components/select2/src/js/select2/i18n/gl.js delete mode 100644 bower_components/select2/src/js/select2/i18n/he.js delete mode 100644 bower_components/select2/src/js/select2/i18n/hi.js delete mode 100644 bower_components/select2/src/js/select2/i18n/hr.js delete mode 100644 bower_components/select2/src/js/select2/i18n/hu.js delete mode 100644 bower_components/select2/src/js/select2/i18n/id.js delete mode 100644 bower_components/select2/src/js/select2/i18n/is.js delete mode 100644 bower_components/select2/src/js/select2/i18n/it.js delete mode 100644 bower_components/select2/src/js/select2/i18n/ja.js delete mode 100644 bower_components/select2/src/js/select2/i18n/km.js delete mode 100644 bower_components/select2/src/js/select2/i18n/ko.js delete mode 100644 bower_components/select2/src/js/select2/i18n/lt.js delete mode 100644 bower_components/select2/src/js/select2/i18n/lv.js delete mode 100644 bower_components/select2/src/js/select2/i18n/mk.js delete mode 100644 bower_components/select2/src/js/select2/i18n/ms.js delete mode 100644 bower_components/select2/src/js/select2/i18n/nb.js delete mode 100644 bower_components/select2/src/js/select2/i18n/nl.js delete mode 100644 bower_components/select2/src/js/select2/i18n/pl.js delete mode 100644 bower_components/select2/src/js/select2/i18n/pt-BR.js delete mode 100644 bower_components/select2/src/js/select2/i18n/pt.js delete mode 100644 bower_components/select2/src/js/select2/i18n/ro.js delete mode 100644 bower_components/select2/src/js/select2/i18n/ru.js delete mode 100644 bower_components/select2/src/js/select2/i18n/sk.js delete mode 100644 bower_components/select2/src/js/select2/i18n/sr-Cyrl.js delete mode 100644 bower_components/select2/src/js/select2/i18n/sr.js delete mode 100644 bower_components/select2/src/js/select2/i18n/sv.js delete mode 100644 bower_components/select2/src/js/select2/i18n/th.js delete mode 100644 bower_components/select2/src/js/select2/i18n/tr.js delete mode 100644 bower_components/select2/src/js/select2/i18n/uk.js delete mode 100644 bower_components/select2/src/js/select2/i18n/vi.js delete mode 100644 bower_components/select2/src/js/select2/i18n/zh-CN.js delete mode 100644 bower_components/select2/src/js/select2/i18n/zh-TW.js delete mode 100644 bower_components/select2/src/js/select2/keys.js delete mode 100644 bower_components/select2/src/js/select2/options.js delete mode 100644 bower_components/select2/src/js/select2/results.js delete mode 100644 bower_components/select2/src/js/select2/selection/allowClear.js delete mode 100644 bower_components/select2/src/js/select2/selection/base.js delete mode 100644 bower_components/select2/src/js/select2/selection/clickMask.js delete mode 100644 bower_components/select2/src/js/select2/selection/eventRelay.js delete mode 100644 bower_components/select2/src/js/select2/selection/multiple.js delete mode 100644 bower_components/select2/src/js/select2/selection/placeholder.js delete mode 100644 bower_components/select2/src/js/select2/selection/search.js delete mode 100644 bower_components/select2/src/js/select2/selection/single.js delete mode 100644 bower_components/select2/src/js/select2/selection/stopPropagation.js delete mode 100644 bower_components/select2/src/js/select2/translation.js delete mode 100644 bower_components/select2/src/js/select2/utils.js delete mode 100644 bower_components/select2/src/js/wrapper.end.js delete mode 100644 bower_components/select2/src/js/wrapper.start.js delete mode 100644 bower_components/select2/src/scss/_dropdown.scss delete mode 100644 bower_components/select2/src/scss/_multiple.scss delete mode 100644 bower_components/select2/src/scss/_single.scss delete mode 100644 bower_components/select2/src/scss/core.scss delete mode 100644 bower_components/select2/src/scss/mixins/_gradients.scss delete mode 100644 bower_components/select2/src/scss/theme/classic/_defaults.scss delete mode 100644 bower_components/select2/src/scss/theme/classic/_multiple.scss delete mode 100644 bower_components/select2/src/scss/theme/classic/_single.scss delete mode 100644 bower_components/select2/src/scss/theme/classic/layout.scss delete mode 100644 bower_components/select2/src/scss/theme/default/_multiple.scss delete mode 100644 bower_components/select2/src/scss/theme/default/_single.scss delete mode 100644 bower_components/select2/src/scss/theme/default/layout.scss delete mode 100644 bower_components/select2/tests/a11y/search-tests.js delete mode 100644 bower_components/select2/tests/a11y/selection-tests.js delete mode 100644 bower_components/select2/tests/data/array-tests.js delete mode 100644 bower_components/select2/tests/data/base-tests.js delete mode 100644 bower_components/select2/tests/data/inputData-tests.js delete mode 100644 bower_components/select2/tests/data/maximumInputLength-tests.js delete mode 100644 bower_components/select2/tests/data/maximumSelectionLength-tests.js delete mode 100644 bower_components/select2/tests/data/minimumInputLength-tests.js delete mode 100644 bower_components/select2/tests/data/select-tests.js delete mode 100644 bower_components/select2/tests/data/tags-tests.js delete mode 100644 bower_components/select2/tests/data/tokenizer-tests.js delete mode 100644 bower_components/select2/tests/dropdown/dropdownCss-tests.js delete mode 100644 bower_components/select2/tests/dropdown/positioning-tests.js delete mode 100644 bower_components/select2/tests/dropdown/selectOnClose-tests.js delete mode 100644 bower_components/select2/tests/dropdown/stopPropagation-tests.js delete mode 100644 bower_components/select2/tests/helpers.js delete mode 100644 bower_components/select2/tests/integration.html delete mode 100644 bower_components/select2/tests/integration/dom-changes.js delete mode 100644 bower_components/select2/tests/integration/jquery-calls.js delete mode 100644 bower_components/select2/tests/integration/select2-methods.js delete mode 100644 bower_components/select2/tests/options/ajax-tests.js delete mode 100644 bower_components/select2/tests/options/data-tests.js delete mode 100644 bower_components/select2/tests/options/deprecated-tests.js delete mode 100644 bower_components/select2/tests/options/translation-tests.js delete mode 100644 bower_components/select2/tests/options/width-tests.js delete mode 100644 bower_components/select2/tests/results/focusing-tests.js delete mode 100644 bower_components/select2/tests/selection/allowClear-tests.js delete mode 100644 bower_components/select2/tests/selection/containerCss-tests.js delete mode 100644 bower_components/select2/tests/selection/multiple-tests.js delete mode 100644 bower_components/select2/tests/selection/placeholder-tests.js delete mode 100644 bower_components/select2/tests/selection/search-tests.js delete mode 100644 bower_components/select2/tests/selection/single-tests.js delete mode 100644 bower_components/select2/tests/selection/stopPropagation-tests.js delete mode 100644 bower_components/select2/tests/unit.html delete mode 100644 bower_components/select2/tests/utils/decorator-tests.js delete mode 100644 bower_components/select2/tests/utils/escapeMarkup-tests.js delete mode 100644 bower_components/select2/tests/vendor/jquery-1.7.2.js delete mode 100644 bower_components/select2/tests/vendor/qunit-1.23.1.css delete mode 100644 bower_components/select2/tests/vendor/qunit-1.23.1.js delete mode 100644 bower_components/select2/vendor/jquery-2.1.0.js delete mode 100644 bower_components/tether/.bower.json delete mode 100644 bower_components/tether/CHANGELOG.md delete mode 100644 bower_components/tether/CONTRIBUTING.md delete mode 100644 bower_components/tether/LICENSE delete mode 100644 bower_components/tether/README.md delete mode 100644 bower_components/tether/bower.json delete mode 100644 bower_components/tether/component.json delete mode 100644 bower_components/tether/dist/css/tether-theme-arrows-dark.css delete mode 100644 bower_components/tether/dist/css/tether-theme-arrows-dark.min.css delete mode 100644 bower_components/tether/dist/css/tether-theme-arrows.css delete mode 100644 bower_components/tether/dist/css/tether-theme-arrows.min.css delete mode 100644 bower_components/tether/dist/css/tether-theme-basic.css delete mode 100644 bower_components/tether/dist/css/tether-theme-basic.min.css delete mode 100644 bower_components/tether/dist/css/tether.css delete mode 100644 bower_components/tether/dist/css/tether.min.css delete mode 100644 bower_components/tether/dist/js/tether.js delete mode 100644 bower_components/tether/dist/js/tether.min.js delete mode 100644 bower_components/tether/docs/1-Overview/1-why_you_should_use_tether.md delete mode 100644 bower_components/tether/docs/1-Overview/2-repositioning.md delete mode 100644 bower_components/tether/docs/1-Overview/3-why_we_dont_support_IE_8.md delete mode 100644 bower_components/tether/docs/2-Examples/1-list_of_examples.md delete mode 100644 bower_components/tether/docs/2-Examples/2-projects_using_tether.md delete mode 100644 bower_components/tether/docs/3-Advanced/1-embedding_tether.md delete mode 100644 bower_components/tether/docs/3-Advanced/2-extending_tether.md delete mode 100644 bower_components/tether/docs/coffee/intro.coffee delete mode 100644 bower_components/tether/docs/css/intro.css delete mode 100644 bower_components/tether/docs/intro.md delete mode 100644 bower_components/tether/docs/js/intro.js delete mode 100644 bower_components/tether/docs/js/markAttachment.js delete mode 100644 bower_components/tether/docs/sass/intro.sass delete mode 100644 bower_components/tether/docs/welcome/browser-demo.html delete mode 100644 bower_components/tether/docs/welcome/coffee/welcome.coffee delete mode 100644 bower_components/tether/docs/welcome/css/browser-demo.css delete mode 100644 bower_components/tether/docs/welcome/css/prism.css delete mode 100644 bower_components/tether/docs/welcome/css/welcome.css delete mode 100644 bower_components/tether/docs/welcome/index.html delete mode 100644 bower_components/tether/docs/welcome/js/drop.js delete mode 100644 bower_components/tether/docs/welcome/js/jquery.js delete mode 100644 bower_components/tether/docs/welcome/js/log.js delete mode 100644 bower_components/tether/docs/welcome/js/tether-v0.1.3.js delete mode 100644 bower_components/tether/docs/welcome/js/welcome.js delete mode 100644 bower_components/tether/docs/welcome/sass/_inline-block.sass delete mode 100644 bower_components/tether/docs/welcome/sass/browser-demo.sass delete mode 100644 bower_components/tether/docs/welcome/sass/welcome.sass delete mode 100644 bower_components/tether/examples/chosen/chosen-sprite.png delete mode 100644 bower_components/tether/examples/chosen/chosen-sprite@2x.png delete mode 100644 bower_components/tether/examples/chosen/chosen.css delete mode 100644 bower_components/tether/examples/chosen/chosen.js delete mode 100644 bower_components/tether/examples/chosen/index.html delete mode 100644 bower_components/tether/examples/common/css/style.css delete mode 100644 bower_components/tether/examples/content-visible/index.html delete mode 100644 bower_components/tether/examples/dolls/dolls.css delete mode 100644 bower_components/tether/examples/dolls/dolls.js delete mode 100644 bower_components/tether/examples/dolls/index.html delete mode 100644 bower_components/tether/examples/element-scroll/index.html delete mode 100644 bower_components/tether/examples/enable-disable/index.html delete mode 100644 bower_components/tether/examples/facebook/facebook.css delete mode 100644 bower_components/tether/examples/facebook/index.html delete mode 100644 bower_components/tether/examples/out-of-bounds/index.html delete mode 100644 bower_components/tether/examples/pin/index.html delete mode 100644 bower_components/tether/examples/resources/css/base.css delete mode 100644 bower_components/tether/examples/resources/js/jquery.js delete mode 100644 bower_components/tether/examples/resources/js/log.js delete mode 100644 bower_components/tether/examples/scroll/index.html delete mode 100644 bower_components/tether/examples/simple/index.html delete mode 100644 bower_components/tether/examples/testbed/index.html delete mode 100644 bower_components/tether/examples/tooltip/index.html delete mode 100644 bower_components/tether/examples/viewport/colors.css delete mode 100644 bower_components/tether/examples/viewport/index.html delete mode 100644 bower_components/tether/gulpfile.js delete mode 100644 bower_components/tether/package.json delete mode 100644 bower_components/tether/src/css/helpers/_tether-theme-arrows.sass delete mode 100644 bower_components/tether/src/css/helpers/_tether-theme-basic.sass delete mode 100644 bower_components/tether/src/css/helpers/_tether.sass delete mode 100644 bower_components/tether/src/css/mixins/_inline-block.sass delete mode 100644 bower_components/tether/src/css/mixins/_pie-clearfix.sass delete mode 100644 bower_components/tether/src/css/tether-theme-arrows-dark.sass delete mode 100644 bower_components/tether/src/css/tether-theme-arrows.sass delete mode 100644 bower_components/tether/src/css/tether-theme-basic.sass delete mode 100644 bower_components/tether/src/css/tether.sass delete mode 100644 bower_components/tether/src/js/abutment.js delete mode 100644 bower_components/tether/src/js/constraint.js delete mode 100644 bower_components/tether/src/js/markAttachment.js delete mode 100644 bower_components/tether/src/js/shift.js delete mode 100644 bower_components/tether/src/js/tether.js delete mode 100644 bower_components/tether/src/js/utils.js diff --git a/bower_components/blueimp-canvas-to-blob/.bower.json b/bower_components/blueimp-canvas-to-blob/.bower.json deleted file mode 100644 index d73c7db161..0000000000 --- a/bower_components/blueimp-canvas-to-blob/.bower.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "blueimp-canvas-to-blob", - "homepage": "https://github.com/blueimp/JavaScript-Canvas-to-Blob", - "version": "3.6.0", - "_release": "3.6.0", - "_resolution": { - "type": "version", - "tag": "v3.6.0", - "commit": "4835e7a42d0e0e687d8bffca934bb0648bfae61b" - }, - "_source": "https://github.com/blueimp/JavaScript-Canvas-to-Blob.git", - "_target": ">=2.1.1", - "_originalSource": "blueimp-canvas-to-blob" -} \ No newline at end of file diff --git a/bower_components/blueimp-canvas-to-blob/.gitignore b/bower_components/blueimp-canvas-to-blob/.gitignore deleted file mode 100644 index 9daa8247da..0000000000 --- a/bower_components/blueimp-canvas-to-blob/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -node_modules diff --git a/bower_components/blueimp-canvas-to-blob/.npmignore b/bower_components/blueimp-canvas-to-blob/.npmignore deleted file mode 100644 index a508bcb5d2..0000000000 --- a/bower_components/blueimp-canvas-to-blob/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!js/*.js -!js/*.js.map diff --git a/bower_components/blueimp-canvas-to-blob/.travis.yml b/bower_components/blueimp-canvas-to-blob/.travis.yml deleted file mode 100644 index 7a56d2a537..0000000000 --- a/bower_components/blueimp-canvas-to-blob/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "stable" diff --git a/bower_components/blueimp-canvas-to-blob/README.md b/bower_components/blueimp-canvas-to-blob/README.md deleted file mode 100644 index b6af2c2c2c..0000000000 --- a/bower_components/blueimp-canvas-to-blob/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# JavaScript Canvas to Blob - -## Description -Canvas to Blob is a polyfill for the standard JavaScript -[canvas.toBlob](http://www.w3.org/TR/html5/scripting-1.html#dom-canvas-toblob) -method. - -It can be used to create -[Blob](https://developer.mozilla.org/en-US/docs/Web/API/Blob) -objects from an HTML -[canvas](https://developer.mozilla.org/en-US/docs/HTML/Canvas) element. - -## Usage -Include the (minified) JavaScript Canvas to Blob script in your HTML markup: - -```html - -``` - -Then use the *canvas.toBlob()* method in the same way as the native -implementation: - -```js -var canvas = document.createElement('canvas'); -/* ... your canvas manipulations ... */ -if (canvas.toBlob) { - canvas.toBlob( - function (blob) { - // Do something with the blob object, - // e.g. creating a multipart form for file uploads: - var formData = new FormData(); - formData.append('file', blob, fileName); - /* ... */ - }, - 'image/jpeg' - ); -} -``` - -## Requirements -The JavaScript Canvas to Blob function has zero dependencies. - -However, Canvas to Blob is a very suitable complement to the -[JavaScript Load Image](https://github.com/blueimp/JavaScript-Load-Image) -function. - -## API -In addition to the **canvas.toBlob** polyfill, the JavaScript Canvas to Blob -script provides one additional function called **dataURLtoBlob**, which is added -to the global window object, unless the library is loaded via a module loader -like RequireJS, Browserify or webpack: - -```js -// 80x60px GIF image (color black, base64 data): -var b64Data = 'R0lGODdhUAA8AIABAAAAAP///ywAAAAAUAA8AAACS4SPqcvtD6' + - 'OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofE' + - 'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7', - imageUrl = 'data:image/gif;base64,' + b64Data, - blob = window.dataURLtoBlob && window.dataURLtoBlob(imageUrl); -``` - -## Browsers -The following browsers support either the native or the polyfill -*canvas.toBlob()* method: - -### Desktop browsers - -* Google Chrome (see [Chromium issue #67587](https://code.google.com/p/chromium/issues/detail?id=67587)) -* Apple Safari 6.0+ (see [Mozilla issue #648610](https://bugzilla.mozilla.org/show_bug.cgi?id=648610)) -* Mozilla Firefox 4.0+ -* Microsoft Internet Explorer 10.0+ - -### Mobile browsers - -* Apple Safari Mobile on iOS 6.0+ -* Google Chrome on iOS 6.0+ -* Google Chrome on Android 4.0+ - -## Test -[JavaScript Canvas to Blob Test](https://blueimp.github.io/JavaScript-Canvas-to-Blob/test/) - -## License -The JavaScript Canvas to Blob script is released under the -[MIT license](http://www.opensource.org/licenses/MIT). diff --git a/bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.js b/bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.js deleted file mode 100644 index 32913667b1..0000000000 --- a/bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.js +++ /dev/null @@ -1,111 +0,0 @@ -/* - * JavaScript Canvas to Blob - * https://github.com/blueimp/JavaScript-Canvas-to-Blob - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - * - * Based on stackoverflow user Stoive's code snippet: - * http://stackoverflow.com/q/4998908 - */ - -/* global atob, Blob, define */ - -;(function (window) { - 'use strict' - - var CanvasPrototype = window.HTMLCanvasElement && - window.HTMLCanvasElement.prototype - var hasBlobConstructor = window.Blob && (function () { - try { - return Boolean(new Blob()) - } catch (e) { - return false - } - }()) - var hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && - (function () { - try { - return new Blob([new Uint8Array(100)]).size === 100 - } catch (e) { - return false - } - }()) - var BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || - window.MozBlobBuilder || window.MSBlobBuilder - var dataURIPattern = /^data:((.*?)(;charset=.*?)?)(;base64)?,/ - var dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && - window.ArrayBuffer && window.Uint8Array && - function (dataURI) { - var matches, - mediaType, - isBase64, - dataString, - byteString, - arrayBuffer, - intArray, - i, - bb - // Parse the dataURI components as per RFC 2397 - matches = dataURI.match(dataURIPattern) - if (!matches) { - throw new Error('invalid data URI') - } - // Default to text/plain;charset=US-ASCII - mediaType = matches[2] - ? matches[1] - : 'text/plain' + (matches[3] || ';charset=US-ASCII') - isBase64 = !!matches[4] - dataString = dataURI.slice(matches[0].length) - if (isBase64) { - // Convert base64 to raw binary data held in a string: - byteString = atob(dataString) - } else { - // Convert base64/URLEncoded data component to raw binary: - byteString = decodeURIComponent(dataString) - } - // Write the bytes of the string to an ArrayBuffer: - arrayBuffer = new ArrayBuffer(byteString.length) - intArray = new Uint8Array(arrayBuffer) - for (i = 0; i < byteString.length; i += 1) { - intArray[i] = byteString.charCodeAt(i) - } - // Write the ArrayBuffer (or ArrayBufferView) to a blob: - if (hasBlobConstructor) { - return new Blob( - [hasArrayBufferViewSupport ? intArray : arrayBuffer], - {type: mediaType} - ) - } - bb = new BlobBuilder() - bb.append(arrayBuffer) - return bb.getBlob(mediaType) - } - if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) { - if (CanvasPrototype.mozGetAsFile) { - CanvasPrototype.toBlob = function (callback, type, quality) { - if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) { - callback(dataURLtoBlob(this.toDataURL(type, quality))) - } else { - callback(this.mozGetAsFile('blob', type)) - } - } - } else if (CanvasPrototype.toDataURL && dataURLtoBlob) { - CanvasPrototype.toBlob = function (callback, type, quality) { - callback(dataURLtoBlob(this.toDataURL(type, quality))) - } - } - } - if (typeof define === 'function' && define.amd) { - define(function () { - return dataURLtoBlob - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = dataURLtoBlob - } else { - window.dataURLtoBlob = dataURLtoBlob - } -}(window)) diff --git a/bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.min.js b/bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.min.js deleted file mode 100644 index 1c82bba850..0000000000 --- a/bower_components/blueimp-canvas-to-blob/js/canvas-to-blob.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t){"use strict";var e=t.HTMLCanvasElement&&t.HTMLCanvasElement.prototype,o=t.Blob&&function(){try{return Boolean(new Blob)}catch(t){return!1}}(),n=o&&t.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(t){return!1}}(),r=t.BlobBuilder||t.WebKitBlobBuilder||t.MozBlobBuilder||t.MSBlobBuilder,a=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,i=(o||r)&&t.atob&&t.ArrayBuffer&&t.Uint8Array&&function(t){var e,i,l,u,b,c,d,B,f;if(e=t.match(a),!e)throw new Error("invalid data URI");for(i=e[2]?e[1]:"text/plain"+(e[3]||";charset=US-ASCII"),l=!!e[4],u=t.slice(e[0].length),b=l?atob(u):decodeURIComponent(u),c=new ArrayBuffer(b.length),d=new Uint8Array(c),B=0;B - - - - - -JavaScript Canvas to Blob Test - - - - -
- - - - - - - - - diff --git a/bower_components/blueimp-canvas-to-blob/test/test.js b/bower_components/blueimp-canvas-to-blob/test/test.js deleted file mode 100644 index 9a81db0e8d..0000000000 --- a/bower_components/blueimp-canvas-to-blob/test/test.js +++ /dev/null @@ -1,92 +0,0 @@ -/* - * JavaScript Canvas to Blob Test - * https://github.com/blueimp/JavaScript-Canvas-to-Blob - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global describe, it, Blob */ - -;(function (expect) { - 'use strict' - - // 80x60px GIF image (color black, base64 data): - var b64Data = 'R0lGODdhUAA8AIABAAAAAP///ywAAAAAUAA8AAACS4SPqcvtD6' + - 'OctNqLs968+w+G4kiW5omm6sq27gvH8kzX9o3n+s73/g8MCofE' + - 'ovGITCqXzKbzCY1Kp9Sq9YrNarfcrvcLDovH5PKsAAA7' - var imageUrl = 'data:image/gif;base64,' + b64Data - var blob = window.dataURLtoBlob && window.dataURLtoBlob(imageUrl) - - describe('canvas.toBlob', function () { - it('Converts a canvas element to a blob and passes it to the callback function', function (done) { - window.loadImage(blob, function (canvas) { - canvas.toBlob( - function (newBlob) { - expect(newBlob).to.be.a.instanceOf(Blob) - done() - } - ) - }, {canvas: true}) - }) - - it('Converts a canvas element to a PNG blob', function (done) { - window.loadImage(blob, function (canvas) { - canvas.toBlob( - function (newBlob) { - expect(newBlob.type).to.equal('image/png') - done() - }, - 'image/png' - ) - }, {canvas: true}) - }) - - it('Converts a canvas element to a JPG blob', function (done) { - window.loadImage(blob, function (canvas) { - canvas.toBlob( - function (newBlob) { - expect(newBlob.type).to.equal('image/jpeg') - done() - }, - 'image/jpeg' - ) - }, {canvas: true}) - }) - - it('Keeps the aspect ratio of the canvas image', function (done) { - window.loadImage(blob, function (canvas) { - canvas.toBlob( - function (newBlob) { - window.loadImage(newBlob, function (img) { - expect(img.width).to.equal(canvas.width) - expect(img.height).to.equal(canvas.height) - done() - }) - } - ) - }, {canvas: true}) - }) - - it('Keeps the image data of the canvas image', function (done) { - window.loadImage(blob, function (canvas) { - canvas.toBlob( - function (newBlob) { - window.loadImage(newBlob, function (newCanvas) { - var canvasData = canvas.getContext('2d') - .getImageData(0, 0, canvas.width, canvas.height) - var newCanvasData = newCanvas.getContext('2d') - .getImageData(0, 0, newCanvas.width, newCanvas.height) - expect(canvasData.width).to.equal(newCanvasData.width) - expect(canvasData.height).to.equal(newCanvasData.height) - done() - }, {canvas: true}) - } - ) - }, {canvas: true}) - }) - }) -}(this.chai.expect)) diff --git a/bower_components/blueimp-canvas-to-blob/test/vendor/chai.js b/bower_components/blueimp-canvas-to-blob/test/vendor/chai.js deleted file mode 100644 index bbe4c4a290..0000000000 --- a/bower_components/blueimp-canvas-to-blob/test/vendor/chai.js +++ /dev/null @@ -1,6142 +0,0 @@ -(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.chai = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o - * MIT Licensed - */ - -var used = [] - , exports = module.exports = {}; - -/*! - * Chai version - */ - -exports.version = '3.5.0'; - -/*! - * Assertion Error - */ - -exports.AssertionError = require('assertion-error'); - -/*! - * Utils for plugins (not exported) - */ - -var util = require('./chai/utils'); - -/** - * # .use(function) - * - * Provides a way to extend the internals of Chai - * - * @param {Function} - * @returns {this} for chaining - * @api public - */ - -exports.use = function (fn) { - if (!~used.indexOf(fn)) { - fn(this, util); - used.push(fn); - } - - return this; -}; - -/*! - * Utility Functions - */ - -exports.util = util; - -/*! - * Configuration - */ - -var config = require('./chai/config'); -exports.config = config; - -/*! - * Primary `Assertion` prototype - */ - -var assertion = require('./chai/assertion'); -exports.use(assertion); - -/*! - * Core Assertions - */ - -var core = require('./chai/core/assertions'); -exports.use(core); - -/*! - * Expect interface - */ - -var expect = require('./chai/interface/expect'); -exports.use(expect); - -/*! - * Should interface - */ - -var should = require('./chai/interface/should'); -exports.use(should); - -/*! - * Assert interface - */ - -var assert = require('./chai/interface/assert'); -exports.use(assert); - -},{"./chai/assertion":3,"./chai/config":4,"./chai/core/assertions":5,"./chai/interface/assert":6,"./chai/interface/expect":7,"./chai/interface/should":8,"./chai/utils":22,"assertion-error":30}],3:[function(require,module,exports){ -/*! - * chai - * http://chaijs.com - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - */ - -var config = require('./config'); - -module.exports = function (_chai, util) { - /*! - * Module dependencies. - */ - - var AssertionError = _chai.AssertionError - , flag = util.flag; - - /*! - * Module export. - */ - - _chai.Assertion = Assertion; - - /*! - * Assertion Constructor - * - * Creates object for chaining. - * - * @api private - */ - - function Assertion (obj, msg, stack) { - flag(this, 'ssfi', stack || arguments.callee); - flag(this, 'object', obj); - flag(this, 'message', msg); - } - - Object.defineProperty(Assertion, 'includeStack', { - get: function() { - console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); - return config.includeStack; - }, - set: function(value) { - console.warn('Assertion.includeStack is deprecated, use chai.config.includeStack instead.'); - config.includeStack = value; - } - }); - - Object.defineProperty(Assertion, 'showDiff', { - get: function() { - console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); - return config.showDiff; - }, - set: function(value) { - console.warn('Assertion.showDiff is deprecated, use chai.config.showDiff instead.'); - config.showDiff = value; - } - }); - - Assertion.addProperty = function (name, fn) { - util.addProperty(this.prototype, name, fn); - }; - - Assertion.addMethod = function (name, fn) { - util.addMethod(this.prototype, name, fn); - }; - - Assertion.addChainableMethod = function (name, fn, chainingBehavior) { - util.addChainableMethod(this.prototype, name, fn, chainingBehavior); - }; - - Assertion.overwriteProperty = function (name, fn) { - util.overwriteProperty(this.prototype, name, fn); - }; - - Assertion.overwriteMethod = function (name, fn) { - util.overwriteMethod(this.prototype, name, fn); - }; - - Assertion.overwriteChainableMethod = function (name, fn, chainingBehavior) { - util.overwriteChainableMethod(this.prototype, name, fn, chainingBehavior); - }; - - /** - * ### .assert(expression, message, negateMessage, expected, actual, showDiff) - * - * Executes an expression and check expectations. Throws AssertionError for reporting if test doesn't pass. - * - * @name assert - * @param {Philosophical} expression to be tested - * @param {String|Function} message or function that returns message to display if expression fails - * @param {String|Function} negatedMessage or function that returns negatedMessage to display if negated expression fails - * @param {Mixed} expected value (remember to check for negation) - * @param {Mixed} actual (optional) will default to `this.obj` - * @param {Boolean} showDiff (optional) when set to `true`, assert will display a diff in addition to the message if expression fails - * @api private - */ - - Assertion.prototype.assert = function (expr, msg, negateMsg, expected, _actual, showDiff) { - var ok = util.test(this, arguments); - if (true !== showDiff) showDiff = false; - if (true !== config.showDiff) showDiff = false; - - if (!ok) { - var msg = util.getMessage(this, arguments) - , actual = util.getActual(this, arguments); - throw new AssertionError(msg, { - actual: actual - , expected: expected - , showDiff: showDiff - }, (config.includeStack) ? this.assert : flag(this, 'ssfi')); - } - }; - - /*! - * ### ._obj - * - * Quick reference to stored `actual` value for plugin developers. - * - * @api private - */ - - Object.defineProperty(Assertion.prototype, '_obj', - { get: function () { - return flag(this, 'object'); - } - , set: function (val) { - flag(this, 'object', val); - } - }); -}; - -},{"./config":4}],4:[function(require,module,exports){ -module.exports = { - - /** - * ### config.includeStack - * - * User configurable property, influences whether stack trace - * is included in Assertion error message. Default of false - * suppresses stack trace in the error message. - * - * chai.config.includeStack = true; // enable stack on error - * - * @param {Boolean} - * @api public - */ - - includeStack: false, - - /** - * ### config.showDiff - * - * User configurable property, influences whether or not - * the `showDiff` flag should be included in the thrown - * AssertionErrors. `false` will always be `false`; `true` - * will be true when the assertion has requested a diff - * be shown. - * - * @param {Boolean} - * @api public - */ - - showDiff: true, - - /** - * ### config.truncateThreshold - * - * User configurable property, sets length threshold for actual and - * expected values in assertion errors. If this threshold is exceeded, for - * example for large data structures, the value is replaced with something - * like `[ Array(3) ]` or `{ Object (prop1, prop2) }`. - * - * Set it to zero if you want to disable truncating altogether. - * - * This is especially userful when doing assertions on arrays: having this - * set to a reasonable large value makes the failure messages readily - * inspectable. - * - * chai.config.truncateThreshold = 0; // disable truncating - * - * @param {Number} - * @api public - */ - - truncateThreshold: 40 - -}; - -},{}],5:[function(require,module,exports){ -/*! - * chai - * http://chaijs.com - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - */ - -module.exports = function (chai, _) { - var Assertion = chai.Assertion - , toString = Object.prototype.toString - , flag = _.flag; - - /** - * ### Language Chains - * - * The following are provided as chainable getters to - * improve the readability of your assertions. They - * do not provide testing capabilities unless they - * have been overwritten by a plugin. - * - * **Chains** - * - * - to - * - be - * - been - * - is - * - that - * - which - * - and - * - has - * - have - * - with - * - at - * - of - * - same - * - * @name language chains - * @namespace BDD - * @api public - */ - - [ 'to', 'be', 'been' - , 'is', 'and', 'has', 'have' - , 'with', 'that', 'which', 'at' - , 'of', 'same' ].forEach(function (chain) { - Assertion.addProperty(chain, function () { - return this; - }); - }); - - /** - * ### .not - * - * Negates any of assertions following in the chain. - * - * expect(foo).to.not.equal('bar'); - * expect(goodFn).to.not.throw(Error); - * expect({ foo: 'baz' }).to.have.property('foo') - * .and.not.equal('bar'); - * - * @name not - * @namespace BDD - * @api public - */ - - Assertion.addProperty('not', function () { - flag(this, 'negate', true); - }); - - /** - * ### .deep - * - * Sets the `deep` flag, later used by the `equal` and - * `property` assertions. - * - * expect(foo).to.deep.equal({ bar: 'baz' }); - * expect({ foo: { bar: { baz: 'quux' } } }) - * .to.have.deep.property('foo.bar.baz', 'quux'); - * - * `.deep.property` special characters can be escaped - * by adding two slashes before the `.` or `[]`. - * - * var deepCss = { '.link': { '[target]': 42 }}; - * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42); - * - * @name deep - * @namespace BDD - * @api public - */ - - Assertion.addProperty('deep', function () { - flag(this, 'deep', true); - }); - - /** - * ### .any - * - * Sets the `any` flag, (opposite of the `all` flag) - * later used in the `keys` assertion. - * - * expect(foo).to.have.any.keys('bar', 'baz'); - * - * @name any - * @namespace BDD - * @api public - */ - - Assertion.addProperty('any', function () { - flag(this, 'any', true); - flag(this, 'all', false) - }); - - - /** - * ### .all - * - * Sets the `all` flag (opposite of the `any` flag) - * later used by the `keys` assertion. - * - * expect(foo).to.have.all.keys('bar', 'baz'); - * - * @name all - * @namespace BDD - * @api public - */ - - Assertion.addProperty('all', function () { - flag(this, 'all', true); - flag(this, 'any', false); - }); - - /** - * ### .a(type) - * - * The `a` and `an` assertions are aliases that can be - * used either as language chains or to assert a value's - * type. - * - * // typeof - * expect('test').to.be.a('string'); - * expect({ foo: 'bar' }).to.be.an('object'); - * expect(null).to.be.a('null'); - * expect(undefined).to.be.an('undefined'); - * expect(new Error).to.be.an('error'); - * expect(new Promise).to.be.a('promise'); - * expect(new Float32Array()).to.be.a('float32array'); - * expect(Symbol()).to.be.a('symbol'); - * - * // es6 overrides - * expect({[Symbol.toStringTag]:()=>'foo'}).to.be.a('foo'); - * - * // language chain - * expect(foo).to.be.an.instanceof(Foo); - * - * @name a - * @alias an - * @param {String} type - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function an (type, msg) { - if (msg) flag(this, 'message', msg); - type = type.toLowerCase(); - var obj = flag(this, 'object') - , article = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(type.charAt(0)) ? 'an ' : 'a '; - - this.assert( - type === _.type(obj) - , 'expected #{this} to be ' + article + type - , 'expected #{this} not to be ' + article + type - ); - } - - Assertion.addChainableMethod('an', an); - Assertion.addChainableMethod('a', an); - - /** - * ### .include(value) - * - * The `include` and `contain` assertions can be used as either property - * based language chains or as methods to assert the inclusion of an object - * in an array or a substring in a string. When used as language chains, - * they toggle the `contains` flag for the `keys` assertion. - * - * expect([1,2,3]).to.include(2); - * expect('foobar').to.contain('foo'); - * expect({ foo: 'bar', hello: 'universe' }).to.include.keys('foo'); - * - * @name include - * @alias contain - * @alias includes - * @alias contains - * @param {Object|String|Number} obj - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function includeChainingBehavior () { - flag(this, 'contains', true); - } - - function include (val, msg) { - _.expectTypes(this, ['array', 'object', 'string']); - - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - var expected = false; - - if (_.type(obj) === 'array' && _.type(val) === 'object') { - for (var i in obj) { - if (_.eql(obj[i], val)) { - expected = true; - break; - } - } - } else if (_.type(val) === 'object') { - if (!flag(this, 'negate')) { - for (var k in val) new Assertion(obj).property(k, val[k]); - return; - } - var subset = {}; - for (var k in val) subset[k] = obj[k]; - expected = _.eql(subset, val); - } else { - expected = (obj != undefined) && ~obj.indexOf(val); - } - this.assert( - expected - , 'expected #{this} to include ' + _.inspect(val) - , 'expected #{this} to not include ' + _.inspect(val)); - } - - Assertion.addChainableMethod('include', include, includeChainingBehavior); - Assertion.addChainableMethod('contain', include, includeChainingBehavior); - Assertion.addChainableMethod('contains', include, includeChainingBehavior); - Assertion.addChainableMethod('includes', include, includeChainingBehavior); - - /** - * ### .ok - * - * Asserts that the target is truthy. - * - * expect('everything').to.be.ok; - * expect(1).to.be.ok; - * expect(false).to.not.be.ok; - * expect(undefined).to.not.be.ok; - * expect(null).to.not.be.ok; - * - * @name ok - * @namespace BDD - * @api public - */ - - Assertion.addProperty('ok', function () { - this.assert( - flag(this, 'object') - , 'expected #{this} to be truthy' - , 'expected #{this} to be falsy'); - }); - - /** - * ### .true - * - * Asserts that the target is `true`. - * - * expect(true).to.be.true; - * expect(1).to.not.be.true; - * - * @name true - * @namespace BDD - * @api public - */ - - Assertion.addProperty('true', function () { - this.assert( - true === flag(this, 'object') - , 'expected #{this} to be true' - , 'expected #{this} to be false' - , this.negate ? false : true - ); - }); - - /** - * ### .false - * - * Asserts that the target is `false`. - * - * expect(false).to.be.false; - * expect(0).to.not.be.false; - * - * @name false - * @namespace BDD - * @api public - */ - - Assertion.addProperty('false', function () { - this.assert( - false === flag(this, 'object') - , 'expected #{this} to be false' - , 'expected #{this} to be true' - , this.negate ? true : false - ); - }); - - /** - * ### .null - * - * Asserts that the target is `null`. - * - * expect(null).to.be.null; - * expect(undefined).to.not.be.null; - * - * @name null - * @namespace BDD - * @api public - */ - - Assertion.addProperty('null', function () { - this.assert( - null === flag(this, 'object') - , 'expected #{this} to be null' - , 'expected #{this} not to be null' - ); - }); - - /** - * ### .undefined - * - * Asserts that the target is `undefined`. - * - * expect(undefined).to.be.undefined; - * expect(null).to.not.be.undefined; - * - * @name undefined - * @namespace BDD - * @api public - */ - - Assertion.addProperty('undefined', function () { - this.assert( - undefined === flag(this, 'object') - , 'expected #{this} to be undefined' - , 'expected #{this} not to be undefined' - ); - }); - - /** - * ### .NaN - * Asserts that the target is `NaN`. - * - * expect('foo').to.be.NaN; - * expect(4).not.to.be.NaN; - * - * @name NaN - * @namespace BDD - * @api public - */ - - Assertion.addProperty('NaN', function () { - this.assert( - isNaN(flag(this, 'object')) - , 'expected #{this} to be NaN' - , 'expected #{this} not to be NaN' - ); - }); - - /** - * ### .exist - * - * Asserts that the target is neither `null` nor `undefined`. - * - * var foo = 'hi' - * , bar = null - * , baz; - * - * expect(foo).to.exist; - * expect(bar).to.not.exist; - * expect(baz).to.not.exist; - * - * @name exist - * @namespace BDD - * @api public - */ - - Assertion.addProperty('exist', function () { - this.assert( - null != flag(this, 'object') - , 'expected #{this} to exist' - , 'expected #{this} to not exist' - ); - }); - - - /** - * ### .empty - * - * Asserts that the target's length is `0`. For arrays and strings, it checks - * the `length` property. For objects, it gets the count of - * enumerable keys. - * - * expect([]).to.be.empty; - * expect('').to.be.empty; - * expect({}).to.be.empty; - * - * @name empty - * @namespace BDD - * @api public - */ - - Assertion.addProperty('empty', function () { - var obj = flag(this, 'object') - , expected = obj; - - if (Array.isArray(obj) || 'string' === typeof object) { - expected = obj.length; - } else if (typeof obj === 'object') { - expected = Object.keys(obj).length; - } - - this.assert( - !expected - , 'expected #{this} to be empty' - , 'expected #{this} not to be empty' - ); - }); - - /** - * ### .arguments - * - * Asserts that the target is an arguments object. - * - * function test () { - * expect(arguments).to.be.arguments; - * } - * - * @name arguments - * @alias Arguments - * @namespace BDD - * @api public - */ - - function checkArguments () { - var obj = flag(this, 'object') - , type = Object.prototype.toString.call(obj); - this.assert( - '[object Arguments]' === type - , 'expected #{this} to be arguments but got ' + type - , 'expected #{this} to not be arguments' - ); - } - - Assertion.addProperty('arguments', checkArguments); - Assertion.addProperty('Arguments', checkArguments); - - /** - * ### .equal(value) - * - * Asserts that the target is strictly equal (`===`) to `value`. - * Alternately, if the `deep` flag is set, asserts that - * the target is deeply equal to `value`. - * - * expect('hello').to.equal('hello'); - * expect(42).to.equal(42); - * expect(1).to.not.equal(true); - * expect({ foo: 'bar' }).to.not.equal({ foo: 'bar' }); - * expect({ foo: 'bar' }).to.deep.equal({ foo: 'bar' }); - * - * @name equal - * @alias equals - * @alias eq - * @alias deep.equal - * @param {Mixed} value - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertEqual (val, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - if (flag(this, 'deep')) { - return this.eql(val); - } else { - this.assert( - val === obj - , 'expected #{this} to equal #{exp}' - , 'expected #{this} to not equal #{exp}' - , val - , this._obj - , true - ); - } - } - - Assertion.addMethod('equal', assertEqual); - Assertion.addMethod('equals', assertEqual); - Assertion.addMethod('eq', assertEqual); - - /** - * ### .eql(value) - * - * Asserts that the target is deeply equal to `value`. - * - * expect({ foo: 'bar' }).to.eql({ foo: 'bar' }); - * expect([ 1, 2, 3 ]).to.eql([ 1, 2, 3 ]); - * - * @name eql - * @alias eqls - * @param {Mixed} value - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertEql(obj, msg) { - if (msg) flag(this, 'message', msg); - this.assert( - _.eql(obj, flag(this, 'object')) - , 'expected #{this} to deeply equal #{exp}' - , 'expected #{this} to not deeply equal #{exp}' - , obj - , this._obj - , true - ); - } - - Assertion.addMethod('eql', assertEql); - Assertion.addMethod('eqls', assertEql); - - /** - * ### .above(value) - * - * Asserts that the target is greater than `value`. - * - * expect(10).to.be.above(5); - * - * Can also be used in conjunction with `length` to - * assert a minimum length. The benefit being a - * more informative error message than if the length - * was supplied directly. - * - * expect('foo').to.have.length.above(2); - * expect([ 1, 2, 3 ]).to.have.length.above(2); - * - * @name above - * @alias gt - * @alias greaterThan - * @param {Number} value - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertAbove (n, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - if (flag(this, 'doLength')) { - new Assertion(obj, msg).to.have.property('length'); - var len = obj.length; - this.assert( - len > n - , 'expected #{this} to have a length above #{exp} but got #{act}' - , 'expected #{this} to not have a length above #{exp}' - , n - , len - ); - } else { - this.assert( - obj > n - , 'expected #{this} to be above ' + n - , 'expected #{this} to be at most ' + n - ); - } - } - - Assertion.addMethod('above', assertAbove); - Assertion.addMethod('gt', assertAbove); - Assertion.addMethod('greaterThan', assertAbove); - - /** - * ### .least(value) - * - * Asserts that the target is greater than or equal to `value`. - * - * expect(10).to.be.at.least(10); - * - * Can also be used in conjunction with `length` to - * assert a minimum length. The benefit being a - * more informative error message than if the length - * was supplied directly. - * - * expect('foo').to.have.length.of.at.least(2); - * expect([ 1, 2, 3 ]).to.have.length.of.at.least(3); - * - * @name least - * @alias gte - * @param {Number} value - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertLeast (n, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - if (flag(this, 'doLength')) { - new Assertion(obj, msg).to.have.property('length'); - var len = obj.length; - this.assert( - len >= n - , 'expected #{this} to have a length at least #{exp} but got #{act}' - , 'expected #{this} to have a length below #{exp}' - , n - , len - ); - } else { - this.assert( - obj >= n - , 'expected #{this} to be at least ' + n - , 'expected #{this} to be below ' + n - ); - } - } - - Assertion.addMethod('least', assertLeast); - Assertion.addMethod('gte', assertLeast); - - /** - * ### .below(value) - * - * Asserts that the target is less than `value`. - * - * expect(5).to.be.below(10); - * - * Can also be used in conjunction with `length` to - * assert a maximum length. The benefit being a - * more informative error message than if the length - * was supplied directly. - * - * expect('foo').to.have.length.below(4); - * expect([ 1, 2, 3 ]).to.have.length.below(4); - * - * @name below - * @alias lt - * @alias lessThan - * @param {Number} value - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertBelow (n, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - if (flag(this, 'doLength')) { - new Assertion(obj, msg).to.have.property('length'); - var len = obj.length; - this.assert( - len < n - , 'expected #{this} to have a length below #{exp} but got #{act}' - , 'expected #{this} to not have a length below #{exp}' - , n - , len - ); - } else { - this.assert( - obj < n - , 'expected #{this} to be below ' + n - , 'expected #{this} to be at least ' + n - ); - } - } - - Assertion.addMethod('below', assertBelow); - Assertion.addMethod('lt', assertBelow); - Assertion.addMethod('lessThan', assertBelow); - - /** - * ### .most(value) - * - * Asserts that the target is less than or equal to `value`. - * - * expect(5).to.be.at.most(5); - * - * Can also be used in conjunction with `length` to - * assert a maximum length. The benefit being a - * more informative error message than if the length - * was supplied directly. - * - * expect('foo').to.have.length.of.at.most(4); - * expect([ 1, 2, 3 ]).to.have.length.of.at.most(3); - * - * @name most - * @alias lte - * @param {Number} value - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertMost (n, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - if (flag(this, 'doLength')) { - new Assertion(obj, msg).to.have.property('length'); - var len = obj.length; - this.assert( - len <= n - , 'expected #{this} to have a length at most #{exp} but got #{act}' - , 'expected #{this} to have a length above #{exp}' - , n - , len - ); - } else { - this.assert( - obj <= n - , 'expected #{this} to be at most ' + n - , 'expected #{this} to be above ' + n - ); - } - } - - Assertion.addMethod('most', assertMost); - Assertion.addMethod('lte', assertMost); - - /** - * ### .within(start, finish) - * - * Asserts that the target is within a range. - * - * expect(7).to.be.within(5,10); - * - * Can also be used in conjunction with `length` to - * assert a length range. The benefit being a - * more informative error message than if the length - * was supplied directly. - * - * expect('foo').to.have.length.within(2,4); - * expect([ 1, 2, 3 ]).to.have.length.within(2,4); - * - * @name within - * @param {Number} start lowerbound inclusive - * @param {Number} finish upperbound inclusive - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - Assertion.addMethod('within', function (start, finish, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object') - , range = start + '..' + finish; - if (flag(this, 'doLength')) { - new Assertion(obj, msg).to.have.property('length'); - var len = obj.length; - this.assert( - len >= start && len <= finish - , 'expected #{this} to have a length within ' + range - , 'expected #{this} to not have a length within ' + range - ); - } else { - this.assert( - obj >= start && obj <= finish - , 'expected #{this} to be within ' + range - , 'expected #{this} to not be within ' + range - ); - } - }); - - /** - * ### .instanceof(constructor) - * - * Asserts that the target is an instance of `constructor`. - * - * var Tea = function (name) { this.name = name; } - * , Chai = new Tea('chai'); - * - * expect(Chai).to.be.an.instanceof(Tea); - * expect([ 1, 2, 3 ]).to.be.instanceof(Array); - * - * @name instanceof - * @param {Constructor} constructor - * @param {String} message _optional_ - * @alias instanceOf - * @namespace BDD - * @api public - */ - - function assertInstanceOf (constructor, msg) { - if (msg) flag(this, 'message', msg); - var name = _.getName(constructor); - this.assert( - flag(this, 'object') instanceof constructor - , 'expected #{this} to be an instance of ' + name - , 'expected #{this} to not be an instance of ' + name - ); - }; - - Assertion.addMethod('instanceof', assertInstanceOf); - Assertion.addMethod('instanceOf', assertInstanceOf); - - /** - * ### .property(name, [value]) - * - * Asserts that the target has a property `name`, optionally asserting that - * the value of that property is strictly equal to `value`. - * If the `deep` flag is set, you can use dot- and bracket-notation for deep - * references into objects and arrays. - * - * // simple referencing - * var obj = { foo: 'bar' }; - * expect(obj).to.have.property('foo'); - * expect(obj).to.have.property('foo', 'bar'); - * - * // deep referencing - * var deepObj = { - * green: { tea: 'matcha' } - * , teas: [ 'chai', 'matcha', { tea: 'konacha' } ] - * }; - * - * expect(deepObj).to.have.deep.property('green.tea', 'matcha'); - * expect(deepObj).to.have.deep.property('teas[1]', 'matcha'); - * expect(deepObj).to.have.deep.property('teas[2].tea', 'konacha'); - * - * You can also use an array as the starting point of a `deep.property` - * assertion, or traverse nested arrays. - * - * var arr = [ - * [ 'chai', 'matcha', 'konacha' ] - * , [ { tea: 'chai' } - * , { tea: 'matcha' } - * , { tea: 'konacha' } ] - * ]; - * - * expect(arr).to.have.deep.property('[0][1]', 'matcha'); - * expect(arr).to.have.deep.property('[1][2].tea', 'konacha'); - * - * Furthermore, `property` changes the subject of the assertion - * to be the value of that property from the original object. This - * permits for further chainable assertions on that property. - * - * expect(obj).to.have.property('foo') - * .that.is.a('string'); - * expect(deepObj).to.have.property('green') - * .that.is.an('object') - * .that.deep.equals({ tea: 'matcha' }); - * expect(deepObj).to.have.property('teas') - * .that.is.an('array') - * .with.deep.property('[2]') - * .that.deep.equals({ tea: 'konacha' }); - * - * Note that dots and bracket in `name` must be backslash-escaped when - * the `deep` flag is set, while they must NOT be escaped when the `deep` - * flag is not set. - * - * // simple referencing - * var css = { '.link[target]': 42 }; - * expect(css).to.have.property('.link[target]', 42); - * - * // deep referencing - * var deepCss = { '.link': { '[target]': 42 }}; - * expect(deepCss).to.have.deep.property('\\.link.\\[target\\]', 42); - * - * @name property - * @alias deep.property - * @param {String} name - * @param {Mixed} value (optional) - * @param {String} message _optional_ - * @returns value of property for chaining - * @namespace BDD - * @api public - */ - - Assertion.addMethod('property', function (name, val, msg) { - if (msg) flag(this, 'message', msg); - - var isDeep = !!flag(this, 'deep') - , descriptor = isDeep ? 'deep property ' : 'property ' - , negate = flag(this, 'negate') - , obj = flag(this, 'object') - , pathInfo = isDeep ? _.getPathInfo(name, obj) : null - , hasProperty = isDeep - ? pathInfo.exists - : _.hasProperty(name, obj) - , value = isDeep - ? pathInfo.value - : obj[name]; - - if (negate && arguments.length > 1) { - if (undefined === value) { - msg = (msg != null) ? msg + ': ' : ''; - throw new Error(msg + _.inspect(obj) + ' has no ' + descriptor + _.inspect(name)); - } - } else { - this.assert( - hasProperty - , 'expected #{this} to have a ' + descriptor + _.inspect(name) - , 'expected #{this} to not have ' + descriptor + _.inspect(name)); - } - - if (arguments.length > 1) { - this.assert( - val === value - , 'expected #{this} to have a ' + descriptor + _.inspect(name) + ' of #{exp}, but got #{act}' - , 'expected #{this} to not have a ' + descriptor + _.inspect(name) + ' of #{act}' - , val - , value - ); - } - - flag(this, 'object', value); - }); - - - /** - * ### .ownProperty(name) - * - * Asserts that the target has an own property `name`. - * - * expect('test').to.have.ownProperty('length'); - * - * @name ownProperty - * @alias haveOwnProperty - * @param {String} name - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertOwnProperty (name, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - this.assert( - obj.hasOwnProperty(name) - , 'expected #{this} to have own property ' + _.inspect(name) - , 'expected #{this} to not have own property ' + _.inspect(name) - ); - } - - Assertion.addMethod('ownProperty', assertOwnProperty); - Assertion.addMethod('haveOwnProperty', assertOwnProperty); - - /** - * ### .ownPropertyDescriptor(name[, descriptor[, message]]) - * - * Asserts that the target has an own property descriptor `name`, that optionally matches `descriptor`. - * - * expect('test').to.have.ownPropertyDescriptor('length'); - * expect('test').to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 4 }); - * expect('test').not.to.have.ownPropertyDescriptor('length', { enumerable: false, configurable: false, writable: false, value: 3 }); - * expect('test').ownPropertyDescriptor('length').to.have.property('enumerable', false); - * expect('test').ownPropertyDescriptor('length').to.have.keys('value'); - * - * @name ownPropertyDescriptor - * @alias haveOwnPropertyDescriptor - * @param {String} name - * @param {Object} descriptor _optional_ - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertOwnPropertyDescriptor (name, descriptor, msg) { - if (typeof descriptor === 'string') { - msg = descriptor; - descriptor = null; - } - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - var actualDescriptor = Object.getOwnPropertyDescriptor(Object(obj), name); - if (actualDescriptor && descriptor) { - this.assert( - _.eql(descriptor, actualDescriptor) - , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to match ' + _.inspect(descriptor) + ', got ' + _.inspect(actualDescriptor) - , 'expected the own property descriptor for ' + _.inspect(name) + ' on #{this} to not match ' + _.inspect(descriptor) - , descriptor - , actualDescriptor - , true - ); - } else { - this.assert( - actualDescriptor - , 'expected #{this} to have an own property descriptor for ' + _.inspect(name) - , 'expected #{this} to not have an own property descriptor for ' + _.inspect(name) - ); - } - flag(this, 'object', actualDescriptor); - } - - Assertion.addMethod('ownPropertyDescriptor', assertOwnPropertyDescriptor); - Assertion.addMethod('haveOwnPropertyDescriptor', assertOwnPropertyDescriptor); - - /** - * ### .length - * - * Sets the `doLength` flag later used as a chain precursor to a value - * comparison for the `length` property. - * - * expect('foo').to.have.length.above(2); - * expect([ 1, 2, 3 ]).to.have.length.above(2); - * expect('foo').to.have.length.below(4); - * expect([ 1, 2, 3 ]).to.have.length.below(4); - * expect('foo').to.have.length.within(2,4); - * expect([ 1, 2, 3 ]).to.have.length.within(2,4); - * - * *Deprecation notice:* Using `length` as an assertion will be deprecated - * in version 2.4.0 and removed in 3.0.0. Code using the old style of - * asserting for `length` property value using `length(value)` should be - * switched to use `lengthOf(value)` instead. - * - * @name length - * @namespace BDD - * @api public - */ - - /** - * ### .lengthOf(value[, message]) - * - * Asserts that the target's `length` property has - * the expected value. - * - * expect([ 1, 2, 3]).to.have.lengthOf(3); - * expect('foobar').to.have.lengthOf(6); - * - * @name lengthOf - * @param {Number} length - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertLengthChain () { - flag(this, 'doLength', true); - } - - function assertLength (n, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - new Assertion(obj, msg).to.have.property('length'); - var len = obj.length; - - this.assert( - len == n - , 'expected #{this} to have a length of #{exp} but got #{act}' - , 'expected #{this} to not have a length of #{act}' - , n - , len - ); - } - - Assertion.addChainableMethod('length', assertLength, assertLengthChain); - Assertion.addMethod('lengthOf', assertLength); - - /** - * ### .match(regexp) - * - * Asserts that the target matches a regular expression. - * - * expect('foobar').to.match(/^foo/); - * - * @name match - * @alias matches - * @param {RegExp} RegularExpression - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - function assertMatch(re, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - this.assert( - re.exec(obj) - , 'expected #{this} to match ' + re - , 'expected #{this} not to match ' + re - ); - } - - Assertion.addMethod('match', assertMatch); - Assertion.addMethod('matches', assertMatch); - - /** - * ### .string(string) - * - * Asserts that the string target contains another string. - * - * expect('foobar').to.have.string('bar'); - * - * @name string - * @param {String} string - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - Assertion.addMethod('string', function (str, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - new Assertion(obj, msg).is.a('string'); - - this.assert( - ~obj.indexOf(str) - , 'expected #{this} to contain ' + _.inspect(str) - , 'expected #{this} to not contain ' + _.inspect(str) - ); - }); - - - /** - * ### .keys(key1, [key2], [...]) - * - * Asserts that the target contains any or all of the passed-in keys. - * Use in combination with `any`, `all`, `contains`, or `have` will affect - * what will pass. - * - * When used in conjunction with `any`, at least one key that is passed - * in must exist in the target object. This is regardless whether or not - * the `have` or `contain` qualifiers are used. Note, either `any` or `all` - * should be used in the assertion. If neither are used, the assertion is - * defaulted to `all`. - * - * When both `all` and `contain` are used, the target object must have at - * least all of the passed-in keys but may have more keys not listed. - * - * When both `all` and `have` are used, the target object must both contain - * all of the passed-in keys AND the number of keys in the target object must - * match the number of keys passed in (in other words, a target object must - * have all and only all of the passed-in keys). - * - * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo', 'baz'); - * expect({ foo: 1, bar: 2 }).to.have.any.keys('foo'); - * expect({ foo: 1, bar: 2 }).to.contain.any.keys('bar', 'baz'); - * expect({ foo: 1, bar: 2 }).to.contain.any.keys(['foo']); - * expect({ foo: 1, bar: 2 }).to.contain.any.keys({'foo': 6}); - * expect({ foo: 1, bar: 2 }).to.have.all.keys(['bar', 'foo']); - * expect({ foo: 1, bar: 2 }).to.have.all.keys({'bar': 6, 'foo': 7}); - * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys(['bar', 'foo']); - * expect({ foo: 1, bar: 2, baz: 3 }).to.contain.all.keys({'bar': 6}); - * - * - * @name keys - * @alias key - * @param {...String|Array|Object} keys - * @namespace BDD - * @api public - */ - - function assertKeys (keys) { - var obj = flag(this, 'object') - , str - , ok = true - , mixedArgsMsg = 'keys must be given single argument of Array|Object|String, or multiple String arguments'; - - switch (_.type(keys)) { - case "array": - if (arguments.length > 1) throw (new Error(mixedArgsMsg)); - break; - case "object": - if (arguments.length > 1) throw (new Error(mixedArgsMsg)); - keys = Object.keys(keys); - break; - default: - keys = Array.prototype.slice.call(arguments); - } - - if (!keys.length) throw new Error('keys required'); - - var actual = Object.keys(obj) - , expected = keys - , len = keys.length - , any = flag(this, 'any') - , all = flag(this, 'all'); - - if (!any && !all) { - all = true; - } - - // Has any - if (any) { - var intersection = expected.filter(function(key) { - return ~actual.indexOf(key); - }); - ok = intersection.length > 0; - } - - // Has all - if (all) { - ok = keys.every(function(key){ - return ~actual.indexOf(key); - }); - if (!flag(this, 'negate') && !flag(this, 'contains')) { - ok = ok && keys.length == actual.length; - } - } - - // Key string - if (len > 1) { - keys = keys.map(function(key){ - return _.inspect(key); - }); - var last = keys.pop(); - if (all) { - str = keys.join(', ') + ', and ' + last; - } - if (any) { - str = keys.join(', ') + ', or ' + last; - } - } else { - str = _.inspect(keys[0]); - } - - // Form - str = (len > 1 ? 'keys ' : 'key ') + str; - - // Have / include - str = (flag(this, 'contains') ? 'contain ' : 'have ') + str; - - // Assertion - this.assert( - ok - , 'expected #{this} to ' + str - , 'expected #{this} to not ' + str - , expected.slice(0).sort() - , actual.sort() - , true - ); - } - - Assertion.addMethod('keys', assertKeys); - Assertion.addMethod('key', assertKeys); - - /** - * ### .throw(constructor) - * - * Asserts that the function target will throw a specific error, or specific type of error - * (as determined using `instanceof`), optionally with a RegExp or string inclusion test - * for the error's message. - * - * var err = new ReferenceError('This is a bad function.'); - * var fn = function () { throw err; } - * expect(fn).to.throw(ReferenceError); - * expect(fn).to.throw(Error); - * expect(fn).to.throw(/bad function/); - * expect(fn).to.not.throw('good function'); - * expect(fn).to.throw(ReferenceError, /bad function/); - * expect(fn).to.throw(err); - * - * Please note that when a throw expectation is negated, it will check each - * parameter independently, starting with error constructor type. The appropriate way - * to check for the existence of a type of error but for a message that does not match - * is to use `and`. - * - * expect(fn).to.throw(ReferenceError) - * .and.not.throw(/good function/); - * - * @name throw - * @alias throws - * @alias Throw - * @param {ErrorConstructor} constructor - * @param {String|RegExp} expected error message - * @param {String} message _optional_ - * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types - * @returns error for chaining (null if no error) - * @namespace BDD - * @api public - */ - - function assertThrows (constructor, errMsg, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - new Assertion(obj, msg).is.a('function'); - - var thrown = false - , desiredError = null - , name = null - , thrownError = null; - - if (arguments.length === 0) { - errMsg = null; - constructor = null; - } else if (constructor && (constructor instanceof RegExp || 'string' === typeof constructor)) { - errMsg = constructor; - constructor = null; - } else if (constructor && constructor instanceof Error) { - desiredError = constructor; - constructor = null; - errMsg = null; - } else if (typeof constructor === 'function') { - name = constructor.prototype.name; - if (!name || (name === 'Error' && constructor !== Error)) { - name = constructor.name || (new constructor()).name; - } - } else { - constructor = null; - } - - try { - obj(); - } catch (err) { - // first, check desired error - if (desiredError) { - this.assert( - err === desiredError - , 'expected #{this} to throw #{exp} but #{act} was thrown' - , 'expected #{this} to not throw #{exp}' - , (desiredError instanceof Error ? desiredError.toString() : desiredError) - , (err instanceof Error ? err.toString() : err) - ); - - flag(this, 'object', err); - return this; - } - - // next, check constructor - if (constructor) { - this.assert( - err instanceof constructor - , 'expected #{this} to throw #{exp} but #{act} was thrown' - , 'expected #{this} to not throw #{exp} but #{act} was thrown' - , name - , (err instanceof Error ? err.toString() : err) - ); - - if (!errMsg) { - flag(this, 'object', err); - return this; - } - } - - // next, check message - var message = 'error' === _.type(err) && "message" in err - ? err.message - : '' + err; - - if ((message != null) && errMsg && errMsg instanceof RegExp) { - this.assert( - errMsg.exec(message) - , 'expected #{this} to throw error matching #{exp} but got #{act}' - , 'expected #{this} to throw error not matching #{exp}' - , errMsg - , message - ); - - flag(this, 'object', err); - return this; - } else if ((message != null) && errMsg && 'string' === typeof errMsg) { - this.assert( - ~message.indexOf(errMsg) - , 'expected #{this} to throw error including #{exp} but got #{act}' - , 'expected #{this} to throw error not including #{act}' - , errMsg - , message - ); - - flag(this, 'object', err); - return this; - } else { - thrown = true; - thrownError = err; - } - } - - var actuallyGot = '' - , expectedThrown = name !== null - ? name - : desiredError - ? '#{exp}' //_.inspect(desiredError) - : 'an error'; - - if (thrown) { - actuallyGot = ' but #{act} was thrown' - } - - this.assert( - thrown === true - , 'expected #{this} to throw ' + expectedThrown + actuallyGot - , 'expected #{this} to not throw ' + expectedThrown + actuallyGot - , (desiredError instanceof Error ? desiredError.toString() : desiredError) - , (thrownError instanceof Error ? thrownError.toString() : thrownError) - ); - - flag(this, 'object', thrownError); - }; - - Assertion.addMethod('throw', assertThrows); - Assertion.addMethod('throws', assertThrows); - Assertion.addMethod('Throw', assertThrows); - - /** - * ### .respondTo(method) - * - * Asserts that the object or class target will respond to a method. - * - * Klass.prototype.bar = function(){}; - * expect(Klass).to.respondTo('bar'); - * expect(obj).to.respondTo('bar'); - * - * To check if a constructor will respond to a static function, - * set the `itself` flag. - * - * Klass.baz = function(){}; - * expect(Klass).itself.to.respondTo('baz'); - * - * @name respondTo - * @alias respondsTo - * @param {String} method - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function respondTo (method, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object') - , itself = flag(this, 'itself') - , context = ('function' === _.type(obj) && !itself) - ? obj.prototype[method] - : obj[method]; - - this.assert( - 'function' === typeof context - , 'expected #{this} to respond to ' + _.inspect(method) - , 'expected #{this} to not respond to ' + _.inspect(method) - ); - } - - Assertion.addMethod('respondTo', respondTo); - Assertion.addMethod('respondsTo', respondTo); - - /** - * ### .itself - * - * Sets the `itself` flag, later used by the `respondTo` assertion. - * - * function Foo() {} - * Foo.bar = function() {} - * Foo.prototype.baz = function() {} - * - * expect(Foo).itself.to.respondTo('bar'); - * expect(Foo).itself.not.to.respondTo('baz'); - * - * @name itself - * @namespace BDD - * @api public - */ - - Assertion.addProperty('itself', function () { - flag(this, 'itself', true); - }); - - /** - * ### .satisfy(method) - * - * Asserts that the target passes a given truth test. - * - * expect(1).to.satisfy(function(num) { return num > 0; }); - * - * @name satisfy - * @alias satisfies - * @param {Function} matcher - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function satisfy (matcher, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - var result = matcher(obj); - this.assert( - result - , 'expected #{this} to satisfy ' + _.objDisplay(matcher) - , 'expected #{this} to not satisfy' + _.objDisplay(matcher) - , this.negate ? false : true - , result - ); - } - - Assertion.addMethod('satisfy', satisfy); - Assertion.addMethod('satisfies', satisfy); - - /** - * ### .closeTo(expected, delta) - * - * Asserts that the target is equal `expected`, to within a +/- `delta` range. - * - * expect(1.5).to.be.closeTo(1, 0.5); - * - * @name closeTo - * @alias approximately - * @param {Number} expected - * @param {Number} delta - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function closeTo(expected, delta, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - - new Assertion(obj, msg).is.a('number'); - if (_.type(expected) !== 'number' || _.type(delta) !== 'number') { - throw new Error('the arguments to closeTo or approximately must be numbers'); - } - - this.assert( - Math.abs(obj - expected) <= delta - , 'expected #{this} to be close to ' + expected + ' +/- ' + delta - , 'expected #{this} not to be close to ' + expected + ' +/- ' + delta - ); - } - - Assertion.addMethod('closeTo', closeTo); - Assertion.addMethod('approximately', closeTo); - - function isSubsetOf(subset, superset, cmp) { - return subset.every(function(elem) { - if (!cmp) return superset.indexOf(elem) !== -1; - - return superset.some(function(elem2) { - return cmp(elem, elem2); - }); - }) - } - - /** - * ### .members(set) - * - * Asserts that the target is a superset of `set`, - * or that the target and `set` have the same strictly-equal (===) members. - * Alternately, if the `deep` flag is set, set members are compared for deep - * equality. - * - * expect([1, 2, 3]).to.include.members([3, 2]); - * expect([1, 2, 3]).to.not.include.members([3, 2, 8]); - * - * expect([4, 2]).to.have.members([2, 4]); - * expect([5, 2]).to.not.have.members([5, 2, 1]); - * - * expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]); - * - * @name members - * @param {Array} set - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - Assertion.addMethod('members', function (subset, msg) { - if (msg) flag(this, 'message', msg); - var obj = flag(this, 'object'); - - new Assertion(obj).to.be.an('array'); - new Assertion(subset).to.be.an('array'); - - var cmp = flag(this, 'deep') ? _.eql : undefined; - - if (flag(this, 'contains')) { - return this.assert( - isSubsetOf(subset, obj, cmp) - , 'expected #{this} to be a superset of #{act}' - , 'expected #{this} to not be a superset of #{act}' - , obj - , subset - ); - } - - this.assert( - isSubsetOf(obj, subset, cmp) && isSubsetOf(subset, obj, cmp) - , 'expected #{this} to have the same members as #{act}' - , 'expected #{this} to not have the same members as #{act}' - , obj - , subset - ); - }); - - /** - * ### .oneOf(list) - * - * Assert that a value appears somewhere in the top level of array `list`. - * - * expect('a').to.be.oneOf(['a', 'b', 'c']); - * expect(9).to.not.be.oneOf(['z']); - * expect([3]).to.not.be.oneOf([1, 2, [3]]); - * - * var three = [3]; - * // for object-types, contents are not compared - * expect(three).to.not.be.oneOf([1, 2, [3]]); - * // comparing references works - * expect(three).to.be.oneOf([1, 2, three]); - * - * @name oneOf - * @param {Array<*>} list - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function oneOf (list, msg) { - if (msg) flag(this, 'message', msg); - var expected = flag(this, 'object'); - new Assertion(list).to.be.an('array'); - - this.assert( - list.indexOf(expected) > -1 - , 'expected #{this} to be one of #{exp}' - , 'expected #{this} to not be one of #{exp}' - , list - , expected - ); - } - - Assertion.addMethod('oneOf', oneOf); - - - /** - * ### .change(function) - * - * Asserts that a function changes an object property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val += 3 }; - * var noChangeFn = function() { return 'foo' + 'bar'; } - * expect(fn).to.change(obj, 'val'); - * expect(noChangeFn).to.not.change(obj, 'val') - * - * @name change - * @alias changes - * @alias Change - * @param {String} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertChanges (object, prop, msg) { - if (msg) flag(this, 'message', msg); - var fn = flag(this, 'object'); - new Assertion(object, msg).to.have.property(prop); - new Assertion(fn).is.a('function'); - - var initial = object[prop]; - fn(); - - this.assert( - initial !== object[prop] - , 'expected .' + prop + ' to change' - , 'expected .' + prop + ' to not change' - ); - } - - Assertion.addChainableMethod('change', assertChanges); - Assertion.addChainableMethod('changes', assertChanges); - - /** - * ### .increase(function) - * - * Asserts that a function increases an object property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val = 15 }; - * expect(fn).to.increase(obj, 'val'); - * - * @name increase - * @alias increases - * @alias Increase - * @param {String} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertIncreases (object, prop, msg) { - if (msg) flag(this, 'message', msg); - var fn = flag(this, 'object'); - new Assertion(object, msg).to.have.property(prop); - new Assertion(fn).is.a('function'); - - var initial = object[prop]; - fn(); - - this.assert( - object[prop] - initial > 0 - , 'expected .' + prop + ' to increase' - , 'expected .' + prop + ' to not increase' - ); - } - - Assertion.addChainableMethod('increase', assertIncreases); - Assertion.addChainableMethod('increases', assertIncreases); - - /** - * ### .decrease(function) - * - * Asserts that a function decreases an object property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val = 5 }; - * expect(fn).to.decrease(obj, 'val'); - * - * @name decrease - * @alias decreases - * @alias Decrease - * @param {String} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace BDD - * @api public - */ - - function assertDecreases (object, prop, msg) { - if (msg) flag(this, 'message', msg); - var fn = flag(this, 'object'); - new Assertion(object, msg).to.have.property(prop); - new Assertion(fn).is.a('function'); - - var initial = object[prop]; - fn(); - - this.assert( - object[prop] - initial < 0 - , 'expected .' + prop + ' to decrease' - , 'expected .' + prop + ' to not decrease' - ); - } - - Assertion.addChainableMethod('decrease', assertDecreases); - Assertion.addChainableMethod('decreases', assertDecreases); - - /** - * ### .extensible - * - * Asserts that the target is extensible (can have new properties added to - * it). - * - * var nonExtensibleObject = Object.preventExtensions({}); - * var sealedObject = Object.seal({}); - * var frozenObject = Object.freeze({}); - * - * expect({}).to.be.extensible; - * expect(nonExtensibleObject).to.not.be.extensible; - * expect(sealedObject).to.not.be.extensible; - * expect(frozenObject).to.not.be.extensible; - * - * @name extensible - * @namespace BDD - * @api public - */ - - Assertion.addProperty('extensible', function() { - var obj = flag(this, 'object'); - - // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. - // In ES6, a non-object argument will be treated as if it was a non-extensible ordinary object, simply return false. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isExtensible - // The following provides ES6 behavior when a TypeError is thrown under ES5. - - var isExtensible; - - try { - isExtensible = Object.isExtensible(obj); - } catch (err) { - if (err instanceof TypeError) isExtensible = false; - else throw err; - } - - this.assert( - isExtensible - , 'expected #{this} to be extensible' - , 'expected #{this} to not be extensible' - ); - }); - - /** - * ### .sealed - * - * Asserts that the target is sealed (cannot have new properties added to it - * and its existing properties cannot be removed). - * - * var sealedObject = Object.seal({}); - * var frozenObject = Object.freeze({}); - * - * expect(sealedObject).to.be.sealed; - * expect(frozenObject).to.be.sealed; - * expect({}).to.not.be.sealed; - * - * @name sealed - * @namespace BDD - * @api public - */ - - Assertion.addProperty('sealed', function() { - var obj = flag(this, 'object'); - - // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. - // In ES6, a non-object argument will be treated as if it was a sealed ordinary object, simply return true. - // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isSealed - // The following provides ES6 behavior when a TypeError is thrown under ES5. - - var isSealed; - - try { - isSealed = Object.isSealed(obj); - } catch (err) { - if (err instanceof TypeError) isSealed = true; - else throw err; - } - - this.assert( - isSealed - , 'expected #{this} to be sealed' - , 'expected #{this} to not be sealed' - ); - }); - - /** - * ### .frozen - * - * Asserts that the target is frozen (cannot have new properties added to it - * and its existing properties cannot be modified). - * - * var frozenObject = Object.freeze({}); - * - * expect(frozenObject).to.be.frozen; - * expect({}).to.not.be.frozen; - * - * @name frozen - * @namespace BDD - * @api public - */ - - Assertion.addProperty('frozen', function() { - var obj = flag(this, 'object'); - - // In ES5, if the argument to this method is not an object (a primitive), then it will cause a TypeError. - // In ES6, a non-object argument will be treated as if it was a frozen ordinary object, simply return true. - // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/isFrozen - // The following provides ES6 behavior when a TypeError is thrown under ES5. - - var isFrozen; - - try { - isFrozen = Object.isFrozen(obj); - } catch (err) { - if (err instanceof TypeError) isFrozen = true; - else throw err; - } - - this.assert( - isFrozen - , 'expected #{this} to be frozen' - , 'expected #{this} to not be frozen' - ); - }); -}; - -},{}],6:[function(require,module,exports){ -/*! - * chai - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - */ - - -module.exports = function (chai, util) { - - /*! - * Chai dependencies. - */ - - var Assertion = chai.Assertion - , flag = util.flag; - - /*! - * Module export. - */ - - /** - * ### assert(expression, message) - * - * Write your own test expressions. - * - * assert('foo' !== 'bar', 'foo is not bar'); - * assert(Array.isArray([]), 'empty arrays are arrays'); - * - * @param {Mixed} expression to test for truthiness - * @param {String} message to display on error - * @name assert - * @namespace Assert - * @api public - */ - - var assert = chai.assert = function (express, errmsg) { - var test = new Assertion(null, null, chai.assert); - test.assert( - express - , errmsg - , '[ negation message unavailable ]' - ); - }; - - /** - * ### .fail(actual, expected, [message], [operator]) - * - * Throw a failure. Node.js `assert` module-compatible. - * - * @name fail - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @param {String} operator - * @namespace Assert - * @api public - */ - - assert.fail = function (actual, expected, message, operator) { - message = message || 'assert.fail()'; - throw new chai.AssertionError(message, { - actual: actual - , expected: expected - , operator: operator - }, assert.fail); - }; - - /** - * ### .isOk(object, [message]) - * - * Asserts that `object` is truthy. - * - * assert.isOk('everything', 'everything is ok'); - * assert.isOk(false, 'this will fail'); - * - * @name isOk - * @alias ok - * @param {Mixed} object to test - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isOk = function (val, msg) { - new Assertion(val, msg).is.ok; - }; - - /** - * ### .isNotOk(object, [message]) - * - * Asserts that `object` is falsy. - * - * assert.isNotOk('everything', 'this will fail'); - * assert.isNotOk(false, 'this will pass'); - * - * @name isNotOk - * @alias notOk - * @param {Mixed} object to test - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotOk = function (val, msg) { - new Assertion(val, msg).is.not.ok; - }; - - /** - * ### .equal(actual, expected, [message]) - * - * Asserts non-strict equality (`==`) of `actual` and `expected`. - * - * assert.equal(3, '3', '== coerces values to strings'); - * - * @name equal - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.equal = function (act, exp, msg) { - var test = new Assertion(act, msg, assert.equal); - - test.assert( - exp == flag(test, 'object') - , 'expected #{this} to equal #{exp}' - , 'expected #{this} to not equal #{act}' - , exp - , act - ); - }; - - /** - * ### .notEqual(actual, expected, [message]) - * - * Asserts non-strict inequality (`!=`) of `actual` and `expected`. - * - * assert.notEqual(3, 4, 'these numbers are not equal'); - * - * @name notEqual - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notEqual = function (act, exp, msg) { - var test = new Assertion(act, msg, assert.notEqual); - - test.assert( - exp != flag(test, 'object') - , 'expected #{this} to not equal #{exp}' - , 'expected #{this} to equal #{act}' - , exp - , act - ); - }; - - /** - * ### .strictEqual(actual, expected, [message]) - * - * Asserts strict equality (`===`) of `actual` and `expected`. - * - * assert.strictEqual(true, true, 'these booleans are strictly equal'); - * - * @name strictEqual - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.strictEqual = function (act, exp, msg) { - new Assertion(act, msg).to.equal(exp); - }; - - /** - * ### .notStrictEqual(actual, expected, [message]) - * - * Asserts strict inequality (`!==`) of `actual` and `expected`. - * - * assert.notStrictEqual(3, '3', 'no coercion for strict equality'); - * - * @name notStrictEqual - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notStrictEqual = function (act, exp, msg) { - new Assertion(act, msg).to.not.equal(exp); - }; - - /** - * ### .deepEqual(actual, expected, [message]) - * - * Asserts that `actual` is deeply equal to `expected`. - * - * assert.deepEqual({ tea: 'green' }, { tea: 'green' }); - * - * @name deepEqual - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.deepEqual = function (act, exp, msg) { - new Assertion(act, msg).to.eql(exp); - }; - - /** - * ### .notDeepEqual(actual, expected, [message]) - * - * Assert that `actual` is not deeply equal to `expected`. - * - * assert.notDeepEqual({ tea: 'green' }, { tea: 'jasmine' }); - * - * @name notDeepEqual - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notDeepEqual = function (act, exp, msg) { - new Assertion(act, msg).to.not.eql(exp); - }; - - /** - * ### .isAbove(valueToCheck, valueToBeAbove, [message]) - * - * Asserts `valueToCheck` is strictly greater than (>) `valueToBeAbove` - * - * assert.isAbove(5, 2, '5 is strictly greater than 2'); - * - * @name isAbove - * @param {Mixed} valueToCheck - * @param {Mixed} valueToBeAbove - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isAbove = function (val, abv, msg) { - new Assertion(val, msg).to.be.above(abv); - }; - - /** - * ### .isAtLeast(valueToCheck, valueToBeAtLeast, [message]) - * - * Asserts `valueToCheck` is greater than or equal to (>=) `valueToBeAtLeast` - * - * assert.isAtLeast(5, 2, '5 is greater or equal to 2'); - * assert.isAtLeast(3, 3, '3 is greater or equal to 3'); - * - * @name isAtLeast - * @param {Mixed} valueToCheck - * @param {Mixed} valueToBeAtLeast - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isAtLeast = function (val, atlst, msg) { - new Assertion(val, msg).to.be.least(atlst); - }; - - /** - * ### .isBelow(valueToCheck, valueToBeBelow, [message]) - * - * Asserts `valueToCheck` is strictly less than (<) `valueToBeBelow` - * - * assert.isBelow(3, 6, '3 is strictly less than 6'); - * - * @name isBelow - * @param {Mixed} valueToCheck - * @param {Mixed} valueToBeBelow - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isBelow = function (val, blw, msg) { - new Assertion(val, msg).to.be.below(blw); - }; - - /** - * ### .isAtMost(valueToCheck, valueToBeAtMost, [message]) - * - * Asserts `valueToCheck` is less than or equal to (<=) `valueToBeAtMost` - * - * assert.isAtMost(3, 6, '3 is less than or equal to 6'); - * assert.isAtMost(4, 4, '4 is less than or equal to 4'); - * - * @name isAtMost - * @param {Mixed} valueToCheck - * @param {Mixed} valueToBeAtMost - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isAtMost = function (val, atmst, msg) { - new Assertion(val, msg).to.be.most(atmst); - }; - - /** - * ### .isTrue(value, [message]) - * - * Asserts that `value` is true. - * - * var teaServed = true; - * assert.isTrue(teaServed, 'the tea has been served'); - * - * @name isTrue - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isTrue = function (val, msg) { - new Assertion(val, msg).is['true']; - }; - - /** - * ### .isNotTrue(value, [message]) - * - * Asserts that `value` is not true. - * - * var tea = 'tasty chai'; - * assert.isNotTrue(tea, 'great, time for tea!'); - * - * @name isNotTrue - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotTrue = function (val, msg) { - new Assertion(val, msg).to.not.equal(true); - }; - - /** - * ### .isFalse(value, [message]) - * - * Asserts that `value` is false. - * - * var teaServed = false; - * assert.isFalse(teaServed, 'no tea yet? hmm...'); - * - * @name isFalse - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isFalse = function (val, msg) { - new Assertion(val, msg).is['false']; - }; - - /** - * ### .isNotFalse(value, [message]) - * - * Asserts that `value` is not false. - * - * var tea = 'tasty chai'; - * assert.isNotFalse(tea, 'great, time for tea!'); - * - * @name isNotFalse - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotFalse = function (val, msg) { - new Assertion(val, msg).to.not.equal(false); - }; - - /** - * ### .isNull(value, [message]) - * - * Asserts that `value` is null. - * - * assert.isNull(err, 'there was no error'); - * - * @name isNull - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNull = function (val, msg) { - new Assertion(val, msg).to.equal(null); - }; - - /** - * ### .isNotNull(value, [message]) - * - * Asserts that `value` is not null. - * - * var tea = 'tasty chai'; - * assert.isNotNull(tea, 'great, time for tea!'); - * - * @name isNotNull - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotNull = function (val, msg) { - new Assertion(val, msg).to.not.equal(null); - }; - - /** - * ### .isNaN - * Asserts that value is NaN - * - * assert.isNaN('foo', 'foo is NaN'); - * - * @name isNaN - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNaN = function (val, msg) { - new Assertion(val, msg).to.be.NaN; - }; - - /** - * ### .isNotNaN - * Asserts that value is not NaN - * - * assert.isNotNaN(4, '4 is not NaN'); - * - * @name isNotNaN - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - assert.isNotNaN = function (val, msg) { - new Assertion(val, msg).not.to.be.NaN; - }; - - /** - * ### .isUndefined(value, [message]) - * - * Asserts that `value` is `undefined`. - * - * var tea; - * assert.isUndefined(tea, 'no tea defined'); - * - * @name isUndefined - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isUndefined = function (val, msg) { - new Assertion(val, msg).to.equal(undefined); - }; - - /** - * ### .isDefined(value, [message]) - * - * Asserts that `value` is not `undefined`. - * - * var tea = 'cup of chai'; - * assert.isDefined(tea, 'tea has been defined'); - * - * @name isDefined - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isDefined = function (val, msg) { - new Assertion(val, msg).to.not.equal(undefined); - }; - - /** - * ### .isFunction(value, [message]) - * - * Asserts that `value` is a function. - * - * function serveTea() { return 'cup of tea'; }; - * assert.isFunction(serveTea, 'great, we can have tea now'); - * - * @name isFunction - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isFunction = function (val, msg) { - new Assertion(val, msg).to.be.a('function'); - }; - - /** - * ### .isNotFunction(value, [message]) - * - * Asserts that `value` is _not_ a function. - * - * var serveTea = [ 'heat', 'pour', 'sip' ]; - * assert.isNotFunction(serveTea, 'great, we have listed the steps'); - * - * @name isNotFunction - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotFunction = function (val, msg) { - new Assertion(val, msg).to.not.be.a('function'); - }; - - /** - * ### .isObject(value, [message]) - * - * Asserts that `value` is an object of type 'Object' (as revealed by `Object.prototype.toString`). - * _The assertion does not match subclassed objects._ - * - * var selection = { name: 'Chai', serve: 'with spices' }; - * assert.isObject(selection, 'tea selection is an object'); - * - * @name isObject - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isObject = function (val, msg) { - new Assertion(val, msg).to.be.a('object'); - }; - - /** - * ### .isNotObject(value, [message]) - * - * Asserts that `value` is _not_ an object of type 'Object' (as revealed by `Object.prototype.toString`). - * - * var selection = 'chai' - * assert.isNotObject(selection, 'tea selection is not an object'); - * assert.isNotObject(null, 'null is not an object'); - * - * @name isNotObject - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotObject = function (val, msg) { - new Assertion(val, msg).to.not.be.a('object'); - }; - - /** - * ### .isArray(value, [message]) - * - * Asserts that `value` is an array. - * - * var menu = [ 'green', 'chai', 'oolong' ]; - * assert.isArray(menu, 'what kind of tea do we want?'); - * - * @name isArray - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isArray = function (val, msg) { - new Assertion(val, msg).to.be.an('array'); - }; - - /** - * ### .isNotArray(value, [message]) - * - * Asserts that `value` is _not_ an array. - * - * var menu = 'green|chai|oolong'; - * assert.isNotArray(menu, 'what kind of tea do we want?'); - * - * @name isNotArray - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotArray = function (val, msg) { - new Assertion(val, msg).to.not.be.an('array'); - }; - - /** - * ### .isString(value, [message]) - * - * Asserts that `value` is a string. - * - * var teaOrder = 'chai'; - * assert.isString(teaOrder, 'order placed'); - * - * @name isString - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isString = function (val, msg) { - new Assertion(val, msg).to.be.a('string'); - }; - - /** - * ### .isNotString(value, [message]) - * - * Asserts that `value` is _not_ a string. - * - * var teaOrder = 4; - * assert.isNotString(teaOrder, 'order placed'); - * - * @name isNotString - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotString = function (val, msg) { - new Assertion(val, msg).to.not.be.a('string'); - }; - - /** - * ### .isNumber(value, [message]) - * - * Asserts that `value` is a number. - * - * var cups = 2; - * assert.isNumber(cups, 'how many cups'); - * - * @name isNumber - * @param {Number} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNumber = function (val, msg) { - new Assertion(val, msg).to.be.a('number'); - }; - - /** - * ### .isNotNumber(value, [message]) - * - * Asserts that `value` is _not_ a number. - * - * var cups = '2 cups please'; - * assert.isNotNumber(cups, 'how many cups'); - * - * @name isNotNumber - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotNumber = function (val, msg) { - new Assertion(val, msg).to.not.be.a('number'); - }; - - /** - * ### .isBoolean(value, [message]) - * - * Asserts that `value` is a boolean. - * - * var teaReady = true - * , teaServed = false; - * - * assert.isBoolean(teaReady, 'is the tea ready'); - * assert.isBoolean(teaServed, 'has tea been served'); - * - * @name isBoolean - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isBoolean = function (val, msg) { - new Assertion(val, msg).to.be.a('boolean'); - }; - - /** - * ### .isNotBoolean(value, [message]) - * - * Asserts that `value` is _not_ a boolean. - * - * var teaReady = 'yep' - * , teaServed = 'nope'; - * - * assert.isNotBoolean(teaReady, 'is the tea ready'); - * assert.isNotBoolean(teaServed, 'has tea been served'); - * - * @name isNotBoolean - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.isNotBoolean = function (val, msg) { - new Assertion(val, msg).to.not.be.a('boolean'); - }; - - /** - * ### .typeOf(value, name, [message]) - * - * Asserts that `value`'s type is `name`, as determined by - * `Object.prototype.toString`. - * - * assert.typeOf({ tea: 'chai' }, 'object', 'we have an object'); - * assert.typeOf(['chai', 'jasmine'], 'array', 'we have an array'); - * assert.typeOf('tea', 'string', 'we have a string'); - * assert.typeOf(/tea/, 'regexp', 'we have a regular expression'); - * assert.typeOf(null, 'null', 'we have a null'); - * assert.typeOf(undefined, 'undefined', 'we have an undefined'); - * - * @name typeOf - * @param {Mixed} value - * @param {String} name - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.typeOf = function (val, type, msg) { - new Assertion(val, msg).to.be.a(type); - }; - - /** - * ### .notTypeOf(value, name, [message]) - * - * Asserts that `value`'s type is _not_ `name`, as determined by - * `Object.prototype.toString`. - * - * assert.notTypeOf('tea', 'number', 'strings are not numbers'); - * - * @name notTypeOf - * @param {Mixed} value - * @param {String} typeof name - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notTypeOf = function (val, type, msg) { - new Assertion(val, msg).to.not.be.a(type); - }; - - /** - * ### .instanceOf(object, constructor, [message]) - * - * Asserts that `value` is an instance of `constructor`. - * - * var Tea = function (name) { this.name = name; } - * , chai = new Tea('chai'); - * - * assert.instanceOf(chai, Tea, 'chai is an instance of tea'); - * - * @name instanceOf - * @param {Object} object - * @param {Constructor} constructor - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.instanceOf = function (val, type, msg) { - new Assertion(val, msg).to.be.instanceOf(type); - }; - - /** - * ### .notInstanceOf(object, constructor, [message]) - * - * Asserts `value` is not an instance of `constructor`. - * - * var Tea = function (name) { this.name = name; } - * , chai = new String('chai'); - * - * assert.notInstanceOf(chai, Tea, 'chai is not an instance of tea'); - * - * @name notInstanceOf - * @param {Object} object - * @param {Constructor} constructor - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notInstanceOf = function (val, type, msg) { - new Assertion(val, msg).to.not.be.instanceOf(type); - }; - - /** - * ### .include(haystack, needle, [message]) - * - * Asserts that `haystack` includes `needle`. Works - * for strings and arrays. - * - * assert.include('foobar', 'bar', 'foobar contains string "bar"'); - * assert.include([ 1, 2, 3 ], 3, 'array contains value'); - * - * @name include - * @param {Array|String} haystack - * @param {Mixed} needle - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.include = function (exp, inc, msg) { - new Assertion(exp, msg, assert.include).include(inc); - }; - - /** - * ### .notInclude(haystack, needle, [message]) - * - * Asserts that `haystack` does not include `needle`. Works - * for strings and arrays. - * - * assert.notInclude('foobar', 'baz', 'string not include substring'); - * assert.notInclude([ 1, 2, 3 ], 4, 'array not include contain value'); - * - * @name notInclude - * @param {Array|String} haystack - * @param {Mixed} needle - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notInclude = function (exp, inc, msg) { - new Assertion(exp, msg, assert.notInclude).not.include(inc); - }; - - /** - * ### .match(value, regexp, [message]) - * - * Asserts that `value` matches the regular expression `regexp`. - * - * assert.match('foobar', /^foo/, 'regexp matches'); - * - * @name match - * @param {Mixed} value - * @param {RegExp} regexp - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.match = function (exp, re, msg) { - new Assertion(exp, msg).to.match(re); - }; - - /** - * ### .notMatch(value, regexp, [message]) - * - * Asserts that `value` does not match the regular expression `regexp`. - * - * assert.notMatch('foobar', /^foo/, 'regexp does not match'); - * - * @name notMatch - * @param {Mixed} value - * @param {RegExp} regexp - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notMatch = function (exp, re, msg) { - new Assertion(exp, msg).to.not.match(re); - }; - - /** - * ### .property(object, property, [message]) - * - * Asserts that `object` has a property named by `property`. - * - * assert.property({ tea: { green: 'matcha' }}, 'tea'); - * - * @name property - * @param {Object} object - * @param {String} property - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.property = function (obj, prop, msg) { - new Assertion(obj, msg).to.have.property(prop); - }; - - /** - * ### .notProperty(object, property, [message]) - * - * Asserts that `object` does _not_ have a property named by `property`. - * - * assert.notProperty({ tea: { green: 'matcha' }}, 'coffee'); - * - * @name notProperty - * @param {Object} object - * @param {String} property - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notProperty = function (obj, prop, msg) { - new Assertion(obj, msg).to.not.have.property(prop); - }; - - /** - * ### .deepProperty(object, property, [message]) - * - * Asserts that `object` has a property named by `property`, which can be a - * string using dot- and bracket-notation for deep reference. - * - * assert.deepProperty({ tea: { green: 'matcha' }}, 'tea.green'); - * - * @name deepProperty - * @param {Object} object - * @param {String} property - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.deepProperty = function (obj, prop, msg) { - new Assertion(obj, msg).to.have.deep.property(prop); - }; - - /** - * ### .notDeepProperty(object, property, [message]) - * - * Asserts that `object` does _not_ have a property named by `property`, which - * can be a string using dot- and bracket-notation for deep reference. - * - * assert.notDeepProperty({ tea: { green: 'matcha' }}, 'tea.oolong'); - * - * @name notDeepProperty - * @param {Object} object - * @param {String} property - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.notDeepProperty = function (obj, prop, msg) { - new Assertion(obj, msg).to.not.have.deep.property(prop); - }; - - /** - * ### .propertyVal(object, property, value, [message]) - * - * Asserts that `object` has a property named by `property` with value given - * by `value`. - * - * assert.propertyVal({ tea: 'is good' }, 'tea', 'is good'); - * - * @name propertyVal - * @param {Object} object - * @param {String} property - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.propertyVal = function (obj, prop, val, msg) { - new Assertion(obj, msg).to.have.property(prop, val); - }; - - /** - * ### .propertyNotVal(object, property, value, [message]) - * - * Asserts that `object` has a property named by `property`, but with a value - * different from that given by `value`. - * - * assert.propertyNotVal({ tea: 'is good' }, 'tea', 'is bad'); - * - * @name propertyNotVal - * @param {Object} object - * @param {String} property - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.propertyNotVal = function (obj, prop, val, msg) { - new Assertion(obj, msg).to.not.have.property(prop, val); - }; - - /** - * ### .deepPropertyVal(object, property, value, [message]) - * - * Asserts that `object` has a property named by `property` with value given - * by `value`. `property` can use dot- and bracket-notation for deep - * reference. - * - * assert.deepPropertyVal({ tea: { green: 'matcha' }}, 'tea.green', 'matcha'); - * - * @name deepPropertyVal - * @param {Object} object - * @param {String} property - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.deepPropertyVal = function (obj, prop, val, msg) { - new Assertion(obj, msg).to.have.deep.property(prop, val); - }; - - /** - * ### .deepPropertyNotVal(object, property, value, [message]) - * - * Asserts that `object` has a property named by `property`, but with a value - * different from that given by `value`. `property` can use dot- and - * bracket-notation for deep reference. - * - * assert.deepPropertyNotVal({ tea: { green: 'matcha' }}, 'tea.green', 'konacha'); - * - * @name deepPropertyNotVal - * @param {Object} object - * @param {String} property - * @param {Mixed} value - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.deepPropertyNotVal = function (obj, prop, val, msg) { - new Assertion(obj, msg).to.not.have.deep.property(prop, val); - }; - - /** - * ### .lengthOf(object, length, [message]) - * - * Asserts that `object` has a `length` property with the expected value. - * - * assert.lengthOf([1,2,3], 3, 'array has length of 3'); - * assert.lengthOf('foobar', 6, 'string has length of 6'); - * - * @name lengthOf - * @param {Mixed} object - * @param {Number} length - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.lengthOf = function (exp, len, msg) { - new Assertion(exp, msg).to.have.length(len); - }; - - /** - * ### .throws(function, [constructor/string/regexp], [string/regexp], [message]) - * - * Asserts that `function` will throw an error that is an instance of - * `constructor`, or alternately that it will throw an error with message - * matching `regexp`. - * - * assert.throws(fn, 'function throws a reference error'); - * assert.throws(fn, /function throws a reference error/); - * assert.throws(fn, ReferenceError); - * assert.throws(fn, ReferenceError, 'function throws a reference error'); - * assert.throws(fn, ReferenceError, /function throws a reference error/); - * - * @name throws - * @alias throw - * @alias Throw - * @param {Function} function - * @param {ErrorConstructor} constructor - * @param {RegExp} regexp - * @param {String} message - * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types - * @namespace Assert - * @api public - */ - - assert.throws = function (fn, errt, errs, msg) { - if ('string' === typeof errt || errt instanceof RegExp) { - errs = errt; - errt = null; - } - - var assertErr = new Assertion(fn, msg).to.throw(errt, errs); - return flag(assertErr, 'object'); - }; - - /** - * ### .doesNotThrow(function, [constructor/regexp], [message]) - * - * Asserts that `function` will _not_ throw an error that is an instance of - * `constructor`, or alternately that it will not throw an error with message - * matching `regexp`. - * - * assert.doesNotThrow(fn, Error, 'function does not throw'); - * - * @name doesNotThrow - * @param {Function} function - * @param {ErrorConstructor} constructor - * @param {RegExp} regexp - * @param {String} message - * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types - * @namespace Assert - * @api public - */ - - assert.doesNotThrow = function (fn, type, msg) { - if ('string' === typeof type) { - msg = type; - type = null; - } - - new Assertion(fn, msg).to.not.Throw(type); - }; - - /** - * ### .operator(val1, operator, val2, [message]) - * - * Compares two values using `operator`. - * - * assert.operator(1, '<', 2, 'everything is ok'); - * assert.operator(1, '>', 2, 'this will fail'); - * - * @name operator - * @param {Mixed} val1 - * @param {String} operator - * @param {Mixed} val2 - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.operator = function (val, operator, val2, msg) { - var ok; - switch(operator) { - case '==': - ok = val == val2; - break; - case '===': - ok = val === val2; - break; - case '>': - ok = val > val2; - break; - case '>=': - ok = val >= val2; - break; - case '<': - ok = val < val2; - break; - case '<=': - ok = val <= val2; - break; - case '!=': - ok = val != val2; - break; - case '!==': - ok = val !== val2; - break; - default: - throw new Error('Invalid operator "' + operator + '"'); - } - var test = new Assertion(ok, msg); - test.assert( - true === flag(test, 'object') - , 'expected ' + util.inspect(val) + ' to be ' + operator + ' ' + util.inspect(val2) - , 'expected ' + util.inspect(val) + ' to not be ' + operator + ' ' + util.inspect(val2) ); - }; - - /** - * ### .closeTo(actual, expected, delta, [message]) - * - * Asserts that the target is equal `expected`, to within a +/- `delta` range. - * - * assert.closeTo(1.5, 1, 0.5, 'numbers are close'); - * - * @name closeTo - * @param {Number} actual - * @param {Number} expected - * @param {Number} delta - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.closeTo = function (act, exp, delta, msg) { - new Assertion(act, msg).to.be.closeTo(exp, delta); - }; - - /** - * ### .approximately(actual, expected, delta, [message]) - * - * Asserts that the target is equal `expected`, to within a +/- `delta` range. - * - * assert.approximately(1.5, 1, 0.5, 'numbers are close'); - * - * @name approximately - * @param {Number} actual - * @param {Number} expected - * @param {Number} delta - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.approximately = function (act, exp, delta, msg) { - new Assertion(act, msg).to.be.approximately(exp, delta); - }; - - /** - * ### .sameMembers(set1, set2, [message]) - * - * Asserts that `set1` and `set2` have the same members. - * Order is not taken into account. - * - * assert.sameMembers([ 1, 2, 3 ], [ 2, 1, 3 ], 'same members'); - * - * @name sameMembers - * @param {Array} set1 - * @param {Array} set2 - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.sameMembers = function (set1, set2, msg) { - new Assertion(set1, msg).to.have.same.members(set2); - } - - /** - * ### .sameDeepMembers(set1, set2, [message]) - * - * Asserts that `set1` and `set2` have the same members - using a deep equality checking. - * Order is not taken into account. - * - * assert.sameDeepMembers([ {b: 3}, {a: 2}, {c: 5} ], [ {c: 5}, {b: 3}, {a: 2} ], 'same deep members'); - * - * @name sameDeepMembers - * @param {Array} set1 - * @param {Array} set2 - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.sameDeepMembers = function (set1, set2, msg) { - new Assertion(set1, msg).to.have.same.deep.members(set2); - } - - /** - * ### .includeMembers(superset, subset, [message]) - * - * Asserts that `subset` is included in `superset`. - * Order is not taken into account. - * - * assert.includeMembers([ 1, 2, 3 ], [ 2, 1 ], 'include members'); - * - * @name includeMembers - * @param {Array} superset - * @param {Array} subset - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.includeMembers = function (superset, subset, msg) { - new Assertion(superset, msg).to.include.members(subset); - } - - /** - * ### .includeDeepMembers(superset, subset, [message]) - * - * Asserts that `subset` is included in `superset` - using deep equality checking. - * Order is not taken into account. - * Duplicates are ignored. - * - * assert.includeDeepMembers([ {a: 1}, {b: 2}, {c: 3} ], [ {b: 2}, {a: 1}, {b: 2} ], 'include deep members'); - * - * @name includeDeepMembers - * @param {Array} superset - * @param {Array} subset - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.includeDeepMembers = function (superset, subset, msg) { - new Assertion(superset, msg).to.include.deep.members(subset); - } - - /** - * ### .oneOf(inList, list, [message]) - * - * Asserts that non-object, non-array value `inList` appears in the flat array `list`. - * - * assert.oneOf(1, [ 2, 1 ], 'Not found in list'); - * - * @name oneOf - * @param {*} inList - * @param {Array<*>} list - * @param {String} message - * @namespace Assert - * @api public - */ - - assert.oneOf = function (inList, list, msg) { - new Assertion(inList, msg).to.be.oneOf(list); - } - - /** - * ### .changes(function, object, property) - * - * Asserts that a function changes the value of a property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val = 22 }; - * assert.changes(fn, obj, 'val'); - * - * @name changes - * @param {Function} modifier function - * @param {Object} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.changes = function (fn, obj, prop) { - new Assertion(fn).to.change(obj, prop); - } - - /** - * ### .doesNotChange(function, object, property) - * - * Asserts that a function does not changes the value of a property - * - * var obj = { val: 10 }; - * var fn = function() { console.log('foo'); }; - * assert.doesNotChange(fn, obj, 'val'); - * - * @name doesNotChange - * @param {Function} modifier function - * @param {Object} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.doesNotChange = function (fn, obj, prop) { - new Assertion(fn).to.not.change(obj, prop); - } - - /** - * ### .increases(function, object, property) - * - * Asserts that a function increases an object property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val = 13 }; - * assert.increases(fn, obj, 'val'); - * - * @name increases - * @param {Function} modifier function - * @param {Object} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.increases = function (fn, obj, prop) { - new Assertion(fn).to.increase(obj, prop); - } - - /** - * ### .doesNotIncrease(function, object, property) - * - * Asserts that a function does not increase object property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val = 8 }; - * assert.doesNotIncrease(fn, obj, 'val'); - * - * @name doesNotIncrease - * @param {Function} modifier function - * @param {Object} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.doesNotIncrease = function (fn, obj, prop) { - new Assertion(fn).to.not.increase(obj, prop); - } - - /** - * ### .decreases(function, object, property) - * - * Asserts that a function decreases an object property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val = 5 }; - * assert.decreases(fn, obj, 'val'); - * - * @name decreases - * @param {Function} modifier function - * @param {Object} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.decreases = function (fn, obj, prop) { - new Assertion(fn).to.decrease(obj, prop); - } - - /** - * ### .doesNotDecrease(function, object, property) - * - * Asserts that a function does not decreases an object property - * - * var obj = { val: 10 }; - * var fn = function() { obj.val = 15 }; - * assert.doesNotDecrease(fn, obj, 'val'); - * - * @name doesNotDecrease - * @param {Function} modifier function - * @param {Object} object - * @param {String} property name - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.doesNotDecrease = function (fn, obj, prop) { - new Assertion(fn).to.not.decrease(obj, prop); - } - - /*! - * ### .ifError(object) - * - * Asserts if value is not a false value, and throws if it is a true value. - * This is added to allow for chai to be a drop-in replacement for Node's - * assert class. - * - * var err = new Error('I am a custom error'); - * assert.ifError(err); // Rethrows err! - * - * @name ifError - * @param {Object} object - * @namespace Assert - * @api public - */ - - assert.ifError = function (val) { - if (val) { - throw(val); - } - }; - - /** - * ### .isExtensible(object) - * - * Asserts that `object` is extensible (can have new properties added to it). - * - * assert.isExtensible({}); - * - * @name isExtensible - * @alias extensible - * @param {Object} object - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.isExtensible = function (obj, msg) { - new Assertion(obj, msg).to.be.extensible; - }; - - /** - * ### .isNotExtensible(object) - * - * Asserts that `object` is _not_ extensible. - * - * var nonExtensibleObject = Object.preventExtensions({}); - * var sealedObject = Object.seal({}); - * var frozenObject = Object.freese({}); - * - * assert.isNotExtensible(nonExtensibleObject); - * assert.isNotExtensible(sealedObject); - * assert.isNotExtensible(frozenObject); - * - * @name isNotExtensible - * @alias notExtensible - * @param {Object} object - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.isNotExtensible = function (obj, msg) { - new Assertion(obj, msg).to.not.be.extensible; - }; - - /** - * ### .isSealed(object) - * - * Asserts that `object` is sealed (cannot have new properties added to it - * and its existing properties cannot be removed). - * - * var sealedObject = Object.seal({}); - * var frozenObject = Object.seal({}); - * - * assert.isSealed(sealedObject); - * assert.isSealed(frozenObject); - * - * @name isSealed - * @alias sealed - * @param {Object} object - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.isSealed = function (obj, msg) { - new Assertion(obj, msg).to.be.sealed; - }; - - /** - * ### .isNotSealed(object) - * - * Asserts that `object` is _not_ sealed. - * - * assert.isNotSealed({}); - * - * @name isNotSealed - * @alias notSealed - * @param {Object} object - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.isNotSealed = function (obj, msg) { - new Assertion(obj, msg).to.not.be.sealed; - }; - - /** - * ### .isFrozen(object) - * - * Asserts that `object` is frozen (cannot have new properties added to it - * and its existing properties cannot be modified). - * - * var frozenObject = Object.freeze({}); - * assert.frozen(frozenObject); - * - * @name isFrozen - * @alias frozen - * @param {Object} object - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.isFrozen = function (obj, msg) { - new Assertion(obj, msg).to.be.frozen; - }; - - /** - * ### .isNotFrozen(object) - * - * Asserts that `object` is _not_ frozen. - * - * assert.isNotFrozen({}); - * - * @name isNotFrozen - * @alias notFrozen - * @param {Object} object - * @param {String} message _optional_ - * @namespace Assert - * @api public - */ - - assert.isNotFrozen = function (obj, msg) { - new Assertion(obj, msg).to.not.be.frozen; - }; - - /*! - * Aliases. - */ - - (function alias(name, as){ - assert[as] = assert[name]; - return alias; - }) - ('isOk', 'ok') - ('isNotOk', 'notOk') - ('throws', 'throw') - ('throws', 'Throw') - ('isExtensible', 'extensible') - ('isNotExtensible', 'notExtensible') - ('isSealed', 'sealed') - ('isNotSealed', 'notSealed') - ('isFrozen', 'frozen') - ('isNotFrozen', 'notFrozen'); -}; - -},{}],7:[function(require,module,exports){ -/*! - * chai - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - */ - -module.exports = function (chai, util) { - chai.expect = function (val, message) { - return new chai.Assertion(val, message); - }; - - /** - * ### .fail(actual, expected, [message], [operator]) - * - * Throw a failure. - * - * @name fail - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @param {String} operator - * @namespace Expect - * @api public - */ - - chai.expect.fail = function (actual, expected, message, operator) { - message = message || 'expect.fail()'; - throw new chai.AssertionError(message, { - actual: actual - , expected: expected - , operator: operator - }, chai.expect.fail); - }; -}; - -},{}],8:[function(require,module,exports){ -/*! - * chai - * Copyright(c) 2011-2014 Jake Luer - * MIT Licensed - */ - -module.exports = function (chai, util) { - var Assertion = chai.Assertion; - - function loadShould () { - // explicitly define this method as function as to have it's name to include as `ssfi` - function shouldGetter() { - if (this instanceof String || this instanceof Number || this instanceof Boolean ) { - return new Assertion(this.valueOf(), null, shouldGetter); - } - return new Assertion(this, null, shouldGetter); - } - function shouldSetter(value) { - // See https://github.com/chaijs/chai/issues/86: this makes - // `whatever.should = someValue` actually set `someValue`, which is - // especially useful for `global.should = require('chai').should()`. - // - // Note that we have to use [[DefineProperty]] instead of [[Put]] - // since otherwise we would trigger this very setter! - Object.defineProperty(this, 'should', { - value: value, - enumerable: true, - configurable: true, - writable: true - }); - } - // modify Object.prototype to have `should` - Object.defineProperty(Object.prototype, 'should', { - set: shouldSetter - , get: shouldGetter - , configurable: true - }); - - var should = {}; - - /** - * ### .fail(actual, expected, [message], [operator]) - * - * Throw a failure. - * - * @name fail - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @param {String} operator - * @namespace Should - * @api public - */ - - should.fail = function (actual, expected, message, operator) { - message = message || 'should.fail()'; - throw new chai.AssertionError(message, { - actual: actual - , expected: expected - , operator: operator - }, should.fail); - }; - - /** - * ### .equal(actual, expected, [message]) - * - * Asserts non-strict equality (`==`) of `actual` and `expected`. - * - * should.equal(3, '3', '== coerces values to strings'); - * - * @name equal - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Should - * @api public - */ - - should.equal = function (val1, val2, msg) { - new Assertion(val1, msg).to.equal(val2); - }; - - /** - * ### .throw(function, [constructor/string/regexp], [string/regexp], [message]) - * - * Asserts that `function` will throw an error that is an instance of - * `constructor`, or alternately that it will throw an error with message - * matching `regexp`. - * - * should.throw(fn, 'function throws a reference error'); - * should.throw(fn, /function throws a reference error/); - * should.throw(fn, ReferenceError); - * should.throw(fn, ReferenceError, 'function throws a reference error'); - * should.throw(fn, ReferenceError, /function throws a reference error/); - * - * @name throw - * @alias Throw - * @param {Function} function - * @param {ErrorConstructor} constructor - * @param {RegExp} regexp - * @param {String} message - * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types - * @namespace Should - * @api public - */ - - should.Throw = function (fn, errt, errs, msg) { - new Assertion(fn, msg).to.Throw(errt, errs); - }; - - /** - * ### .exist - * - * Asserts that the target is neither `null` nor `undefined`. - * - * var foo = 'hi'; - * - * should.exist(foo, 'foo exists'); - * - * @name exist - * @namespace Should - * @api public - */ - - should.exist = function (val, msg) { - new Assertion(val, msg).to.exist; - } - - // negation - should.not = {} - - /** - * ### .not.equal(actual, expected, [message]) - * - * Asserts non-strict inequality (`!=`) of `actual` and `expected`. - * - * should.not.equal(3, 4, 'these numbers are not equal'); - * - * @name not.equal - * @param {Mixed} actual - * @param {Mixed} expected - * @param {String} message - * @namespace Should - * @api public - */ - - should.not.equal = function (val1, val2, msg) { - new Assertion(val1, msg).to.not.equal(val2); - }; - - /** - * ### .throw(function, [constructor/regexp], [message]) - * - * Asserts that `function` will _not_ throw an error that is an instance of - * `constructor`, or alternately that it will not throw an error with message - * matching `regexp`. - * - * should.not.throw(fn, Error, 'function does not throw'); - * - * @name not.throw - * @alias not.Throw - * @param {Function} function - * @param {ErrorConstructor} constructor - * @param {RegExp} regexp - * @param {String} message - * @see https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error#Error_types - * @namespace Should - * @api public - */ - - should.not.Throw = function (fn, errt, errs, msg) { - new Assertion(fn, msg).to.not.Throw(errt, errs); - }; - - /** - * ### .not.exist - * - * Asserts that the target is neither `null` nor `undefined`. - * - * var bar = null; - * - * should.not.exist(bar, 'bar does not exist'); - * - * @name not.exist - * @namespace Should - * @api public - */ - - should.not.exist = function (val, msg) { - new Assertion(val, msg).to.not.exist; - } - - should['throw'] = should['Throw']; - should.not['throw'] = should.not['Throw']; - - return should; - }; - - chai.should = loadShould; - chai.Should = loadShould; -}; - -},{}],9:[function(require,module,exports){ -/*! - * Chai - addChainingMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/*! - * Module dependencies - */ - -var transferFlags = require('./transferFlags'); -var flag = require('./flag'); -var config = require('../config'); - -/*! - * Module variables - */ - -// Check whether `__proto__` is supported -var hasProtoSupport = '__proto__' in Object; - -// Without `__proto__` support, this module will need to add properties to a function. -// However, some Function.prototype methods cannot be overwritten, -// and there seems no easy cross-platform way to detect them (@see chaijs/chai/issues/69). -var excludeNames = /^(?:length|name|arguments|caller)$/; - -// Cache `Function` properties -var call = Function.prototype.call, - apply = Function.prototype.apply; - -/** - * ### addChainableMethod (ctx, name, method, chainingBehavior) - * - * Adds a method to an object, such that the method can also be chained. - * - * utils.addChainableMethod(chai.Assertion.prototype, 'foo', function (str) { - * var obj = utils.flag(this, 'object'); - * new chai.Assertion(obj).to.be.equal(str); - * }); - * - * Can also be accessed directly from `chai.Assertion`. - * - * chai.Assertion.addChainableMethod('foo', fn, chainingBehavior); - * - * The result can then be used as both a method assertion, executing both `method` and - * `chainingBehavior`, or as a language chain, which only executes `chainingBehavior`. - * - * expect(fooStr).to.be.foo('bar'); - * expect(fooStr).to.be.foo.equal('foo'); - * - * @param {Object} ctx object to which the method is added - * @param {String} name of method to add - * @param {Function} method function to be used for `name`, when called - * @param {Function} chainingBehavior function to be called every time the property is accessed - * @namespace Utils - * @name addChainableMethod - * @api public - */ - -module.exports = function (ctx, name, method, chainingBehavior) { - if (typeof chainingBehavior !== 'function') { - chainingBehavior = function () { }; - } - - var chainableBehavior = { - method: method - , chainingBehavior: chainingBehavior - }; - - // save the methods so we can overwrite them later, if we need to. - if (!ctx.__methods) { - ctx.__methods = {}; - } - ctx.__methods[name] = chainableBehavior; - - Object.defineProperty(ctx, name, - { get: function () { - chainableBehavior.chainingBehavior.call(this); - - var assert = function assert() { - var old_ssfi = flag(this, 'ssfi'); - if (old_ssfi && config.includeStack === false) - flag(this, 'ssfi', assert); - var result = chainableBehavior.method.apply(this, arguments); - return result === undefined ? this : result; - }; - - // Use `__proto__` if available - if (hasProtoSupport) { - // Inherit all properties from the object by replacing the `Function` prototype - var prototype = assert.__proto__ = Object.create(this); - // Restore the `call` and `apply` methods from `Function` - prototype.call = call; - prototype.apply = apply; - } - // Otherwise, redefine all properties (slow!) - else { - var asserterNames = Object.getOwnPropertyNames(ctx); - asserterNames.forEach(function (asserterName) { - if (!excludeNames.test(asserterName)) { - var pd = Object.getOwnPropertyDescriptor(ctx, asserterName); - Object.defineProperty(assert, asserterName, pd); - } - }); - } - - transferFlags(this, assert); - return assert; - } - , configurable: true - }); -}; - -},{"../config":4,"./flag":13,"./transferFlags":29}],10:[function(require,module,exports){ -/*! - * Chai - addMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -var config = require('../config'); - -/** - * ### .addMethod (ctx, name, method) - * - * Adds a method to the prototype of an object. - * - * utils.addMethod(chai.Assertion.prototype, 'foo', function (str) { - * var obj = utils.flag(this, 'object'); - * new chai.Assertion(obj).to.be.equal(str); - * }); - * - * Can also be accessed directly from `chai.Assertion`. - * - * chai.Assertion.addMethod('foo', fn); - * - * Then can be used as any other assertion. - * - * expect(fooStr).to.be.foo('bar'); - * - * @param {Object} ctx object to which the method is added - * @param {String} name of method to add - * @param {Function} method function to be used for name - * @namespace Utils - * @name addMethod - * @api public - */ -var flag = require('./flag'); - -module.exports = function (ctx, name, method) { - ctx[name] = function () { - var old_ssfi = flag(this, 'ssfi'); - if (old_ssfi && config.includeStack === false) - flag(this, 'ssfi', ctx[name]); - var result = method.apply(this, arguments); - return result === undefined ? this : result; - }; -}; - -},{"../config":4,"./flag":13}],11:[function(require,module,exports){ -/*! - * Chai - addProperty utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -var config = require('../config'); -var flag = require('./flag'); - -/** - * ### addProperty (ctx, name, getter) - * - * Adds a property to the prototype of an object. - * - * utils.addProperty(chai.Assertion.prototype, 'foo', function () { - * var obj = utils.flag(this, 'object'); - * new chai.Assertion(obj).to.be.instanceof(Foo); - * }); - * - * Can also be accessed directly from `chai.Assertion`. - * - * chai.Assertion.addProperty('foo', fn); - * - * Then can be used as any other assertion. - * - * expect(myFoo).to.be.foo; - * - * @param {Object} ctx object to which the property is added - * @param {String} name of property to add - * @param {Function} getter function to be used for name - * @namespace Utils - * @name addProperty - * @api public - */ - -module.exports = function (ctx, name, getter) { - Object.defineProperty(ctx, name, - { get: function addProperty() { - var old_ssfi = flag(this, 'ssfi'); - if (old_ssfi && config.includeStack === false) - flag(this, 'ssfi', addProperty); - - var result = getter.call(this); - return result === undefined ? this : result; - } - , configurable: true - }); -}; - -},{"../config":4,"./flag":13}],12:[function(require,module,exports){ -/*! - * Chai - expectTypes utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### expectTypes(obj, types) - * - * Ensures that the object being tested against is of a valid type. - * - * utils.expectTypes(this, ['array', 'object', 'string']); - * - * @param {Mixed} obj constructed Assertion - * @param {Array} type A list of allowed types for this assertion - * @namespace Utils - * @name expectTypes - * @api public - */ - -var AssertionError = require('assertion-error'); -var flag = require('./flag'); -var type = require('type-detect'); - -module.exports = function (obj, types) { - var obj = flag(obj, 'object'); - types = types.map(function (t) { return t.toLowerCase(); }); - types.sort(); - - // Transforms ['lorem', 'ipsum'] into 'a lirum, or an ipsum' - var str = types.map(function (t, index) { - var art = ~[ 'a', 'e', 'i', 'o', 'u' ].indexOf(t.charAt(0)) ? 'an' : 'a'; - var or = types.length > 1 && index === types.length - 1 ? 'or ' : ''; - return or + art + ' ' + t; - }).join(', '); - - if (!types.some(function (expected) { return type(obj) === expected; })) { - throw new AssertionError( - 'object tested must be ' + str + ', but ' + type(obj) + ' given' - ); - } -}; - -},{"./flag":13,"assertion-error":30,"type-detect":35}],13:[function(require,module,exports){ -/*! - * Chai - flag utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### flag(object, key, [value]) - * - * Get or set a flag value on an object. If a - * value is provided it will be set, else it will - * return the currently set value or `undefined` if - * the value is not set. - * - * utils.flag(this, 'foo', 'bar'); // setter - * utils.flag(this, 'foo'); // getter, returns `bar` - * - * @param {Object} object constructed Assertion - * @param {String} key - * @param {Mixed} value (optional) - * @namespace Utils - * @name flag - * @api private - */ - -module.exports = function (obj, key, value) { - var flags = obj.__flags || (obj.__flags = Object.create(null)); - if (arguments.length === 3) { - flags[key] = value; - } else { - return flags[key]; - } -}; - -},{}],14:[function(require,module,exports){ -/*! - * Chai - getActual utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * # getActual(object, [actual]) - * - * Returns the `actual` value for an Assertion - * - * @param {Object} object (constructed Assertion) - * @param {Arguments} chai.Assertion.prototype.assert arguments - * @namespace Utils - * @name getActual - */ - -module.exports = function (obj, args) { - return args.length > 4 ? args[4] : obj._obj; -}; - -},{}],15:[function(require,module,exports){ -/*! - * Chai - getEnumerableProperties utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### .getEnumerableProperties(object) - * - * This allows the retrieval of enumerable property names of an object, - * inherited or not. - * - * @param {Object} object - * @returns {Array} - * @namespace Utils - * @name getEnumerableProperties - * @api public - */ - -module.exports = function getEnumerableProperties(object) { - var result = []; - for (var name in object) { - result.push(name); - } - return result; -}; - -},{}],16:[function(require,module,exports){ -/*! - * Chai - message composition utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/*! - * Module dependancies - */ - -var flag = require('./flag') - , getActual = require('./getActual') - , inspect = require('./inspect') - , objDisplay = require('./objDisplay'); - -/** - * ### .getMessage(object, message, negateMessage) - * - * Construct the error message based on flags - * and template tags. Template tags will return - * a stringified inspection of the object referenced. - * - * Message template tags: - * - `#{this}` current asserted object - * - `#{act}` actual value - * - `#{exp}` expected value - * - * @param {Object} object (constructed Assertion) - * @param {Arguments} chai.Assertion.prototype.assert arguments - * @namespace Utils - * @name getMessage - * @api public - */ - -module.exports = function (obj, args) { - var negate = flag(obj, 'negate') - , val = flag(obj, 'object') - , expected = args[3] - , actual = getActual(obj, args) - , msg = negate ? args[2] : args[1] - , flagMsg = flag(obj, 'message'); - - if(typeof msg === "function") msg = msg(); - msg = msg || ''; - msg = msg - .replace(/#\{this\}/g, function () { return objDisplay(val); }) - .replace(/#\{act\}/g, function () { return objDisplay(actual); }) - .replace(/#\{exp\}/g, function () { return objDisplay(expected); }); - - return flagMsg ? flagMsg + ': ' + msg : msg; -}; - -},{"./flag":13,"./getActual":14,"./inspect":23,"./objDisplay":24}],17:[function(require,module,exports){ -/*! - * Chai - getName utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * # getName(func) - * - * Gets the name of a function, in a cross-browser way. - * - * @param {Function} a function (usually a constructor) - * @namespace Utils - * @name getName - */ - -module.exports = function (func) { - if (func.name) return func.name; - - var match = /^\s?function ([^(]*)\(/.exec(func); - return match && match[1] ? match[1] : ""; -}; - -},{}],18:[function(require,module,exports){ -/*! - * Chai - getPathInfo utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -var hasProperty = require('./hasProperty'); - -/** - * ### .getPathInfo(path, object) - * - * This allows the retrieval of property info in an - * object given a string path. - * - * The path info consists of an object with the - * following properties: - * - * * parent - The parent object of the property referenced by `path` - * * name - The name of the final property, a number if it was an array indexer - * * value - The value of the property, if it exists, otherwise `undefined` - * * exists - Whether the property exists or not - * - * @param {String} path - * @param {Object} object - * @returns {Object} info - * @namespace Utils - * @name getPathInfo - * @api public - */ - -module.exports = function getPathInfo(path, obj) { - var parsed = parsePath(path), - last = parsed[parsed.length - 1]; - - var info = { - parent: parsed.length > 1 ? _getPathValue(parsed, obj, parsed.length - 1) : obj, - name: last.p || last.i, - value: _getPathValue(parsed, obj) - }; - info.exists = hasProperty(info.name, info.parent); - - return info; -}; - - -/*! - * ## parsePath(path) - * - * Helper function used to parse string object - * paths. Use in conjunction with `_getPathValue`. - * - * var parsed = parsePath('myobject.property.subprop'); - * - * ### Paths: - * - * * Can be as near infinitely deep and nested - * * Arrays are also valid using the formal `myobject.document[3].property`. - * * Literal dots and brackets (not delimiter) must be backslash-escaped. - * - * @param {String} path - * @returns {Object} parsed - * @api private - */ - -function parsePath (path) { - var str = path.replace(/([^\\])\[/g, '$1.[') - , parts = str.match(/(\\\.|[^.]+?)+/g); - return parts.map(function (value) { - var re = /^\[(\d+)\]$/ - , mArr = re.exec(value); - if (mArr) return { i: parseFloat(mArr[1]) }; - else return { p: value.replace(/\\([.\[\]])/g, '$1') }; - }); -} - - -/*! - * ## _getPathValue(parsed, obj) - * - * Helper companion function for `.parsePath` that returns - * the value located at the parsed address. - * - * var value = getPathValue(parsed, obj); - * - * @param {Object} parsed definition from `parsePath`. - * @param {Object} object to search against - * @param {Number} object to search against - * @returns {Object|Undefined} value - * @api private - */ - -function _getPathValue (parsed, obj, index) { - var tmp = obj - , res; - - index = (index === undefined ? parsed.length : index); - - for (var i = 0, l = index; i < l; i++) { - var part = parsed[i]; - if (tmp) { - if ('undefined' !== typeof part.p) - tmp = tmp[part.p]; - else if ('undefined' !== typeof part.i) - tmp = tmp[part.i]; - if (i == (l - 1)) res = tmp; - } else { - res = undefined; - } - } - return res; -} - -},{"./hasProperty":21}],19:[function(require,module,exports){ -/*! - * Chai - getPathValue utility - * Copyright(c) 2012-2014 Jake Luer - * @see https://github.com/logicalparadox/filtr - * MIT Licensed - */ - -var getPathInfo = require('./getPathInfo'); - -/** - * ### .getPathValue(path, object) - * - * This allows the retrieval of values in an - * object given a string path. - * - * var obj = { - * prop1: { - * arr: ['a', 'b', 'c'] - * , str: 'Hello' - * } - * , prop2: { - * arr: [ { nested: 'Universe' } ] - * , str: 'Hello again!' - * } - * } - * - * The following would be the results. - * - * getPathValue('prop1.str', obj); // Hello - * getPathValue('prop1.att[2]', obj); // b - * getPathValue('prop2.arr[0].nested', obj); // Universe - * - * @param {String} path - * @param {Object} object - * @returns {Object} value or `undefined` - * @namespace Utils - * @name getPathValue - * @api public - */ -module.exports = function(path, obj) { - var info = getPathInfo(path, obj); - return info.value; -}; - -},{"./getPathInfo":18}],20:[function(require,module,exports){ -/*! - * Chai - getProperties utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### .getProperties(object) - * - * This allows the retrieval of property names of an object, enumerable or not, - * inherited or not. - * - * @param {Object} object - * @returns {Array} - * @namespace Utils - * @name getProperties - * @api public - */ - -module.exports = function getProperties(object) { - var result = Object.getOwnPropertyNames(object); - - function addProperty(property) { - if (result.indexOf(property) === -1) { - result.push(property); - } - } - - var proto = Object.getPrototypeOf(object); - while (proto !== null) { - Object.getOwnPropertyNames(proto).forEach(addProperty); - proto = Object.getPrototypeOf(proto); - } - - return result; -}; - -},{}],21:[function(require,module,exports){ -/*! - * Chai - hasProperty utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -var type = require('type-detect'); - -/** - * ### .hasProperty(object, name) - * - * This allows checking whether an object has - * named property or numeric array index. - * - * Basically does the same thing as the `in` - * operator but works properly with natives - * and null/undefined values. - * - * var obj = { - * arr: ['a', 'b', 'c'] - * , str: 'Hello' - * } - * - * The following would be the results. - * - * hasProperty('str', obj); // true - * hasProperty('constructor', obj); // true - * hasProperty('bar', obj); // false - * - * hasProperty('length', obj.str); // true - * hasProperty(1, obj.str); // true - * hasProperty(5, obj.str); // false - * - * hasProperty('length', obj.arr); // true - * hasProperty(2, obj.arr); // true - * hasProperty(3, obj.arr); // false - * - * @param {Objuect} object - * @param {String|Number} name - * @returns {Boolean} whether it exists - * @namespace Utils - * @name getPathInfo - * @api public - */ - -var literals = { - 'number': Number - , 'string': String -}; - -module.exports = function hasProperty(name, obj) { - var ot = type(obj); - - // Bad Object, obviously no props at all - if(ot === 'null' || ot === 'undefined') - return false; - - // The `in` operator does not work with certain literals - // box these before the check - if(literals[ot] && typeof obj !== 'object') - obj = new literals[ot](obj); - - return name in obj; -}; - -},{"type-detect":35}],22:[function(require,module,exports){ -/*! - * chai - * Copyright(c) 2011 Jake Luer - * MIT Licensed - */ - -/*! - * Main exports - */ - -var exports = module.exports = {}; - -/*! - * test utility - */ - -exports.test = require('./test'); - -/*! - * type utility - */ - -exports.type = require('type-detect'); - -/*! - * expectTypes utility - */ -exports.expectTypes = require('./expectTypes'); - -/*! - * message utility - */ - -exports.getMessage = require('./getMessage'); - -/*! - * actual utility - */ - -exports.getActual = require('./getActual'); - -/*! - * Inspect util - */ - -exports.inspect = require('./inspect'); - -/*! - * Object Display util - */ - -exports.objDisplay = require('./objDisplay'); - -/*! - * Flag utility - */ - -exports.flag = require('./flag'); - -/*! - * Flag transferring utility - */ - -exports.transferFlags = require('./transferFlags'); - -/*! - * Deep equal utility - */ - -exports.eql = require('deep-eql'); - -/*! - * Deep path value - */ - -exports.getPathValue = require('./getPathValue'); - -/*! - * Deep path info - */ - -exports.getPathInfo = require('./getPathInfo'); - -/*! - * Check if a property exists - */ - -exports.hasProperty = require('./hasProperty'); - -/*! - * Function name - */ - -exports.getName = require('./getName'); - -/*! - * add Property - */ - -exports.addProperty = require('./addProperty'); - -/*! - * add Method - */ - -exports.addMethod = require('./addMethod'); - -/*! - * overwrite Property - */ - -exports.overwriteProperty = require('./overwriteProperty'); - -/*! - * overwrite Method - */ - -exports.overwriteMethod = require('./overwriteMethod'); - -/*! - * Add a chainable method - */ - -exports.addChainableMethod = require('./addChainableMethod'); - -/*! - * Overwrite chainable method - */ - -exports.overwriteChainableMethod = require('./overwriteChainableMethod'); - -},{"./addChainableMethod":9,"./addMethod":10,"./addProperty":11,"./expectTypes":12,"./flag":13,"./getActual":14,"./getMessage":16,"./getName":17,"./getPathInfo":18,"./getPathValue":19,"./hasProperty":21,"./inspect":23,"./objDisplay":24,"./overwriteChainableMethod":25,"./overwriteMethod":26,"./overwriteProperty":27,"./test":28,"./transferFlags":29,"deep-eql":31,"type-detect":35}],23:[function(require,module,exports){ -// This is (almost) directly from Node.js utils -// https://github.com/joyent/node/blob/f8c335d0caf47f16d31413f89aa28eda3878e3aa/lib/util.js - -var getName = require('./getName'); -var getProperties = require('./getProperties'); -var getEnumerableProperties = require('./getEnumerableProperties'); - -module.exports = inspect; - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Boolean} showHidden Flag that shows hidden (not enumerable) - * properties of objects. - * @param {Number} depth Depth in which to descend in object. Default is 2. - * @param {Boolean} colors Flag to turn on ANSI escape codes to color the - * output. Default is false (no coloring). - * @namespace Utils - * @name inspect - */ -function inspect(obj, showHidden, depth, colors) { - var ctx = { - showHidden: showHidden, - seen: [], - stylize: function (str) { return str; } - }; - return formatValue(ctx, obj, (typeof depth === 'undefined' ? 2 : depth)); -} - -// Returns true if object is a DOM element. -var isDOMElement = function (object) { - if (typeof HTMLElement === 'object') { - return object instanceof HTMLElement; - } else { - return object && - typeof object === 'object' && - object.nodeType === 1 && - typeof object.nodeName === 'string'; - } -}; - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (value && typeof value.inspect === 'function' && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes); - if (typeof ret !== 'string') { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // If this is a DOM element, try to get the outer HTML. - if (isDOMElement(value)) { - if ('outerHTML' in value) { - return value.outerHTML; - // This value does not have an outerHTML attribute, - // it could still be an XML element - } else { - // Attempt to serialize it - try { - if (document.xmlVersion) { - var xmlSerializer = new XMLSerializer(); - return xmlSerializer.serializeToString(value); - } else { - // Firefox 11- do not support outerHTML - // It does, however, support innerHTML - // Use the following to render the element - var ns = "http://www.w3.org/1999/xhtml"; - var container = document.createElementNS(ns, '_'); - - container.appendChild(value.cloneNode(false)); - html = container.innerHTML - .replace('><', '>' + value.innerHTML + '<'); - container.innerHTML = ''; - return html; - } - } catch (err) { - // This could be a non-native DOM implementation, - // continue with the normal flow: - // printing the element as if it is an object. - } - } - } - - // Look up the keys of the object. - var visibleKeys = getEnumerableProperties(value); - var keys = ctx.showHidden ? getProperties(value) : visibleKeys; - - // Some type of object without properties can be shortcutted. - // In IE, errors have a single `stack` property, or if they are vanilla `Error`, - // a `stack` plus `description` property; ignore those for consistency. - if (keys.length === 0 || (isError(value) && ( - (keys.length === 1 && keys[0] === 'stack') || - (keys.length === 2 && keys[0] === 'description' && keys[1] === 'stack') - ))) { - if (typeof value === 'function') { - var name = getName(value); - var nameSuffix = name ? ': ' + name : ''; - return ctx.stylize('[Function' + nameSuffix + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toUTCString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (typeof value === 'function') { - var name = getName(value); - var nameSuffix = name ? ': ' + name : ''; - base = ' [Function' + nameSuffix + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - return formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - switch (typeof value) { - case 'undefined': - return ctx.stylize('undefined', 'undefined'); - - case 'string': - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - - case 'number': - if (value === 0 && (1/value) === -Infinity) { - return ctx.stylize('-0', 'number'); - } - return ctx.stylize('' + value, 'number'); - - case 'boolean': - return ctx.stylize('' + value, 'boolean'); - } - // For some reason typeof null is "object", so special case here. - if (value === null) { - return ctx.stylize('null', 'null'); - } -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (Object.prototype.hasOwnProperty.call(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str; - if (value.__lookupGetter__) { - if (value.__lookupGetter__(key)) { - if (value.__lookupSetter__(key)) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (value.__lookupSetter__(key)) { - str = ctx.stylize('[Setter]', 'special'); - } - } - } - if (visibleKeys.indexOf(key) < 0) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(value[key]) < 0) { - if (recurseTimes === null) { - str = formatValue(ctx, value[key], null); - } else { - str = formatValue(ctx, value[key], recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (typeof name === 'undefined') { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - -function isArray(ar) { - return Array.isArray(ar) || - (typeof ar === 'object' && objectToString(ar) === '[object Array]'); -} - -function isRegExp(re) { - return typeof re === 'object' && objectToString(re) === '[object RegExp]'; -} - -function isDate(d) { - return typeof d === 'object' && objectToString(d) === '[object Date]'; -} - -function isError(e) { - return typeof e === 'object' && objectToString(e) === '[object Error]'; -} - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -},{"./getEnumerableProperties":15,"./getName":17,"./getProperties":20}],24:[function(require,module,exports){ -/*! - * Chai - flag utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/*! - * Module dependancies - */ - -var inspect = require('./inspect'); -var config = require('../config'); - -/** - * ### .objDisplay (object) - * - * Determines if an object or an array matches - * criteria to be inspected in-line for error - * messages or should be truncated. - * - * @param {Mixed} javascript object to inspect - * @name objDisplay - * @namespace Utils - * @api public - */ - -module.exports = function (obj) { - var str = inspect(obj) - , type = Object.prototype.toString.call(obj); - - if (config.truncateThreshold && str.length >= config.truncateThreshold) { - if (type === '[object Function]') { - return !obj.name || obj.name === '' - ? '[Function]' - : '[Function: ' + obj.name + ']'; - } else if (type === '[object Array]') { - return '[ Array(' + obj.length + ') ]'; - } else if (type === '[object Object]') { - var keys = Object.keys(obj) - , kstr = keys.length > 2 - ? keys.splice(0, 2).join(', ') + ', ...' - : keys.join(', '); - return '{ Object (' + kstr + ') }'; - } else { - return str; - } - } else { - return str; - } -}; - -},{"../config":4,"./inspect":23}],25:[function(require,module,exports){ -/*! - * Chai - overwriteChainableMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### overwriteChainableMethod (ctx, name, method, chainingBehavior) - * - * Overwites an already existing chainable method - * and provides access to the previous function or - * property. Must return functions to be used for - * name. - * - * utils.overwriteChainableMethod(chai.Assertion.prototype, 'length', - * function (_super) { - * } - * , function (_super) { - * } - * ); - * - * Can also be accessed directly from `chai.Assertion`. - * - * chai.Assertion.overwriteChainableMethod('foo', fn, fn); - * - * Then can be used as any other assertion. - * - * expect(myFoo).to.have.length(3); - * expect(myFoo).to.have.length.above(3); - * - * @param {Object} ctx object whose method / property is to be overwritten - * @param {String} name of method / property to overwrite - * @param {Function} method function that returns a function to be used for name - * @param {Function} chainingBehavior function that returns a function to be used for property - * @namespace Utils - * @name overwriteChainableMethod - * @api public - */ - -module.exports = function (ctx, name, method, chainingBehavior) { - var chainableBehavior = ctx.__methods[name]; - - var _chainingBehavior = chainableBehavior.chainingBehavior; - chainableBehavior.chainingBehavior = function () { - var result = chainingBehavior(_chainingBehavior).call(this); - return result === undefined ? this : result; - }; - - var _method = chainableBehavior.method; - chainableBehavior.method = function () { - var result = method(_method).apply(this, arguments); - return result === undefined ? this : result; - }; -}; - -},{}],26:[function(require,module,exports){ -/*! - * Chai - overwriteMethod utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### overwriteMethod (ctx, name, fn) - * - * Overwites an already existing method and provides - * access to previous function. Must return function - * to be used for name. - * - * utils.overwriteMethod(chai.Assertion.prototype, 'equal', function (_super) { - * return function (str) { - * var obj = utils.flag(this, 'object'); - * if (obj instanceof Foo) { - * new chai.Assertion(obj.value).to.equal(str); - * } else { - * _super.apply(this, arguments); - * } - * } - * }); - * - * Can also be accessed directly from `chai.Assertion`. - * - * chai.Assertion.overwriteMethod('foo', fn); - * - * Then can be used as any other assertion. - * - * expect(myFoo).to.equal('bar'); - * - * @param {Object} ctx object whose method is to be overwritten - * @param {String} name of method to overwrite - * @param {Function} method function that returns a function to be used for name - * @namespace Utils - * @name overwriteMethod - * @api public - */ - -module.exports = function (ctx, name, method) { - var _method = ctx[name] - , _super = function () { return this; }; - - if (_method && 'function' === typeof _method) - _super = _method; - - ctx[name] = function () { - var result = method(_super).apply(this, arguments); - return result === undefined ? this : result; - } -}; - -},{}],27:[function(require,module,exports){ -/*! - * Chai - overwriteProperty utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### overwriteProperty (ctx, name, fn) - * - * Overwites an already existing property getter and provides - * access to previous value. Must return function to use as getter. - * - * utils.overwriteProperty(chai.Assertion.prototype, 'ok', function (_super) { - * return function () { - * var obj = utils.flag(this, 'object'); - * if (obj instanceof Foo) { - * new chai.Assertion(obj.name).to.equal('bar'); - * } else { - * _super.call(this); - * } - * } - * }); - * - * - * Can also be accessed directly from `chai.Assertion`. - * - * chai.Assertion.overwriteProperty('foo', fn); - * - * Then can be used as any other assertion. - * - * expect(myFoo).to.be.ok; - * - * @param {Object} ctx object whose property is to be overwritten - * @param {String} name of property to overwrite - * @param {Function} getter function that returns a getter function to be used for name - * @namespace Utils - * @name overwriteProperty - * @api public - */ - -module.exports = function (ctx, name, getter) { - var _get = Object.getOwnPropertyDescriptor(ctx, name) - , _super = function () {}; - - if (_get && 'function' === typeof _get.get) - _super = _get.get - - Object.defineProperty(ctx, name, - { get: function () { - var result = getter(_super).call(this); - return result === undefined ? this : result; - } - , configurable: true - }); -}; - -},{}],28:[function(require,module,exports){ -/*! - * Chai - test utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/*! - * Module dependancies - */ - -var flag = require('./flag'); - -/** - * # test(object, expression) - * - * Test and object for expression. - * - * @param {Object} object (constructed Assertion) - * @param {Arguments} chai.Assertion.prototype.assert arguments - * @namespace Utils - * @name test - */ - -module.exports = function (obj, args) { - var negate = flag(obj, 'negate') - , expr = args[0]; - return negate ? !expr : expr; -}; - -},{"./flag":13}],29:[function(require,module,exports){ -/*! - * Chai - transferFlags utility - * Copyright(c) 2012-2014 Jake Luer - * MIT Licensed - */ - -/** - * ### transferFlags(assertion, object, includeAll = true) - * - * Transfer all the flags for `assertion` to `object`. If - * `includeAll` is set to `false`, then the base Chai - * assertion flags (namely `object`, `ssfi`, and `message`) - * will not be transferred. - * - * - * var newAssertion = new Assertion(); - * utils.transferFlags(assertion, newAssertion); - * - * var anotherAsseriton = new Assertion(myObj); - * utils.transferFlags(assertion, anotherAssertion, false); - * - * @param {Assertion} assertion the assertion to transfer the flags from - * @param {Object} object the object to transfer the flags to; usually a new assertion - * @param {Boolean} includeAll - * @namespace Utils - * @name transferFlags - * @api private - */ - -module.exports = function (assertion, object, includeAll) { - var flags = assertion.__flags || (assertion.__flags = Object.create(null)); - - if (!object.__flags) { - object.__flags = Object.create(null); - } - - includeAll = arguments.length === 3 ? includeAll : true; - - for (var flag in flags) { - if (includeAll || - (flag !== 'object' && flag !== 'ssfi' && flag != 'message')) { - object.__flags[flag] = flags[flag]; - } - } -}; - -},{}],30:[function(require,module,exports){ -/*! - * assertion-error - * Copyright(c) 2013 Jake Luer - * MIT Licensed - */ - -/*! - * Return a function that will copy properties from - * one object to another excluding any originally - * listed. Returned function will create a new `{}`. - * - * @param {String} excluded properties ... - * @return {Function} - */ - -function exclude () { - var excludes = [].slice.call(arguments); - - function excludeProps (res, obj) { - Object.keys(obj).forEach(function (key) { - if (!~excludes.indexOf(key)) res[key] = obj[key]; - }); - } - - return function extendExclude () { - var args = [].slice.call(arguments) - , i = 0 - , res = {}; - - for (; i < args.length; i++) { - excludeProps(res, args[i]); - } - - return res; - }; -}; - -/*! - * Primary Exports - */ - -module.exports = AssertionError; - -/** - * ### AssertionError - * - * An extension of the JavaScript `Error` constructor for - * assertion and validation scenarios. - * - * @param {String} message - * @param {Object} properties to include (optional) - * @param {callee} start stack function (optional) - */ - -function AssertionError (message, _props, ssf) { - var extend = exclude('name', 'message', 'stack', 'constructor', 'toJSON') - , props = extend(_props || {}); - - // default values - this.message = message || 'Unspecified AssertionError'; - this.showDiff = false; - - // copy from properties - for (var key in props) { - this[key] = props[key]; - } - - // capture stack trace - ssf = ssf || arguments.callee; - if (ssf && Error.captureStackTrace) { - Error.captureStackTrace(this, ssf); - } else { - this.stack = new Error().stack; - } -} - -/*! - * Inherit from Error.prototype - */ - -AssertionError.prototype = Object.create(Error.prototype); - -/*! - * Statically set name - */ - -AssertionError.prototype.name = 'AssertionError'; - -/*! - * Ensure correct constructor - */ - -AssertionError.prototype.constructor = AssertionError; - -/** - * Allow errors to be converted to JSON for static transfer. - * - * @param {Boolean} include stack (default: `true`) - * @return {Object} object that can be `JSON.stringify` - */ - -AssertionError.prototype.toJSON = function (stack) { - var extend = exclude('constructor', 'toJSON', 'stack') - , props = extend({ name: this.name }, this); - - // include stack if exists and not turned off - if (false !== stack && this.stack) { - props.stack = this.stack; - } - - return props; -}; - -},{}],31:[function(require,module,exports){ -module.exports = require('./lib/eql'); - -},{"./lib/eql":32}],32:[function(require,module,exports){ -/*! - * deep-eql - * Copyright(c) 2013 Jake Luer - * MIT Licensed - */ - -/*! - * Module dependencies - */ - -var type = require('type-detect'); - -/*! - * Buffer.isBuffer browser shim - */ - -var Buffer; -try { Buffer = require('buffer').Buffer; } -catch(ex) { - Buffer = {}; - Buffer.isBuffer = function() { return false; } -} - -/*! - * Primary Export - */ - -module.exports = deepEqual; - -/** - * Assert super-strict (egal) equality between - * two objects of any type. - * - * @param {Mixed} a - * @param {Mixed} b - * @param {Array} memoised (optional) - * @return {Boolean} equal match - */ - -function deepEqual(a, b, m) { - if (sameValue(a, b)) { - return true; - } else if ('date' === type(a)) { - return dateEqual(a, b); - } else if ('regexp' === type(a)) { - return regexpEqual(a, b); - } else if (Buffer.isBuffer(a)) { - return bufferEqual(a, b); - } else if ('arguments' === type(a)) { - return argumentsEqual(a, b, m); - } else if (!typeEqual(a, b)) { - return false; - } else if (('object' !== type(a) && 'object' !== type(b)) - && ('array' !== type(a) && 'array' !== type(b))) { - return sameValue(a, b); - } else { - return objectEqual(a, b, m); - } -} - -/*! - * Strict (egal) equality test. Ensures that NaN always - * equals NaN and `-0` does not equal `+0`. - * - * @param {Mixed} a - * @param {Mixed} b - * @return {Boolean} equal match - */ - -function sameValue(a, b) { - if (a === b) return a !== 0 || 1 / a === 1 / b; - return a !== a && b !== b; -} - -/*! - * Compare the types of two given objects and - * return if they are equal. Note that an Array - * has a type of `array` (not `object`) and arguments - * have a type of `arguments` (not `array`/`object`). - * - * @param {Mixed} a - * @param {Mixed} b - * @return {Boolean} result - */ - -function typeEqual(a, b) { - return type(a) === type(b); -} - -/*! - * Compare two Date objects by asserting that - * the time values are equal using `saveValue`. - * - * @param {Date} a - * @param {Date} b - * @return {Boolean} result - */ - -function dateEqual(a, b) { - if ('date' !== type(b)) return false; - return sameValue(a.getTime(), b.getTime()); -} - -/*! - * Compare two regular expressions by converting them - * to string and checking for `sameValue`. - * - * @param {RegExp} a - * @param {RegExp} b - * @return {Boolean} result - */ - -function regexpEqual(a, b) { - if ('regexp' !== type(b)) return false; - return sameValue(a.toString(), b.toString()); -} - -/*! - * Assert deep equality of two `arguments` objects. - * Unfortunately, these must be sliced to arrays - * prior to test to ensure no bad behavior. - * - * @param {Arguments} a - * @param {Arguments} b - * @param {Array} memoize (optional) - * @return {Boolean} result - */ - -function argumentsEqual(a, b, m) { - if ('arguments' !== type(b)) return false; - a = [].slice.call(a); - b = [].slice.call(b); - return deepEqual(a, b, m); -} - -/*! - * Get enumerable properties of a given object. - * - * @param {Object} a - * @return {Array} property names - */ - -function enumerable(a) { - var res = []; - for (var key in a) res.push(key); - return res; -} - -/*! - * Simple equality for flat iterable objects - * such as Arrays or Node.js buffers. - * - * @param {Iterable} a - * @param {Iterable} b - * @return {Boolean} result - */ - -function iterableEqual(a, b) { - if (a.length !== b.length) return false; - - var i = 0; - var match = true; - - for (; i < a.length; i++) { - if (a[i] !== b[i]) { - match = false; - break; - } - } - - return match; -} - -/*! - * Extension to `iterableEqual` specifically - * for Node.js Buffers. - * - * @param {Buffer} a - * @param {Mixed} b - * @return {Boolean} result - */ - -function bufferEqual(a, b) { - if (!Buffer.isBuffer(b)) return false; - return iterableEqual(a, b); -} - -/*! - * Block for `objectEqual` ensuring non-existing - * values don't get in. - * - * @param {Mixed} object - * @return {Boolean} result - */ - -function isValue(a) { - return a !== null && a !== undefined; -} - -/*! - * Recursively check the equality of two objects. - * Once basic sameness has been established it will - * defer to `deepEqual` for each enumerable key - * in the object. - * - * @param {Mixed} a - * @param {Mixed} b - * @return {Boolean} result - */ - -function objectEqual(a, b, m) { - if (!isValue(a) || !isValue(b)) { - return false; - } - - if (a.prototype !== b.prototype) { - return false; - } - - var i; - if (m) { - for (i = 0; i < m.length; i++) { - if ((m[i][0] === a && m[i][1] === b) - || (m[i][0] === b && m[i][1] === a)) { - return true; - } - } - } else { - m = []; - } - - try { - var ka = enumerable(a); - var kb = enumerable(b); - } catch (ex) { - return false; - } - - ka.sort(); - kb.sort(); - - if (!iterableEqual(ka, kb)) { - return false; - } - - m.push([ a, b ]); - - var key; - for (i = ka.length - 1; i >= 0; i--) { - key = ka[i]; - if (!deepEqual(a[key], b[key], m)) { - return false; - } - } - - return true; -} - -},{"buffer":undefined,"type-detect":33}],33:[function(require,module,exports){ -module.exports = require('./lib/type'); - -},{"./lib/type":34}],34:[function(require,module,exports){ -/*! - * type-detect - * Copyright(c) 2013 jake luer - * MIT Licensed - */ - -/*! - * Primary Exports - */ - -var exports = module.exports = getType; - -/*! - * Detectable javascript natives - */ - -var natives = { - '[object Array]': 'array' - , '[object RegExp]': 'regexp' - , '[object Function]': 'function' - , '[object Arguments]': 'arguments' - , '[object Date]': 'date' -}; - -/** - * ### typeOf (obj) - * - * Use several different techniques to determine - * the type of object being tested. - * - * - * @param {Mixed} object - * @return {String} object type - * @api public - */ - -function getType (obj) { - var str = Object.prototype.toString.call(obj); - if (natives[str]) return natives[str]; - if (obj === null) return 'null'; - if (obj === undefined) return 'undefined'; - if (obj === Object(obj)) return 'object'; - return typeof obj; -} - -exports.Library = Library; - -/** - * ### Library - * - * Create a repository for custom type detection. - * - * ```js - * var lib = new type.Library; - * ``` - * - */ - -function Library () { - this.tests = {}; -} - -/** - * #### .of (obj) - * - * Expose replacement `typeof` detection to the library. - * - * ```js - * if ('string' === lib.of('hello world')) { - * // ... - * } - * ``` - * - * @param {Mixed} object to test - * @return {String} type - */ - -Library.prototype.of = getType; - -/** - * #### .define (type, test) - * - * Add a test to for the `.test()` assertion. - * - * Can be defined as a regular expression: - * - * ```js - * lib.define('int', /^[0-9]+$/); - * ``` - * - * ... or as a function: - * - * ```js - * lib.define('bln', function (obj) { - * if ('boolean' === lib.of(obj)) return true; - * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ]; - * if ('string' === lib.of(obj)) obj = obj.toLowerCase(); - * return !! ~blns.indexOf(obj); - * }); - * ``` - * - * @param {String} type - * @param {RegExp|Function} test - * @api public - */ - -Library.prototype.define = function (type, test) { - if (arguments.length === 1) return this.tests[type]; - this.tests[type] = test; - return this; -}; - -/** - * #### .test (obj, test) - * - * Assert that an object is of type. Will first - * check natives, and if that does not pass it will - * use the user defined custom tests. - * - * ```js - * assert(lib.test('1', 'int')); - * assert(lib.test('yes', 'bln')); - * ``` - * - * @param {Mixed} object - * @param {String} type - * @return {Boolean} result - * @api public - */ - -Library.prototype.test = function (obj, type) { - if (type === getType(obj)) return true; - var test = this.tests[type]; - - if (test && 'regexp' === getType(test)) { - return test.test(obj); - } else if (test && 'function' === getType(test)) { - return test(obj); - } else { - throw new ReferenceError('Type test "' + type + '" not defined or invalid.'); - } -}; - -},{}],35:[function(require,module,exports){ -arguments[4][33][0].apply(exports,arguments) -},{"./lib/type":36,"dup":33}],36:[function(require,module,exports){ -/*! - * type-detect - * Copyright(c) 2013 jake luer - * MIT Licensed - */ - -/*! - * Primary Exports - */ - -var exports = module.exports = getType; - -/** - * ### typeOf (obj) - * - * Use several different techniques to determine - * the type of object being tested. - * - * - * @param {Mixed} object - * @return {String} object type - * @api public - */ -var objectTypeRegexp = /^\[object (.*)\]$/; - -function getType(obj) { - var type = Object.prototype.toString.call(obj).match(objectTypeRegexp)[1].toLowerCase(); - // Let "new String('')" return 'object' - if (typeof Promise === 'function' && obj instanceof Promise) return 'promise'; - // PhantomJS has type "DOMWindow" for null - if (obj === null) return 'null'; - // PhantomJS has type "DOMWindow" for undefined - if (obj === undefined) return 'undefined'; - return type; -} - -exports.Library = Library; - -/** - * ### Library - * - * Create a repository for custom type detection. - * - * ```js - * var lib = new type.Library; - * ``` - * - */ - -function Library() { - if (!(this instanceof Library)) return new Library(); - this.tests = {}; -} - -/** - * #### .of (obj) - * - * Expose replacement `typeof` detection to the library. - * - * ```js - * if ('string' === lib.of('hello world')) { - * // ... - * } - * ``` - * - * @param {Mixed} object to test - * @return {String} type - */ - -Library.prototype.of = getType; - -/** - * #### .define (type, test) - * - * Add a test to for the `.test()` assertion. - * - * Can be defined as a regular expression: - * - * ```js - * lib.define('int', /^[0-9]+$/); - * ``` - * - * ... or as a function: - * - * ```js - * lib.define('bln', function (obj) { - * if ('boolean' === lib.of(obj)) return true; - * var blns = [ 'yes', 'no', 'true', 'false', 1, 0 ]; - * if ('string' === lib.of(obj)) obj = obj.toLowerCase(); - * return !! ~blns.indexOf(obj); - * }); - * ``` - * - * @param {String} type - * @param {RegExp|Function} test - * @api public - */ - -Library.prototype.define = function(type, test) { - if (arguments.length === 1) return this.tests[type]; - this.tests[type] = test; - return this; -}; - -/** - * #### .test (obj, test) - * - * Assert that an object is of type. Will first - * check natives, and if that does not pass it will - * use the user defined custom tests. - * - * ```js - * assert(lib.test('1', 'int')); - * assert(lib.test('yes', 'bln')); - * ``` - * - * @param {Mixed} object - * @param {String} type - * @return {Boolean} result - * @api public - */ - -Library.prototype.test = function(obj, type) { - if (type === getType(obj)) return true; - var test = this.tests[type]; - - if (test && 'regexp' === getType(test)) { - return test.test(obj); - } else if (test && 'function' === getType(test)) { - return test(obj); - } else { - throw new ReferenceError('Type test "' + type + '" not defined or invalid.'); - } -}; - -},{}]},{},[1])(1) -}); diff --git a/bower_components/blueimp-canvas-to-blob/test/vendor/load-image.js b/bower_components/blueimp-canvas-to-blob/test/vendor/load-image.js deleted file mode 100644 index e7fe73c960..0000000000 --- a/bower_components/blueimp-canvas-to-blob/test/vendor/load-image.js +++ /dev/null @@ -1,364 +0,0 @@ -/* - * JavaScript Load Image - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define, URL, webkitURL, FileReader */ - -;(function ($) { - 'use strict' - - // Loads an image for a given File object. - // Invokes the callback with an img or optional canvas - // element (if supported by the browser) as parameter: - function loadImage (file, callback, options) { - var img = document.createElement('img') - var url - img.onerror = function (event) { - return loadImage.onerror(img, event, file, callback, options) - } - img.onload = function (event) { - return loadImage.onload(img, event, file, callback, options) - } - if (loadImage.isInstanceOf('Blob', file) || - // Files are also Blob instances, but some browsers - // (Firefox 3.6) support the File API but not Blobs: - loadImage.isInstanceOf('File', file)) { - url = img._objectURL = loadImage.createObjectURL(file) - } else if (typeof file === 'string') { - url = file - if (options && options.crossOrigin) { - img.crossOrigin = options.crossOrigin - } - } else { - return false - } - if (url) { - img.src = url - return img - } - return loadImage.readFile(file, function (e) { - var target = e.target - if (target && target.result) { - img.src = target.result - } else if (callback) { - callback(e) - } - }) - } - // The check for URL.revokeObjectURL fixes an issue with Opera 12, - // which provides URL.createObjectURL but doesn't properly implement it: - var urlAPI = (window.createObjectURL && window) || - (window.URL && URL.revokeObjectURL && URL) || - (window.webkitURL && webkitURL) - - function revokeHelper (img, options) { - if (img._objectURL && !(options && options.noRevoke)) { - loadImage.revokeObjectURL(img._objectURL) - delete img._objectURL - } - } - - loadImage.isInstanceOf = function (type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']' - } - - loadImage.transform = function (img, options, callback, file, data) { - callback(loadImage.scale(img, options, data), data) - } - - loadImage.onerror = function (img, event, file, callback, options) { - revokeHelper(img, options) - if (callback) { - callback.call(img, event) - } - } - - loadImage.onload = function (img, event, file, callback, options) { - revokeHelper(img, options) - if (callback) { - loadImage.transform(img, options, callback, file, {}) - } - } - - // Transform image coordinates, allows to override e.g. - // the canvas orientation based on the orientation option, - // gets canvas, options passed as arguments: - loadImage.transformCoordinates = function () { - return - } - - // Returns transformed options, allows to override e.g. - // maxWidth, maxHeight and crop options based on the aspectRatio. - // gets img, options passed as arguments: - loadImage.getTransformedOptions = function (img, options) { - var aspectRatio = options.aspectRatio - var newOptions - var i - var width - var height - if (!aspectRatio) { - return options - } - newOptions = {} - for (i in options) { - if (options.hasOwnProperty(i)) { - newOptions[i] = options[i] - } - } - newOptions.crop = true - width = img.naturalWidth || img.width - height = img.naturalHeight || img.height - if (width / height > aspectRatio) { - newOptions.maxWidth = height * aspectRatio - newOptions.maxHeight = height - } else { - newOptions.maxWidth = width - newOptions.maxHeight = width / aspectRatio - } - return newOptions - } - - // Canvas render method, allows to implement a different rendering algorithm: - loadImage.renderImageToCanvas = function ( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destX, - destY, - destWidth, - destHeight - ) { - canvas.getContext('2d').drawImage( - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destX, - destY, - destWidth, - destHeight - ) - return canvas - } - - // Determines if the target image should be a canvas element: - loadImage.hasCanvasOption = function (options) { - return options.canvas || options.crop || !!options.aspectRatio - } - - // Scales and/or crops the given image (img or canvas HTML element) - // using the given options. - // Returns a canvas object if the browser supports canvas - // and the hasCanvasOption method returns true or a canvas - // object is passed as image, else the scaled image: - loadImage.scale = function (img, options, data) { - options = options || {} - var canvas = document.createElement('canvas') - var useCanvas = img.getContext || - (loadImage.hasCanvasOption(options) && canvas.getContext) - var width = img.naturalWidth || img.width - var height = img.naturalHeight || img.height - var destWidth = width - var destHeight = height - var maxWidth - var maxHeight - var minWidth - var minHeight - var sourceWidth - var sourceHeight - var sourceX - var sourceY - var pixelRatio - var downsamplingRatio - var tmp - function scaleUp () { - var scale = Math.max( - (minWidth || destWidth) / destWidth, - (minHeight || destHeight) / destHeight - ) - if (scale > 1) { - destWidth *= scale - destHeight *= scale - } - } - function scaleDown () { - var scale = Math.min( - (maxWidth || destWidth) / destWidth, - (maxHeight || destHeight) / destHeight - ) - if (scale < 1) { - destWidth *= scale - destHeight *= scale - } - } - if (useCanvas) { - options = loadImage.getTransformedOptions(img, options, data) - sourceX = options.left || 0 - sourceY = options.top || 0 - if (options.sourceWidth) { - sourceWidth = options.sourceWidth - if (options.right !== undefined && options.left === undefined) { - sourceX = width - sourceWidth - options.right - } - } else { - sourceWidth = width - sourceX - (options.right || 0) - } - if (options.sourceHeight) { - sourceHeight = options.sourceHeight - if (options.bottom !== undefined && options.top === undefined) { - sourceY = height - sourceHeight - options.bottom - } - } else { - sourceHeight = height - sourceY - (options.bottom || 0) - } - destWidth = sourceWidth - destHeight = sourceHeight - } - maxWidth = options.maxWidth - maxHeight = options.maxHeight - minWidth = options.minWidth - minHeight = options.minHeight - if (useCanvas && maxWidth && maxHeight && options.crop) { - destWidth = maxWidth - destHeight = maxHeight - tmp = sourceWidth / sourceHeight - maxWidth / maxHeight - if (tmp < 0) { - sourceHeight = maxHeight * sourceWidth / maxWidth - if (options.top === undefined && options.bottom === undefined) { - sourceY = (height - sourceHeight) / 2 - } - } else if (tmp > 0) { - sourceWidth = maxWidth * sourceHeight / maxHeight - if (options.left === undefined && options.right === undefined) { - sourceX = (width - sourceWidth) / 2 - } - } - } else { - if (options.contain || options.cover) { - minWidth = maxWidth = maxWidth || minWidth - minHeight = maxHeight = maxHeight || minHeight - } - if (options.cover) { - scaleDown() - scaleUp() - } else { - scaleUp() - scaleDown() - } - } - if (useCanvas) { - pixelRatio = options.pixelRatio - if (pixelRatio > 1) { - canvas.style.width = destWidth + 'px' - canvas.style.height = destHeight + 'px' - destWidth *= pixelRatio - destHeight *= pixelRatio - canvas.getContext('2d').scale(pixelRatio, pixelRatio) - } - downsamplingRatio = options.downsamplingRatio - if (downsamplingRatio > 0 && downsamplingRatio < 1 && - destWidth < sourceWidth && destHeight < sourceHeight) { - while (sourceWidth * downsamplingRatio > destWidth) { - canvas.width = sourceWidth * downsamplingRatio - canvas.height = sourceHeight * downsamplingRatio - loadImage.renderImageToCanvas( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - 0, - 0, - canvas.width, - canvas.height - ) - sourceWidth = canvas.width - sourceHeight = canvas.height - img = document.createElement('canvas') - img.width = sourceWidth - img.height = sourceHeight - loadImage.renderImageToCanvas( - img, - canvas, - 0, - 0, - sourceWidth, - sourceHeight, - 0, - 0, - sourceWidth, - sourceHeight - ) - } - } - canvas.width = destWidth - canvas.height = destHeight - loadImage.transformCoordinates( - canvas, - options - ) - return loadImage.renderImageToCanvas( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - 0, - 0, - destWidth, - destHeight - ) - } - img.width = destWidth - img.height = destHeight - return img - } - - loadImage.createObjectURL = function (file) { - return urlAPI ? urlAPI.createObjectURL(file) : false - } - - loadImage.revokeObjectURL = function (url) { - return urlAPI ? urlAPI.revokeObjectURL(url) : false - } - - // Loads a given File object via FileReader interface, - // invokes the callback with the event object (load or error). - // The result can be read via event.target.result: - loadImage.readFile = function (file, callback, method) { - if (window.FileReader) { - var fileReader = new FileReader() - fileReader.onload = fileReader.onerror = callback - method = method || 'readAsDataURL' - if (fileReader[method]) { - fileReader[method](file) - return fileReader - } - } - return false - } - - if (typeof define === 'function' && define.amd) { - define(function () { - return loadImage - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = loadImage - } else { - $.loadImage = loadImage - } -}(window)) diff --git a/bower_components/blueimp-canvas-to-blob/test/vendor/mocha.css b/bower_components/blueimp-canvas-to-blob/test/vendor/mocha.css deleted file mode 100644 index ec96b003c9..0000000000 --- a/bower_components/blueimp-canvas-to-blob/test/vendor/mocha.css +++ /dev/null @@ -1,326 +0,0 @@ -@charset "utf-8"; - -body { - margin:0; -} - -#mocha { - font: 20px/1.5 "Helvetica Neue", Helvetica, Arial, sans-serif; - margin: 60px 50px; -} - -#mocha ul, -#mocha li { - margin: 0; - padding: 0; -} - -#mocha ul { - list-style: none; -} - -#mocha h1, -#mocha h2 { - margin: 0; -} - -#mocha h1 { - margin-top: 15px; - font-size: 1em; - font-weight: 200; -} - -#mocha h1 a { - text-decoration: none; - color: inherit; -} - -#mocha h1 a:hover { - text-decoration: underline; -} - -#mocha .suite .suite h1 { - margin-top: 0; - font-size: .8em; -} - -#mocha .hidden { - display: none; -} - -#mocha h2 { - font-size: 12px; - font-weight: normal; - cursor: pointer; -} - -#mocha .suite { - margin-left: 15px; -} - -#mocha .test { - margin-left: 15px; - overflow: hidden; -} - -#mocha .test.pending:hover h2::after { - content: '(pending)'; - font-family: arial, sans-serif; -} - -#mocha .test.pass.medium .duration { - background: #c09853; -} - -#mocha .test.pass.slow .duration { - background: #b94a48; -} - -#mocha .test.pass::before { - content: '✓'; - font-size: 12px; - display: block; - float: left; - margin-right: 5px; - color: #00d6b2; -} - -#mocha .test.pass .duration { - font-size: 9px; - margin-left: 5px; - padding: 2px 5px; - color: #fff; - -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - box-shadow: inset 0 1px 1px rgba(0,0,0,.2); - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - -ms-border-radius: 5px; - -o-border-radius: 5px; - border-radius: 5px; -} - -#mocha .test.pass.fast .duration { - display: none; -} - -#mocha .test.pending { - color: #0b97c4; -} - -#mocha .test.pending::before { - content: '◦'; - color: #0b97c4; -} - -#mocha .test.fail { - color: #c00; -} - -#mocha .test.fail pre { - color: black; -} - -#mocha .test.fail::before { - content: '✖'; - font-size: 12px; - display: block; - float: left; - margin-right: 5px; - color: #c00; -} - -#mocha .test pre.error { - color: #c00; - max-height: 300px; - overflow: auto; -} - -#mocha .test .html-error { - overflow: auto; - color: black; - line-height: 1.5; - display: block; - float: left; - clear: left; - font: 12px/1.5 monaco, monospace; - margin: 5px; - padding: 15px; - border: 1px solid #eee; - max-width: 85%; /*(1)*/ - max-width: -webkit-calc(100% - 42px); - max-width: -moz-calc(100% - 42px); - max-width: calc(100% - 42px); /*(2)*/ - max-height: 300px; - word-wrap: break-word; - border-bottom-color: #ddd; - -webkit-box-shadow: 0 1px 3px #eee; - -moz-box-shadow: 0 1px 3px #eee; - box-shadow: 0 1px 3px #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -#mocha .test .html-error pre.error { - border: none; - -webkit-border-radius: 0; - -moz-border-radius: 0; - border-radius: 0; - -webkit-box-shadow: 0; - -moz-box-shadow: 0; - box-shadow: 0; - padding: 0; - margin: 0; - margin-top: 18px; - max-height: none; -} - -/** - * (1): approximate for browsers not supporting calc - * (2): 42 = 2*15 + 2*10 + 2*1 (padding + margin + border) - * ^^ seriously - */ -#mocha .test pre { - display: block; - float: left; - clear: left; - font: 12px/1.5 monaco, monospace; - margin: 5px; - padding: 15px; - border: 1px solid #eee; - max-width: 85%; /*(1)*/ - max-width: -webkit-calc(100% - 42px); - max-width: -moz-calc(100% - 42px); - max-width: calc(100% - 42px); /*(2)*/ - word-wrap: break-word; - border-bottom-color: #ddd; - -webkit-box-shadow: 0 1px 3px #eee; - -moz-box-shadow: 0 1px 3px #eee; - box-shadow: 0 1px 3px #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -#mocha .test h2 { - position: relative; -} - -#mocha .test a.replay { - position: absolute; - top: 3px; - right: 0; - text-decoration: none; - vertical-align: middle; - display: block; - width: 15px; - height: 15px; - line-height: 15px; - text-align: center; - background: #eee; - font-size: 15px; - -webkit-border-radius: 15px; - -moz-border-radius: 15px; - border-radius: 15px; - -webkit-transition:opacity 200ms; - -moz-transition:opacity 200ms; - -o-transition:opacity 200ms; - transition: opacity 200ms; - opacity: 0.3; - color: #888; -} - -#mocha .test:hover a.replay { - opacity: 1; -} - -#mocha-report.pass .test.fail { - display: none; -} - -#mocha-report.fail .test.pass { - display: none; -} - -#mocha-report.pending .test.pass, -#mocha-report.pending .test.fail { - display: none; -} -#mocha-report.pending .test.pass.pending { - display: block; -} - -#mocha-error { - color: #c00; - font-size: 1.5em; - font-weight: 100; - letter-spacing: 1px; -} - -#mocha-stats { - position: fixed; - top: 15px; - right: 10px; - font-size: 12px; - margin: 0; - color: #888; - z-index: 1; -} - -#mocha-stats .progress { - float: right; - padding-top: 0; - - /** - * Set safe initial values, so mochas .progress does not inherit these - * properties from Bootstrap .progress (which causes .progress height to - * equal line height set in Bootstrap). - */ - height: auto; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - background-color: initial; -} - -#mocha-stats em { - color: black; -} - -#mocha-stats a { - text-decoration: none; - color: inherit; -} - -#mocha-stats a:hover { - border-bottom: 1px solid #eee; -} - -#mocha-stats li { - display: inline-block; - margin: 0 5px; - list-style: none; - padding-top: 11px; -} - -#mocha-stats canvas { - width: 40px; - height: 40px; -} - -#mocha code .comment { color: #ddd; } -#mocha code .init { color: #2f6fad; } -#mocha code .string { color: #5890ad; } -#mocha code .keyword { color: #8a6343; } -#mocha code .number { color: #2f6fad; } - -@media screen and (max-device-width: 480px) { - #mocha { - margin: 60px 0px; - } - - #mocha #stats { - position: absolute; - } -} diff --git a/bower_components/blueimp-canvas-to-blob/test/vendor/mocha.js b/bower_components/blueimp-canvas-to-blob/test/vendor/mocha.js deleted file mode 100644 index a1ec48fb93..0000000000 --- a/bower_components/blueimp-canvas-to-blob/test/vendor/mocha.js +++ /dev/null @@ -1,15466 +0,0 @@ -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1) { - suites.shift(); - } - return common.suite.create({ - title: title, - file: file, - fn: false - }); - }; - - /** - * Exclusive Suite. - */ - - context.suite.only = function(title) { - if (suites.length > 1) { - suites.shift(); - } - return common.suite.only({ - title: title, - file: file, - fn: false - }); - }; - - /** - * Describe a specification or test-case - * with the given `title` and callback `fn` - * acting as a thunk. - */ - - context.test = function(title, fn) { - var test = new Test(title, fn); - test.file = file; - suites[0].addTest(test); - return test; - }; - - /** - * Exclusive test-case. - */ - - context.test.only = function(title, fn) { - return common.test.only(mocha, context.test(title, fn)); - }; - - context.test.skip = common.test.skip; - context.test.retries = common.test.retries; - }); -}; - -},{"../test":36,"./common":9}],13:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Test = require('../test'); - -/** - * TDD-style interface: - * - * suite('Array', function() { - * suite('#indexOf()', function() { - * suiteSetup(function() { - * - * }); - * - * test('should return -1 when not present', function() { - * - * }); - * - * test('should return the index when present', function() { - * - * }); - * - * suiteTeardown(function() { - * - * }); - * }); - * }); - * - * @param {Suite} suite Root suite. - */ -module.exports = function(suite) { - var suites = [suite]; - - suite.on('pre-require', function(context, file, mocha) { - var common = require('./common')(suites, context, mocha); - - context.setup = common.beforeEach; - context.teardown = common.afterEach; - context.suiteSetup = common.before; - context.suiteTeardown = common.after; - context.run = mocha.options.delay && common.runWithSuite(suite); - - /** - * Describe a "suite" with the given `title` and callback `fn` containing - * nested suites and/or tests. - */ - context.suite = function(title, fn) { - return common.suite.create({ - title: title, - file: file, - fn: fn - }); - }; - - /** - * Pending suite. - */ - context.suite.skip = function(title, fn) { - return common.suite.skip({ - title: title, - file: file, - fn: fn - }); - }; - - /** - * Exclusive test-case. - */ - context.suite.only = function(title, fn) { - return common.suite.only({ - title: title, - file: file, - fn: fn - }); - }; - - /** - * Describe a specification or test-case with the given `title` and - * callback `fn` acting as a thunk. - */ - context.test = function(title, fn) { - var suite = suites[0]; - if (suite.isPending()) { - fn = null; - } - var test = new Test(title, fn); - test.file = file; - suite.addTest(test); - return test; - }; - - /** - * Exclusive test-case. - */ - - context.test.only = function(title, fn) { - return common.test.only(mocha, context.test(title, fn)); - }; - - context.test.skip = common.test.skip; - context.test.retries = common.test.retries; - }); -}; - -},{"../test":36,"./common":9}],14:[function(require,module,exports){ -(function (process,global,__dirname){ -/*! - * mocha - * Copyright(c) 2011 TJ Holowaychuk - * MIT Licensed - */ - -/** - * Module dependencies. - */ - -var escapeRe = require('escape-string-regexp'); -var path = require('path'); -var reporters = require('./reporters'); -var utils = require('./utils'); - -/** - * Expose `Mocha`. - */ - -exports = module.exports = Mocha; - -/** - * To require local UIs and reporters when running in node. - */ - -if (!process.browser) { - var cwd = process.cwd(); - module.paths.push(cwd, path.join(cwd, 'node_modules')); -} - -/** - * Expose internals. - */ - -exports.utils = utils; -exports.interfaces = require('./interfaces'); -exports.reporters = reporters; -exports.Runnable = require('./runnable'); -exports.Context = require('./context'); -exports.Runner = require('./runner'); -exports.Suite = require('./suite'); -exports.Hook = require('./hook'); -exports.Test = require('./test'); - -/** - * Return image `name` path. - * - * @api private - * @param {string} name - * @return {string} - */ -function image(name) { - return path.join(__dirname, '../images', name + '.png'); -} - -/** - * Set up mocha with `options`. - * - * Options: - * - * - `ui` name "bdd", "tdd", "exports" etc - * - `reporter` reporter instance, defaults to `mocha.reporters.spec` - * - `globals` array of accepted globals - * - `timeout` timeout in milliseconds - * - `retries` number of times to retry failed tests - * - `bail` bail on the first test failure - * - `slow` milliseconds to wait before considering a test slow - * - `ignoreLeaks` ignore global leaks - * - `fullTrace` display the full stack-trace on failing - * - `grep` string or regexp to filter tests with - * - * @param {Object} options - * @api public - */ -function Mocha(options) { - options = options || {}; - this.files = []; - this.options = options; - if (options.grep) { - this.grep(new RegExp(options.grep)); - } - if (options.fgrep) { - this.fgrep(options.fgrep); - } - this.suite = new exports.Suite('', new exports.Context()); - this.ui(options.ui); - this.bail(options.bail); - this.reporter(options.reporter, options.reporterOptions); - if (typeof options.timeout !== 'undefined' && options.timeout !== null) { - this.timeout(options.timeout); - } - if (typeof options.retries !== 'undefined' && options.retries !== null) { - this.retries(options.retries); - } - this.useColors(options.useColors); - if (options.enableTimeouts !== null) { - this.enableTimeouts(options.enableTimeouts); - } - if (options.slow) { - this.slow(options.slow); - } -} - -/** - * Enable or disable bailing on the first failure. - * - * @api public - * @param {boolean} [bail] - */ -Mocha.prototype.bail = function(bail) { - if (!arguments.length) { - bail = true; - } - this.suite.bail(bail); - return this; -}; - -/** - * Add test `file`. - * - * @api public - * @param {string} file - */ -Mocha.prototype.addFile = function(file) { - this.files.push(file); - return this; -}; - -/** - * Set reporter to `reporter`, defaults to "spec". - * - * @param {String|Function} reporter name or constructor - * @param {Object} reporterOptions optional options - * @api public - * @param {string|Function} reporter name or constructor - * @param {Object} reporterOptions optional options - */ -Mocha.prototype.reporter = function(reporter, reporterOptions) { - if (typeof reporter === 'function') { - this._reporter = reporter; - } else { - reporter = reporter || 'spec'; - var _reporter; - // Try to load a built-in reporter. - if (reporters[reporter]) { - _reporter = reporters[reporter]; - } - // Try to load reporters from process.cwd() and node_modules - if (!_reporter) { - try { - _reporter = require(reporter); - } catch (err) { - err.message.indexOf('Cannot find module') !== -1 - ? console.warn('"' + reporter + '" reporter not found') - : console.warn('"' + reporter + '" reporter blew up with error:\n' + err.stack); - } - } - if (!_reporter && reporter === 'teamcity') { - console.warn('The Teamcity reporter was moved to a package named ' - + 'mocha-teamcity-reporter ' - + '(https://npmjs.org/package/mocha-teamcity-reporter).'); - } - if (!_reporter) { - throw new Error('invalid reporter "' + reporter + '"'); - } - this._reporter = _reporter; - } - this.options.reporterOptions = reporterOptions; - return this; -}; - -/** - * Set test UI `name`, defaults to "bdd". - * - * @api public - * @param {string} bdd - */ -Mocha.prototype.ui = function(name) { - name = name || 'bdd'; - this._ui = exports.interfaces[name]; - if (!this._ui) { - try { - this._ui = require(name); - } catch (err) { - throw new Error('invalid interface "' + name + '"'); - } - } - this._ui = this._ui(this.suite); - - this.suite.on('pre-require', function(context) { - exports.afterEach = context.afterEach || context.teardown; - exports.after = context.after || context.suiteTeardown; - exports.beforeEach = context.beforeEach || context.setup; - exports.before = context.before || context.suiteSetup; - exports.describe = context.describe || context.suite; - exports.it = context.it || context.test; - exports.setup = context.setup || context.beforeEach; - exports.suiteSetup = context.suiteSetup || context.before; - exports.suiteTeardown = context.suiteTeardown || context.after; - exports.suite = context.suite || context.describe; - exports.teardown = context.teardown || context.afterEach; - exports.test = context.test || context.it; - exports.run = context.run; - }); - - return this; -}; - -/** - * Load registered files. - * - * @api private - */ -Mocha.prototype.loadFiles = function(fn) { - var self = this; - var suite = this.suite; - this.files.forEach(function(file) { - file = path.resolve(file); - suite.emit('pre-require', global, file, self); - suite.emit('require', require(file), file, self); - suite.emit('post-require', global, file, self); - }); - fn && fn(); -}; - -/** - * Enable growl support. - * - * @api private - */ -Mocha.prototype._growl = function(runner, reporter) { - var notify = require('growl'); - - runner.on('end', function() { - var stats = reporter.stats; - if (stats.failures) { - var msg = stats.failures + ' of ' + runner.total + ' tests failed'; - notify(msg, { name: 'mocha', title: 'Failed', image: image('error') }); - } else { - notify(stats.passes + ' tests passed in ' + stats.duration + 'ms', { - name: 'mocha', - title: 'Passed', - image: image('ok') - }); - } - }); -}; - -/** - * Escape string and add it to grep as a regexp. - * - * @api public - * @param str - * @returns {Mocha} - */ -Mocha.prototype.fgrep = function(str) { - return this.grep(new RegExp(escapeRe(str))); -}; - -/** - * Add regexp to grep, if `re` is a string it is escaped. - * - * @param {RegExp|String} re - * @return {Mocha} - * @api public - * @param {RegExp|string} re - * @return {Mocha} - */ -Mocha.prototype.grep = function(re) { - if (utils.isString(re)) { - // extract args if it's regex-like, i.e: [string, pattern, flag] - var arg = re.match(/^\/(.*)\/(g|i|)$|.*/); - this.options.grep = new RegExp(arg[1] || arg[0], arg[2]); - } else { - this.options.grep = re; - } - return this; -}; -/** - * Invert `.grep()` matches. - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.invert = function() { - this.options.invert = true; - return this; -}; - -/** - * Ignore global leaks. - * - * @param {Boolean} ignore - * @return {Mocha} - * @api public - * @param {boolean} ignore - * @return {Mocha} - */ -Mocha.prototype.ignoreLeaks = function(ignore) { - this.options.ignoreLeaks = Boolean(ignore); - return this; -}; - -/** - * Enable global leak checking. - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.checkLeaks = function() { - this.options.ignoreLeaks = false; - return this; -}; - -/** - * Display long stack-trace on failing - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.fullTrace = function() { - this.options.fullStackTrace = true; - return this; -}; - -/** - * Enable growl support. - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.growl = function() { - this.options.growl = true; - return this; -}; - -/** - * Ignore `globals` array or string. - * - * @param {Array|String} globals - * @return {Mocha} - * @api public - * @param {Array|string} globals - * @return {Mocha} - */ -Mocha.prototype.globals = function(globals) { - this.options.globals = (this.options.globals || []).concat(globals); - return this; -}; - -/** - * Emit color output. - * - * @param {Boolean} colors - * @return {Mocha} - * @api public - * @param {boolean} colors - * @return {Mocha} - */ -Mocha.prototype.useColors = function(colors) { - if (colors !== undefined) { - this.options.useColors = colors; - } - return this; -}; - -/** - * Use inline diffs rather than +/-. - * - * @param {Boolean} inlineDiffs - * @return {Mocha} - * @api public - * @param {boolean} inlineDiffs - * @return {Mocha} - */ -Mocha.prototype.useInlineDiffs = function(inlineDiffs) { - this.options.useInlineDiffs = inlineDiffs !== undefined && inlineDiffs; - return this; -}; - -/** - * Set the timeout in milliseconds. - * - * @param {Number} timeout - * @return {Mocha} - * @api public - * @param {number} timeout - * @return {Mocha} - */ -Mocha.prototype.timeout = function(timeout) { - this.suite.timeout(timeout); - return this; -}; - -/** - * Set the number of times to retry failed tests. - * - * @param {Number} retry times - * @return {Mocha} - * @api public - */ -Mocha.prototype.retries = function(n) { - this.suite.retries(n); - return this; -}; - -/** - * Set slowness threshold in milliseconds. - * - * @param {Number} slow - * @return {Mocha} - * @api public - * @param {number} slow - * @return {Mocha} - */ -Mocha.prototype.slow = function(slow) { - this.suite.slow(slow); - return this; -}; - -/** - * Enable timeouts. - * - * @param {Boolean} enabled - * @return {Mocha} - * @api public - * @param {boolean} enabled - * @return {Mocha} - */ -Mocha.prototype.enableTimeouts = function(enabled) { - this.suite.enableTimeouts(arguments.length && enabled !== undefined ? enabled : true); - return this; -}; - -/** - * Makes all tests async (accepting a callback) - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.asyncOnly = function() { - this.options.asyncOnly = true; - return this; -}; - -/** - * Disable syntax highlighting (in browser). - * - * @api public - */ -Mocha.prototype.noHighlighting = function() { - this.options.noHighlighting = true; - return this; -}; - -/** - * Enable uncaught errors to propagate (in browser). - * - * @return {Mocha} - * @api public - */ -Mocha.prototype.allowUncaught = function() { - this.options.allowUncaught = true; - return this; -}; - -/** - * Delay root suite execution. - * @returns {Mocha} - */ -Mocha.prototype.delay = function delay() { - this.options.delay = true; - return this; -}; - -/** - * Run tests and invoke `fn()` when complete. - * - * @api public - * @param {Function} fn - * @return {Runner} - */ -Mocha.prototype.run = function(fn) { - if (this.files.length) { - this.loadFiles(); - } - var suite = this.suite; - var options = this.options; - options.files = this.files; - var runner = new exports.Runner(suite, options.delay); - var reporter = new this._reporter(runner, options); - runner.ignoreLeaks = options.ignoreLeaks !== false; - runner.fullStackTrace = options.fullStackTrace; - runner.hasOnly = options.hasOnly; - runner.asyncOnly = options.asyncOnly; - runner.allowUncaught = options.allowUncaught; - if (options.grep) { - runner.grep(options.grep, options.invert); - } - if (options.globals) { - runner.globals(options.globals); - } - if (options.growl) { - this._growl(runner, reporter); - } - if (options.useColors !== undefined) { - exports.reporters.Base.useColors = options.useColors; - } - exports.reporters.Base.inlineDiffs = options.useInlineDiffs; - - function done(failures) { - if (reporter.done) { - reporter.done(failures, fn); - } else { - fn && fn(failures); - } - } - - return runner.run(done); -}; - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},"/lib") -},{"./context":6,"./hook":7,"./interfaces":11,"./reporters":21,"./runnable":33,"./runner":34,"./suite":35,"./test":36,"./utils":38,"_process":67,"escape-string-regexp":47,"growl":49,"path":42}],15:[function(require,module,exports){ -/** - * Helpers. - */ - -var s = 1000; -var m = s * 60; -var h = m * 60; -var d = h * 24; -var y = d * 365.25; - -/** - * Parse or format the given `val`. - * - * Options: - * - * - `long` verbose formatting [false] - * - * @api public - * @param {string|number} val - * @param {Object} options - * @return {string|number} - */ -module.exports = function(val, options) { - options = options || {}; - if (typeof val === 'string') { - return parse(val); - } - // https://github.com/mochajs/mocha/pull/1035 - return options['long'] ? longFormat(val) : shortFormat(val); -}; - -/** - * Parse the given `str` and return milliseconds. - * - * @api private - * @param {string} str - * @return {number} - */ -function parse(str) { - var match = (/^((?:\d+)?\.?\d+) *(ms|seconds?|s|minutes?|m|hours?|h|days?|d|years?|y)?$/i).exec(str); - if (!match) { - return; - } - var n = parseFloat(match[1]); - var type = (match[2] || 'ms').toLowerCase(); - switch (type) { - case 'years': - case 'year': - case 'y': - return n * y; - case 'days': - case 'day': - case 'd': - return n * d; - case 'hours': - case 'hour': - case 'h': - return n * h; - case 'minutes': - case 'minute': - case 'm': - return n * m; - case 'seconds': - case 'second': - case 's': - return n * s; - case 'ms': - return n; - default: - // No default case - } -} - -/** - * Short format for `ms`. - * - * @api private - * @param {number} ms - * @return {string} - */ -function shortFormat(ms) { - if (ms >= d) { - return Math.round(ms / d) + 'd'; - } - if (ms >= h) { - return Math.round(ms / h) + 'h'; - } - if (ms >= m) { - return Math.round(ms / m) + 'm'; - } - if (ms >= s) { - return Math.round(ms / s) + 's'; - } - return ms + 'ms'; -} - -/** - * Long format for `ms`. - * - * @api private - * @param {number} ms - * @return {string} - */ -function longFormat(ms) { - return plural(ms, d, 'day') - || plural(ms, h, 'hour') - || plural(ms, m, 'minute') - || plural(ms, s, 'second') - || ms + ' ms'; -} - -/** - * Pluralization helper. - * - * @api private - * @param {number} ms - * @param {number} n - * @param {string} name - */ -function plural(ms, n, name) { - if (ms < n) { - return; - } - if (ms < n * 1.5) { - return Math.floor(ms / n) + ' ' + name; - } - return Math.ceil(ms / n) + ' ' + name + 's'; -} - -},{}],16:[function(require,module,exports){ - -/** - * Expose `Pending`. - */ - -module.exports = Pending; - -/** - * Initialize a new `Pending` error with the given message. - * - * @param {string} message - */ -function Pending(message) { - this.message = message; -} - -},{}],17:[function(require,module,exports){ -(function (process,global){ -/** - * Module dependencies. - */ - -var tty = require('tty'); -var diff = require('diff'); -var ms = require('../ms'); -var utils = require('../utils'); -var supportsColor = process.browser ? null : require('supports-color'); - -/** - * Expose `Base`. - */ - -exports = module.exports = Base; - -/** - * Save timer references to avoid Sinon interfering. - * See: https://github.com/mochajs/mocha/issues/237 - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Check if both stdio streams are associated with a tty. - */ - -var isatty = tty.isatty(1) && tty.isatty(2); - -/** - * Enable coloring by default, except in the browser interface. - */ - -exports.useColors = !process.browser && (supportsColor || (process.env.MOCHA_COLORS !== undefined)); - -/** - * Inline diffs instead of +/- - */ - -exports.inlineDiffs = false; - -/** - * Default color map. - */ - -exports.colors = { - pass: 90, - fail: 31, - 'bright pass': 92, - 'bright fail': 91, - 'bright yellow': 93, - pending: 36, - suite: 0, - 'error title': 0, - 'error message': 31, - 'error stack': 90, - checkmark: 32, - fast: 90, - medium: 33, - slow: 31, - green: 32, - light: 90, - 'diff gutter': 90, - 'diff added': 32, - 'diff removed': 31 -}; - -/** - * Default symbol map. - */ - -exports.symbols = { - ok: '✓', - err: '✖', - dot: '․', - comma: ',', - bang: '!' -}; - -// With node.js on Windows: use symbols available in terminal default fonts -if (process.platform === 'win32') { - exports.symbols.ok = '\u221A'; - exports.symbols.err = '\u00D7'; - exports.symbols.dot = '.'; -} - -/** - * Color `str` with the given `type`, - * allowing colors to be disabled, - * as well as user-defined color - * schemes. - * - * @param {string} type - * @param {string} str - * @return {string} - * @api private - */ -var color = exports.color = function(type, str) { - if (!exports.useColors) { - return String(str); - } - return '\u001b[' + exports.colors[type] + 'm' + str + '\u001b[0m'; -}; - -/** - * Expose term window size, with some defaults for when stderr is not a tty. - */ - -exports.window = { - width: 75 -}; - -if (isatty) { - exports.window.width = process.stdout.getWindowSize - ? process.stdout.getWindowSize(1)[0] - : tty.getWindowSize()[1]; -} - -/** - * Expose some basic cursor interactions that are common among reporters. - */ - -exports.cursor = { - hide: function() { - isatty && process.stdout.write('\u001b[?25l'); - }, - - show: function() { - isatty && process.stdout.write('\u001b[?25h'); - }, - - deleteLine: function() { - isatty && process.stdout.write('\u001b[2K'); - }, - - beginningOfLine: function() { - isatty && process.stdout.write('\u001b[0G'); - }, - - CR: function() { - if (isatty) { - exports.cursor.deleteLine(); - exports.cursor.beginningOfLine(); - } else { - process.stdout.write('\r'); - } - } -}; - -/** - * Outut the given `failures` as a list. - * - * @param {Array} failures - * @api public - */ - -exports.list = function(failures) { - console.log(); - failures.forEach(function(test, i) { - // format - var fmt = color('error title', ' %s) %s:\n') - + color('error message', ' %s') - + color('error stack', '\n%s\n'); - - // msg - var msg; - var err = test.err; - var message; - if (err.message && typeof err.message.toString === 'function') { - message = err.message + ''; - } else if (typeof err.inspect === 'function') { - message = err.inspect() + ''; - } else { - message = ''; - } - var stack = err.stack || message; - var index = message ? stack.indexOf(message) : -1; - var actual = err.actual; - var expected = err.expected; - var escape = true; - - if (index === -1) { - msg = message; - } else { - index += message.length; - msg = stack.slice(0, index); - // remove msg from stack - stack = stack.slice(index + 1); - } - - // uncaught - if (err.uncaught) { - msg = 'Uncaught ' + msg; - } - // explicitly show diff - if (err.showDiff !== false && sameType(actual, expected) && expected !== undefined) { - escape = false; - if (!(utils.isString(actual) && utils.isString(expected))) { - err.actual = actual = utils.stringify(actual); - err.expected = expected = utils.stringify(expected); - } - - fmt = color('error title', ' %s) %s:\n%s') + color('error stack', '\n%s\n'); - var match = message.match(/^([^:]+): expected/); - msg = '\n ' + color('error message', match ? match[1] : msg); - - if (exports.inlineDiffs) { - msg += inlineDiff(err, escape); - } else { - msg += unifiedDiff(err, escape); - } - } - - // indent stack trace - stack = stack.replace(/^/gm, ' '); - - console.log(fmt, (i + 1), test.fullTitle(), msg, stack); - }); -}; - -/** - * Initialize a new `Base` reporter. - * - * All other reporters generally - * inherit from this reporter, providing - * stats such as test duration, number - * of tests passed / failed etc. - * - * @param {Runner} runner - * @api public - */ - -function Base(runner) { - var stats = this.stats = { suites: 0, tests: 0, passes: 0, pending: 0, failures: 0 }; - var failures = this.failures = []; - - if (!runner) { - return; - } - this.runner = runner; - - runner.stats = stats; - - runner.on('start', function() { - stats.start = new Date(); - }); - - runner.on('suite', function(suite) { - stats.suites = stats.suites || 0; - suite.root || stats.suites++; - }); - - runner.on('test end', function() { - stats.tests = stats.tests || 0; - stats.tests++; - }); - - runner.on('pass', function(test) { - stats.passes = stats.passes || 0; - - if (test.duration > test.slow()) { - test.speed = 'slow'; - } else if (test.duration > test.slow() / 2) { - test.speed = 'medium'; - } else { - test.speed = 'fast'; - } - - stats.passes++; - }); - - runner.on('fail', function(test, err) { - stats.failures = stats.failures || 0; - stats.failures++; - test.err = err; - failures.push(test); - }); - - runner.on('end', function() { - stats.end = new Date(); - stats.duration = new Date() - stats.start; - }); - - runner.on('pending', function() { - stats.pending++; - }); -} - -/** - * Output common epilogue used by many of - * the bundled reporters. - * - * @api public - */ -Base.prototype.epilogue = function() { - var stats = this.stats; - var fmt; - - console.log(); - - // passes - fmt = color('bright pass', ' ') - + color('green', ' %d passing') - + color('light', ' (%s)'); - - console.log(fmt, - stats.passes || 0, - ms(stats.duration)); - - // pending - if (stats.pending) { - fmt = color('pending', ' ') - + color('pending', ' %d pending'); - - console.log(fmt, stats.pending); - } - - // failures - if (stats.failures) { - fmt = color('fail', ' %d failing'); - - console.log(fmt, stats.failures); - - Base.list(this.failures); - console.log(); - } - - console.log(); -}; - -/** - * Pad the given `str` to `len`. - * - * @api private - * @param {string} str - * @param {string} len - * @return {string} - */ -function pad(str, len) { - str = String(str); - return Array(len - str.length + 1).join(' ') + str; -} - -/** - * Returns an inline diff between 2 strings with coloured ANSI output - * - * @api private - * @param {Error} err with actual/expected - * @param {boolean} escape - * @return {string} Diff - */ -function inlineDiff(err, escape) { - var msg = errorDiff(err, 'WordsWithSpace', escape); - - // linenos - var lines = msg.split('\n'); - if (lines.length > 4) { - var width = String(lines.length).length; - msg = lines.map(function(str, i) { - return pad(++i, width) + ' |' + ' ' + str; - }).join('\n'); - } - - // legend - msg = '\n' - + color('diff removed', 'actual') - + ' ' - + color('diff added', 'expected') - + '\n\n' - + msg - + '\n'; - - // indent - msg = msg.replace(/^/gm, ' '); - return msg; -} - -/** - * Returns a unified diff between two strings. - * - * @api private - * @param {Error} err with actual/expected - * @param {boolean} escape - * @return {string} The diff. - */ -function unifiedDiff(err, escape) { - var indent = ' '; - function cleanUp(line) { - if (escape) { - line = escapeInvisibles(line); - } - if (line[0] === '+') { - return indent + colorLines('diff added', line); - } - if (line[0] === '-') { - return indent + colorLines('diff removed', line); - } - if (line.match(/\@\@/)) { - return null; - } - if (line.match(/\\ No newline/)) { - return null; - } - return indent + line; - } - function notBlank(line) { - return typeof line !== 'undefined' && line !== null; - } - var msg = diff.createPatch('string', err.actual, err.expected); - var lines = msg.split('\n').splice(4); - return '\n ' - + colorLines('diff added', '+ expected') + ' ' - + colorLines('diff removed', '- actual') - + '\n\n' - + lines.map(cleanUp).filter(notBlank).join('\n'); -} - -/** - * Return a character diff for `err`. - * - * @api private - * @param {Error} err - * @param {string} type - * @param {boolean} escape - * @return {string} - */ -function errorDiff(err, type, escape) { - var actual = escape ? escapeInvisibles(err.actual) : err.actual; - var expected = escape ? escapeInvisibles(err.expected) : err.expected; - return diff['diff' + type](actual, expected).map(function(str) { - if (str.added) { - return colorLines('diff added', str.value); - } - if (str.removed) { - return colorLines('diff removed', str.value); - } - return str.value; - }).join(''); -} - -/** - * Returns a string with all invisible characters in plain text - * - * @api private - * @param {string} line - * @return {string} - */ -function escapeInvisibles(line) { - return line.replace(/\t/g, '') - .replace(/\r/g, '') - .replace(/\n/g, '\n'); -} - -/** - * Color lines for `str`, using the color `name`. - * - * @api private - * @param {string} name - * @param {string} str - * @return {string} - */ -function colorLines(name, str) { - return str.split('\n').map(function(str) { - return color(name, str); - }).join('\n'); -} - -/** - * Object#toString reference. - */ -var objToString = Object.prototype.toString; - -/** - * Check that a / b have the same type. - * - * @api private - * @param {Object} a - * @param {Object} b - * @return {boolean} - */ -function sameType(a, b) { - return objToString.call(a) === objToString.call(b); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../ms":15,"../utils":38,"_process":67,"diff":46,"supports-color":42,"tty":5}],18:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); - -/** - * Expose `Doc`. - */ - -exports = module.exports = Doc; - -/** - * Initialize a new `Doc` reporter. - * - * @param {Runner} runner - * @api public - */ -function Doc(runner) { - Base.call(this, runner); - - var indents = 2; - - function indent() { - return Array(indents).join(' '); - } - - runner.on('suite', function(suite) { - if (suite.root) { - return; - } - ++indents; - console.log('%s
', indent()); - ++indents; - console.log('%s

%s

', indent(), utils.escape(suite.title)); - console.log('%s
', indent()); - }); - - runner.on('suite end', function(suite) { - if (suite.root) { - return; - } - console.log('%s
', indent()); - --indents; - console.log('%s
', indent()); - --indents; - }); - - runner.on('pass', function(test) { - console.log('%s
%s
', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.body)); - console.log('%s
%s
', indent(), code); - }); - - runner.on('fail', function(test, err) { - console.log('%s
%s
', indent(), utils.escape(test.title)); - var code = utils.escape(utils.clean(test.body)); - console.log('%s
%s
', indent(), code); - console.log('%s
%s
', indent(), utils.escape(err)); - }); -} - -},{"../utils":38,"./base":17}],19:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; - -/** - * Expose `Dot`. - */ - -exports = module.exports = Dot; - -/** - * Initialize a new `Dot` matrix test reporter. - * - * @api public - * @param {Runner} runner - */ -function Dot(runner) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .75 | 0; - var n = -1; - - runner.on('start', function() { - process.stdout.write('\n'); - }); - - runner.on('pending', function() { - if (++n % width === 0) { - process.stdout.write('\n '); - } - process.stdout.write(color('pending', Base.symbols.comma)); - }); - - runner.on('pass', function(test) { - if (++n % width === 0) { - process.stdout.write('\n '); - } - if (test.speed === 'slow') { - process.stdout.write(color('bright yellow', Base.symbols.dot)); - } else { - process.stdout.write(color(test.speed, Base.symbols.dot)); - } - }); - - runner.on('fail', function() { - if (++n % width === 0) { - process.stdout.write('\n '); - } - process.stdout.write(color('fail', Base.symbols.bang)); - }); - - runner.on('end', function() { - console.log(); - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Dot, Base); - -}).call(this,require('_process')) -},{"../utils":38,"./base":17,"_process":67}],20:[function(require,module,exports){ -(function (global){ -/* eslint-env browser */ - -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); -var Progress = require('../browser/progress'); -var escapeRe = require('escape-string-regexp'); -var escape = utils.escape; - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Expose `HTML`. - */ - -exports = module.exports = HTML; - -/** - * Stats template. - */ - -var statsTemplate = ''; - -/** - * Initialize a new `HTML` reporter. - * - * @api public - * @param {Runner} runner - */ -function HTML(runner) { - Base.call(this, runner); - - var self = this; - var stats = this.stats; - var stat = fragment(statsTemplate); - var items = stat.getElementsByTagName('li'); - var passes = items[1].getElementsByTagName('em')[0]; - var passesLink = items[1].getElementsByTagName('a')[0]; - var failures = items[2].getElementsByTagName('em')[0]; - var failuresLink = items[2].getElementsByTagName('a')[0]; - var duration = items[3].getElementsByTagName('em')[0]; - var canvas = stat.getElementsByTagName('canvas')[0]; - var report = fragment('
    '); - var stack = [report]; - var progress; - var ctx; - var root = document.getElementById('mocha'); - - if (canvas.getContext) { - var ratio = window.devicePixelRatio || 1; - canvas.style.width = canvas.width; - canvas.style.height = canvas.height; - canvas.width *= ratio; - canvas.height *= ratio; - ctx = canvas.getContext('2d'); - ctx.scale(ratio, ratio); - progress = new Progress(); - } - - if (!root) { - return error('#mocha div missing, add it to your document'); - } - - // pass toggle - on(passesLink, 'click', function(evt) { - evt.preventDefault(); - unhide(); - var name = (/pass/).test(report.className) ? '' : ' pass'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) { - hideSuitesWithout('test pass'); - } - }); - - // failure toggle - on(failuresLink, 'click', function(evt) { - evt.preventDefault(); - unhide(); - var name = (/fail/).test(report.className) ? '' : ' fail'; - report.className = report.className.replace(/fail|pass/g, '') + name; - if (report.className.trim()) { - hideSuitesWithout('test fail'); - } - }); - - root.appendChild(stat); - root.appendChild(report); - - if (progress) { - progress.size(40); - } - - runner.on('suite', function(suite) { - if (suite.root) { - return; - } - - // suite - var url = self.suiteURL(suite); - var el = fragment('
  • %s

  • ', url, escape(suite.title)); - - // container - stack[0].appendChild(el); - stack.unshift(document.createElement('ul')); - el.appendChild(stack[0]); - }); - - runner.on('suite end', function(suite) { - if (suite.root) { - updateStats(); - return; - } - stack.shift(); - }); - - runner.on('pass', function(test) { - var url = self.testURL(test); - var markup = '
  • %e%ems ' - + '

  • '; - var el = fragment(markup, test.speed, test.title, test.duration, url); - self.addCodeToggle(el, test.body); - appendToStack(el); - updateStats(); - }); - - runner.on('fail', function(test) { - var el = fragment('
  • %e

  • ', - test.title, self.testURL(test)); - var stackString; // Note: Includes leading newline - var message = test.err.toString(); - - // <=IE7 stringifies to [Object Error]. Since it can be overloaded, we - // check for the result of the stringifying. - if (message === '[object Error]') { - message = test.err.message; - } - - if (test.err.stack) { - var indexOfMessage = test.err.stack.indexOf(test.err.message); - if (indexOfMessage === -1) { - stackString = test.err.stack; - } else { - stackString = test.err.stack.substr(test.err.message.length + indexOfMessage); - } - } else if (test.err.sourceURL && test.err.line !== undefined) { - // Safari doesn't give you a stack. Let's at least provide a source line. - stackString = '\n(' + test.err.sourceURL + ':' + test.err.line + ')'; - } - - stackString = stackString || ''; - - if (test.err.htmlMessage && stackString) { - el.appendChild(fragment('
    %s\n
    %e
    ', - test.err.htmlMessage, stackString)); - } else if (test.err.htmlMessage) { - el.appendChild(fragment('
    %s
    ', test.err.htmlMessage)); - } else { - el.appendChild(fragment('
    %e%e
    ', message, stackString)); - } - - self.addCodeToggle(el, test.body); - appendToStack(el); - updateStats(); - }); - - runner.on('pending', function(test) { - var el = fragment('
  • %e

  • ', test.title); - appendToStack(el); - updateStats(); - }); - - function appendToStack(el) { - // Don't call .appendChild if #mocha-report was already .shift()'ed off the stack. - if (stack[0]) { - stack[0].appendChild(el); - } - } - - function updateStats() { - // TODO: add to stats - var percent = stats.tests / runner.total * 100 | 0; - if (progress) { - progress.update(percent).draw(ctx); - } - - // update stats - var ms = new Date() - stats.start; - text(passes, stats.passes); - text(failures, stats.failures); - text(duration, (ms / 1000).toFixed(2)); - } -} - -/** - * Makes a URL, preserving querystring ("search") parameters. - * - * @param {string} s - * @return {string} A new URL. - */ -function makeUrl(s) { - var search = window.location.search; - - // Remove previous grep query parameter if present - if (search) { - search = search.replace(/[?&]grep=[^&\s]*/g, '').replace(/^&/, '?'); - } - - return window.location.pathname + (search ? search + '&' : '?') + 'grep=' + encodeURIComponent(escapeRe(s)); -} - -/** - * Provide suite URL. - * - * @param {Object} [suite] - */ -HTML.prototype.suiteURL = function(suite) { - return makeUrl(suite.fullTitle()); -}; - -/** - * Provide test URL. - * - * @param {Object} [test] - */ -HTML.prototype.testURL = function(test) { - return makeUrl(test.fullTitle()); -}; - -/** - * Adds code toggle functionality for the provided test's list element. - * - * @param {HTMLLIElement} el - * @param {string} contents - */ -HTML.prototype.addCodeToggle = function(el, contents) { - var h2 = el.getElementsByTagName('h2')[0]; - - on(h2, 'click', function() { - pre.style.display = pre.style.display === 'none' ? 'block' : 'none'; - }); - - var pre = fragment('
    %e
    ', utils.clean(contents)); - el.appendChild(pre); - pre.style.display = 'none'; -}; - -/** - * Display error `msg`. - * - * @param {string} msg - */ -function error(msg) { - document.body.appendChild(fragment('
    %s
    ', msg)); -} - -/** - * Return a DOM fragment from `html`. - * - * @param {string} html - */ -function fragment(html) { - var args = arguments; - var div = document.createElement('div'); - var i = 1; - - div.innerHTML = html.replace(/%([se])/g, function(_, type) { - switch (type) { - case 's': return String(args[i++]); - case 'e': return escape(args[i++]); - // no default - } - }); - - return div.firstChild; -} - -/** - * Check for suites that do not have elements - * with `classname`, and hide them. - * - * @param {text} classname - */ -function hideSuitesWithout(classname) { - var suites = document.getElementsByClassName('suite'); - for (var i = 0; i < suites.length; i++) { - var els = suites[i].getElementsByClassName(classname); - if (!els.length) { - suites[i].className += ' hidden'; - } - } -} - -/** - * Unhide .hidden suites. - */ -function unhide() { - var els = document.getElementsByClassName('suite hidden'); - for (var i = 0; i < els.length; ++i) { - els[i].className = els[i].className.replace('suite hidden', 'suite'); - } -} - -/** - * Set an element's text contents. - * - * @param {HTMLElement} el - * @param {string} contents - */ -function text(el, contents) { - if (el.textContent) { - el.textContent = contents; - } else { - el.innerText = contents; - } -} - -/** - * Listen on `event` with callback `fn`. - */ -function on(el, event, fn) { - if (el.addEventListener) { - el.addEventListener(event, fn, false); - } else { - el.attachEvent('on' + event, fn); - } -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../browser/progress":4,"../utils":38,"./base":17,"escape-string-regexp":47}],21:[function(require,module,exports){ -// Alias exports to a their normalized format Mocha#reporter to prevent a need -// for dynamic (try/catch) requires, which Browserify doesn't handle. -exports.Base = exports.base = require('./base'); -exports.Dot = exports.dot = require('./dot'); -exports.Doc = exports.doc = require('./doc'); -exports.TAP = exports.tap = require('./tap'); -exports.JSON = exports.json = require('./json'); -exports.HTML = exports.html = require('./html'); -exports.List = exports.list = require('./list'); -exports.Min = exports.min = require('./min'); -exports.Spec = exports.spec = require('./spec'); -exports.Nyan = exports.nyan = require('./nyan'); -exports.XUnit = exports.xunit = require('./xunit'); -exports.Markdown = exports.markdown = require('./markdown'); -exports.Progress = exports.progress = require('./progress'); -exports.Landing = exports.landing = require('./landing'); -exports.JSONStream = exports['json-stream'] = require('./json-stream'); - -},{"./base":17,"./doc":18,"./dot":19,"./html":20,"./json":23,"./json-stream":22,"./landing":24,"./list":25,"./markdown":26,"./min":27,"./nyan":28,"./progress":29,"./spec":30,"./tap":31,"./xunit":32}],22:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var JSON = require('json3'); - -/** - * Expose `List`. - */ - -exports = module.exports = List; - -/** - * Initialize a new `List` test reporter. - * - * @api public - * @param {Runner} runner - */ -function List(runner) { - Base.call(this, runner); - - var self = this; - var total = runner.total; - - runner.on('start', function() { - console.log(JSON.stringify(['start', { total: total }])); - }); - - runner.on('pass', function(test) { - console.log(JSON.stringify(['pass', clean(test)])); - }); - - runner.on('fail', function(test, err) { - test = clean(test); - test.err = err.message; - test.stack = err.stack || null; - console.log(JSON.stringify(['fail', test])); - }); - - runner.on('end', function() { - process.stdout.write(JSON.stringify(['end', self.stats])); - }); -} - -/** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @api private - * @param {Object} test - * @return {Object} - */ -function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration, - currentRetry: test.currentRetry() - }; -} - -}).call(this,require('_process')) -},{"./base":17,"_process":67,"json3":54}],23:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); - -/** - * Expose `JSON`. - */ - -exports = module.exports = JSONReporter; - -/** - * Initialize a new `JSON` reporter. - * - * @api public - * @param {Runner} runner - */ -function JSONReporter(runner) { - Base.call(this, runner); - - var self = this; - var tests = []; - var pending = []; - var failures = []; - var passes = []; - - runner.on('test end', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - passes.push(test); - }); - - runner.on('fail', function(test) { - failures.push(test); - }); - - runner.on('pending', function(test) { - pending.push(test); - }); - - runner.on('end', function() { - var obj = { - stats: self.stats, - tests: tests.map(clean), - pending: pending.map(clean), - failures: failures.map(clean), - passes: passes.map(clean) - }; - - runner.testResults = obj; - - process.stdout.write(JSON.stringify(obj, null, 2)); - }); -} - -/** - * Return a plain-object representation of `test` - * free of cyclic properties etc. - * - * @api private - * @param {Object} test - * @return {Object} - */ -function clean(test) { - return { - title: test.title, - fullTitle: test.fullTitle(), - duration: test.duration, - currentRetry: test.currentRetry(), - err: errorJSON(test.err || {}) - }; -} - -/** - * Transform `error` into a JSON object. - * - * @api private - * @param {Error} err - * @return {Object} - */ -function errorJSON(err) { - var res = {}; - Object.getOwnPropertyNames(err).forEach(function(key) { - res[key] = err[key]; - }, err); - return res; -} - -}).call(this,require('_process')) -},{"./base":17,"_process":67}],24:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var cursor = Base.cursor; -var color = Base.color; - -/** - * Expose `Landing`. - */ - -exports = module.exports = Landing; - -/** - * Airplane color. - */ - -Base.colors.plane = 0; - -/** - * Airplane crash color. - */ - -Base.colors['plane crash'] = 31; - -/** - * Runway color. - */ - -Base.colors.runway = 90; - -/** - * Initialize a new `Landing` reporter. - * - * @api public - * @param {Runner} runner - */ -function Landing(runner) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .75 | 0; - var total = runner.total; - var stream = process.stdout; - var plane = color('plane', '✈'); - var crashed = -1; - var n = 0; - - function runway() { - var buf = Array(width).join('-'); - return ' ' + color('runway', buf); - } - - runner.on('start', function() { - stream.write('\n\n\n '); - cursor.hide(); - }); - - runner.on('test end', function(test) { - // check if the plane crashed - var col = crashed === -1 ? width * ++n / total | 0 : crashed; - - // show the crash - if (test.state === 'failed') { - plane = color('plane crash', '✈'); - crashed = col; - } - - // render landing strip - stream.write('\u001b[' + (width + 1) + 'D\u001b[2A'); - stream.write(runway()); - stream.write('\n '); - stream.write(color('runway', Array(col).join('⋅'))); - stream.write(plane); - stream.write(color('runway', Array(width - col).join('⋅') + '\n')); - stream.write(runway()); - stream.write('\u001b[0m'); - }); - - runner.on('end', function() { - cursor.show(); - console.log(); - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Landing, Base); - -}).call(this,require('_process')) -},{"../utils":38,"./base":17,"_process":67}],25:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; -var cursor = Base.cursor; - -/** - * Expose `List`. - */ - -exports = module.exports = List; - -/** - * Initialize a new `List` test reporter. - * - * @api public - * @param {Runner} runner - */ -function List(runner) { - Base.call(this, runner); - - var self = this; - var n = 0; - - runner.on('start', function() { - console.log(); - }); - - runner.on('test', function(test) { - process.stdout.write(color('pass', ' ' + test.fullTitle() + ': ')); - }); - - runner.on('pending', function(test) { - var fmt = color('checkmark', ' -') - + color('pending', ' %s'); - console.log(fmt, test.fullTitle()); - }); - - runner.on('pass', function(test) { - var fmt = color('checkmark', ' ' + Base.symbols.dot) - + color('pass', ' %s: ') - + color(test.speed, '%dms'); - cursor.CR(); - console.log(fmt, test.fullTitle(), test.duration); - }); - - runner.on('fail', function(test) { - cursor.CR(); - console.log(color('fail', ' %d) %s'), ++n, test.fullTitle()); - }); - - runner.on('end', self.epilogue.bind(self)); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(List, Base); - -}).call(this,require('_process')) -},{"../utils":38,"./base":17,"_process":67}],26:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); - -/** - * Constants - */ - -var SUITE_PREFIX = '$'; - -/** - * Expose `Markdown`. - */ - -exports = module.exports = Markdown; - -/** - * Initialize a new `Markdown` reporter. - * - * @api public - * @param {Runner} runner - */ -function Markdown(runner) { - Base.call(this, runner); - - var level = 0; - var buf = ''; - - function title(str) { - return Array(level).join('#') + ' ' + str; - } - - function mapTOC(suite, obj) { - var ret = obj; - var key = SUITE_PREFIX + suite.title; - - obj = obj[key] = obj[key] || { suite: suite }; - suite.suites.forEach(function(suite) { - mapTOC(suite, obj); - }); - - return ret; - } - - function stringifyTOC(obj, level) { - ++level; - var buf = ''; - var link; - for (var key in obj) { - if (key === 'suite') { - continue; - } - if (key !== SUITE_PREFIX) { - link = ' - [' + key.substring(1) + ']'; - link += '(#' + utils.slug(obj[key].suite.fullTitle()) + ')\n'; - buf += Array(level).join(' ') + link; - } - buf += stringifyTOC(obj[key], level); - } - return buf; - } - - function generateTOC(suite) { - var obj = mapTOC(suite, {}); - return stringifyTOC(obj, 0); - } - - generateTOC(runner.suite); - - runner.on('suite', function(suite) { - ++level; - var slug = utils.slug(suite.fullTitle()); - buf += '' + '\n'; - buf += title(suite.title) + '\n'; - }); - - runner.on('suite end', function() { - --level; - }); - - runner.on('pass', function(test) { - var code = utils.clean(test.body); - buf += test.title + '.\n'; - buf += '\n```js\n'; - buf += code + '\n'; - buf += '```\n\n'; - }); - - runner.on('end', function() { - process.stdout.write('# TOC\n'); - process.stdout.write(generateTOC(runner.suite)); - process.stdout.write(buf); - }); -} - -}).call(this,require('_process')) -},{"../utils":38,"./base":17,"_process":67}],27:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; - -/** - * Expose `Min`. - */ - -exports = module.exports = Min; - -/** - * Initialize a new `Min` minimal test reporter (best used with --watch). - * - * @api public - * @param {Runner} runner - */ -function Min(runner) { - Base.call(this, runner); - - runner.on('start', function() { - // clear screen - process.stdout.write('\u001b[2J'); - // set cursor position - process.stdout.write('\u001b[1;3H'); - }); - - runner.on('end', this.epilogue.bind(this)); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Min, Base); - -}).call(this,require('_process')) -},{"../utils":38,"./base":17,"_process":67}],28:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; - -/** - * Expose `Dot`. - */ - -exports = module.exports = NyanCat; - -/** - * Initialize a new `Dot` matrix test reporter. - * - * @param {Runner} runner - * @api public - */ - -function NyanCat(runner) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .75 | 0; - var nyanCatWidth = this.nyanCatWidth = 11; - - this.colorIndex = 0; - this.numberOfLines = 4; - this.rainbowColors = self.generateColors(); - this.scoreboardWidth = 5; - this.tick = 0; - this.trajectories = [[], [], [], []]; - this.trajectoryWidthMax = (width - nyanCatWidth); - - runner.on('start', function() { - Base.cursor.hide(); - self.draw(); - }); - - runner.on('pending', function() { - self.draw(); - }); - - runner.on('pass', function() { - self.draw(); - }); - - runner.on('fail', function() { - self.draw(); - }); - - runner.on('end', function() { - Base.cursor.show(); - for (var i = 0; i < self.numberOfLines; i++) { - write('\n'); - } - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(NyanCat, Base); - -/** - * Draw the nyan cat - * - * @api private - */ - -NyanCat.prototype.draw = function() { - this.appendRainbow(); - this.drawScoreboard(); - this.drawRainbow(); - this.drawNyanCat(); - this.tick = !this.tick; -}; - -/** - * Draw the "scoreboard" showing the number - * of passes, failures and pending tests. - * - * @api private - */ - -NyanCat.prototype.drawScoreboard = function() { - var stats = this.stats; - - function draw(type, n) { - write(' '); - write(Base.color(type, n)); - write('\n'); - } - - draw('green', stats.passes); - draw('fail', stats.failures); - draw('pending', stats.pending); - write('\n'); - - this.cursorUp(this.numberOfLines); -}; - -/** - * Append the rainbow. - * - * @api private - */ - -NyanCat.prototype.appendRainbow = function() { - var segment = this.tick ? '_' : '-'; - var rainbowified = this.rainbowify(segment); - - for (var index = 0; index < this.numberOfLines; index++) { - var trajectory = this.trajectories[index]; - if (trajectory.length >= this.trajectoryWidthMax) { - trajectory.shift(); - } - trajectory.push(rainbowified); - } -}; - -/** - * Draw the rainbow. - * - * @api private - */ - -NyanCat.prototype.drawRainbow = function() { - var self = this; - - this.trajectories.forEach(function(line) { - write('\u001b[' + self.scoreboardWidth + 'C'); - write(line.join('')); - write('\n'); - }); - - this.cursorUp(this.numberOfLines); -}; - -/** - * Draw the nyan cat - * - * @api private - */ -NyanCat.prototype.drawNyanCat = function() { - var self = this; - var startWidth = this.scoreboardWidth + this.trajectories[0].length; - var dist = '\u001b[' + startWidth + 'C'; - var padding = ''; - - write(dist); - write('_,------,'); - write('\n'); - - write(dist); - padding = self.tick ? ' ' : ' '; - write('_|' + padding + '/\\_/\\ '); - write('\n'); - - write(dist); - padding = self.tick ? '_' : '__'; - var tail = self.tick ? '~' : '^'; - write(tail + '|' + padding + this.face() + ' '); - write('\n'); - - write(dist); - padding = self.tick ? ' ' : ' '; - write(padding + '"" "" '); - write('\n'); - - this.cursorUp(this.numberOfLines); -}; - -/** - * Draw nyan cat face. - * - * @api private - * @return {string} - */ - -NyanCat.prototype.face = function() { - var stats = this.stats; - if (stats.failures) { - return '( x .x)'; - } else if (stats.pending) { - return '( o .o)'; - } else if (stats.passes) { - return '( ^ .^)'; - } - return '( - .-)'; -}; - -/** - * Move cursor up `n`. - * - * @api private - * @param {number} n - */ - -NyanCat.prototype.cursorUp = function(n) { - write('\u001b[' + n + 'A'); -}; - -/** - * Move cursor down `n`. - * - * @api private - * @param {number} n - */ - -NyanCat.prototype.cursorDown = function(n) { - write('\u001b[' + n + 'B'); -}; - -/** - * Generate rainbow colors. - * - * @api private - * @return {Array} - */ -NyanCat.prototype.generateColors = function() { - var colors = []; - - for (var i = 0; i < (6 * 7); i++) { - var pi3 = Math.floor(Math.PI / 3); - var n = (i * (1.0 / 6)); - var r = Math.floor(3 * Math.sin(n) + 3); - var g = Math.floor(3 * Math.sin(n + 2 * pi3) + 3); - var b = Math.floor(3 * Math.sin(n + 4 * pi3) + 3); - colors.push(36 * r + 6 * g + b + 16); - } - - return colors; -}; - -/** - * Apply rainbow to the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -NyanCat.prototype.rainbowify = function(str) { - if (!Base.useColors) { - return str; - } - var color = this.rainbowColors[this.colorIndex % this.rainbowColors.length]; - this.colorIndex += 1; - return '\u001b[38;5;' + color + 'm' + str + '\u001b[0m'; -}; - -/** - * Stdout helper. - * - * @param {string} string A message to write to stdout. - */ -function write(string) { - process.stdout.write(string); -} - -}).call(this,require('_process')) -},{"../utils":38,"./base":17,"_process":67}],29:[function(require,module,exports){ -(function (process){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; -var cursor = Base.cursor; - -/** - * Expose `Progress`. - */ - -exports = module.exports = Progress; - -/** - * General progress bar color. - */ - -Base.colors.progress = 90; - -/** - * Initialize a new `Progress` bar test reporter. - * - * @api public - * @param {Runner} runner - * @param {Object} options - */ -function Progress(runner, options) { - Base.call(this, runner); - - var self = this; - var width = Base.window.width * .50 | 0; - var total = runner.total; - var complete = 0; - var lastN = -1; - - // default chars - options = options || {}; - options.open = options.open || '['; - options.complete = options.complete || '▬'; - options.incomplete = options.incomplete || Base.symbols.dot; - options.close = options.close || ']'; - options.verbose = false; - - // tests started - runner.on('start', function() { - console.log(); - cursor.hide(); - }); - - // tests complete - runner.on('test end', function() { - complete++; - - var percent = complete / total; - var n = width * percent | 0; - var i = width - n; - - if (n === lastN && !options.verbose) { - // Don't re-render the line if it hasn't changed - return; - } - lastN = n; - - cursor.CR(); - process.stdout.write('\u001b[J'); - process.stdout.write(color('progress', ' ' + options.open)); - process.stdout.write(Array(n).join(options.complete)); - process.stdout.write(Array(i).join(options.incomplete)); - process.stdout.write(color('progress', options.close)); - if (options.verbose) { - process.stdout.write(color('progress', ' ' + complete + ' of ' + total)); - } - }); - - // tests are complete, output some stats - // and the failures if any - runner.on('end', function() { - cursor.show(); - console.log(); - self.epilogue(); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Progress, Base); - -}).call(this,require('_process')) -},{"../utils":38,"./base":17,"_process":67}],30:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var inherits = require('../utils').inherits; -var color = Base.color; - -/** - * Expose `Spec`. - */ - -exports = module.exports = Spec; - -/** - * Initialize a new `Spec` test reporter. - * - * @api public - * @param {Runner} runner - */ -function Spec(runner) { - Base.call(this, runner); - - var self = this; - var indents = 0; - var n = 0; - - function indent() { - return Array(indents).join(' '); - } - - runner.on('start', function() { - console.log(); - }); - - runner.on('suite', function(suite) { - ++indents; - console.log(color('suite', '%s%s'), indent(), suite.title); - }); - - runner.on('suite end', function() { - --indents; - if (indents === 1) { - console.log(); - } - }); - - runner.on('pending', function(test) { - var fmt = indent() + color('pending', ' - %s'); - console.log(fmt, test.title); - }); - - runner.on('pass', function(test) { - var fmt; - if (test.speed === 'fast') { - fmt = indent() - + color('checkmark', ' ' + Base.symbols.ok) - + color('pass', ' %s'); - console.log(fmt, test.title); - } else { - fmt = indent() - + color('checkmark', ' ' + Base.symbols.ok) - + color('pass', ' %s') - + color(test.speed, ' (%dms)'); - console.log(fmt, test.title, test.duration); - } - }); - - runner.on('fail', function(test) { - console.log(indent() + color('fail', ' %d) %s'), ++n, test.title); - }); - - runner.on('end', self.epilogue.bind(self)); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(Spec, Base); - -},{"../utils":38,"./base":17}],31:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Base = require('./base'); - -/** - * Expose `TAP`. - */ - -exports = module.exports = TAP; - -/** - * Initialize a new `TAP` reporter. - * - * @api public - * @param {Runner} runner - */ -function TAP(runner) { - Base.call(this, runner); - - var n = 1; - var passes = 0; - var failures = 0; - - runner.on('start', function() { - var total = runner.grepTotal(runner.suite); - console.log('%d..%d', 1, total); - }); - - runner.on('test end', function() { - ++n; - }); - - runner.on('pending', function(test) { - console.log('ok %d %s # SKIP -', n, title(test)); - }); - - runner.on('pass', function(test) { - passes++; - console.log('ok %d %s', n, title(test)); - }); - - runner.on('fail', function(test, err) { - failures++; - console.log('not ok %d %s', n, title(test)); - if (err.stack) { - console.log(err.stack.replace(/^/gm, ' ')); - } - }); - - runner.on('end', function() { - console.log('# tests ' + (passes + failures)); - console.log('# pass ' + passes); - console.log('# fail ' + failures); - }); -} - -/** - * Return a TAP-safe title of `test` - * - * @api private - * @param {Object} test - * @return {String} - */ -function title(test) { - return test.fullTitle().replace(/#/g, ''); -} - -},{"./base":17}],32:[function(require,module,exports){ -(function (process,global){ -/** - * Module dependencies. - */ - -var Base = require('./base'); -var utils = require('../utils'); -var inherits = utils.inherits; -var fs = require('fs'); -var escape = utils.escape; -var mkdirp = require('mkdirp'); -var path = require('path'); - -/** - * Save timer references to avoid Sinon interfering (see GH-237). - */ - -/* eslint-disable no-unused-vars, no-native-reassign */ -var Date = global.Date; -var setTimeout = global.setTimeout; -var setInterval = global.setInterval; -var clearTimeout = global.clearTimeout; -var clearInterval = global.clearInterval; -/* eslint-enable no-unused-vars, no-native-reassign */ - -/** - * Expose `XUnit`. - */ - -exports = module.exports = XUnit; - -/** - * Initialize a new `XUnit` reporter. - * - * @api public - * @param {Runner} runner - */ -function XUnit(runner, options) { - Base.call(this, runner); - - var stats = this.stats; - var tests = []; - var self = this; - - if (options.reporterOptions && options.reporterOptions.output) { - if (!fs.createWriteStream) { - throw new Error('file output not supported in browser'); - } - mkdirp.sync(path.dirname(options.reporterOptions.output)); - self.fileStream = fs.createWriteStream(options.reporterOptions.output); - } - - runner.on('pending', function(test) { - tests.push(test); - }); - - runner.on('pass', function(test) { - tests.push(test); - }); - - runner.on('fail', function(test) { - tests.push(test); - }); - - runner.on('end', function() { - self.write(tag('testsuite', { - name: 'Mocha Tests', - tests: stats.tests, - failures: stats.failures, - errors: stats.failures, - skipped: stats.tests - stats.failures - stats.passes, - timestamp: (new Date()).toUTCString(), - time: (stats.duration / 1000) || 0 - }, false)); - - tests.forEach(function(t) { - self.test(t); - }); - - self.write(''); - }); -} - -/** - * Inherit from `Base.prototype`. - */ -inherits(XUnit, Base); - -/** - * Override done to close the stream (if it's a file). - * - * @param failures - * @param {Function} fn - */ -XUnit.prototype.done = function(failures, fn) { - if (this.fileStream) { - this.fileStream.end(function() { - fn(failures); - }); - } else { - fn(failures); - } -}; - -/** - * Write out the given line. - * - * @param {string} line - */ -XUnit.prototype.write = function(line) { - if (this.fileStream) { - this.fileStream.write(line + '\n'); - } else if (typeof process === 'object' && process.stdout) { - process.stdout.write(line + '\n'); - } else { - console.log(line); - } -}; - -/** - * Output tag for the given `test.` - * - * @param {Test} test - */ -XUnit.prototype.test = function(test) { - var attrs = { - classname: test.parent.fullTitle(), - name: test.title, - time: (test.duration / 1000) || 0 - }; - - if (test.state === 'failed') { - var err = test.err; - this.write(tag('testcase', attrs, false, tag('failure', {}, false, escape(err.message) + '\n' + escape(err.stack)))); - } else if (test.isPending()) { - this.write(tag('testcase', attrs, false, tag('skipped', {}, true))); - } else { - this.write(tag('testcase', attrs, true)); - } -}; - -/** - * HTML tag helper. - * - * @param name - * @param attrs - * @param close - * @param content - * @return {string} - */ -function tag(name, attrs, close, content) { - var end = close ? '/>' : '>'; - var pairs = []; - var tag; - - for (var key in attrs) { - if (Object.prototype.hasOwnProperty.call(attrs, key)) { - pairs.push(key + '="' + escape(attrs[key]) + '"'); - } - } - - tag = '<' + name + (pairs.length ? ' ' + pairs.join(' ') : '') + end; - if (content) { - tag += content + ' Math.pow(2, 31)) { - this._enableTimeouts = false; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._timeout = ms; - if (this.timer) { - this.resetTimeout(); - } - return this; -}; - -/** - * Set & get slow `ms`. - * - * @api private - * @param {number|string} ms - * @return {Runnable|number} ms or Runnable instance. - */ -Runnable.prototype.slow = function(ms) { - if (typeof ms === 'undefined') { - return this._slow; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._slow = ms; - return this; -}; - -/** - * Set and get whether timeout is `enabled`. - * - * @api private - * @param {boolean} enabled - * @return {Runnable|boolean} enabled or Runnable instance. - */ -Runnable.prototype.enableTimeouts = function(enabled) { - if (!arguments.length) { - return this._enableTimeouts; - } - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; - -/** - * Halt and mark as pending. - * - * @api public - */ -Runnable.prototype.skip = function() { - throw new Pending('sync skip'); -}; - -/** - * Check if this runnable or its parent suite is marked as pending. - * - * @api private - */ -Runnable.prototype.isPending = function() { - return this.pending || (this.parent && this.parent.isPending()); -}; - -/** - * Set number of retries. - * - * @api private - */ -Runnable.prototype.retries = function(n) { - if (!arguments.length) { - return this._retries; - } - this._retries = n; -}; - -/** - * Get current retry - * - * @api private - */ -Runnable.prototype.currentRetry = function(n) { - if (!arguments.length) { - return this._currentRetry; - } - this._currentRetry = n; -}; - -/** - * Return the full title generated by recursively concatenating the parent's - * full title. - * - * @api public - * @return {string} - */ -Runnable.prototype.fullTitle = function() { - return this.parent.fullTitle() + ' ' + this.title; -}; - -/** - * Clear the timeout. - * - * @api private - */ -Runnable.prototype.clearTimeout = function() { - clearTimeout(this.timer); -}; - -/** - * Inspect the runnable void of private properties. - * - * @api private - * @return {string} - */ -Runnable.prototype.inspect = function() { - return JSON.stringify(this, function(key, val) { - if (key[0] === '_') { - return; - } - if (key === 'parent') { - return '#'; - } - if (key === 'ctx') { - return '#'; - } - return val; - }, 2); -}; - -/** - * Reset the timeout. - * - * @api private - */ -Runnable.prototype.resetTimeout = function() { - var self = this; - var ms = this.timeout() || 1e9; - - if (!this._enableTimeouts) { - return; - } - this.clearTimeout(); - this.timer = setTimeout(function() { - if (!self._enableTimeouts) { - return; - } - self.callback(new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.')); - self.timedOut = true; - }, ms); -}; - -/** - * Whitelist a list of globals for this test run. - * - * @api private - * @param {string[]} globals - */ -Runnable.prototype.globals = function(globals) { - if (!arguments.length) { - return this._allowedGlobals; - } - this._allowedGlobals = globals; -}; - -/** - * Run the test and invoke `fn(err)`. - * - * @param {Function} fn - * @api private - */ -Runnable.prototype.run = function(fn) { - var self = this; - var start = new Date(); - var ctx = this.ctx; - var finished; - var emitted; - - // Sometimes the ctx exists, but it is not runnable - if (ctx && ctx.runnable) { - ctx.runnable(this); - } - - // called multiple times - function multiple(err) { - if (emitted) { - return; - } - emitted = true; - self.emit('error', err || new Error('done() called multiple times; stacktrace may be inaccurate')); - } - - // finished - function done(err) { - var ms = self.timeout(); - if (self.timedOut) { - return; - } - if (finished) { - return multiple(err || self._trace); - } - - self.clearTimeout(); - self.duration = new Date() - start; - finished = true; - if (!err && self.duration > ms && self._enableTimeouts) { - err = new Error('timeout of ' + ms + 'ms exceeded. Ensure the done() callback is being called in this test.'); - } - fn(err); - } - - // for .resetTimeout() - this.callback = done; - - // explicit async with `done` argument - if (this.async) { - this.resetTimeout(); - - // allows skip() to be used in an explicit async context - this.skip = function asyncSkip() { - done(new Pending('async skip call')); - // halt execution. the Runnable will be marked pending - // by the previous call, and the uncaught handler will ignore - // the failure. - throw new Pending('async skip; aborting execution'); - }; - - if (this.allowUncaught) { - return callFnAsync(this.fn); - } - try { - callFnAsync(this.fn); - } catch (err) { - done(utils.getError(err)); - } - return; - } - - if (this.allowUncaught) { - callFn(this.fn); - done(); - return; - } - - // sync or promise-returning - try { - if (this.isPending()) { - done(); - } else { - callFn(this.fn); - } - } catch (err) { - done(utils.getError(err)); - } - - function callFn(fn) { - var result = fn.call(ctx); - if (result && typeof result.then === 'function') { - self.resetTimeout(); - result - .then(function() { - done(); - // Return null so libraries like bluebird do not warn about - // subsequently constructed Promises. - return null; - }, - function(reason) { - done(reason || new Error('Promise rejected with no or falsy reason')); - }); - } else { - if (self.asyncOnly) { - return done(new Error('--async-only option in use without declaring `done()` or returning a promise')); - } - - done(); - } - } - - function callFnAsync(fn) { - var result = fn.call(ctx, function(err) { - if (err instanceof Error || toString.call(err) === '[object Error]') { - return done(err); - } - if (err) { - if (Object.prototype.toString.call(err) === '[object Object]') { - return done(new Error('done() invoked with non-Error: ' - + JSON.stringify(err))); - } - return done(new Error('done() invoked with non-Error: ' + err)); - } - if (result && utils.isPromise(result)) { - return done(new Error('Resolution method is overspecified. Specify a callback *or* return a Promise; not both.')); - } - - done(); - }); - } -}; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./ms":15,"./pending":16,"./utils":38,"debug":2,"events":3,"json3":54,"lodash.create":60}],34:[function(require,module,exports){ -(function (process,global){ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Pending = require('./pending'); -var utils = require('./utils'); -var inherits = utils.inherits; -var debug = require('debug')('mocha:runner'); -var Runnable = require('./runnable'); -var filter = utils.filter; -var indexOf = utils.indexOf; -var some = utils.some; -var keys = utils.keys; -var stackFilter = utils.stackTraceFilter(); -var stringify = utils.stringify; -var type = utils.type; -var undefinedError = utils.undefinedError; -var isArray = utils.isArray; - -/** - * Non-enumerable globals. - */ - -var globals = [ - 'setTimeout', - 'clearTimeout', - 'setInterval', - 'clearInterval', - 'XMLHttpRequest', - 'Date', - 'setImmediate', - 'clearImmediate' -]; - -/** - * Expose `Runner`. - */ - -module.exports = Runner; - -/** - * Initialize a `Runner` for the given `suite`. - * - * Events: - * - * - `start` execution started - * - `end` execution complete - * - `suite` (suite) test suite execution started - * - `suite end` (suite) all tests (and sub-suites) have finished - * - `test` (test) test execution started - * - `test end` (test) test completed - * - `hook` (hook) hook execution started - * - `hook end` (hook) hook complete - * - `pass` (test) test passed - * - `fail` (test, err) test failed - * - `pending` (test) test pending - * - * @api public - * @param {Suite} suite Root suite - * @param {boolean} [delay] Whether or not to delay execution of root suite - * until ready. - */ -function Runner(suite, delay) { - var self = this; - this._globals = []; - this._abort = false; - this._delay = delay; - this.suite = suite; - this.started = false; - this.total = suite.total(); - this.failures = 0; - this.on('test end', function(test) { - self.checkGlobals(test); - }); - this.on('hook end', function(hook) { - self.checkGlobals(hook); - }); - this._defaultGrep = /.*/; - this.grep(this._defaultGrep); - this.globals(this.globalProps().concat(extraGlobals())); -} - -/** - * Wrapper for setImmediate, process.nextTick, or browser polyfill. - * - * @param {Function} fn - * @api private - */ -Runner.immediately = global.setImmediate || process.nextTick; - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Runner, EventEmitter); - -/** - * Run tests with full titles matching `re`. Updates runner.total - * with number of tests matched. - * - * @param {RegExp} re - * @param {Boolean} invert - * @return {Runner} for chaining - * @api public - * @param {RegExp} re - * @param {boolean} invert - * @return {Runner} Runner instance. - */ -Runner.prototype.grep = function(re, invert) { - debug('grep %s', re); - this._grep = re; - this._invert = invert; - this.total = this.grepTotal(this.suite); - return this; -}; - -/** - * Returns the number of tests matching the grep search for the - * given suite. - * - * @param {Suite} suite - * @return {Number} - * @api public - * @param {Suite} suite - * @return {number} - */ -Runner.prototype.grepTotal = function(suite) { - var self = this; - var total = 0; - - suite.eachTest(function(test) { - var match = self._grep.test(test.fullTitle()); - if (self._invert) { - match = !match; - } - if (match) { - total++; - } - }); - - return total; -}; - -/** - * Return a list of global properties. - * - * @return {Array} - * @api private - */ -Runner.prototype.globalProps = function() { - var props = keys(global); - - // non-enumerables - for (var i = 0; i < globals.length; ++i) { - if (~indexOf(props, globals[i])) { - continue; - } - props.push(globals[i]); - } - - return props; -}; - -/** - * Allow the given `arr` of globals. - * - * @param {Array} arr - * @return {Runner} for chaining - * @api public - * @param {Array} arr - * @return {Runner} Runner instance. - */ -Runner.prototype.globals = function(arr) { - if (!arguments.length) { - return this._globals; - } - debug('globals %j', arr); - this._globals = this._globals.concat(arr); - return this; -}; - -/** - * Check for global variable leaks. - * - * @api private - */ -Runner.prototype.checkGlobals = function(test) { - if (this.ignoreLeaks) { - return; - } - var ok = this._globals; - - var globals = this.globalProps(); - var leaks; - - if (test) { - ok = ok.concat(test._allowedGlobals || []); - } - - if (this.prevGlobalsLength === globals.length) { - return; - } - this.prevGlobalsLength = globals.length; - - leaks = filterLeaks(ok, globals); - this._globals = this._globals.concat(leaks); - - if (leaks.length > 1) { - this.fail(test, new Error('global leaks detected: ' + leaks.join(', ') + '')); - } else if (leaks.length) { - this.fail(test, new Error('global leak detected: ' + leaks[0])); - } -}; - -/** - * Fail the given `test`. - * - * @api private - * @param {Test} test - * @param {Error} err - */ -Runner.prototype.fail = function(test, err) { - if (test.isPending()) { - return; - } - - ++this.failures; - test.state = 'failed'; - - if (!(err instanceof Error || err && typeof err.message === 'string')) { - err = new Error('the ' + type(err) + ' ' + stringify(err) + ' was thrown, throw an Error :)'); - } - - err.stack = (this.fullStackTrace || !err.stack) - ? err.stack - : stackFilter(err.stack); - - this.emit('fail', test, err); -}; - -/** - * Fail the given `hook` with `err`. - * - * Hook failures work in the following pattern: - * - If bail, then exit - * - Failed `before` hook skips all tests in a suite and subsuites, - * but jumps to corresponding `after` hook - * - Failed `before each` hook skips remaining tests in a - * suite and jumps to corresponding `after each` hook, - * which is run only once - * - Failed `after` hook does not alter - * execution order - * - Failed `after each` hook skips remaining tests in a - * suite and subsuites, but executes other `after each` - * hooks - * - * @api private - * @param {Hook} hook - * @param {Error} err - */ -Runner.prototype.failHook = function(hook, err) { - if (hook.ctx && hook.ctx.currentTest) { - hook.originalTitle = hook.originalTitle || hook.title; - hook.title = hook.originalTitle + ' for "' + hook.ctx.currentTest.title + '"'; - } - - this.fail(hook, err); - if (this.suite.bail()) { - this.emit('end'); - } -}; - -/** - * Run hook `name` callbacks and then invoke `fn()`. - * - * @api private - * @param {string} name - * @param {Function} fn - */ - -Runner.prototype.hook = function(name, fn) { - var suite = this.suite; - var hooks = suite['_' + name]; - var self = this; - - function next(i) { - var hook = hooks[i]; - if (!hook) { - return fn(); - } - self.currentRunnable = hook; - - hook.ctx.currentTest = self.test; - - self.emit('hook', hook); - - if (!hook.listeners('error').length) { - hook.on('error', function(err) { - self.failHook(hook, err); - }); - } - - hook.run(function(err) { - var testError = hook.error(); - if (testError) { - self.fail(self.test, testError); - } - if (err) { - if (err instanceof Pending) { - if (name === 'beforeEach' || name === 'afterEach') { - self.test.pending = true; - } else { - utils.forEach(suite.tests, function(test) { - test.pending = true; - }); - // a pending hook won't be executed twice. - hook.pending = true; - } - } else { - self.failHook(hook, err); - - // stop executing hooks, notify callee of hook err - return fn(err); - } - } - self.emit('hook end', hook); - delete hook.ctx.currentTest; - next(++i); - }); - } - - Runner.immediately(function() { - next(0); - }); -}; - -/** - * Run hook `name` for the given array of `suites` - * in order, and callback `fn(err, errSuite)`. - * - * @api private - * @param {string} name - * @param {Array} suites - * @param {Function} fn - */ -Runner.prototype.hooks = function(name, suites, fn) { - var self = this; - var orig = this.suite; - - function next(suite) { - self.suite = suite; - - if (!suite) { - self.suite = orig; - return fn(); - } - - self.hook(name, function(err) { - if (err) { - var errSuite = self.suite; - self.suite = orig; - return fn(err, errSuite); - } - - next(suites.pop()); - }); - } - - next(suites.pop()); -}; - -/** - * Run hooks from the top level down. - * - * @param {String} name - * @param {Function} fn - * @api private - */ -Runner.prototype.hookUp = function(name, fn) { - var suites = [this.suite].concat(this.parents()).reverse(); - this.hooks(name, suites, fn); -}; - -/** - * Run hooks from the bottom up. - * - * @param {String} name - * @param {Function} fn - * @api private - */ -Runner.prototype.hookDown = function(name, fn) { - var suites = [this.suite].concat(this.parents()); - this.hooks(name, suites, fn); -}; - -/** - * Return an array of parent Suites from - * closest to furthest. - * - * @return {Array} - * @api private - */ -Runner.prototype.parents = function() { - var suite = this.suite; - var suites = []; - while (suite.parent) { - suite = suite.parent; - suites.push(suite); - } - return suites; -}; - -/** - * Run the current test and callback `fn(err)`. - * - * @param {Function} fn - * @api private - */ -Runner.prototype.runTest = function(fn) { - var self = this; - var test = this.test; - - if (!test) { - return; - } - if (this.asyncOnly) { - test.asyncOnly = true; - } - - if (this.allowUncaught) { - test.allowUncaught = true; - return test.run(fn); - } - try { - test.on('error', function(err) { - self.fail(test, err); - }); - test.run(fn); - } catch (err) { - fn(err); - } -}; - -/** - * Run tests in the given `suite` and invoke the callback `fn()` when complete. - * - * @api private - * @param {Suite} suite - * @param {Function} fn - */ -Runner.prototype.runTests = function(suite, fn) { - var self = this; - var tests = suite.tests.slice(); - var test; - - function hookErr(_, errSuite, after) { - // before/after Each hook for errSuite failed: - var orig = self.suite; - - // for failed 'after each' hook start from errSuite parent, - // otherwise start from errSuite itself - self.suite = after ? errSuite.parent : errSuite; - - if (self.suite) { - // call hookUp afterEach - self.hookUp('afterEach', function(err2, errSuite2) { - self.suite = orig; - // some hooks may fail even now - if (err2) { - return hookErr(err2, errSuite2, true); - } - // report error suite - fn(errSuite); - }); - } else { - // there is no need calling other 'after each' hooks - self.suite = orig; - fn(errSuite); - } - } - - function next(err, errSuite) { - // if we bail after first err - if (self.failures && suite._bail) { - return fn(); - } - - if (self._abort) { - return fn(); - } - - if (err) { - return hookErr(err, errSuite, true); - } - - // next test - test = tests.shift(); - - // all done - if (!test) { - return fn(); - } - - // grep - var match = self._grep.test(test.fullTitle()); - if (self._invert) { - match = !match; - } - if (!match) { - // Run immediately only if we have defined a grep. When we - // define a grep — It can cause maximum callstack error if - // the grep is doing a large recursive loop by neglecting - // all tests. The run immediately function also comes with - // a performance cost. So we don't want to run immediately - // if we run the whole test suite, because running the whole - // test suite don't do any immediate recursive loops. Thus, - // allowing a JS runtime to breathe. - if (self._grep !== self._defaultGrep) { - Runner.immediately(next); - } else { - next(); - } - return; - } - - if (test.isPending()) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - - // execute test and hook(s) - self.emit('test', self.test = test); - self.hookDown('beforeEach', function(err, errSuite) { - if (test.isPending()) { - self.emit('pending', test); - self.emit('test end', test); - return next(); - } - if (err) { - return hookErr(err, errSuite, false); - } - self.currentRunnable = self.test; - self.runTest(function(err) { - test = self.test; - if (err) { - var retry = test.currentRetry(); - if (err instanceof Pending) { - test.pending = true; - self.emit('pending', test); - } else if (retry < test.retries()) { - var clonedTest = test.clone(); - clonedTest.currentRetry(retry + 1); - tests.unshift(clonedTest); - - // Early return + hook trigger so that it doesn't - // increment the count wrong - return self.hookUp('afterEach', next); - } else { - self.fail(test, err); - } - self.emit('test end', test); - - if (err instanceof Pending) { - return next(); - } - - return self.hookUp('afterEach', next); - } - - test.state = 'passed'; - self.emit('pass', test); - self.emit('test end', test); - self.hookUp('afterEach', next); - }); - }); - } - - this.next = next; - this.hookErr = hookErr; - next(); -}; - -/** - * Run the given `suite` and invoke the callback `fn()` when complete. - * - * @api private - * @param {Suite} suite - * @param {Function} fn - */ -Runner.prototype.runSuite = function(suite, fn) { - var i = 0; - var self = this; - var total = this.grepTotal(suite); - var afterAllHookCalled = false; - - debug('run suite %s', suite.fullTitle()); - - if (!total || (self.failures && suite._bail)) { - return fn(); - } - - this.emit('suite', this.suite = suite); - - function next(errSuite) { - if (errSuite) { - // current suite failed on a hook from errSuite - if (errSuite === suite) { - // if errSuite is current suite - // continue to the next sibling suite - return done(); - } - // errSuite is among the parents of current suite - // stop execution of errSuite and all sub-suites - return done(errSuite); - } - - if (self._abort) { - return done(); - } - - var curr = suite.suites[i++]; - if (!curr) { - return done(); - } - - // Avoid grep neglecting large number of tests causing a - // huge recursive loop and thus a maximum call stack error. - // See comment in `this.runTests()` for more information. - if (self._grep !== self._defaultGrep) { - Runner.immediately(function() { - self.runSuite(curr, next); - }); - } else { - self.runSuite(curr, next); - } - } - - function done(errSuite) { - self.suite = suite; - self.nextSuite = next; - - if (afterAllHookCalled) { - fn(errSuite); - } else { - // mark that the afterAll block has been called once - // and so can be skipped if there is an error in it. - afterAllHookCalled = true; - - // remove reference to test - delete self.test; - - self.hook('afterAll', function() { - self.emit('suite end', suite); - fn(errSuite); - }); - } - } - - this.nextSuite = next; - - this.hook('beforeAll', function(err) { - if (err) { - return done(); - } - self.runTests(suite, next); - }); -}; - -/** - * Handle uncaught exceptions. - * - * @param {Error} err - * @api private - */ -Runner.prototype.uncaught = function(err) { - if (err) { - debug('uncaught exception %s', err !== function() { - return this; - }.call(err) ? err : (err.message || err)); - } else { - debug('uncaught undefined exception'); - err = undefinedError(); - } - err.uncaught = true; - - var runnable = this.currentRunnable; - - if (!runnable) { - runnable = new Runnable('Uncaught error outside test suite'); - runnable.parent = this.suite; - - if (this.started) { - this.fail(runnable, err); - } else { - // Can't recover from this failure - this.emit('start'); - this.fail(runnable, err); - this.emit('end'); - } - - return; - } - - runnable.clearTimeout(); - - // Ignore errors if complete or pending - if (runnable.state || runnable.isPending()) { - return; - } - this.fail(runnable, err); - - // recover from test - if (runnable.type === 'test') { - this.emit('test end', runnable); - this.hookUp('afterEach', this.next); - return; - } - - // recover from hooks - if (runnable.type === 'hook') { - var errSuite = this.suite; - // if hook failure is in afterEach block - if (runnable.fullTitle().indexOf('after each') > -1) { - return this.hookErr(err, errSuite, true); - } - // if hook failure is in beforeEach block - if (runnable.fullTitle().indexOf('before each') > -1) { - return this.hookErr(err, errSuite, false); - } - // if hook failure is in after or before blocks - return this.nextSuite(errSuite); - } - - // bail - this.emit('end'); -}; - -/** - * Cleans up the references to all the deferred functions - * (before/after/beforeEach/afterEach) and tests of a Suite. - * These must be deleted otherwise a memory leak can happen, - * as those functions may reference variables from closures, - * thus those variables can never be garbage collected as long - * as the deferred functions exist. - * - * @param {Suite} suite - */ -function cleanSuiteReferences(suite) { - function cleanArrReferences(arr) { - for (var i = 0; i < arr.length; i++) { - delete arr[i].fn; - } - } - - if (isArray(suite._beforeAll)) { - cleanArrReferences(suite._beforeAll); - } - - if (isArray(suite._beforeEach)) { - cleanArrReferences(suite._beforeEach); - } - - if (isArray(suite._afterAll)) { - cleanArrReferences(suite._afterAll); - } - - if (isArray(suite._afterEach)) { - cleanArrReferences(suite._afterEach); - } - - for (var i = 0; i < suite.tests.length; i++) { - delete suite.tests[i].fn; - } -} - -/** - * Run the root suite and invoke `fn(failures)` - * on completion. - * - * @param {Function} fn - * @return {Runner} for chaining - * @api public - * @param {Function} fn - * @return {Runner} Runner instance. - */ -Runner.prototype.run = function(fn) { - var self = this; - var rootSuite = this.suite; - - // If there is an `only` filter - if (this.hasOnly) { - filterOnly(rootSuite); - } - - fn = fn || function() {}; - - function uncaught(err) { - self.uncaught(err); - } - - function start() { - self.started = true; - self.emit('start'); - self.runSuite(rootSuite, function() { - debug('finished running'); - self.emit('end'); - }); - } - - debug('start'); - - // references cleanup to avoid memory leaks - this.on('suite end', cleanSuiteReferences); - - // callback - this.on('end', function() { - debug('end'); - process.removeListener('uncaughtException', uncaught); - fn(self.failures); - }); - - // uncaught exception - process.on('uncaughtException', uncaught); - - if (this._delay) { - // for reporters, I guess. - // might be nice to debounce some dots while we wait. - this.emit('waiting', rootSuite); - rootSuite.once('run', start); - } else { - start(); - } - - return this; -}; - -/** - * Cleanly abort execution. - * - * @api public - * @return {Runner} Runner instance. - */ -Runner.prototype.abort = function() { - debug('aborting'); - this._abort = true; - - return this; -}; - -/** - * Filter suites based on `isOnly` logic. - * - * @param {Array} suite - * @returns {Boolean} - * @api private - */ -function filterOnly(suite) { - if (suite._onlyTests.length) { - // If the suite contains `only` tests, run those and ignore any nested suites. - suite.tests = suite._onlyTests; - suite.suites = []; - } else { - // Otherwise, do not run any of the tests in this suite. - suite.tests = []; - utils.forEach(suite._onlySuites, function(onlySuite) { - // If there are other `only` tests/suites nested in the current `only` suite, then filter that `only` suite. - // Otherwise, all of the tests on this `only` suite should be run, so don't filter it. - if (hasOnly(onlySuite)) { - filterOnly(onlySuite); - } - }); - // Run the `only` suites, as well as any other suites that have `only` tests/suites as descendants. - suite.suites = filter(suite.suites, function(childSuite) { - return indexOf(suite._onlySuites, childSuite) !== -1 || filterOnly(childSuite); - }); - } - // Keep the suite only if there is something to run - return suite.tests.length || suite.suites.length; -} - -/** - * Determines whether a suite has an `only` test or suite as a descendant. - * - * @param {Array} suite - * @returns {Boolean} - * @api private - */ -function hasOnly(suite) { - return suite._onlyTests.length || suite._onlySuites.length || some(suite.suites, hasOnly); -} - -/** - * Filter leaks with the given globals flagged as `ok`. - * - * @api private - * @param {Array} ok - * @param {Array} globals - * @return {Array} - */ -function filterLeaks(ok, globals) { - return filter(globals, function(key) { - // Firefox and Chrome exposes iframes as index inside the window object - if (/^\d+/.test(key)) { - return false; - } - - // in firefox - // if runner runs in an iframe, this iframe's window.getInterface method - // not init at first it is assigned in some seconds - if (global.navigator && (/^getInterface/).test(key)) { - return false; - } - - // an iframe could be approached by window[iframeIndex] - // in ie6,7,8 and opera, iframeIndex is enumerable, this could cause leak - if (global.navigator && (/^\d+/).test(key)) { - return false; - } - - // Opera and IE expose global variables for HTML element IDs (issue #243) - if (/^mocha-/.test(key)) { - return false; - } - - var matched = filter(ok, function(ok) { - if (~ok.indexOf('*')) { - return key.indexOf(ok.split('*')[0]) === 0; - } - return key === ok; - }); - return !matched.length && (!global.navigator || key !== 'onerror'); - }); -} - -/** - * Array of globals dependent on the environment. - * - * @return {Array} - * @api private - */ -function extraGlobals() { - if (typeof process === 'object' && typeof process.version === 'string') { - var parts = process.version.split('.'); - var nodeVersion = utils.reduce(parts, function(a, v) { - return a << 8 | v; - }); - - // 'errno' was renamed to process._errno in v0.9.11. - - if (nodeVersion < 0x00090B) { - return ['errno']; - } - } - - return []; -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./pending":16,"./runnable":33,"./utils":38,"_process":67,"debug":2,"events":3}],35:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var EventEmitter = require('events').EventEmitter; -var Hook = require('./hook'); -var utils = require('./utils'); -var inherits = utils.inherits; -var debug = require('debug')('mocha:suite'); -var milliseconds = require('./ms'); - -/** - * Expose `Suite`. - */ - -exports = module.exports = Suite; - -/** - * Create a new `Suite` with the given `title` and parent `Suite`. When a suite - * with the same title is already present, that suite is returned to provide - * nicer reporter and more flexible meta-testing. - * - * @api public - * @param {Suite} parent - * @param {string} title - * @return {Suite} - */ -exports.create = function(parent, title) { - var suite = new Suite(title, parent.ctx); - suite.parent = parent; - title = suite.fullTitle(); - parent.addSuite(suite); - return suite; -}; - -/** - * Initialize a new `Suite` with the given `title` and `ctx`. - * - * @api private - * @param {string} title - * @param {Context} parentContext - */ -function Suite(title, parentContext) { - if (!utils.isString(title)) { - throw new Error('Suite `title` should be a "string" but "' + typeof title + '" was given instead.'); - } - this.title = title; - function Context() {} - Context.prototype = parentContext; - this.ctx = new Context(); - this.suites = []; - this.tests = []; - this.pending = false; - this._beforeEach = []; - this._beforeAll = []; - this._afterEach = []; - this._afterAll = []; - this.root = !title; - this._timeout = 2000; - this._enableTimeouts = true; - this._slow = 75; - this._bail = false; - this._retries = -1; - this._onlyTests = []; - this._onlySuites = []; - this.delayed = false; -} - -/** - * Inherit from `EventEmitter.prototype`. - */ -inherits(Suite, EventEmitter); - -/** - * Return a clone of this `Suite`. - * - * @api private - * @return {Suite} - */ -Suite.prototype.clone = function() { - var suite = new Suite(this.title); - debug('clone'); - suite.ctx = this.ctx; - suite.timeout(this.timeout()); - suite.retries(this.retries()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - return suite; -}; - -/** - * Set timeout `ms` or short-hand such as "2s". - * - * @api private - * @param {number|string} ms - * @return {Suite|number} for chaining - */ -Suite.prototype.timeout = function(ms) { - if (!arguments.length) { - return this._timeout; - } - if (ms.toString() === '0') { - this._enableTimeouts = false; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('timeout %d', ms); - this._timeout = parseInt(ms, 10); - return this; -}; - -/** - * Set number of times to retry a failed test. - * - * @api private - * @param {number|string} n - * @return {Suite|number} for chaining - */ -Suite.prototype.retries = function(n) { - if (!arguments.length) { - return this._retries; - } - debug('retries %d', n); - this._retries = parseInt(n, 10) || 0; - return this; -}; - -/** - * Set timeout to `enabled`. - * - * @api private - * @param {boolean} enabled - * @return {Suite|boolean} self or enabled - */ -Suite.prototype.enableTimeouts = function(enabled) { - if (!arguments.length) { - return this._enableTimeouts; - } - debug('enableTimeouts %s', enabled); - this._enableTimeouts = enabled; - return this; -}; - -/** - * Set slow `ms` or short-hand such as "2s". - * - * @api private - * @param {number|string} ms - * @return {Suite|number} for chaining - */ -Suite.prototype.slow = function(ms) { - if (!arguments.length) { - return this._slow; - } - if (typeof ms === 'string') { - ms = milliseconds(ms); - } - debug('slow %d', ms); - this._slow = ms; - return this; -}; - -/** - * Sets whether to bail after first error. - * - * @api private - * @param {boolean} bail - * @return {Suite|number} for chaining - */ -Suite.prototype.bail = function(bail) { - if (!arguments.length) { - return this._bail; - } - debug('bail %s', bail); - this._bail = bail; - return this; -}; - -/** - * Check if this suite or its parent suite is marked as pending. - * - * @api private - */ -Suite.prototype.isPending = function() { - return this.pending || (this.parent && this.parent.isPending()); -}; - -/** - * Run `fn(test[, done])` before running tests. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.beforeAll = function(title, fn) { - if (this.isPending()) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"before all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeAll.push(hook); - this.emit('beforeAll', hook); - return this; -}; - -/** - * Run `fn(test[, done])` after running tests. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.afterAll = function(title, fn) { - if (this.isPending()) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"after all" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterAll.push(hook); - this.emit('afterAll', hook); - return this; -}; - -/** - * Run `fn(test[, done])` before each test case. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.beforeEach = function(title, fn) { - if (this.isPending()) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"before each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._beforeEach.push(hook); - this.emit('beforeEach', hook); - return this; -}; - -/** - * Run `fn(test[, done])` after each test case. - * - * @api private - * @param {string} title - * @param {Function} fn - * @return {Suite} for chaining - */ -Suite.prototype.afterEach = function(title, fn) { - if (this.isPending()) { - return this; - } - if (typeof title === 'function') { - fn = title; - title = fn.name; - } - title = '"after each" hook' + (title ? ': ' + title : ''); - - var hook = new Hook(title, fn); - hook.parent = this; - hook.timeout(this.timeout()); - hook.retries(this.retries()); - hook.enableTimeouts(this.enableTimeouts()); - hook.slow(this.slow()); - hook.ctx = this.ctx; - this._afterEach.push(hook); - this.emit('afterEach', hook); - return this; -}; - -/** - * Add a test `suite`. - * - * @api private - * @param {Suite} suite - * @return {Suite} for chaining - */ -Suite.prototype.addSuite = function(suite) { - suite.parent = this; - suite.timeout(this.timeout()); - suite.retries(this.retries()); - suite.enableTimeouts(this.enableTimeouts()); - suite.slow(this.slow()); - suite.bail(this.bail()); - this.suites.push(suite); - this.emit('suite', suite); - return this; -}; - -/** - * Add a `test` to this suite. - * - * @api private - * @param {Test} test - * @return {Suite} for chaining - */ -Suite.prototype.addTest = function(test) { - test.parent = this; - test.timeout(this.timeout()); - test.retries(this.retries()); - test.enableTimeouts(this.enableTimeouts()); - test.slow(this.slow()); - test.ctx = this.ctx; - this.tests.push(test); - this.emit('test', test); - return this; -}; - -/** - * Return the full title generated by recursively concatenating the parent's - * full title. - * - * @api public - * @return {string} - */ -Suite.prototype.fullTitle = function() { - if (this.parent) { - var full = this.parent.fullTitle(); - if (full) { - return full + ' ' + this.title; - } - } - return this.title; -}; - -/** - * Return the total number of tests. - * - * @api public - * @return {number} - */ -Suite.prototype.total = function() { - return utils.reduce(this.suites, function(sum, suite) { - return sum + suite.total(); - }, 0) + this.tests.length; -}; - -/** - * Iterates through each suite recursively to find all tests. Applies a - * function in the format `fn(test)`. - * - * @api private - * @param {Function} fn - * @return {Suite} - */ -Suite.prototype.eachTest = function(fn) { - utils.forEach(this.tests, fn); - utils.forEach(this.suites, function(suite) { - suite.eachTest(fn); - }); - return this; -}; - -/** - * This will run the root suite if we happen to be running in delayed mode. - */ -Suite.prototype.run = function run() { - if (this.root) { - this.emit('run'); - } -}; - -},{"./hook":7,"./ms":15,"./utils":38,"debug":2,"events":3}],36:[function(require,module,exports){ -/** - * Module dependencies. - */ - -var Runnable = require('./runnable'); -var create = require('lodash.create'); -var isString = require('./utils').isString; - -/** - * Expose `Test`. - */ - -module.exports = Test; - -/** - * Initialize a new `Test` with the given `title` and callback `fn`. - * - * @api private - * @param {String} title - * @param {Function} fn - */ -function Test(title, fn) { - if (!isString(title)) { - throw new Error('Test `title` should be a "string" but "' + typeof title + '" was given instead.'); - } - Runnable.call(this, title, fn); - this.pending = !fn; - this.type = 'test'; -} - -/** - * Inherit from `Runnable.prototype`. - */ -Test.prototype = create(Runnable.prototype, { - constructor: Test -}); - -Test.prototype.clone = function() { - var test = new Test(this.title, this.fn); - test.timeout(this.timeout()); - test.slow(this.slow()); - test.enableTimeouts(this.enableTimeouts()); - test.retries(this.retries()); - test.currentRetry(this.currentRetry()); - test.globals(this.globals()); - test.parent = this.parent; - test.file = this.file; - test.ctx = this.ctx; - return test; -}; - -},{"./runnable":33,"./utils":38,"lodash.create":60}],37:[function(require,module,exports){ -'use strict'; - -/** - * Pad a `number` with a ten's place zero. - * - * @param {number} number - * @return {string} - */ -function pad(number) { - var n = number.toString(); - return n.length === 1 ? '0' + n : n; -} - -/** - * Turn a `date` into an ISO string. - * - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString - * - * @param {Date} date - * @return {string} - */ -function toISOString(date) { - return date.getUTCFullYear() - + '-' + pad(date.getUTCMonth() + 1) - + '-' + pad(date.getUTCDate()) - + 'T' + pad(date.getUTCHours()) - + ':' + pad(date.getUTCMinutes()) - + ':' + pad(date.getUTCSeconds()) - + '.' + String((date.getUTCMilliseconds()/1000).toFixed(3)).slice(2, 5) - + 'Z'; -} - -/* - * Exports. - */ - -module.exports = toISOString; - -},{}],38:[function(require,module,exports){ -(function (process,Buffer){ -/* eslint-env browser */ - -/** - * Module dependencies. - */ - -var JSON = require('json3'); -var basename = require('path').basename; -var debug = require('debug')('mocha:watch'); -var exists = require('fs').existsSync || require('path').existsSync; -var glob = require('glob'); -var path = require('path'); -var join = path.join; -var readdirSync = require('fs').readdirSync; -var statSync = require('fs').statSync; -var watchFile = require('fs').watchFile; -var toISOString = require('./to-iso-string'); - -/** - * Ignored directories. - */ - -var ignore = ['node_modules', '.git']; - -exports.inherits = require('util').inherits; - -/** - * Escape special characters in the given string of html. - * - * @api private - * @param {string} html - * @return {string} - */ -exports.escape = function(html) { - return String(html) - .replace(/&/g, '&') - .replace(/"/g, '"') - .replace(//g, '>'); -}; - -/** - * Array#forEach (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} scope - */ -exports.forEach = function(arr, fn, scope) { - for (var i = 0, l = arr.length; i < l; i++) { - fn.call(scope, arr[i], i); - } -}; - -/** - * Test if the given obj is type of string. - * - * @api private - * @param {Object} obj - * @return {boolean} - */ -exports.isString = function(obj) { - return typeof obj === 'string'; -}; - -/** - * Array#map (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} scope - * @return {Array} - */ -exports.map = function(arr, fn, scope) { - var result = []; - for (var i = 0, l = arr.length; i < l; i++) { - result.push(fn.call(scope, arr[i], i, arr)); - } - return result; -}; - -/** - * Array#indexOf (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Object} obj to find index of - * @param {number} start - * @return {number} - */ -var indexOf = exports.indexOf = function(arr, obj, start) { - for (var i = start || 0, l = arr.length; i < l; i++) { - if (arr[i] === obj) { - return i; - } - } - return -1; -}; - -/** - * Array#reduce (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @param {Object} val Initial value. - * @return {*} - */ -var reduce = exports.reduce = function(arr, fn, val) { - var rval = val; - - for (var i = 0, l = arr.length; i < l; i++) { - rval = fn(rval, arr[i], i, arr); - } - - return rval; -}; - -/** - * Array#filter (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @return {Array} - */ -exports.filter = function(arr, fn) { - var ret = []; - - for (var i = 0, l = arr.length; i < l; i++) { - var val = arr[i]; - if (fn(val, i, arr)) { - ret.push(val); - } - } - - return ret; -}; - -/** - * Array#some (<=IE8) - * - * @api private - * @param {Array} arr - * @param {Function} fn - * @return {Array} - */ -exports.some = function(arr, fn) { - for (var i = 0, l = arr.length; i < l; i++) { - if (fn(arr[i])) { - return true; - } - } - return false; -}; - -/** - * Object.keys (<=IE8) - * - * @api private - * @param {Object} obj - * @return {Array} keys - */ -exports.keys = typeof Object.keys === 'function' ? Object.keys : function(obj) { - var keys = []; - var has = Object.prototype.hasOwnProperty; // for `window` on <=IE8 - - for (var key in obj) { - if (has.call(obj, key)) { - keys.push(key); - } - } - - return keys; -}; - -/** - * Watch the given `files` for changes - * and invoke `fn(file)` on modification. - * - * @api private - * @param {Array} files - * @param {Function} fn - */ -exports.watch = function(files, fn) { - var options = { interval: 100 }; - files.forEach(function(file) { - debug('file %s', file); - watchFile(file, options, function(curr, prev) { - if (prev.mtime < curr.mtime) { - fn(file); - } - }); - }); -}; - -/** - * Array.isArray (<=IE8) - * - * @api private - * @param {Object} obj - * @return {Boolean} - */ -var isArray = typeof Array.isArray === 'function' ? Array.isArray : function(obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; -}; - -exports.isArray = isArray; - -/** - * Buffer.prototype.toJSON polyfill. - * - * @type {Function} - */ -if (typeof Buffer !== 'undefined' && Buffer.prototype) { - Buffer.prototype.toJSON = Buffer.prototype.toJSON || function() { - return Array.prototype.slice.call(this, 0); - }; -} - -/** - * Ignored files. - * - * @api private - * @param {string} path - * @return {boolean} - */ -function ignored(path) { - return !~ignore.indexOf(path); -} - -/** - * Lookup files in the given `dir`. - * - * @api private - * @param {string} dir - * @param {string[]} [ext=['.js']] - * @param {Array} [ret=[]] - * @return {Array} - */ -exports.files = function(dir, ext, ret) { - ret = ret || []; - ext = ext || ['js']; - - var re = new RegExp('\\.(' + ext.join('|') + ')$'); - - readdirSync(dir) - .filter(ignored) - .forEach(function(path) { - path = join(dir, path); - if (statSync(path).isDirectory()) { - exports.files(path, ext, ret); - } else if (path.match(re)) { - ret.push(path); - } - }); - - return ret; -}; - -/** - * Compute a slug from the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -exports.slug = function(str) { - return str - .toLowerCase() - .replace(/ +/g, '-') - .replace(/[^-\w]/g, ''); -}; - -/** - * Strip the function definition from `str`, and re-indent for pre whitespace. - * - * @param {string} str - * @return {string} - */ -exports.clean = function(str) { - str = str - .replace(/\r\n?|[\n\u2028\u2029]/g, '\n').replace(/^\uFEFF/, '') - // (traditional)-> space/name parameters body (lambda)-> parameters body multi-statement/single keep body content - .replace(/^function(?:\s*|\s+[^(]*)\([^)]*\)\s*\{((?:.|\n)*?)\s*\}$|^\([^)]*\)\s*=>\s*(?:\{((?:.|\n)*?)\s*\}|((?:.|\n)*))$/, '$1$2$3'); - - var spaces = str.match(/^\n?( *)/)[1].length; - var tabs = str.match(/^\n?(\t*)/)[1].length; - var re = new RegExp('^\n?' + (tabs ? '\t' : ' ') + '{' + (tabs ? tabs : spaces) + '}', 'gm'); - - str = str.replace(re, ''); - - return exports.trim(str); -}; - -/** - * Trim the given `str`. - * - * @api private - * @param {string} str - * @return {string} - */ -exports.trim = function(str) { - return str.replace(/^\s+|\s+$/g, ''); -}; - -/** - * Parse the given `qs`. - * - * @api private - * @param {string} qs - * @return {Object} - */ -exports.parseQuery = function(qs) { - return reduce(qs.replace('?', '').split('&'), function(obj, pair) { - var i = pair.indexOf('='); - var key = pair.slice(0, i); - var val = pair.slice(++i); - - obj[key] = decodeURIComponent(val); - return obj; - }, {}); -}; - -/** - * Highlight the given string of `js`. - * - * @api private - * @param {string} js - * @return {string} - */ -function highlight(js) { - return js - .replace(//g, '>') - .replace(/\/\/(.*)/gm, '//$1') - .replace(/('.*?')/gm, '$1') - .replace(/(\d+\.\d+)/gm, '$1') - .replace(/(\d+)/gm, '$1') - .replace(/\bnew[ \t]+(\w+)/gm, 'new $1') - .replace(/\b(function|new|throw|return|var|if|else)\b/gm, '$1'); -} - -/** - * Highlight the contents of tag `name`. - * - * @api private - * @param {string} name - */ -exports.highlightTags = function(name) { - var code = document.getElementById('mocha').getElementsByTagName(name); - for (var i = 0, len = code.length; i < len; ++i) { - code[i].innerHTML = highlight(code[i].innerHTML); - } -}; - -/** - * If a value could have properties, and has none, this function is called, - * which returns a string representation of the empty value. - * - * Functions w/ no properties return `'[Function]'` - * Arrays w/ length === 0 return `'[]'` - * Objects w/ no properties return `'{}'` - * All else: return result of `value.toString()` - * - * @api private - * @param {*} value The value to inspect. - * @param {string} typeHint The type of the value - * @returns {string} - */ -function emptyRepresentation(value, typeHint) { - switch (typeHint) { - case 'function': - return '[Function]'; - case 'object': - return '{}'; - case 'array': - return '[]'; - default: - return value.toString(); - } -} - -/** - * Takes some variable and asks `Object.prototype.toString()` what it thinks it - * is. - * - * @api private - * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString - * @param {*} value The value to test. - * @returns {string} Computed type - * @example - * type({}) // 'object' - * type([]) // 'array' - * type(1) // 'number' - * type(false) // 'boolean' - * type(Infinity) // 'number' - * type(null) // 'null' - * type(new Date()) // 'date' - * type(/foo/) // 'regexp' - * type('type') // 'string' - * type(global) // 'global' - * type(new String('foo') // 'object' - */ -var type = exports.type = function type(value) { - if (value === undefined) { - return 'undefined'; - } else if (value === null) { - return 'null'; - } else if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) { - return 'buffer'; - } - return Object.prototype.toString.call(value) - .replace(/^\[.+\s(.+?)\]$/, '$1') - .toLowerCase(); -}; - -/** - * Stringify `value`. Different behavior depending on type of value: - * - * - If `value` is undefined or null, return `'[undefined]'` or `'[null]'`, respectively. - * - If `value` is not an object, function or array, return result of `value.toString()` wrapped in double-quotes. - * - If `value` is an *empty* object, function, or array, return result of function - * {@link emptyRepresentation}. - * - If `value` has properties, call {@link exports.canonicalize} on it, then return result of - * JSON.stringify(). - * - * @api private - * @see exports.type - * @param {*} value - * @return {string} - */ -exports.stringify = function(value) { - var typeHint = type(value); - - if (!~indexOf(['object', 'array', 'function'], typeHint)) { - if (typeHint === 'buffer') { - var json = value.toJSON(); - // Based on the toJSON result - return jsonStringify(json.data && json.type ? json.data : json, 2) - .replace(/,(\n|$)/g, '$1'); - } - - // IE7/IE8 has a bizarre String constructor; needs to be coerced - // into an array and back to obj. - if (typeHint === 'string' && typeof value === 'object') { - value = reduce(value.split(''), function(acc, char, idx) { - acc[idx] = char; - return acc; - }, {}); - typeHint = 'object'; - } else { - return jsonStringify(value); - } - } - - for (var prop in value) { - if (Object.prototype.hasOwnProperty.call(value, prop)) { - return jsonStringify(exports.canonicalize(value, null, typeHint), 2).replace(/,(\n|$)/g, '$1'); - } - } - - return emptyRepresentation(value, typeHint); -}; - -/** - * like JSON.stringify but more sense. - * - * @api private - * @param {Object} object - * @param {number=} spaces - * @param {number=} depth - * @returns {*} - */ -function jsonStringify(object, spaces, depth) { - if (typeof spaces === 'undefined') { - // primitive types - return _stringify(object); - } - - depth = depth || 1; - var space = spaces * depth; - var str = isArray(object) ? '[' : '{'; - var end = isArray(object) ? ']' : '}'; - var length = typeof object.length === 'number' ? object.length : exports.keys(object).length; - // `.repeat()` polyfill - function repeat(s, n) { - return new Array(n).join(s); - } - - function _stringify(val) { - switch (type(val)) { - case 'null': - case 'undefined': - val = '[' + val + ']'; - break; - case 'array': - case 'object': - val = jsonStringify(val, spaces, depth + 1); - break; - case 'boolean': - case 'regexp': - case 'symbol': - case 'number': - val = val === 0 && (1 / val) === -Infinity // `-0` - ? '-0' - : val.toString(); - break; - case 'date': - var sDate; - if (isNaN(val.getTime())) { // Invalid date - sDate = val.toString(); - } else { - sDate = val.toISOString ? val.toISOString() : toISOString(val); - } - val = '[Date: ' + sDate + ']'; - break; - case 'buffer': - var json = val.toJSON(); - // Based on the toJSON result - json = json.data && json.type ? json.data : json; - val = '[Buffer: ' + jsonStringify(json, 2, depth + 1) + ']'; - break; - default: - val = (val === '[Function]' || val === '[Circular]') - ? val - : JSON.stringify(val); // string - } - return val; - } - - for (var i in object) { - if (!Object.prototype.hasOwnProperty.call(object, i)) { - continue; // not my business - } - --length; - str += '\n ' + repeat(' ', space) - + (isArray(object) ? '' : '"' + i + '": ') // key - + _stringify(object[i]) // value - + (length ? ',' : ''); // comma - } - - return str - // [], {} - + (str.length !== 1 ? '\n' + repeat(' ', --space) + end : end); -} - -/** - * Test if a value is a buffer. - * - * @api private - * @param {*} value The value to test. - * @return {boolean} True if `value` is a buffer, otherwise false - */ -exports.isBuffer = function(value) { - return typeof Buffer !== 'undefined' && Buffer.isBuffer(value); -}; - -/** - * Return a new Thing that has the keys in sorted order. Recursive. - * - * If the Thing... - * - has already been seen, return string `'[Circular]'` - * - is `undefined`, return string `'[undefined]'` - * - is `null`, return value `null` - * - is some other primitive, return the value - * - is not a primitive or an `Array`, `Object`, or `Function`, return the value of the Thing's `toString()` method - * - is a non-empty `Array`, `Object`, or `Function`, return the result of calling this function again. - * - is an empty `Array`, `Object`, or `Function`, return the result of calling `emptyRepresentation()` - * - * @api private - * @see {@link exports.stringify} - * @param {*} value Thing to inspect. May or may not have properties. - * @param {Array} [stack=[]] Stack of seen values - * @param {string} [typeHint] Type hint - * @return {(Object|Array|Function|string|undefined)} - */ -exports.canonicalize = function canonicalize(value, stack, typeHint) { - var canonicalizedObj; - /* eslint-disable no-unused-vars */ - var prop; - /* eslint-enable no-unused-vars */ - typeHint = typeHint || type(value); - function withStack(value, fn) { - stack.push(value); - fn(); - stack.pop(); - } - - stack = stack || []; - - if (indexOf(stack, value) !== -1) { - return '[Circular]'; - } - - switch (typeHint) { - case 'undefined': - case 'buffer': - case 'null': - canonicalizedObj = value; - break; - case 'array': - withStack(value, function() { - canonicalizedObj = exports.map(value, function(item) { - return exports.canonicalize(item, stack); - }); - }); - break; - case 'function': - /* eslint-disable guard-for-in */ - for (prop in value) { - canonicalizedObj = {}; - break; - } - /* eslint-enable guard-for-in */ - if (!canonicalizedObj) { - canonicalizedObj = emptyRepresentation(value, typeHint); - break; - } - /* falls through */ - case 'object': - canonicalizedObj = canonicalizedObj || {}; - withStack(value, function() { - exports.forEach(exports.keys(value).sort(), function(key) { - canonicalizedObj[key] = exports.canonicalize(value[key], stack); - }); - }); - break; - case 'date': - case 'number': - case 'regexp': - case 'boolean': - case 'symbol': - canonicalizedObj = value; - break; - default: - canonicalizedObj = value + ''; - } - - return canonicalizedObj; -}; - -/** - * Lookup file names at the given `path`. - * - * @api public - * @param {string} path Base path to start searching from. - * @param {string[]} extensions File extensions to look for. - * @param {boolean} recursive Whether or not to recurse into subdirectories. - * @return {string[]} An array of paths. - */ -exports.lookupFiles = function lookupFiles(path, extensions, recursive) { - var files = []; - var re = new RegExp('\\.(' + extensions.join('|') + ')$'); - - if (!exists(path)) { - if (exists(path + '.js')) { - path += '.js'; - } else { - files = glob.sync(path); - if (!files.length) { - throw new Error("cannot resolve path (or pattern) '" + path + "'"); - } - return files; - } - } - - try { - var stat = statSync(path); - if (stat.isFile()) { - return path; - } - } catch (err) { - // ignore error - return; - } - - readdirSync(path).forEach(function(file) { - file = join(path, file); - try { - var stat = statSync(file); - if (stat.isDirectory()) { - if (recursive) { - files = files.concat(lookupFiles(file, extensions, recursive)); - } - return; - } - } catch (err) { - // ignore error - return; - } - if (!stat.isFile() || !re.test(file) || basename(file)[0] === '.') { - return; - } - files.push(file); - }); - - return files; -}; - -/** - * Generate an undefined error with a message warning the user. - * - * @return {Error} - */ - -exports.undefinedError = function() { - return new Error('Caught undefined error, did you throw without specifying what?'); -}; - -/** - * Generate an undefined error if `err` is not defined. - * - * @param {Error} err - * @return {Error} - */ - -exports.getError = function(err) { - return err || exports.undefinedError(); -}; - -/** - * @summary - * This Filter based on `mocha-clean` module.(see: `github.com/rstacruz/mocha-clean`) - * @description - * When invoking this function you get a filter function that get the Error.stack as an input, - * and return a prettify output. - * (i.e: strip Mocha and internal node functions from stack trace). - * @returns {Function} - */ -exports.stackTraceFilter = function() { - // TODO: Replace with `process.browser` - var is = typeof document === 'undefined' ? { node: true } : { browser: true }; - var slash = path.sep; - var cwd; - if (is.node) { - cwd = process.cwd() + slash; - } else { - cwd = (typeof location === 'undefined' ? window.location : location).href.replace(/\/[^\/]*$/, '/'); - slash = '/'; - } - - function isMochaInternal(line) { - return (~line.indexOf('node_modules' + slash + 'mocha' + slash)) - || (~line.indexOf('node_modules' + slash + 'mocha.js')) - || (~line.indexOf('bower_components' + slash + 'mocha.js')) - || (~line.indexOf(slash + 'mocha.js')); - } - - function isNodeInternal(line) { - return (~line.indexOf('(timers.js:')) - || (~line.indexOf('(events.js:')) - || (~line.indexOf('(node.js:')) - || (~line.indexOf('(module.js:')) - || (~line.indexOf('GeneratorFunctionPrototype.next (native)')) - || false; - } - - return function(stack) { - stack = stack.split('\n'); - - stack = reduce(stack, function(list, line) { - if (isMochaInternal(line)) { - return list; - } - - if (is.node && isNodeInternal(line)) { - return list; - } - - // Clean up cwd(absolute) - if (/\(?.+:\d+:\d+\)?$/.test(line)) { - line = line.replace(cwd, ''); - } - - list.push(line); - return list; - }, []); - - return stack.join('\n'); - }; -}; - -/** - * Crude, but effective. - * @api - * @param {*} value - * @returns {boolean} Whether or not `value` is a Promise - */ -exports.isPromise = function isPromise(value) { - return typeof value === 'object' && typeof value.then === 'function'; -}; - -}).call(this,require('_process'),require("buffer").Buffer) -},{"./to-iso-string":37,"_process":67,"buffer":44,"debug":2,"fs":42,"glob":42,"json3":54,"path":42,"util":84}],39:[function(require,module,exports){ -'use strict' - -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -function init () { - var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' - for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i - } - - revLookup['-'.charCodeAt(0)] = 62 - revLookup['_'.charCodeAt(0)] = 63 -} - -init() - -function toByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - var len = b64.length - - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 - - // base64 is 4/3 + up to two characters of the original data - arr = new Arr(len * 3 / 4 - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? len - 4 : len - - var L = 0 - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] - arr[L++] = (tmp >> 16) & 0xFF - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - if (placeHolders === 2) { - tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[L++] = tmp & 0xFF - } else if (placeHolders === 1) { - tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var output = '' - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - output += lookup[tmp >> 2] - output += lookup[(tmp << 4) & 0x3F] - output += '==' - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) - output += lookup[tmp >> 10] - output += lookup[(tmp >> 4) & 0x3F] - output += lookup[(tmp << 2) & 0x3F] - output += '=' - } - - parts.push(output) - - return parts.join('') -} - -},{}],40:[function(require,module,exports){ - -},{}],41:[function(require,module,exports){ -(function (process){ -var WritableStream = require('stream').Writable -var inherits = require('util').inherits - -module.exports = BrowserStdout - - -inherits(BrowserStdout, WritableStream) - -function BrowserStdout(opts) { - if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts) - - opts = opts || {} - WritableStream.call(this, opts) - this.label = (opts.label !== undefined) ? opts.label : 'stdout' -} - -BrowserStdout.prototype._write = function(chunks, encoding, cb) { - var output = chunks.toString ? chunks.toString() : chunks - if (this.label === false) { - console.log(output) - } else { - console.log(this.label+':', output) - } - process.nextTick(cb) -} - -}).call(this,require('_process')) -},{"_process":67,"stream":79,"util":84}],42:[function(require,module,exports){ -arguments[4][40][0].apply(exports,arguments) -},{"dup":40}],43:[function(require,module,exports){ -(function (global){ -'use strict'; - -var buffer = require('buffer'); -var Buffer = buffer.Buffer; -var SlowBuffer = buffer.SlowBuffer; -var MAX_LEN = buffer.kMaxLength || 2147483647; -exports.alloc = function alloc(size, fill, encoding) { - if (typeof Buffer.alloc === 'function') { - return Buffer.alloc(size, fill, encoding); - } - if (typeof encoding === 'number') { - throw new TypeError('encoding must not be number'); - } - if (typeof size !== 'number') { - throw new TypeError('size must be a number'); - } - if (size > MAX_LEN) { - throw new RangeError('size is too large'); - } - var enc = encoding; - var _fill = fill; - if (_fill === undefined) { - enc = undefined; - _fill = 0; - } - var buf = new Buffer(size); - if (typeof _fill === 'string') { - var fillBuf = new Buffer(_fill, enc); - var flen = fillBuf.length; - var i = -1; - while (++i < size) { - buf[i] = fillBuf[i % flen]; - } - } else { - buf.fill(_fill); - } - return buf; -} -exports.allocUnsafe = function allocUnsafe(size) { - if (typeof Buffer.allocUnsafe === 'function') { - return Buffer.allocUnsafe(size); - } - if (typeof size !== 'number') { - throw new TypeError('size must be a number'); - } - if (size > MAX_LEN) { - throw new RangeError('size is too large'); - } - return new Buffer(size); -} -exports.from = function from(value, encodingOrOffset, length) { - if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) { - return Buffer.from(value, encodingOrOffset, length); - } - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number'); - } - if (typeof value === 'string') { - return new Buffer(value, encodingOrOffset); - } - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - var offset = encodingOrOffset; - if (arguments.length === 1) { - return new Buffer(value); - } - if (typeof offset === 'undefined') { - offset = 0; - } - var len = length; - if (typeof len === 'undefined') { - len = value.byteLength - offset; - } - if (offset >= value.byteLength) { - throw new RangeError('\'offset\' is out of bounds'); - } - if (len > value.byteLength - offset) { - throw new RangeError('\'length\' is out of bounds'); - } - return new Buffer(value.slice(offset, offset + len)); - } - if (Buffer.isBuffer(value)) { - var out = new Buffer(value.length); - value.copy(out, 0, 0, value.length); - return out; - } - if (value) { - if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) { - return new Buffer(value); - } - if (value.type === 'Buffer' && Array.isArray(value.data)) { - return new Buffer(value.data); - } - } - - throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.'); -} -exports.allocUnsafeSlow = function allocUnsafeSlow(size) { - if (typeof Buffer.allocUnsafeSlow === 'function') { - return Buffer.allocUnsafeSlow(size); - } - if (typeof size !== 'number') { - throw new TypeError('size must be a number'); - } - if (size >= MAX_LEN) { - throw new RangeError('size is too large'); - } - return new SlowBuffer(size); -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"buffer":44}],44:[function(require,module,exports){ -(function (global){ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var isArray = require('isarray') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ -Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined - ? global.TYPED_ARRAY_SUPPORT - : typedArraySupport() - -/* - * Export kMaxLength after typed array support is determined. - */ -exports.kMaxLength = kMaxLength() - -function typedArraySupport () { - try { - var arr = new Uint8Array(1) - arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} - return arr.foo() === 42 && // typed array instances can be augmented - typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` - arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` - } catch (e) { - return false - } -} - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length) - that.__proto__ = Buffer.prototype - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer(length) - } - that.length = length - } - - return that -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length) - } - - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from(this, arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192 // not used by this implementation - -// TODO: Legacy, not needed anymore. Remove in next major version. -Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype - return arr -} - -function from (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length) -} - -if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype - Buffer.__proto__ = Uint8Array - if (typeof Symbol !== 'undefined' && Symbol.species && - Buffer[Symbol.species] === Buffer) { - // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true - }) - } -} - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } -} - -function alloc (that, size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) -} - -function allocUnsafe (that, size) { - assertSize(size) - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0 - } - } - return that -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) -} - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength(string, encoding) | 0 - that = createBuffer(that, length) - - var actual = that.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual) - } - - return that -} - -function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - that = createBuffer(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array) - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset) - } else { - array = new Uint8Array(array, byteOffset, length) - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array - that.__proto__ = Buffer.prototype - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array) - } - return that -} - -function fromObject (that, obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - that = createBuffer(that, len) - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len) - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') -} - -function checked (length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string - } - - var len = string.length - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect -// Buffer instances. -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length | 0 - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') - if (this.length > max) str += ' ... ' - } - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!Buffer.isBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (Buffer.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - // must be an even number of digits - var strLen = string.length - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0 - if (isFinite(length)) { - length = length | 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end) - newBuf.__proto__ = Buffer.prototype - } else { - var sliceLen = end - start - newBuf = new Buffer(sliceLen, undefined) - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start] - } - } - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - this[offset] = (value & 0xff) - return offset + 1 -} - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - var i - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if (code < 256) { - val = code - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255 - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : utf8ToBytes(new Buffer(val, encoding).toString()) - var len = bytes.length - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"base64-js":39,"ieee754":50,"isarray":53}],45:[function(require,module,exports){ -(function (Buffer){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. - -function isArray(arg) { - if (Array.isArray) { - return Array.isArray(arg); - } - return objectToString(arg) === '[object Array]'; -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = Buffer.isBuffer; - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - -}).call(this,{"isBuffer":require("../../is-buffer/index.js")}) -},{"../../is-buffer/index.js":52}],46:[function(require,module,exports){ -/* See LICENSE file for terms of use */ - -/* - * Text diff implementation. - * - * This library supports the following APIS: - * JsDiff.diffChars: Character by character diff - * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace - * JsDiff.diffLines: Line based diff - * - * JsDiff.diffCss: Diff targeted at CSS content - * - * These methods are based on the implementation proposed in - * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). - * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 - */ -(function(global, undefined) { - var objectPrototypeToString = Object.prototype.toString; - - /*istanbul ignore next*/ - function map(arr, mapper, that) { - if (Array.prototype.map) { - return Array.prototype.map.call(arr, mapper, that); - } - - var other = new Array(arr.length); - - for (var i = 0, n = arr.length; i < n; i++) { - other[i] = mapper.call(that, arr[i], i, arr); - } - return other; - } - function clonePath(path) { - return { newPos: path.newPos, components: path.components.slice(0) }; - } - function removeEmpty(array) { - var ret = []; - for (var i = 0; i < array.length; i++) { - if (array[i]) { - ret.push(array[i]); - } - } - return ret; - } - function escapeHTML(s) { - var n = s; - n = n.replace(/&/g, '&'); - n = n.replace(//g, '>'); - n = n.replace(/"/g, '"'); - - return n; - } - - // This function handles the presence of circular references by bailing out when encountering an - // object that is already on the "stack" of items being processed. - function canonicalize(obj, stack, replacementStack) { - stack = stack || []; - replacementStack = replacementStack || []; - - var i; - - for (i = 0; i < stack.length; i += 1) { - if (stack[i] === obj) { - return replacementStack[i]; - } - } - - var canonicalizedObj; - - if ('[object Array]' === objectPrototypeToString.call(obj)) { - stack.push(obj); - canonicalizedObj = new Array(obj.length); - replacementStack.push(canonicalizedObj); - for (i = 0; i < obj.length; i += 1) { - canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack); - } - stack.pop(); - replacementStack.pop(); - } else if (typeof obj === 'object' && obj !== null) { - stack.push(obj); - canonicalizedObj = {}; - replacementStack.push(canonicalizedObj); - var sortedKeys = [], - key; - for (key in obj) { - sortedKeys.push(key); - } - sortedKeys.sort(); - for (i = 0; i < sortedKeys.length; i += 1) { - key = sortedKeys[i]; - canonicalizedObj[key] = canonicalize(obj[key], stack, replacementStack); - } - stack.pop(); - replacementStack.pop(); - } else { - canonicalizedObj = obj; - } - return canonicalizedObj; - } - - function buildValues(components, newString, oldString, useLongestToken) { - var componentPos = 0, - componentLen = components.length, - newPos = 0, - oldPos = 0; - - for (; componentPos < componentLen; componentPos++) { - var component = components[componentPos]; - if (!component.removed) { - if (!component.added && useLongestToken) { - var value = newString.slice(newPos, newPos + component.count); - value = map(value, function(value, i) { - var oldValue = oldString[oldPos + i]; - return oldValue.length > value.length ? oldValue : value; - }); - - component.value = value.join(''); - } else { - component.value = newString.slice(newPos, newPos + component.count).join(''); - } - newPos += component.count; - - // Common case - if (!component.added) { - oldPos += component.count; - } - } else { - component.value = oldString.slice(oldPos, oldPos + component.count).join(''); - oldPos += component.count; - - // Reverse add and remove so removes are output first to match common convention - // The diffing algorithm is tied to add then remove output and this is the simplest - // route to get the desired output with minimal overhead. - if (componentPos && components[componentPos - 1].added) { - var tmp = components[componentPos - 1]; - components[componentPos - 1] = components[componentPos]; - components[componentPos] = tmp; - } - } - } - - return components; - } - - function Diff(ignoreWhitespace) { - this.ignoreWhitespace = ignoreWhitespace; - } - Diff.prototype = { - diff: function(oldString, newString, callback) { - var self = this; - - function done(value) { - if (callback) { - setTimeout(function() { callback(undefined, value); }, 0); - return true; - } else { - return value; - } - } - - // Handle the identity case (this is due to unrolling editLength == 0 - if (newString === oldString) { - return done([{ value: newString }]); - } - if (!newString) { - return done([{ value: oldString, removed: true }]); - } - if (!oldString) { - return done([{ value: newString, added: true }]); - } - - newString = this.tokenize(newString); - oldString = this.tokenize(oldString); - - var newLen = newString.length, oldLen = oldString.length; - var editLength = 1; - var maxEditLength = newLen + oldLen; - var bestPath = [{ newPos: -1, components: [] }]; - - // Seed editLength = 0, i.e. the content starts with the same values - var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); - if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - // Identity per the equality and tokenizer - return done([{value: newString.join('')}]); - } - - // Main worker method. checks all permutations of a given edit length for acceptance. - function execEditLength() { - for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { - var basePath; - var addPath = bestPath[diagonalPath - 1], - removePath = bestPath[diagonalPath + 1], - oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; - if (addPath) { - // No one else is going to attempt to use this value, clear it - bestPath[diagonalPath - 1] = undefined; - } - - var canAdd = addPath && addPath.newPos + 1 < newLen, - canRemove = removePath && 0 <= oldPos && oldPos < oldLen; - if (!canAdd && !canRemove) { - // If this path is a terminal then prune - bestPath[diagonalPath] = undefined; - continue; - } - - // Select the diagonal that we want to branch from. We select the prior - // path whose position in the new string is the farthest from the origin - // and does not pass the bounds of the diff graph - if (!canAdd || (canRemove && addPath.newPos < removePath.newPos)) { - basePath = clonePath(removePath); - self.pushComponent(basePath.components, undefined, true); - } else { - basePath = addPath; // No need to clone, we've pulled it from the list - basePath.newPos++; - self.pushComponent(basePath.components, true, undefined); - } - - oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); - - // If we have hit the end of both strings, then we are done - if (basePath.newPos + 1 >= newLen && oldPos + 1 >= oldLen) { - return done(buildValues(basePath.components, newString, oldString, self.useLongestToken)); - } else { - // Otherwise track this path as a potential candidate and continue. - bestPath[diagonalPath] = basePath; - } - } - - editLength++; - } - - // Performs the length of edit iteration. Is a bit fugly as this has to support the - // sync and async mode which is never fun. Loops over execEditLength until a value - // is produced. - if (callback) { - (function exec() { - setTimeout(function() { - // This should not happen, but we want to be safe. - /*istanbul ignore next */ - if (editLength > maxEditLength) { - return callback(); - } - - if (!execEditLength()) { - exec(); - } - }, 0); - }()); - } else { - while (editLength <= maxEditLength) { - var ret = execEditLength(); - if (ret) { - return ret; - } - } - } - }, - - pushComponent: function(components, added, removed) { - var last = components[components.length - 1]; - if (last && last.added === added && last.removed === removed) { - // We need to clone here as the component clone operation is just - // as shallow array clone - components[components.length - 1] = {count: last.count + 1, added: added, removed: removed }; - } else { - components.push({count: 1, added: added, removed: removed }); - } - }, - extractCommon: function(basePath, newString, oldString, diagonalPath) { - var newLen = newString.length, - oldLen = oldString.length, - newPos = basePath.newPos, - oldPos = newPos - diagonalPath, - - commonCount = 0; - while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { - newPos++; - oldPos++; - commonCount++; - } - - if (commonCount) { - basePath.components.push({count: commonCount}); - } - - basePath.newPos = newPos; - return oldPos; - }, - - equals: function(left, right) { - var reWhitespace = /\S/; - return left === right || (this.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right)); - }, - tokenize: function(value) { - return value.split(''); - } - }; - - var CharDiff = new Diff(); - - var WordDiff = new Diff(true); - var WordWithSpaceDiff = new Diff(); - WordDiff.tokenize = WordWithSpaceDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\s+|\b)/)); - }; - - var CssDiff = new Diff(true); - CssDiff.tokenize = function(value) { - return removeEmpty(value.split(/([{}:;,]|\s+)/)); - }; - - var LineDiff = new Diff(); - - var TrimmedLineDiff = new Diff(); - TrimmedLineDiff.ignoreTrim = true; - - LineDiff.tokenize = TrimmedLineDiff.tokenize = function(value) { - var retLines = [], - lines = value.split(/^/m); - for (var i = 0; i < lines.length; i++) { - var line = lines[i], - lastLine = lines[i - 1], - lastLineLastChar = lastLine && lastLine[lastLine.length - 1]; - - // Merge lines that may contain windows new lines - if (line === '\n' && lastLineLastChar === '\r') { - retLines[retLines.length - 1] = retLines[retLines.length - 1].slice(0, -1) + '\r\n'; - } else { - if (this.ignoreTrim) { - line = line.trim(); - // add a newline unless this is the last line. - if (i < lines.length - 1) { - line += '\n'; - } - } - retLines.push(line); - } - } - - return retLines; - }; - - var PatchDiff = new Diff(); - PatchDiff.tokenize = function(value) { - var ret = [], - linesAndNewlines = value.split(/(\n|\r\n)/); - - // Ignore the final empty token that occurs if the string ends with a new line - if (!linesAndNewlines[linesAndNewlines.length - 1]) { - linesAndNewlines.pop(); - } - - // Merge the content and line separators into single tokens - for (var i = 0; i < linesAndNewlines.length; i++) { - var line = linesAndNewlines[i]; - - if (i % 2) { - ret[ret.length - 1] += line; - } else { - ret.push(line); - } - } - return ret; - }; - - var SentenceDiff = new Diff(); - SentenceDiff.tokenize = function(value) { - return removeEmpty(value.split(/(\S.+?[.!?])(?=\s+|$)/)); - }; - - var JsonDiff = new Diff(); - // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a - // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: - JsonDiff.useLongestToken = true; - JsonDiff.tokenize = LineDiff.tokenize; - JsonDiff.equals = function(left, right) { - return LineDiff.equals(left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')); - }; - - var JsDiff = { - Diff: Diff, - - diffChars: function(oldStr, newStr, callback) { return CharDiff.diff(oldStr, newStr, callback); }, - diffWords: function(oldStr, newStr, callback) { return WordDiff.diff(oldStr, newStr, callback); }, - diffWordsWithSpace: function(oldStr, newStr, callback) { return WordWithSpaceDiff.diff(oldStr, newStr, callback); }, - diffLines: function(oldStr, newStr, callback) { return LineDiff.diff(oldStr, newStr, callback); }, - diffTrimmedLines: function(oldStr, newStr, callback) { return TrimmedLineDiff.diff(oldStr, newStr, callback); }, - - diffSentences: function(oldStr, newStr, callback) { return SentenceDiff.diff(oldStr, newStr, callback); }, - - diffCss: function(oldStr, newStr, callback) { return CssDiff.diff(oldStr, newStr, callback); }, - diffJson: function(oldObj, newObj, callback) { - return JsonDiff.diff( - typeof oldObj === 'string' ? oldObj : JSON.stringify(canonicalize(oldObj), undefined, ' '), - typeof newObj === 'string' ? newObj : JSON.stringify(canonicalize(newObj), undefined, ' '), - callback - ); - }, - - createTwoFilesPatch: function(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader) { - var ret = []; - - if (oldFileName == newFileName) { - ret.push('Index: ' + oldFileName); - } - ret.push('==================================================================='); - ret.push('--- ' + oldFileName + (typeof oldHeader === 'undefined' ? '' : '\t' + oldHeader)); - ret.push('+++ ' + newFileName + (typeof newHeader === 'undefined' ? '' : '\t' + newHeader)); - - var diff = PatchDiff.diff(oldStr, newStr); - diff.push({value: '', lines: []}); // Append an empty value to make cleanup easier - - // Formats a given set of lines for printing as context lines in a patch - function contextLines(lines) { - return map(lines, function(entry) { return ' ' + entry; }); - } - - // Outputs the no newline at end of file warning if needed - function eofNL(curRange, i, current) { - var last = diff[diff.length - 2], - isLast = i === diff.length - 2, - isLastOfType = i === diff.length - 3 && current.added !== last.added; - - // Figure out if this is the last line for the given file and missing NL - if (!(/\n$/.test(current.value)) && (isLast || isLastOfType)) { - curRange.push('\\ No newline at end of file'); - } - } - - var oldRangeStart = 0, newRangeStart = 0, curRange = [], - oldLine = 1, newLine = 1; - for (var i = 0; i < diff.length; i++) { - var current = diff[i], - lines = current.lines || current.value.replace(/\n$/, '').split('\n'); - current.lines = lines; - - if (current.added || current.removed) { - // If we have previous context, start with that - if (!oldRangeStart) { - var prev = diff[i - 1]; - oldRangeStart = oldLine; - newRangeStart = newLine; - - if (prev) { - curRange = contextLines(prev.lines.slice(-4)); - oldRangeStart -= curRange.length; - newRangeStart -= curRange.length; - } - } - - // Output our changes - curRange.push.apply(curRange, map(lines, function(entry) { - return (current.added ? '+' : '-') + entry; - })); - eofNL(curRange, i, current); - - // Track the updated file position - if (current.added) { - newLine += lines.length; - } else { - oldLine += lines.length; - } - } else { - // Identical context lines. Track line changes - if (oldRangeStart) { - // Close out any changes that have been output (or join overlapping) - if (lines.length <= 8 && i < diff.length - 2) { - // Overlapping - curRange.push.apply(curRange, contextLines(lines)); - } else { - // end the range and output - var contextSize = Math.min(lines.length, 4); - ret.push( - '@@ -' + oldRangeStart + ',' + (oldLine - oldRangeStart + contextSize) - + ' +' + newRangeStart + ',' + (newLine - newRangeStart + contextSize) - + ' @@'); - ret.push.apply(ret, curRange); - ret.push.apply(ret, contextLines(lines.slice(0, contextSize))); - if (lines.length <= 4) { - eofNL(ret, i, current); - } - - oldRangeStart = 0; - newRangeStart = 0; - curRange = []; - } - } - oldLine += lines.length; - newLine += lines.length; - } - } - - return ret.join('\n') + '\n'; - }, - - createPatch: function(fileName, oldStr, newStr, oldHeader, newHeader) { - return JsDiff.createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader); - }, - - applyPatch: function(oldStr, uniDiff) { - var diffstr = uniDiff.split('\n'), - hunks = [], - i = 0, - remEOFNL = false, - addEOFNL = false; - - // Skip to the first change hunk - while (i < diffstr.length && !(/^@@/.test(diffstr[i]))) { - i++; - } - - // Parse the unified diff - for (; i < diffstr.length; i++) { - if (diffstr[i][0] === '@') { - var chnukHeader = diffstr[i].split(/@@ -(\d+),(\d+) \+(\d+),(\d+) @@/); - hunks.unshift({ - start: chnukHeader[3], - oldlength: +chnukHeader[2], - removed: [], - newlength: chnukHeader[4], - added: [] - }); - } else if (diffstr[i][0] === '+') { - hunks[0].added.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === '-') { - hunks[0].removed.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === ' ') { - hunks[0].added.push(diffstr[i].substr(1)); - hunks[0].removed.push(diffstr[i].substr(1)); - } else if (diffstr[i][0] === '\\') { - if (diffstr[i - 1][0] === '+') { - remEOFNL = true; - } else if (diffstr[i - 1][0] === '-') { - addEOFNL = true; - } - } - } - - // Apply the diff to the input - var lines = oldStr.split('\n'); - for (i = hunks.length - 1; i >= 0; i--) { - var hunk = hunks[i]; - // Sanity check the input string. Bail if we don't match. - for (var j = 0; j < hunk.oldlength; j++) { - if (lines[hunk.start - 1 + j] !== hunk.removed[j]) { - return false; - } - } - Array.prototype.splice.apply(lines, [hunk.start - 1, hunk.oldlength].concat(hunk.added)); - } - - // Handle EOFNL insertion/removal - if (remEOFNL) { - while (!lines[lines.length - 1]) { - lines.pop(); - } - } else if (addEOFNL) { - lines.push(''); - } - return lines.join('\n'); - }, - - convertChangesToXML: function(changes) { - var ret = []; - for (var i = 0; i < changes.length; i++) { - var change = changes[i]; - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - - ret.push(escapeHTML(change.value)); - - if (change.added) { - ret.push(''); - } else if (change.removed) { - ret.push(''); - } - } - return ret.join(''); - }, - - // See: http://code.google.com/p/google-diff-match-patch/wiki/API - convertChangesToDMP: function(changes) { - var ret = [], - change, - operation; - for (var i = 0; i < changes.length; i++) { - change = changes[i]; - if (change.added) { - operation = 1; - } else if (change.removed) { - operation = -1; - } else { - operation = 0; - } - - ret.push([operation, change.value]); - } - return ret; - }, - - canonicalize: canonicalize - }; - - /*istanbul ignore next */ - /*global module */ - if (typeof module !== 'undefined' && module.exports) { - module.exports = JsDiff; - } else if (false) { - /*global define */ - define([], function() { return JsDiff; }); - } else if (typeof global.JsDiff === 'undefined') { - global.JsDiff = JsDiff; - } -}(this)); - -},{}],47:[function(require,module,exports){ -'use strict'; - -var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g; - -module.exports = function (str) { - if (typeof str !== 'string') { - throw new TypeError('Expected a string'); - } - - return str.replace(matchOperatorsRe, '\\$&'); -}; - -},{}],48:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -// Backwards-compat with node 0.10.x -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -// By default EventEmitters will print a warning if more than 10 listeners are -// added to it. This is a useful default which helps finding memory leaks. -EventEmitter.defaultMaxListeners = 10; - -// Obviously not all Emitters should be limited to 10. This function allows -// that to be increased. Set to zero for unlimited. -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - // If there is no 'error' event listener then throw. - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - // At least give some kind of context to the user - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - // fast cases - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - // slower - default: - args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - // To avoid recursion in the case that type === "newListener"! Before - // adding it to the listeners, first emit "newListener". - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - // Optimize the case of one listener. Don't need the extra array object. - this._events[type] = listener; - else if (isObject(this._events[type])) - // If we've already got an array, just append. - this._events[type].push(listener); - else - // Adding the second element, need to change to array. - this._events[type] = [this._events[type], listener]; - - // Check for listener leak - if (isObject(this._events[type]) && !this._events[type].warned) { - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - // not supported in IE 10 - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -// emits a 'removeListener' event iff the listener was removed -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - // not listening for removeListener, no need to emit - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - // emit removeListener for all listeners on all events - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - // LIFO order - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; -}; - -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -},{}],49:[function(require,module,exports){ -(function (process){ -// Growl - Copyright TJ Holowaychuk (MIT Licensed) - -/** - * Module dependencies. - */ - -var exec = require('child_process').exec - , fs = require('fs') - , path = require('path') - , exists = fs.existsSync || path.existsSync - , os = require('os') - , quote = JSON.stringify - , cmd; - -function which(name) { - var paths = process.env.PATH.split(':'); - var loc; - - for (var i = 0, len = paths.length; i < len; ++i) { - loc = path.join(paths[i], name); - if (exists(loc)) return loc; - } -} - -switch(os.type()) { - case 'Darwin': - if (which('terminal-notifier')) { - cmd = { - type: "Darwin-NotificationCenter" - , pkg: "terminal-notifier" - , msg: '-message' - , title: '-title' - , subtitle: '-subtitle' - , icon: '-appIcon' - , sound: '-sound' - , url: '-open' - , priority: { - cmd: '-execute' - , range: [] - } - }; - } else { - cmd = { - type: "Darwin-Growl" - , pkg: "growlnotify" - , msg: '-m' - , sticky: '--sticky' - , priority: { - cmd: '--priority' - , range: [ - -2 - , -1 - , 0 - , 1 - , 2 - , "Very Low" - , "Moderate" - , "Normal" - , "High" - , "Emergency" - ] - } - }; - } - break; - case 'Linux': - if (which('growl')) { - cmd = { - type: "Linux-Growl" - , pkg: "growl" - , msg: '-m' - , title: '-title' - , subtitle: '-subtitle' - , host: { - cmd: '-H' - , hostname: '192.168.33.1' - } - }; - } else { - cmd = { - type: "Linux" - , pkg: "notify-send" - , msg: '' - , sticky: '-t 0' - , icon: '-i' - , priority: { - cmd: '-u' - , range: [ - "low" - , "normal" - , "critical" - ] - } - }; - } - break; - case 'Windows_NT': - cmd = { - type: "Windows" - , pkg: "growlnotify" - , msg: '' - , sticky: '/s:true' - , title: '/t:' - , icon: '/i:' - , url: '/cu:' - , priority: { - cmd: '/p:' - , range: [ - -2 - , -1 - , 0 - , 1 - , 2 - ] - } - }; - break; -} - -/** - * Expose `growl`. - */ - -exports = module.exports = growl; - -/** - * Node-growl version. - */ - -exports.version = '1.4.1' - -/** - * Send growl notification _msg_ with _options_. - * - * Options: - * - * - title Notification title - * - sticky Make the notification stick (defaults to false) - * - priority Specify an int or named key (default is 0) - * - name Application name (defaults to growlnotify) - * - sound Sound efect ( in OSx defined in preferences -> sound -> effects) * works only in OSX > 10.8x - * - image - * - path to an icon sets --iconpath - * - path to an image sets --image - * - capitalized word sets --appIcon - * - filename uses extname as --icon - * - otherwise treated as --icon - * - * Examples: - * - * growl('New email') - * growl('5 new emails', { title: 'Thunderbird' }) - * growl('5 new emails', { title: 'Thunderbird', sound: 'Purr' }) - * growl('Email sent', function(){ - * // ... notification sent - * }) - * - * @param {string} msg - * @param {object} options - * @param {function} fn - * @api public - */ - -function growl(msg, options, fn) { - var image - , args - , options = options || {} - , fn = fn || function(){}; - - if (options.exec) { - cmd = { - type: "Custom" - , pkg: options.exec - , range: [] - }; - } - - // noop - if (!cmd) return fn(new Error('growl not supported on this platform')); - args = [cmd.pkg]; - - // image - if (image = options.image) { - switch(cmd.type) { - case 'Darwin-Growl': - var flag, ext = path.extname(image).substr(1) - flag = flag || ext == 'icns' && 'iconpath' - flag = flag || /^[A-Z]/.test(image) && 'appIcon' - flag = flag || /^png|gif|jpe?g$/.test(ext) && 'image' - flag = flag || ext && (image = ext) && 'icon' - flag = flag || 'icon' - args.push('--' + flag, quote(image)) - break; - case 'Darwin-NotificationCenter': - args.push(cmd.icon, quote(image)); - break; - case 'Linux': - args.push(cmd.icon, quote(image)); - // libnotify defaults to sticky, set a hint for transient notifications - if (!options.sticky) args.push('--hint=int:transient:1'); - break; - case 'Windows': - args.push(cmd.icon + quote(image)); - break; - } - } - - // sticky - if (options.sticky) args.push(cmd.sticky); - - // priority - if (options.priority) { - var priority = options.priority + ''; - var checkindexOf = cmd.priority.range.indexOf(priority); - if (~cmd.priority.range.indexOf(priority)) { - args.push(cmd.priority, options.priority); - } - } - - //sound - if(options.sound && cmd.type === 'Darwin-NotificationCenter'){ - args.push(cmd.sound, options.sound) - } - - // name - if (options.name && cmd.type === "Darwin-Growl") { - args.push('--name', options.name); - } - - switch(cmd.type) { - case 'Darwin-Growl': - args.push(cmd.msg); - args.push(quote(msg).replace(/\\n/g, '\n')); - if (options.title) args.push(quote(options.title)); - break; - case 'Darwin-NotificationCenter': - args.push(cmd.msg); - var stringifiedMsg = quote(msg); - var escapedMsg = stringifiedMsg.replace(/\\n/g, '\n'); - args.push(escapedMsg); - if (options.title) { - args.push(cmd.title); - args.push(quote(options.title)); - } - if (options.subtitle) { - args.push(cmd.subtitle); - args.push(quote(options.subtitle)); - } - if (options.url) { - args.push(cmd.url); - args.push(quote(options.url)); - } - break; - case 'Linux-Growl': - args.push(cmd.msg); - args.push(quote(msg).replace(/\\n/g, '\n')); - if (options.title) args.push(quote(options.title)); - if (cmd.host) { - args.push(cmd.host.cmd, cmd.host.hostname) - } - break; - case 'Linux': - if (options.title) { - args.push(quote(options.title)); - args.push(cmd.msg); - args.push(quote(msg).replace(/\\n/g, '\n')); - } else { - args.push(quote(msg).replace(/\\n/g, '\n')); - } - break; - case 'Windows': - args.push(quote(msg).replace(/\\n/g, '\n')); - if (options.title) args.push(cmd.title + quote(options.title)); - if (options.url) args.push(cmd.url + quote(options.url)); - break; - case 'Custom': - args[0] = (function(origCommand) { - var message = options.title - ? options.title + ': ' + msg - : msg; - var command = origCommand.replace(/(^|[^%])%s/g, '$1' + quote(message)); - if (command === origCommand) args.push(quote(message)); - return command; - })(args[0]); - break; - } - - // execute - exec(args.join(' '), fn); -}; - -}).call(this,require('_process')) -},{"_process":67,"child_process":42,"fs":42,"os":65,"path":42}],50:[function(require,module,exports){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } - - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128 -} - -},{}],51:[function(require,module,exports){ -if (typeof Object.create === 'function') { - // implementation from standard node.js 'util' module - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - // old school shim for old browsers - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],52:[function(require,module,exports){ -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh - * @license MIT - */ - -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -} - -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} - -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} - -},{}],53:[function(require,module,exports){ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -},{}],54:[function(require,module,exports){ -(function (global){ -/*! JSON v3.3.2 | http://bestiejs.github.io/json3 | Copyright 2012-2014, Kit Cambridge | http://kit.mit-license.org */ -;(function () { - // Detect the `define` function exposed by asynchronous module loaders. The - // strict `define` check is necessary for compatibility with `r.js`. - var isLoader = false; - - // A set of types used to distinguish objects from primitives. - var objectTypes = { - "function": true, - "object": true - }; - - // Detect the `exports` object exposed by CommonJS implementations. - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - // Use the `global` object exposed by Node (including Browserify via - // `insert-module-globals`), Narwhal, and Ringo as the default context, - // and the `window` object in browsers. Rhino exports a `global` function - // instead. - var root = objectTypes[typeof window] && window || this, - freeGlobal = freeExports && objectTypes[typeof module] && module && !module.nodeType && typeof global == "object" && global; - - if (freeGlobal && (freeGlobal["global"] === freeGlobal || freeGlobal["window"] === freeGlobal || freeGlobal["self"] === freeGlobal)) { - root = freeGlobal; - } - - // Public: Initializes JSON 3 using the given `context` object, attaching the - // `stringify` and `parse` functions to the specified `exports` object. - function runInContext(context, exports) { - context || (context = root["Object"]()); - exports || (exports = root["Object"]()); - - // Native constructor aliases. - var Number = context["Number"] || root["Number"], - String = context["String"] || root["String"], - Object = context["Object"] || root["Object"], - Date = context["Date"] || root["Date"], - SyntaxError = context["SyntaxError"] || root["SyntaxError"], - TypeError = context["TypeError"] || root["TypeError"], - Math = context["Math"] || root["Math"], - nativeJSON = context["JSON"] || root["JSON"]; - - // Delegate to the native `stringify` and `parse` implementations. - if (typeof nativeJSON == "object" && nativeJSON) { - exports.stringify = nativeJSON.stringify; - exports.parse = nativeJSON.parse; - } - - // Convenience aliases. - var objectProto = Object.prototype, - getClass = objectProto.toString, - isProperty, forEach, undef; - - // Test the `Date#getUTC*` methods. Based on work by @Yaffle. - var isExtended = new Date(-3509827334573292); - try { - // The `getUTCFullYear`, `Month`, and `Date` methods return nonsensical - // results for certain dates in Opera >= 10.53. - isExtended = isExtended.getUTCFullYear() == -109252 && isExtended.getUTCMonth() === 0 && isExtended.getUTCDate() === 1 && - // Safari < 2.0.2 stores the internal millisecond time value correctly, - // but clips the values returned by the date methods to the range of - // signed 32-bit integers ([-2 ** 31, 2 ** 31 - 1]). - isExtended.getUTCHours() == 10 && isExtended.getUTCMinutes() == 37 && isExtended.getUTCSeconds() == 6 && isExtended.getUTCMilliseconds() == 708; - } catch (exception) {} - - // Internal: Determines whether the native `JSON.stringify` and `parse` - // implementations are spec-compliant. Based on work by Ken Snyder. - function has(name) { - if (has[name] !== undef) { - // Return cached feature test result. - return has[name]; - } - var isSupported; - if (name == "bug-string-char-index") { - // IE <= 7 doesn't support accessing string characters using square - // bracket notation. IE 8 only supports this for primitives. - isSupported = "a"[0] != "a"; - } else if (name == "json") { - // Indicates whether both `JSON.stringify` and `JSON.parse` are - // supported. - isSupported = has("json-stringify") && has("json-parse"); - } else { - var value, serialized = '{"a":[1,true,false,null,"\\u0000\\b\\n\\f\\r\\t"]}'; - // Test `JSON.stringify`. - if (name == "json-stringify") { - var stringify = exports.stringify, stringifySupported = typeof stringify == "function" && isExtended; - if (stringifySupported) { - // A test function object with a custom `toJSON` method. - (value = function () { - return 1; - }).toJSON = value; - try { - stringifySupported = - // Firefox 3.1b1 and b2 serialize string, number, and boolean - // primitives as object literals. - stringify(0) === "0" && - // FF 3.1b1, b2, and JSON 2 serialize wrapped primitives as object - // literals. - stringify(new Number()) === "0" && - stringify(new String()) == '""' && - // FF 3.1b1, 2 throw an error if the value is `null`, `undefined`, or - // does not define a canonical JSON representation (this applies to - // objects with `toJSON` properties as well, *unless* they are nested - // within an object or array). - stringify(getClass) === undef && - // IE 8 serializes `undefined` as `"undefined"`. Safari <= 5.1.7 and - // FF 3.1b3 pass this test. - stringify(undef) === undef && - // Safari <= 5.1.7 and FF 3.1b3 throw `Error`s and `TypeError`s, - // respectively, if the value is omitted entirely. - stringify() === undef && - // FF 3.1b1, 2 throw an error if the given value is not a number, - // string, array, object, Boolean, or `null` literal. This applies to - // objects with custom `toJSON` methods as well, unless they are nested - // inside object or array literals. YUI 3.0.0b1 ignores custom `toJSON` - // methods entirely. - stringify(value) === "1" && - stringify([value]) == "[1]" && - // Prototype <= 1.6.1 serializes `[undefined]` as `"[]"` instead of - // `"[null]"`. - stringify([undef]) == "[null]" && - // YUI 3.0.0b1 fails to serialize `null` literals. - stringify(null) == "null" && - // FF 3.1b1, 2 halts serialization if an array contains a function: - // `[1, true, getClass, 1]` serializes as "[1,true,],". FF 3.1b3 - // elides non-JSON values from objects and arrays, unless they - // define custom `toJSON` methods. - stringify([undef, getClass, null]) == "[null,null,null]" && - // Simple serialization test. FF 3.1b1 uses Unicode escape sequences - // where character escape codes are expected (e.g., `\b` => `\u0008`). - stringify({ "a": [value, true, false, null, "\x00\b\n\f\r\t"] }) == serialized && - // FF 3.1b1 and b2 ignore the `filter` and `width` arguments. - stringify(null, value) === "1" && - stringify([1, 2], null, 1) == "[\n 1,\n 2\n]" && - // JSON 2, Prototype <= 1.7, and older WebKit builds incorrectly - // serialize extended years. - stringify(new Date(-8.64e15)) == '"-271821-04-20T00:00:00.000Z"' && - // The milliseconds are optional in ES 5, but required in 5.1. - stringify(new Date(8.64e15)) == '"+275760-09-13T00:00:00.000Z"' && - // Firefox <= 11.0 incorrectly serializes years prior to 0 as negative - // four-digit years instead of six-digit years. Credits: @Yaffle. - stringify(new Date(-621987552e5)) == '"-000001-01-01T00:00:00.000Z"' && - // Safari <= 5.1.5 and Opera >= 10.53 incorrectly serialize millisecond - // values less than 1000. Credits: @Yaffle. - stringify(new Date(-1)) == '"1969-12-31T23:59:59.999Z"'; - } catch (exception) { - stringifySupported = false; - } - } - isSupported = stringifySupported; - } - // Test `JSON.parse`. - if (name == "json-parse") { - var parse = exports.parse; - if (typeof parse == "function") { - try { - // FF 3.1b1, b2 will throw an exception if a bare literal is provided. - // Conforming implementations should also coerce the initial argument to - // a string prior to parsing. - if (parse("0") === 0 && !parse(false)) { - // Simple parsing test. - value = parse(serialized); - var parseSupported = value["a"].length == 5 && value["a"][0] === 1; - if (parseSupported) { - try { - // Safari <= 5.1.2 and FF 3.1b1 allow unescaped tabs in strings. - parseSupported = !parse('"\t"'); - } catch (exception) {} - if (parseSupported) { - try { - // FF 4.0 and 4.0.1 allow leading `+` signs and leading - // decimal points. FF 4.0, 4.0.1, and IE 9-10 also allow - // certain octal literals. - parseSupported = parse("01") !== 1; - } catch (exception) {} - } - if (parseSupported) { - try { - // FF 4.0, 4.0.1, and Rhino 1.7R3-R4 allow trailing decimal - // points. These environments, along with FF 3.1b1 and 2, - // also allow trailing commas in JSON objects and arrays. - parseSupported = parse("1.") !== 1; - } catch (exception) {} - } - } - } - } catch (exception) { - parseSupported = false; - } - } - isSupported = parseSupported; - } - } - return has[name] = !!isSupported; - } - - if (!has("json")) { - // Common `[[Class]]` name aliases. - var functionClass = "[object Function]", - dateClass = "[object Date]", - numberClass = "[object Number]", - stringClass = "[object String]", - arrayClass = "[object Array]", - booleanClass = "[object Boolean]"; - - // Detect incomplete support for accessing string characters by index. - var charIndexBuggy = has("bug-string-char-index"); - - // Define additional utility methods if the `Date` methods are buggy. - if (!isExtended) { - var floor = Math.floor; - // A mapping between the months of the year and the number of days between - // January 1st and the first of the respective month. - var Months = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334]; - // Internal: Calculates the number of days between the Unix epoch and the - // first day of the given month. - var getDay = function (year, month) { - return Months[month] + 365 * (year - 1970) + floor((year - 1969 + (month = +(month > 1))) / 4) - floor((year - 1901 + month) / 100) + floor((year - 1601 + month) / 400); - }; - } - - // Internal: Determines if a property is a direct property of the given - // object. Delegates to the native `Object#hasOwnProperty` method. - if (!(isProperty = objectProto.hasOwnProperty)) { - isProperty = function (property) { - var members = {}, constructor; - if ((members.__proto__ = null, members.__proto__ = { - // The *proto* property cannot be set multiple times in recent - // versions of Firefox and SeaMonkey. - "toString": 1 - }, members).toString != getClass) { - // Safari <= 2.0.3 doesn't implement `Object#hasOwnProperty`, but - // supports the mutable *proto* property. - isProperty = function (property) { - // Capture and break the object's prototype chain (see section 8.6.2 - // of the ES 5.1 spec). The parenthesized expression prevents an - // unsafe transformation by the Closure Compiler. - var original = this.__proto__, result = property in (this.__proto__ = null, this); - // Restore the original prototype chain. - this.__proto__ = original; - return result; - }; - } else { - // Capture a reference to the top-level `Object` constructor. - constructor = members.constructor; - // Use the `constructor` property to simulate `Object#hasOwnProperty` in - // other environments. - isProperty = function (property) { - var parent = (this.constructor || constructor).prototype; - return property in this && !(property in parent && this[property] === parent[property]); - }; - } - members = null; - return isProperty.call(this, property); - }; - } - - // Internal: Normalizes the `for...in` iteration algorithm across - // environments. Each enumerated key is yielded to a `callback` function. - forEach = function (object, callback) { - var size = 0, Properties, members, property; - - // Tests for bugs in the current environment's `for...in` algorithm. The - // `valueOf` property inherits the non-enumerable flag from - // `Object.prototype` in older versions of IE, Netscape, and Mozilla. - (Properties = function () { - this.valueOf = 0; - }).prototype.valueOf = 0; - - // Iterate over a new instance of the `Properties` class. - members = new Properties(); - for (property in members) { - // Ignore all properties inherited from `Object.prototype`. - if (isProperty.call(members, property)) { - size++; - } - } - Properties = members = null; - - // Normalize the iteration algorithm. - if (!size) { - // A list of non-enumerable properties inherited from `Object.prototype`. - members = ["valueOf", "toString", "toLocaleString", "propertyIsEnumerable", "isPrototypeOf", "hasOwnProperty", "constructor"]; - // IE <= 8, Mozilla 1.0, and Netscape 6.2 ignore shadowed non-enumerable - // properties. - forEach = function (object, callback) { - var isFunction = getClass.call(object) == functionClass, property, length; - var hasProperty = !isFunction && typeof object.constructor != "function" && objectTypes[typeof object.hasOwnProperty] && object.hasOwnProperty || isProperty; - for (property in object) { - // Gecko <= 1.0 enumerates the `prototype` property of functions under - // certain conditions; IE does not. - if (!(isFunction && property == "prototype") && hasProperty.call(object, property)) { - callback(property); - } - } - // Manually invoke the callback for each non-enumerable property. - for (length = members.length; property = members[--length]; hasProperty.call(object, property) && callback(property)); - }; - } else if (size == 2) { - // Safari <= 2.0.4 enumerates shadowed properties twice. - forEach = function (object, callback) { - // Create a set of iterated properties. - var members = {}, isFunction = getClass.call(object) == functionClass, property; - for (property in object) { - // Store each property name to prevent double enumeration. The - // `prototype` property of functions is not enumerated due to cross- - // environment inconsistencies. - if (!(isFunction && property == "prototype") && !isProperty.call(members, property) && (members[property] = 1) && isProperty.call(object, property)) { - callback(property); - } - } - }; - } else { - // No bugs detected; use the standard `for...in` algorithm. - forEach = function (object, callback) { - var isFunction = getClass.call(object) == functionClass, property, isConstructor; - for (property in object) { - if (!(isFunction && property == "prototype") && isProperty.call(object, property) && !(isConstructor = property === "constructor")) { - callback(property); - } - } - // Manually invoke the callback for the `constructor` property due to - // cross-environment inconsistencies. - if (isConstructor || isProperty.call(object, (property = "constructor"))) { - callback(property); - } - }; - } - return forEach(object, callback); - }; - - // Public: Serializes a JavaScript `value` as a JSON string. The optional - // `filter` argument may specify either a function that alters how object and - // array members are serialized, or an array of strings and numbers that - // indicates which properties should be serialized. The optional `width` - // argument may be either a string or number that specifies the indentation - // level of the output. - if (!has("json-stringify")) { - // Internal: A map of control characters and their escaped equivalents. - var Escapes = { - 92: "\\\\", - 34: '\\"', - 8: "\\b", - 12: "\\f", - 10: "\\n", - 13: "\\r", - 9: "\\t" - }; - - // Internal: Converts `value` into a zero-padded string such that its - // length is at least equal to `width`. The `width` must be <= 6. - var leadingZeroes = "000000"; - var toPaddedString = function (width, value) { - // The `|| 0` expression is necessary to work around a bug in - // Opera <= 7.54u2 where `0 == -0`, but `String(-0) !== "0"`. - return (leadingZeroes + (value || 0)).slice(-width); - }; - - // Internal: Double-quotes a string `value`, replacing all ASCII control - // characters (characters with code unit values between 0 and 31) with - // their escaped equivalents. This is an implementation of the - // `Quote(value)` operation defined in ES 5.1 section 15.12.3. - var unicodePrefix = "\\u00"; - var quote = function (value) { - var result = '"', index = 0, length = value.length, useCharIndex = !charIndexBuggy || length > 10; - var symbols = useCharIndex && (charIndexBuggy ? value.split("") : value); - for (; index < length; index++) { - var charCode = value.charCodeAt(index); - // If the character is a control character, append its Unicode or - // shorthand escape sequence; otherwise, append the character as-is. - switch (charCode) { - case 8: case 9: case 10: case 12: case 13: case 34: case 92: - result += Escapes[charCode]; - break; - default: - if (charCode < 32) { - result += unicodePrefix + toPaddedString(2, charCode.toString(16)); - break; - } - result += useCharIndex ? symbols[index] : value.charAt(index); - } - } - return result + '"'; - }; - - // Internal: Recursively serializes an object. Implements the - // `Str(key, holder)`, `JO(value)`, and `JA(value)` operations. - var serialize = function (property, object, callback, properties, whitespace, indentation, stack) { - var value, className, year, month, date, time, hours, minutes, seconds, milliseconds, results, element, index, length, prefix, result; - try { - // Necessary for host object support. - value = object[property]; - } catch (exception) {} - if (typeof value == "object" && value) { - className = getClass.call(value); - if (className == dateClass && !isProperty.call(value, "toJSON")) { - if (value > -1 / 0 && value < 1 / 0) { - // Dates are serialized according to the `Date#toJSON` method - // specified in ES 5.1 section 15.9.5.44. See section 15.9.1.15 - // for the ISO 8601 date time string format. - if (getDay) { - // Manually compute the year, month, date, hours, minutes, - // seconds, and milliseconds if the `getUTC*` methods are - // buggy. Adapted from @Yaffle's `date-shim` project. - date = floor(value / 864e5); - for (year = floor(date / 365.2425) + 1970 - 1; getDay(year + 1, 0) <= date; year++); - for (month = floor((date - getDay(year, 0)) / 30.42); getDay(year, month + 1) <= date; month++); - date = 1 + date - getDay(year, month); - // The `time` value specifies the time within the day (see ES - // 5.1 section 15.9.1.2). The formula `(A % B + B) % B` is used - // to compute `A modulo B`, as the `%` operator does not - // correspond to the `modulo` operation for negative numbers. - time = (value % 864e5 + 864e5) % 864e5; - // The hours, minutes, seconds, and milliseconds are obtained by - // decomposing the time within the day. See section 15.9.1.10. - hours = floor(time / 36e5) % 24; - minutes = floor(time / 6e4) % 60; - seconds = floor(time / 1e3) % 60; - milliseconds = time % 1e3; - } else { - year = value.getUTCFullYear(); - month = value.getUTCMonth(); - date = value.getUTCDate(); - hours = value.getUTCHours(); - minutes = value.getUTCMinutes(); - seconds = value.getUTCSeconds(); - milliseconds = value.getUTCMilliseconds(); - } - // Serialize extended years correctly. - value = (year <= 0 || year >= 1e4 ? (year < 0 ? "-" : "+") + toPaddedString(6, year < 0 ? -year : year) : toPaddedString(4, year)) + - "-" + toPaddedString(2, month + 1) + "-" + toPaddedString(2, date) + - // Months, dates, hours, minutes, and seconds should have two - // digits; milliseconds should have three. - "T" + toPaddedString(2, hours) + ":" + toPaddedString(2, minutes) + ":" + toPaddedString(2, seconds) + - // Milliseconds are optional in ES 5.0, but required in 5.1. - "." + toPaddedString(3, milliseconds) + "Z"; - } else { - value = null; - } - } else if (typeof value.toJSON == "function" && ((className != numberClass && className != stringClass && className != arrayClass) || isProperty.call(value, "toJSON"))) { - // Prototype <= 1.6.1 adds non-standard `toJSON` methods to the - // `Number`, `String`, `Date`, and `Array` prototypes. JSON 3 - // ignores all `toJSON` methods on these objects unless they are - // defined directly on an instance. - value = value.toJSON(property); - } - } - if (callback) { - // If a replacement function was provided, call it to obtain the value - // for serialization. - value = callback.call(object, property, value); - } - if (value === null) { - return "null"; - } - className = getClass.call(value); - if (className == booleanClass) { - // Booleans are represented literally. - return "" + value; - } else if (className == numberClass) { - // JSON numbers must be finite. `Infinity` and `NaN` are serialized as - // `"null"`. - return value > -1 / 0 && value < 1 / 0 ? "" + value : "null"; - } else if (className == stringClass) { - // Strings are double-quoted and escaped. - return quote("" + value); - } - // Recursively serialize objects and arrays. - if (typeof value == "object") { - // Check for cyclic structures. This is a linear search; performance - // is inversely proportional to the number of unique nested objects. - for (length = stack.length; length--;) { - if (stack[length] === value) { - // Cyclic structures cannot be serialized by `JSON.stringify`. - throw TypeError(); - } - } - // Add the object to the stack of traversed objects. - stack.push(value); - results = []; - // Save the current indentation level and indent one additional level. - prefix = indentation; - indentation += whitespace; - if (className == arrayClass) { - // Recursively serialize array elements. - for (index = 0, length = value.length; index < length; index++) { - element = serialize(index, value, callback, properties, whitespace, indentation, stack); - results.push(element === undef ? "null" : element); - } - result = results.length ? (whitespace ? "[\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "]" : ("[" + results.join(",") + "]")) : "[]"; - } else { - // Recursively serialize object members. Members are selected from - // either a user-specified list of property names, or the object - // itself. - forEach(properties || value, function (property) { - var element = serialize(property, value, callback, properties, whitespace, indentation, stack); - if (element !== undef) { - // According to ES 5.1 section 15.12.3: "If `gap` {whitespace} - // is not the empty string, let `member` {quote(property) + ":"} - // be the concatenation of `member` and the `space` character." - // The "`space` character" refers to the literal space - // character, not the `space` {width} argument provided to - // `JSON.stringify`. - results.push(quote(property) + ":" + (whitespace ? " " : "") + element); - } - }); - result = results.length ? (whitespace ? "{\n" + indentation + results.join(",\n" + indentation) + "\n" + prefix + "}" : ("{" + results.join(",") + "}")) : "{}"; - } - // Remove the object from the traversed object stack. - stack.pop(); - return result; - } - }; - - // Public: `JSON.stringify`. See ES 5.1 section 15.12.3. - exports.stringify = function (source, filter, width) { - var whitespace, callback, properties, className; - if (objectTypes[typeof filter] && filter) { - if ((className = getClass.call(filter)) == functionClass) { - callback = filter; - } else if (className == arrayClass) { - // Convert the property names array into a makeshift set. - properties = {}; - for (var index = 0, length = filter.length, value; index < length; value = filter[index++], ((className = getClass.call(value)), className == stringClass || className == numberClass) && (properties[value] = 1)); - } - } - if (width) { - if ((className = getClass.call(width)) == numberClass) { - // Convert the `width` to an integer and create a string containing - // `width` number of space characters. - if ((width -= width % 1) > 0) { - for (whitespace = "", width > 10 && (width = 10); whitespace.length < width; whitespace += " "); - } - } else if (className == stringClass) { - whitespace = width.length <= 10 ? width : width.slice(0, 10); - } - } - // Opera <= 7.54u2 discards the values associated with empty string keys - // (`""`) only if they are used directly within an object member list - // (e.g., `!("" in { "": 1})`). - return serialize("", (value = {}, value[""] = source, value), callback, properties, whitespace, "", []); - }; - } - - // Public: Parses a JSON source string. - if (!has("json-parse")) { - var fromCharCode = String.fromCharCode; - - // Internal: A map of escaped control characters and their unescaped - // equivalents. - var Unescapes = { - 92: "\\", - 34: '"', - 47: "/", - 98: "\b", - 116: "\t", - 110: "\n", - 102: "\f", - 114: "\r" - }; - - // Internal: Stores the parser state. - var Index, Source; - - // Internal: Resets the parser state and throws a `SyntaxError`. - var abort = function () { - Index = Source = null; - throw SyntaxError(); - }; - - // Internal: Returns the next token, or `"$"` if the parser has reached - // the end of the source string. A token may be a string, number, `null` - // literal, or Boolean literal. - var lex = function () { - var source = Source, length = source.length, value, begin, position, isSigned, charCode; - while (Index < length) { - charCode = source.charCodeAt(Index); - switch (charCode) { - case 9: case 10: case 13: case 32: - // Skip whitespace tokens, including tabs, carriage returns, line - // feeds, and space characters. - Index++; - break; - case 123: case 125: case 91: case 93: case 58: case 44: - // Parse a punctuator token (`{`, `}`, `[`, `]`, `:`, or `,`) at - // the current position. - value = charIndexBuggy ? source.charAt(Index) : source[Index]; - Index++; - return value; - case 34: - // `"` delimits a JSON string; advance to the next character and - // begin parsing the string. String tokens are prefixed with the - // sentinel `@` character to distinguish them from punctuators and - // end-of-string tokens. - for (value = "@", Index++; Index < length;) { - charCode = source.charCodeAt(Index); - if (charCode < 32) { - // Unescaped ASCII control characters (those with a code unit - // less than the space character) are not permitted. - abort(); - } else if (charCode == 92) { - // A reverse solidus (`\`) marks the beginning of an escaped - // control character (including `"`, `\`, and `/`) or Unicode - // escape sequence. - charCode = source.charCodeAt(++Index); - switch (charCode) { - case 92: case 34: case 47: case 98: case 116: case 110: case 102: case 114: - // Revive escaped control characters. - value += Unescapes[charCode]; - Index++; - break; - case 117: - // `\u` marks the beginning of a Unicode escape sequence. - // Advance to the first character and validate the - // four-digit code point. - begin = ++Index; - for (position = Index + 4; Index < position; Index++) { - charCode = source.charCodeAt(Index); - // A valid sequence comprises four hexdigits (case- - // insensitive) that form a single hexadecimal value. - if (!(charCode >= 48 && charCode <= 57 || charCode >= 97 && charCode <= 102 || charCode >= 65 && charCode <= 70)) { - // Invalid Unicode escape sequence. - abort(); - } - } - // Revive the escaped character. - value += fromCharCode("0x" + source.slice(begin, Index)); - break; - default: - // Invalid escape sequence. - abort(); - } - } else { - if (charCode == 34) { - // An unescaped double-quote character marks the end of the - // string. - break; - } - charCode = source.charCodeAt(Index); - begin = Index; - // Optimize for the common case where a string is valid. - while (charCode >= 32 && charCode != 92 && charCode != 34) { - charCode = source.charCodeAt(++Index); - } - // Append the string as-is. - value += source.slice(begin, Index); - } - } - if (source.charCodeAt(Index) == 34) { - // Advance to the next character and return the revived string. - Index++; - return value; - } - // Unterminated string. - abort(); - default: - // Parse numbers and literals. - begin = Index; - // Advance past the negative sign, if one is specified. - if (charCode == 45) { - isSigned = true; - charCode = source.charCodeAt(++Index); - } - // Parse an integer or floating-point value. - if (charCode >= 48 && charCode <= 57) { - // Leading zeroes are interpreted as octal literals. - if (charCode == 48 && ((charCode = source.charCodeAt(Index + 1)), charCode >= 48 && charCode <= 57)) { - // Illegal octal literal. - abort(); - } - isSigned = false; - // Parse the integer component. - for (; Index < length && ((charCode = source.charCodeAt(Index)), charCode >= 48 && charCode <= 57); Index++); - // Floats cannot contain a leading decimal point; however, this - // case is already accounted for by the parser. - if (source.charCodeAt(Index) == 46) { - position = ++Index; - // Parse the decimal component. - for (; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++); - if (position == Index) { - // Illegal trailing decimal. - abort(); - } - Index = position; - } - // Parse exponents. The `e` denoting the exponent is - // case-insensitive. - charCode = source.charCodeAt(Index); - if (charCode == 101 || charCode == 69) { - charCode = source.charCodeAt(++Index); - // Skip past the sign following the exponent, if one is - // specified. - if (charCode == 43 || charCode == 45) { - Index++; - } - // Parse the exponential component. - for (position = Index; position < length && ((charCode = source.charCodeAt(position)), charCode >= 48 && charCode <= 57); position++); - if (position == Index) { - // Illegal empty exponent. - abort(); - } - Index = position; - } - // Coerce the parsed value to a JavaScript number. - return +source.slice(begin, Index); - } - // A negative sign may only precede numbers. - if (isSigned) { - abort(); - } - // `true`, `false`, and `null` literals. - if (source.slice(Index, Index + 4) == "true") { - Index += 4; - return true; - } else if (source.slice(Index, Index + 5) == "false") { - Index += 5; - return false; - } else if (source.slice(Index, Index + 4) == "null") { - Index += 4; - return null; - } - // Unrecognized token. - abort(); - } - } - // Return the sentinel `$` character if the parser has reached the end - // of the source string. - return "$"; - }; - - // Internal: Parses a JSON `value` token. - var get = function (value) { - var results, hasMembers; - if (value == "$") { - // Unexpected end of input. - abort(); - } - if (typeof value == "string") { - if ((charIndexBuggy ? value.charAt(0) : value[0]) == "@") { - // Remove the sentinel `@` character. - return value.slice(1); - } - // Parse object and array literals. - if (value == "[") { - // Parses a JSON array, returning a new JavaScript array. - results = []; - for (;; hasMembers || (hasMembers = true)) { - value = lex(); - // A closing square bracket marks the end of the array literal. - if (value == "]") { - break; - } - // If the array literal contains elements, the current token - // should be a comma separating the previous element from the - // next. - if (hasMembers) { - if (value == ",") { - value = lex(); - if (value == "]") { - // Unexpected trailing `,` in array literal. - abort(); - } - } else { - // A `,` must separate each array element. - abort(); - } - } - // Elisions and leading commas are not permitted. - if (value == ",") { - abort(); - } - results.push(get(value)); - } - return results; - } else if (value == "{") { - // Parses a JSON object, returning a new JavaScript object. - results = {}; - for (;; hasMembers || (hasMembers = true)) { - value = lex(); - // A closing curly brace marks the end of the object literal. - if (value == "}") { - break; - } - // If the object literal contains members, the current token - // should be a comma separator. - if (hasMembers) { - if (value == ",") { - value = lex(); - if (value == "}") { - // Unexpected trailing `,` in object literal. - abort(); - } - } else { - // A `,` must separate each object member. - abort(); - } - } - // Leading commas are not permitted, object property names must be - // double-quoted strings, and a `:` must separate each property - // name and value. - if (value == "," || typeof value != "string" || (charIndexBuggy ? value.charAt(0) : value[0]) != "@" || lex() != ":") { - abort(); - } - results[value.slice(1)] = get(lex()); - } - return results; - } - // Unexpected token encountered. - abort(); - } - return value; - }; - - // Internal: Updates a traversed object member. - var update = function (source, property, callback) { - var element = walk(source, property, callback); - if (element === undef) { - delete source[property]; - } else { - source[property] = element; - } - }; - - // Internal: Recursively traverses a parsed JSON object, invoking the - // `callback` function for each value. This is an implementation of the - // `Walk(holder, name)` operation defined in ES 5.1 section 15.12.2. - var walk = function (source, property, callback) { - var value = source[property], length; - if (typeof value == "object" && value) { - // `forEach` can't be used to traverse an array in Opera <= 8.54 - // because its `Object#hasOwnProperty` implementation returns `false` - // for array indices (e.g., `![1, 2, 3].hasOwnProperty("0")`). - if (getClass.call(value) == arrayClass) { - for (length = value.length; length--;) { - update(value, length, callback); - } - } else { - forEach(value, function (property) { - update(value, property, callback); - }); - } - } - return callback.call(source, property, value); - }; - - // Public: `JSON.parse`. See ES 5.1 section 15.12.2. - exports.parse = function (source, callback) { - var result, value; - Index = 0; - Source = "" + source; - result = get(lex()); - // If a JSON string contains multiple tokens, it is invalid. - if (lex() != "$") { - abort(); - } - // Reset the parser state. - Index = Source = null; - return callback && getClass.call(callback) == functionClass ? walk((value = {}, value[""] = result, value), "", callback) : result; - }; - } - } - - exports["runInContext"] = runInContext; - return exports; - } - - if (freeExports && !isLoader) { - // Export for CommonJS environments. - runInContext(root, freeExports); - } else { - // Export for web browsers and JavaScript engines. - var nativeJSON = root.JSON, - previousJSON = root["JSON3"], - isRestored = false; - - var JSON3 = runInContext(root, (root["JSON3"] = { - // Public: Restores the original value of the global `JSON` object and - // returns a reference to the `JSON3` object. - "noConflict": function () { - if (!isRestored) { - isRestored = true; - root.JSON = nativeJSON; - root["JSON3"] = previousJSON; - nativeJSON = previousJSON = null; - } - return JSON3; - } - })); - - root.JSON = { - "parse": JSON3.parse, - "stringify": JSON3.stringify - }; - } - - // Export for asynchronous module loaders. - if (isLoader) { - define(function () { - return JSON3; - }); - } -}).call(this); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],55:[function(require,module,exports){ -/** - * lodash 3.2.0 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseCopy = require('lodash._basecopy'), - keys = require('lodash.keys'); - -/** - * The base implementation of `_.assign` without support for argument juggling, - * multiple sources, and `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ -function baseAssign(object, source) { - return source == null - ? object - : baseCopy(source, keys(source), object); -} - -module.exports = baseAssign; - -},{"lodash._basecopy":56,"lodash.keys":63}],56:[function(require,module,exports){ -/** - * lodash 3.0.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property names to copy. - * @param {Object} [object={}] The object to copy properties to. - * @returns {Object} Returns `object`. - */ -function baseCopy(source, props, object) { - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - object[key] = source[key]; - } - return object; -} - -module.exports = baseCopy; - -},{}],57:[function(require,module,exports){ -/** - * lodash 3.0.3 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ -var baseCreate = (function() { - function object() {} - return function(prototype) { - if (isObject(prototype)) { - object.prototype = prototype; - var result = new object; - object.prototype = undefined; - } - return result || {}; - }; -}()); - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -module.exports = baseCreate; - -},{}],58:[function(require,module,exports){ -/** - * lodash 3.9.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** `Object#toString` result references. */ -var funcTag = '[object Function]'; - -/** Used to detect host constructors (Safari > 5). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** - * Checks if `value` is object-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var fnToString = Function.prototype.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = object == null ? undefined : object[key]; - return isNative(value) ? value : undefined; -} - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return isObject(value) && objToString.call(value) == funcTag; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is a native function. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ -function isNative(value) { - if (value == null) { - return false; - } - if (isFunction(value)) { - return reIsNative.test(fnToString.call(value)); - } - return isObjectLike(value) && reIsHostCtor.test(value); -} - -module.exports = getNative; - -},{}],59:[function(require,module,exports){ -/** - * lodash 3.0.9 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** Used to detect unsigned integer values. */ -var reIsUint = /^\d+$/; - -/** - * Used as the [maximum length](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) - * of an array-like value. - */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -/** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) - * that affects Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ -var getLength = baseProperty('length'); - -/** - * Checks if `value` is array-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - */ -function isArrayLike(value) { - return value != null && isLength(getLength(value)); -} - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; - length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; -} - -/** - * Checks if the provided arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. - */ -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object)) { - var other = object[index]; - return value === value ? (value === other) : (other !== other); - } - return false; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on [`ToLength`](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength). - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ -function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -module.exports = isIterateeCall; - -},{}],60:[function(require,module,exports){ -/** - * lodash 3.1.1 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var baseAssign = require('lodash._baseassign'), - baseCreate = require('lodash._basecreate'), - isIterateeCall = require('lodash._isiterateecall'); - -/** - * Creates an object that inherits from the given `prototype` object. If a - * `properties` object is provided its own enumerable properties are assigned - * to the created object. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ -function create(prototype, properties, guard) { - var result = baseCreate(prototype); - if (guard && isIterateeCall(prototype, properties, guard)) { - properties = undefined; - } - return properties ? baseAssign(result, properties) : result; -} - -module.exports = create; - -},{"lodash._baseassign":55,"lodash._basecreate":57,"lodash._isiterateecall":59}],61:[function(require,module,exports){ -/** - * lodash (Custom Build) - * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ - -/** Used as references for various `Number` constants. */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** `Object#toString` result references. */ -var argsTag = '[object Arguments]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]'; - -/** Used for built-in method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ -var objectToString = objectProto.toString; - -/** Built-in value references. */ -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - -/** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ -function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && - (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); -} - -/** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ -function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); -} - -/** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ -function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); -} - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ -function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ -function isObject(value) { - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -module.exports = isArguments; - -},{}],62:[function(require,module,exports){ -/** - * lodash 3.0.4 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ - -/** `Object#toString` result references. */ -var arrayTag = '[object Array]', - funcTag = '[object Function]'; - -/** Used to detect host constructors (Safari > 5). */ -var reIsHostCtor = /^\[object .+?Constructor\]$/; - -/** - * Checks if `value` is object-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - */ -function isObjectLike(value) { - return !!value && typeof value == 'object'; -} - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to resolve the decompiled source of functions. */ -var fnToString = Function.prototype.toString; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Used to resolve the [`toStringTag`](http://ecma-international.org/ecma-262/6.0/#sec-object.prototype.tostring) - * of values. - */ -var objToString = objectProto.toString; - -/** Used to detect if a method is native. */ -var reIsNative = RegExp('^' + - fnToString.call(hasOwnProperty).replace(/[\\^$.*+?()[\]{}|]/g, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeIsArray = getNative(Array, 'isArray'); - -/** - * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) - * of an array-like value. - */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ -function getNative(object, key) { - var value = object == null ? undefined : object[key]; - return isNative(value) ? value : undefined; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ -function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(function() { return arguments; }()); - * // => false - */ -var isArray = nativeIsArray || function(value) { - return isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag; -}; - -/** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ -function isFunction(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return isObject(value) && objToString.call(value) == funcTag; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Checks if `value` is a native function. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ -function isNative(value) { - if (value == null) { - return false; - } - if (isFunction(value)) { - return reIsNative.test(fnToString.call(value)); - } - return isObjectLike(value) && reIsHostCtor.test(value); -} - -module.exports = isArray; - -},{}],63:[function(require,module,exports){ -/** - * lodash 3.1.2 (Custom Build) - * Build: `lodash modern modularize exports="npm" -o ./` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.3 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -var getNative = require('lodash._getnative'), - isArguments = require('lodash.isarguments'), - isArray = require('lodash.isarray'); - -/** Used to detect unsigned integer values. */ -var reIsUint = /^\d+$/; - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeKeys = getNative(Object, 'keys'); - -/** - * Used as the [maximum length](http://ecma-international.org/ecma-262/6.0/#sec-number.max_safe_integer) - * of an array-like value. - */ -var MAX_SAFE_INTEGER = 9007199254740991; - -/** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. - */ -function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; -} - -/** - * Gets the "length" property value of `object`. - * - * **Note:** This function is used to avoid a [JIT bug](https://bugs.webkit.org/show_bug.cgi?id=142792) - * that affects Safari on at least iOS 8.1-8.3 ARM64. - * - * @private - * @param {Object} object The object to query. - * @returns {*} Returns the "length" value. - */ -var getLength = baseProperty('length'); - -/** - * Checks if `value` is array-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - */ -function isArrayLike(value) { - return value != null && isLength(getLength(value)); -} - -/** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ -function isIndex(value, length) { - value = (typeof value == 'number' || reIsUint.test(value)) ? +value : -1; - length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; -} - -/** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on [`ToLength`](http://ecma-international.org/ecma-262/6.0/#sec-tolength). - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ -function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -/** - * A fallback implementation of `Object.keys` which creates an array of the - * own enumerable property names of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ -function shimKeys(object) { - var props = keysIn(object), - propsLength = props.length, - length = propsLength && object.length; - - var allowIndexes = !!length && isLength(length) && - (isArray(object) || isArguments(object)); - - var index = -1, - result = []; - - while (++index < propsLength) { - var key = props[index]; - if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { - result.push(key); - } - } - return result; -} - -/** - * Checks if `value` is the [language type](https://es5.github.io/#x8) of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ -function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return !!value && (type == 'object' || type == 'function'); -} - -/** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/6.0/#sec-object.keys) - * for more details. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ -var keys = !nativeKeys ? shimKeys : function(object) { - var Ctor = object == null ? undefined : object.constructor; - if ((typeof Ctor == 'function' && Ctor.prototype === object) || - (typeof object != 'function' && isArrayLike(object))) { - return shimKeys(object); - } - return isObject(object) ? nativeKeys(object) : []; -}; - -/** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ -function keysIn(object) { - if (object == null) { - return []; - } - if (!isObject(object)) { - object = Object(object); - } - var length = object.length; - length = (length && isLength(length) && - (isArray(object) || isArguments(object)) && length) || 0; - - var Ctor = object.constructor, - index = -1, - isProto = typeof Ctor == 'function' && Ctor.prototype === object, - result = Array(length), - skipIndexes = length > 0; - - while (++index < length) { - result[index] = (index + ''); - } - for (var key in object) { - if (!(skipIndexes && isIndex(key, length)) && - !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; -} - -module.exports = keys; - -},{"lodash._getnative":58,"lodash.isarguments":61,"lodash.isarray":62}],64:[function(require,module,exports){ -(function (process){ -var path = require('path'); -var fs = require('fs'); -var _0777 = parseInt('0777', 8); - -module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP; - -function mkdirP (p, opts, f, made) { - if (typeof opts === 'function') { - f = opts; - opts = {}; - } - else if (!opts || typeof opts !== 'object') { - opts = { mode: opts }; - } - - var mode = opts.mode; - var xfs = opts.fs || fs; - - if (mode === undefined) { - mode = _0777 & (~process.umask()); - } - if (!made) made = null; - - var cb = f || function () {}; - p = path.resolve(p); - - xfs.mkdir(p, mode, function (er) { - if (!er) { - made = made || p; - return cb(null, made); - } - switch (er.code) { - case 'ENOENT': - mkdirP(path.dirname(p), opts, function (er, made) { - if (er) cb(er, made); - else mkdirP(p, opts, cb, made); - }); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - xfs.stat(p, function (er2, stat) { - // if the stat fails, then that's super weird. - // let the original error be the failure reason. - if (er2 || !stat.isDirectory()) cb(er, made) - else cb(null, made); - }); - break; - } - }); -} - -mkdirP.sync = function sync (p, opts, made) { - if (!opts || typeof opts !== 'object') { - opts = { mode: opts }; - } - - var mode = opts.mode; - var xfs = opts.fs || fs; - - if (mode === undefined) { - mode = _0777 & (~process.umask()); - } - if (!made) made = null; - - p = path.resolve(p); - - try { - xfs.mkdirSync(p, mode); - made = made || p; - } - catch (err0) { - switch (err0.code) { - case 'ENOENT' : - made = sync(path.dirname(p), opts, made); - sync(p, opts, made); - break; - - // In the case of any other error, just see if there's a dir - // there already. If so, then hooray! If not, then something - // is borked. - default: - var stat; - try { - stat = xfs.statSync(p); - } - catch (err1) { - throw err0; - } - if (!stat.isDirectory()) throw err0; - break; - } - } - - return made; -}; - -}).call(this,require('_process')) -},{"_process":67,"fs":42,"path":42}],65:[function(require,module,exports){ -exports.endianness = function () { return 'LE' }; - -exports.hostname = function () { - if (typeof location !== 'undefined') { - return location.hostname - } - else return ''; -}; - -exports.loadavg = function () { return [] }; - -exports.uptime = function () { return 0 }; - -exports.freemem = function () { - return Number.MAX_VALUE; -}; - -exports.totalmem = function () { - return Number.MAX_VALUE; -}; - -exports.cpus = function () { return [] }; - -exports.type = function () { return 'Browser' }; - -exports.release = function () { - if (typeof navigator !== 'undefined') { - return navigator.appVersion; - } - return ''; -}; - -exports.networkInterfaces -= exports.getNetworkInterfaces -= function () { return {} }; - -exports.arch = function () { return 'javascript' }; - -exports.platform = function () { return 'browser' }; - -exports.tmpdir = exports.tmpDir = function () { - return '/tmp'; -}; - -exports.EOL = '\n'; - -},{}],66:[function(require,module,exports){ -(function (process){ -'use strict'; - -if (!process.version || - process.version.indexOf('v0.') === 0 || - process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) { - module.exports = nextTick; -} else { - module.exports = process.nextTick; -} - -function nextTick(fn, arg1, arg2, arg3) { - if (typeof fn !== 'function') { - throw new TypeError('"callback" argument must be a function'); - } - var len = arguments.length; - var args, i; - switch (len) { - case 0: - case 1: - return process.nextTick(fn); - case 2: - return process.nextTick(function afterTickOne() { - fn.call(null, arg1); - }); - case 3: - return process.nextTick(function afterTickTwo() { - fn.call(null, arg1, arg2); - }); - case 4: - return process.nextTick(function afterTickThree() { - fn.call(null, arg1, arg2, arg3); - }); - default: - args = new Array(len - 1); - i = 0; - while (i < args.length) { - args[i++] = arguments[i]; - } - return process.nextTick(function afterTick() { - fn.apply(null, args); - }); - } -} - -}).call(this,require('_process')) -},{"_process":67}],67:[function(require,module,exports){ -// shim for using process in browser -var process = module.exports = {}; - -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],68:[function(require,module,exports){ -module.exports = require("./lib/_stream_duplex.js") - -},{"./lib/_stream_duplex.js":69}],69:[function(require,module,exports){ -// a duplex stream is just a stream that is both readable and writable. -// Since JS doesn't have multiple prototypal inheritance, this class -// prototypally inherits from Readable, and then parasitically from -// Writable. - -'use strict'; - -/**/ - -var objectKeys = Object.keys || function (obj) { - var keys = []; - for (var key in obj) { - keys.push(key); - }return keys; -}; -/**/ - -module.exports = Duplex; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -var Readable = require('./_stream_readable'); -var Writable = require('./_stream_writable'); - -util.inherits(Duplex, Readable); - -var keys = objectKeys(Writable.prototype); -for (var v = 0; v < keys.length; v++) { - var method = keys[v]; - if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method]; -} - -function Duplex(options) { - if (!(this instanceof Duplex)) return new Duplex(options); - - Readable.call(this, options); - Writable.call(this, options); - - if (options && options.readable === false) this.readable = false; - - if (options && options.writable === false) this.writable = false; - - this.allowHalfOpen = true; - if (options && options.allowHalfOpen === false) this.allowHalfOpen = false; - - this.once('end', onend); -} - -// the no-half-open enforcer -function onend() { - // if we allow half-open state, or if the writable side ended, - // then we're ok. - if (this.allowHalfOpen || this._writableState.ended) return; - - // no more data can be written. - // But allow more writes to happen in this tick. - processNextTick(onEndNT, this); -} - -function onEndNT(self) { - self.end(); -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} -},{"./_stream_readable":71,"./_stream_writable":73,"core-util-is":45,"inherits":51,"process-nextick-args":66}],70:[function(require,module,exports){ -// a passthrough stream. -// basically just the most minimal sort of Transform stream. -// Every written chunk gets output as-is. - -'use strict'; - -module.exports = PassThrough; - -var Transform = require('./_stream_transform'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(PassThrough, Transform); - -function PassThrough(options) { - if (!(this instanceof PassThrough)) return new PassThrough(options); - - Transform.call(this, options); -} - -PassThrough.prototype._transform = function (chunk, encoding, cb) { - cb(null, chunk); -}; -},{"./_stream_transform":72,"core-util-is":45,"inherits":51}],71:[function(require,module,exports){ -(function (process){ -'use strict'; - -module.exports = Readable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var isArray = require('isarray'); -/**/ - -Readable.ReadableState = ReadableState; - -/**/ -var EE = require('events').EventEmitter; - -var EElistenerCount = function (emitter, type) { - return emitter.listeners(type).length; -}; -/**/ - -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ - -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var debugUtil = require('util'); -var debug = void 0; -if (debugUtil && debugUtil.debuglog) { - debug = debugUtil.debuglog('stream'); -} else { - debug = function () {}; -} -/**/ - -var BufferList = require('./internal/streams/BufferList'); -var StringDecoder; - -util.inherits(Readable, Stream); - -function prependListener(emitter, event, fn) { - if (typeof emitter.prependListener === 'function') { - return emitter.prependListener(event, fn); - } else { - // This is a hack to make sure that our error handler is attached before any - // userland ones. NEVER DO THIS. This is here only because this code needs - // to continue to work with older versions of Node.js that do not include - // the prependListener() method. The goal is to eventually remove this hack. - if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]]; - } -} - -var Duplex; -function ReadableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // object stream flag. Used to make read(n) ignore n and to - // make all the buffer merging and length checks go away - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode; - - // the point at which it stops calling _read() to fill the buffer - // Note: 0 is a valid value, means "don't call _read preemptively ever" - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - // A linked list is used to store data chunks instead of an array because the - // linked list can remove elements from the beginning faster than - // array.shift() - this.buffer = new BufferList(); - this.length = 0; - this.pipes = null; - this.pipesCount = 0; - this.flowing = null; - this.ended = false; - this.endEmitted = false; - this.reading = false; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // whenever we return null, then we set a flag to say - // that we're awaiting a 'readable' event emission. - this.needReadable = false; - this.emittedReadable = false; - this.readableListening = false; - this.resumeScheduled = false; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // when piping, we only care about 'readable' events that happen - // after read()ing all the bytes and not getting any pushback. - this.ranOut = false; - - // the number of writers that are awaiting a drain event in .pipe()s - this.awaitDrain = 0; - - // if true, a maybeReadMore has been scheduled - this.readingMore = false; - - this.decoder = null; - this.encoding = null; - if (options.encoding) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this.decoder = new StringDecoder(options.encoding); - this.encoding = options.encoding; - } -} - -var Duplex; -function Readable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - if (!(this instanceof Readable)) return new Readable(options); - - this._readableState = new ReadableState(options, this); - - // legacy - this.readable = true; - - if (options && typeof options.read === 'function') this._read = options.read; - - Stream.call(this); -} - -// Manually shove something into the read() buffer. -// This returns true if the highWaterMark has not been hit yet, -// similar to how Writable.write() returns true if you should -// write() some more. -Readable.prototype.push = function (chunk, encoding) { - var state = this._readableState; - - if (!state.objectMode && typeof chunk === 'string') { - encoding = encoding || state.defaultEncoding; - if (encoding !== state.encoding) { - chunk = bufferShim.from(chunk, encoding); - encoding = ''; - } - } - - return readableAddChunk(this, state, chunk, encoding, false); -}; - -// Unshift should *always* be something directly out of read() -Readable.prototype.unshift = function (chunk) { - var state = this._readableState; - return readableAddChunk(this, state, chunk, '', true); -}; - -Readable.prototype.isPaused = function () { - return this._readableState.flowing === false; -}; - -function readableAddChunk(stream, state, chunk, encoding, addToFront) { - var er = chunkInvalid(state, chunk); - if (er) { - stream.emit('error', er); - } else if (chunk === null) { - state.reading = false; - onEofChunk(stream, state); - } else if (state.objectMode || chunk && chunk.length > 0) { - if (state.ended && !addToFront) { - var e = new Error('stream.push() after EOF'); - stream.emit('error', e); - } else if (state.endEmitted && addToFront) { - var _e = new Error('stream.unshift() after end event'); - stream.emit('error', _e); - } else { - var skipAdd; - if (state.decoder && !addToFront && !encoding) { - chunk = state.decoder.write(chunk); - skipAdd = !state.objectMode && chunk.length === 0; - } - - if (!addToFront) state.reading = false; - - // Don't add to the buffer if we've decoded to an empty string chunk and - // we're not in object mode - if (!skipAdd) { - // if we want the data now, just emit it. - if (state.flowing && state.length === 0 && !state.sync) { - stream.emit('data', chunk); - stream.read(0); - } else { - // update the buffer info. - state.length += state.objectMode ? 1 : chunk.length; - if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk); - - if (state.needReadable) emitReadable(stream); - } - } - - maybeReadMore(stream, state); - } - } else if (!addToFront) { - state.reading = false; - } - - return needMoreData(state); -} - -// if it's past the high water mark, we can push in some more. -// Also, if we have no data yet, we can stand some -// more bytes. This is to work around cases where hwm=0, -// such as the repl. Also, if the push() triggered a -// readable event, and the user called read(largeNumber) such that -// needReadable was set, then we ought to push more, so that another -// 'readable' event will be triggered. -function needMoreData(state) { - return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0); -} - -// backwards compatibility. -Readable.prototype.setEncoding = function (enc) { - if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder; - this._readableState.decoder = new StringDecoder(enc); - this._readableState.encoding = enc; - return this; -}; - -// Don't raise the hwm > 8MB -var MAX_HWM = 0x800000; -function computeNewHighWaterMark(n) { - if (n >= MAX_HWM) { - n = MAX_HWM; - } else { - // Get the next highest power of 2 to prevent increasing hwm excessively in - // tiny amounts - n--; - n |= n >>> 1; - n |= n >>> 2; - n |= n >>> 4; - n |= n >>> 8; - n |= n >>> 16; - n++; - } - return n; -} - -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function howMuchToRead(n, state) { - if (n <= 0 || state.length === 0 && state.ended) return 0; - if (state.objectMode) return 1; - if (n !== n) { - // Only flow one buffer at a time - if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length; - } - // If we're asking for more than the current hwm, then raise the hwm. - if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n); - if (n <= state.length) return n; - // Don't have enough - if (!state.ended) { - state.needReadable = true; - return 0; - } - return state.length; -} - -// you can override either this method, or the async _read(n) below. -Readable.prototype.read = function (n) { - debug('read', n); - n = parseInt(n, 10); - var state = this._readableState; - var nOrig = n; - - if (n !== 0) state.emittedReadable = false; - - // if we're doing read(0) to trigger a readable event, but we - // already have a bunch of data in the buffer, then just trigger - // the 'readable' event and move on. - if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) { - debug('read: emitReadable', state.length, state.ended); - if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this); - return null; - } - - n = howMuchToRead(n, state); - - // if we've ended, and we're now clear, then finish it up. - if (n === 0 && state.ended) { - if (state.length === 0) endReadable(this); - return null; - } - - // All the actual chunk generation logic needs to be - // *below* the call to _read. The reason is that in certain - // synthetic stream cases, such as passthrough streams, _read - // may be a completely synchronous operation which may change - // the state of the read buffer, providing enough data when - // before there was *not* enough. - // - // So, the steps are: - // 1. Figure out what the state of things will be after we do - // a read from the buffer. - // - // 2. If that resulting state will trigger a _read, then call _read. - // Note that this may be asynchronous, or synchronous. Yes, it is - // deeply ugly to write APIs this way, but that still doesn't mean - // that the Readable class should behave improperly, as streams are - // designed to be sync/async agnostic. - // Take note if the _read call is sync or async (ie, if the read call - // has returned yet), so that we know whether or not it's safe to emit - // 'readable' etc. - // - // 3. Actually pull the requested chunks out of the buffer and return. - - // if we need a readable event, then we need to do some reading. - var doRead = state.needReadable; - debug('need readable', doRead); - - // if we currently have less than the highWaterMark, then also read some - if (state.length === 0 || state.length - n < state.highWaterMark) { - doRead = true; - debug('length less than watermark', doRead); - } - - // however, if we've ended, then there's no point, and if we're already - // reading, then it's unnecessary. - if (state.ended || state.reading) { - doRead = false; - debug('reading or ended', doRead); - } else if (doRead) { - debug('do read'); - state.reading = true; - state.sync = true; - // if the length is currently zero, then we *need* a readable event. - if (state.length === 0) state.needReadable = true; - // call internal read method - this._read(state.highWaterMark); - state.sync = false; - // If _read pushed data synchronously, then `reading` will be false, - // and we need to re-evaluate how much data we can return to the user. - if (!state.reading) n = howMuchToRead(nOrig, state); - } - - var ret; - if (n > 0) ret = fromList(n, state);else ret = null; - - if (ret === null) { - state.needReadable = true; - n = 0; - } else { - state.length -= n; - } - - if (state.length === 0) { - // If we have nothing in the buffer, then we want to know - // as soon as we *do* get something into the buffer. - if (!state.ended) state.needReadable = true; - - // If we tried to read() past the EOF, then emit end on the next tick. - if (nOrig !== n && state.ended) endReadable(this); - } - - if (ret !== null) this.emit('data', ret); - - return ret; -}; - -function chunkInvalid(state, chunk) { - var er = null; - if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - return er; -} - -function onEofChunk(stream, state) { - if (state.ended) return; - if (state.decoder) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) { - state.buffer.push(chunk); - state.length += state.objectMode ? 1 : chunk.length; - } - } - state.ended = true; - - // emit 'readable' now to make sure it gets picked up. - emitReadable(stream); -} - -// Don't emit readable right away in sync mode, because this can trigger -// another read() call => stack overflow. This way, it might trigger -// a nextTick recursion warning, but that's not so bad. -function emitReadable(stream) { - var state = stream._readableState; - state.needReadable = false; - if (!state.emittedReadable) { - debug('emitReadable', state.flowing); - state.emittedReadable = true; - if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream); - } -} - -function emitReadable_(stream) { - debug('emit readable'); - stream.emit('readable'); - flow(stream); -} - -// at this point, the user has presumably seen the 'readable' event, -// and called read() to consume some data. that may have triggered -// in turn another _read(n) call, in which case reading = true if -// it's in progress. -// However, if we're not ended, or reading, and the length < hwm, -// then go ahead and try to read some more preemptively. -function maybeReadMore(stream, state) { - if (!state.readingMore) { - state.readingMore = true; - processNextTick(maybeReadMore_, stream, state); - } -} - -function maybeReadMore_(stream, state) { - var len = state.length; - while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) { - debug('maybeReadMore read 0'); - stream.read(0); - if (len === state.length) - // didn't get any data, stop spinning. - break;else len = state.length; - } - state.readingMore = false; -} - -// abstract method. to be overridden in specific implementation classes. -// call cb(er, data) where data is <= n in length. -// for virtual (non-string, non-buffer) streams, "length" is somewhat -// arbitrary, and perhaps not very meaningful. -Readable.prototype._read = function (n) { - this.emit('error', new Error('not implemented')); -}; - -Readable.prototype.pipe = function (dest, pipeOpts) { - var src = this; - var state = this._readableState; - - switch (state.pipesCount) { - case 0: - state.pipes = dest; - break; - case 1: - state.pipes = [state.pipes, dest]; - break; - default: - state.pipes.push(dest); - break; - } - state.pipesCount += 1; - debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts); - - var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr; - - var endFn = doEnd ? onend : cleanup; - if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn); - - dest.on('unpipe', onunpipe); - function onunpipe(readable) { - debug('onunpipe'); - if (readable === src) { - cleanup(); - } - } - - function onend() { - debug('onend'); - dest.end(); - } - - // when the dest drains, it reduces the awaitDrain counter - // on the source. This would be more elegant with a .once() - // handler in flow(), but adding and removing repeatedly is - // too slow. - var ondrain = pipeOnDrain(src); - dest.on('drain', ondrain); - - var cleanedUp = false; - function cleanup() { - debug('cleanup'); - // cleanup event handlers once the pipe is broken - dest.removeListener('close', onclose); - dest.removeListener('finish', onfinish); - dest.removeListener('drain', ondrain); - dest.removeListener('error', onerror); - dest.removeListener('unpipe', onunpipe); - src.removeListener('end', onend); - src.removeListener('end', cleanup); - src.removeListener('data', ondata); - - cleanedUp = true; - - // if the reader is waiting for a drain event from this - // specific writer, then it would cause it to never start - // flowing again. - // So, if this is awaiting a drain, then we just call it now. - // If we don't know, then assume that we are waiting for one. - if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain(); - } - - // If the user pushes more data while we're writing to dest then we'll end up - // in ondata again. However, we only want to increase awaitDrain once because - // dest will only emit one 'drain' event for the multiple writes. - // => Introduce a guard on increasing awaitDrain. - var increasedAwaitDrain = false; - src.on('data', ondata); - function ondata(chunk) { - debug('ondata'); - increasedAwaitDrain = false; - var ret = dest.write(chunk); - if (false === ret && !increasedAwaitDrain) { - // If the user unpiped during `dest.write()`, it is possible - // to get stuck in a permanently paused state if that write - // also returned false. - // => Check whether `dest` is still a piping destination. - if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) { - debug('false write response, pause', src._readableState.awaitDrain); - src._readableState.awaitDrain++; - increasedAwaitDrain = true; - } - src.pause(); - } - } - - // if the dest has an error, then stop piping into it. - // however, don't suppress the throwing behavior for this. - function onerror(er) { - debug('onerror', er); - unpipe(); - dest.removeListener('error', onerror); - if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er); - } - - // Make sure our error handler is attached before userland ones. - prependListener(dest, 'error', onerror); - - // Both close and finish should trigger unpipe, but only once. - function onclose() { - dest.removeListener('finish', onfinish); - unpipe(); - } - dest.once('close', onclose); - function onfinish() { - debug('onfinish'); - dest.removeListener('close', onclose); - unpipe(); - } - dest.once('finish', onfinish); - - function unpipe() { - debug('unpipe'); - src.unpipe(dest); - } - - // tell the dest that it's being piped to - dest.emit('pipe', src); - - // start the flow if it hasn't been started already. - if (!state.flowing) { - debug('pipe resume'); - src.resume(); - } - - return dest; -}; - -function pipeOnDrain(src) { - return function () { - var state = src._readableState; - debug('pipeOnDrain', state.awaitDrain); - if (state.awaitDrain) state.awaitDrain--; - if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) { - state.flowing = true; - flow(src); - } - }; -} - -Readable.prototype.unpipe = function (dest) { - var state = this._readableState; - - // if we're not piping anywhere, then do nothing. - if (state.pipesCount === 0) return this; - - // just one destination. most common case. - if (state.pipesCount === 1) { - // passed in one, but it's not the right one. - if (dest && dest !== state.pipes) return this; - - if (!dest) dest = state.pipes; - - // got a match. - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - if (dest) dest.emit('unpipe', this); - return this; - } - - // slow case. multiple pipe destinations. - - if (!dest) { - // remove all. - var dests = state.pipes; - var len = state.pipesCount; - state.pipes = null; - state.pipesCount = 0; - state.flowing = false; - - for (var _i = 0; _i < len; _i++) { - dests[_i].emit('unpipe', this); - }return this; - } - - // try to find the right one. - var i = indexOf(state.pipes, dest); - if (i === -1) return this; - - state.pipes.splice(i, 1); - state.pipesCount -= 1; - if (state.pipesCount === 1) state.pipes = state.pipes[0]; - - dest.emit('unpipe', this); - - return this; -}; - -// set up data events if they are asked for -// Ensure readable listeners eventually get something -Readable.prototype.on = function (ev, fn) { - var res = Stream.prototype.on.call(this, ev, fn); - - if (ev === 'data') { - // Start flowing on next tick if stream isn't explicitly paused - if (this._readableState.flowing !== false) this.resume(); - } else if (ev === 'readable') { - var state = this._readableState; - if (!state.endEmitted && !state.readableListening) { - state.readableListening = state.needReadable = true; - state.emittedReadable = false; - if (!state.reading) { - processNextTick(nReadingNextTick, this); - } else if (state.length) { - emitReadable(this, state); - } - } - } - - return res; -}; -Readable.prototype.addListener = Readable.prototype.on; - -function nReadingNextTick(self) { - debug('readable nexttick read 0'); - self.read(0); -} - -// pause() and resume() are remnants of the legacy readable stream API -// If the user uses them, then switch into old mode. -Readable.prototype.resume = function () { - var state = this._readableState; - if (!state.flowing) { - debug('resume'); - state.flowing = true; - resume(this, state); - } - return this; -}; - -function resume(stream, state) { - if (!state.resumeScheduled) { - state.resumeScheduled = true; - processNextTick(resume_, stream, state); - } -} - -function resume_(stream, state) { - if (!state.reading) { - debug('resume read 0'); - stream.read(0); - } - - state.resumeScheduled = false; - state.awaitDrain = 0; - stream.emit('resume'); - flow(stream); - if (state.flowing && !state.reading) stream.read(0); -} - -Readable.prototype.pause = function () { - debug('call pause flowing=%j', this._readableState.flowing); - if (false !== this._readableState.flowing) { - debug('pause'); - this._readableState.flowing = false; - this.emit('pause'); - } - return this; -}; - -function flow(stream) { - var state = stream._readableState; - debug('flow', state.flowing); - while (state.flowing && stream.read() !== null) {} -} - -// wrap an old-style stream as the async data source. -// This is *not* part of the readable stream interface. -// It is an ugly unfortunate mess of history. -Readable.prototype.wrap = function (stream) { - var state = this._readableState; - var paused = false; - - var self = this; - stream.on('end', function () { - debug('wrapped end'); - if (state.decoder && !state.ended) { - var chunk = state.decoder.end(); - if (chunk && chunk.length) self.push(chunk); - } - - self.push(null); - }); - - stream.on('data', function (chunk) { - debug('wrapped data'); - if (state.decoder) chunk = state.decoder.write(chunk); - - // don't skip over falsy values in objectMode - if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return; - - var ret = self.push(chunk); - if (!ret) { - paused = true; - stream.pause(); - } - }); - - // proxy all the other methods. - // important when wrapping filters and duplexes. - for (var i in stream) { - if (this[i] === undefined && typeof stream[i] === 'function') { - this[i] = function (method) { - return function () { - return stream[method].apply(stream, arguments); - }; - }(i); - } - } - - // proxy certain important events. - var events = ['error', 'close', 'destroy', 'pause', 'resume']; - forEach(events, function (ev) { - stream.on(ev, self.emit.bind(self, ev)); - }); - - // when we try to consume some more bytes, simply unpause the - // underlying stream. - self._read = function (n) { - debug('wrapped _read', n); - if (paused) { - paused = false; - stream.resume(); - } - }; - - return self; -}; - -// exposed for testing purposes only. -Readable._fromList = fromList; - -// Pluck off n bytes from an array of buffers. -// Length is the combined lengths of all the buffers in the list. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromList(n, state) { - // nothing buffered - if (state.length === 0) return null; - - var ret; - if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) { - // read it all, truncate the list - if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length); - state.buffer.clear(); - } else { - // read part of list - ret = fromListPartial(n, state.buffer, state.decoder); - } - - return ret; -} - -// Extracts only enough buffered data to satisfy the amount requested. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function fromListPartial(n, list, hasStrings) { - var ret; - if (n < list.head.data.length) { - // slice is the same for buffers and strings - ret = list.head.data.slice(0, n); - list.head.data = list.head.data.slice(n); - } else if (n === list.head.data.length) { - // first chunk is a perfect match - ret = list.shift(); - } else { - // result spans more than one buffer - ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list); - } - return ret; -} - -// Copies a specified amount of characters from the list of buffered data -// chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBufferString(n, list) { - var p = list.head; - var c = 1; - var ret = p.data; - n -= ret.length; - while (p = p.next) { - var str = p.data; - var nb = n > str.length ? str.length : n; - if (nb === str.length) ret += str;else ret += str.slice(0, n); - n -= nb; - if (n === 0) { - if (nb === str.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = str.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -// Copies a specified amount of bytes from the list of buffered data chunks. -// This function is designed to be inlinable, so please take care when making -// changes to the function body. -function copyFromBuffer(n, list) { - var ret = bufferShim.allocUnsafe(n); - var p = list.head; - var c = 1; - p.data.copy(ret); - n -= p.data.length; - while (p = p.next) { - var buf = p.data; - var nb = n > buf.length ? buf.length : n; - buf.copy(ret, ret.length - n, 0, nb); - n -= nb; - if (n === 0) { - if (nb === buf.length) { - ++c; - if (p.next) list.head = p.next;else list.head = list.tail = null; - } else { - list.head = p; - p.data = buf.slice(nb); - } - break; - } - ++c; - } - list.length -= c; - return ret; -} - -function endReadable(stream) { - var state = stream._readableState; - - // If we get here before consuming all the bytes, then that is a - // bug in node. Should never happen. - if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream'); - - if (!state.endEmitted) { - state.ended = true; - processNextTick(endReadableNT, state, stream); - } -} - -function endReadableNT(state, stream) { - // Check that we didn't get one last unshift. - if (!state.endEmitted && state.length === 0) { - state.endEmitted = true; - stream.readable = false; - stream.emit('end'); - } -} - -function forEach(xs, f) { - for (var i = 0, l = xs.length; i < l; i++) { - f(xs[i], i); - } -} - -function indexOf(xs, x) { - for (var i = 0, l = xs.length; i < l; i++) { - if (xs[i] === x) return i; - } - return -1; -} -}).call(this,require('_process')) -},{"./_stream_duplex":69,"./internal/streams/BufferList":74,"_process":67,"buffer":44,"buffer-shims":43,"core-util-is":45,"events":48,"inherits":51,"isarray":53,"process-nextick-args":66,"string_decoder/":80,"util":40}],72:[function(require,module,exports){ -// a transform stream is a readable/writable stream where you do -// something with the data. Sometimes it's called a "filter", -// but that's not a great name for it, since that implies a thing where -// some bits pass through, and others are simply ignored. (That would -// be a valid example of a transform, of course.) -// -// While the output is causally related to the input, it's not a -// necessarily symmetric or synchronous transformation. For example, -// a zlib stream might take multiple plain-text writes(), and then -// emit a single compressed chunk some time in the future. -// -// Here's how this works: -// -// The Transform stream has all the aspects of the readable and writable -// stream classes. When you write(chunk), that calls _write(chunk,cb) -// internally, and returns false if there's a lot of pending writes -// buffered up. When you call read(), that calls _read(n) until -// there's enough pending readable data buffered up. -// -// In a transform stream, the written data is placed in a buffer. When -// _read(n) is called, it transforms the queued up data, calling the -// buffered _write cb's as it consumes chunks. If consuming a single -// written chunk would result in multiple output chunks, then the first -// outputted bit calls the readcb, and subsequent chunks just go into -// the read buffer, and will cause it to emit 'readable' if necessary. -// -// This way, back-pressure is actually determined by the reading side, -// since _read has to be called to start processing a new chunk. However, -// a pathological inflate type of transform can cause excessive buffering -// here. For example, imagine a stream where every byte of input is -// interpreted as an integer from 0-255, and then results in that many -// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in -// 1kb of data being output. In this case, you could write a very small -// amount of input, and end up with a very large amount of output. In -// such a pathological inflating mechanism, there'd be no way to tell -// the system to stop doing the transform. A single 4MB write could -// cause the system to run out of memory. -// -// However, even in such a pathological case, only a single written chunk -// would be consumed, and then the rest would wait (un-transformed) until -// the results of the previous transformed chunk were consumed. - -'use strict'; - -module.exports = Transform; - -var Duplex = require('./_stream_duplex'); - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -util.inherits(Transform, Duplex); - -function TransformState(stream) { - this.afterTransform = function (er, data) { - return afterTransform(stream, er, data); - }; - - this.needTransform = false; - this.transforming = false; - this.writecb = null; - this.writechunk = null; - this.writeencoding = null; -} - -function afterTransform(stream, er, data) { - var ts = stream._transformState; - ts.transforming = false; - - var cb = ts.writecb; - - if (!cb) return stream.emit('error', new Error('no writecb in Transform class')); - - ts.writechunk = null; - ts.writecb = null; - - if (data !== null && data !== undefined) stream.push(data); - - cb(er); - - var rs = stream._readableState; - rs.reading = false; - if (rs.needReadable || rs.length < rs.highWaterMark) { - stream._read(rs.highWaterMark); - } -} - -function Transform(options) { - if (!(this instanceof Transform)) return new Transform(options); - - Duplex.call(this, options); - - this._transformState = new TransformState(this); - - // when the writable side finishes, then flush out anything remaining. - var stream = this; - - // start out asking for a readable event once data is transformed. - this._readableState.needReadable = true; - - // we have implemented the _read method, and done the other things - // that Readable wants before the first _read call, so unset the - // sync guard flag. - this._readableState.sync = false; - - if (options) { - if (typeof options.transform === 'function') this._transform = options.transform; - - if (typeof options.flush === 'function') this._flush = options.flush; - } - - this.once('prefinish', function () { - if (typeof this._flush === 'function') this._flush(function (er) { - done(stream, er); - });else done(stream); - }); -} - -Transform.prototype.push = function (chunk, encoding) { - this._transformState.needTransform = false; - return Duplex.prototype.push.call(this, chunk, encoding); -}; - -// This is the part where you do stuff! -// override this function in implementation classes. -// 'chunk' is an input chunk. -// -// Call `push(newChunk)` to pass along transformed output -// to the readable side. You may call 'push' zero or more times. -// -// Call `cb(err)` when you are done with this chunk. If you pass -// an error, then that'll put the hurt on the whole operation. If you -// never call cb(), then you'll never get another chunk. -Transform.prototype._transform = function (chunk, encoding, cb) { - throw new Error('Not implemented'); -}; - -Transform.prototype._write = function (chunk, encoding, cb) { - var ts = this._transformState; - ts.writecb = cb; - ts.writechunk = chunk; - ts.writeencoding = encoding; - if (!ts.transforming) { - var rs = this._readableState; - if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark); - } -}; - -// Doesn't matter what the args are here. -// _transform does all the work. -// That we got here means that the readable side wants more data. -Transform.prototype._read = function (n) { - var ts = this._transformState; - - if (ts.writechunk !== null && ts.writecb && !ts.transforming) { - ts.transforming = true; - this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform); - } else { - // mark that we need a transform, so that any data that comes in - // will get processed, now that we've asked for it. - ts.needTransform = true; - } -}; - -function done(stream, er) { - if (er) return stream.emit('error', er); - - // if there's nothing in the write buffer, then that means - // that nothing more will ever be provided - var ws = stream._writableState; - var ts = stream._transformState; - - if (ws.length) throw new Error('Calling transform done when ws.length != 0'); - - if (ts.transforming) throw new Error('Calling transform done when still transforming'); - - return stream.push(null); -} -},{"./_stream_duplex":69,"core-util-is":45,"inherits":51}],73:[function(require,module,exports){ -(function (process){ -// A bit simpler than readable streams. -// Implement an async ._write(chunk, encoding, cb), and it'll handle all -// the drain event emission and buffering. - -'use strict'; - -module.exports = Writable; - -/**/ -var processNextTick = require('process-nextick-args'); -/**/ - -/**/ -var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick; -/**/ - -Writable.WritableState = WritableState; - -/**/ -var util = require('core-util-is'); -util.inherits = require('inherits'); -/**/ - -/**/ -var internalUtil = { - deprecate: require('util-deprecate') -}; -/**/ - -/**/ -var Stream; -(function () { - try { - Stream = require('st' + 'ream'); - } catch (_) {} finally { - if (!Stream) Stream = require('events').EventEmitter; - } -})(); -/**/ - -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ - -util.inherits(Writable, Stream); - -function nop() {} - -function WriteReq(chunk, encoding, cb) { - this.chunk = chunk; - this.encoding = encoding; - this.callback = cb; - this.next = null; -} - -var Duplex; -function WritableState(options, stream) { - Duplex = Duplex || require('./_stream_duplex'); - - options = options || {}; - - // object stream flag to indicate whether or not this stream - // contains buffers or objects. - this.objectMode = !!options.objectMode; - - if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode; - - // the point at which write() starts returning false - // Note: 0 is a valid value, means that we always return false if - // the entire buffer is not flushed immediately on write() - var hwm = options.highWaterMark; - var defaultHwm = this.objectMode ? 16 : 16 * 1024; - this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; - - // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; - - this.needDrain = false; - // at the start of calling end() - this.ending = false; - // when end() has been called, and returned - this.ended = false; - // when 'finish' is emitted - this.finished = false; - - // should we decode strings into buffers before passing to _write? - // this is here so that some node-core streams can optimize string - // handling at a lower level. - var noDecode = options.decodeStrings === false; - this.decodeStrings = !noDecode; - - // Crypto is kind of old and crusty. Historically, its default string - // encoding is 'binary' so we have to make this configurable. - // Everything else in the universe uses 'utf8', though. - this.defaultEncoding = options.defaultEncoding || 'utf8'; - - // not an actual buffer we keep track of, but a measurement - // of how much we're waiting to get pushed to some underlying - // socket or file. - this.length = 0; - - // a flag to see when we're in the middle of a write. - this.writing = false; - - // when true all writes will be buffered until .uncork() call - this.corked = 0; - - // a flag to be able to tell if the onwrite cb is called immediately, - // or on a later tick. We set this to true at first, because any - // actions that shouldn't happen until "later" should generally also - // not happen before the first write call. - this.sync = true; - - // a flag to know if we're processing previously buffered items, which - // may call the _write() callback in the same tick, so that we don't - // end up in an overlapped onwrite situation. - this.bufferProcessing = false; - - // the callback that's passed to _write(chunk,cb) - this.onwrite = function (er) { - onwrite(stream, er); - }; - - // the callback that the user supplies to write(chunk,encoding,cb) - this.writecb = null; - - // the amount that is being written when _write is called. - this.writelen = 0; - - this.bufferedRequest = null; - this.lastBufferedRequest = null; - - // number of pending user-supplied write callbacks - // this must be 0 before 'finish' can be emitted - this.pendingcb = 0; - - // emit prefinish if the only thing we're waiting for is _write cbs - // This is relevant for synchronous Transform streams - this.prefinished = false; - - // True if the error was already emitted and should not be thrown again - this.errorEmitted = false; - - // count buffered requests - this.bufferedRequestCount = 0; - - // allocate the first CorkedRequest, there is always - // one allocated and free to use, and we maintain at most two - this.corkedRequestsFree = new CorkedRequest(this); -} - -WritableState.prototype.getBuffer = function writableStateGetBuffer() { - var current = this.bufferedRequest; - var out = []; - while (current) { - out.push(current); - current = current.next; - } - return out; -}; - -(function () { - try { - Object.defineProperty(WritableState.prototype, 'buffer', { - get: internalUtil.deprecate(function () { - return this.getBuffer(); - }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.') - }); - } catch (_) {} -})(); - -var Duplex; -function Writable(options) { - Duplex = Duplex || require('./_stream_duplex'); - - // Writable ctor is applied to Duplexes, though they're not - // instanceof Writable, they're instanceof Readable. - if (!(this instanceof Writable) && !(this instanceof Duplex)) return new Writable(options); - - this._writableState = new WritableState(options, this); - - // legacy. - this.writable = true; - - if (options) { - if (typeof options.write === 'function') this._write = options.write; - - if (typeof options.writev === 'function') this._writev = options.writev; - } - - Stream.call(this); -} - -// Otherwise people can pipe Writable streams, which is just wrong. -Writable.prototype.pipe = function () { - this.emit('error', new Error('Cannot pipe, not readable')); -}; - -function writeAfterEnd(stream, cb) { - var er = new Error('write after end'); - // TODO: defer error events consistently everywhere, not just the cb - stream.emit('error', er); - processNextTick(cb, er); -} - -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. -function validChunk(stream, state, chunk, cb) { - var valid = true; - var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. - if (chunk === null) { - er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { - er = new TypeError('Invalid non-string/buffer chunk'); - } - if (er) { - stream.emit('error', er); - processNextTick(cb, er); - valid = false; - } - return valid; -} - -Writable.prototype.write = function (chunk, encoding, cb) { - var state = this._writableState; - var ret = false; - - if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; - - if (typeof cb !== 'function') cb = nop; - - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { - state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); - } - - return ret; -}; - -Writable.prototype.cork = function () { - var state = this._writableState; - - state.corked++; -}; - -Writable.prototype.uncork = function () { - var state = this._writableState; - - if (state.corked) { - state.corked--; - - if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state); - } -}; - -Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) { - // node::ParseEncoding() requires lower case. - if (typeof encoding === 'string') encoding = encoding.toLowerCase(); - if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding); - this._writableState.defaultEncoding = encoding; - return this; -}; - -function decodeChunk(state, chunk, encoding) { - if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') { - chunk = bufferShim.from(chunk, encoding); - } - return chunk; -} - -// if we're already writing something, then just put this -// in the queue, and wait our turn. Otherwise, call _write -// If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; - var len = state.objectMode ? 1 : chunk.length; - - state.length += len; - - var ret = state.length < state.highWaterMark; - // we must ensure that previous needDrain will not be reset to false. - if (!ret) state.needDrain = true; - - if (state.writing || state.corked) { - var last = state.lastBufferedRequest; - state.lastBufferedRequest = new WriteReq(chunk, encoding, cb); - if (last) { - last.next = state.lastBufferedRequest; - } else { - state.bufferedRequest = state.lastBufferedRequest; - } - state.bufferedRequestCount += 1; - } else { - doWrite(stream, state, false, len, chunk, encoding, cb); - } - - return ret; -} - -function doWrite(stream, state, writev, len, chunk, encoding, cb) { - state.writelen = len; - state.writecb = cb; - state.writing = true; - state.sync = true; - if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite); - state.sync = false; -} - -function onwriteError(stream, state, sync, er, cb) { - --state.pendingcb; - if (sync) processNextTick(cb, er);else cb(er); - - stream._writableState.errorEmitted = true; - stream.emit('error', er); -} - -function onwriteStateUpdate(state) { - state.writing = false; - state.writecb = null; - state.length -= state.writelen; - state.writelen = 0; -} - -function onwrite(stream, er) { - var state = stream._writableState; - var sync = state.sync; - var cb = state.writecb; - - onwriteStateUpdate(state); - - if (er) onwriteError(stream, state, sync, er, cb);else { - // Check if we're actually ready to finish, but don't emit yet - var finished = needFinish(state); - - if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) { - clearBuffer(stream, state); - } - - if (sync) { - /**/ - asyncWrite(afterWrite, stream, state, finished, cb); - /**/ - } else { - afterWrite(stream, state, finished, cb); - } - } -} - -function afterWrite(stream, state, finished, cb) { - if (!finished) onwriteDrain(stream, state); - state.pendingcb--; - cb(); - finishMaybe(stream, state); -} - -// Must force callback to be called on nextTick, so that we don't -// emit 'drain' before the write() consumer gets the 'false' return -// value, and has a chance to attach a 'drain' listener. -function onwriteDrain(stream, state) { - if (state.length === 0 && state.needDrain) { - state.needDrain = false; - stream.emit('drain'); - } -} - -// if there's something in the buffer waiting, then process it -function clearBuffer(stream, state) { - state.bufferProcessing = true; - var entry = state.bufferedRequest; - - if (stream._writev && entry && entry.next) { - // Fast case, write everything using _writev() - var l = state.bufferedRequestCount; - var buffer = new Array(l); - var holder = state.corkedRequestsFree; - holder.entry = entry; - - var count = 0; - while (entry) { - buffer[count] = entry; - entry = entry.next; - count += 1; - } - - doWrite(stream, state, true, state.length, buffer, '', holder.finish); - - // doWrite is almost always async, defer these to save a bit of time - // as the hot path ends with doWrite - state.pendingcb++; - state.lastBufferedRequest = null; - if (holder.next) { - state.corkedRequestsFree = holder.next; - holder.next = null; - } else { - state.corkedRequestsFree = new CorkedRequest(state); - } - } else { - // Slow case, write chunks one-by-one - while (entry) { - var chunk = entry.chunk; - var encoding = entry.encoding; - var cb = entry.callback; - var len = state.objectMode ? 1 : chunk.length; - - doWrite(stream, state, false, len, chunk, encoding, cb); - entry = entry.next; - // if we didn't call the onwrite immediately, then - // it means that we need to wait until it does. - // also, that means that the chunk and cb are currently - // being processed, so move the buffer counter past them. - if (state.writing) { - break; - } - } - - if (entry === null) state.lastBufferedRequest = null; - } - - state.bufferedRequestCount = 0; - state.bufferedRequest = entry; - state.bufferProcessing = false; -} - -Writable.prototype._write = function (chunk, encoding, cb) { - cb(new Error('not implemented')); -}; - -Writable.prototype._writev = null; - -Writable.prototype.end = function (chunk, encoding, cb) { - var state = this._writableState; - - if (typeof chunk === 'function') { - cb = chunk; - chunk = null; - encoding = null; - } else if (typeof encoding === 'function') { - cb = encoding; - encoding = null; - } - - if (chunk !== null && chunk !== undefined) this.write(chunk, encoding); - - // .end() fully uncorks - if (state.corked) { - state.corked = 1; - this.uncork(); - } - - // ignore unnecessary end() calls. - if (!state.ending && !state.finished) endWritable(this, state, cb); -}; - -function needFinish(state) { - return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing; -} - -function prefinish(stream, state) { - if (!state.prefinished) { - state.prefinished = true; - stream.emit('prefinish'); - } -} - -function finishMaybe(stream, state) { - var need = needFinish(state); - if (need) { - if (state.pendingcb === 0) { - prefinish(stream, state); - state.finished = true; - stream.emit('finish'); - } else { - prefinish(stream, state); - } - } - return need; -} - -function endWritable(stream, state, cb) { - state.ending = true; - finishMaybe(stream, state); - if (cb) { - if (state.finished) processNextTick(cb);else stream.once('finish', cb); - } - state.ended = true; - stream.writable = false; -} - -// It seems a linked list but it is not -// there will be only 2 of these for each stream -function CorkedRequest(state) { - var _this = this; - - this.next = null; - this.entry = null; - - this.finish = function (err) { - var entry = _this.entry; - _this.entry = null; - while (entry) { - var cb = entry.callback; - state.pendingcb--; - cb(err); - entry = entry.next; - } - if (state.corkedRequestsFree) { - state.corkedRequestsFree.next = _this; - } else { - state.corkedRequestsFree = _this; - } - }; -} -}).call(this,require('_process')) -},{"./_stream_duplex":69,"_process":67,"buffer":44,"buffer-shims":43,"core-util-is":45,"events":48,"inherits":51,"process-nextick-args":66,"util-deprecate":81}],74:[function(require,module,exports){ -'use strict'; - -var Buffer = require('buffer').Buffer; -/**/ -var bufferShim = require('buffer-shims'); -/**/ - -module.exports = BufferList; - -function BufferList() { - this.head = null; - this.tail = null; - this.length = 0; -} - -BufferList.prototype.push = function (v) { - var entry = { data: v, next: null }; - if (this.length > 0) this.tail.next = entry;else this.head = entry; - this.tail = entry; - ++this.length; -}; - -BufferList.prototype.unshift = function (v) { - var entry = { data: v, next: this.head }; - if (this.length === 0) this.tail = entry; - this.head = entry; - ++this.length; -}; - -BufferList.prototype.shift = function () { - if (this.length === 0) return; - var ret = this.head.data; - if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next; - --this.length; - return ret; -}; - -BufferList.prototype.clear = function () { - this.head = this.tail = null; - this.length = 0; -}; - -BufferList.prototype.join = function (s) { - if (this.length === 0) return ''; - var p = this.head; - var ret = '' + p.data; - while (p = p.next) { - ret += s + p.data; - }return ret; -}; - -BufferList.prototype.concat = function (n) { - if (this.length === 0) return bufferShim.alloc(0); - if (this.length === 1) return this.head.data; - var ret = bufferShim.allocUnsafe(n >>> 0); - var p = this.head; - var i = 0; - while (p) { - p.data.copy(ret, i); - i += p.data.length; - p = p.next; - } - return ret; -}; -},{"buffer":44,"buffer-shims":43}],75:[function(require,module,exports){ -module.exports = require("./lib/_stream_passthrough.js") - -},{"./lib/_stream_passthrough.js":70}],76:[function(require,module,exports){ -(function (process){ -var Stream = (function (){ - try { - return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify - } catch(_){} -}()); -exports = module.exports = require('./lib/_stream_readable.js'); -exports.Stream = Stream || exports; -exports.Readable = exports; -exports.Writable = require('./lib/_stream_writable.js'); -exports.Duplex = require('./lib/_stream_duplex.js'); -exports.Transform = require('./lib/_stream_transform.js'); -exports.PassThrough = require('./lib/_stream_passthrough.js'); - -if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) { - module.exports = Stream; -} - -}).call(this,require('_process')) -},{"./lib/_stream_duplex.js":69,"./lib/_stream_passthrough.js":70,"./lib/_stream_readable.js":71,"./lib/_stream_transform.js":72,"./lib/_stream_writable.js":73,"_process":67}],77:[function(require,module,exports){ -module.exports = require("./lib/_stream_transform.js") - -},{"./lib/_stream_transform.js":72}],78:[function(require,module,exports){ -module.exports = require("./lib/_stream_writable.js") - -},{"./lib/_stream_writable.js":73}],79:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -module.exports = Stream; - -var EE = require('events').EventEmitter; -var inherits = require('inherits'); - -inherits(Stream, EE); -Stream.Readable = require('readable-stream/readable.js'); -Stream.Writable = require('readable-stream/writable.js'); -Stream.Duplex = require('readable-stream/duplex.js'); -Stream.Transform = require('readable-stream/transform.js'); -Stream.PassThrough = require('readable-stream/passthrough.js'); - -// Backwards-compat with node 0.4.x -Stream.Stream = Stream; - - - -// old-style streams. Note that the pipe method (the only relevant -// part of this class) is overridden in the Readable class. - -function Stream() { - EE.call(this); -} - -Stream.prototype.pipe = function(dest, options) { - var source = this; - - function ondata(chunk) { - if (dest.writable) { - if (false === dest.write(chunk) && source.pause) { - source.pause(); - } - } - } - - source.on('data', ondata); - - function ondrain() { - if (source.readable && source.resume) { - source.resume(); - } - } - - dest.on('drain', ondrain); - - // If the 'end' option is not supplied, dest.end() will be called when - // source gets the 'end' or 'close' events. Only dest.end() once. - if (!dest._isStdio && (!options || options.end !== false)) { - source.on('end', onend); - source.on('close', onclose); - } - - var didOnEnd = false; - function onend() { - if (didOnEnd) return; - didOnEnd = true; - - dest.end(); - } - - - function onclose() { - if (didOnEnd) return; - didOnEnd = true; - - if (typeof dest.destroy === 'function') dest.destroy(); - } - - // don't leave dangling pipes when there are errors. - function onerror(er) { - cleanup(); - if (EE.listenerCount(this, 'error') === 0) { - throw er; // Unhandled stream error in pipe. - } - } - - source.on('error', onerror); - dest.on('error', onerror); - - // remove all the event listeners that were added. - function cleanup() { - source.removeListener('data', ondata); - dest.removeListener('drain', ondrain); - - source.removeListener('end', onend); - source.removeListener('close', onclose); - - source.removeListener('error', onerror); - dest.removeListener('error', onerror); - - source.removeListener('end', cleanup); - source.removeListener('close', cleanup); - - dest.removeListener('close', cleanup); - } - - source.on('end', cleanup); - source.on('close', cleanup); - - dest.on('close', cleanup); - - dest.emit('pipe', source); - - // Allow for unix-like usage: A.pipe(B).pipe(C) - return dest; -}; - -},{"events":48,"inherits":51,"readable-stream/duplex.js":68,"readable-stream/passthrough.js":75,"readable-stream/readable.js":76,"readable-stream/transform.js":77,"readable-stream/writable.js":78}],80:[function(require,module,exports){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var Buffer = require('buffer').Buffer; - -var isBufferEncoding = Buffer.isEncoding - || function(encoding) { - switch (encoding && encoding.toLowerCase()) { - case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true; - default: return false; - } - } - - -function assertEncoding(encoding) { - if (encoding && !isBufferEncoding(encoding)) { - throw new Error('Unknown encoding: ' + encoding); - } -} - -// StringDecoder provides an interface for efficiently splitting a series of -// buffers into a series of JS strings without breaking apart multi-byte -// characters. CESU-8 is handled as part of the UTF-8 encoding. -// -// @TODO Handling all encodings inside a single object makes it very difficult -// to reason about this code, so it should be split up in the future. -// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code -// points as used by CESU-8. -var StringDecoder = exports.StringDecoder = function(encoding) { - this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, ''); - assertEncoding(encoding); - switch (this.encoding) { - case 'utf8': - // CESU-8 represents each of Surrogate Pair by 3-bytes - this.surrogateSize = 3; - break; - case 'ucs2': - case 'utf16le': - // UTF-16 represents each of Surrogate Pair by 2-bytes - this.surrogateSize = 2; - this.detectIncompleteChar = utf16DetectIncompleteChar; - break; - case 'base64': - // Base-64 stores 3 bytes in 4 chars, and pads the remainder. - this.surrogateSize = 3; - this.detectIncompleteChar = base64DetectIncompleteChar; - break; - default: - this.write = passThroughWrite; - return; - } - - // Enough space to store all bytes of a single character. UTF-8 needs 4 - // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate). - this.charBuffer = new Buffer(6); - // Number of bytes received for the current incomplete multi-byte character. - this.charReceived = 0; - // Number of bytes expected for the current incomplete multi-byte character. - this.charLength = 0; -}; - - -// write decodes the given buffer and returns it as JS string that is -// guaranteed to not contain any partial multi-byte characters. Any partial -// character found at the end of the buffer is buffered up, and will be -// returned when calling write again with the remaining bytes. -// -// Note: Converting a Buffer containing an orphan surrogate to a String -// currently works, but converting a String to a Buffer (via `new Buffer`, or -// Buffer#write) will replace incomplete surrogates with the unicode -// replacement character. See https://codereview.chromium.org/121173009/ . -StringDecoder.prototype.write = function(buffer) { - var charStr = ''; - // if our last write ended with an incomplete multibyte character - while (this.charLength) { - // determine how many remaining bytes this buffer has to offer for this char - var available = (buffer.length >= this.charLength - this.charReceived) ? - this.charLength - this.charReceived : - buffer.length; - - // add the new bytes to the char buffer - buffer.copy(this.charBuffer, this.charReceived, 0, available); - this.charReceived += available; - - if (this.charReceived < this.charLength) { - // still not enough chars in this buffer? wait for more ... - return ''; - } - - // remove bytes belonging to the current character from the buffer - buffer = buffer.slice(available, buffer.length); - - // get the character that was split - charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding); - - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - var charCode = charStr.charCodeAt(charStr.length - 1); - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - this.charLength += this.surrogateSize; - charStr = ''; - continue; - } - this.charReceived = this.charLength = 0; - - // if there are no more bytes in this buffer, just emit our char - if (buffer.length === 0) { - return charStr; - } - break; - } - - // determine and set charLength / charReceived - this.detectIncompleteChar(buffer); - - var end = buffer.length; - if (this.charLength) { - // buffer the incomplete character bytes we got - buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end); - end -= this.charReceived; - } - - charStr += buffer.toString(this.encoding, 0, end); - - var end = charStr.length - 1; - var charCode = charStr.charCodeAt(end); - // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character - if (charCode >= 0xD800 && charCode <= 0xDBFF) { - var size = this.surrogateSize; - this.charLength += size; - this.charReceived += size; - this.charBuffer.copy(this.charBuffer, size, 0, size); - buffer.copy(this.charBuffer, 0, 0, size); - return charStr.substring(0, end); - } - - // or just emit the charStr - return charStr; -}; - -// detectIncompleteChar determines if there is an incomplete UTF-8 character at -// the end of the given buffer. If so, it sets this.charLength to the byte -// length that character, and sets this.charReceived to the number of bytes -// that are available for this character. -StringDecoder.prototype.detectIncompleteChar = function(buffer) { - // determine how many bytes we have to check at the end of this buffer - var i = (buffer.length >= 3) ? 3 : buffer.length; - - // Figure out if one of the last i bytes of our buffer announces an - // incomplete char. - for (; i > 0; i--) { - var c = buffer[buffer.length - i]; - - // See http://en.wikipedia.org/wiki/UTF-8#Description - - // 110XXXXX - if (i == 1 && c >> 5 == 0x06) { - this.charLength = 2; - break; - } - - // 1110XXXX - if (i <= 2 && c >> 4 == 0x0E) { - this.charLength = 3; - break; - } - - // 11110XXX - if (i <= 3 && c >> 3 == 0x1E) { - this.charLength = 4; - break; - } - } - this.charReceived = i; -}; - -StringDecoder.prototype.end = function(buffer) { - var res = ''; - if (buffer && buffer.length) - res = this.write(buffer); - - if (this.charReceived) { - var cr = this.charReceived; - var buf = this.charBuffer; - var enc = this.encoding; - res += buf.slice(0, cr).toString(enc); - } - - return res; -}; - -function passThroughWrite(buffer) { - return buffer.toString(this.encoding); -} - -function utf16DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 2; - this.charLength = this.charReceived ? 2 : 0; -} - -function base64DetectIncompleteChar(buffer) { - this.charReceived = buffer.length % 3; - this.charLength = this.charReceived ? 3 : 0; -} - -},{"buffer":44}],81:[function(require,module,exports){ -(function (global){ - -/** - * Module exports. - */ - -module.exports = deprecate; - -/** - * Mark that a method should not be used. - * Returns a modified function which warns once by default. - * - * If `localStorage.noDeprecation = true` is set, then it is a no-op. - * - * If `localStorage.throwDeprecation = true` is set, then deprecated functions - * will throw an Error when invoked. - * - * If `localStorage.traceDeprecation = true` is set, then deprecated functions - * will invoke `console.trace()` instead of `console.error()`. - * - * @param {Function} fn - the function to deprecate - * @param {String} msg - the string to print to the console when `fn` is invoked - * @returns {Function} a new "deprecated" version of `fn` - * @api public - */ - -function deprecate (fn, msg) { - if (config('noDeprecation')) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (config('throwDeprecation')) { - throw new Error(msg); - } else if (config('traceDeprecation')) { - console.trace(msg); - } else { - console.warn(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -} - -/** - * Checks `localStorage` for boolean values for the given `name`. - * - * @param {String} name - * @returns {Boolean} - * @api private - */ - -function config (name) { - // accessing global.localStorage can trigger a DOMException in sandboxed iframes - try { - if (!global.localStorage) return false; - } catch (_) { - return false; - } - var val = global.localStorage[name]; - if (null == val) return false; - return String(val).toLowerCase() === 'true'; -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],82:[function(require,module,exports){ -arguments[4][51][0].apply(exports,arguments) -},{"dup":51}],83:[function(require,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -},{}],84:[function(require,module,exports){ -(function (process,global){ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -// Mark that a method should not be used. -// Returns a modified function which warns once by default. -// If --no-deprecation is set, then it is a no-op. -exports.deprecate = function(fn, msg) { - // Allow for deprecating things in the process of starting up. - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - -/** - * Echos the value of a value. Trys to print the value out - * in the best way possible given the different types. - * - * @param {Object} obj The object to print out. - * @param {Object} opts Optional options object that alters the output. - */ -/* legacy: obj, showHidden, depth, colors*/ -function inspect(obj, opts) { - // default options - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - // legacy... - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - // legacy... - ctx.showHidden = opts; - } else if (opts) { - // got an "options" object - exports._extend(ctx, opts); - } - // set default options - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -// Don't use 'blue' not visible on cmd.exe -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - // "name": intentionally not styling - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - // Provide a hook for user-specified inspect functions. - // Check that value is an object with an inspect function on it - if (ctx.customInspect && - value && - isFunction(value.inspect) && - // Filter out the util module, it's inspect function is special - value.inspect !== exports.inspect && - // Also filter out any prototype objects using the circular check. - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - // Primitive types cannot have properties - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - // Look up the keys of the object. - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - // IE doesn't make error fields non-enumerable - // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - // Some type of object without properties can be shortcutted. - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - // Make Array say that they are Array - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - // Make functions say that they are functions - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - // Make RegExps say that they are RegExps - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - // Make dates with properties first say the date - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - // Make error with message first say the error - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - // For some reason typeof null is "object", so special case here. - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -// NOTE: These type checking functions intentionally don't use `instanceof` -// because it is fragile and can be easily faked with `Object.create()`. -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = require('./support/isBuffer'); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -// 26 Feb 16:19:34 -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -// log is just a thin wrapper to console.log that prepends a timestamp -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - -/** - * Inherit the prototype methods from one constructor into another. - * - * The Function.prototype.inherits from lang.js rewritten as a standalone - * function (not on Function.prototype). NOTE: If this file is to be loaded - * during bootstrapping this function needs to be rewritten using some native - * functions as prototype setup using normal JavaScript does not work as - * expected during bootstrapping (see mirror.js in r114903). - * - * @param {function} ctor Constructor function which needs to inherit the - * prototype. - * @param {function} superCtor Constructor function to inherit prototype from. - */ -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - // Don't do anything if add isn't an object - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":83,"_process":67,"inherits":82}]},{},[1]); diff --git a/bower_components/blueimp-file-upload/.bower.json b/bower_components/blueimp-file-upload/.bower.json deleted file mode 100644 index 4acba2af58..0000000000 --- a/bower_components/blueimp-file-upload/.bower.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "name": "blueimp-file-upload", - "version": "9.14.2", - "title": "jQuery File Upload", - "description": "File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images.", - "keywords": [ - "jquery", - "file", - "upload", - "widget", - "multiple", - "selection", - "drag", - "drop", - "progress", - "preview", - "cross-domain", - "cross-site", - "chunk", - "resume", - "gae", - "go", - "python", - "php", - "bootstrap" - ], - "homepage": "https://github.com/blueimp/jQuery-File-Upload", - "author": { - "name": "Sebastian Tschan", - "url": "https://blueimp.net" - }, - "maintainers": [ - { - "name": "Sebastian Tschan", - "url": "https://blueimp.net" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/blueimp/jQuery-File-Upload.git" - }, - "bugs": "https://github.com/blueimp/jQuery-File-Upload/issues", - "license": "MIT", - "dependencies": { - "jquery": ">=1.6", - "blueimp-tmpl": ">=2.5.4", - "blueimp-load-image": ">=1.13.0", - "blueimp-canvas-to-blob": ">=2.1.1" - }, - "main": [ - "js/jquery.fileupload.js" - ], - "ignore": [ - "/*.*", - "/cors", - "css/demo-ie8.css", - "css/demo.css", - "css/style.css", - "js/app.js", - "js/main.js", - "server", - "test" - ], - "_release": "9.14.2", - "_resolution": { - "type": "version", - "tag": "v9.14.2", - "commit": "a1a13f59ad8e024445abb3deb0b454ffcf8a7801" - }, - "_source": "https://github.com/blueimp/jQuery-File-Upload.git", - "_target": "^9.14.2", - "_originalSource": "fileupload", - "_direct": true -} \ No newline at end of file diff --git a/bower_components/blueimp-file-upload/bower.json b/bower_components/blueimp-file-upload/bower.json deleted file mode 100644 index 97b83eb634..0000000000 --- a/bower_components/blueimp-file-upload/bower.json +++ /dev/null @@ -1,64 +0,0 @@ -{ - "name": "blueimp-file-upload", - "version": "9.14.2", - "title": "jQuery File Upload", - "description": "File Upload widget with multiple file selection, drag&drop support, progress bar, validation and preview images.", - "keywords": [ - "jquery", - "file", - "upload", - "widget", - "multiple", - "selection", - "drag", - "drop", - "progress", - "preview", - "cross-domain", - "cross-site", - "chunk", - "resume", - "gae", - "go", - "python", - "php", - "bootstrap" - ], - "homepage": "https://github.com/blueimp/jQuery-File-Upload", - "author": { - "name": "Sebastian Tschan", - "url": "https://blueimp.net" - }, - "maintainers": [ - { - "name": "Sebastian Tschan", - "url": "https://blueimp.net" - } - ], - "repository": { - "type": "git", - "url": "git://github.com/blueimp/jQuery-File-Upload.git" - }, - "bugs": "https://github.com/blueimp/jQuery-File-Upload/issues", - "license": "MIT", - "dependencies": { - "jquery": ">=1.6", - "blueimp-tmpl": ">=2.5.4", - "blueimp-load-image": ">=1.13.0", - "blueimp-canvas-to-blob": ">=2.1.1" - }, - "main": [ - "js/jquery.fileupload.js" - ], - "ignore": [ - "/*.*", - "/cors", - "css/demo-ie8.css", - "css/demo.css", - "css/style.css", - "js/app.js", - "js/main.js", - "server", - "test" - ] -} diff --git a/bower_components/blueimp-file-upload/css/jquery.fileupload-noscript.css b/bower_components/blueimp-file-upload/css/jquery.fileupload-noscript.css deleted file mode 100644 index 1a75cbcc7d..0000000000 --- a/bower_components/blueimp-file-upload/css/jquery.fileupload-noscript.css +++ /dev/null @@ -1,22 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload Plugin NoScript CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -.fileinput-button input { - position: static; - opacity: 1; - filter: none; - font-size: inherit !important; - direction: inherit; -} -.fileinput-button span { - display: none; -} diff --git a/bower_components/blueimp-file-upload/css/jquery.fileupload-ui-noscript.css b/bower_components/blueimp-file-upload/css/jquery.fileupload-ui-noscript.css deleted file mode 100644 index 6ad2ad62e8..0000000000 --- a/bower_components/blueimp-file-upload/css/jquery.fileupload-ui-noscript.css +++ /dev/null @@ -1,17 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload UI Plugin NoScript CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -.fileinput-button i, -.fileupload-buttonbar .delete, -.fileupload-buttonbar .toggle { - display: none; -} diff --git a/bower_components/blueimp-file-upload/css/jquery.fileupload-ui.css b/bower_components/blueimp-file-upload/css/jquery.fileupload-ui.css deleted file mode 100644 index 95cca15799..0000000000 --- a/bower_components/blueimp-file-upload/css/jquery.fileupload-ui.css +++ /dev/null @@ -1,57 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload UI Plugin CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -.fileupload-buttonbar .btn, -.fileupload-buttonbar .toggle { - margin-bottom: 5px; -} -.progress-animated .progress-bar, -.progress-animated .bar { - background: url("../img/progressbar.gif") !important; - filter: none; -} -.fileupload-process { - float: right; - display: none; -} -.fileupload-processing .fileupload-process, -.files .processing .preview { - display: block; - width: 32px; - height: 32px; - background: url("../img/loading.gif") center no-repeat; - background-size: contain; -} -.files audio, -.files video { - max-width: 300px; -} - -@media (max-width: 767px) { - .fileupload-buttonbar .toggle, - .files .toggle, - .files .btn span { - display: none; - } - .files .name { - width: 80px; - word-wrap: break-word; - } - .files audio, - .files video { - max-width: 80px; - } - .files img, - .files canvas { - max-width: 100%; - } -} diff --git a/bower_components/blueimp-file-upload/css/jquery.fileupload.css b/bower_components/blueimp-file-upload/css/jquery.fileupload.css deleted file mode 100644 index f714c4d761..0000000000 --- a/bower_components/blueimp-file-upload/css/jquery.fileupload.css +++ /dev/null @@ -1,37 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload Plugin CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -.fileinput-button { - position: relative; - overflow: hidden; - display: inline-block; -} -.fileinput-button input { - position: absolute; - top: 0; - right: 0; - margin: 0; - opacity: 0; - -ms-filter: 'alpha(opacity=0)'; - font-size: 200px !important; - direction: ltr; - cursor: pointer; -} - -/* Fixes for IE < 8 */ -@media screen\9 { - .fileinput-button input { - filter: alpha(opacity=0); - font-size: 100%; - height: 100%; - } -} diff --git a/bower_components/blueimp-file-upload/img/loading.gif b/bower_components/blueimp-file-upload/img/loading.gif deleted file mode 100644 index 90f28cbdbb390b095e0d619cbe8d91208798e58f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3897 zcmZvfcR1T?8^ABwb_x$y{p1+>Yb$`dLr?0DW)y5y-57+?!PEJmyrlv?FQgU)K z^$+m(2RfoVbqYWS0G%+J=-j=drD>|8AS+KxL%o*)0)PM?>H*Mx2iHt~mnWZ=N>W+t zB|S>mk9=ZpYXc!T7UZI&`(-T$A=k$fH%{0DUBGwg!#nk?dE^E3gDApBHVTIQQFjd% z@8i*q&q?bJ^`q%$4G<}clybdVd-s{xsx+KupPg;W4bOvd7w*pJ;3oEg_PFlG;yL8+oShz**1=iDRZ*E(Q<#5R=A*XP5H_Y=1xJoCem%-&eKb6zV0ff z>legqW&{=3KP~Y8@#^3-+sNyevrSganP&X1J3*?KZrnP&@8z-DF>$5H-D+bme&k}k z=b(j;=N4)0R8Q6PZLj2pkrz)`V_M!E?dlE7mCX3opU@wz96Zurx4FmWL37=7TCuG9 z`GkMU?-=3W2u(X1pJ+1-D8$#M3IyxB%pDQB;2(M(eo?G5D~tz~6dTT3ItGfkWI&$< z&#Xo;(n_Kq+TlC@hpWm<{qK@(J8G++We#hbNi^se<6nV2;T4 zNDqriR!3dHvF711Txh1!vT{};LzV^uLH;6l)wR@$;KDJa`VOrZ+ccMJt-r043s&2t^bewdCj@xurE^v)WL95dQ z!~&h-7Yqg)+cJl7{=U2?_+E7^{JVv*AQbVh@R_RBt12dDs-#^ZEg=TA;LKR69HAv*?v1IO*LrVkl0@jm)`Yw>Ei;Cb<`Ge=JHj9g^C7+M?`w@g>lBl#q%UG z`}!%t5@M1z}?nB z*Tj60Y$FR82XGHd41y*mrUDeYh38hddS#Y*SGE@ZP#F{1I^fy8Y9@AY`0m};Z?t1t zvl@XaOzm2oTG^`5GXjVpu-2S*n4*kB%YDv4k&aM?8%y+(ZsV3)1mZz23da;)wH@7&`|Ado=<=+Ih>-Zw;?kA^kOQDkl*L3<;+? z<|M0rPu_-Pn1S;!V&9?Lji{M@0Mr#T9>Bk`lq`z3P)1&h>Ho;*au|vDvsVjp-qT0e z*UUfQ?Gpz$g9n2bA}a7zWNb7tHVzcwml}2{C{dOsk47z6B0pahT~Ju4TqIILBp68& zNmxrkQf(GrV^cF{Yg;>8XC;}Vr=*X4p!6N-twSOZPz$&PLr@%}eIZ zD~Lt1l{LgdQhk+JLo-cX3#q!jvb?Lbps#;m@ZHexhyq{?ko#d0H90e$K08CzSlrS) zWo6dl)B48d)b`HU-u~MD$9uai7`L)G>3*T{10aZCYqqL(n*#FQw0j@zj_M(+#c zyVt!MW{V+4vZ?)+0bac?NfTw2K79`dH+R{6nT57bfL{LIoi7Ag$(vz$+eju9d$7B zJG&Z{dzkyk1G(>p`qfHW#%#yxr>AUYK0KOvygWa*I`naEY4hR2MjvI{YUR`Z@fYi( z@9Pv+(V>39D#Fg`k5 zAvd8jHQhWpvV^33oSVP7D7mS*y)&b|zlvB`kzM|}?rCIuU=S7LEHVa$xY zK7bdtLDWL^SFw^20+{?ObjZr9KUx(0o0SBj_xZyoID`D^`r^?VSAjk}{spA|BzpP` z*n{4_ZGkmTM)r5(MRv|pCYSwXX2mHCy0;?C3wFJlI=Ud1imCcH_f;o6U;m-fmBwF| zxeaFV_F$)h(s28}mNsGy`ZELug@>6%MYAH2>|xIMd-hlX4DyCpx2_fIxR&9HR| zOo=QmRf1OdI|P;~oA(JKyL+Po2Z!q-^EdYxV{T>gIls8gp+tex@r9h|)?()zIoc!` z<-T`fILv04Ax z`;g5e;{OrXwNr!u98>p5O4V$kGW+Q$xy7wyq-@a{rvp{O^`YL+YM=2l%U^u_1752E zp+H?P>LBTO+=z(KcG8T2As`wFiAndgQX_?Fb7*g8g`&_orui5i9PU;=s2FX6FR#co zE~~Dn%@VI68P?So8?|?o7*sXav^B}J^pd-Y`tL^zz~d9Gy3^POy}9|$k4r+sE2(Oq zblxd%Y40fR?Z;>w9%bM7>MRCe0$W>a1Ua)1%pg!3Ef2a&@`nE+@wdq?gKL=1$&mG5 zc=xRumn_dNMN(4+^D|}e-AyHhgXp*ONwPc4Gw0}8JwtWo>9B=>)bspG45{b5-#-%j z#bmSnf0`_jYO*x%*xv*H2=qB?SKiue@ymKb_UgCALL`qak+Q!sG{OTY*|7f zF|)MHlBhu2NPE6kwyB8|f2F;hBma7LM{kKLHEAkujx^eiH``22TTe~S&x|jOJYJkz zURwXOva!82K-vG?eb}>euy=GkG2A=!`dKFQr>UIzv90~@YW71c)Ya_7S_1LJKEn=2 za9pc*k?HqfnAE_>s??ukJY)v<(7$cFuo!w*RiJ0d-5_)cb6+|EH)TS4n7hww64>2( zX`J7xEP2C2?VS3M{VJ)C5ViP4(Z`>SCWHnQ7<3K_6^4f~Mj(aUsSP$sAU+{HDVa|% zjWr{KUyB;EnHVu#ZXuo!TYQ1qV?~J(RTVWMwIb943uEgYoSL4Q{n!XxSX^4BEKja{T3;I9*k1pzv%fm_`3SgoyubBr<2{X$I3cSkh@M@_ zva>k51!i{|%nxvFY7J+Rb3l)ox#Z|V1(l_kR#-t@$lq>-DPeX*yA#-ro8yw)#5xk? z+50S$Vwd${7o-V=V1Vdg4meiIid>Ez$~Vn1NH?g!jTGE3bC@Dm6pR*Gx184p0Mz~i D^>?LD diff --git a/bower_components/blueimp-file-upload/img/progressbar.gif b/bower_components/blueimp-file-upload/img/progressbar.gif deleted file mode 100644 index fbcce6bc9abfcc7893e65ef20b3e77ee16ec37b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3323 zcmcK7eNYp38VB%=tbvu|O{=v;j+Z$Bg`>zI2IVD3Ovp-%sA$2LilR;|zMv9BB_t%- zylmcIh`dQLinJh9P{0Ja6I28#3PquysCf3GB1bBEXgfV_qnx8-n07k#kNmNdnVrvm zpZz`0v#~Ih7`{0em<2RA0wa|vr`!U1uI~v zF&O+zyfdOBoHdq{xOf7$)mN>lwcHgLVd-HT}JxYe94Gv(X_H__aHV~b7Ud4Pvk@t?84W?#& z+#WmNc5cUNoapyda#-P`2+n z-sGAbb$_$TW887}6BiJKaV$E-69{23pNeG2=_;8-CM9c*OiHOp|F9Igl_JQHqf)Y3 zhR7s(mQBh5ER~A&6^|p|OQqmd+(8 zZCb1qD*K}>!|B|YVuCsS=V0!N=?-)po(^$x*kptYX9N)B^~VJ^d7-@(M1WK;9&Liw~wO?NN(E}be} z`e0?=)*y}@Xkgx6S$ZS(8d|ifzK_`x?=N$)pWk;s0Ve?`qDX{%L@X0)6guz8Adh+qh(mq90aE=iAZp(dGccGHgmlkOke19p-dfci z@1Ni#x_B;&@l8icy*4roEXN?9&vh-w;n!Fp3;~Dn4#aOVi22tbo-KY@B1*TAgMsta zMh~68EXdvgJe$<9yOgn~E8aiQNo1$l`FUCI52J)nHW8+@|McSTe{t30@NpO^cv#waY+68ew4oT={#AGoA?Je^k$f`&u}bW zOjoRA_$utq5rspZ;5HXZvqE1#D) z5*M}9jPoq=-V*<cQuuK%yr=$XZl2k``40P4ol60hjb({{!c5Rtn3Urk4?uRRFNQuFGPhZnTBMO zu{W&|u4t53w>M}v(wtDAV!oHP(QY&~_X0qupII*-&GksTPf#SZ#4eaOCrG~hUblo4 zya(R){3rfyxiH2%l{iN;xS(G)OWOx8>UV9u+Vm_iN98oT20F}U!8utl4(lm=E)S6) zN~xM^Q?U;_!Ku4seH{bquy+4OfwlV{0C?tW&XteqJmP<|V)6eK9ey(~1Sbd1rgF1{ zd@&*xkriY}MS><}4DI}o3>d2jm74@fNpg-Vf(zPY?8nj=O8o$gp_gzr3~{MEs({T( z5+EcMIErR!`wwLZHp{c_?{mEhe%dlbNH8E^nm+5|owEXTR;S2+hYWR^j zWB!qbQWumI=vg;ZQvO$8W9QeMX~YdqNb^K%y~T6@tCTOlSM-j*$OOSSZX6cRfzPb* zP-Q}8v|6Q&$hAFfGA(f5>_XzuqhFP@h(0x@%#tsExSB}v(zy6^qc>xW*XCVMBPKf` zF>gsuD~+eKuRP{tWLo#OoJ2?fR@_0f5Olf}}Khc$ZhB$$3I7S9&n z^G{G0pQnju2Md}?zmbr').prop('href', options.postMessage)[0], - target = loc.protocol + '//' + loc.host, - xhrUpload = options.xhr().upload; - // IE always includes the port for the host property of a link - // element, but not in the location.host or origin property for the - // default http port 80 and https port 443, so we strip it: - if (/^(http:\/\/.+:80)|(https:\/\/.+:443)$/.test(target)) { - target = target.replace(/:(80|443)$/, ''); - } - return { - send: function (_, completeCallback) { - counter += 1; - var message = { - id: 'postmessage-transport-' + counter - }, - eventName = 'message.' + message.id; - iframe = $( - '' - ).bind('load', function () { - $.each(names, function (i, name) { - message[name] = options[name]; - }); - message.dataType = message.dataType.replace('postmessage ', ''); - $(window).bind(eventName, function (e) { - e = e.originalEvent; - var data = e.data, - ev; - if (e.origin === target && data.id === message.id) { - if (data.type === 'progress') { - ev = document.createEvent('Event'); - ev.initEvent(data.type, false, true); - $.extend(ev, data); - xhrUpload.dispatchEvent(ev); - } else { - completeCallback( - data.status, - data.statusText, - {postmessage: data.result}, - data.headers - ); - iframe.remove(); - $(window).unbind(eventName); - } - } - }); - iframe[0].contentWindow.postMessage( - message, - target - ); - }).appendTo(document.body); - }, - abort: function () { - if (iframe) { - iframe.remove(); - } - } - }; - } - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/cors/jquery.xdr-transport.js b/bower_components/blueimp-file-upload/js/cors/jquery.xdr-transport.js deleted file mode 100644 index d7a9d76b4f..0000000000 --- a/bower_components/blueimp-file-upload/js/cors/jquery.xdr-transport.js +++ /dev/null @@ -1,89 +0,0 @@ -/* - * jQuery XDomainRequest Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - * - * Based on Julian Aubourg's ajaxHooks xdr.js: - * https://github.com/jaubourg/ajaxHooks/ - */ - -/* global define, require, window, XDomainRequest */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - if (window.XDomainRequest && !$.support.cors) { - $.ajaxTransport(function (s) { - if (s.crossDomain && s.async) { - if (s.timeout) { - s.xdrTimeout = s.timeout; - delete s.timeout; - } - var xdr; - return { - send: function (headers, completeCallback) { - var addParamChar = /\?/.test(s.url) ? '&' : '?'; - function callback(status, statusText, responses, responseHeaders) { - xdr.onload = xdr.onerror = xdr.ontimeout = $.noop; - xdr = null; - completeCallback(status, statusText, responses, responseHeaders); - } - xdr = new XDomainRequest(); - // XDomainRequest only supports GET and POST: - if (s.type === 'DELETE') { - s.url = s.url + addParamChar + '_method=DELETE'; - s.type = 'POST'; - } else if (s.type === 'PUT') { - s.url = s.url + addParamChar + '_method=PUT'; - s.type = 'POST'; - } else if (s.type === 'PATCH') { - s.url = s.url + addParamChar + '_method=PATCH'; - s.type = 'POST'; - } - xdr.open(s.type, s.url); - xdr.onload = function () { - callback( - 200, - 'OK', - {text: xdr.responseText}, - 'Content-Type: ' + xdr.contentType - ); - }; - xdr.onerror = function () { - callback(404, 'Not Found'); - }; - if (s.xdrTimeout) { - xdr.ontimeout = function () { - callback(0, 'timeout'); - }; - xdr.timeout = s.xdrTimeout; - } - xdr.send((s.hasContent && s.data) || null); - }, - abort: function () { - if (xdr) { - xdr.onerror = $.noop(); - xdr.abort(); - } - } - }; - } - }); - } -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-angular.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-angular.js deleted file mode 100644 index b271bb8c33..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-angular.js +++ /dev/null @@ -1,435 +0,0 @@ -/* - * jQuery File Upload AngularJS Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, angular, require */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'angular', - './jquery.fileupload-image', - './jquery.fileupload-audio', - './jquery.fileupload-video', - './jquery.fileupload-validate' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('angular'), - require('./jquery.fileupload-image'), - require('./jquery.fileupload-audio'), - require('./jquery.fileupload-video'), - require('./jquery.fileupload-validate') - ); - } else { - factory(); - } -}(function () { - 'use strict'; - - angular.module('blueimp.fileupload', []) - - // The fileUpload service provides configuration options - // for the fileUpload directive and default handlers for - // File Upload events: - .provider('fileUpload', function () { - var scopeEvalAsync = function (expression) { - var scope = angular.element(this) - .fileupload('option', 'scope'); - // Schedule a new $digest cycle if not already inside of one - // and evaluate the given expression: - scope.$evalAsync(expression); - }, - addFileMethods = function (scope, data) { - var files = data.files, - file = files[0]; - angular.forEach(files, function (file, index) { - file._index = index; - file.$state = function () { - return data.state(); - }; - file.$processing = function () { - return data.processing(); - }; - file.$progress = function () { - return data.progress(); - }; - file.$response = function () { - return data.response(); - }; - }); - file.$submit = function () { - if (!file.error) { - return data.submit(); - } - }; - file.$cancel = function () { - return data.abort(); - }; - }, - $config; - $config = this.defaults = { - handleResponse: function (e, data) { - var files = data.result && data.result.files; - if (files) { - data.scope.replace(data.files, files); - } else if (data.errorThrown || - data.textStatus === 'error') { - data.files[0].error = data.errorThrown || - data.textStatus; - } - }, - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var scope = data.scope, - filesCopy = []; - angular.forEach(data.files, function (file) { - filesCopy.push(file); - }); - scope.$parent.$applyAsync(function () { - addFileMethods(scope, data); - var method = scope.option('prependFiles') ? - 'unshift' : 'push'; - Array.prototype[method].apply(scope.queue, data.files); - }); - data.process(function () { - return scope.process(data); - }).always(function () { - scope.$parent.$applyAsync(function () { - addFileMethods(scope, data); - scope.replace(filesCopy, data.files); - }); - }).then(function () { - if ((scope.option('autoUpload') || - data.autoUpload) && - data.autoUpload !== false) { - data.submit(); - } - }); - }, - done: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = this; - data.scope.$apply(function () { - data.handleResponse.call(that, e, data); - }); - }, - fail: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = this, - scope = data.scope; - if (data.errorThrown === 'abort') { - scope.clear(data.files); - return; - } - scope.$apply(function () { - data.handleResponse.call(that, e, data); - }); - }, - stop: scopeEvalAsync, - processstart: scopeEvalAsync, - processstop: scopeEvalAsync, - getNumberOfFiles: function () { - var scope = this.scope; - return scope.queue.length - scope.processing(); - }, - dataType: 'json', - autoUpload: false - }; - this.$get = [ - function () { - return { - defaults: $config - }; - } - ]; - }) - - // Format byte numbers to readable presentations: - .provider('formatFileSizeFilter', function () { - var $config = { - // Byte units following the IEC format - // http://en.wikipedia.org/wiki/Kilobyte - units: [ - {size: 1000000000, suffix: ' GB'}, - {size: 1000000, suffix: ' MB'}, - {size: 1000, suffix: ' KB'} - ] - }; - this.defaults = $config; - this.$get = function () { - return function (bytes) { - if (!angular.isNumber(bytes)) { - return ''; - } - var unit = true, - i = 0, - prefix, - suffix; - while (unit) { - unit = $config.units[i]; - prefix = unit.prefix || ''; - suffix = unit.suffix || ''; - if (i === $config.units.length - 1 || bytes >= unit.size) { - return prefix + (bytes / unit.size).toFixed(2) + suffix; - } - i += 1; - } - }; - }; - }) - - // The FileUploadController initializes the fileupload widget and - // provides scope methods to control the File Upload functionality: - .controller('FileUploadController', [ - '$scope', '$element', '$attrs', '$window', 'fileUpload', - function ($scope, $element, $attrs, $window, fileUpload) { - var uploadMethods = { - progress: function () { - return $element.fileupload('progress'); - }, - active: function () { - return $element.fileupload('active'); - }, - option: function (option, data) { - if (arguments.length === 1) { - return $element.fileupload('option', option); - } - $element.fileupload('option', option, data); - }, - add: function (data) { - return $element.fileupload('add', data); - }, - send: function (data) { - return $element.fileupload('send', data); - }, - process: function (data) { - return $element.fileupload('process', data); - }, - processing: function (data) { - return $element.fileupload('processing', data); - } - }; - $scope.disabled = !$window.jQuery.support.fileInput; - $scope.queue = $scope.queue || []; - $scope.clear = function (files) { - var queue = this.queue, - i = queue.length, - file = files, - length = 1; - if (angular.isArray(files)) { - file = files[0]; - length = files.length; - } - while (i) { - i -= 1; - if (queue[i] === file) { - return queue.splice(i, length); - } - } - }; - $scope.replace = function (oldFiles, newFiles) { - var queue = this.queue, - file = oldFiles[0], - i, - j; - for (i = 0; i < queue.length; i += 1) { - if (queue[i] === file) { - for (j = 0; j < newFiles.length; j += 1) { - queue[i + j] = newFiles[j]; - } - return; - } - } - }; - $scope.applyOnQueue = function (method) { - var list = this.queue.slice(0), - i, - file; - for (i = 0; i < list.length; i += 1) { - file = list[i]; - if (file[method]) { - file[method](); - } - } - }; - $scope.submit = function () { - this.applyOnQueue('$submit'); - }; - $scope.cancel = function () { - this.applyOnQueue('$cancel'); - }; - // Add upload methods to the scope: - angular.extend($scope, uploadMethods); - // The fileupload widget will initialize with - // the options provided via "data-"-parameters, - // as well as those given via options object: - $element.fileupload(angular.extend( - {scope: $scope}, - fileUpload.defaults - )).on('fileuploadadd', function (e, data) { - data.scope = $scope; - }).on('fileuploadfail', function (e, data) { - if (data.errorThrown === 'abort') { - return; - } - if (data.dataType && - data.dataType.indexOf('json') === data.dataType.length - 4) { - try { - data.result = angular.fromJson(data.jqXHR.responseText); - } catch (ignore) {} - } - }).on([ - 'fileuploadadd', - 'fileuploadsubmit', - 'fileuploadsend', - 'fileuploaddone', - 'fileuploadfail', - 'fileuploadalways', - 'fileuploadprogress', - 'fileuploadprogressall', - 'fileuploadstart', - 'fileuploadstop', - 'fileuploadchange', - 'fileuploadpaste', - 'fileuploaddrop', - 'fileuploaddragover', - 'fileuploadchunksend', - 'fileuploadchunkdone', - 'fileuploadchunkfail', - 'fileuploadchunkalways', - 'fileuploadprocessstart', - 'fileuploadprocess', - 'fileuploadprocessdone', - 'fileuploadprocessfail', - 'fileuploadprocessalways', - 'fileuploadprocessstop' - ].join(' '), function (e, data) { - $scope.$parent.$applyAsync(function () { - if ($scope.$emit(e.type, data).defaultPrevented) { - e.preventDefault(); - } - }); - }).on('remove', function () { - // Remove upload methods from the scope, - // when the widget is removed: - var method; - for (method in uploadMethods) { - if (uploadMethods.hasOwnProperty(method)) { - delete $scope[method]; - } - } - }); - // Observe option changes: - $scope.$watch( - $attrs.fileUpload, - function (newOptions) { - if (newOptions) { - $element.fileupload('option', newOptions); - } - } - ); - } - ]) - - // Provide File Upload progress feedback: - .controller('FileUploadProgressController', [ - '$scope', '$attrs', '$parse', - function ($scope, $attrs, $parse) { - var fn = $parse($attrs.fileUploadProgress), - update = function () { - var progress = fn($scope); - if (!progress || !progress.total) { - return; - } - $scope.num = Math.floor( - progress.loaded / progress.total * 100 - ); - }; - update(); - $scope.$watch( - $attrs.fileUploadProgress + '.loaded', - function (newValue, oldValue) { - if (newValue !== oldValue) { - update(); - } - } - ); - } - ]) - - // Display File Upload previews: - .controller('FileUploadPreviewController', [ - '$scope', '$element', '$attrs', - function ($scope, $element, $attrs) { - $scope.$watch( - $attrs.fileUploadPreview + '.preview', - function (preview) { - $element.empty(); - if (preview) { - $element.append(preview); - } - } - ); - } - ]) - - .directive('fileUpload', function () { - return { - controller: 'FileUploadController', - scope: true - }; - }) - - .directive('fileUploadProgress', function () { - return { - controller: 'FileUploadProgressController', - scope: true - }; - }) - - .directive('fileUploadPreview', function () { - return { - controller: 'FileUploadPreviewController' - }; - }) - - // Enhance the HTML5 download attribute to - // allow drag&drop of files to the desktop: - .directive('download', function () { - return function (scope, elm) { - elm.on('dragstart', function (e) { - try { - e.originalEvent.dataTransfer.setData( - 'DownloadURL', - [ - 'application/octet-stream', - elm.prop('download'), - elm.prop('href') - ].join(':') - ); - } catch (ignore) {} - }); - }; - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-audio.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-audio.js deleted file mode 100644 index 0ea741f23f..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-audio.js +++ /dev/null @@ -1,113 +0,0 @@ -/* - * jQuery File Upload Audio Preview Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, document */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'load-image', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-load-image/js/load-image'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.loadImage - ); - } -}(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadAudio', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - disabled: '@disableAudioPreview' - }, - { - action: 'setAudio', - name: '@audioPreviewName', - disabled: '@disableAudioPreview' - } - ); - - // The File Upload Audio Preview plugin extends the fileupload widget - // with audio preview functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The regular expression for the types of audio files to load, - // matched against the file type: - loadAudioFileTypes: /^audio\/.*$/ - }, - - _audioElement: document.createElement('audio'), - - processActions: { - - // Loads the audio file given via data.files and data.index - // as audio element if the browser supports playing it. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadAudio: function (data, options) { - if (options.disabled) { - return data; - } - var file = data.files[data.index], - url, - audio; - if (this._audioElement.canPlayType && - this._audioElement.canPlayType(file.type) && - ($.type(options.maxFileSize) !== 'number' || - file.size <= options.maxFileSize) && - (!options.fileTypes || - options.fileTypes.test(file.type))) { - url = loadImage.createObjectURL(file); - if (url) { - audio = this._audioElement.cloneNode(false); - audio.src = url; - audio.controls = true; - data.audio = audio; - return data; - } - } - return data; - }, - - // Sets the audio element as a property of the file object: - setAudio: function (data, options) { - if (data.audio && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.audio; - } - return data; - } - - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-image.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-image.js deleted file mode 100644 index 439bda1be5..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-image.js +++ /dev/null @@ -1,324 +0,0 @@ -/* - * jQuery File Upload Image Preview & Resize Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, Blob */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'load-image', - 'load-image-meta', - 'load-image-exif', - 'canvas-to-blob', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-load-image/js/load-image'), - require('blueimp-load-image/js/load-image-meta'), - require('blueimp-load-image/js/load-image-exif'), - require('blueimp-canvas-to-blob'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.loadImage - ); - } -}(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadImageMetaData', - disableImageHead: '@', - disableExif: '@', - disableExifThumbnail: '@', - disableExifSub: '@', - disableExifGps: '@', - disabled: '@disableImageMetaDataLoad' - }, - { - action: 'loadImage', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - noRevoke: '@', - disabled: '@disableImageLoad' - }, - { - action: 'resizeImage', - // Use "image" as prefix for the "@" options: - prefix: 'image', - maxWidth: '@', - maxHeight: '@', - minWidth: '@', - minHeight: '@', - crop: '@', - orientation: '@', - forceResize: '@', - disabled: '@disableImageResize' - }, - { - action: 'saveImage', - quality: '@imageQuality', - type: '@imageType', - disabled: '@disableImageResize' - }, - { - action: 'saveImageMetaData', - disabled: '@disableImageMetaDataSave' - }, - { - action: 'resizeImage', - // Use "preview" as prefix for the "@" options: - prefix: 'preview', - maxWidth: '@', - maxHeight: '@', - minWidth: '@', - minHeight: '@', - crop: '@', - orientation: '@', - thumbnail: '@', - canvas: '@', - disabled: '@disableImagePreview' - }, - { - action: 'setImage', - name: '@imagePreviewName', - disabled: '@disableImagePreview' - }, - { - action: 'deleteImageReferences', - disabled: '@disableImageReferencesDeletion' - } - ); - - // The File Upload Resize plugin extends the fileupload widget - // with image resize functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The regular expression for the types of images to load: - // matched against the file type: - loadImageFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/, - // The maximum file size of images to load: - loadImageMaxFileSize: 10000000, // 10MB - // The maximum width of resized images: - imageMaxWidth: 1920, - // The maximum height of resized images: - imageMaxHeight: 1080, - // Defines the image orientation (1-8) or takes the orientation - // value from Exif data if set to true: - imageOrientation: false, - // Define if resized images should be cropped or only scaled: - imageCrop: false, - // Disable the resize image functionality by default: - disableImageResize: true, - // The maximum width of the preview images: - previewMaxWidth: 80, - // The maximum height of the preview images: - previewMaxHeight: 80, - // Defines the preview orientation (1-8) or takes the orientation - // value from Exif data if set to true: - previewOrientation: true, - // Create the preview using the Exif data thumbnail: - previewThumbnail: true, - // Define if preview images should be cropped or only scaled: - previewCrop: false, - // Define if preview images should be resized as canvas elements: - previewCanvas: true - }, - - processActions: { - - // Loads the image given via data.files and data.index - // as img element, if the browser supports the File API. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadImage: function (data, options) { - if (options.disabled) { - return data; - } - var that = this, - file = data.files[data.index], - dfd = $.Deferred(); - if (($.type(options.maxFileSize) === 'number' && - file.size > options.maxFileSize) || - (options.fileTypes && - !options.fileTypes.test(file.type)) || - !loadImage( - file, - function (img) { - if (img.src) { - data.img = img; - } - dfd.resolveWith(that, [data]); - }, - options - )) { - return data; - } - return dfd.promise(); - }, - - // Resizes the image given as data.canvas or data.img - // and updates data.canvas or data.img with the resized image. - // Also stores the resized image as preview property. - // Accepts the options maxWidth, maxHeight, minWidth, - // minHeight, canvas and crop: - resizeImage: function (data, options) { - if (options.disabled || !(data.canvas || data.img)) { - return data; - } - options = $.extend({canvas: true}, options); - var that = this, - dfd = $.Deferred(), - img = (options.canvas && data.canvas) || data.img, - resolve = function (newImg) { - if (newImg && (newImg.width !== img.width || - newImg.height !== img.height || - options.forceResize)) { - data[newImg.getContext ? 'canvas' : 'img'] = newImg; - } - data.preview = newImg; - dfd.resolveWith(that, [data]); - }, - thumbnail; - if (data.exif) { - if (options.orientation === true) { - options.orientation = data.exif.get('Orientation'); - } - if (options.thumbnail) { - thumbnail = data.exif.get('Thumbnail'); - if (thumbnail) { - loadImage(thumbnail, resolve, options); - return dfd.promise(); - } - } - // Prevent orienting the same image twice: - if (data.orientation) { - delete options.orientation; - } else { - data.orientation = options.orientation; - } - } - if (img) { - resolve(loadImage.scale(img, options)); - return dfd.promise(); - } - return data; - }, - - // Saves the processed image given as data.canvas - // inplace at data.index of data.files: - saveImage: function (data, options) { - if (!data.canvas || options.disabled) { - return data; - } - var that = this, - file = data.files[data.index], - dfd = $.Deferred(); - if (data.canvas.toBlob) { - data.canvas.toBlob( - function (blob) { - if (!blob.name) { - if (file.type === blob.type) { - blob.name = file.name; - } else if (file.name) { - blob.name = file.name.replace( - /\.\w+$/, - '.' + blob.type.substr(6) - ); - } - } - // Don't restore invalid meta data: - if (file.type !== blob.type) { - delete data.imageHead; - } - // Store the created blob at the position - // of the original file in the files list: - data.files[data.index] = blob; - dfd.resolveWith(that, [data]); - }, - options.type || file.type, - options.quality - ); - } else { - return data; - } - return dfd.promise(); - }, - - loadImageMetaData: function (data, options) { - if (options.disabled) { - return data; - } - var that = this, - dfd = $.Deferred(); - loadImage.parseMetaData(data.files[data.index], function (result) { - $.extend(data, result); - dfd.resolveWith(that, [data]); - }, options); - return dfd.promise(); - }, - - saveImageMetaData: function (data, options) { - if (!(data.imageHead && data.canvas && - data.canvas.toBlob && !options.disabled)) { - return data; - } - var file = data.files[data.index], - blob = new Blob([ - data.imageHead, - // Resized images always have a head size of 20 bytes, - // including the JPEG marker and a minimal JFIF header: - this._blobSlice.call(file, 20) - ], {type: file.type}); - blob.name = file.name; - data.files[data.index] = blob; - return data; - }, - - // Sets the resized version of the image as a property of the - // file object, must be called after "saveImage": - setImage: function (data, options) { - if (data.preview && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.preview; - } - return data; - }, - - deleteImageReferences: function (data, options) { - if (!options.disabled) { - delete data.img; - delete data.canvas; - delete data.preview; - delete data.imageHead; - } - return data; - } - - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-jquery-ui.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-jquery-ui.js deleted file mode 100755 index 2ceaabff52..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-jquery-ui.js +++ /dev/null @@ -1,161 +0,0 @@ -/* - * jQuery File Upload jQuery UI Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - './jquery.fileupload-ui' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./jquery.fileupload-ui') - ); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - processdone: function (e, data) { - data.context.find('.start').button('enable'); - }, - progress: function (e, data) { - if (data.context) { - data.context.find('.progress').progressbar( - 'option', - 'value', - parseInt(data.loaded / data.total * 100, 10) - ); - } - }, - progressall: function (e, data) { - var $this = $(this); - $this.find('.fileupload-progress') - .find('.progress').progressbar( - 'option', - 'value', - parseInt(data.loaded / data.total * 100, 10) - ).end() - .find('.progress-extended').each(function () { - $(this).html( - ($this.data('blueimp-fileupload') || - $this.data('fileupload')) - ._renderExtendedProgress(data) - ); - }); - } - }, - - _renderUpload: function (func, files) { - var node = this._super(func, files), - showIconText = $(window).width() > 480; - node.find('.progress').empty().progressbar(); - node.find('.start').button({ - icons: {primary: 'ui-icon-circle-arrow-e'}, - text: showIconText - }); - node.find('.cancel').button({ - icons: {primary: 'ui-icon-cancel'}, - text: showIconText - }); - if (node.hasClass('fade')) { - node.hide(); - } - return node; - }, - - _renderDownload: function (func, files) { - var node = this._super(func, files), - showIconText = $(window).width() > 480; - node.find('.delete').button({ - icons: {primary: 'ui-icon-trash'}, - text: showIconText - }); - if (node.hasClass('fade')) { - node.hide(); - } - return node; - }, - - _startHandler: function (e) { - $(e.currentTarget).button('disable'); - this._super(e); - }, - - _transition: function (node) { - var deferred = $.Deferred(); - if (node.hasClass('fade')) { - node.fadeToggle( - this.options.transitionDuration, - this.options.transitionEasing, - function () { - deferred.resolveWith(node); - } - ); - } else { - deferred.resolveWith(node); - } - return deferred; - }, - - _create: function () { - this._super(); - this.element - .find('.fileupload-buttonbar') - .find('.fileinput-button').each(function () { - var input = $(this).find('input:file').detach(); - $(this) - .button({icons: {primary: 'ui-icon-plusthick'}}) - .append(input); - }) - .end().find('.start') - .button({icons: {primary: 'ui-icon-circle-arrow-e'}}) - .end().find('.cancel') - .button({icons: {primary: 'ui-icon-cancel'}}) - .end().find('.delete') - .button({icons: {primary: 'ui-icon-trash'}}) - .end().find('.progress').progressbar(); - }, - - _destroy: function () { - this.element - .find('.fileupload-buttonbar') - .find('.fileinput-button').each(function () { - var input = $(this).find('input:file').detach(); - $(this) - .button('destroy') - .append(input); - }) - .end().find('.start') - .button('destroy') - .end().find('.cancel') - .button('destroy') - .end().find('.delete') - .button('destroy') - .end().find('.progress').progressbar('destroy'); - this._super(); - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-process.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-process.js deleted file mode 100644 index 2c9ea65083..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-process.js +++ /dev/null @@ -1,178 +0,0 @@ -/* - * jQuery File Upload Processing Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - './jquery.fileupload' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./jquery.fileupload') - ); - } else { - // Browser globals: - factory( - window.jQuery - ); - } -}(function ($) { - 'use strict'; - - var originalAdd = $.blueimp.fileupload.prototype.options.add; - - // The File Upload Processing plugin extends the fileupload widget - // with file processing functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The list of processing actions: - processQueue: [ - /* - { - action: 'log', - type: 'debug' - } - */ - ], - add: function (e, data) { - var $this = $(this); - data.process(function () { - return $this.fileupload('process', data); - }); - originalAdd.call(this, e, data); - } - }, - - processActions: { - /* - log: function (data, options) { - console[options.type]( - 'Processing "' + data.files[data.index].name + '"' - ); - } - */ - }, - - _processFile: function (data, originalData) { - var that = this, - dfd = $.Deferred().resolveWith(that, [data]), - chain = dfd.promise(); - this._trigger('process', null, data); - $.each(data.processQueue, function (i, settings) { - var func = function (data) { - if (originalData.errorThrown) { - return $.Deferred() - .rejectWith(that, [originalData]).promise(); - } - return that.processActions[settings.action].call( - that, - data, - settings - ); - }; - chain = chain.then(func, settings.always && func); - }); - chain - .done(function () { - that._trigger('processdone', null, data); - that._trigger('processalways', null, data); - }) - .fail(function () { - that._trigger('processfail', null, data); - that._trigger('processalways', null, data); - }); - return chain; - }, - - // Replaces the settings of each processQueue item that - // are strings starting with an "@", using the remaining - // substring as key for the option map, - // e.g. "@autoUpload" is replaced with options.autoUpload: - _transformProcessQueue: function (options) { - var processQueue = []; - $.each(options.processQueue, function () { - var settings = {}, - action = this.action, - prefix = this.prefix === true ? action : this.prefix; - $.each(this, function (key, value) { - if ($.type(value) === 'string' && - value.charAt(0) === '@') { - settings[key] = options[ - value.slice(1) || (prefix ? prefix + - key.charAt(0).toUpperCase() + key.slice(1) : key) - ]; - } else { - settings[key] = value; - } - - }); - processQueue.push(settings); - }); - options.processQueue = processQueue; - }, - - // Returns the number of files currently in the processsing queue: - processing: function () { - return this._processing; - }, - - // Processes the files given as files property of the data parameter, - // returns a Promise object that allows to bind callbacks: - process: function (data) { - var that = this, - options = $.extend({}, this.options, data); - if (options.processQueue && options.processQueue.length) { - this._transformProcessQueue(options); - if (this._processing === 0) { - this._trigger('processstart'); - } - $.each(data.files, function (index) { - var opts = index ? $.extend({}, options) : options, - func = function () { - if (data.errorThrown) { - return $.Deferred() - .rejectWith(that, [data]).promise(); - } - return that._processFile(opts, data); - }; - opts.index = index; - that._processing += 1; - that._processingQueue = that._processingQueue.then(func, func) - .always(function () { - that._processing -= 1; - if (that._processing === 0) { - that._trigger('processstop'); - } - }); - }); - } - return this._processingQueue; - }, - - _create: function () { - this._super(); - this._processing = 0; - this._processingQueue = $.Deferred().resolveWith(this) - .promise(); - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-ui.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-ui.js deleted file mode 100644 index b380870a3a..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-ui.js +++ /dev/null @@ -1,713 +0,0 @@ -/* - * jQuery File Upload User Interface Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'blueimp-tmpl', - './jquery.fileupload-image', - './jquery.fileupload-audio', - './jquery.fileupload-video', - './jquery.fileupload-validate' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-tmpl'), - require('./jquery.fileupload-image'), - require('./jquery.fileupload-video'), - require('./jquery.fileupload-validate') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.tmpl - ); - } -}(function ($, tmpl) { - 'use strict'; - - $.blueimp.fileupload.prototype._specialOptions.push( - 'filesContainer', - 'uploadTemplateId', - 'downloadTemplateId' - ); - - // The UI version extends the file upload widget - // and adds complete user interface interaction: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // By default, files added to the widget are uploaded as soon - // as the user clicks on the start buttons. To enable automatic - // uploads, set the following option to true: - autoUpload: false, - // The ID of the upload template: - uploadTemplateId: 'template-upload', - // The ID of the download template: - downloadTemplateId: 'template-download', - // The container for the list of files. If undefined, it is set to - // an element with class "files" inside of the widget element: - filesContainer: undefined, - // By default, files are appended to the files container. - // Set the following option to true, to prepend files instead: - prependFiles: false, - // The expected data type of the upload response, sets the dataType - // option of the $.ajax upload requests: - dataType: 'json', - - // Error and info messages: - messages: { - unknownError: 'Unknown error' - }, - - // Function returning the current number of files, - // used by the maxNumberOfFiles validation: - getNumberOfFiles: function () { - return this.filesContainer.children() - .not('.processing').length; - }, - - // Callback to retrieve the list of files from the server response: - getFilesFromResponse: function (data) { - if (data.result && $.isArray(data.result.files)) { - return data.result.files; - } - return []; - }, - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop or add API call). - // See the basic file upload widget for more information: - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var $this = $(this), - that = $this.data('blueimp-fileupload') || - $this.data('fileupload'), - options = that.options; - data.context = that._renderUpload(data.files) - .data('data', data) - .addClass('processing'); - options.filesContainer[ - options.prependFiles ? 'prepend' : 'append' - ](data.context); - that._forceReflow(data.context); - that._transition(data.context); - data.process(function () { - return $this.fileupload('process', data); - }).always(function () { - data.context.each(function (index) { - $(this).find('.size').text( - that._formatFileSize(data.files[index].size) - ); - }).removeClass('processing'); - that._renderPreviews(data); - }).done(function () { - data.context.find('.start').prop('disabled', false); - if ((that._trigger('added', e, data) !== false) && - (options.autoUpload || data.autoUpload) && - data.autoUpload !== false) { - data.submit(); - } - }).fail(function () { - if (data.files.error) { - data.context.each(function (index) { - var error = data.files[index].error; - if (error) { - $(this).find('.error').text(error); - } - }); - } - }); - }, - // Callback for the start of each file upload request: - send: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'); - if (data.context && data.dataType && - data.dataType.substr(0, 6) === 'iframe') { - // Iframe Transport does not support progress events. - // In lack of an indeterminate progress bar, we set - // the progress to 100%, showing the full animated bar: - data.context - .find('.progress').addClass( - !$.support.transition && 'progress-animated' - ) - .attr('aria-valuenow', 100) - .children().first().css( - 'width', - '100%' - ); - } - return that._trigger('sent', e, data); - }, - // Callback for successful uploads: - done: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - getFilesFromResponse = data.getFilesFromResponse || - that.options.getFilesFromResponse, - files = getFilesFromResponse(data), - template, - deferred; - if (data.context) { - data.context.each(function (index) { - var file = files[index] || - {error: 'Empty file upload result'}; - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done( - function () { - var node = $(this); - template = that._renderDownload([file]) - .replaceAll(node); - that._forceReflow(template); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('completed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - ); - }); - } else { - template = that._renderDownload(files)[ - that.options.prependFiles ? 'prependTo' : 'appendTo' - ](that.options.filesContainer); - that._forceReflow(template); - deferred = that._addFinishedDeferreds(); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('completed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - }, - // Callback for failed (abort or error) uploads: - fail: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - template, - deferred; - if (data.context) { - data.context.each(function (index) { - if (data.errorThrown !== 'abort') { - var file = data.files[index]; - file.error = file.error || data.errorThrown || - data.i18n('unknownError'); - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done( - function () { - var node = $(this); - template = that._renderDownload([file]) - .replaceAll(node); - that._forceReflow(template); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - ); - } else { - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done( - function () { - $(this).remove(); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - }); - } else if (data.errorThrown !== 'abort') { - data.context = that._renderUpload(data.files)[ - that.options.prependFiles ? 'prependTo' : 'appendTo' - ](that.options.filesContainer) - .data('data', data); - that._forceReflow(data.context); - deferred = that._addFinishedDeferreds(); - that._transition(data.context).done( - function () { - data.context = $(this); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } else { - that._trigger('failed', e, data); - that._trigger('finished', e, data); - that._addFinishedDeferreds().resolve(); - } - }, - // Callback for upload progress events: - progress: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var progress = Math.floor(data.loaded / data.total * 100); - if (data.context) { - data.context.each(function () { - $(this).find('.progress') - .attr('aria-valuenow', progress) - .children().first().css( - 'width', - progress + '%' - ); - }); - } - }, - // Callback for global upload progress events: - progressall: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var $this = $(this), - progress = Math.floor(data.loaded / data.total * 100), - globalProgressNode = $this.find('.fileupload-progress'), - extendedProgressNode = globalProgressNode - .find('.progress-extended'); - if (extendedProgressNode.length) { - extendedProgressNode.html( - ($this.data('blueimp-fileupload') || $this.data('fileupload')) - ._renderExtendedProgress(data) - ); - } - globalProgressNode - .find('.progress') - .attr('aria-valuenow', progress) - .children().first().css( - 'width', - progress + '%' - ); - }, - // Callback for uploads start, equivalent to the global ajaxStart event: - start: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'); - that._resetFinishedDeferreds(); - that._transition($(this).find('.fileupload-progress')).done( - function () { - that._trigger('started', e); - } - ); - }, - // Callback for uploads stop, equivalent to the global ajaxStop event: - stop: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - deferred = that._addFinishedDeferreds(); - $.when.apply($, that._getFinishedDeferreds()) - .done(function () { - that._trigger('stopped', e); - }); - that._transition($(this).find('.fileupload-progress')).done( - function () { - $(this).find('.progress') - .attr('aria-valuenow', '0') - .children().first().css('width', '0%'); - $(this).find('.progress-extended').html(' '); - deferred.resolve(); - } - ); - }, - processstart: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - $(this).addClass('fileupload-processing'); - }, - processstop: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - $(this).removeClass('fileupload-processing'); - }, - // Callback for file deletion: - destroy: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - removeNode = function () { - that._transition(data.context).done( - function () { - $(this).remove(); - that._trigger('destroyed', e, data); - } - ); - }; - if (data.url) { - data.dataType = data.dataType || that.options.dataType; - $.ajax(data).done(removeNode).fail(function () { - that._trigger('destroyfailed', e, data); - }); - } else { - removeNode(); - } - } - }, - - _resetFinishedDeferreds: function () { - this._finishedUploads = []; - }, - - _addFinishedDeferreds: function (deferred) { - if (!deferred) { - deferred = $.Deferred(); - } - this._finishedUploads.push(deferred); - return deferred; - }, - - _getFinishedDeferreds: function () { - return this._finishedUploads; - }, - - // Link handler, that allows to download files - // by drag & drop of the links to the desktop: - _enableDragToDesktop: function () { - var link = $(this), - url = link.prop('href'), - name = link.prop('download'), - type = 'application/octet-stream'; - link.bind('dragstart', function (e) { - try { - e.originalEvent.dataTransfer.setData( - 'DownloadURL', - [type, name, url].join(':') - ); - } catch (ignore) {} - }); - }, - - _formatFileSize: function (bytes) { - if (typeof bytes !== 'number') { - return ''; - } - if (bytes >= 1000000000) { - return (bytes / 1000000000).toFixed(2) + ' GB'; - } - if (bytes >= 1000000) { - return (bytes / 1000000).toFixed(2) + ' MB'; - } - return (bytes / 1000).toFixed(2) + ' KB'; - }, - - _formatBitrate: function (bits) { - if (typeof bits !== 'number') { - return ''; - } - if (bits >= 1000000000) { - return (bits / 1000000000).toFixed(2) + ' Gbit/s'; - } - if (bits >= 1000000) { - return (bits / 1000000).toFixed(2) + ' Mbit/s'; - } - if (bits >= 1000) { - return (bits / 1000).toFixed(2) + ' kbit/s'; - } - return bits.toFixed(2) + ' bit/s'; - }, - - _formatTime: function (seconds) { - var date = new Date(seconds * 1000), - days = Math.floor(seconds / 86400); - days = days ? days + 'd ' : ''; - return days + - ('0' + date.getUTCHours()).slice(-2) + ':' + - ('0' + date.getUTCMinutes()).slice(-2) + ':' + - ('0' + date.getUTCSeconds()).slice(-2); - }, - - _formatPercentage: function (floatValue) { - return (floatValue * 100).toFixed(2) + ' %'; - }, - - _renderExtendedProgress: function (data) { - return this._formatBitrate(data.bitrate) + ' | ' + - this._formatTime( - (data.total - data.loaded) * 8 / data.bitrate - ) + ' | ' + - this._formatPercentage( - data.loaded / data.total - ) + ' | ' + - this._formatFileSize(data.loaded) + ' / ' + - this._formatFileSize(data.total); - }, - - _renderTemplate: function (func, files) { - if (!func) { - return $(); - } - var result = func({ - files: files, - formatFileSize: this._formatFileSize, - options: this.options - }); - if (result instanceof $) { - return result; - } - return $(this.options.templatesContainer).html(result).children(); - }, - - _renderPreviews: function (data) { - data.context.find('.preview').each(function (index, elm) { - $(elm).append(data.files[index].preview); - }); - }, - - _renderUpload: function (files) { - return this._renderTemplate( - this.options.uploadTemplate, - files - ); - }, - - _renderDownload: function (files) { - return this._renderTemplate( - this.options.downloadTemplate, - files - ).find('a[download]').each(this._enableDragToDesktop).end(); - }, - - _startHandler: function (e) { - e.preventDefault(); - var button = $(e.currentTarget), - template = button.closest('.template-upload'), - data = template.data('data'); - button.prop('disabled', true); - if (data && data.submit) { - data.submit(); - } - }, - - _cancelHandler: function (e) { - e.preventDefault(); - var template = $(e.currentTarget) - .closest('.template-upload,.template-download'), - data = template.data('data') || {}; - data.context = data.context || template; - if (data.abort) { - data.abort(); - } else { - data.errorThrown = 'abort'; - this._trigger('fail', e, data); - } - }, - - _deleteHandler: function (e) { - e.preventDefault(); - var button = $(e.currentTarget); - this._trigger('destroy', e, $.extend({ - context: button.closest('.template-download'), - type: 'DELETE' - }, button.data())); - }, - - _forceReflow: function (node) { - return $.support.transition && node.length && - node[0].offsetWidth; - }, - - _transition: function (node) { - var dfd = $.Deferred(); - if ($.support.transition && node.hasClass('fade') && node.is(':visible')) { - node.bind( - $.support.transition.end, - function (e) { - // Make sure we don't respond to other transitions events - // in the container element, e.g. from button elements: - if (e.target === node[0]) { - node.unbind($.support.transition.end); - dfd.resolveWith(node); - } - } - ).toggleClass('in'); - } else { - node.toggleClass('in'); - dfd.resolveWith(node); - } - return dfd; - }, - - _initButtonBarEventHandlers: function () { - var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'), - filesList = this.options.filesContainer; - this._on(fileUploadButtonBar.find('.start'), { - click: function (e) { - e.preventDefault(); - filesList.find('.start').click(); - } - }); - this._on(fileUploadButtonBar.find('.cancel'), { - click: function (e) { - e.preventDefault(); - filesList.find('.cancel').click(); - } - }); - this._on(fileUploadButtonBar.find('.delete'), { - click: function (e) { - e.preventDefault(); - filesList.find('.toggle:checked') - .closest('.template-download') - .find('.delete').click(); - fileUploadButtonBar.find('.toggle') - .prop('checked', false); - } - }); - this._on(fileUploadButtonBar.find('.toggle'), { - change: function (e) { - filesList.find('.toggle').prop( - 'checked', - $(e.currentTarget).is(':checked') - ); - } - }); - }, - - _destroyButtonBarEventHandlers: function () { - this._off( - this.element.find('.fileupload-buttonbar') - .find('.start, .cancel, .delete'), - 'click' - ); - this._off( - this.element.find('.fileupload-buttonbar .toggle'), - 'change.' - ); - }, - - _initEventHandlers: function () { - this._super(); - this._on(this.options.filesContainer, { - 'click .start': this._startHandler, - 'click .cancel': this._cancelHandler, - 'click .delete': this._deleteHandler - }); - this._initButtonBarEventHandlers(); - }, - - _destroyEventHandlers: function () { - this._destroyButtonBarEventHandlers(); - this._off(this.options.filesContainer, 'click'); - this._super(); - }, - - _enableFileInputButton: function () { - this.element.find('.fileinput-button input') - .prop('disabled', false) - .parent().removeClass('disabled'); - }, - - _disableFileInputButton: function () { - this.element.find('.fileinput-button input') - .prop('disabled', true) - .parent().addClass('disabled'); - }, - - _initTemplates: function () { - var options = this.options; - options.templatesContainer = this.document[0].createElement( - options.filesContainer.prop('nodeName') - ); - if (tmpl) { - if (options.uploadTemplateId) { - options.uploadTemplate = tmpl(options.uploadTemplateId); - } - if (options.downloadTemplateId) { - options.downloadTemplate = tmpl(options.downloadTemplateId); - } - } - }, - - _initFilesContainer: function () { - var options = this.options; - if (options.filesContainer === undefined) { - options.filesContainer = this.element.find('.files'); - } else if (!(options.filesContainer instanceof $)) { - options.filesContainer = $(options.filesContainer); - } - }, - - _initSpecialOptions: function () { - this._super(); - this._initFilesContainer(); - this._initTemplates(); - }, - - _create: function () { - this._super(); - this._resetFinishedDeferreds(); - if (!$.support.fileInput) { - this._disableFileInputButton(); - } - }, - - enable: function () { - var wasDisabled = false; - if (this.options.disabled) { - wasDisabled = true; - } - this._super(); - if (wasDisabled) { - this.element.find('input, button').prop('disabled', false); - this._enableFileInputButton(); - } - }, - - disable: function () { - if (!this.options.disabled) { - this.element.find('input, button').prop('disabled', true); - this._disableFileInputButton(); - } - this._super(); - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-validate.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-validate.js deleted file mode 100644 index 0151f057fc..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-validate.js +++ /dev/null @@ -1,125 +0,0 @@ -/* - * jQuery File Upload Validation Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery - ); - } -}(function ($) { - 'use strict'; - - // Append to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.push( - { - action: 'validate', - // Always trigger this action, - // even if the previous action was rejected: - always: true, - // Options taken from the global options map: - acceptFileTypes: '@', - maxFileSize: '@', - minFileSize: '@', - maxNumberOfFiles: '@', - disabled: '@disableValidation' - } - ); - - // The File Upload Validation plugin extends the fileupload widget - // with file validation functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - /* - // The regular expression for allowed file types, matches - // against either file type or file name: - acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, - // The maximum allowed file size in bytes: - maxFileSize: 10000000, // 10 MB - // The minimum allowed file size in bytes: - minFileSize: undefined, // No minimal file size - // The limit of files to be uploaded: - maxNumberOfFiles: 10, - */ - - // Function returning the current number of files, - // has to be overriden for maxNumberOfFiles validation: - getNumberOfFiles: $.noop, - - // Error and info messages: - messages: { - maxNumberOfFiles: 'Maximum number of files exceeded', - acceptFileTypes: 'File type not allowed', - maxFileSize: 'File is too large', - minFileSize: 'File is too small' - } - }, - - processActions: { - - validate: function (data, options) { - if (options.disabled) { - return data; - } - var dfd = $.Deferred(), - settings = this.options, - file = data.files[data.index], - fileSize; - if (options.minFileSize || options.maxFileSize) { - fileSize = file.size; - } - if ($.type(options.maxNumberOfFiles) === 'number' && - (settings.getNumberOfFiles() || 0) + data.files.length > - options.maxNumberOfFiles) { - file.error = settings.i18n('maxNumberOfFiles'); - } else if (options.acceptFileTypes && - !(options.acceptFileTypes.test(file.type) || - options.acceptFileTypes.test(file.name))) { - file.error = settings.i18n('acceptFileTypes'); - } else if (fileSize > options.maxFileSize) { - file.error = settings.i18n('maxFileSize'); - } else if ($.type(fileSize) === 'number' && - fileSize < options.minFileSize) { - file.error = settings.i18n('minFileSize'); - } else { - delete file.error; - } - if (file.error || data.files.error) { - data.files.error = true; - dfd.rejectWith(this, [data]); - } else { - dfd.resolveWith(this, [data]); - } - return dfd.promise(); - } - - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload-video.js b/bower_components/blueimp-file-upload/js/jquery.fileupload-video.js deleted file mode 100644 index f6f9161c93..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload-video.js +++ /dev/null @@ -1,113 +0,0 @@ -/* - * jQuery File Upload Video Preview Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, document */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'load-image', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-load-image/js/load-image'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.loadImage - ); - } -}(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadVideo', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - disabled: '@disableVideoPreview' - }, - { - action: 'setVideo', - name: '@videoPreviewName', - disabled: '@disableVideoPreview' - } - ); - - // The File Upload Video Preview plugin extends the fileupload widget - // with video preview functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The regular expression for the types of video files to load, - // matched against the file type: - loadVideoFileTypes: /^video\/.*$/ - }, - - _videoElement: document.createElement('video'), - - processActions: { - - // Loads the video file given via data.files and data.index - // as video element if the browser supports playing it. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadVideo: function (data, options) { - if (options.disabled) { - return data; - } - var file = data.files[data.index], - url, - video; - if (this._videoElement.canPlayType && - this._videoElement.canPlayType(file.type) && - ($.type(options.maxFileSize) !== 'number' || - file.size <= options.maxFileSize) && - (!options.fileTypes || - options.fileTypes.test(file.type))) { - url = loadImage.createObjectURL(file); - if (url) { - video = this._videoElement.cloneNode(false); - video.src = url; - video.controls = true; - data.video = video; - return data; - } - } - return data; - }, - - // Sets the video element as a property of the file object: - setVideo: function (data, options) { - if (data.video && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.video; - } - return data; - } - - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.fileupload.js b/bower_components/blueimp-file-upload/js/jquery.fileupload.js deleted file mode 100644 index 285c7bc651..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.fileupload.js +++ /dev/null @@ -1,1482 +0,0 @@ -/* - * jQuery File Upload Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, document, location, Blob, FormData */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'jquery-ui/ui/widget' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./vendor/jquery.ui.widget') - ); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - // Detect file input support, based on - // http://viljamis.com/blog/2012/file-upload-support-on-mobile/ - $.support.fileInput = !(new RegExp( - // Handle devices which give false positives for the feature detection: - '(Android (1\\.[0156]|2\\.[01]))' + - '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + - '|(w(eb)?OSBrowser)|(webOS)' + - '|(Kindle/(1\\.0|2\\.[05]|3\\.0))' - ).test(window.navigator.userAgent) || - // Feature detection for all other devices: - $('').prop('disabled')); - - // The FileReader API is not actually used, but works as feature detection, - // as some Safari versions (5?) support XHR file uploads via the FormData API, - // but not non-multipart XHR file uploads. - // window.XMLHttpRequestUpload is not available on IE10, so we check for - // window.ProgressEvent instead to detect XHR2 file upload capability: - $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader); - $.support.xhrFormDataFileUpload = !!window.FormData; - - // Detect support for Blob slicing (required for chunked uploads): - $.support.blobSlice = window.Blob && (Blob.prototype.slice || - Blob.prototype.webkitSlice || Blob.prototype.mozSlice); - - // Helper function to create drag handlers for dragover/dragenter/dragleave: - function getDragHandler(type) { - var isDragOver = type === 'dragover'; - return function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var dataTransfer = e.dataTransfer; - if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 && - this._trigger( - type, - $.Event(type, {delegatedEvent: e}) - ) !== false) { - e.preventDefault(); - if (isDragOver) { - dataTransfer.dropEffect = 'copy'; - } - } - }; - } - - // The fileupload widget listens for change events on file input fields defined - // via fileInput setting and paste or drop events of the given dropZone. - // In addition to the default jQuery Widget methods, the fileupload widget - // exposes the "add" and "send" methods, to add or directly send files using - // the fileupload API. - // By default, files added via file input selection, paste, drag & drop or - // "add" method are uploaded immediately, but it is possible to override - // the "add" callback option to queue file uploads. - $.widget('blueimp.fileupload', { - - options: { - // The drop target element(s), by the default the complete document. - // Set to null to disable drag & drop support: - dropZone: $(document), - // The paste target element(s), by the default undefined. - // Set to a DOM node or jQuery object to enable file pasting: - pasteZone: undefined, - // The file input field(s), that are listened to for change events. - // If undefined, it is set to the file input fields inside - // of the widget element on plugin initialization. - // Set to null to disable the change listener. - fileInput: undefined, - // By default, the file input field is replaced with a clone after - // each input field change event. This is required for iframe transport - // queues and allows change events to be fired for the same file - // selection, but can be disabled by setting the following option to false: - replaceFileInput: true, - // The parameter name for the file form data (the request argument name). - // If undefined or empty, the name property of the file input field is - // used, or "files[]" if the file input name property is also empty, - // can be a string or an array of strings: - paramName: undefined, - // By default, each file of a selection is uploaded using an individual - // request for XHR type uploads. Set to false to upload file - // selections in one request each: - singleFileUploads: true, - // To limit the number of files uploaded with one XHR request, - // set the following option to an integer greater than 0: - limitMultiFileUploads: undefined, - // The following option limits the number of files uploaded with one - // XHR request to keep the request size under or equal to the defined - // limit in bytes: - limitMultiFileUploadSize: undefined, - // Multipart file uploads add a number of bytes to each uploaded file, - // therefore the following option adds an overhead for each file used - // in the limitMultiFileUploadSize configuration: - limitMultiFileUploadSizeOverhead: 512, - // Set the following option to true to issue all file upload requests - // in a sequential order: - sequentialUploads: false, - // To limit the number of concurrent uploads, - // set the following option to an integer greater than 0: - limitConcurrentUploads: undefined, - // Set the following option to true to force iframe transport uploads: - forceIframeTransport: false, - // Set the following option to the location of a redirect url on the - // origin server, for cross-domain iframe transport uploads: - redirect: undefined, - // The parameter name for the redirect url, sent as part of the form - // data and set to 'redirect' if this option is empty: - redirectParamName: undefined, - // Set the following option to the location of a postMessage window, - // to enable postMessage transport uploads: - postMessage: undefined, - // By default, XHR file uploads are sent as multipart/form-data. - // The iframe transport is always using multipart/form-data. - // Set to false to enable non-multipart XHR uploads: - multipart: true, - // To upload large files in smaller chunks, set the following option - // to a preferred maximum chunk size. If set to 0, null or undefined, - // or the browser does not support the required Blob API, files will - // be uploaded as a whole. - maxChunkSize: undefined, - // When a non-multipart upload or a chunked multipart upload has been - // aborted, this option can be used to resume the upload by setting - // it to the size of the already uploaded bytes. This option is most - // useful when modifying the options object inside of the "add" or - // "send" callbacks, as the options are cloned for each file upload. - uploadedBytes: undefined, - // By default, failed (abort or error) file uploads are removed from the - // global progress calculation. Set the following option to false to - // prevent recalculating the global progress data: - recalculateProgress: true, - // Interval in milliseconds to calculate and trigger progress events: - progressInterval: 100, - // Interval in milliseconds to calculate progress bitrate: - bitrateInterval: 500, - // By default, uploads are started automatically when adding files: - autoUpload: true, - - // Error and info messages: - messages: { - uploadedBytes: 'Uploaded bytes exceed file size' - }, - - // Translation function, gets the message key to be translated - // and an object with context specific data as arguments: - i18n: function (message, context) { - message = this.messages[message] || message.toString(); - if (context) { - $.each(context, function (key, value) { - message = message.replace('{' + key + '}', value); - }); - } - return message; - }, - - // Additional form data to be sent along with the file uploads can be set - // using this option, which accepts an array of objects with name and - // value properties, a function returning such an array, a FormData - // object (for XHR file uploads), or a simple object. - // The form of the first fileInput is given as parameter to the function: - formData: function (form) { - return form.serializeArray(); - }, - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop, paste or add API call). - // If the singleFileUploads option is enabled, this callback will be - // called once for each file in the selection for XHR file uploads, else - // once for each file selection. - // - // The upload starts when the submit method is invoked on the data parameter. - // The data object contains a files property holding the added files - // and allows you to override plugin options as well as define ajax settings. - // - // Listeners for this callback can also be bound the following way: - // .bind('fileuploadadd', func); - // - // data.submit() returns a Promise object and allows to attach additional - // handlers using jQuery's Deferred callbacks: - // data.submit().done(func).fail(func).always(func); - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - if (data.autoUpload || (data.autoUpload !== false && - $(this).fileupload('option', 'autoUpload'))) { - data.process().done(function () { - data.submit(); - }); - } - }, - - // Other callbacks: - - // Callback for the submit event of each file upload: - // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); - - // Callback for the start of each file upload request: - // send: function (e, data) {}, // .bind('fileuploadsend', func); - - // Callback for successful uploads: - // done: function (e, data) {}, // .bind('fileuploaddone', func); - - // Callback for failed (abort or error) uploads: - // fail: function (e, data) {}, // .bind('fileuploadfail', func); - - // Callback for completed (success, abort or error) requests: - // always: function (e, data) {}, // .bind('fileuploadalways', func); - - // Callback for upload progress events: - // progress: function (e, data) {}, // .bind('fileuploadprogress', func); - - // Callback for global upload progress events: - // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); - - // Callback for uploads start, equivalent to the global ajaxStart event: - // start: function (e) {}, // .bind('fileuploadstart', func); - - // Callback for uploads stop, equivalent to the global ajaxStop event: - // stop: function (e) {}, // .bind('fileuploadstop', func); - - // Callback for change events of the fileInput(s): - // change: function (e, data) {}, // .bind('fileuploadchange', func); - - // Callback for paste events to the pasteZone(s): - // paste: function (e, data) {}, // .bind('fileuploadpaste', func); - - // Callback for drop events of the dropZone(s): - // drop: function (e, data) {}, // .bind('fileuploaddrop', func); - - // Callback for dragover events of the dropZone(s): - // dragover: function (e) {}, // .bind('fileuploaddragover', func); - - // Callback for the start of each chunk upload request: - // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); - - // Callback for successful chunk uploads: - // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); - - // Callback for failed (abort or error) chunk uploads: - // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); - - // Callback for completed (success, abort or error) chunk upload requests: - // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); - - // The plugin options are used as settings object for the ajax calls. - // The following are jQuery ajax settings required for the file uploads: - processData: false, - contentType: false, - cache: false, - timeout: 0 - }, - - // A list of options that require reinitializing event listeners and/or - // special initialization code: - _specialOptions: [ - 'fileInput', - 'dropZone', - 'pasteZone', - 'multipart', - 'forceIframeTransport' - ], - - _blobSlice: $.support.blobSlice && function () { - var slice = this.slice || this.webkitSlice || this.mozSlice; - return slice.apply(this, arguments); - }, - - _BitrateTimer: function () { - this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime()); - this.loaded = 0; - this.bitrate = 0; - this.getBitrate = function (now, loaded, interval) { - var timeDiff = now - this.timestamp; - if (!this.bitrate || !interval || timeDiff > interval) { - this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; - this.loaded = loaded; - this.timestamp = now; - } - return this.bitrate; - }; - }, - - _isXHRUpload: function (options) { - return !options.forceIframeTransport && - ((!options.multipart && $.support.xhrFileUpload) || - $.support.xhrFormDataFileUpload); - }, - - _getFormData: function (options) { - var formData; - if ($.type(options.formData) === 'function') { - return options.formData(options.form); - } - if ($.isArray(options.formData)) { - return options.formData; - } - if ($.type(options.formData) === 'object') { - formData = []; - $.each(options.formData, function (name, value) { - formData.push({name: name, value: value}); - }); - return formData; - } - return []; - }, - - _getTotal: function (files) { - var total = 0; - $.each(files, function (index, file) { - total += file.size || 1; - }); - return total; - }, - - _initProgressObject: function (obj) { - var progress = { - loaded: 0, - total: 0, - bitrate: 0 - }; - if (obj._progress) { - $.extend(obj._progress, progress); - } else { - obj._progress = progress; - } - }, - - _initResponseObject: function (obj) { - var prop; - if (obj._response) { - for (prop in obj._response) { - if (obj._response.hasOwnProperty(prop)) { - delete obj._response[prop]; - } - } - } else { - obj._response = {}; - } - }, - - _onProgress: function (e, data) { - if (e.lengthComputable) { - var now = ((Date.now) ? Date.now() : (new Date()).getTime()), - loaded; - if (data._time && data.progressInterval && - (now - data._time < data.progressInterval) && - e.loaded !== e.total) { - return; - } - data._time = now; - loaded = Math.floor( - e.loaded / e.total * (data.chunkSize || data._progress.total) - ) + (data.uploadedBytes || 0); - // Add the difference from the previously loaded state - // to the global loaded counter: - this._progress.loaded += (loaded - data._progress.loaded); - this._progress.bitrate = this._bitrateTimer.getBitrate( - now, - this._progress.loaded, - data.bitrateInterval - ); - data._progress.loaded = data.loaded = loaded; - data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( - now, - loaded, - data.bitrateInterval - ); - // Trigger a custom progress event with a total data property set - // to the file size(s) of the current upload and a loaded data - // property calculated accordingly: - this._trigger( - 'progress', - $.Event('progress', {delegatedEvent: e}), - data - ); - // Trigger a global progress event for all current file uploads, - // including ajax calls queued for sequential file uploads: - this._trigger( - 'progressall', - $.Event('progressall', {delegatedEvent: e}), - this._progress - ); - } - }, - - _initProgressListener: function (options) { - var that = this, - xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); - // Accesss to the native XHR object is required to add event listeners - // for the upload progress event: - if (xhr.upload) { - $(xhr.upload).bind('progress', function (e) { - var oe = e.originalEvent; - // Make sure the progress event properties get copied over: - e.lengthComputable = oe.lengthComputable; - e.loaded = oe.loaded; - e.total = oe.total; - that._onProgress(e, options); - }); - options.xhr = function () { - return xhr; - }; - } - }, - - _isInstanceOf: function (type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }, - - _initXHRData: function (options) { - var that = this, - formData, - file = options.files[0], - // Ignore non-multipart setting if not supported: - multipart = options.multipart || !$.support.xhrFileUpload, - paramName = $.type(options.paramName) === 'array' ? - options.paramName[0] : options.paramName; - options.headers = $.extend({}, options.headers); - if (options.contentRange) { - options.headers['Content-Range'] = options.contentRange; - } - if (!multipart || options.blob || !this._isInstanceOf('File', file)) { - options.headers['Content-Disposition'] = 'attachment; filename="' + - encodeURI(file.name) + '"'; - } - if (!multipart) { - options.contentType = file.type || 'application/octet-stream'; - options.data = options.blob || file; - } else if ($.support.xhrFormDataFileUpload) { - if (options.postMessage) { - // window.postMessage does not allow sending FormData - // objects, so we just add the File/Blob objects to - // the formData array and let the postMessage window - // create the FormData object out of this array: - formData = this._getFormData(options); - if (options.blob) { - formData.push({ - name: paramName, - value: options.blob - }); - } else { - $.each(options.files, function (index, file) { - formData.push({ - name: ($.type(options.paramName) === 'array' && - options.paramName[index]) || paramName, - value: file - }); - }); - } - } else { - if (that._isInstanceOf('FormData', options.formData)) { - formData = options.formData; - } else { - formData = new FormData(); - $.each(this._getFormData(options), function (index, field) { - formData.append(field.name, field.value); - }); - } - if (options.blob) { - formData.append(paramName, options.blob, file.name); - } else { - $.each(options.files, function (index, file) { - // This check allows the tests to run with - // dummy objects: - if (that._isInstanceOf('File', file) || - that._isInstanceOf('Blob', file)) { - formData.append( - ($.type(options.paramName) === 'array' && - options.paramName[index]) || paramName, - file, - file.uploadName || file.name - ); - } - }); - } - } - options.data = formData; - } - // Blob reference is not needed anymore, free memory: - options.blob = null; - }, - - _initIframeSettings: function (options) { - var targetHost = $('').prop('href', options.url).prop('host'); - // Setting the dataType to iframe enables the iframe transport: - options.dataType = 'iframe ' + (options.dataType || ''); - // The iframe transport accepts a serialized array as form data: - options.formData = this._getFormData(options); - // Add redirect url to form data on cross-domain uploads: - if (options.redirect && targetHost && targetHost !== location.host) { - options.formData.push({ - name: options.redirectParamName || 'redirect', - value: options.redirect - }); - } - }, - - _initDataSettings: function (options) { - if (this._isXHRUpload(options)) { - if (!this._chunkedUpload(options, true)) { - if (!options.data) { - this._initXHRData(options); - } - this._initProgressListener(options); - } - if (options.postMessage) { - // Setting the dataType to postmessage enables the - // postMessage transport: - options.dataType = 'postmessage ' + (options.dataType || ''); - } - } else { - this._initIframeSettings(options); - } - }, - - _getParamName: function (options) { - var fileInput = $(options.fileInput), - paramName = options.paramName; - if (!paramName) { - paramName = []; - fileInput.each(function () { - var input = $(this), - name = input.prop('name') || 'files[]', - i = (input.prop('files') || [1]).length; - while (i) { - paramName.push(name); - i -= 1; - } - }); - if (!paramName.length) { - paramName = [fileInput.prop('name') || 'files[]']; - } - } else if (!$.isArray(paramName)) { - paramName = [paramName]; - } - return paramName; - }, - - _initFormSettings: function (options) { - // Retrieve missing options from the input field and the - // associated form, if available: - if (!options.form || !options.form.length) { - options.form = $(options.fileInput.prop('form')); - // If the given file input doesn't have an associated form, - // use the default widget file input's form: - if (!options.form.length) { - options.form = $(this.options.fileInput.prop('form')); - } - } - options.paramName = this._getParamName(options); - if (!options.url) { - options.url = options.form.prop('action') || location.href; - } - // The HTTP request method must be "POST" or "PUT": - options.type = (options.type || - ($.type(options.form.prop('method')) === 'string' && - options.form.prop('method')) || '' - ).toUpperCase(); - if (options.type !== 'POST' && options.type !== 'PUT' && - options.type !== 'PATCH') { - options.type = 'POST'; - } - if (!options.formAcceptCharset) { - options.formAcceptCharset = options.form.attr('accept-charset'); - } - }, - - _getAJAXSettings: function (data) { - var options = $.extend({}, this.options, data); - this._initFormSettings(options); - this._initDataSettings(options); - return options; - }, - - // jQuery 1.6 doesn't provide .state(), - // while jQuery 1.8+ removed .isRejected() and .isResolved(): - _getDeferredState: function (deferred) { - if (deferred.state) { - return deferred.state(); - } - if (deferred.isResolved()) { - return 'resolved'; - } - if (deferred.isRejected()) { - return 'rejected'; - } - return 'pending'; - }, - - // Maps jqXHR callbacks to the equivalent - // methods of the given Promise object: - _enhancePromise: function (promise) { - promise.success = promise.done; - promise.error = promise.fail; - promise.complete = promise.always; - return promise; - }, - - // Creates and returns a Promise object enhanced with - // the jqXHR methods abort, success, error and complete: - _getXHRPromise: function (resolveOrReject, context, args) { - var dfd = $.Deferred(), - promise = dfd.promise(); - context = context || this.options.context || promise; - if (resolveOrReject === true) { - dfd.resolveWith(context, args); - } else if (resolveOrReject === false) { - dfd.rejectWith(context, args); - } - promise.abort = dfd.promise; - return this._enhancePromise(promise); - }, - - // Adds convenience methods to the data callback argument: - _addConvenienceMethods: function (e, data) { - var that = this, - getPromise = function (args) { - return $.Deferred().resolveWith(that, args).promise(); - }; - data.process = function (resolveFunc, rejectFunc) { - if (resolveFunc || rejectFunc) { - data._processQueue = this._processQueue = - (this._processQueue || getPromise([this])).then( - function () { - if (data.errorThrown) { - return $.Deferred() - .rejectWith(that, [data]).promise(); - } - return getPromise(arguments); - } - ).then(resolveFunc, rejectFunc); - } - return this._processQueue || getPromise([this]); - }; - data.submit = function () { - if (this.state() !== 'pending') { - data.jqXHR = this.jqXHR = - (that._trigger( - 'submit', - $.Event('submit', {delegatedEvent: e}), - this - ) !== false) && that._onSend(e, this); - } - return this.jqXHR || that._getXHRPromise(); - }; - data.abort = function () { - if (this.jqXHR) { - return this.jqXHR.abort(); - } - this.errorThrown = 'abort'; - that._trigger('fail', null, this); - return that._getXHRPromise(false); - }; - data.state = function () { - if (this.jqXHR) { - return that._getDeferredState(this.jqXHR); - } - if (this._processQueue) { - return that._getDeferredState(this._processQueue); - } - }; - data.processing = function () { - return !this.jqXHR && this._processQueue && that - ._getDeferredState(this._processQueue) === 'pending'; - }; - data.progress = function () { - return this._progress; - }; - data.response = function () { - return this._response; - }; - }, - - // Parses the Range header from the server response - // and returns the uploaded bytes: - _getUploadedBytes: function (jqXHR) { - var range = jqXHR.getResponseHeader('Range'), - parts = range && range.split('-'), - upperBytesPos = parts && parts.length > 1 && - parseInt(parts[1], 10); - return upperBytesPos && upperBytesPos + 1; - }, - - // Uploads a file in multiple, sequential requests - // by splitting the file up in multiple blob chunks. - // If the second parameter is true, only tests if the file - // should be uploaded in chunks, but does not invoke any - // upload requests: - _chunkedUpload: function (options, testOnly) { - options.uploadedBytes = options.uploadedBytes || 0; - var that = this, - file = options.files[0], - fs = file.size, - ub = options.uploadedBytes, - mcs = options.maxChunkSize || fs, - slice = this._blobSlice, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - upload; - if (!(this._isXHRUpload(options) && slice && (ub || mcs < fs)) || - options.data) { - return false; - } - if (testOnly) { - return true; - } - if (ub >= fs) { - file.error = options.i18n('uploadedBytes'); - return this._getXHRPromise( - false, - options.context, - [null, 'error', file.error] - ); - } - // The chunk upload method: - upload = function () { - // Clone the options object for each chunk upload: - var o = $.extend({}, options), - currentLoaded = o._progress.loaded; - o.blob = slice.call( - file, - ub, - ub + mcs, - file.type - ); - // Store the current chunk size, as the blob itself - // will be dereferenced after data processing: - o.chunkSize = o.blob.size; - // Expose the chunk bytes position range: - o.contentRange = 'bytes ' + ub + '-' + - (ub + o.chunkSize - 1) + '/' + fs; - // Process the upload data (the blob and potential form data): - that._initXHRData(o); - // Add progress listeners for this chunk upload: - that._initProgressListener(o); - jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) || - that._getXHRPromise(false, o.context)) - .done(function (result, textStatus, jqXHR) { - ub = that._getUploadedBytes(jqXHR) || - (ub + o.chunkSize); - // Create a progress event if no final progress event - // with loaded equaling total has been triggered - // for this chunk: - if (currentLoaded + o.chunkSize - o._progress.loaded) { - that._onProgress($.Event('progress', { - lengthComputable: true, - loaded: ub - o.uploadedBytes, - total: ub - o.uploadedBytes - }), o); - } - options.uploadedBytes = o.uploadedBytes = ub; - o.result = result; - o.textStatus = textStatus; - o.jqXHR = jqXHR; - that._trigger('chunkdone', null, o); - that._trigger('chunkalways', null, o); - if (ub < fs) { - // File upload not yet complete, - // continue with the next chunk: - upload(); - } else { - dfd.resolveWith( - o.context, - [result, textStatus, jqXHR] - ); - } - }) - .fail(function (jqXHR, textStatus, errorThrown) { - o.jqXHR = jqXHR; - o.textStatus = textStatus; - o.errorThrown = errorThrown; - that._trigger('chunkfail', null, o); - that._trigger('chunkalways', null, o); - dfd.rejectWith( - o.context, - [jqXHR, textStatus, errorThrown] - ); - }); - }; - this._enhancePromise(promise); - promise.abort = function () { - return jqXHR.abort(); - }; - upload(); - return promise; - }, - - _beforeSend: function (e, data) { - if (this._active === 0) { - // the start callback is triggered when an upload starts - // and no other uploads are currently running, - // equivalent to the global ajaxStart event: - this._trigger('start'); - // Set timer for global bitrate progress calculation: - this._bitrateTimer = new this._BitrateTimer(); - // Reset the global progress values: - this._progress.loaded = this._progress.total = 0; - this._progress.bitrate = 0; - } - // Make sure the container objects for the .response() and - // .progress() methods on the data object are available - // and reset to their initial state: - this._initResponseObject(data); - this._initProgressObject(data); - data._progress.loaded = data.loaded = data.uploadedBytes || 0; - data._progress.total = data.total = this._getTotal(data.files) || 1; - data._progress.bitrate = data.bitrate = 0; - this._active += 1; - // Initialize the global progress values: - this._progress.loaded += data.loaded; - this._progress.total += data.total; - }, - - _onDone: function (result, textStatus, jqXHR, options) { - var total = options._progress.total, - response = options._response; - if (options._progress.loaded < total) { - // Create a progress event if no final progress event - // with loaded equaling total has been triggered: - this._onProgress($.Event('progress', { - lengthComputable: true, - loaded: total, - total: total - }), options); - } - response.result = options.result = result; - response.textStatus = options.textStatus = textStatus; - response.jqXHR = options.jqXHR = jqXHR; - this._trigger('done', null, options); - }, - - _onFail: function (jqXHR, textStatus, errorThrown, options) { - var response = options._response; - if (options.recalculateProgress) { - // Remove the failed (error or abort) file upload from - // the global progress calculation: - this._progress.loaded -= options._progress.loaded; - this._progress.total -= options._progress.total; - } - response.jqXHR = options.jqXHR = jqXHR; - response.textStatus = options.textStatus = textStatus; - response.errorThrown = options.errorThrown = errorThrown; - this._trigger('fail', null, options); - }, - - _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { - // jqXHRorResult, textStatus and jqXHRorError are added to the - // options object via done and fail callbacks - this._trigger('always', null, options); - }, - - _onSend: function (e, data) { - if (!data.submit) { - this._addConvenienceMethods(e, data); - } - var that = this, - jqXHR, - aborted, - slot, - pipe, - options = that._getAJAXSettings(data), - send = function () { - that._sending += 1; - // Set timer for bitrate progress calculation: - options._bitrateTimer = new that._BitrateTimer(); - jqXHR = jqXHR || ( - ((aborted || that._trigger( - 'send', - $.Event('send', {delegatedEvent: e}), - options - ) === false) && - that._getXHRPromise(false, options.context, aborted)) || - that._chunkedUpload(options) || $.ajax(options) - ).done(function (result, textStatus, jqXHR) { - that._onDone(result, textStatus, jqXHR, options); - }).fail(function (jqXHR, textStatus, errorThrown) { - that._onFail(jqXHR, textStatus, errorThrown, options); - }).always(function (jqXHRorResult, textStatus, jqXHRorError) { - that._onAlways( - jqXHRorResult, - textStatus, - jqXHRorError, - options - ); - that._sending -= 1; - that._active -= 1; - if (options.limitConcurrentUploads && - options.limitConcurrentUploads > that._sending) { - // Start the next queued upload, - // that has not been aborted: - var nextSlot = that._slots.shift(); - while (nextSlot) { - if (that._getDeferredState(nextSlot) === 'pending') { - nextSlot.resolve(); - break; - } - nextSlot = that._slots.shift(); - } - } - if (that._active === 0) { - // The stop callback is triggered when all uploads have - // been completed, equivalent to the global ajaxStop event: - that._trigger('stop'); - } - }); - return jqXHR; - }; - this._beforeSend(e, options); - if (this.options.sequentialUploads || - (this.options.limitConcurrentUploads && - this.options.limitConcurrentUploads <= this._sending)) { - if (this.options.limitConcurrentUploads > 1) { - slot = $.Deferred(); - this._slots.push(slot); - pipe = slot.then(send); - } else { - this._sequence = this._sequence.then(send, send); - pipe = this._sequence; - } - // Return the piped Promise object, enhanced with an abort method, - // which is delegated to the jqXHR object of the current upload, - // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe.abort = function () { - aborted = [undefined, 'abort', 'abort']; - if (!jqXHR) { - if (slot) { - slot.rejectWith(options.context, aborted); - } - return send(); - } - return jqXHR.abort(); - }; - return this._enhancePromise(pipe); - } - return send(); - }, - - _onAdd: function (e, data) { - var that = this, - result = true, - options = $.extend({}, this.options, data), - files = data.files, - filesLength = files.length, - limit = options.limitMultiFileUploads, - limitSize = options.limitMultiFileUploadSize, - overhead = options.limitMultiFileUploadSizeOverhead, - batchSize = 0, - paramName = this._getParamName(options), - paramNameSet, - paramNameSlice, - fileSet, - i, - j = 0; - if (!filesLength) { - return false; - } - if (limitSize && files[0].size === undefined) { - limitSize = undefined; - } - if (!(options.singleFileUploads || limit || limitSize) || - !this._isXHRUpload(options)) { - fileSet = [files]; - paramNameSet = [paramName]; - } else if (!(options.singleFileUploads || limitSize) && limit) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i += limit) { - fileSet.push(files.slice(i, i + limit)); - paramNameSlice = paramName.slice(i, i + limit); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - } - } else if (!options.singleFileUploads && limitSize) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i = i + 1) { - batchSize += files[i].size + overhead; - if (i + 1 === filesLength || - ((batchSize + files[i + 1].size + overhead) > limitSize) || - (limit && i + 1 - j >= limit)) { - fileSet.push(files.slice(j, i + 1)); - paramNameSlice = paramName.slice(j, i + 1); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - j = i + 1; - batchSize = 0; - } - } - } else { - paramNameSet = paramName; - } - data.originalFiles = files; - $.each(fileSet || files, function (index, element) { - var newData = $.extend({}, data); - newData.files = fileSet ? element : [element]; - newData.paramName = paramNameSet[index]; - that._initResponseObject(newData); - that._initProgressObject(newData); - that._addConvenienceMethods(e, newData); - result = that._trigger( - 'add', - $.Event('add', {delegatedEvent: e}), - newData - ); - return result; - }); - return result; - }, - - _replaceFileInput: function (data) { - var input = data.fileInput, - inputClone = input.clone(true), - restoreFocus = input.is(document.activeElement); - // Add a reference for the new cloned file input to the data argument: - data.fileInputClone = inputClone; - $('
    ').append(inputClone)[0].reset(); - // Detaching allows to insert the fileInput on another form - // without loosing the file input value: - input.after(inputClone).detach(); - // If the fileInput had focus before it was detached, - // restore focus to the inputClone. - if (restoreFocus) { - inputClone.focus(); - } - // Avoid memory leaks with the detached file input: - $.cleanData(input.unbind('remove')); - // Replace the original file input element in the fileInput - // elements set with the clone, which has been copied including - // event handlers: - this.options.fileInput = this.options.fileInput.map(function (i, el) { - if (el === input[0]) { - return inputClone[0]; - } - return el; - }); - // If the widget has been initialized on the file input itself, - // override this.element with the file input clone: - if (input[0] === this.element[0]) { - this.element = inputClone; - } - }, - - _handleFileTreeEntry: function (entry, path) { - var that = this, - dfd = $.Deferred(), - entries = [], - dirReader, - errorHandler = function (e) { - if (e && !e.entry) { - e.entry = entry; - } - // Since $.when returns immediately if one - // Deferred is rejected, we use resolve instead. - // This allows valid files and invalid items - // to be returned together in one set: - dfd.resolve([e]); - }, - successHandler = function (entries) { - that._handleFileTreeEntries( - entries, - path + entry.name + '/' - ).done(function (files) { - dfd.resolve(files); - }).fail(errorHandler); - }, - readEntries = function () { - dirReader.readEntries(function (results) { - if (!results.length) { - successHandler(entries); - } else { - entries = entries.concat(results); - readEntries(); - } - }, errorHandler); - }; - path = path || ''; - if (entry.isFile) { - if (entry._file) { - // Workaround for Chrome bug #149735 - entry._file.relativePath = path; - dfd.resolve(entry._file); - } else { - entry.file(function (file) { - file.relativePath = path; - dfd.resolve(file); - }, errorHandler); - } - } else if (entry.isDirectory) { - dirReader = entry.createReader(); - readEntries(); - } else { - // Return an empy list for file system items - // other than files or directories: - dfd.resolve([]); - } - return dfd.promise(); - }, - - _handleFileTreeEntries: function (entries, path) { - var that = this; - return $.when.apply( - $, - $.map(entries, function (entry) { - return that._handleFileTreeEntry(entry, path); - }) - ).then(function () { - return Array.prototype.concat.apply( - [], - arguments - ); - }); - }, - - _getDroppedFiles: function (dataTransfer) { - dataTransfer = dataTransfer || {}; - var items = dataTransfer.items; - if (items && items.length && (items[0].webkitGetAsEntry || - items[0].getAsEntry)) { - return this._handleFileTreeEntries( - $.map(items, function (item) { - var entry; - if (item.webkitGetAsEntry) { - entry = item.webkitGetAsEntry(); - if (entry) { - // Workaround for Chrome bug #149735: - entry._file = item.getAsFile(); - } - return entry; - } - return item.getAsEntry(); - }) - ); - } - return $.Deferred().resolve( - $.makeArray(dataTransfer.files) - ).promise(); - }, - - _getSingleFileInputFiles: function (fileInput) { - fileInput = $(fileInput); - var entries = fileInput.prop('webkitEntries') || - fileInput.prop('entries'), - files, - value; - if (entries && entries.length) { - return this._handleFileTreeEntries(entries); - } - files = $.makeArray(fileInput.prop('files')); - if (!files.length) { - value = fileInput.prop('value'); - if (!value) { - return $.Deferred().resolve([]).promise(); - } - // If the files property is not available, the browser does not - // support the File API and we add a pseudo File object with - // the input value as name with path information removed: - files = [{name: value.replace(/^.*\\/, '')}]; - } else if (files[0].name === undefined && files[0].fileName) { - // File normalization for Safari 4 and Firefox 3: - $.each(files, function (index, file) { - file.name = file.fileName; - file.size = file.fileSize; - }); - } - return $.Deferred().resolve(files).promise(); - }, - - _getFileInputFiles: function (fileInput) { - if (!(fileInput instanceof $) || fileInput.length === 1) { - return this._getSingleFileInputFiles(fileInput); - } - return $.when.apply( - $, - $.map(fileInput, this._getSingleFileInputFiles) - ).then(function () { - return Array.prototype.concat.apply( - [], - arguments - ); - }); - }, - - _onChange: function (e) { - var that = this, - data = { - fileInput: $(e.target), - form: $(e.target.form) - }; - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - if (that.options.replaceFileInput) { - that._replaceFileInput(data); - } - if (that._trigger( - 'change', - $.Event('change', {delegatedEvent: e}), - data - ) !== false) { - that._onAdd(e, data); - } - }); - }, - - _onPaste: function (e) { - var items = e.originalEvent && e.originalEvent.clipboardData && - e.originalEvent.clipboardData.items, - data = {files: []}; - if (items && items.length) { - $.each(items, function (index, item) { - var file = item.getAsFile && item.getAsFile(); - if (file) { - data.files.push(file); - } - }); - if (this._trigger( - 'paste', - $.Event('paste', {delegatedEvent: e}), - data - ) !== false) { - this._onAdd(e, data); - } - } - }, - - _onDrop: function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var that = this, - dataTransfer = e.dataTransfer, - data = {}; - if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { - e.preventDefault(); - this._getDroppedFiles(dataTransfer).always(function (files) { - data.files = files; - if (that._trigger( - 'drop', - $.Event('drop', {delegatedEvent: e}), - data - ) !== false) { - that._onAdd(e, data); - } - }); - } - }, - - _onDragOver: getDragHandler('dragover'), - - _onDragEnter: getDragHandler('dragenter'), - - _onDragLeave: getDragHandler('dragleave'), - - _initEventHandlers: function () { - if (this._isXHRUpload(this.options)) { - this._on(this.options.dropZone, { - dragover: this._onDragOver, - drop: this._onDrop, - // event.preventDefault() on dragenter is required for IE10+: - dragenter: this._onDragEnter, - // dragleave is not required, but added for completeness: - dragleave: this._onDragLeave - }); - this._on(this.options.pasteZone, { - paste: this._onPaste - }); - } - if ($.support.fileInput) { - this._on(this.options.fileInput, { - change: this._onChange - }); - } - }, - - _destroyEventHandlers: function () { - this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); - this._off(this.options.pasteZone, 'paste'); - this._off(this.options.fileInput, 'change'); - }, - - _destroy: function () { - this._destroyEventHandlers(); - }, - - _setOption: function (key, value) { - var reinit = $.inArray(key, this._specialOptions) !== -1; - if (reinit) { - this._destroyEventHandlers(); - } - this._super(key, value); - if (reinit) { - this._initSpecialOptions(); - this._initEventHandlers(); - } - }, - - _initSpecialOptions: function () { - var options = this.options; - if (options.fileInput === undefined) { - options.fileInput = this.element.is('input[type="file"]') ? - this.element : this.element.find('input[type="file"]'); - } else if (!(options.fileInput instanceof $)) { - options.fileInput = $(options.fileInput); - } - if (!(options.dropZone instanceof $)) { - options.dropZone = $(options.dropZone); - } - if (!(options.pasteZone instanceof $)) { - options.pasteZone = $(options.pasteZone); - } - }, - - _getRegExp: function (str) { - var parts = str.split('/'), - modifiers = parts.pop(); - parts.shift(); - return new RegExp(parts.join('/'), modifiers); - }, - - _isRegExpOption: function (key, value) { - return key !== 'url' && $.type(value) === 'string' && - /^\/.*\/[igm]{0,3}$/.test(value); - }, - - _initDataAttributes: function () { - var that = this, - options = this.options, - data = this.element.data(); - // Initialize options set via HTML5 data-attributes: - $.each( - this.element[0].attributes, - function (index, attr) { - var key = attr.name.toLowerCase(), - value; - if (/^data-/.test(key)) { - // Convert hyphen-ated key to camelCase: - key = key.slice(5).replace(/-[a-z]/g, function (str) { - return str.charAt(1).toUpperCase(); - }); - value = data[key]; - if (that._isRegExpOption(key, value)) { - value = that._getRegExp(value); - } - options[key] = value; - } - } - ); - }, - - _create: function () { - this._initDataAttributes(); - this._initSpecialOptions(); - this._slots = []; - this._sequence = this._getXHRPromise(true); - this._sending = this._active = 0; - this._initProgressObject(this); - this._initEventHandlers(); - }, - - // This method is exposed to the widget API and allows to query - // the number of active uploads: - active: function () { - return this._active; - }, - - // This method is exposed to the widget API and allows to query - // the widget upload progress. - // It returns an object with loaded, total and bitrate properties - // for the running uploads: - progress: function () { - return this._progress; - }, - - // This method is exposed to the widget API and allows adding files - // using the fileupload API. The data parameter accepts an object which - // must have a files property and can contain additional options: - // .fileupload('add', {files: filesList}); - add: function (data) { - var that = this; - if (!data || this.options.disabled) { - return; - } - if (data.fileInput && !data.files) { - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - that._onAdd(null, data); - }); - } else { - data.files = $.makeArray(data.files); - this._onAdd(null, data); - } - }, - - // This method is exposed to the widget API and allows sending files - // using the fileupload API. The data parameter accepts an object which - // must have a files or fileInput property and can contain additional options: - // .fileupload('send', {files: filesList}); - // The method returns a Promise object for the file upload call. - send: function (data) { - if (data && !this.options.disabled) { - if (data.fileInput && !data.files) { - var that = this, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - aborted; - promise.abort = function () { - aborted = true; - if (jqXHR) { - return jqXHR.abort(); - } - dfd.reject(null, 'abort', 'abort'); - return promise; - }; - this._getFileInputFiles(data.fileInput).always( - function (files) { - if (aborted) { - return; - } - if (!files.length) { - dfd.reject(); - return; - } - data.files = files; - jqXHR = that._onSend(null, data); - jqXHR.then( - function (result, textStatus, jqXHR) { - dfd.resolve(result, textStatus, jqXHR); - }, - function (jqXHR, textStatus, errorThrown) { - dfd.reject(jqXHR, textStatus, errorThrown); - } - ); - } - ); - return this._enhancePromise(promise); - } - data.files = $.makeArray(data.files); - if (data.files.length) { - return this._onSend(null, data); - } - } - return this._getXHRPromise(false, data && data.context); - } - - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/jquery.iframe-transport.js b/bower_components/blueimp-file-upload/js/jquery.iframe-transport.js deleted file mode 100644 index b7922e61fc..0000000000 --- a/bower_components/blueimp-file-upload/js/jquery.iframe-transport.js +++ /dev/null @@ -1,217 +0,0 @@ -/* - * jQuery Iframe Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define, require, window, document */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - // Helper variable to create unique names for the transport iframes: - var counter = 0; - - // The iframe transport accepts four additional options: - // options.fileInput: a jQuery collection of file input fields - // options.paramName: the parameter name for the file form data, - // overrides the name property of the file input field(s), - // can be a string or an array of strings. - // options.formData: an array of objects with name and value properties, - // equivalent to the return data of .serializeArray(), e.g.: - // [{name: 'a', value: 1}, {name: 'b', value: 2}] - // options.initialIframeSrc: the URL of the initial iframe src, - // by default set to "javascript:false;" - $.ajaxTransport('iframe', function (options) { - if (options.async) { - // javascript:false as initial iframe src - // prevents warning popups on HTTPS in IE6: - /*jshint scripturl: true */ - var initialIframeSrc = options.initialIframeSrc || 'javascript:false;', - /*jshint scripturl: false */ - form, - iframe, - addParamChar; - return { - send: function (_, completeCallback) { - form = $('
    '); - form.attr('accept-charset', options.formAcceptCharset); - addParamChar = /\?/.test(options.url) ? '&' : '?'; - // XDomainRequest only supports GET and POST: - if (options.type === 'DELETE') { - options.url = options.url + addParamChar + '_method=DELETE'; - options.type = 'POST'; - } else if (options.type === 'PUT') { - options.url = options.url + addParamChar + '_method=PUT'; - options.type = 'POST'; - } else if (options.type === 'PATCH') { - options.url = options.url + addParamChar + '_method=PATCH'; - options.type = 'POST'; - } - // IE versions below IE8 cannot set the name property of - // elements that have already been added to the DOM, - // so we set the name along with the iframe HTML markup: - counter += 1; - iframe = $( - '' - ).bind('load', function () { - var fileInputClones, - paramNames = $.isArray(options.paramName) ? - options.paramName : [options.paramName]; - iframe - .unbind('load') - .bind('load', function () { - var response; - // Wrap in a try/catch block to catch exceptions thrown - // when trying to access cross-domain iframe contents: - try { - response = iframe.contents(); - // Google Chrome and Firefox do not throw an - // exception when calling iframe.contents() on - // cross-domain requests, so we unify the response: - if (!response.length || !response[0].firstChild) { - throw new Error(); - } - } catch (e) { - response = undefined; - } - // The complete callback returns the - // iframe content document as response object: - completeCallback( - 200, - 'success', - {'iframe': response} - ); - // Fix for IE endless progress bar activity bug - // (happens on form submits to iframe targets): - $('') - .appendTo(form); - window.setTimeout(function () { - // Removing the form in a setTimeout call - // allows Chrome's developer tools to display - // the response result - form.remove(); - }, 0); - }); - form - .prop('target', iframe.prop('name')) - .prop('action', options.url) - .prop('method', options.type); - if (options.formData) { - $.each(options.formData, function (index, field) { - $('') - .prop('name', field.name) - .val(field.value) - .appendTo(form); - }); - } - if (options.fileInput && options.fileInput.length && - options.type === 'POST') { - fileInputClones = options.fileInput.clone(); - // Insert a clone for each file input field: - options.fileInput.after(function (index) { - return fileInputClones[index]; - }); - if (options.paramName) { - options.fileInput.each(function (index) { - $(this).prop( - 'name', - paramNames[index] || options.paramName - ); - }); - } - // Appending the file input fields to the hidden form - // removes them from their original location: - form - .append(options.fileInput) - .prop('enctype', 'multipart/form-data') - // enctype must be set as encoding for IE: - .prop('encoding', 'multipart/form-data'); - // Remove the HTML5 form attribute from the input(s): - options.fileInput.removeAttr('form'); - } - form.submit(); - // Insert the file input fields at their original location - // by replacing the clones with the originals: - if (fileInputClones && fileInputClones.length) { - options.fileInput.each(function (index, input) { - var clone = $(fileInputClones[index]); - // Restore the original name and form properties: - $(input) - .prop('name', clone.prop('name')) - .attr('form', clone.attr('form')); - clone.replaceWith(input); - }); - } - }); - form.append(iframe).appendTo(document.body); - }, - abort: function () { - if (iframe) { - // javascript:false as iframe src aborts the request - // and prevents warning popups on HTTPS in IE6. - // concat is used to avoid the "Script URL" JSLint error: - iframe - .unbind('load') - .prop('src', initialIframeSrc); - } - if (form) { - form.remove(); - } - } - }; - } - }); - - // The iframe transport returns the iframe content document as response. - // The following adds converters from iframe to text, json, html, xml - // and script. - // Please note that the Content-Type for JSON responses has to be text/plain - // or text/html, if the browser doesn't include application/json in the - // Accept header, else IE will show a download dialog. - // The Content-Type for XML responses on the other hand has to be always - // application/xml or text/xml, so IE properly parses the XML response. - // See also - // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation - $.ajaxSetup({ - converters: { - 'iframe text': function (iframe) { - return iframe && $(iframe[0].body).text(); - }, - 'iframe json': function (iframe) { - return iframe && $.parseJSON($(iframe[0].body).text()); - }, - 'iframe html': function (iframe) { - return iframe && $(iframe[0].body).html(); - }, - 'iframe xml': function (iframe) { - var xmlDoc = iframe && iframe[0]; - return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc : - $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || - $(xmlDoc.body).html()); - }, - 'iframe script': function (iframe) { - return iframe && $.globalEval($(iframe[0].body).text()); - } - } - }); - -})); diff --git a/bower_components/blueimp-file-upload/js/vendor/jquery.ui.widget.js b/bower_components/blueimp-file-upload/js/vendor/jquery.ui.widget.js deleted file mode 100644 index e08df3fd02..0000000000 --- a/bower_components/blueimp-file-upload/js/vendor/jquery.ui.widget.js +++ /dev/null @@ -1,572 +0,0 @@ -/*! jQuery UI - v1.11.4+CommonJS - 2015-08-28 -* http://jqueryui.com -* Includes: widget.js -* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */ - -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - - // AMD. Register as an anonymous module. - define([ "jquery" ], factory ); - - } else if ( typeof exports === "object" ) { - - // Node/CommonJS - factory( require( "jquery" ) ); - - } else { - - // Browser globals - factory( jQuery ); - } -}(function( $ ) { -/*! - * jQuery UI Widget 1.11.4 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/jQuery.widget/ - */ - - -var widget_uuid = 0, - widget_slice = Array.prototype.slice; - -$.cleanData = (function( orig ) { - return function( elems ) { - var events, elem, i; - for ( i = 0; (elem = elems[i]) != null; i++ ) { - try { - - // Only trigger remove when necessary to save time - events = $._data( elem, "events" ); - if ( events && events.remove ) { - $( elem ).triggerHandler( "remove" ); - } - - // http://bugs.jquery.com/ticket/8235 - } catch ( e ) {} - } - orig( elems ); - }; -})( $.cleanData ); - -$.widget = function( name, base, prototype ) { - var fullName, existingConstructor, constructor, basePrototype, - // proxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - proxiedPrototype = {}, - namespace = name.split( "." )[ 0 ]; - - name = name.split( "." )[ 1 ]; - fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - // create selector for plugin - $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - // allow instantiation without "new" keyword - if ( !this._createWidget ) { - return new constructor( options, element ); - } - - // allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - // extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - // copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - // track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - }); - - basePrototype = new base(); - // we need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( !$.isFunction( value ) ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = (function() { - var _super = function() { - return base.prototype[ prop ].apply( this, arguments ); - }, - _superApply = function( args ) { - return base.prototype[ prop ].apply( this, args ); - }; - return function() { - var __super = this._super, - __superApply = this._superApply, - returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - })(); - }); - constructor.prototype = $.widget.extend( basePrototype, { - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - }); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); - }); - // remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); - - return constructor; -}; - -$.widget.extend = function( target ) { - var input = widget_slice.call( arguments, 1 ), - inputIndex = 0, - inputLength = input.length, - key, - value; - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string", - args = widget_slice.call( arguments, 1 ), - returnValue = this; - - if ( isMethodCall ) { - this.each(function() { - var methodValue, - instance = $.data( this, fullName ); - if ( options === "instance" ) { - returnValue = instance; - return false; - } - if ( !instance ) { - return $.error( "cannot call methods on " + name + " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - if ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + " widget instance" ); - } - methodValue = instance[ options ].apply( instance, args ); - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - }); - } else { - - // Allow multiple hashes to be passed on init - if ( args.length ) { - options = $.widget.extend.apply( null, [ options ].concat(args) ); - } - - this.each(function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} ); - if ( instance._init ) { - instance._init(); - } - } else { - $.data( this, fullName, new object( options, this ) ); - } - }); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "
    ", - options: { - disabled: false, - - // callbacks - create: null - }, - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = widget_uuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - }); - this.document = $( element.style ? - // element within the document - element.ownerDocument : - // element is window or document - element.document || element ); - this.window = $( this.document[0].defaultView || this.document[0].parentWindow ); - } - - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this._create(); - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - _getCreateOptions: $.noop, - _getCreateEventData: $.noop, - _create: $.noop, - _init: $.noop, - - destroy: function() { - this._destroy(); - // we can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .unbind( this.eventNamespace ) - .removeData( this.widgetFullName ) - // support: jquery <1.6.3 - // http://bugs.jquery.com/ticket/9413 - .removeData( $.camelCase( this.widgetFullName ) ); - this.widget() - .unbind( this.eventNamespace ) - .removeAttr( "aria-disabled" ) - .removeClass( - this.widgetFullName + "-disabled " + - "ui-state-disabled" ); - - // clean up events and states - this.bindings.unbind( this.eventNamespace ); - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - }, - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key, - parts, - curOption, - i; - - if ( arguments.length === 0 ) { - // don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - // handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( arguments.length === 1 ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( arguments.length === 1 ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - _setOption: function( key, value ) { - this.options[ key ] = value; - - if ( key === "disabled" ) { - this.widget() - .toggleClass( this.widgetFullName + "-disabled", !!value ); - - // If the widget is becoming disabled, then nothing is interactive - if ( value ) { - this.hoverable.removeClass( "ui-state-hover" ); - this.focusable.removeClass( "ui-state-focus" ); - } - } - - return this; - }, - - enable: function() { - return this._setOptions({ disabled: false }); - }, - disable: function() { - return this._setOptions({ disabled: true }); - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement, - instance = this; - - // no suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // no element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - // allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^([\w:-]*)\s*(.*)$/ ), - eventName = match[1] + instance.eventNamespace, - selector = match[2]; - if ( selector ) { - delegateElement.delegate( selector, eventName, handlerProxy ); - } else { - element.bind( eventName, handlerProxy ); - } - }); - }, - - _off: function( element, eventName ) { - eventName = (eventName || "").split( " " ).join( this.eventNamespace + " " ) + - this.eventNamespace; - element.unbind( eventName ).undelegate( eventName ); - - // Clear the stack to avoid memory leaks (#10056) - this.bindings = $( this.bindings.not( element ).get() ); - this.focusable = $( this.focusable.not( element ).get() ); - this.hoverable = $( this.hoverable.not( element ).get() ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - $( event.currentTarget ).addClass( "ui-state-hover" ); - }, - mouseleave: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-hover" ); - } - }); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - $( event.currentTarget ).addClass( "ui-state-focus" ); - }, - focusout: function( event ) { - $( event.currentTarget ).removeClass( "ui-state-focus" ); - } - }); - }, - - _trigger: function( type, event, data ) { - var prop, orig, - callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - // the original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( $.isFunction( callback ) && - callback.apply( this.element[0], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - var hasOptions, - effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - if ( options.delay ) { - element.delay( options.delay ); - } - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue(function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - }); - } - }; -}); - -var widget = $.widget; - - - -})); diff --git a/bower_components/blueimp-load-image/.bower.json b/bower_components/blueimp-load-image/.bower.json deleted file mode 100644 index 6714e241a9..0000000000 --- a/bower_components/blueimp-load-image/.bower.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "blueimp-load-image", - "homepage": "https://github.com/blueimp/JavaScript-Load-Image", - "version": "2.10.0", - "_release": "2.10.0", - "_resolution": { - "type": "version", - "tag": "v2.10.0", - "commit": "4781b0430e4141ca14f48379d990777a4d268e24" - }, - "_source": "https://github.com/blueimp/JavaScript-Load-Image.git", - "_target": ">=1.13.0", - "_originalSource": "blueimp-load-image" -} \ No newline at end of file diff --git a/bower_components/blueimp-load-image/.gitignore b/bower_components/blueimp-load-image/.gitignore deleted file mode 100644 index 9daa8247da..0000000000 --- a/bower_components/blueimp-load-image/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -.DS_Store -node_modules diff --git a/bower_components/blueimp-load-image/.npmignore b/bower_components/blueimp-load-image/.npmignore deleted file mode 100644 index a508bcb5d2..0000000000 --- a/bower_components/blueimp-load-image/.npmignore +++ /dev/null @@ -1,3 +0,0 @@ -* -!js/*.js -!js/*.js.map diff --git a/bower_components/blueimp-load-image/.travis.yml b/bower_components/blueimp-load-image/.travis.yml deleted file mode 100644 index 7a56d2a537..0000000000 --- a/bower_components/blueimp-load-image/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "stable" diff --git a/bower_components/blueimp-load-image/README.md b/bower_components/blueimp-load-image/README.md deleted file mode 100644 index 93627be1f2..0000000000 --- a/bower_components/blueimp-load-image/README.md +++ /dev/null @@ -1,321 +0,0 @@ -# JavaScript Load Image - -> A JavaScript library to load and transform image files. - -## Table of contents - -- [Demo](#demo) -- [Description](#description) -- [Setup](#setup) -- [Usage](#usage) -- [Image loading](#image-loading) -- [Image scaling](#image-scaling) -- [Requirements](#requirements) -- [API](#api) -- [Options](#options) -- [Meta data parsing](#meta-data-parsing) -- [Exif parser](#exif-parser) -- [License](#license) -- [Credits](#credits) - -## Demo -[JavaScript Load Image Demo](https://blueimp.github.io/JavaScript-Load-Image/) - -## Description -JavaScript Load Image is a library to load images provided as File or Blob -objects or via URL. -It returns an optionally scaled and/or cropped HTML img or canvas element via an -asynchronous callback. -It also provides a method to parse image meta data to extract Exif tags and -thumbnails and to restore the complete image header after resizing. - -## Setup -Include the (combined and minified) JavaScript Load Image script in your HTML -markup: - -```html - -``` - -Or alternatively, choose which components you want to include: - -```html - - - - - -``` - -## Usage - -### Image loading -In your application code, use the **loadImage()** function like this: - -```js -document.getElementById('file-input').onchange = function (e) { - loadImage( - e.target.files[0], - function (img) { - document.body.appendChild(img); - }, - {maxWidth: 600} // Options - ); -}; -``` - -### Image scaling -It is also possible to use the image scaling functionality with an existing -image: - -```js -var scaledImage = loadImage.scale( - img, // img or canvas element - {maxWidth: 600} -); -``` - -## Requirements -The JavaScript Load Image library has zero dependencies. - -However, JavaScript Load Image is a very suitable complement to the -[Canvas to Blob](https://github.com/blueimp/JavaScript-Canvas-to-Blob) library. - -## API -The **loadImage()** function accepts a -[File](https://developer.mozilla.org/en/DOM/File) or -[Blob](https://developer.mozilla.org/en/DOM/Blob) object or a simple image URL -(e.g. `'https://example.org/image.png'`) as first argument. - -If a [File](https://developer.mozilla.org/en/DOM/File) or -[Blob](https://developer.mozilla.org/en/DOM/Blob) is passed as parameter, it -returns a HTML **img** element if the browser supports the -[URL](https://developer.mozilla.org/en/DOM/window.URL) API or a -[FileReader](https://developer.mozilla.org/en/DOM/FileReader) object if -supported, or **false**. -It always returns a HTML -[img](https://developer.mozilla.org/en/docs/HTML/Element/Img) element when -passing an image URL: - -```js -document.getElementById('file-input').onchange = function (e) { - var loadingImage = loadImage( - e.target.files[0], - function (img) { - document.body.appendChild(img); - }, - {maxWidth: 600} - ); - if (!loadingImage) { - // Alternative code ... - } -}; -``` - -The **img** element or -[FileReader](https://developer.mozilla.org/en/DOM/FileReader) object returned by -the **loadImage()** function allows to abort the loading process by setting the -**onload** and **onerror** event handlers to null: - -```js -document.getElementById('file-input').onchange = function (e) { - var loadingImage = loadImage( - e.target.files[0], - function (img) { - document.body.appendChild(img); - }, - {maxWidth: 600} - ); - loadingImage.onload = loadingImage.onerror = null; -}; -``` - -The second argument must be a **callback** function, which is called when the -image has been loaded or an error occurred while loading the image. The callback -function is passed one argument, which is either a HTML **img** element, a -[canvas](https://developer.mozilla.org/en/HTML/Canvas) element, or an -[Event](https://developer.mozilla.org/en/DOM/event) object of type **error**: - -```js -var imageUrl = "https://example.org/image.png"; -loadImage( - imageUrl, - function (img) { - if(img.type === "error") { - console.log("Error loading image " + imageUrl); - } else { - document.body.appendChild(img); - } - }, - {maxWidth: 600} -); -``` - -## Options -The optional third argument to **loadImage()** is a map of options: - -* **maxWidth**: Defines the maximum width of the img/canvas element. -* **maxHeight**: Defines the maximum height of the img/canvas element. -* **minWidth**: Defines the minimum width of the img/canvas element. -* **minHeight**: Defines the minimum height of the img/canvas element. -* **sourceWidth**: The width of the sub-rectangle of the source image to draw -into the destination canvas. -Defaults to the source image width and requires `canvas: true`. -* **sourceHeight**: The height of the sub-rectangle of the source image to draw -into the destination canvas. -Defaults to the source image height and requires `canvas: true`. -* **top**: The top margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. -* **right**: The right margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. -* **bottom**: The bottom margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. -* **left**: The left margin of the sub-rectangle of the source image. -Defaults to `0` and requires `canvas: true`. -* **contain**: Scales the image up/down to contain it in the max dimensions if -set to `true`. -This emulates the CSS feature -[background-image: contain](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Scaling_background_images#contain). -* **cover**: Scales the image up/down to cover the max dimensions with the image -dimensions if set to `true`. -This emulates the CSS feature -[background-image: cover](https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Scaling_background_images#cover). -* **aspectRatio**: Crops the image to the given aspect ratio (e.g. `16/9`). -Setting the `aspectRatio` also enables the `crop` option. -* **pixelRatio**: Defines the ratio of the canvas pixels to the physical image -pixels on the screen. -Should be set to `window.devicePixelRatio` unless the scaled image is not -rendered on screen. -Defaults to `1` and requires `canvas: true`. -* **downsamplingRatio**: Defines the ratio in which the image is downsampled. -By default, images are downsampled in one step. With a ratio of `0.5`, each step -scales the image to half the size, before reaching the target dimensions. -Requires `canvas: true`. -* **crop**: Crops the image to the maxWidth/maxHeight constraints if set to -`true`. -Enabling the `crop` option also enables the `canvas` option. -* **orientation**: Transform the canvas according to the specified Exif -orientation, which can be an `integer` in the range of `1` to `8` or the boolean -value `true`. -When set to `true`, it will set the orientation value based on the EXIF data of -the image, which will be parsed automatically if the exif library is available. -Setting the `orientation` also enables the `canvas` option. -Setting `orientation` to `true` alsoe enables the `meta` option. -* **meta**: Automatically parses the image meta data if set to `true`. -The meta data is passed to the callback as second argument. -* **canvas**: Returns the image as -[canvas](https://developer.mozilla.org/en/HTML/Canvas) element if set to `true`. -* **crossOrigin**: Sets the crossOrigin property on the img element for loading -[CORS enabled images](https://developer.mozilla.org/en-US/docs/HTML/CORS_Enabled_Image). -* **noRevoke**: By default, the -[created object URL](https://developer.mozilla.org/en/DOM/window.URL.createObjectURL) -is revoked after the image has been loaded, except when this option is set to -`true`. - -They can be used the following way: - -```js -loadImage( - fileOrBlobOrUrl, - function (img) { - document.body.appendChild(img); - }, - { - maxWidth: 600, - maxHeight: 300, - minWidth: 100, - minHeight: 50, - canvas: true - } -); -``` - -All settings are optional. By default, the image is returned as HTML **img** -element without any image size restrictions. - -## Meta data parsing -If the Load Image Meta extension is included, it is also possible to parse image -meta data. -The extension provides the method **loadImage.parseMetaData**, which can be used -the following way: - -```js -loadImage.parseMetaData( - fileOrBlob, - function (data) { - if (!data.imageHead) { - return; - } - // Combine data.imageHead with the image body of a resized file - // to create scaled images with the original image meta data, e.g.: - var blob = new Blob([ - data.imageHead, - // Resized images always have a head size of 20 bytes, - // including the JPEG marker and a minimal JFIF header: - loadImage.blobSlice.call(resizedImage, 20) - ], {type: resizedImage.type}); - }, - { - maxMetaDataSize: 262144, - disableImageHead: false - } -); -``` - -The third argument is an options object which defines the maximum number of -bytes to parse for the image meta data, allows to disable the imageHead creation -and is also passed along to segment parsers registered via loadImage extensions, -e.g. the Exif parser. - -**Note:** -Blob objects of resized images can be created via -[canvas.toBlob()](https://github.com/blueimp/JavaScript-Canvas-to-Blob). - -### Exif parser -If you include the Load Image Exif Parser extension, the argument passed to the -callback for **parseMetaData** will contain the additional property **exif** if -Exif data could be found in the given image. -The **exif** object stores the parsed Exif tags: - -```js -var orientation = data.exif[0x0112]; -``` - -It also provides an **exif.get()** method to retrieve the tag value via the -tag's mapped name: - -```js -var orientation = data.exif.get('Orientation'); -``` - -By default, the only available mapped names are **Orientation** and -**Thumbnail**. -If you also include the Load Image Exif Map library, additional tag mappings -become available, as well as two additional methods, **exif.getText()** and -**exif.getAll()**: - -```js -var flashText = data.exif.getText('Flash'); // e.g.: 'Flash fired, auto mode', - -// A map of all parsed tags with their mapped names as keys and their text values: -var allTags = data.exif.getAll(); -``` - -The Exif parser also adds additional options for the parseMetaData method, to -disable certain aspects of the parser: - -* **disableExif**: Disables Exif parsing. -* **disableExifThumbnail**: Disables parsing of the Exif Thumbnail. -* **disableExifSub**: Disables parsing of the Exif Sub IFD. -* **disableExifGps**: Disables parsing of the Exif GPS Info IFD. - -## License -The JavaScript Load Image script is released under the -[MIT license](http://www.opensource.org/licenses/MIT). - -## Credits - -* Image meta data handling implementation based on the help and contribution of -Achim Stöhr. -* Exif tags mapping based on Jacob Seidelin's -[exif-js](https://github.com/jseidelin/exif-js). diff --git a/bower_components/blueimp-load-image/css/demo.css b/bower_components/blueimp-load-image/css/demo.css deleted file mode 100644 index e040b74feb..0000000000 --- a/bower_components/blueimp-load-image/css/demo.css +++ /dev/null @@ -1,74 +0,0 @@ -/* - * JavaScript Load Image Demo CSS - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -body { - max-width: 750px; - margin: 0 auto; - padding: 1em; - font-family: 'Lucida Grande', 'Lucida Sans Unicode', Arial, sans-serif; - font-size: 1em; - line-height: 1.4em; - background: #222; - color: #fff; - -webkit-text-size-adjust: 100%; - -ms-text-size-adjust: 100%; -} -a { - color: orange; - text-decoration: none; -} -img { - border: 0; - vertical-align: middle; -} -h1 { - line-height: 1em; -} -table { - width: 100%; - word-wrap: break-word; - table-layout: fixed; - border-collapse: collapse; -} -tr { - background: #fff; - color: #222; -} -tr:nth-child(odd) { - background: #eee; - color: #222; -} -td { - padding: 10px; -} -.result, -.thumbnail { - padding: 20px; - background: #fff; - color: #222; - text-align: center; -} -.jcrop-holder { - margin: 0 auto; -} - -@media (min-width: 481px) { - .navigation { - list-style: none; - padding: 0; - } - .navigation li { - display: inline-block; - } - .navigation li:not(:first-child):before { - content: '| '; - } -} diff --git a/bower_components/blueimp-load-image/css/vendor/Jcrop.gif b/bower_components/blueimp-load-image/css/vendor/Jcrop.gif deleted file mode 100755 index 72ea7ccb5321d5384d70437cfaac73011237901e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmZ?wbhEHb9b#5NV>2k zBC~b@b~P=nNfWAe-b%_i6tS^-1y(h@EsB~1TqDA_h@fkxG$bHgvj}VxE1JLgr!*!^ ILUxTc0Q$^Q5C8xG diff --git a/bower_components/blueimp-load-image/css/vendor/jquery.Jcrop.css b/bower_components/blueimp-load-image/css/vendor/jquery.Jcrop.css deleted file mode 100755 index 95f8b9cfc2..0000000000 --- a/bower_components/blueimp-load-image/css/vendor/jquery.Jcrop.css +++ /dev/null @@ -1,165 +0,0 @@ -/* jquery.Jcrop.css v0.9.12 - MIT License */ -/* - The outer-most container in a typical Jcrop instance - If you are having difficulty with formatting related to styles - on a parent element, place any fixes here or in a like selector - - You can also style this element if you want to add a border, etc - A better method for styling can be seen below with .jcrop-light - (Add a class to the holder and style elements for that extended class) -*/ -.jcrop-holder { - direction: ltr; - text-align: left; -} -/* Selection Border */ -.jcrop-vline, -.jcrop-hline { - background: #ffffff url("Jcrop.gif"); - font-size: 0; - position: absolute; -} -.jcrop-vline { - height: 100%; - width: 1px !important; -} -.jcrop-vline.right { - right: 0; -} -.jcrop-hline { - height: 1px !important; - width: 100%; -} -.jcrop-hline.bottom { - bottom: 0; -} -/* Invisible click targets */ -.jcrop-tracker { - height: 100%; - width: 100%; - /* "turn off" link highlight */ - -webkit-tap-highlight-color: transparent; - /* disable callout, image save panel */ - -webkit-touch-callout: none; - /* disable cut copy paste */ - -webkit-user-select: none; -} -/* Selection Handles */ -.jcrop-handle { - background-color: #333333; - border: 1px #eeeeee solid; - width: 7px; - height: 7px; - font-size: 1px; -} -.jcrop-handle.ord-n { - left: 50%; - margin-left: -4px; - margin-top: -4px; - top: 0; -} -.jcrop-handle.ord-s { - bottom: 0; - left: 50%; - margin-bottom: -4px; - margin-left: -4px; -} -.jcrop-handle.ord-e { - margin-right: -4px; - margin-top: -4px; - right: 0; - top: 50%; -} -.jcrop-handle.ord-w { - left: 0; - margin-left: -4px; - margin-top: -4px; - top: 50%; -} -.jcrop-handle.ord-nw { - left: 0; - margin-left: -4px; - margin-top: -4px; - top: 0; -} -.jcrop-handle.ord-ne { - margin-right: -4px; - margin-top: -4px; - right: 0; - top: 0; -} -.jcrop-handle.ord-se { - bottom: 0; - margin-bottom: -4px; - margin-right: -4px; - right: 0; -} -.jcrop-handle.ord-sw { - bottom: 0; - left: 0; - margin-bottom: -4px; - margin-left: -4px; -} -/* Dragbars */ -.jcrop-dragbar.ord-n, -.jcrop-dragbar.ord-s { - height: 7px; - width: 100%; -} -.jcrop-dragbar.ord-e, -.jcrop-dragbar.ord-w { - height: 100%; - width: 7px; -} -.jcrop-dragbar.ord-n { - margin-top: -4px; -} -.jcrop-dragbar.ord-s { - bottom: 0; - margin-bottom: -4px; -} -.jcrop-dragbar.ord-e { - margin-right: -4px; - right: 0; -} -.jcrop-dragbar.ord-w { - margin-left: -4px; -} -/* The "jcrop-light" class/extension */ -.jcrop-light .jcrop-vline, -.jcrop-light .jcrop-hline { - background: #ffffff; - filter: alpha(opacity=70) !important; - opacity: .70!important; -} -.jcrop-light .jcrop-handle { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - background-color: #000000; - border-color: #ffffff; - border-radius: 3px; -} -/* The "jcrop-dark" class/extension */ -.jcrop-dark .jcrop-vline, -.jcrop-dark .jcrop-hline { - background: #000000; - filter: alpha(opacity=70) !important; - opacity: 0.7 !important; -} -.jcrop-dark .jcrop-handle { - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - background-color: #ffffff; - border-color: #000000; - border-radius: 3px; -} -/* Simple macro to turn off the antlines */ -.solid-line .jcrop-vline, -.solid-line .jcrop-hline { - background: #ffffff; -} -/* Fix for twitter bootstrap et al. */ -.jcrop-holder img, -img.jcrop-preview { - max-width: none; -} diff --git a/bower_components/blueimp-load-image/index.html b/bower_components/blueimp-load-image/index.html deleted file mode 100644 index f017adeb73..0000000000 --- a/bower_components/blueimp-load-image/index.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - -JavaScript Load Image - - - - - - - -

    JavaScript Load Image Demo

    -

    JavaScript Load Image is a library to load images provided as File or Blob objects or via URL.
    -It returns an optionally scaled and/or cropped HTML img or canvas element.
    -It also provides a method to parse image meta data to extract Exif tags and thumbnails and to restore the complete image header after resizing.

    - -
    -

    Select an image file

    -

    -

    Or drag & drop an image file onto this webpage.

    -
    -

    Result

    - -
    -

    This demo works only in browsers with support for the URL or FileReader API.

    -
    -
    - -
    - - - - - - - - - - - diff --git a/bower_components/blueimp-load-image/js/demo/demo.js b/bower_components/blueimp-load-image/js/demo/demo.js deleted file mode 100644 index ca1c6900c4..0000000000 --- a/bower_components/blueimp-load-image/js/demo/demo.js +++ /dev/null @@ -1,162 +0,0 @@ -/* - * JavaScript Load Image Demo JS - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global loadImage, HTMLCanvasElement, $ */ - -$(function () { - 'use strict' - - var result = $('#result') - var exifNode = $('#exif') - var thumbNode = $('#thumbnail') - var actionsNode = $('#actions') - var currentFile - var coordinates - - function displayExifData (exif) { - var thumbnail = exif.get('Thumbnail') - var tags = exif.getAll() - var table = exifNode.find('table').empty() - var row = $('') - var cell = $('') - var prop - if (thumbnail) { - thumbNode.empty() - loadImage(thumbnail, function (img) { - thumbNode.append(img).show() - }, {orientation: exif.get('Orientation')}) - } - for (prop in tags) { - if (tags.hasOwnProperty(prop)) { - table.append( - row.clone() - .append(cell.clone().text(prop)) - .append(cell.clone().text(tags[prop])) - ) - } - } - exifNode.show() - } - - function updateResults (img, data) { - var content - if (!(img.src || img instanceof HTMLCanvasElement)) { - content = $('Loading image file failed') - } else { - content = $('').append(img) - .attr('download', currentFile.name) - .attr('href', img.src || img.toDataURL()) - } - result.children().replaceWith(content) - if (img.getContext) { - actionsNode.show() - } - if (data && data.exif) { - displayExifData(data.exif) - } - } - - function displayImage (file, options) { - currentFile = file - if (!loadImage( - file, - updateResults, - options - )) { - result.children().replaceWith( - $('' + - 'Your browser does not support the URL or FileReader API.' + - '') - ) - } - } - - function dropChangeHandler (e) { - e.preventDefault() - e = e.originalEvent - var target = e.dataTransfer || e.target - var file = target && target.files && target.files[0] - var options = { - maxWidth: result.width(), - canvas: true, - pixelRatio: window.devicePixelRatio, - downsamplingRatio: 0.5, - orientation: true - } - if (!file) { - return - } - exifNode.hide() - thumbNode.hide() - displayImage(file, options) - } - - // Hide URL/FileReader API requirement message in capable browsers: - if (window.createObjectURL || window.URL || window.webkitURL || - window.FileReader) { - result.children().hide() - } - - $(document) - .on('dragover', function (e) { - e.preventDefault() - e = e.originalEvent - e.dataTransfer.dropEffect = 'copy' - }) - .on('drop', dropChangeHandler) - - $('#file-input') - .on('change', dropChangeHandler) - - $('#edit') - .on('click', function (event) { - event.preventDefault() - var imgNode = result.find('img, canvas') - var img = imgNode[0] - var pixelRatio = window.devicePixelRatio || 1 - imgNode.Jcrop({ - setSelect: [ - 40, - 40, - (img.width / pixelRatio) - 40, - (img.height / pixelRatio) - 40 - ], - onSelect: function (coords) { - coordinates = coords - }, - onRelease: function () { - coordinates = null - } - }).parent().on('click', function (event) { - event.preventDefault() - }) - }) - - $('#crop') - .on('click', function (event) { - event.preventDefault() - var img = result.find('img, canvas')[0] - var pixelRatio = window.devicePixelRatio || 1 - if (img && coordinates) { - updateResults(loadImage.scale(img, { - left: coordinates.x * pixelRatio, - top: coordinates.y * pixelRatio, - sourceWidth: coordinates.w * pixelRatio, - sourceHeight: coordinates.h * pixelRatio, - minWidth: result.width(), - maxWidth: result.width(), - pixelRatio: pixelRatio, - downsamplingRatio: 0.5 - })) - coordinates = null - } - }) -}) diff --git a/bower_components/blueimp-load-image/js/index.js b/bower_components/blueimp-load-image/js/index.js deleted file mode 100644 index fda1dc734a..0000000000 --- a/bower_components/blueimp-load-image/js/index.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = require('./load-image') - -require('./load-image-meta') -require('./load-image-exif') -require('./load-image-exif-map') -require('./load-image-orientation') diff --git a/bower_components/blueimp-load-image/js/load-image-exif-map.js b/bower_components/blueimp-load-image/js/load-image-exif-map.js deleted file mode 100644 index 3a97c0bec5..0000000000 --- a/bower_components/blueimp-load-image/js/load-image-exif-map.js +++ /dev/null @@ -1,387 +0,0 @@ -/* - * JavaScript Load Image Exif Map - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Exif tags mapping based on - * https://github.com/jseidelin/exif-js - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['./load-image', './load-image-exif'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('./load-image'), require('./load-image-exif')) - } else { - // Browser globals: - factory(window.loadImage) - } -}(function (loadImage) { - 'use strict' - - loadImage.ExifMap.prototype.tags = { - // ================= - // TIFF tags (IFD0): - // ================= - 0x0100: 'ImageWidth', - 0x0101: 'ImageHeight', - 0x8769: 'ExifIFDPointer', - 0x8825: 'GPSInfoIFDPointer', - 0xA005: 'InteroperabilityIFDPointer', - 0x0102: 'BitsPerSample', - 0x0103: 'Compression', - 0x0106: 'PhotometricInterpretation', - 0x0112: 'Orientation', - 0x0115: 'SamplesPerPixel', - 0x011C: 'PlanarConfiguration', - 0x0212: 'YCbCrSubSampling', - 0x0213: 'YCbCrPositioning', - 0x011A: 'XResolution', - 0x011B: 'YResolution', - 0x0128: 'ResolutionUnit', - 0x0111: 'StripOffsets', - 0x0116: 'RowsPerStrip', - 0x0117: 'StripByteCounts', - 0x0201: 'JPEGInterchangeFormat', - 0x0202: 'JPEGInterchangeFormatLength', - 0x012D: 'TransferFunction', - 0x013E: 'WhitePoint', - 0x013F: 'PrimaryChromaticities', - 0x0211: 'YCbCrCoefficients', - 0x0214: 'ReferenceBlackWhite', - 0x0132: 'DateTime', - 0x010E: 'ImageDescription', - 0x010F: 'Make', - 0x0110: 'Model', - 0x0131: 'Software', - 0x013B: 'Artist', - 0x8298: 'Copyright', - // ================== - // Exif Sub IFD tags: - // ================== - 0x9000: 'ExifVersion', // EXIF version - 0xA000: 'FlashpixVersion', // Flashpix format version - 0xA001: 'ColorSpace', // Color space information tag - 0xA002: 'PixelXDimension', // Valid width of meaningful image - 0xA003: 'PixelYDimension', // Valid height of meaningful image - 0xA500: 'Gamma', - 0x9101: 'ComponentsConfiguration', // Information about channels - 0x9102: 'CompressedBitsPerPixel', // Compressed bits per pixel - 0x927C: 'MakerNote', // Any desired information written by the manufacturer - 0x9286: 'UserComment', // Comments by user - 0xA004: 'RelatedSoundFile', // Name of related sound file - 0x9003: 'DateTimeOriginal', // Date and time when the original image was generated - 0x9004: 'DateTimeDigitized', // Date and time when the image was stored digitally - 0x9290: 'SubSecTime', // Fractions of seconds for DateTime - 0x9291: 'SubSecTimeOriginal', // Fractions of seconds for DateTimeOriginal - 0x9292: 'SubSecTimeDigitized', // Fractions of seconds for DateTimeDigitized - 0x829A: 'ExposureTime', // Exposure time (in seconds) - 0x829D: 'FNumber', - 0x8822: 'ExposureProgram', // Exposure program - 0x8824: 'SpectralSensitivity', // Spectral sensitivity - 0x8827: 'PhotographicSensitivity', // EXIF 2.3, ISOSpeedRatings in EXIF 2.2 - 0x8828: 'OECF', // Optoelectric conversion factor - 0x8830: 'SensitivityType', - 0x8831: 'StandardOutputSensitivity', - 0x8832: 'RecommendedExposureIndex', - 0x8833: 'ISOSpeed', - 0x8834: 'ISOSpeedLatitudeyyy', - 0x8835: 'ISOSpeedLatitudezzz', - 0x9201: 'ShutterSpeedValue', // Shutter speed - 0x9202: 'ApertureValue', // Lens aperture - 0x9203: 'BrightnessValue', // Value of brightness - 0x9204: 'ExposureBias', // Exposure bias - 0x9205: 'MaxApertureValue', // Smallest F number of lens - 0x9206: 'SubjectDistance', // Distance to subject in meters - 0x9207: 'MeteringMode', // Metering mode - 0x9208: 'LightSource', // Kind of light source - 0x9209: 'Flash', // Flash status - 0x9214: 'SubjectArea', // Location and area of main subject - 0x920A: 'FocalLength', // Focal length of the lens in mm - 0xA20B: 'FlashEnergy', // Strobe energy in BCPS - 0xA20C: 'SpatialFrequencyResponse', - 0xA20E: 'FocalPlaneXResolution', // Number of pixels in width direction per FPRUnit - 0xA20F: 'FocalPlaneYResolution', // Number of pixels in height direction per FPRUnit - 0xA210: 'FocalPlaneResolutionUnit', // Unit for measuring the focal plane resolution - 0xA214: 'SubjectLocation', // Location of subject in image - 0xA215: 'ExposureIndex', // Exposure index selected on camera - 0xA217: 'SensingMethod', // Image sensor type - 0xA300: 'FileSource', // Image source (3 == DSC) - 0xA301: 'SceneType', // Scene type (1 == directly photographed) - 0xA302: 'CFAPattern', // Color filter array geometric pattern - 0xA401: 'CustomRendered', // Special processing - 0xA402: 'ExposureMode', // Exposure mode - 0xA403: 'WhiteBalance', // 1 = auto white balance, 2 = manual - 0xA404: 'DigitalZoomRatio', // Digital zoom ratio - 0xA405: 'FocalLengthIn35mmFilm', - 0xA406: 'SceneCaptureType', // Type of scene - 0xA407: 'GainControl', // Degree of overall image gain adjustment - 0xA408: 'Contrast', // Direction of contrast processing applied by camera - 0xA409: 'Saturation', // Direction of saturation processing applied by camera - 0xA40A: 'Sharpness', // Direction of sharpness processing applied by camera - 0xA40B: 'DeviceSettingDescription', - 0xA40C: 'SubjectDistanceRange', // Distance to subject - 0xA420: 'ImageUniqueID', // Identifier assigned uniquely to each image - 0xA430: 'CameraOwnerName', - 0xA431: 'BodySerialNumber', - 0xA432: 'LensSpecification', - 0xA433: 'LensMake', - 0xA434: 'LensModel', - 0xA435: 'LensSerialNumber', - // ============== - // GPS Info tags: - // ============== - 0x0000: 'GPSVersionID', - 0x0001: 'GPSLatitudeRef', - 0x0002: 'GPSLatitude', - 0x0003: 'GPSLongitudeRef', - 0x0004: 'GPSLongitude', - 0x0005: 'GPSAltitudeRef', - 0x0006: 'GPSAltitude', - 0x0007: 'GPSTimeStamp', - 0x0008: 'GPSSatellites', - 0x0009: 'GPSStatus', - 0x000A: 'GPSMeasureMode', - 0x000B: 'GPSDOP', - 0x000C: 'GPSSpeedRef', - 0x000D: 'GPSSpeed', - 0x000E: 'GPSTrackRef', - 0x000F: 'GPSTrack', - 0x0010: 'GPSImgDirectionRef', - 0x0011: 'GPSImgDirection', - 0x0012: 'GPSMapDatum', - 0x0013: 'GPSDestLatitudeRef', - 0x0014: 'GPSDestLatitude', - 0x0015: 'GPSDestLongitudeRef', - 0x0016: 'GPSDestLongitude', - 0x0017: 'GPSDestBearingRef', - 0x0018: 'GPSDestBearing', - 0x0019: 'GPSDestDistanceRef', - 0x001A: 'GPSDestDistance', - 0x001B: 'GPSProcessingMethod', - 0x001C: 'GPSAreaInformation', - 0x001D: 'GPSDateStamp', - 0x001E: 'GPSDifferential', - 0x001F: 'GPSHPositioningError' - } - - loadImage.ExifMap.prototype.stringValues = { - ExposureProgram: { - 0: 'Undefined', - 1: 'Manual', - 2: 'Normal program', - 3: 'Aperture priority', - 4: 'Shutter priority', - 5: 'Creative program', - 6: 'Action program', - 7: 'Portrait mode', - 8: 'Landscape mode' - }, - MeteringMode: { - 0: 'Unknown', - 1: 'Average', - 2: 'CenterWeightedAverage', - 3: 'Spot', - 4: 'MultiSpot', - 5: 'Pattern', - 6: 'Partial', - 255: 'Other' - }, - LightSource: { - 0: 'Unknown', - 1: 'Daylight', - 2: 'Fluorescent', - 3: 'Tungsten (incandescent light)', - 4: 'Flash', - 9: 'Fine weather', - 10: 'Cloudy weather', - 11: 'Shade', - 12: 'Daylight fluorescent (D 5700 - 7100K)', - 13: 'Day white fluorescent (N 4600 - 5400K)', - 14: 'Cool white fluorescent (W 3900 - 4500K)', - 15: 'White fluorescent (WW 3200 - 3700K)', - 17: 'Standard light A', - 18: 'Standard light B', - 19: 'Standard light C', - 20: 'D55', - 21: 'D65', - 22: 'D75', - 23: 'D50', - 24: 'ISO studio tungsten', - 255: 'Other' - }, - Flash: { - 0x0000: 'Flash did not fire', - 0x0001: 'Flash fired', - 0x0005: 'Strobe return light not detected', - 0x0007: 'Strobe return light detected', - 0x0009: 'Flash fired, compulsory flash mode', - 0x000D: 'Flash fired, compulsory flash mode, return light not detected', - 0x000F: 'Flash fired, compulsory flash mode, return light detected', - 0x0010: 'Flash did not fire, compulsory flash mode', - 0x0018: 'Flash did not fire, auto mode', - 0x0019: 'Flash fired, auto mode', - 0x001D: 'Flash fired, auto mode, return light not detected', - 0x001F: 'Flash fired, auto mode, return light detected', - 0x0020: 'No flash function', - 0x0041: 'Flash fired, red-eye reduction mode', - 0x0045: 'Flash fired, red-eye reduction mode, return light not detected', - 0x0047: 'Flash fired, red-eye reduction mode, return light detected', - 0x0049: 'Flash fired, compulsory flash mode, red-eye reduction mode', - 0x004D: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected', - 0x004F: 'Flash fired, compulsory flash mode, red-eye reduction mode, return light detected', - 0x0059: 'Flash fired, auto mode, red-eye reduction mode', - 0x005D: 'Flash fired, auto mode, return light not detected, red-eye reduction mode', - 0x005F: 'Flash fired, auto mode, return light detected, red-eye reduction mode' - }, - SensingMethod: { - 1: 'Undefined', - 2: 'One-chip color area sensor', - 3: 'Two-chip color area sensor', - 4: 'Three-chip color area sensor', - 5: 'Color sequential area sensor', - 7: 'Trilinear sensor', - 8: 'Color sequential linear sensor' - }, - SceneCaptureType: { - 0: 'Standard', - 1: 'Landscape', - 2: 'Portrait', - 3: 'Night scene' - }, - SceneType: { - 1: 'Directly photographed' - }, - CustomRendered: { - 0: 'Normal process', - 1: 'Custom process' - }, - WhiteBalance: { - 0: 'Auto white balance', - 1: 'Manual white balance' - }, - GainControl: { - 0: 'None', - 1: 'Low gain up', - 2: 'High gain up', - 3: 'Low gain down', - 4: 'High gain down' - }, - Contrast: { - 0: 'Normal', - 1: 'Soft', - 2: 'Hard' - }, - Saturation: { - 0: 'Normal', - 1: 'Low saturation', - 2: 'High saturation' - }, - Sharpness: { - 0: 'Normal', - 1: 'Soft', - 2: 'Hard' - }, - SubjectDistanceRange: { - 0: 'Unknown', - 1: 'Macro', - 2: 'Close view', - 3: 'Distant view' - }, - FileSource: { - 3: 'DSC' - }, - ComponentsConfiguration: { - 0: '', - 1: 'Y', - 2: 'Cb', - 3: 'Cr', - 4: 'R', - 5: 'G', - 6: 'B' - }, - Orientation: { - 1: 'top-left', - 2: 'top-right', - 3: 'bottom-right', - 4: 'bottom-left', - 5: 'left-top', - 6: 'right-top', - 7: 'right-bottom', - 8: 'left-bottom' - } - } - - loadImage.ExifMap.prototype.getText = function (id) { - var value = this.get(id) - switch (id) { - case 'LightSource': - case 'Flash': - case 'MeteringMode': - case 'ExposureProgram': - case 'SensingMethod': - case 'SceneCaptureType': - case 'SceneType': - case 'CustomRendered': - case 'WhiteBalance': - case 'GainControl': - case 'Contrast': - case 'Saturation': - case 'Sharpness': - case 'SubjectDistanceRange': - case 'FileSource': - case 'Orientation': - return this.stringValues[id][value] - case 'ExifVersion': - case 'FlashpixVersion': - if (!value) return - return String.fromCharCode(value[0], value[1], value[2], value[3]) - case 'ComponentsConfiguration': - if (!value) return - return this.stringValues[id][value[0]] + - this.stringValues[id][value[1]] + - this.stringValues[id][value[2]] + - this.stringValues[id][value[3]] - case 'GPSVersionID': - if (!value) return - return value[0] + '.' + value[1] + '.' + value[2] + '.' + value[3] - } - return String(value) - } - - ;(function (exifMapPrototype) { - var tags = exifMapPrototype.tags - var map = exifMapPrototype.map - var prop - // Map the tag names to tags: - for (prop in tags) { - if (tags.hasOwnProperty(prop)) { - map[tags[prop]] = prop - } - } - }(loadImage.ExifMap.prototype)) - - loadImage.ExifMap.prototype.getAll = function () { - var map = {} - var prop - var id - for (prop in this) { - if (this.hasOwnProperty(prop)) { - id = this.tags[prop] - if (id) { - map[id] = this.getText(id) - } - } - } - return map - } -})) diff --git a/bower_components/blueimp-load-image/js/load-image-exif.js b/bower_components/blueimp-load-image/js/load-image-exif.js deleted file mode 100644 index bb7fe3798c..0000000000 --- a/bower_components/blueimp-load-image/js/load-image-exif.js +++ /dev/null @@ -1,300 +0,0 @@ -/* - * JavaScript Load Image Exif Parser - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['./load-image', './load-image-meta'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('./load-image'), require('./load-image-meta')) - } else { - // Browser globals: - factory(window.loadImage) - } -}(function (loadImage) { - 'use strict' - - loadImage.ExifMap = function () { - return this - } - - loadImage.ExifMap.prototype.map = { - 'Orientation': 0x0112 - } - - loadImage.ExifMap.prototype.get = function (id) { - return this[id] || this[this.map[id]] - } - - loadImage.getExifThumbnail = function (dataView, offset, length) { - var hexData, - i, - b - if (!length || offset + length > dataView.byteLength) { - console.log('Invalid Exif data: Invalid thumbnail data.') - return - } - hexData = [] - for (i = 0; i < length; i += 1) { - b = dataView.getUint8(offset + i) - hexData.push((b < 16 ? '0' : '') + b.toString(16)) - } - return 'data:image/jpeg,%' + hexData.join('%') - } - - loadImage.exifTagTypes = { - // byte, 8-bit unsigned int: - 1: { - getValue: function (dataView, dataOffset) { - return dataView.getUint8(dataOffset) - }, - size: 1 - }, - // ascii, 8-bit byte: - 2: { - getValue: function (dataView, dataOffset) { - return String.fromCharCode(dataView.getUint8(dataOffset)) - }, - size: 1, - ascii: true - }, - // short, 16 bit int: - 3: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getUint16(dataOffset, littleEndian) - }, - size: 2 - }, - // long, 32 bit int: - 4: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getUint32(dataOffset, littleEndian) - }, - size: 4 - }, - // rational = two long values, first is numerator, second is denominator: - 5: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getUint32(dataOffset, littleEndian) / - dataView.getUint32(dataOffset + 4, littleEndian) - }, - size: 8 - }, - // slong, 32 bit signed int: - 9: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getInt32(dataOffset, littleEndian) - }, - size: 4 - }, - // srational, two slongs, first is numerator, second is denominator: - 10: { - getValue: function (dataView, dataOffset, littleEndian) { - return dataView.getInt32(dataOffset, littleEndian) / - dataView.getInt32(dataOffset + 4, littleEndian) - }, - size: 8 - } - } - // undefined, 8-bit byte, value depending on field: - loadImage.exifTagTypes[7] = loadImage.exifTagTypes[1] - - loadImage.getExifValue = function (dataView, tiffOffset, offset, type, length, littleEndian) { - var tagType = loadImage.exifTagTypes[type] - var tagSize - var dataOffset - var values - var i - var str - var c - if (!tagType) { - console.log('Invalid Exif data: Invalid tag type.') - return - } - tagSize = tagType.size * length - // Determine if the value is contained in the dataOffset bytes, - // or if the value at the dataOffset is a pointer to the actual data: - dataOffset = tagSize > 4 - ? tiffOffset + dataView.getUint32(offset + 8, littleEndian) - : (offset + 8) - if (dataOffset + tagSize > dataView.byteLength) { - console.log('Invalid Exif data: Invalid data offset.') - return - } - if (length === 1) { - return tagType.getValue(dataView, dataOffset, littleEndian) - } - values = [] - for (i = 0; i < length; i += 1) { - values[i] = tagType.getValue(dataView, dataOffset + i * tagType.size, littleEndian) - } - if (tagType.ascii) { - str = '' - // Concatenate the chars: - for (i = 0; i < values.length; i += 1) { - c = values[i] - // Ignore the terminating NULL byte(s): - if (c === '\u0000') { - break - } - str += c - } - return str - } - return values - } - - loadImage.parseExifTag = function (dataView, tiffOffset, offset, littleEndian, data) { - var tag = dataView.getUint16(offset, littleEndian) - data.exif[tag] = loadImage.getExifValue( - dataView, - tiffOffset, - offset, - dataView.getUint16(offset + 2, littleEndian), // tag type - dataView.getUint32(offset + 4, littleEndian), // tag length - littleEndian - ) - } - - loadImage.parseExifTags = function (dataView, tiffOffset, dirOffset, littleEndian, data) { - var tagsNumber, - dirEndOffset, - i - if (dirOffset + 6 > dataView.byteLength) { - console.log('Invalid Exif data: Invalid directory offset.') - return - } - tagsNumber = dataView.getUint16(dirOffset, littleEndian) - dirEndOffset = dirOffset + 2 + 12 * tagsNumber - if (dirEndOffset + 4 > dataView.byteLength) { - console.log('Invalid Exif data: Invalid directory size.') - return - } - for (i = 0; i < tagsNumber; i += 1) { - this.parseExifTag( - dataView, - tiffOffset, - dirOffset + 2 + 12 * i, // tag offset - littleEndian, - data - ) - } - // Return the offset to the next directory: - return dataView.getUint32(dirEndOffset, littleEndian) - } - - loadImage.parseExifData = function (dataView, offset, length, data, options) { - if (options.disableExif) { - return - } - var tiffOffset = offset + 10 - var littleEndian - var dirOffset - var thumbnailData - // Check for the ASCII code for "Exif" (0x45786966): - if (dataView.getUint32(offset + 4) !== 0x45786966) { - // No Exif data, might be XMP data instead - return - } - if (tiffOffset + 8 > dataView.byteLength) { - console.log('Invalid Exif data: Invalid segment size.') - return - } - // Check for the two null bytes: - if (dataView.getUint16(offset + 8) !== 0x0000) { - console.log('Invalid Exif data: Missing byte alignment offset.') - return - } - // Check the byte alignment: - switch (dataView.getUint16(tiffOffset)) { - case 0x4949: - littleEndian = true - break - case 0x4D4D: - littleEndian = false - break - default: - console.log('Invalid Exif data: Invalid byte alignment marker.') - return - } - // Check for the TIFF tag marker (0x002A): - if (dataView.getUint16(tiffOffset + 2, littleEndian) !== 0x002A) { - console.log('Invalid Exif data: Missing TIFF marker.') - return - } - // Retrieve the directory offset bytes, usually 0x00000008 or 8 decimal: - dirOffset = dataView.getUint32(tiffOffset + 4, littleEndian) - // Create the exif object to store the tags: - data.exif = new loadImage.ExifMap() - // Parse the tags of the main image directory and retrieve the - // offset to the next directory, usually the thumbnail directory: - dirOffset = loadImage.parseExifTags( - dataView, - tiffOffset, - tiffOffset + dirOffset, - littleEndian, - data - ) - if (dirOffset && !options.disableExifThumbnail) { - thumbnailData = {exif: {}} - dirOffset = loadImage.parseExifTags( - dataView, - tiffOffset, - tiffOffset + dirOffset, - littleEndian, - thumbnailData - ) - // Check for JPEG Thumbnail offset: - if (thumbnailData.exif[0x0201]) { - data.exif.Thumbnail = loadImage.getExifThumbnail( - dataView, - tiffOffset + thumbnailData.exif[0x0201], - thumbnailData.exif[0x0202] // Thumbnail data length - ) - } - } - // Check for Exif Sub IFD Pointer: - if (data.exif[0x8769] && !options.disableExifSub) { - loadImage.parseExifTags( - dataView, - tiffOffset, - tiffOffset + data.exif[0x8769], // directory offset - littleEndian, - data - ) - } - // Check for GPS Info IFD Pointer: - if (data.exif[0x8825] && !options.disableExifGps) { - loadImage.parseExifTags( - dataView, - tiffOffset, - tiffOffset + data.exif[0x8825], // directory offset - littleEndian, - data - ) - } - } - - // Registers the Exif parser for the APP1 JPEG meta data segment: - loadImage.metaDataParsers.jpeg[0xffe1].push(loadImage.parseExifData) - - // Adds the following properties to the parseMetaData callback data: - // * exif: The exif tags, parsed by the parseExifData method - - // Adds the following options to the parseMetaData method: - // * disableExif: Disables Exif parsing. - // * disableExifThumbnail: Disables parsing of the Exif Thumbnail. - // * disableExifSub: Disables parsing of the Exif Sub IFD. - // * disableExifGps: Disables parsing of the Exif GPS Info IFD. -})) diff --git a/bower_components/blueimp-load-image/js/load-image-meta.js b/bower_components/blueimp-load-image/js/load-image-meta.js deleted file mode 100644 index 0f668c1a64..0000000000 --- a/bower_components/blueimp-load-image/js/load-image-meta.js +++ /dev/null @@ -1,159 +0,0 @@ -/* - * JavaScript Load Image Meta - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Image meta data handling implementation - * based on the help and contribution of - * Achim Stöhr. - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define, Blob */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['./load-image'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('./load-image')) - } else { - // Browser globals: - factory(window.loadImage) - } -}(function (loadImage) { - 'use strict' - - var hasblobSlice = window.Blob && (Blob.prototype.slice || - Blob.prototype.webkitSlice || Blob.prototype.mozSlice) - - loadImage.blobSlice = hasblobSlice && function () { - var slice = this.slice || this.webkitSlice || this.mozSlice - return slice.apply(this, arguments) - } - - loadImage.metaDataParsers = { - jpeg: { - 0xffe1: [] // APP1 marker - } - } - - // Parses image meta data and calls the callback with an object argument - // with the following properties: - // * imageHead: The complete image head as ArrayBuffer (Uint8Array for IE10) - // The options arguments accepts an object and supports the following properties: - // * maxMetaDataSize: Defines the maximum number of bytes to parse. - // * disableImageHead: Disables creating the imageHead property. - loadImage.parseMetaData = function (file, callback, options, data) { - options = options || {} - data = data || {} - var that = this - // 256 KiB should contain all EXIF/ICC/IPTC segments: - var maxMetaDataSize = options.maxMetaDataSize || 262144 - var noMetaData = !(window.DataView && file && file.size >= 12 && - file.type === 'image/jpeg' && loadImage.blobSlice) - if (noMetaData || !loadImage.readFile( - loadImage.blobSlice.call(file, 0, maxMetaDataSize), - function (e) { - if (e.target.error) { - // FileReader error - console.log(e.target.error) - callback(data) - return - } - // Note on endianness: - // Since the marker and length bytes in JPEG files are always - // stored in big endian order, we can leave the endian parameter - // of the DataView methods undefined, defaulting to big endian. - var buffer = e.target.result - var dataView = new DataView(buffer) - var offset = 2 - var maxOffset = dataView.byteLength - 4 - var headLength = offset - var markerBytes - var markerLength - var parsers - var i - // Check for the JPEG marker (0xffd8): - if (dataView.getUint16(0) === 0xffd8) { - while (offset < maxOffset) { - markerBytes = dataView.getUint16(offset) - // Search for APPn (0xffeN) and COM (0xfffe) markers, - // which contain application-specific meta-data like - // Exif, ICC and IPTC data and text comments: - if ((markerBytes >= 0xffe0 && markerBytes <= 0xffef) || - markerBytes === 0xfffe) { - // The marker bytes (2) are always followed by - // the length bytes (2), indicating the length of the - // marker segment, which includes the length bytes, - // but not the marker bytes, so we add 2: - markerLength = dataView.getUint16(offset + 2) + 2 - if (offset + markerLength > dataView.byteLength) { - console.log('Invalid meta data: Invalid segment size.') - break - } - parsers = loadImage.metaDataParsers.jpeg[markerBytes] - if (parsers) { - for (i = 0; i < parsers.length; i += 1) { - parsers[i].call( - that, - dataView, - offset, - markerLength, - data, - options - ) - } - } - offset += markerLength - headLength = offset - } else { - // Not an APPn or COM marker, probably safe to - // assume that this is the end of the meta data - break - } - } - // Meta length must be longer than JPEG marker (2) - // plus APPn marker (2), followed by length bytes (2): - if (!options.disableImageHead && headLength > 6) { - if (buffer.slice) { - data.imageHead = buffer.slice(0, headLength) - } else { - // Workaround for IE10, which does not yet - // support ArrayBuffer.slice: - data.imageHead = new Uint8Array(buffer) - .subarray(0, headLength) - } - } - } else { - console.log('Invalid JPEG file: Missing JPEG marker.') - } - callback(data) - }, - 'readAsArrayBuffer' - )) { - callback(data) - } - } - - // Determines if meta data should be loaded automatically: - loadImage.hasMetaOption = function (options) { - return options.meta - } - - var originalTransform = loadImage.transform - loadImage.transform = function (img, options, callback, file, data) { - if (loadImage.hasMetaOption(options || {})) { - loadImage.parseMetaData(file, function (data) { - originalTransform.call(loadImage, img, options, callback, file, data) - }, options, data) - } else { - originalTransform.apply(loadImage, arguments) - } - } -})) diff --git a/bower_components/blueimp-load-image/js/load-image-orientation.js b/bower_components/blueimp-load-image/js/load-image-orientation.js deleted file mode 100644 index b40c499ee5..0000000000 --- a/bower_components/blueimp-load-image/js/load-image-orientation.js +++ /dev/null @@ -1,181 +0,0 @@ -/* - * JavaScript Load Image Orientation - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define */ - -;(function (factory) { - 'use strict' - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['./load-image'], factory) - } else if (typeof module === 'object' && module.exports) { - factory(require('./load-image')) - } else { - // Browser globals: - factory(window.loadImage) - } -}(function (loadImage) { - 'use strict' - - var originalHasCanvasOption = loadImage.hasCanvasOption - var originalHasMetaOption = loadImage.hasMetaOption - var originalTransformCoordinates = loadImage.transformCoordinates - var originalGetTransformedOptions = loadImage.getTransformedOptions - - // Determines if the target image should be a canvas element: - loadImage.hasCanvasOption = function (options) { - return !!options.orientation || - originalHasCanvasOption.call(loadImage, options) - } - - // Determines if meta data should be loaded automatically: - loadImage.hasMetaOption = function (options) { - return options.orientation === true || - originalHasMetaOption.call(loadImage, options) - } - - // Transform image orientation based on - // the given EXIF orientation option: - loadImage.transformCoordinates = function (canvas, options) { - originalTransformCoordinates.call(loadImage, canvas, options) - var ctx = canvas.getContext('2d') - var width = canvas.width - var height = canvas.height - var styleWidth = canvas.style.width - var styleHeight = canvas.style.height - var orientation = options.orientation - if (!orientation || orientation > 8) { - return - } - if (orientation > 4) { - canvas.width = height - canvas.height = width - canvas.style.width = styleHeight - canvas.style.height = styleWidth - } - switch (orientation) { - case 2: - // horizontal flip - ctx.translate(width, 0) - ctx.scale(-1, 1) - break - case 3: - // 180° rotate left - ctx.translate(width, height) - ctx.rotate(Math.PI) - break - case 4: - // vertical flip - ctx.translate(0, height) - ctx.scale(1, -1) - break - case 5: - // vertical flip + 90 rotate right - ctx.rotate(0.5 * Math.PI) - ctx.scale(1, -1) - break - case 6: - // 90° rotate right - ctx.rotate(0.5 * Math.PI) - ctx.translate(0, -height) - break - case 7: - // horizontal flip + 90 rotate right - ctx.rotate(0.5 * Math.PI) - ctx.translate(width, -height) - ctx.scale(-1, 1) - break - case 8: - // 90° rotate left - ctx.rotate(-0.5 * Math.PI) - ctx.translate(-width, 0) - break - } - } - - // Transforms coordinate and dimension options - // based on the given orientation option: - loadImage.getTransformedOptions = function (img, opts, data) { - var options = originalGetTransformedOptions.call(loadImage, img, opts) - var orientation = options.orientation - var newOptions - var i - if (orientation === true && data && data.exif) { - orientation = data.exif.get('Orientation') - } - if (!orientation || orientation > 8 || orientation === 1) { - return options - } - newOptions = {} - for (i in options) { - if (options.hasOwnProperty(i)) { - newOptions[i] = options[i] - } - } - newOptions.orientation = orientation - switch (orientation) { - case 2: - // horizontal flip - newOptions.left = options.right - newOptions.right = options.left - break - case 3: - // 180° rotate left - newOptions.left = options.right - newOptions.top = options.bottom - newOptions.right = options.left - newOptions.bottom = options.top - break - case 4: - // vertical flip - newOptions.top = options.bottom - newOptions.bottom = options.top - break - case 5: - // vertical flip + 90 rotate right - newOptions.left = options.top - newOptions.top = options.left - newOptions.right = options.bottom - newOptions.bottom = options.right - break - case 6: - // 90° rotate right - newOptions.left = options.top - newOptions.top = options.right - newOptions.right = options.bottom - newOptions.bottom = options.left - break - case 7: - // horizontal flip + 90 rotate right - newOptions.left = options.bottom - newOptions.top = options.right - newOptions.right = options.top - newOptions.bottom = options.left - break - case 8: - // 90° rotate left - newOptions.left = options.bottom - newOptions.top = options.left - newOptions.right = options.top - newOptions.bottom = options.right - break - } - if (newOptions.orientation > 4) { - newOptions.maxWidth = options.maxHeight - newOptions.maxHeight = options.maxWidth - newOptions.minWidth = options.minHeight - newOptions.minHeight = options.minWidth - newOptions.sourceWidth = options.sourceHeight - newOptions.sourceHeight = options.sourceWidth - } - return newOptions - } -})) diff --git a/bower_components/blueimp-load-image/js/load-image.all.min.js b/bower_components/blueimp-load-image/js/load-image.all.min.js deleted file mode 100644 index b694ca7382..0000000000 --- a/bower_components/blueimp-load-image/js/load-image.all.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(e){"use strict";function t(e,i,a){var o,r=document.createElement("img");if(r.onerror=function(o){return t.onerror(r,o,e,i,a)},r.onload=function(o){return t.onload(r,o,e,i,a)},t.isInstanceOf("Blob",e)||t.isInstanceOf("File",e))o=r._objectURL=t.createObjectURL(e);else{if("string"!=typeof e)return!1;o=e,a&&a.crossOrigin&&(r.crossOrigin=a.crossOrigin)}return o?(r.src=o,r):t.readFile(e,function(e){var t=e.target;t&&t.result?r.src=t.result:i&&i(e)})}function i(e,i){!e._objectURL||i&&i.noRevoke||(t.revokeObjectURL(e._objectURL),delete e._objectURL)}var a=window.createObjectURL&&window||window.URL&&URL.revokeObjectURL&&URL||window.webkitURL&&webkitURL;t.isInstanceOf=function(e,t){return Object.prototype.toString.call(t)==="[object "+e+"]"},t.transform=function(e,i,a,o,r){a(t.scale(e,i,r),r)},t.onerror=function(e,t,a,o,r){i(e,r),o&&o.call(e,t)},t.onload=function(e,a,o,r,n){i(e,n),r&&t.transform(e,n,r,o,{})},t.transformCoordinates=function(){},t.getTransformedOptions=function(e,t){var i,a,o,r,n=t.aspectRatio;if(!n)return t;i={};for(a in t)t.hasOwnProperty(a)&&(i[a]=t[a]);return i.crop=!0,o=e.naturalWidth||e.width,r=e.naturalHeight||e.height,o/r>n?(i.maxWidth=r*n,i.maxHeight=r):(i.maxWidth=o,i.maxHeight=o/n),i},t.renderImageToCanvas=function(e,t,i,a,o,r,n,s,l,d){return e.getContext("2d").drawImage(t,i,a,o,r,n,s,l,d),e},t.hasCanvasOption=function(e){return e.canvas||e.crop||!!e.aspectRatio},t.scale=function(e,i,a){function o(){var e=Math.max((l||v)/v,(d||P)/P);e>1&&(v*=e,P*=e)}function r(){var e=Math.min((n||v)/v,(s||P)/P);e<1&&(v*=e,P*=e)}i=i||{};var n,s,l,d,u,c,f,g,h,m,p,S=document.createElement("canvas"),b=e.getContext||t.hasCanvasOption(i)&&S.getContext,x=e.naturalWidth||e.width,y=e.naturalHeight||e.height,v=x,P=y;if(b&&(i=t.getTransformedOptions(e,i,a),f=i.left||0,g=i.top||0,i.sourceWidth?(u=i.sourceWidth,void 0!==i.right&&void 0===i.left&&(f=x-u-i.right)):u=x-f-(i.right||0),i.sourceHeight?(c=i.sourceHeight,void 0!==i.bottom&&void 0===i.top&&(g=y-c-i.bottom)):c=y-g-(i.bottom||0),v=u,P=c),n=i.maxWidth,s=i.maxHeight,l=i.minWidth,d=i.minHeight,b&&n&&s&&i.crop?(v=n,P=s,p=u/c-n/s,p<0?(c=s*u/n,void 0===i.top&&void 0===i.bottom&&(g=(y-c)/2)):p>0&&(u=n*c/s,void 0===i.left&&void 0===i.right&&(f=(x-u)/2))):((i.contain||i.cover)&&(l=n=n||l,d=s=s||d),i.cover?(r(),o()):(o(),r())),b){if(h=i.pixelRatio,h>1&&(S.style.width=v+"px",S.style.height=P+"px",v*=h,P*=h,S.getContext("2d").scale(h,h)),m=i.downsamplingRatio,m>0&&m<1&&vv;)S.width=u*m,S.height=c*m,t.renderImageToCanvas(S,e,f,g,u,c,0,0,S.width,S.height),u=S.width,c=S.height,e=document.createElement("canvas"),e.width=u,e.height=c,t.renderImageToCanvas(e,S,0,0,u,c,0,0,u,c);return S.width=v,S.height=P,t.transformCoordinates(S,i),t.renderImageToCanvas(S,e,f,g,u,c,0,0,v,P)}return e.width=v,e.height=P,e},t.createObjectURL=function(e){return!!a&&a.createObjectURL(e)},t.revokeObjectURL=function(e){return!!a&&a.revokeObjectURL(e)},t.readFile=function(e,t,i){if(window.FileReader){var a=new FileReader;if(a.onload=a.onerror=t,i=i||"readAsDataURL",a[i])return a[i](e),a}return!1},"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:e.loadImage=t}(window),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image"],e):e("object"==typeof module&&module.exports?require("./load-image"):window.loadImage)}(function(e){"use strict";var t=window.Blob&&(Blob.prototype.slice||Blob.prototype.webkitSlice||Blob.prototype.mozSlice);e.blobSlice=t&&function(){var e=this.slice||this.webkitSlice||this.mozSlice;return e.apply(this,arguments)},e.metaDataParsers={jpeg:{65505:[]}},e.parseMetaData=function(t,i,a,o){a=a||{},o=o||{};var r=this,n=a.maxMetaDataSize||262144,s=!(window.DataView&&t&&t.size>=12&&"image/jpeg"===t.type&&e.blobSlice);!s&&e.readFile(e.blobSlice.call(t,0,n),function(t){if(t.target.error)return console.log(t.target.error),void i(o);var n,s,l,d,u=t.target.result,c=new DataView(u),f=2,g=c.byteLength-4,h=f;if(65496===c.getUint16(0)){for(;f=65504&&n<=65519||65534===n);){if(s=c.getUint16(f+2)+2,f+s>c.byteLength){console.log("Invalid meta data: Invalid segment size.");break}if(l=e.metaDataParsers.jpeg[n])for(d=0;d6&&(u.slice?o.imageHead=u.slice(0,h):o.imageHead=new Uint8Array(u).subarray(0,h))}else console.log("Invalid JPEG file: Missing JPEG marker.");i(o)},"readAsArrayBuffer")||i(o)},e.hasMetaOption=function(e){return e.meta};var i=e.transform;e.transform=function(t,a,o,r,n){e.hasMetaOption(a||{})?e.parseMetaData(r,function(n){i.call(e,t,a,o,r,n)},a,n):i.apply(e,arguments)}}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-meta"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-meta")):e(window.loadImage)}(function(e){"use strict";e.ExifMap=function(){return this},e.ExifMap.prototype.map={Orientation:274},e.ExifMap.prototype.get=function(e){return this[e]||this[this.map[e]]},e.getExifThumbnail=function(e,t,i){var a,o,r;if(!i||t+i>e.byteLength)return void console.log("Invalid Exif data: Invalid thumbnail data.");for(a=[],o=0;o4?i+t.getUint32(a+8,n):a+8,l+s>t.byteLength)return void console.log("Invalid Exif data: Invalid data offset.");if(1===r)return g.getValue(t,l,n);for(d=[],u=0;ue.byteLength)return void console.log("Invalid Exif data: Invalid directory offset.");if(r=e.getUint16(i,a),n=i+2+12*r,n+4>e.byteLength)return void console.log("Invalid Exif data: Invalid directory size.");for(s=0;st.byteLength)return void console.log("Invalid Exif data: Invalid segment size.");if(0!==t.getUint16(i+8))return void console.log("Invalid Exif data: Missing byte alignment offset.");switch(t.getUint16(d)){case 18761:n=!0;break;case 19789:n=!1;break;default:return void console.log("Invalid Exif data: Invalid byte alignment marker.")}if(42!==t.getUint16(d+2,n))return void console.log("Invalid Exif data: Missing TIFF marker.");s=t.getUint32(d+4,n),o.exif=new e.ExifMap,s=e.parseExifTags(t,d,d+s,n,o),s&&!r.disableExifThumbnail&&(l={exif:{}},s=e.parseExifTags(t,d,d+s,n,l),l.exif[513]&&(o.exif.Thumbnail=e.getExifThumbnail(t,d+l.exif[513],l.exif[514]))),o.exif[34665]&&!r.disableExifSub&&e.parseExifTags(t,d,d+o.exif[34665],n,o),o.exif[34853]&&!r.disableExifGps&&e.parseExifTags(t,d,d+o.exif[34853],n,o)}}},e.metaDataParsers.jpeg[65505].push(e.parseExifData)}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image","./load-image-exif"],e):"object"==typeof module&&module.exports?e(require("./load-image"),require("./load-image-exif")):e(window.loadImage)}(function(e){"use strict";e.ExifMap.prototype.tags={256:"ImageWidth",257:"ImageHeight",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer",40965:"InteroperabilityIFDPointer",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",274:"Orientation",277:"SamplesPerPixel",284:"PlanarConfiguration",530:"YCbCrSubSampling",531:"YCbCrPositioning",282:"XResolution",283:"YResolution",296:"ResolutionUnit",273:"StripOffsets",278:"RowsPerStrip",279:"StripByteCounts",513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",301:"TransferFunction",318:"WhitePoint",319:"PrimaryChromaticities",529:"YCbCrCoefficients",532:"ReferenceBlackWhite",306:"DateTime",270:"ImageDescription",271:"Make",272:"Model",305:"Software",315:"Artist",33432:"Copyright",36864:"ExifVersion",40960:"FlashpixVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",42240:"Gamma",37121:"ComponentsConfiguration",37122:"CompressedBitsPerPixel",37500:"MakerNote",37510:"UserComment",40964:"RelatedSoundFile",36867:"DateTimeOriginal",36868:"DateTimeDigitized",37520:"SubSecTime",37521:"SubSecTimeOriginal",37522:"SubSecTimeDigitized",33434:"ExposureTime",33437:"FNumber",34850:"ExposureProgram",34852:"SpectralSensitivity",34855:"PhotographicSensitivity",34856:"OECF",34864:"SensitivityType",34865:"StandardOutputSensitivity",34866:"RecommendedExposureIndex",34867:"ISOSpeed",34868:"ISOSpeedLatitudeyyy",34869:"ISOSpeedLatitudezzz",37377:"ShutterSpeedValue",37378:"ApertureValue",37379:"BrightnessValue",37380:"ExposureBias",37381:"MaxApertureValue",37382:"SubjectDistance",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37396:"SubjectArea",37386:"FocalLength",41483:"FlashEnergy",41484:"SpatialFrequencyResponse",41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:"FocalPlaneResolutionUnit",41492:"SubjectLocation",41493:"ExposureIndex",41495:"SensingMethod",41728:"FileSource",41729:"SceneType",41730:"CFAPattern",41985:"CustomRendered",41986:"ExposureMode",41987:"WhiteBalance",41988:"DigitalZoomRatio",41989:"FocalLengthIn35mmFilm",41990:"SceneCaptureType",41991:"GainControl",41992:"Contrast",41993:"Saturation",41994:"Sharpness",41995:"DeviceSettingDescription",41996:"SubjectDistanceRange",42016:"ImageUniqueID",42032:"CameraOwnerName",42033:"BodySerialNumber",42034:"LensSpecification",42035:"LensMake",42036:"LensModel",42037:"LensSerialNumber",0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude",5:"GPSAltitudeRef",6:"GPSAltitude",7:"GPSTimeStamp",8:"GPSSatellites",9:"GPSStatus",10:"GPSMeasureMode",11:"GPSDOP",12:"GPSSpeedRef",13:"GPSSpeed",14:"GPSTrackRef",15:"GPSTrack",16:"GPSImgDirectionRef",17:"GPSImgDirection",18:"GPSMapDatum",19:"GPSDestLatitudeRef",20:"GPSDestLatitude",21:"GPSDestLongitudeRef",22:"GPSDestLongitude",23:"GPSDestBearingRef",24:"GPSDestBearing",25:"GPSDestDistanceRef",26:"GPSDestDistance",27:"GPSProcessingMethod",28:"GPSAreaInformation",29:"GPSDateStamp",30:"GPSDifferential",31:"GPSHPositioningError"},e.ExifMap.prototype.stringValues={ExposureProgram:{0:"Undefined",1:"Manual",2:"Normal program",3:"Aperture priority",4:"Shutter priority",5:"Creative program",6:"Action program",7:"Portrait mode",8:"Landscape mode"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{0:"Unknown",1:"Daylight",2:"Fluorescent",3:"Tungsten (incandescent light)",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 - 5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},SensingMethod:{1:"Undefined",2:"One-chip color area sensor",3:"Two-chip color area sensor",4:"Three-chip color area sensor",5:"Color sequential area sensor",7:"Trilinear sensor",8:"Color sequential linear sensor"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},SceneType:{1:"Directly photographed"},CustomRendered:{0:"Normal process",1:"Custom process"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},GainControl:{0:"None",1:"Low gain up",2:"High gain up",3:"Low gain down",4:"High gain down"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},SubjectDistanceRange:{0:"Unknown",1:"Macro",2:"Close view",3:"Distant view"},FileSource:{3:"DSC"},ComponentsConfiguration:{0:"",1:"Y",2:"Cb",3:"Cr",4:"R",5:"G",6:"B"},Orientation:{1:"top-left",2:"top-right",3:"bottom-right",4:"bottom-left",5:"left-top",6:"right-top",7:"right-bottom",8:"left-bottom"}},e.ExifMap.prototype.getText=function(e){var t=this.get(e);switch(e){case"LightSource":case"Flash":case"MeteringMode":case"ExposureProgram":case"SensingMethod":case"SceneCaptureType":case"SceneType":case"CustomRendered":case"WhiteBalance":case"GainControl":case"Contrast":case"Saturation":case"Sharpness":case"SubjectDistanceRange":case"FileSource":case"Orientation":return this.stringValues[e][t];case"ExifVersion":case"FlashpixVersion":if(!t)return;return String.fromCharCode(t[0],t[1],t[2],t[3]);case"ComponentsConfiguration":if(!t)return;return this.stringValues[e][t[0]]+this.stringValues[e][t[1]]+this.stringValues[e][t[2]]+this.stringValues[e][t[3]];case"GPSVersionID":if(!t)return;return t[0]+"."+t[1]+"."+t[2]+"."+t[3]}return String(t)},function(e){var t,i=e.tags,a=e.map;for(t in i)i.hasOwnProperty(t)&&(a[i[t]]=t)}(e.ExifMap.prototype),e.ExifMap.prototype.getAll=function(){var e,t,i={};for(e in this)this.hasOwnProperty(e)&&(t=this.tags[e],t&&(i[t]=this.getText(t)));return i}}),function(e){"use strict";"function"==typeof define&&define.amd?define(["./load-image"],e):e("object"==typeof module&&module.exports?require("./load-image"):window.loadImage)}(function(e){"use strict";var t=e.hasCanvasOption,i=e.hasMetaOption,a=e.transformCoordinates,o=e.getTransformedOptions;e.hasCanvasOption=function(i){return!!i.orientation||t.call(e,i)},e.hasMetaOption=function(t){return t.orientation===!0||i.call(e,t)},e.transformCoordinates=function(t,i){a.call(e,t,i);var o=t.getContext("2d"),r=t.width,n=t.height,s=t.style.width,l=t.style.height,d=i.orientation;if(d&&!(d>8))switch(d>4&&(t.width=n,t.height=r,t.style.width=l,t.style.height=s),d){case 2:o.translate(r,0),o.scale(-1,1);break;case 3:o.translate(r,n),o.rotate(Math.PI);break;case 4:o.translate(0,n),o.scale(1,-1);break;case 5:o.rotate(.5*Math.PI),o.scale(1,-1);break;case 6:o.rotate(.5*Math.PI),o.translate(0,-n);break;case 7:o.rotate(.5*Math.PI),o.translate(r,-n),o.scale(-1,1);break;case 8:o.rotate(-.5*Math.PI),o.translate(-r,0)}},e.getTransformedOptions=function(t,i,a){var r,n,s=o.call(e,t,i),l=s.orientation;if(l===!0&&a&&a.exif&&(l=a.exif.get("Orientation")),!l||l>8||1===l)return s;r={};for(n in s)s.hasOwnProperty(n)&&(r[n]=s[n]);switch(r.orientation=l,l){case 2:r.left=s.right,r.right=s.left;break;case 3:r.left=s.right,r.top=s.bottom,r.right=s.left,r.bottom=s.top;break;case 4:r.top=s.bottom,r.bottom=s.top;break;case 5:r.left=s.top,r.top=s.left,r.right=s.bottom,r.bottom=s.right;break;case 6:r.left=s.top,r.top=s.right,r.right=s.bottom,r.bottom=s.left;break;case 7:r.left=s.bottom,r.top=s.right,r.right=s.top,r.bottom=s.left;break;case 8:r.left=s.bottom,r.top=s.left,r.right=s.top,r.bottom=s.right}return r.orientation>4&&(r.maxWidth=s.maxHeight,r.maxHeight=s.maxWidth,r.minWidth=s.minHeight,r.minHeight=s.minWidth,r.sourceWidth=s.sourceHeight,r.sourceHeight=s.sourceWidth),r}}); -//# sourceMappingURL=load-image.all.min.js.map \ No newline at end of file diff --git a/bower_components/blueimp-load-image/js/load-image.all.min.js.map b/bower_components/blueimp-load-image/js/load-image.all.min.js.map deleted file mode 100644 index 090cb5909b..0000000000 --- a/bower_components/blueimp-load-image/js/load-image.all.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["load-image.js","load-image-meta.js","load-image-exif.js","load-image-exif-map.js","load-image-orientation.js"],"names":["$","loadImage","file","callback","options","url","img","document","createElement","onerror","event","onload","isInstanceOf","_objectURL","createObjectURL","crossOrigin","src","readFile","e","target","result","revokeHelper","noRevoke","revokeObjectURL","urlAPI","window","URL","webkitURL","type","obj","Object","prototype","toString","call","transform","data","scale","transformCoordinates","getTransformedOptions","newOptions","i","width","height","aspectRatio","hasOwnProperty","crop","naturalWidth","naturalHeight","maxWidth","maxHeight","renderImageToCanvas","canvas","sourceX","sourceY","sourceWidth","sourceHeight","destX","destY","destWidth","destHeight","getContext","drawImage","hasCanvasOption","scaleUp","Math","max","minWidth","minHeight","scaleDown","min","pixelRatio","downsamplingRatio","tmp","useCanvas","left","top","undefined","right","bottom","contain","cover","style","method","FileReader","fileReader","define","amd","module","exports","factory","require","hasblobSlice","Blob","slice","webkitSlice","mozSlice","blobSlice","this","apply","arguments","metaDataParsers","jpeg","65505","parseMetaData","that","maxMetaDataSize","noMetaData","DataView","size","error","console","log","markerBytes","markerLength","parsers","buffer","dataView","offset","maxOffset","byteLength","headLength","getUint16","length","disableImageHead","imageHead","Uint8Array","subarray","hasMetaOption","meta","originalTransform","ExifMap","map","Orientation","get","id","getExifThumbnail","hexData","b","getUint8","push","join","exifTagTypes","1","getValue","dataOffset","2","String","fromCharCode","ascii","3","littleEndian","4","getUint32","5","9","getInt32","10","getExifValue","tiffOffset","tagSize","values","str","c","tagType","parseExifTag","tag","exif","parseExifTags","dirOffset","tagsNumber","dirEndOffset","parseExifData","disableExif","thumbnailData","disableExifThumbnail","Thumbnail","disableExifSub","disableExifGps","tags","256","257","34665","34853","40965","258","259","262","274","277","284","530","531","282","283","296","273","278","279","513","514","301","318","319","529","532","306","270","271","272","305","315","33432","36864","40960","40961","40962","40963","42240","37121","37122","37500","37510","40964","36867","36868","37520","37521","37522","33434","33437","34850","34852","34855","34856","34864","34865","34866","34867","34868","34869","37377","37378","37379","37380","37381","37382","37383","37384","37385","37396","37386","41483","41484","41486","41487","41488","41492","41493","41495","41728","41729","41730","41985","41986","41987","41988","41989","41990","41991","41992","41993","41994","41995","41996","42016","42032","42033","42034","42035","42036","42037","0","6","7","8","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","stringValues","ExposureProgram","MeteringMode","255","LightSource","Flash","32","65","69","71","73","77","79","89","93","95","SensingMethod","SceneCaptureType","SceneType","CustomRendered","WhiteBalance","GainControl","Contrast","Saturation","Sharpness","SubjectDistanceRange","FileSource","ComponentsConfiguration","getText","value","exifMapPrototype","prop","getAll","originalHasCanvasOption","originalHasMetaOption","originalTransformCoordinates","originalGetTransformedOptions","orientation","ctx","styleWidth","styleHeight","translate","rotate","PI","opts"],"mappings":"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","file":"load-image.all.min.js"} \ No newline at end of file diff --git a/bower_components/blueimp-load-image/js/load-image.js b/bower_components/blueimp-load-image/js/load-image.js deleted file mode 100644 index e7fe73c960..0000000000 --- a/bower_components/blueimp-load-image/js/load-image.js +++ /dev/null @@ -1,364 +0,0 @@ -/* - * JavaScript Load Image - * https://github.com/blueimp/JavaScript-Load-Image - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * http://www.opensource.org/licenses/MIT - */ - -/* global define, URL, webkitURL, FileReader */ - -;(function ($) { - 'use strict' - - // Loads an image for a given File object. - // Invokes the callback with an img or optional canvas - // element (if supported by the browser) as parameter: - function loadImage (file, callback, options) { - var img = document.createElement('img') - var url - img.onerror = function (event) { - return loadImage.onerror(img, event, file, callback, options) - } - img.onload = function (event) { - return loadImage.onload(img, event, file, callback, options) - } - if (loadImage.isInstanceOf('Blob', file) || - // Files are also Blob instances, but some browsers - // (Firefox 3.6) support the File API but not Blobs: - loadImage.isInstanceOf('File', file)) { - url = img._objectURL = loadImage.createObjectURL(file) - } else if (typeof file === 'string') { - url = file - if (options && options.crossOrigin) { - img.crossOrigin = options.crossOrigin - } - } else { - return false - } - if (url) { - img.src = url - return img - } - return loadImage.readFile(file, function (e) { - var target = e.target - if (target && target.result) { - img.src = target.result - } else if (callback) { - callback(e) - } - }) - } - // The check for URL.revokeObjectURL fixes an issue with Opera 12, - // which provides URL.createObjectURL but doesn't properly implement it: - var urlAPI = (window.createObjectURL && window) || - (window.URL && URL.revokeObjectURL && URL) || - (window.webkitURL && webkitURL) - - function revokeHelper (img, options) { - if (img._objectURL && !(options && options.noRevoke)) { - loadImage.revokeObjectURL(img._objectURL) - delete img._objectURL - } - } - - loadImage.isInstanceOf = function (type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']' - } - - loadImage.transform = function (img, options, callback, file, data) { - callback(loadImage.scale(img, options, data), data) - } - - loadImage.onerror = function (img, event, file, callback, options) { - revokeHelper(img, options) - if (callback) { - callback.call(img, event) - } - } - - loadImage.onload = function (img, event, file, callback, options) { - revokeHelper(img, options) - if (callback) { - loadImage.transform(img, options, callback, file, {}) - } - } - - // Transform image coordinates, allows to override e.g. - // the canvas orientation based on the orientation option, - // gets canvas, options passed as arguments: - loadImage.transformCoordinates = function () { - return - } - - // Returns transformed options, allows to override e.g. - // maxWidth, maxHeight and crop options based on the aspectRatio. - // gets img, options passed as arguments: - loadImage.getTransformedOptions = function (img, options) { - var aspectRatio = options.aspectRatio - var newOptions - var i - var width - var height - if (!aspectRatio) { - return options - } - newOptions = {} - for (i in options) { - if (options.hasOwnProperty(i)) { - newOptions[i] = options[i] - } - } - newOptions.crop = true - width = img.naturalWidth || img.width - height = img.naturalHeight || img.height - if (width / height > aspectRatio) { - newOptions.maxWidth = height * aspectRatio - newOptions.maxHeight = height - } else { - newOptions.maxWidth = width - newOptions.maxHeight = width / aspectRatio - } - return newOptions - } - - // Canvas render method, allows to implement a different rendering algorithm: - loadImage.renderImageToCanvas = function ( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destX, - destY, - destWidth, - destHeight - ) { - canvas.getContext('2d').drawImage( - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - destX, - destY, - destWidth, - destHeight - ) - return canvas - } - - // Determines if the target image should be a canvas element: - loadImage.hasCanvasOption = function (options) { - return options.canvas || options.crop || !!options.aspectRatio - } - - // Scales and/or crops the given image (img or canvas HTML element) - // using the given options. - // Returns a canvas object if the browser supports canvas - // and the hasCanvasOption method returns true or a canvas - // object is passed as image, else the scaled image: - loadImage.scale = function (img, options, data) { - options = options || {} - var canvas = document.createElement('canvas') - var useCanvas = img.getContext || - (loadImage.hasCanvasOption(options) && canvas.getContext) - var width = img.naturalWidth || img.width - var height = img.naturalHeight || img.height - var destWidth = width - var destHeight = height - var maxWidth - var maxHeight - var minWidth - var minHeight - var sourceWidth - var sourceHeight - var sourceX - var sourceY - var pixelRatio - var downsamplingRatio - var tmp - function scaleUp () { - var scale = Math.max( - (minWidth || destWidth) / destWidth, - (minHeight || destHeight) / destHeight - ) - if (scale > 1) { - destWidth *= scale - destHeight *= scale - } - } - function scaleDown () { - var scale = Math.min( - (maxWidth || destWidth) / destWidth, - (maxHeight || destHeight) / destHeight - ) - if (scale < 1) { - destWidth *= scale - destHeight *= scale - } - } - if (useCanvas) { - options = loadImage.getTransformedOptions(img, options, data) - sourceX = options.left || 0 - sourceY = options.top || 0 - if (options.sourceWidth) { - sourceWidth = options.sourceWidth - if (options.right !== undefined && options.left === undefined) { - sourceX = width - sourceWidth - options.right - } - } else { - sourceWidth = width - sourceX - (options.right || 0) - } - if (options.sourceHeight) { - sourceHeight = options.sourceHeight - if (options.bottom !== undefined && options.top === undefined) { - sourceY = height - sourceHeight - options.bottom - } - } else { - sourceHeight = height - sourceY - (options.bottom || 0) - } - destWidth = sourceWidth - destHeight = sourceHeight - } - maxWidth = options.maxWidth - maxHeight = options.maxHeight - minWidth = options.minWidth - minHeight = options.minHeight - if (useCanvas && maxWidth && maxHeight && options.crop) { - destWidth = maxWidth - destHeight = maxHeight - tmp = sourceWidth / sourceHeight - maxWidth / maxHeight - if (tmp < 0) { - sourceHeight = maxHeight * sourceWidth / maxWidth - if (options.top === undefined && options.bottom === undefined) { - sourceY = (height - sourceHeight) / 2 - } - } else if (tmp > 0) { - sourceWidth = maxWidth * sourceHeight / maxHeight - if (options.left === undefined && options.right === undefined) { - sourceX = (width - sourceWidth) / 2 - } - } - } else { - if (options.contain || options.cover) { - minWidth = maxWidth = maxWidth || minWidth - minHeight = maxHeight = maxHeight || minHeight - } - if (options.cover) { - scaleDown() - scaleUp() - } else { - scaleUp() - scaleDown() - } - } - if (useCanvas) { - pixelRatio = options.pixelRatio - if (pixelRatio > 1) { - canvas.style.width = destWidth + 'px' - canvas.style.height = destHeight + 'px' - destWidth *= pixelRatio - destHeight *= pixelRatio - canvas.getContext('2d').scale(pixelRatio, pixelRatio) - } - downsamplingRatio = options.downsamplingRatio - if (downsamplingRatio > 0 && downsamplingRatio < 1 && - destWidth < sourceWidth && destHeight < sourceHeight) { - while (sourceWidth * downsamplingRatio > destWidth) { - canvas.width = sourceWidth * downsamplingRatio - canvas.height = sourceHeight * downsamplingRatio - loadImage.renderImageToCanvas( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - 0, - 0, - canvas.width, - canvas.height - ) - sourceWidth = canvas.width - sourceHeight = canvas.height - img = document.createElement('canvas') - img.width = sourceWidth - img.height = sourceHeight - loadImage.renderImageToCanvas( - img, - canvas, - 0, - 0, - sourceWidth, - sourceHeight, - 0, - 0, - sourceWidth, - sourceHeight - ) - } - } - canvas.width = destWidth - canvas.height = destHeight - loadImage.transformCoordinates( - canvas, - options - ) - return loadImage.renderImageToCanvas( - canvas, - img, - sourceX, - sourceY, - sourceWidth, - sourceHeight, - 0, - 0, - destWidth, - destHeight - ) - } - img.width = destWidth - img.height = destHeight - return img - } - - loadImage.createObjectURL = function (file) { - return urlAPI ? urlAPI.createObjectURL(file) : false - } - - loadImage.revokeObjectURL = function (url) { - return urlAPI ? urlAPI.revokeObjectURL(url) : false - } - - // Loads a given File object via FileReader interface, - // invokes the callback with the event object (load or error). - // The result can be read via event.target.result: - loadImage.readFile = function (file, callback, method) { - if (window.FileReader) { - var fileReader = new FileReader() - fileReader.onload = fileReader.onerror = callback - method = method || 'readAsDataURL' - if (fileReader[method]) { - fileReader[method](file) - return fileReader - } - } - return false - } - - if (typeof define === 'function' && define.amd) { - define(function () { - return loadImage - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = loadImage - } else { - $.loadImage = loadImage - } -}(window)) diff --git a/bower_components/blueimp-load-image/js/vendor/jquery.Jcrop.js b/bower_components/blueimp-load-image/js/vendor/jquery.Jcrop.js deleted file mode 100755 index 3e32f04bd9..0000000000 --- a/bower_components/blueimp-load-image/js/vendor/jquery.Jcrop.js +++ /dev/null @@ -1,1694 +0,0 @@ -/** - * jquery.Jcrop.js v0.9.12 - * jQuery Image Cropping Plugin - released under MIT License - * Author: Kelly Hallman - * http://github.com/tapmodo/Jcrop - * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{ - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, - * copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the - * Software is furnished to do so, subject to the following - * conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR - * OTHER DEALINGS IN THE SOFTWARE. - * - * }}} - */ - -(function ($) { - - $.Jcrop = function (obj, opt) { - var options = $.extend({}, $.Jcrop.defaults), - docOffset, - _ua = navigator.userAgent.toLowerCase(), - is_msie = /msie/.test(_ua), - ie6mode = /msie [1-6]\./.test(_ua); - - // Internal Methods {{{ - function px(n) { - return Math.round(n) + 'px'; - } - function cssClass(cl) { - return options.baseClass + '-' + cl; - } - function supportsColorFade() { - return $.fx.step.hasOwnProperty('backgroundColor'); - } - function getPos(obj) //{{{ - { - var pos = $(obj).offset(); - return [pos.left, pos.top]; - } - //}}} - function mouseAbs(e) //{{{ - { - return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])]; - } - //}}} - function setOptions(opt) //{{{ - { - if (typeof(opt) !== 'object') opt = {}; - options = $.extend(options, opt); - - $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) { - if (typeof(options[e]) !== 'function') options[e] = function () {}; - }); - } - //}}} - function startDragMode(mode, pos, touch) //{{{ - { - docOffset = getPos($img); - Tracker.setCursor(mode === 'move' ? mode : mode + '-resize'); - - if (mode === 'move') { - return Tracker.activateHandlers(createMover(pos), doneSelect, touch); - } - - var fc = Coords.getFixed(); - var opp = oppLockCorner(mode); - var opc = Coords.getCorner(oppLockCorner(opp)); - - Coords.setPressed(Coords.getCorner(opp)); - Coords.setCurrent(opc); - - Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch); - } - //}}} - function dragmodeHandler(mode, f) //{{{ - { - return function (pos) { - if (!options.aspectRatio) { - switch (mode) { - case 'e': - pos[1] = f.y2; - break; - case 'w': - pos[1] = f.y2; - break; - case 'n': - pos[0] = f.x2; - break; - case 's': - pos[0] = f.x2; - break; - } - } else { - switch (mode) { - case 'e': - pos[1] = f.y + 1; - break; - case 'w': - pos[1] = f.y + 1; - break; - case 'n': - pos[0] = f.x + 1; - break; - case 's': - pos[0] = f.x + 1; - break; - } - } - Coords.setCurrent(pos); - Selection.update(); - }; - } - //}}} - function createMover(pos) //{{{ - { - var lloc = pos; - KeyManager.watchKeys(); - - return function (pos) { - Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]); - lloc = pos; - - Selection.update(); - }; - } - //}}} - function oppLockCorner(ord) //{{{ - { - switch (ord) { - case 'n': - return 'sw'; - case 's': - return 'nw'; - case 'e': - return 'nw'; - case 'w': - return 'ne'; - case 'ne': - return 'sw'; - case 'nw': - return 'se'; - case 'se': - return 'nw'; - case 'sw': - return 'ne'; - } - } - //}}} - function createDragger(ord) //{{{ - { - return function (e) { - if (options.disabled) { - return false; - } - if ((ord === 'move') && !options.allowMove) { - return false; - } - - // Fix position of crop area when dragged the very first time. - // Necessary when crop image is in a hidden element when page is loaded. - docOffset = getPos($img); - - btndown = true; - startDragMode(ord, mouseAbs(e)); - e.stopPropagation(); - e.preventDefault(); - return false; - }; - } - //}}} - function presize($obj, w, h) //{{{ - { - var nw = $obj.width(), - nh = $obj.height(); - if ((nw > w) && w > 0) { - nw = w; - nh = (w / $obj.width()) * $obj.height(); - } - if ((nh > h) && h > 0) { - nh = h; - nw = (h / $obj.height()) * $obj.width(); - } - xscale = $obj.width() / nw; - yscale = $obj.height() / nh; - $obj.width(nw).height(nh); - } - //}}} - function unscale(c) //{{{ - { - return { - x: c.x * xscale, - y: c.y * yscale, - x2: c.x2 * xscale, - y2: c.y2 * yscale, - w: c.w * xscale, - h: c.h * yscale - }; - } - //}}} - function doneSelect(pos) //{{{ - { - var c = Coords.getFixed(); - if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) { - Selection.enableHandles(); - Selection.done(); - } else { - Selection.release(); - } - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - } - //}}} - function newSelection(e) //{{{ - { - if (options.disabled) { - return false; - } - if (!options.allowSelect) { - return false; - } - btndown = true; - docOffset = getPos($img); - Selection.disableHandles(); - Tracker.setCursor('crosshair'); - var pos = mouseAbs(e); - Coords.setPressed(pos); - Selection.update(); - Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch'); - KeyManager.watchKeys(); - - e.stopPropagation(); - e.preventDefault(); - return false; - } - //}}} - function selectDrag(pos) //{{{ - { - Coords.setCurrent(pos); - Selection.update(); - } - //}}} - function newTracker() //{{{ - { - var trk = $('
    ').addClass(cssClass('tracker')); - if (is_msie) { - trk.css({ - opacity: 0, - backgroundColor: 'white' - }); - } - return trk; - } - //}}} - - // }}} - // Initialization {{{ - // Sanitize some options {{{ - if (typeof(obj) !== 'object') { - obj = $(obj)[0]; - } - if (typeof(opt) !== 'object') { - opt = {}; - } - // }}} - setOptions(opt); - // Initialize some jQuery objects {{{ - // The values are SET on the image(s) for the interface - // If the original image has any of these set, they will be reset - // However, if you destroy() the Jcrop instance the original image's - // character in the DOM will be as you left it. - var img_css = { - border: 'none', - visibility: 'visible', - margin: 0, - padding: 0, - position: 'absolute', - top: 0, - left: 0 - }; - - var $origimg = $(obj), - img_mode = true; - - if (obj.tagName == 'IMG') { - // Fix size of crop image. - // Necessary when crop image is within a hidden element when page is loaded. - if ($origimg[0].width != 0 && $origimg[0].height != 0) { - // Obtain dimensions from contained img element. - $origimg.width($origimg[0].width); - $origimg.height($origimg[0].height); - } else { - // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). - var tempImage = new Image(); - tempImage.src = $origimg[0].src; - $origimg.width(tempImage.width); - $origimg.height(tempImage.height); - } - - var $img = $origimg.clone().removeAttr('id').css(img_css).show(); - - $img.width($origimg.width()); - $img.height($origimg.height()); - $origimg.after($img).hide(); - - } else { - $img = $origimg.css(img_css).show(); - img_mode = false; - if (options.shade === null) { options.shade = true; } - } - - presize($img, options.boxWidth, options.boxHeight); - - var boundx = $img.width(), - boundy = $img.height(), - - - $div = $('
    ').width(boundx).height(boundy).addClass(cssClass('holder')).css({ - position: 'relative', - backgroundColor: options.bgColor - }).insertAfter($origimg).append($img); - - if (options.addClass) { - $div.addClass(options.addClass); - } - - var $img2 = $('
    '), - - $img_holder = $('
    ') - .width('100%').height('100%').css({ - zIndex: 310, - position: 'absolute', - overflow: 'hidden' - }), - - $hdl_holder = $('
    ') - .width('100%').height('100%').css('zIndex', 320), - - $sel = $('
    ') - .css({ - position: 'absolute', - zIndex: 600 - }).dblclick(function(){ - var c = Coords.getFixed(); - options.onDblClick.call(api,c); - }).insertBefore($img).append($img_holder, $hdl_holder); - - if (img_mode) { - - $img2 = $('') - .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy), - - $img_holder.append($img2); - - } - - if (ie6mode) { - $sel.css({ - overflowY: 'hidden' - }); - } - - var bound = options.boundary; - var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({ - position: 'absolute', - top: px(-bound), - left: px(-bound), - zIndex: 290 - }).mousedown(newSelection); - - /* }}} */ - // Set more variables {{{ - var bgcolor = options.bgColor, - bgopacity = options.bgOpacity, - xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true, - btndown, animating, shift_down; - - docOffset = getPos($img); - // }}} - // }}} - // Internal Modules {{{ - // Touch Module {{{ - var Touch = (function () { - // Touch support detection function adapted (under MIT License) - // from code by Jeffrey Sambells - http://github.com/iamamused/ - function hasTouchSupport() { - var support = {}, events = ['touchstart', 'touchmove', 'touchend'], - el = document.createElement('div'), i; - - try { - for(i=0; i x1 + ox) { - ox -= ox + x1; - } - if (0 > y1 + oy) { - oy -= oy + y1; - } - - if (boundy < y2 + oy) { - oy += boundy - (y2 + oy); - } - if (boundx < x2 + ox) { - ox += boundx - (x2 + ox); - } - - x1 += ox; - x2 += ox; - y1 += oy; - y2 += oy; - } - //}}} - function getCorner(ord) //{{{ - { - var c = getFixed(); - switch (ord) { - case 'ne': - return [c.x2, c.y]; - case 'nw': - return [c.x, c.y]; - case 'se': - return [c.x2, c.y2]; - case 'sw': - return [c.x, c.y2]; - } - } - //}}} - function getFixed() //{{{ - { - if (!options.aspectRatio) { - return getRect(); - } - // This function could use some optimization I think... - var aspect = options.aspectRatio, - min_x = options.minSize[0] / xscale, - - - //min_y = options.minSize[1]/yscale, - max_x = options.maxSize[0] / xscale, - max_y = options.maxSize[1] / yscale, - rw = x2 - x1, - rh = y2 - y1, - rwa = Math.abs(rw), - rha = Math.abs(rh), - real_ratio = rwa / rha, - xx, yy, w, h; - - if (max_x === 0) { - max_x = boundx * 10; - } - if (max_y === 0) { - max_y = boundy * 10; - } - if (real_ratio < aspect) { - yy = y2; - w = rha * aspect; - xx = rw < 0 ? x1 - w : w + x1; - - if (xx < 0) { - xx = 0; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } else if (xx > boundx) { - xx = boundx; - h = Math.abs((xx - x1) / aspect); - yy = rh < 0 ? y1 - h : h + y1; - } - } else { - xx = x2; - h = rwa / aspect; - yy = rh < 0 ? y1 - h : y1 + h; - if (yy < 0) { - yy = 0; - w = Math.abs((yy - y1) * aspect); - xx = rw < 0 ? x1 - w : w + x1; - } else if (yy > boundy) { - yy = boundy; - w = Math.abs(yy - y1) * aspect; - xx = rw < 0 ? x1 - w : w + x1; - } - } - - // Magic %-) - if (xx > x1) { // right side - if (xx - x1 < min_x) { - xx = x1 + min_x; - } else if (xx - x1 > max_x) { - xx = x1 + max_x; - } - if (yy > y1) { - yy = y1 + (xx - x1) / aspect; - } else { - yy = y1 - (xx - x1) / aspect; - } - } else if (xx < x1) { // left side - if (x1 - xx < min_x) { - xx = x1 - min_x; - } else if (x1 - xx > max_x) { - xx = x1 - max_x; - } - if (yy > y1) { - yy = y1 + (x1 - xx) / aspect; - } else { - yy = y1 - (x1 - xx) / aspect; - } - } - - if (xx < 0) { - x1 -= xx; - xx = 0; - } else if (xx > boundx) { - x1 -= xx - boundx; - xx = boundx; - } - - if (yy < 0) { - y1 -= yy; - yy = 0; - } else if (yy > boundy) { - y1 -= yy - boundy; - yy = boundy; - } - - return makeObj(flipCoords(x1, y1, xx, yy)); - } - //}}} - function rebound(p) //{{{ - { - if (p[0] < 0) p[0] = 0; - if (p[1] < 0) p[1] = 0; - - if (p[0] > boundx) p[0] = boundx; - if (p[1] > boundy) p[1] = boundy; - - return [Math.round(p[0]), Math.round(p[1])]; - } - //}}} - function flipCoords(x1, y1, x2, y2) //{{{ - { - var xa = x1, - xb = x2, - ya = y1, - yb = y2; - if (x2 < x1) { - xa = x2; - xb = x1; - } - if (y2 < y1) { - ya = y2; - yb = y1; - } - return [xa, ya, xb, yb]; - } - //}}} - function getRect() //{{{ - { - var xsize = x2 - x1, - ysize = y2 - y1, - delta; - - if (xlimit && (Math.abs(xsize) > xlimit)) { - x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit); - } - if (ylimit && (Math.abs(ysize) > ylimit)) { - y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit); - } - - if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) { - y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale); - } - if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) { - x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale); - } - - if (x1 < 0) { - x2 -= x1; - x1 -= x1; - } - if (y1 < 0) { - y2 -= y1; - y1 -= y1; - } - if (x2 < 0) { - x1 -= x2; - x2 -= x2; - } - if (y2 < 0) { - y1 -= y2; - y2 -= y2; - } - if (x2 > boundx) { - delta = x2 - boundx; - x1 -= delta; - x2 -= delta; - } - if (y2 > boundy) { - delta = y2 - boundy; - y1 -= delta; - y2 -= delta; - } - if (x1 > boundx) { - delta = x1 - boundy; - y2 -= delta; - y1 -= delta; - } - if (y1 > boundy) { - delta = y1 - boundy; - y2 -= delta; - y1 -= delta; - } - - return makeObj(flipCoords(x1, y1, x2, y2)); - } - //}}} - function makeObj(a) //{{{ - { - return { - x: a[0], - y: a[1], - x2: a[2], - y2: a[3], - w: a[2] - a[0], - h: a[3] - a[1] - }; - } - //}}} - - return { - flipCoords: flipCoords, - setPressed: setPressed, - setCurrent: setCurrent, - getOffset: getOffset, - moveOffset: moveOffset, - getCorner: getCorner, - getFixed: getFixed - }; - }()); - - //}}} - // Shade Module {{{ - var Shade = (function() { - var enabled = false, - holder = $('
    ').css({ - position: 'absolute', - zIndex: 240, - opacity: 0 - }), - shades = { - top: createShade(), - left: createShade().height(boundy), - right: createShade().height(boundy), - bottom: createShade() - }; - - function resizeShades(w,h) { - shades.left.css({ height: px(h) }); - shades.right.css({ height: px(h) }); - } - function updateAuto() - { - return updateShade(Coords.getFixed()); - } - function updateShade(c) - { - shades.top.css({ - left: px(c.x), - width: px(c.w), - height: px(c.y) - }); - shades.bottom.css({ - top: px(c.y2), - left: px(c.x), - width: px(c.w), - height: px(boundy-c.y2) - }); - shades.right.css({ - left: px(c.x2), - width: px(boundx-c.x2) - }); - shades.left.css({ - width: px(c.x) - }); - } - function createShade() { - return $('
    ').css({ - position: 'absolute', - backgroundColor: options.shadeColor||options.bgColor - }).appendTo(holder); - } - function enableShade() { - if (!enabled) { - enabled = true; - holder.insertBefore($img); - updateAuto(); - Selection.setBgOpacity(1,0,1); - $img2.hide(); - - setBgColor(options.shadeColor||options.bgColor,1); - if (Selection.isAwake()) - { - setOpacity(options.bgOpacity,1); - } - else setOpacity(1,1); - } - } - function setBgColor(color,now) { - colorChangeMacro(getShades(),color,now); - } - function disableShade() { - if (enabled) { - holder.remove(); - $img2.show(); - enabled = false; - if (Selection.isAwake()) { - Selection.setBgOpacity(options.bgOpacity,1,1); - } else { - Selection.setBgOpacity(1,1,1); - Selection.disableHandles(); - } - colorChangeMacro($div,0,1); - } - } - function setOpacity(opacity,now) { - if (enabled) { - if (options.bgFade && !now) { - holder.animate({ - opacity: 1-opacity - },{ - queue: false, - duration: options.fadeTime - }); - } - else holder.css({opacity:1-opacity}); - } - } - function refreshAll() { - options.shade ? enableShade() : disableShade(); - if (Selection.isAwake()) setOpacity(options.bgOpacity); - } - function getShades() { - return holder.children(); - } - - return { - update: updateAuto, - updateRaw: updateShade, - getShades: getShades, - setBgColor: setBgColor, - enable: enableShade, - disable: disableShade, - resize: resizeShades, - refresh: refreshAll, - opacity: setOpacity - }; - }()); - // }}} - // Selection Module {{{ - var Selection = (function () { - var awake, - hdep = 370, - borders = {}, - handle = {}, - dragbar = {}, - seehandles = false; - - // Private Methods - function insertBorder(type) //{{{ - { - var jq = $('
    ').css({ - position: 'absolute', - opacity: options.borderOpacity - }).addClass(cssClass(type)); - $img_holder.append(jq); - return jq; - } - //}}} - function dragDiv(ord, zi) //{{{ - { - var jq = $('
    ').mousedown(createDragger(ord)).css({ - cursor: ord + '-resize', - position: 'absolute', - zIndex: zi - }).addClass('ord-'+ord); - - if (Touch.support) { - jq.bind('touchstart.jcrop', Touch.createDragger(ord)); - } - - $hdl_holder.append(jq); - return jq; - } - //}}} - function insertHandle(ord) //{{{ - { - var hs = options.handleSize, - - div = dragDiv(ord, hdep++).css({ - opacity: options.handleOpacity - }).addClass(cssClass('handle')); - - if (hs) { div.width(hs).height(hs); } - - return div; - } - //}}} - function insertDragbar(ord) //{{{ - { - return dragDiv(ord, hdep++).addClass('jcrop-dragbar'); - } - //}}} - function createDragbars(li) //{{{ - { - var i; - for (i = 0; i < li.length; i++) { - dragbar[li[i]] = insertDragbar(li[i]); - } - } - //}}} - function createBorders(li) //{{{ - { - var cl,i; - for (i = 0; i < li.length; i++) { - switch(li[i]){ - case'n': cl='hline'; break; - case's': cl='hline bottom'; break; - case'e': cl='vline right'; break; - case'w': cl='vline'; break; - } - borders[li[i]] = insertBorder(cl); - } - } - //}}} - function createHandles(li) //{{{ - { - var i; - for (i = 0; i < li.length; i++) { - handle[li[i]] = insertHandle(li[i]); - } - } - //}}} - function moveto(x, y) //{{{ - { - if (!options.shade) { - $img2.css({ - top: px(-y), - left: px(-x) - }); - } - $sel.css({ - top: px(y), - left: px(x) - }); - } - //}}} - function resize(w, h) //{{{ - { - $sel.width(Math.round(w)).height(Math.round(h)); - } - //}}} - function refresh() //{{{ - { - var c = Coords.getFixed(); - - Coords.setPressed([c.x, c.y]); - Coords.setCurrent([c.x2, c.y2]); - - updateVisible(); - } - //}}} - - // Internal Methods - function updateVisible(select) //{{{ - { - if (awake) { - return update(select); - } - } - //}}} - function update(select) //{{{ - { - var c = Coords.getFixed(); - - resize(c.w, c.h); - moveto(c.x, c.y); - if (options.shade) Shade.updateRaw(c); - - awake || show(); - - if (select) { - options.onSelect.call(api, unscale(c)); - } else { - options.onChange.call(api, unscale(c)); - } - } - //}}} - function setBgOpacity(opacity,force,now) //{{{ - { - if (!awake && !force) return; - if (options.bgFade && !now) { - $img.animate({ - opacity: opacity - },{ - queue: false, - duration: options.fadeTime - }); - } else { - $img.css('opacity', opacity); - } - } - //}}} - function show() //{{{ - { - $sel.show(); - - if (options.shade) Shade.opacity(bgopacity); - else setBgOpacity(bgopacity,true); - - awake = true; - } - //}}} - function release() //{{{ - { - disableHandles(); - $sel.hide(); - - if (options.shade) Shade.opacity(1); - else setBgOpacity(1); - - awake = false; - options.onRelease.call(api); - } - //}}} - function showHandles() //{{{ - { - if (seehandles) { - $hdl_holder.show(); - } - } - //}}} - function enableHandles() //{{{ - { - seehandles = true; - if (options.allowResize) { - $hdl_holder.show(); - return true; - } - } - //}}} - function disableHandles() //{{{ - { - seehandles = false; - $hdl_holder.hide(); - } - //}}} - function animMode(v) //{{{ - { - if (v) { - animating = true; - disableHandles(); - } else { - animating = false; - enableHandles(); - } - } - //}}} - function done() //{{{ - { - animMode(false); - refresh(); - } - //}}} - // Insert draggable elements {{{ - // Insert border divs for outline - - if (options.dragEdges && $.isArray(options.createDragbars)) - createDragbars(options.createDragbars); - - if ($.isArray(options.createHandles)) - createHandles(options.createHandles); - - if (options.drawBorders && $.isArray(options.createBorders)) - createBorders(options.createBorders); - - //}}} - - // This is a hack for iOS5 to support drag/move touch functionality - $(document).bind('touchstart.jcrop-ios',function(e) { - if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation(); - }); - - var $track = newTracker().mousedown(createDragger('move')).css({ - cursor: 'move', - position: 'absolute', - zIndex: 360 - }); - - if (Touch.support) { - $track.bind('touchstart.jcrop', Touch.createDragger('move')); - } - - $img_holder.append($track); - disableHandles(); - - return { - updateVisible: updateVisible, - update: update, - release: release, - refresh: refresh, - isAwake: function () { - return awake; - }, - setCursor: function (cursor) { - $track.css('cursor', cursor); - }, - enableHandles: enableHandles, - enableOnly: function () { - seehandles = true; - }, - showHandles: showHandles, - disableHandles: disableHandles, - animMode: animMode, - setBgOpacity: setBgOpacity, - done: done - }; - }()); - - //}}} - // Tracker Module {{{ - var Tracker = (function () { - var onMove = function () {}, - onDone = function () {}, - trackDoc = options.trackDocument; - - function toFront(touch) //{{{ - { - $trk.css({ - zIndex: 450 - }); - - if (touch) - $(document) - .bind('touchmove.jcrop', trackTouchMove) - .bind('touchend.jcrop', trackTouchEnd); - - else if (trackDoc) - $(document) - .bind('mousemove.jcrop',trackMove) - .bind('mouseup.jcrop',trackUp); - } - //}}} - function toBack() //{{{ - { - $trk.css({ - zIndex: 290 - }); - $(document).unbind('.jcrop'); - } - //}}} - function trackMove(e) //{{{ - { - onMove(mouseAbs(e)); - return false; - } - //}}} - function trackUp(e) //{{{ - { - e.preventDefault(); - e.stopPropagation(); - - if (btndown) { - btndown = false; - - onDone(mouseAbs(e)); - - if (Selection.isAwake()) { - options.onSelect.call(api, unscale(Coords.getFixed())); - } - - toBack(); - onMove = function () {}; - onDone = function () {}; - } - - return false; - } - //}}} - function activateHandlers(move, done, touch) //{{{ - { - btndown = true; - onMove = move; - onDone = done; - toFront(touch); - return false; - } - //}}} - function trackTouchMove(e) //{{{ - { - onMove(mouseAbs(Touch.cfilter(e))); - return false; - } - //}}} - function trackTouchEnd(e) //{{{ - { - return trackUp(Touch.cfilter(e)); - } - //}}} - function setCursor(t) //{{{ - { - $trk.css('cursor', t); - } - //}}} - - if (!trackDoc) { - $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp); - } - - $img.before($trk); - return { - activateHandlers: activateHandlers, - setCursor: setCursor - }; - }()); - //}}} - // KeyManager Module {{{ - var KeyManager = (function () { - var $keymgr = $('').css({ - position: 'fixed', - left: '-120px', - width: '12px' - }).addClass('jcrop-keymgr'), - - $keywrap = $('
    ').css({ - position: 'absolute', - overflow: 'hidden' - }).append($keymgr); - - function watchKeys() //{{{ - { - if (options.keySupport) { - $keymgr.show(); - $keymgr.focus(); - } - } - //}}} - function onBlur(e) //{{{ - { - $keymgr.hide(); - } - //}}} - function doNudge(e, x, y) //{{{ - { - if (options.allowMove) { - Coords.moveOffset([x, y]); - Selection.updateVisible(true); - } - e.preventDefault(); - e.stopPropagation(); - } - //}}} - function parseKey(e) //{{{ - { - if (e.ctrlKey || e.metaKey) { - return true; - } - shift_down = e.shiftKey ? true : false; - var nudge = shift_down ? 10 : 1; - - switch (e.keyCode) { - case 37: - doNudge(e, -nudge, 0); - break; - case 39: - doNudge(e, nudge, 0); - break; - case 38: - doNudge(e, 0, -nudge); - break; - case 40: - doNudge(e, 0, nudge); - break; - case 27: - if (options.allowSelect) Selection.release(); - break; - case 9: - return true; - } - - return false; - } - //}}} - - if (options.keySupport) { - $keymgr.keydown(parseKey).blur(onBlur); - if (ie6mode || !options.fixedSupport) { - $keymgr.css({ - position: 'absolute', - left: '-20px' - }); - $keywrap.append($keymgr).insertBefore($img); - } else { - $keymgr.insertBefore($img); - } - } - - - return { - watchKeys: watchKeys - }; - }()); - //}}} - // }}} - // API methods {{{ - function setClass(cname) //{{{ - { - $div.removeClass().addClass(cssClass('holder')).addClass(cname); - } - //}}} - function animateTo(a, callback) //{{{ - { - var x1 = a[0] / xscale, - y1 = a[1] / yscale, - x2 = a[2] / xscale, - y2 = a[3] / yscale; - - if (animating) { - return; - } - - var animto = Coords.flipCoords(x1, y1, x2, y2), - c = Coords.getFixed(), - initcr = [c.x, c.y, c.x2, c.y2], - animat = initcr, - interv = options.animationDelay, - ix1 = animto[0] - initcr[0], - iy1 = animto[1] - initcr[1], - ix2 = animto[2] - initcr[2], - iy2 = animto[3] - initcr[3], - pcent = 0, - velocity = options.swingSpeed; - - x1 = animat[0]; - y1 = animat[1]; - x2 = animat[2]; - y2 = animat[3]; - - Selection.animMode(true); - var anim_timer; - - function queueAnimator() { - window.setTimeout(animator, interv); - } - var animator = (function () { - return function () { - pcent += (100 - pcent) / velocity; - - animat[0] = Math.round(x1 + ((pcent / 100) * ix1)); - animat[1] = Math.round(y1 + ((pcent / 100) * iy1)); - animat[2] = Math.round(x2 + ((pcent / 100) * ix2)); - animat[3] = Math.round(y2 + ((pcent / 100) * iy2)); - - if (pcent >= 99.8) { - pcent = 100; - } - if (pcent < 100) { - setSelectRaw(animat); - queueAnimator(); - } else { - Selection.done(); - Selection.animMode(false); - if (typeof(callback) === 'function') { - callback.call(api); - } - } - }; - }()); - queueAnimator(); - } - //}}} - function setSelect(rect) //{{{ - { - setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]); - options.onSelect.call(api, unscale(Coords.getFixed())); - Selection.enableHandles(); - } - //}}} - function setSelectRaw(l) //{{{ - { - Coords.setPressed([l[0], l[1]]); - Coords.setCurrent([l[2], l[3]]); - Selection.update(); - } - //}}} - function tellSelect() //{{{ - { - return unscale(Coords.getFixed()); - } - //}}} - function tellScaled() //{{{ - { - return Coords.getFixed(); - } - //}}} - function setOptionsNew(opt) //{{{ - { - setOptions(opt); - interfaceUpdate(); - } - //}}} - function disableCrop() //{{{ - { - options.disabled = true; - Selection.disableHandles(); - Selection.setCursor('default'); - Tracker.setCursor('default'); - } - //}}} - function enableCrop() //{{{ - { - options.disabled = false; - interfaceUpdate(); - } - //}}} - function cancelCrop() //{{{ - { - Selection.done(); - Tracker.activateHandlers(null, null); - } - //}}} - function destroy() //{{{ - { - $div.remove(); - $origimg.show(); - $origimg.css('visibility','visible'); - $(obj).removeData('Jcrop'); - } - //}}} - function setImage(src, callback) //{{{ - { - Selection.release(); - disableCrop(); - var img = new Image(); - img.onload = function () { - var iw = img.width; - var ih = img.height; - var bw = options.boxWidth; - var bh = options.boxHeight; - $img.width(iw).height(ih); - $img.attr('src', src); - $img2.attr('src', src); - presize($img, bw, bh); - boundx = $img.width(); - boundy = $img.height(); - $img2.width(boundx).height(boundy); - $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2)); - $div.width(boundx).height(boundy); - Shade.resize(boundx,boundy); - enableCrop(); - - if (typeof(callback) === 'function') { - callback.call(api); - } - }; - img.src = src; - } - //}}} - function colorChangeMacro($obj,color,now) { - var mycolor = color || options.bgColor; - if (options.bgFade && supportsColorFade() && options.fadeTime && !now) { - $obj.animate({ - backgroundColor: mycolor - }, { - queue: false, - duration: options.fadeTime - }); - } else { - $obj.css('backgroundColor', mycolor); - } - } - function interfaceUpdate(alt) //{{{ - // This method tweaks the interface based on options object. - // Called when options are changed and at end of initialization. - { - if (options.allowResize) { - if (alt) { - Selection.enableOnly(); - } else { - Selection.enableHandles(); - } - } else { - Selection.disableHandles(); - } - - Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); - Selection.setCursor(options.allowMove ? 'move' : 'default'); - - if (options.hasOwnProperty('trueSize')) { - xscale = options.trueSize[0] / boundx; - yscale = options.trueSize[1] / boundy; - } - - if (options.hasOwnProperty('setSelect')) { - setSelect(options.setSelect); - Selection.done(); - delete(options.setSelect); - } - - Shade.refresh(); - - if (options.bgColor != bgcolor) { - colorChangeMacro( - options.shade? Shade.getShades(): $div, - options.shade? - (options.shadeColor || options.bgColor): - options.bgColor - ); - bgcolor = options.bgColor; - } - - if (bgopacity != options.bgOpacity) { - bgopacity = options.bgOpacity; - if (options.shade) Shade.refresh(); - else Selection.setBgOpacity(bgopacity); - } - - xlimit = options.maxSize[0] || 0; - ylimit = options.maxSize[1] || 0; - xmin = options.minSize[0] || 0; - ymin = options.minSize[1] || 0; - - if (options.hasOwnProperty('outerImage')) { - $img.attr('src', options.outerImage); - delete(options.outerImage); - } - - Selection.refresh(); - } - //}}} - //}}} - - if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection); - - $hdl_holder.hide(); - interfaceUpdate(true); - - var api = { - setImage: setImage, - animateTo: animateTo, - setSelect: setSelect, - setOptions: setOptionsNew, - tellSelect: tellSelect, - tellScaled: tellScaled, - setClass: setClass, - - disable: disableCrop, - enable: enableCrop, - cancel: cancelCrop, - release: Selection.release, - destroy: destroy, - - focus: KeyManager.watchKeys, - - getBounds: function () { - return [boundx * xscale, boundy * yscale]; - }, - getWidgetSize: function () { - return [boundx, boundy]; - }, - getScaleFactor: function () { - return [xscale, yscale]; - }, - getOptions: function() { - // careful: internal values are returned - return options; - }, - - ui: { - holder: $div, - selection: $sel - } - }; - - if (is_msie) $div.bind('selectstart', function () { return false; }); - - $origimg.data('Jcrop', api); - return api; - }; - $.fn.Jcrop = function (options, callback) //{{{ - { - var api; - // Iterate over each object, attach Jcrop - this.each(function () { - // If we've already attached to this object - if ($(this).data('Jcrop')) { - // The API can be requested this way (undocumented) - if (options === 'api') return $(this).data('Jcrop'); - // Otherwise, we just reset the options... - else $(this).data('Jcrop').setOptions(options); - } - // If we haven't been attached, preload and attach - else { - if (this.tagName == 'IMG') - $.Jcrop.Loader(this,function(){ - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - }); - else { - $(this).css({display:'block',visibility:'hidden'}); - api = $.Jcrop(this, options); - if ($.isFunction(callback)) callback.call(api); - } - } - }); - - // Return "this" so the object is chainable (jQuery-style) - return this; - }; - //}}} - // $.Jcrop.Loader - basic image loader {{{ - - $.Jcrop.Loader = function(imgobj,success,error){ - var $img = $(imgobj), img = $img[0]; - - function completeCheck(){ - if (img.complete) { - $img.unbind('.jcloader'); - if ($.isFunction(success)) success.call(img); - } - else window.setTimeout(completeCheck,50); - } - - $img - .bind('load.jcloader',completeCheck) - .bind('error.jcloader',function(e){ - $img.unbind('.jcloader'); - if ($.isFunction(error)) error.call(img); - }); - - if (img.complete && $.isFunction(success)){ - $img.unbind('.jcloader'); - success.call(img); - } - }; - - //}}} - // Global Defaults {{{ - $.Jcrop.defaults = { - - // Basic Settings - allowSelect: true, - allowMove: true, - allowResize: true, - - trackDocument: true, - - // Styling Options - baseClass: 'jcrop', - addClass: null, - bgColor: 'black', - bgOpacity: 0.6, - bgFade: false, - borderOpacity: 0.4, - handleOpacity: 0.5, - handleSize: null, - - aspectRatio: 0, - keySupport: true, - createHandles: ['n','s','e','w','nw','ne','se','sw'], - createDragbars: ['n','s','e','w'], - createBorders: ['n','s','e','w'], - drawBorders: true, - dragEdges: true, - fixedSupport: true, - touchSupport: null, - - shade: null, - - boxWidth: 0, - boxHeight: 0, - boundary: 2, - fadeTime: 400, - animationDelay: 20, - swingSpeed: 3, - - minSelect: [0, 0], - maxSize: [0, 0], - minSize: [0, 0], - - // Callbacks / Event Handlers - onChange: function () {}, - onSelect: function () {}, - onDblClick: function () {}, - onRelease: function () {} - }; - - // }}} -}(jQuery)); diff --git a/bower_components/blueimp-load-image/js/vendor/jquery.js b/bower_components/blueimp-load-image/js/vendor/jquery.js deleted file mode 100644 index 6feb11086f..0000000000 --- a/bower_components/blueimp-load-image/js/vendor/jquery.js +++ /dev/null @@ -1,10351 +0,0 @@ -/*! - * jQuery JavaScript Library v1.11.3 - * http://jquery.com/ - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2015-04-28T16:19Z - */ - -(function( global, factory ) { - - if ( typeof module === "object" && typeof module.exports === "object" ) { - // For CommonJS and CommonJS-like environments where a proper window is present, - // execute the factory and get jQuery - // For environments that do not inherently posses a window with a document - // (such as Node.js), expose a jQuery-making factory as module.exports - // This accentuates the need for the creation of a real window - // e.g. var jQuery = require("jquery")(window); - // See ticket #14549 for more info - module.exports = global.document ? - factory( global, true ) : - function( w ) { - if ( !w.document ) { - throw new Error( "jQuery requires a window with a document" ); - } - return factory( w ); - }; - } else { - factory( global ); - } - -// Pass this if window is not defined yet -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { - -// Can't do this because several apps including ASP.NET trace -// the stack via arguments.caller.callee and Firefox dies if -// you try to trace through "use strict" call chains. (#13335) -// Support: Firefox 18+ -// - -var deletedIds = []; - -var slice = deletedIds.slice; - -var concat = deletedIds.concat; - -var push = deletedIds.push; - -var indexOf = deletedIds.indexOf; - -var class2type = {}; - -var toString = class2type.toString; - -var hasOwn = class2type.hasOwnProperty; - -var support = {}; - - - -var - version = "1.11.3", - - // Define a local copy of jQuery - jQuery = function( selector, context ) { - // The jQuery object is actually just the init constructor 'enhanced' - // Need init if jQuery is called (just allow error to be thrown if not included) - return new jQuery.fn.init( selector, context ); - }, - - // Support: Android<4.1, IE<9 - // Make sure we trim BOM and NBSP - rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, - - // Matches dashed string for camelizing - rmsPrefix = /^-ms-/, - rdashAlpha = /-([\da-z])/gi, - - // Used by jQuery.camelCase as callback to replace() - fcamelCase = function( all, letter ) { - return letter.toUpperCase(); - }; - -jQuery.fn = jQuery.prototype = { - // The current version of jQuery being used - jquery: version, - - constructor: jQuery, - - // Start with an empty selector - selector: "", - - // The default length of a jQuery object is 0 - length: 0, - - toArray: function() { - return slice.call( this ); - }, - - // Get the Nth element in the matched element set OR - // Get the whole matched element set as a clean array - get: function( num ) { - return num != null ? - - // Return just the one element from the set - ( num < 0 ? this[ num + this.length ] : this[ num ] ) : - - // Return all the elements in a clean array - slice.call( this ); - }, - - // Take an array of elements and push it onto the stack - // (returning the new matched element set) - pushStack: function( elems ) { - - // Build a new jQuery matched element set - var ret = jQuery.merge( this.constructor(), elems ); - - // Add the old object onto the stack (as a reference) - ret.prevObject = this; - ret.context = this.context; - - // Return the newly-formed element set - return ret; - }, - - // Execute a callback for every element in the matched set. - // (You can seed the arguments with an array of args, but this is - // only used internally.) - each: function( callback, args ) { - return jQuery.each( this, callback, args ); - }, - - map: function( callback ) { - return this.pushStack( jQuery.map(this, function( elem, i ) { - return callback.call( elem, i, elem ); - })); - }, - - slice: function() { - return this.pushStack( slice.apply( this, arguments ) ); - }, - - first: function() { - return this.eq( 0 ); - }, - - last: function() { - return this.eq( -1 ); - }, - - eq: function( i ) { - var len = this.length, - j = +i + ( i < 0 ? len : 0 ); - return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] ); - }, - - end: function() { - return this.prevObject || this.constructor(null); - }, - - // For internal use only. - // Behaves like an Array's method, not like a jQuery method. - push: push, - sort: deletedIds.sort, - splice: deletedIds.splice -}; - -jQuery.extend = jQuery.fn.extend = function() { - var src, copyIsArray, copy, name, options, clone, - target = arguments[0] || {}, - i = 1, - length = arguments.length, - deep = false; - - // Handle a deep copy situation - if ( typeof target === "boolean" ) { - deep = target; - - // skip the boolean and the target - target = arguments[ i ] || {}; - i++; - } - - // Handle case when target is a string or something (possible in deep copy) - if ( typeof target !== "object" && !jQuery.isFunction(target) ) { - target = {}; - } - - // extend jQuery itself if only one argument is passed - if ( i === length ) { - target = this; - i--; - } - - for ( ; i < length; i++ ) { - // Only deal with non-null/undefined values - if ( (options = arguments[ i ]) != null ) { - // Extend the base object - for ( name in options ) { - src = target[ name ]; - copy = options[ name ]; - - // Prevent never-ending loop - if ( target === copy ) { - continue; - } - - // Recurse if we're merging plain objects or arrays - if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) { - if ( copyIsArray ) { - copyIsArray = false; - clone = src && jQuery.isArray(src) ? src : []; - - } else { - clone = src && jQuery.isPlainObject(src) ? src : {}; - } - - // Never move original objects, clone them - target[ name ] = jQuery.extend( deep, clone, copy ); - - // Don't bring in undefined values - } else if ( copy !== undefined ) { - target[ name ] = copy; - } - } - } - } - - // Return the modified object - return target; -}; - -jQuery.extend({ - // Unique for each copy of jQuery on the page - expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), - - // Assume jQuery is ready without the ready module - isReady: true, - - error: function( msg ) { - throw new Error( msg ); - }, - - noop: function() {}, - - // See test/unit/core.js for details concerning isFunction. - // Since version 1.3, DOM methods and functions like alert - // aren't supported. They return false on IE (#2968). - isFunction: function( obj ) { - return jQuery.type(obj) === "function"; - }, - - isArray: Array.isArray || function( obj ) { - return jQuery.type(obj) === "array"; - }, - - isWindow: function( obj ) { - /* jshint eqeqeq: false */ - return obj != null && obj == obj.window; - }, - - isNumeric: function( obj ) { - // parseFloat NaNs numeric-cast false positives (null|true|false|"") - // ...but misinterprets leading-number strings, particularly hex literals ("0x...") - // subtraction forces infinities to NaN - // adding 1 corrects loss of precision from parseFloat (#15100) - return !jQuery.isArray( obj ) && (obj - parseFloat( obj ) + 1) >= 0; - }, - - isEmptyObject: function( obj ) { - var name; - for ( name in obj ) { - return false; - } - return true; - }, - - isPlainObject: function( obj ) { - var key; - - // Must be an Object. - // Because of IE, we also have to check the presence of the constructor property. - // Make sure that DOM nodes and window objects don't pass through, as well - if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { - return false; - } - - try { - // Not own constructor property must be Object - if ( obj.constructor && - !hasOwn.call(obj, "constructor") && - !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) { - return false; - } - } catch ( e ) { - // IE8,9 Will throw exceptions on certain host objects #9897 - return false; - } - - // Support: IE<9 - // Handle iteration over inherited properties before own properties. - if ( support.ownLast ) { - for ( key in obj ) { - return hasOwn.call( obj, key ); - } - } - - // Own properties are enumerated firstly, so to speed up, - // if last one is own, then all properties are own. - for ( key in obj ) {} - - return key === undefined || hasOwn.call( obj, key ); - }, - - type: function( obj ) { - if ( obj == null ) { - return obj + ""; - } - return typeof obj === "object" || typeof obj === "function" ? - class2type[ toString.call(obj) ] || "object" : - typeof obj; - }, - - // Evaluates a script in a global context - // Workarounds based on findings by Jim Driscoll - // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context - globalEval: function( data ) { - if ( data && jQuery.trim( data ) ) { - // We use execScript on Internet Explorer - // We use an anonymous function so that context is window - // rather than jQuery in Firefox - ( window.execScript || function( data ) { - window[ "eval" ].call( window, data ); - } )( data ); - } - }, - - // Convert dashed to camelCase; used by the css and data modules - // Microsoft forgot to hump their vendor prefix (#9572) - camelCase: function( string ) { - return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); - }, - - nodeName: function( elem, name ) { - return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); - }, - - // args is for internal usage only - each: function( obj, callback, args ) { - var value, - i = 0, - length = obj.length, - isArray = isArraylike( obj ); - - if ( args ) { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.apply( obj[ i ], args ); - - if ( value === false ) { - break; - } - } - } - - // A special, fast, case for the most common use of each - } else { - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } else { - for ( i in obj ) { - value = callback.call( obj[ i ], i, obj[ i ] ); - - if ( value === false ) { - break; - } - } - } - } - - return obj; - }, - - // Support: Android<4.1, IE<9 - trim: function( text ) { - return text == null ? - "" : - ( text + "" ).replace( rtrim, "" ); - }, - - // results is for internal usage only - makeArray: function( arr, results ) { - var ret = results || []; - - if ( arr != null ) { - if ( isArraylike( Object(arr) ) ) { - jQuery.merge( ret, - typeof arr === "string" ? - [ arr ] : arr - ); - } else { - push.call( ret, arr ); - } - } - - return ret; - }, - - inArray: function( elem, arr, i ) { - var len; - - if ( arr ) { - if ( indexOf ) { - return indexOf.call( arr, elem, i ); - } - - len = arr.length; - i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; - - for ( ; i < len; i++ ) { - // Skip accessing in sparse arrays - if ( i in arr && arr[ i ] === elem ) { - return i; - } - } - } - - return -1; - }, - - merge: function( first, second ) { - var len = +second.length, - j = 0, - i = first.length; - - while ( j < len ) { - first[ i++ ] = second[ j++ ]; - } - - // Support: IE<9 - // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) - if ( len !== len ) { - while ( second[j] !== undefined ) { - first[ i++ ] = second[ j++ ]; - } - } - - first.length = i; - - return first; - }, - - grep: function( elems, callback, invert ) { - var callbackInverse, - matches = [], - i = 0, - length = elems.length, - callbackExpect = !invert; - - // Go through the array, only saving the items - // that pass the validator function - for ( ; i < length; i++ ) { - callbackInverse = !callback( elems[ i ], i ); - if ( callbackInverse !== callbackExpect ) { - matches.push( elems[ i ] ); - } - } - - return matches; - }, - - // arg is for internal usage only - map: function( elems, callback, arg ) { - var value, - i = 0, - length = elems.length, - isArray = isArraylike( elems ), - ret = []; - - // Go through the array, translating each of the items to their new values - if ( isArray ) { - for ( ; i < length; i++ ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - - // Go through every key on the object, - } else { - for ( i in elems ) { - value = callback( elems[ i ], i, arg ); - - if ( value != null ) { - ret.push( value ); - } - } - } - - // Flatten any nested arrays - return concat.apply( [], ret ); - }, - - // A global GUID counter for objects - guid: 1, - - // Bind a function to a context, optionally partially applying any - // arguments. - proxy: function( fn, context ) { - var args, proxy, tmp; - - if ( typeof context === "string" ) { - tmp = fn[ context ]; - context = fn; - fn = tmp; - } - - // Quick check to determine if target is callable, in the spec - // this throws a TypeError, but we will just return undefined. - if ( !jQuery.isFunction( fn ) ) { - return undefined; - } - - // Simulated bind - args = slice.call( arguments, 2 ); - proxy = function() { - return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); - }; - - // Set the guid of unique handler to the same of original handler, so it can be removed - proxy.guid = fn.guid = fn.guid || jQuery.guid++; - - return proxy; - }, - - now: function() { - return +( new Date() ); - }, - - // jQuery.support is not used in Core but other projects attach their - // properties to it so it needs to exist. - support: support -}); - -// Populate the class2type map -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { - class2type[ "[object " + name + "]" ] = name.toLowerCase(); -}); - -function isArraylike( obj ) { - - // Support: iOS 8.2 (not reproducible in simulator) - // `in` check used to prevent JIT error (gh-2145) - // hasOwn isn't used here due to false negatives - // regarding Nodelist length in IE - var length = "length" in obj && obj.length, - type = jQuery.type( obj ); - - if ( type === "function" || jQuery.isWindow( obj ) ) { - return false; - } - - if ( obj.nodeType === 1 && length ) { - return true; - } - - return type === "array" || length === 0 || - typeof length === "number" && length > 0 && ( length - 1 ) in obj; -} -var Sizzle = -/*! - * Sizzle CSS Selector Engine v2.2.0-pre - * http://sizzlejs.com/ - * - * Copyright 2008, 2014 jQuery Foundation, Inc. and other contributors - * Released under the MIT license - * http://jquery.org/license - * - * Date: 2014-12-16 - */ -(function( window ) { - -var i, - support, - Expr, - getText, - isXML, - tokenize, - compile, - select, - outermostContext, - sortInput, - hasDuplicate, - - // Local document vars - setDocument, - document, - docElem, - documentIsHTML, - rbuggyQSA, - rbuggyMatches, - matches, - contains, - - // Instance-specific data - expando = "sizzle" + 1 * new Date(), - preferredDoc = window.document, - dirruns = 0, - done = 0, - classCache = createCache(), - tokenCache = createCache(), - compilerCache = createCache(), - sortOrder = function( a, b ) { - if ( a === b ) { - hasDuplicate = true; - } - return 0; - }, - - // General-purpose constants - MAX_NEGATIVE = 1 << 31, - - // Instance methods - hasOwn = ({}).hasOwnProperty, - arr = [], - pop = arr.pop, - push_native = arr.push, - push = arr.push, - slice = arr.slice, - // Use a stripped-down indexOf as it's faster than native - // http://jsperf.com/thor-indexof-vs-for/5 - indexOf = function( list, elem ) { - var i = 0, - len = list.length; - for ( ; i < len; i++ ) { - if ( list[i] === elem ) { - return i; - } - } - return -1; - }, - - booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", - - // Regular expressions - - // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace - whitespace = "[\\x20\\t\\r\\n\\f]", - // http://www.w3.org/TR/css3-syntax/#characters - characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", - - // Loosely modeled on CSS identifier characters - // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors - // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier - identifier = characterEncoding.replace( "w", "w#" ), - - // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors - attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace + - // Operator (capture 2) - "*([*^$|!~]?=)" + whitespace + - // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" - "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + - "*\\]", - - pseudos = ":(" + characterEncoding + ")(?:\\((" + - // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: - // 1. quoted (capture 3; capture 4 or capture 5) - "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + - // 2. simple (capture 6) - "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + - // 3. anything else (capture 2) - ".*" + - ")\\)|)", - - // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter - rwhitespace = new RegExp( whitespace + "+", "g" ), - rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), - - rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), - rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), - - rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), - - rpseudo = new RegExp( pseudos ), - ridentifier = new RegExp( "^" + identifier + "$" ), - - matchExpr = { - "ID": new RegExp( "^#(" + characterEncoding + ")" ), - "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ), - "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ), - "ATTR": new RegExp( "^" + attributes ), - "PSEUDO": new RegExp( "^" + pseudos ), - "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + - "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + - "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), - "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), - // For use in libraries implementing .is() - // We use this for POS matching in `select` - "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + - whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) - }, - - rinputs = /^(?:input|select|textarea|button)$/i, - rheader = /^h\d$/i, - - rnative = /^[^{]+\{\s*\[native \w/, - - // Easily-parseable/retrievable ID or TAG or CLASS selectors - rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, - - rsibling = /[+~]/, - rescape = /'|\\/g, - - // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters - runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), - funescape = function( _, escaped, escapedWhitespace ) { - var high = "0x" + escaped - 0x10000; - // NaN means non-codepoint - // Support: Firefox<24 - // Workaround erroneous numeric interpretation of +"0x" - return high !== high || escapedWhitespace ? - escaped : - high < 0 ? - // BMP codepoint - String.fromCharCode( high + 0x10000 ) : - // Supplemental Plane codepoint (surrogate pair) - String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); - }, - - // Used for iframes - // See setDocument() - // Removing the function wrapper causes a "Permission Denied" - // error in IE - unloadHandler = function() { - setDocument(); - }; - -// Optimize for push.apply( _, NodeList ) -try { - push.apply( - (arr = slice.call( preferredDoc.childNodes )), - preferredDoc.childNodes - ); - // Support: Android<4.0 - // Detect silently failing push.apply - arr[ preferredDoc.childNodes.length ].nodeType; -} catch ( e ) { - push = { apply: arr.length ? - - // Leverage slice if possible - function( target, els ) { - push_native.apply( target, slice.call(els) ); - } : - - // Support: IE<9 - // Otherwise append directly - function( target, els ) { - var j = target.length, - i = 0; - // Can't trust NodeList.length - while ( (target[j++] = els[i++]) ) {} - target.length = j - 1; - } - }; -} - -function Sizzle( selector, context, results, seed ) { - var match, elem, m, nodeType, - // QSA vars - i, groups, old, nid, newContext, newSelector; - - if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { - setDocument( context ); - } - - context = context || document; - results = results || []; - nodeType = context.nodeType; - - if ( typeof selector !== "string" || !selector || - nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { - - return results; - } - - if ( !seed && documentIsHTML ) { - - // Try to shortcut find operations when possible (e.g., not under DocumentFragment) - if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { - // Speed-up: Sizzle("#ID") - if ( (m = match[1]) ) { - if ( nodeType === 9 ) { - elem = context.getElementById( m ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document (jQuery #6963) - if ( elem && elem.parentNode ) { - // Handle the case where IE, Opera, and Webkit return items - // by name instead of ID - if ( elem.id === m ) { - results.push( elem ); - return results; - } - } else { - return results; - } - } else { - // Context is not a document - if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) && - contains( context, elem ) && elem.id === m ) { - results.push( elem ); - return results; - } - } - - // Speed-up: Sizzle("TAG") - } else if ( match[2] ) { - push.apply( results, context.getElementsByTagName( selector ) ); - return results; - - // Speed-up: Sizzle(".CLASS") - } else if ( (m = match[3]) && support.getElementsByClassName ) { - push.apply( results, context.getElementsByClassName( m ) ); - return results; - } - } - - // QSA path - if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { - nid = old = expando; - newContext = context; - newSelector = nodeType !== 1 && selector; - - // qSA works strangely on Element-rooted queries - // We can work around this by specifying an extra ID on the root - // and working up from there (Thanks to Andrew Dupont for the technique) - // IE 8 doesn't work on object elements - if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) { - groups = tokenize( selector ); - - if ( (old = context.getAttribute("id")) ) { - nid = old.replace( rescape, "\\$&" ); - } else { - context.setAttribute( "id", nid ); - } - nid = "[id='" + nid + "'] "; - - i = groups.length; - while ( i-- ) { - groups[i] = nid + toSelector( groups[i] ); - } - newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context; - newSelector = groups.join(","); - } - - if ( newSelector ) { - try { - push.apply( results, - newContext.querySelectorAll( newSelector ) - ); - return results; - } catch(qsaError) { - } finally { - if ( !old ) { - context.removeAttribute("id"); - } - } - } - } - } - - // All others - return select( selector.replace( rtrim, "$1" ), context, results, seed ); -} - -/** - * Create key-value caches of limited size - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with - * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) - * deleting the oldest entry - */ -function createCache() { - var keys = []; - - function cache( key, value ) { - // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) - if ( keys.push( key + " " ) > Expr.cacheLength ) { - // Only keep the most recent entries - delete cache[ keys.shift() ]; - } - return (cache[ key + " " ] = value); - } - return cache; -} - -/** - * Mark a function for special use by Sizzle - * @param {Function} fn The function to mark - */ -function markFunction( fn ) { - fn[ expando ] = true; - return fn; -} - -/** - * Support testing using an element - * @param {Function} fn Passed the created div and expects a boolean result - */ -function assert( fn ) { - var div = document.createElement("div"); - - try { - return !!fn( div ); - } catch (e) { - return false; - } finally { - // Remove from its parent by default - if ( div.parentNode ) { - div.parentNode.removeChild( div ); - } - // release memory in IE - div = null; - } -} - -/** - * Adds the same handler for all of the specified attrs - * @param {String} attrs Pipe-separated list of attributes - * @param {Function} handler The method that will be applied - */ -function addHandle( attrs, handler ) { - var arr = attrs.split("|"), - i = attrs.length; - - while ( i-- ) { - Expr.attrHandle[ arr[i] ] = handler; - } -} - -/** - * Checks document order of two siblings - * @param {Element} a - * @param {Element} b - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b - */ -function siblingCheck( a, b ) { - var cur = b && a, - diff = cur && a.nodeType === 1 && b.nodeType === 1 && - ( ~b.sourceIndex || MAX_NEGATIVE ) - - ( ~a.sourceIndex || MAX_NEGATIVE ); - - // Use IE sourceIndex if available on both nodes - if ( diff ) { - return diff; - } - - // Check if b follows a - if ( cur ) { - while ( (cur = cur.nextSibling) ) { - if ( cur === b ) { - return -1; - } - } - } - - return a ? 1 : -1; -} - -/** - * Returns a function to use in pseudos for input types - * @param {String} type - */ -function createInputPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for buttons - * @param {String} type - */ -function createButtonPseudo( type ) { - return function( elem ) { - var name = elem.nodeName.toLowerCase(); - return (name === "input" || name === "button") && elem.type === type; - }; -} - -/** - * Returns a function to use in pseudos for positionals - * @param {Function} fn - */ -function createPositionalPseudo( fn ) { - return markFunction(function( argument ) { - argument = +argument; - return markFunction(function( seed, matches ) { - var j, - matchIndexes = fn( [], seed.length, argument ), - i = matchIndexes.length; - - // Match elements found at the specified indexes - while ( i-- ) { - if ( seed[ (j = matchIndexes[i]) ] ) { - seed[j] = !(matches[j] = seed[j]); - } - } - }); - }); -} - -/** - * Checks a node for validity as a Sizzle context - * @param {Element|Object=} context - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value - */ -function testContext( context ) { - return context && typeof context.getElementsByTagName !== "undefined" && context; -} - -// Expose support vars for convenience -support = Sizzle.support = {}; - -/** - * Detects XML nodes - * @param {Element|Object} elem An element or a document - * @returns {Boolean} True iff elem is a non-HTML XML node - */ -isXML = Sizzle.isXML = function( elem ) { - // documentElement is verified for cases where it doesn't yet exist - // (such as loading iframes in IE - #4833) - var documentElement = elem && (elem.ownerDocument || elem).documentElement; - return documentElement ? documentElement.nodeName !== "HTML" : false; -}; - -/** - * Sets document-related variables once based on the current document - * @param {Element|Object} [doc] An element or document object to use to set the document - * @returns {Object} Returns the current document - */ -setDocument = Sizzle.setDocument = function( node ) { - var hasCompare, parent, - doc = node ? node.ownerDocument || node : preferredDoc; - - // If no document and documentElement is available, return - if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { - return document; - } - - // Set our document - document = doc; - docElem = doc.documentElement; - parent = doc.defaultView; - - // Support: IE>8 - // If iframe document is assigned to "document" variable and if iframe has been reloaded, - // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936 - // IE6-8 do not support the defaultView property so parent will be undefined - if ( parent && parent !== parent.top ) { - // IE11 does not have attachEvent, so all must suffer - if ( parent.addEventListener ) { - parent.addEventListener( "unload", unloadHandler, false ); - } else if ( parent.attachEvent ) { - parent.attachEvent( "onunload", unloadHandler ); - } - } - - /* Support tests - ---------------------------------------------------------------------- */ - documentIsHTML = !isXML( doc ); - - /* Attributes - ---------------------------------------------------------------------- */ - - // Support: IE<8 - // Verify that getAttribute really returns attributes and not properties - // (excepting IE8 booleans) - support.attributes = assert(function( div ) { - div.className = "i"; - return !div.getAttribute("className"); - }); - - /* getElement(s)By* - ---------------------------------------------------------------------- */ - - // Check if getElementsByTagName("*") returns only elements - support.getElementsByTagName = assert(function( div ) { - div.appendChild( doc.createComment("") ); - return !div.getElementsByTagName("*").length; - }); - - // Support: IE<9 - support.getElementsByClassName = rnative.test( doc.getElementsByClassName ); - - // Support: IE<10 - // Check if getElementById returns elements by name - // The broken getElementById methods don't pick up programatically-set names, - // so use a roundabout getElementsByName test - support.getById = assert(function( div ) { - docElem.appendChild( div ).id = expando; - return !doc.getElementsByName || !doc.getElementsByName( expando ).length; - }); - - // ID find and filter - if ( support.getById ) { - Expr.find["ID"] = function( id, context ) { - if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { - var m = context.getElementById( id ); - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - return m && m.parentNode ? [ m ] : []; - } - }; - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - return elem.getAttribute("id") === attrId; - }; - }; - } else { - // Support: IE6/7 - // getElementById is not reliable as a find shortcut - delete Expr.find["ID"]; - - Expr.filter["ID"] = function( id ) { - var attrId = id.replace( runescape, funescape ); - return function( elem ) { - var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); - return node && node.value === attrId; - }; - }; - } - - // Tag - Expr.find["TAG"] = support.getElementsByTagName ? - function( tag, context ) { - if ( typeof context.getElementsByTagName !== "undefined" ) { - return context.getElementsByTagName( tag ); - - // DocumentFragment nodes don't have gEBTN - } else if ( support.qsa ) { - return context.querySelectorAll( tag ); - } - } : - - function( tag, context ) { - var elem, - tmp = [], - i = 0, - // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too - results = context.getElementsByTagName( tag ); - - // Filter out possible comments - if ( tag === "*" ) { - while ( (elem = results[i++]) ) { - if ( elem.nodeType === 1 ) { - tmp.push( elem ); - } - } - - return tmp; - } - return results; - }; - - // Class - Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { - if ( documentIsHTML ) { - return context.getElementsByClassName( className ); - } - }; - - /* QSA/matchesSelector - ---------------------------------------------------------------------- */ - - // QSA and matchesSelector support - - // matchesSelector(:active) reports false when true (IE9/Opera 11.5) - rbuggyMatches = []; - - // qSa(:focus) reports false when true (Chrome 21) - // We allow this because of a bug in IE8/9 that throws an error - // whenever `document.activeElement` is accessed on an iframe - // So, we allow :focus to pass through QSA all the time to avoid the IE error - // See http://bugs.jquery.com/ticket/13378 - rbuggyQSA = []; - - if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) { - // Build QSA regex - // Regex strategy adopted from Diego Perini - assert(function( div ) { - // Select is set to empty string on purpose - // This is to test IE's treatment of not explicitly - // setting a boolean content attribute, - // since its presence should be enough - // http://bugs.jquery.com/ticket/12359 - docElem.appendChild( div ).innerHTML = "" + - ""; - - // Support: IE8, Opera 11-12.16 - // Nothing should be selected when empty strings follow ^= or $= or *= - // The test attribute must be unknown in Opera but "safe" for WinRT - // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section - if ( div.querySelectorAll("[msallowcapture^='']").length ) { - rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); - } - - // Support: IE8 - // Boolean attributes and "value" are not treated correctly - if ( !div.querySelectorAll("[selected]").length ) { - rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); - } - - // Support: Chrome<29, Android<4.2+, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.7+ - if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { - rbuggyQSA.push("~="); - } - - // Webkit/Opera - :checked should return selected option elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":checked").length ) { - rbuggyQSA.push(":checked"); - } - - // Support: Safari 8+, iOS 8+ - // https://bugs.webkit.org/show_bug.cgi?id=136851 - // In-page `selector#id sibing-combinator selector` fails - if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { - rbuggyQSA.push(".#.+[+~]"); - } - }); - - assert(function( div ) { - // Support: Windows 8 Native Apps - // The type and name attributes are restricted during .innerHTML assignment - var input = doc.createElement("input"); - input.setAttribute( "type", "hidden" ); - div.appendChild( input ).setAttribute( "name", "D" ); - - // Support: IE8 - // Enforce case-sensitivity of name attribute - if ( div.querySelectorAll("[name=d]").length ) { - rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); - } - - // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) - // IE8 throws error here and will not see later tests - if ( !div.querySelectorAll(":enabled").length ) { - rbuggyQSA.push( ":enabled", ":disabled" ); - } - - // Opera 10-11 does not throw on post-comma invalid pseudos - div.querySelectorAll("*,:x"); - rbuggyQSA.push(",.*:"); - }); - } - - if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || - docElem.webkitMatchesSelector || - docElem.mozMatchesSelector || - docElem.oMatchesSelector || - docElem.msMatchesSelector) )) ) { - - assert(function( div ) { - // Check to see if it's possible to do matchesSelector - // on a disconnected node (IE 9) - support.disconnectedMatch = matches.call( div, "div" ); - - // This should fail with an exception - // Gecko does not error, returns false instead - matches.call( div, "[s!='']:x" ); - rbuggyMatches.push( "!=", pseudos ); - }); - } - - rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); - rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); - - /* Contains - ---------------------------------------------------------------------- */ - hasCompare = rnative.test( docElem.compareDocumentPosition ); - - // Element contains another - // Purposefully does not implement inclusive descendent - // As in, an element does not contain itself - contains = hasCompare || rnative.test( docElem.contains ) ? - function( a, b ) { - var adown = a.nodeType === 9 ? a.documentElement : a, - bup = b && b.parentNode; - return a === bup || !!( bup && bup.nodeType === 1 && ( - adown.contains ? - adown.contains( bup ) : - a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 - )); - } : - function( a, b ) { - if ( b ) { - while ( (b = b.parentNode) ) { - if ( b === a ) { - return true; - } - } - } - return false; - }; - - /* Sorting - ---------------------------------------------------------------------- */ - - // Document order sorting - sortOrder = hasCompare ? - function( a, b ) { - - // Flag for duplicate removal - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - // Sort on method existence if only one input has compareDocumentPosition - var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; - if ( compare ) { - return compare; - } - - // Calculate position if both inputs belong to the same document - compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? - a.compareDocumentPosition( b ) : - - // Otherwise we know they are disconnected - 1; - - // Disconnected nodes - if ( compare & 1 || - (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { - - // Choose the first element that is related to our preferred document - if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { - return -1; - } - if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { - return 1; - } - - // Maintain original order - return sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - } - - return compare & 4 ? -1 : 1; - } : - function( a, b ) { - // Exit early if the nodes are identical - if ( a === b ) { - hasDuplicate = true; - return 0; - } - - var cur, - i = 0, - aup = a.parentNode, - bup = b.parentNode, - ap = [ a ], - bp = [ b ]; - - // Parentless nodes are either documents or disconnected - if ( !aup || !bup ) { - return a === doc ? -1 : - b === doc ? 1 : - aup ? -1 : - bup ? 1 : - sortInput ? - ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : - 0; - - // If the nodes are siblings, we can do a quick check - } else if ( aup === bup ) { - return siblingCheck( a, b ); - } - - // Otherwise we need full lists of their ancestors for comparison - cur = a; - while ( (cur = cur.parentNode) ) { - ap.unshift( cur ); - } - cur = b; - while ( (cur = cur.parentNode) ) { - bp.unshift( cur ); - } - - // Walk down the tree looking for a discrepancy - while ( ap[i] === bp[i] ) { - i++; - } - - return i ? - // Do a sibling check if the nodes have a common ancestor - siblingCheck( ap[i], bp[i] ) : - - // Otherwise nodes in our document sort first - ap[i] === preferredDoc ? -1 : - bp[i] === preferredDoc ? 1 : - 0; - }; - - return doc; -}; - -Sizzle.matches = function( expr, elements ) { - return Sizzle( expr, null, null, elements ); -}; - -Sizzle.matchesSelector = function( elem, expr ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - // Make sure that attribute selectors are quoted - expr = expr.replace( rattributeQuotes, "='$1']" ); - - if ( support.matchesSelector && documentIsHTML && - ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && - ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { - - try { - var ret = matches.call( elem, expr ); - - // IE 9's matchesSelector returns false on disconnected nodes - if ( ret || support.disconnectedMatch || - // As well, disconnected nodes are said to be in a document - // fragment in IE 9 - elem.document && elem.document.nodeType !== 11 ) { - return ret; - } - } catch (e) {} - } - - return Sizzle( expr, document, null, [ elem ] ).length > 0; -}; - -Sizzle.contains = function( context, elem ) { - // Set document vars if needed - if ( ( context.ownerDocument || context ) !== document ) { - setDocument( context ); - } - return contains( context, elem ); -}; - -Sizzle.attr = function( elem, name ) { - // Set document vars if needed - if ( ( elem.ownerDocument || elem ) !== document ) { - setDocument( elem ); - } - - var fn = Expr.attrHandle[ name.toLowerCase() ], - // Don't get fooled by Object.prototype properties (jQuery #13807) - val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? - fn( elem, name, !documentIsHTML ) : - undefined; - - return val !== undefined ? - val : - support.attributes || !documentIsHTML ? - elem.getAttribute( name ) : - (val = elem.getAttributeNode(name)) && val.specified ? - val.value : - null; -}; - -Sizzle.error = function( msg ) { - throw new Error( "Syntax error, unrecognized expression: " + msg ); -}; - -/** - * Document sorting and removing duplicates - * @param {ArrayLike} results - */ -Sizzle.uniqueSort = function( results ) { - var elem, - duplicates = [], - j = 0, - i = 0; - - // Unless we *know* we can detect duplicates, assume their presence - hasDuplicate = !support.detectDuplicates; - sortInput = !support.sortStable && results.slice( 0 ); - results.sort( sortOrder ); - - if ( hasDuplicate ) { - while ( (elem = results[i++]) ) { - if ( elem === results[ i ] ) { - j = duplicates.push( i ); - } - } - while ( j-- ) { - results.splice( duplicates[ j ], 1 ); - } - } - - // Clear input after sorting to release objects - // See https://github.com/jquery/sizzle/pull/225 - sortInput = null; - - return results; -}; - -/** - * Utility function for retrieving the text value of an array of DOM nodes - * @param {Array|Element} elem - */ -getText = Sizzle.getText = function( elem ) { - var node, - ret = "", - i = 0, - nodeType = elem.nodeType; - - if ( !nodeType ) { - // If no nodeType, this is expected to be an array - while ( (node = elem[i++]) ) { - // Do not traverse comment nodes - ret += getText( node ); - } - } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { - // Use textContent for elements - // innerText usage removed for consistency of new lines (jQuery #11153) - if ( typeof elem.textContent === "string" ) { - return elem.textContent; - } else { - // Traverse its children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - ret += getText( elem ); - } - } - } else if ( nodeType === 3 || nodeType === 4 ) { - return elem.nodeValue; - } - // Do not include comment or processing instruction nodes - - return ret; -}; - -Expr = Sizzle.selectors = { - - // Can be adjusted by the user - cacheLength: 50, - - createPseudo: markFunction, - - match: matchExpr, - - attrHandle: {}, - - find: {}, - - relative: { - ">": { dir: "parentNode", first: true }, - " ": { dir: "parentNode" }, - "+": { dir: "previousSibling", first: true }, - "~": { dir: "previousSibling" } - }, - - preFilter: { - "ATTR": function( match ) { - match[1] = match[1].replace( runescape, funescape ); - - // Move the given value to match[3] whether quoted or unquoted - match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); - - if ( match[2] === "~=" ) { - match[3] = " " + match[3] + " "; - } - - return match.slice( 0, 4 ); - }, - - "CHILD": function( match ) { - /* matches from matchExpr["CHILD"] - 1 type (only|nth|...) - 2 what (child|of-type) - 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) - 4 xn-component of xn+y argument ([+-]?\d*n|) - 5 sign of xn-component - 6 x of xn-component - 7 sign of y-component - 8 y of y-component - */ - match[1] = match[1].toLowerCase(); - - if ( match[1].slice( 0, 3 ) === "nth" ) { - // nth-* requires argument - if ( !match[3] ) { - Sizzle.error( match[0] ); - } - - // numeric x and y parameters for Expr.filter.CHILD - // remember that false/true cast respectively to 0/1 - match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); - match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); - - // other types prohibit arguments - } else if ( match[3] ) { - Sizzle.error( match[0] ); - } - - return match; - }, - - "PSEUDO": function( match ) { - var excess, - unquoted = !match[6] && match[2]; - - if ( matchExpr["CHILD"].test( match[0] ) ) { - return null; - } - - // Accept quoted arguments as-is - if ( match[3] ) { - match[2] = match[4] || match[5] || ""; - - // Strip excess characters from unquoted arguments - } else if ( unquoted && rpseudo.test( unquoted ) && - // Get excess from tokenize (recursively) - (excess = tokenize( unquoted, true )) && - // advance to the next closing parenthesis - (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { - - // excess is a negative index - match[0] = match[0].slice( 0, excess ); - match[2] = unquoted.slice( 0, excess ); - } - - // Return only captures needed by the pseudo filter method (type and argument) - return match.slice( 0, 3 ); - } - }, - - filter: { - - "TAG": function( nodeNameSelector ) { - var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); - return nodeNameSelector === "*" ? - function() { return true; } : - function( elem ) { - return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; - }; - }, - - "CLASS": function( className ) { - var pattern = classCache[ className + " " ]; - - return pattern || - (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && - classCache( className, function( elem ) { - return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); - }); - }, - - "ATTR": function( name, operator, check ) { - return function( elem ) { - var result = Sizzle.attr( elem, name ); - - if ( result == null ) { - return operator === "!="; - } - if ( !operator ) { - return true; - } - - result += ""; - - return operator === "=" ? result === check : - operator === "!=" ? result !== check : - operator === "^=" ? check && result.indexOf( check ) === 0 : - operator === "*=" ? check && result.indexOf( check ) > -1 : - operator === "$=" ? check && result.slice( -check.length ) === check : - operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : - operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : - false; - }; - }, - - "CHILD": function( type, what, argument, first, last ) { - var simple = type.slice( 0, 3 ) !== "nth", - forward = type.slice( -4 ) !== "last", - ofType = what === "of-type"; - - return first === 1 && last === 0 ? - - // Shortcut for :nth-*(n) - function( elem ) { - return !!elem.parentNode; - } : - - function( elem, context, xml ) { - var cache, outerCache, node, diff, nodeIndex, start, - dir = simple !== forward ? "nextSibling" : "previousSibling", - parent = elem.parentNode, - name = ofType && elem.nodeName.toLowerCase(), - useCache = !xml && !ofType; - - if ( parent ) { - - // :(first|last|only)-(child|of-type) - if ( simple ) { - while ( dir ) { - node = elem; - while ( (node = node[ dir ]) ) { - if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) { - return false; - } - } - // Reverse direction for :only-* (if we haven't yet done so) - start = dir = type === "only" && !start && "nextSibling"; - } - return true; - } - - start = [ forward ? parent.firstChild : parent.lastChild ]; - - // non-xml :nth-child(...) stores cache data on `parent` - if ( forward && useCache ) { - // Seek `elem` from a previously-cached index - outerCache = parent[ expando ] || (parent[ expando ] = {}); - cache = outerCache[ type ] || []; - nodeIndex = cache[0] === dirruns && cache[1]; - diff = cache[0] === dirruns && cache[2]; - node = nodeIndex && parent.childNodes[ nodeIndex ]; - - while ( (node = ++nodeIndex && node && node[ dir ] || - - // Fallback to seeking `elem` from the start - (diff = nodeIndex = 0) || start.pop()) ) { - - // When found, cache indexes on `parent` and break - if ( node.nodeType === 1 && ++diff && node === elem ) { - outerCache[ type ] = [ dirruns, nodeIndex, diff ]; - break; - } - } - - // Use previously-cached element index if available - } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) { - diff = cache[1]; - - // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...) - } else { - // Use the same loop as above to seek `elem` from the start - while ( (node = ++nodeIndex && node && node[ dir ] || - (diff = nodeIndex = 0) || start.pop()) ) { - - if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) { - // Cache the index of each encountered element - if ( useCache ) { - (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ]; - } - - if ( node === elem ) { - break; - } - } - } - } - - // Incorporate the offset, then check against cycle size - diff -= last; - return diff === first || ( diff % first === 0 && diff / first >= 0 ); - } - }; - }, - - "PSEUDO": function( pseudo, argument ) { - // pseudo-class names are case-insensitive - // http://www.w3.org/TR/selectors/#pseudo-classes - // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters - // Remember that setFilters inherits from pseudos - var args, - fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || - Sizzle.error( "unsupported pseudo: " + pseudo ); - - // The user may use createPseudo to indicate that - // arguments are needed to create the filter function - // just as Sizzle does - if ( fn[ expando ] ) { - return fn( argument ); - } - - // But maintain support for old signatures - if ( fn.length > 1 ) { - args = [ pseudo, pseudo, "", argument ]; - return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? - markFunction(function( seed, matches ) { - var idx, - matched = fn( seed, argument ), - i = matched.length; - while ( i-- ) { - idx = indexOf( seed, matched[i] ); - seed[ idx ] = !( matches[ idx ] = matched[i] ); - } - }) : - function( elem ) { - return fn( elem, 0, args ); - }; - } - - return fn; - } - }, - - pseudos: { - // Potentially complex pseudos - "not": markFunction(function( selector ) { - // Trim the selector passed to compile - // to avoid treating leading and trailing - // spaces as combinators - var input = [], - results = [], - matcher = compile( selector.replace( rtrim, "$1" ) ); - - return matcher[ expando ] ? - markFunction(function( seed, matches, context, xml ) { - var elem, - unmatched = matcher( seed, null, xml, [] ), - i = seed.length; - - // Match elements unmatched by `matcher` - while ( i-- ) { - if ( (elem = unmatched[i]) ) { - seed[i] = !(matches[i] = elem); - } - } - }) : - function( elem, context, xml ) { - input[0] = elem; - matcher( input, null, xml, results ); - // Don't keep the element (issue #299) - input[0] = null; - return !results.pop(); - }; - }), - - "has": markFunction(function( selector ) { - return function( elem ) { - return Sizzle( selector, elem ).length > 0; - }; - }), - - "contains": markFunction(function( text ) { - text = text.replace( runescape, funescape ); - return function( elem ) { - return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; - }; - }), - - // "Whether an element is represented by a :lang() selector - // is based solely on the element's language value - // being equal to the identifier C, - // or beginning with the identifier C immediately followed by "-". - // The matching of C against the element's language value is performed case-insensitively. - // The identifier C does not have to be a valid language name." - // http://www.w3.org/TR/selectors/#lang-pseudo - "lang": markFunction( function( lang ) { - // lang value must be a valid identifier - if ( !ridentifier.test(lang || "") ) { - Sizzle.error( "unsupported lang: " + lang ); - } - lang = lang.replace( runescape, funescape ).toLowerCase(); - return function( elem ) { - var elemLang; - do { - if ( (elemLang = documentIsHTML ? - elem.lang : - elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { - - elemLang = elemLang.toLowerCase(); - return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; - } - } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); - return false; - }; - }), - - // Miscellaneous - "target": function( elem ) { - var hash = window.location && window.location.hash; - return hash && hash.slice( 1 ) === elem.id; - }, - - "root": function( elem ) { - return elem === docElem; - }, - - "focus": function( elem ) { - return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); - }, - - // Boolean properties - "enabled": function( elem ) { - return elem.disabled === false; - }, - - "disabled": function( elem ) { - return elem.disabled === true; - }, - - "checked": function( elem ) { - // In CSS3, :checked should return both checked and selected elements - // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked - var nodeName = elem.nodeName.toLowerCase(); - return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); - }, - - "selected": function( elem ) { - // Accessing this property makes selected-by-default - // options in Safari work properly - if ( elem.parentNode ) { - elem.parentNode.selectedIndex; - } - - return elem.selected === true; - }, - - // Contents - "empty": function( elem ) { - // http://www.w3.org/TR/selectors/#empty-pseudo - // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), - // but not by others (comment: 8; processing instruction: 7; etc.) - // nodeType < 6 works because attributes (2) do not appear as children - for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { - if ( elem.nodeType < 6 ) { - return false; - } - } - return true; - }, - - "parent": function( elem ) { - return !Expr.pseudos["empty"]( elem ); - }, - - // Element/input types - "header": function( elem ) { - return rheader.test( elem.nodeName ); - }, - - "input": function( elem ) { - return rinputs.test( elem.nodeName ); - }, - - "button": function( elem ) { - var name = elem.nodeName.toLowerCase(); - return name === "input" && elem.type === "button" || name === "button"; - }, - - "text": function( elem ) { - var attr; - return elem.nodeName.toLowerCase() === "input" && - elem.type === "text" && - - // Support: IE<8 - // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" - ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); - }, - - // Position-in-collection - "first": createPositionalPseudo(function() { - return [ 0 ]; - }), - - "last": createPositionalPseudo(function( matchIndexes, length ) { - return [ length - 1 ]; - }), - - "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { - return [ argument < 0 ? argument + length : argument ]; - }), - - "even": createPositionalPseudo(function( matchIndexes, length ) { - var i = 0; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "odd": createPositionalPseudo(function( matchIndexes, length ) { - var i = 1; - for ( ; i < length; i += 2 ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; --i >= 0; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }), - - "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { - var i = argument < 0 ? argument + length : argument; - for ( ; ++i < length; ) { - matchIndexes.push( i ); - } - return matchIndexes; - }) - } -}; - -Expr.pseudos["nth"] = Expr.pseudos["eq"]; - -// Add button/input type pseudos -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { - Expr.pseudos[ i ] = createInputPseudo( i ); -} -for ( i in { submit: true, reset: true } ) { - Expr.pseudos[ i ] = createButtonPseudo( i ); -} - -// Easy API for creating new setFilters -function setFilters() {} -setFilters.prototype = Expr.filters = Expr.pseudos; -Expr.setFilters = new setFilters(); - -tokenize = Sizzle.tokenize = function( selector, parseOnly ) { - var matched, match, tokens, type, - soFar, groups, preFilters, - cached = tokenCache[ selector + " " ]; - - if ( cached ) { - return parseOnly ? 0 : cached.slice( 0 ); - } - - soFar = selector; - groups = []; - preFilters = Expr.preFilter; - - while ( soFar ) { - - // Comma and first run - if ( !matched || (match = rcomma.exec( soFar )) ) { - if ( match ) { - // Don't consume trailing commas as valid - soFar = soFar.slice( match[0].length ) || soFar; - } - groups.push( (tokens = []) ); - } - - matched = false; - - // Combinators - if ( (match = rcombinators.exec( soFar )) ) { - matched = match.shift(); - tokens.push({ - value: matched, - // Cast descendant combinators to space - type: match[0].replace( rtrim, " " ) - }); - soFar = soFar.slice( matched.length ); - } - - // Filters - for ( type in Expr.filter ) { - if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || - (match = preFilters[ type ]( match ))) ) { - matched = match.shift(); - tokens.push({ - value: matched, - type: type, - matches: match - }); - soFar = soFar.slice( matched.length ); - } - } - - if ( !matched ) { - break; - } - } - - // Return the length of the invalid excess - // if we're just parsing - // Otherwise, throw an error or return tokens - return parseOnly ? - soFar.length : - soFar ? - Sizzle.error( selector ) : - // Cache the tokens - tokenCache( selector, groups ).slice( 0 ); -}; - -function toSelector( tokens ) { - var i = 0, - len = tokens.length, - selector = ""; - for ( ; i < len; i++ ) { - selector += tokens[i].value; - } - return selector; -} - -function addCombinator( matcher, combinator, base ) { - var dir = combinator.dir, - checkNonElements = base && dir === "parentNode", - doneName = done++; - - return combinator.first ? - // Check against closest ancestor/preceding element - function( elem, context, xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - return matcher( elem, context, xml ); - } - } - } : - - // Check against all ancestor/preceding elements - function( elem, context, xml ) { - var oldCache, outerCache, - newCache = [ dirruns, doneName ]; - - // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching - if ( xml ) { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - if ( matcher( elem, context, xml ) ) { - return true; - } - } - } - } else { - while ( (elem = elem[ dir ]) ) { - if ( elem.nodeType === 1 || checkNonElements ) { - outerCache = elem[ expando ] || (elem[ expando ] = {}); - if ( (oldCache = outerCache[ dir ]) && - oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { - - // Assign to newCache so results back-propagate to previous elements - return (newCache[ 2 ] = oldCache[ 2 ]); - } else { - // Reuse newcache so results back-propagate to previous elements - outerCache[ dir ] = newCache; - - // A match means we're done; a fail means we have to keep checking - if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { - return true; - } - } - } - } - } - }; -} - -function elementMatcher( matchers ) { - return matchers.length > 1 ? - function( elem, context, xml ) { - var i = matchers.length; - while ( i-- ) { - if ( !matchers[i]( elem, context, xml ) ) { - return false; - } - } - return true; - } : - matchers[0]; -} - -function multipleContexts( selector, contexts, results ) { - var i = 0, - len = contexts.length; - for ( ; i < len; i++ ) { - Sizzle( selector, contexts[i], results ); - } - return results; -} - -function condense( unmatched, map, filter, context, xml ) { - var elem, - newUnmatched = [], - i = 0, - len = unmatched.length, - mapped = map != null; - - for ( ; i < len; i++ ) { - if ( (elem = unmatched[i]) ) { - if ( !filter || filter( elem, context, xml ) ) { - newUnmatched.push( elem ); - if ( mapped ) { - map.push( i ); - } - } - } - } - - return newUnmatched; -} - -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { - if ( postFilter && !postFilter[ expando ] ) { - postFilter = setMatcher( postFilter ); - } - if ( postFinder && !postFinder[ expando ] ) { - postFinder = setMatcher( postFinder, postSelector ); - } - return markFunction(function( seed, results, context, xml ) { - var temp, i, elem, - preMap = [], - postMap = [], - preexisting = results.length, - - // Get initial elements from seed or context - elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), - - // Prefilter to get matcher input, preserving a map for seed-results synchronization - matcherIn = preFilter && ( seed || !selector ) ? - condense( elems, preMap, preFilter, context, xml ) : - elems, - - matcherOut = matcher ? - // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, - postFinder || ( seed ? preFilter : preexisting || postFilter ) ? - - // ...intermediate processing is necessary - [] : - - // ...otherwise use results directly - results : - matcherIn; - - // Find primary matches - if ( matcher ) { - matcher( matcherIn, matcherOut, context, xml ); - } - - // Apply postFilter - if ( postFilter ) { - temp = condense( matcherOut, postMap ); - postFilter( temp, [], context, xml ); - - // Un-match failing elements by moving them back to matcherIn - i = temp.length; - while ( i-- ) { - if ( (elem = temp[i]) ) { - matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); - } - } - } - - if ( seed ) { - if ( postFinder || preFilter ) { - if ( postFinder ) { - // Get the final matcherOut by condensing this intermediate into postFinder contexts - temp = []; - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) ) { - // Restore matcherIn since elem is not yet a final match - temp.push( (matcherIn[i] = elem) ); - } - } - postFinder( null, (matcherOut = []), temp, xml ); - } - - // Move matched elements from seed to results to keep them synchronized - i = matcherOut.length; - while ( i-- ) { - if ( (elem = matcherOut[i]) && - (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { - - seed[temp] = !(results[temp] = elem); - } - } - } - - // Add elements to results, through postFinder if defined - } else { - matcherOut = condense( - matcherOut === results ? - matcherOut.splice( preexisting, matcherOut.length ) : - matcherOut - ); - if ( postFinder ) { - postFinder( null, results, matcherOut, xml ); - } else { - push.apply( results, matcherOut ); - } - } - }); -} - -function matcherFromTokens( tokens ) { - var checkContext, matcher, j, - len = tokens.length, - leadingRelative = Expr.relative[ tokens[0].type ], - implicitRelative = leadingRelative || Expr.relative[" "], - i = leadingRelative ? 1 : 0, - - // The foundational matcher ensures that elements are reachable from top-level context(s) - matchContext = addCombinator( function( elem ) { - return elem === checkContext; - }, implicitRelative, true ), - matchAnyContext = addCombinator( function( elem ) { - return indexOf( checkContext, elem ) > -1; - }, implicitRelative, true ), - matchers = [ function( elem, context, xml ) { - var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( - (checkContext = context).nodeType ? - matchContext( elem, context, xml ) : - matchAnyContext( elem, context, xml ) ); - // Avoid hanging onto element (issue #299) - checkContext = null; - return ret; - } ]; - - for ( ; i < len; i++ ) { - if ( (matcher = Expr.relative[ tokens[i].type ]) ) { - matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; - } else { - matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); - - // Return special upon seeing a positional matcher - if ( matcher[ expando ] ) { - // Find the next relative operator (if any) for proper handling - j = ++i; - for ( ; j < len; j++ ) { - if ( Expr.relative[ tokens[j].type ] ) { - break; - } - } - return setMatcher( - i > 1 && elementMatcher( matchers ), - i > 1 && toSelector( - // If the preceding token was a descendant combinator, insert an implicit any-element `*` - tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) - ).replace( rtrim, "$1" ), - matcher, - i < j && matcherFromTokens( tokens.slice( i, j ) ), - j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), - j < len && toSelector( tokens ) - ); - } - matchers.push( matcher ); - } - } - - return elementMatcher( matchers ); -} - -function matcherFromGroupMatchers( elementMatchers, setMatchers ) { - var bySet = setMatchers.length > 0, - byElement = elementMatchers.length > 0, - superMatcher = function( seed, context, xml, results, outermost ) { - var elem, j, matcher, - matchedCount = 0, - i = "0", - unmatched = seed && [], - setMatched = [], - contextBackup = outermostContext, - // We must always have either seed elements or outermost context - elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), - // Use integer dirruns iff this is the outermost matcher - dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), - len = elems.length; - - if ( outermost ) { - outermostContext = context !== document && context; - } - - // Add elements passing elementMatchers directly to results - // Keep `i` a string if there are no elements so `matchedCount` will be "00" below - // Support: IE<9, Safari - // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id - for ( ; i !== len && (elem = elems[i]) != null; i++ ) { - if ( byElement && elem ) { - j = 0; - while ( (matcher = elementMatchers[j++]) ) { - if ( matcher( elem, context, xml ) ) { - results.push( elem ); - break; - } - } - if ( outermost ) { - dirruns = dirrunsUnique; - } - } - - // Track unmatched elements for set filters - if ( bySet ) { - // They will have gone through all possible matchers - if ( (elem = !matcher && elem) ) { - matchedCount--; - } - - // Lengthen the array for every element, matched or not - if ( seed ) { - unmatched.push( elem ); - } - } - } - - // Apply set filters to unmatched elements - matchedCount += i; - if ( bySet && i !== matchedCount ) { - j = 0; - while ( (matcher = setMatchers[j++]) ) { - matcher( unmatched, setMatched, context, xml ); - } - - if ( seed ) { - // Reintegrate element matches to eliminate the need for sorting - if ( matchedCount > 0 ) { - while ( i-- ) { - if ( !(unmatched[i] || setMatched[i]) ) { - setMatched[i] = pop.call( results ); - } - } - } - - // Discard index placeholder values to get only actual matches - setMatched = condense( setMatched ); - } - - // Add matches to results - push.apply( results, setMatched ); - - // Seedless set matches succeeding multiple successful matchers stipulate sorting - if ( outermost && !seed && setMatched.length > 0 && - ( matchedCount + setMatchers.length ) > 1 ) { - - Sizzle.uniqueSort( results ); - } - } - - // Override manipulation of globals by nested matchers - if ( outermost ) { - dirruns = dirrunsUnique; - outermostContext = contextBackup; - } - - return unmatched; - }; - - return bySet ? - markFunction( superMatcher ) : - superMatcher; -} - -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { - var i, - setMatchers = [], - elementMatchers = [], - cached = compilerCache[ selector + " " ]; - - if ( !cached ) { - // Generate a function of recursive functions that can be used to check each element - if ( !match ) { - match = tokenize( selector ); - } - i = match.length; - while ( i-- ) { - cached = matcherFromTokens( match[i] ); - if ( cached[ expando ] ) { - setMatchers.push( cached ); - } else { - elementMatchers.push( cached ); - } - } - - // Cache the compiled function - cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); - - // Save selector and tokenization - cached.selector = selector; - } - return cached; -}; - -/** - * A low-level selection function that works with Sizzle's compiled - * selector functions - * @param {String|Function} selector A selector or a pre-compiled - * selector function built with Sizzle.compile - * @param {Element} context - * @param {Array} [results] - * @param {Array} [seed] A set of elements to match against - */ -select = Sizzle.select = function( selector, context, results, seed ) { - var i, tokens, token, type, find, - compiled = typeof selector === "function" && selector, - match = !seed && tokenize( (selector = compiled.selector || selector) ); - - results = results || []; - - // Try to minimize operations if there is no seed and only one group - if ( match.length === 1 ) { - - // Take a shortcut and set the context if the root selector is an ID - tokens = match[0] = match[0].slice( 0 ); - if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && - support.getById && context.nodeType === 9 && documentIsHTML && - Expr.relative[ tokens[1].type ] ) { - - context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; - if ( !context ) { - return results; - - // Precompiled matchers will still verify ancestry, so step up a level - } else if ( compiled ) { - context = context.parentNode; - } - - selector = selector.slice( tokens.shift().value.length ); - } - - // Fetch a seed set for right-to-left matching - i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; - while ( i-- ) { - token = tokens[i]; - - // Abort if we hit a combinator - if ( Expr.relative[ (type = token.type) ] ) { - break; - } - if ( (find = Expr.find[ type ]) ) { - // Search, expanding context for leading sibling combinators - if ( (seed = find( - token.matches[0].replace( runescape, funescape ), - rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context - )) ) { - - // If seed is empty or no tokens remain, we can return early - tokens.splice( i, 1 ); - selector = seed.length && toSelector( tokens ); - if ( !selector ) { - push.apply( results, seed ); - return results; - } - - break; - } - } - } - } - - // Compile and execute a filtering function if one is not provided - // Provide `match` to avoid retokenization if we modified the selector above - ( compiled || compile( selector, match ) )( - seed, - context, - !documentIsHTML, - results, - rsibling.test( selector ) && testContext( context.parentNode ) || context - ); - return results; -}; - -// One-time assignments - -// Sort stability -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; - -// Support: Chrome 14-35+ -// Always assume duplicates if they aren't passed to the comparison function -support.detectDuplicates = !!hasDuplicate; - -// Initialize against the default document -setDocument(); - -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) -// Detached nodes confoundingly follow *each other* -support.sortDetached = assert(function( div1 ) { - // Should return 1, but returns 4 (following) - return div1.compareDocumentPosition( document.createElement("div") ) & 1; -}); - -// Support: IE<8 -// Prevent attribute/property "interpolation" -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx -if ( !assert(function( div ) { - div.innerHTML = ""; - return div.firstChild.getAttribute("href") === "#" ; -}) ) { - addHandle( "type|href|height|width", function( elem, name, isXML ) { - if ( !isXML ) { - return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); - } - }); -} - -// Support: IE<9 -// Use defaultValue in place of getAttribute("value") -if ( !support.attributes || !assert(function( div ) { - div.innerHTML = ""; - div.firstChild.setAttribute( "value", "" ); - return div.firstChild.getAttribute( "value" ) === ""; -}) ) { - addHandle( "value", function( elem, name, isXML ) { - if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { - return elem.defaultValue; - } - }); -} - -// Support: IE<9 -// Use getAttributeNode to fetch booleans when getAttribute lies -if ( !assert(function( div ) { - return div.getAttribute("disabled") == null; -}) ) { - addHandle( booleans, function( elem, name, isXML ) { - var val; - if ( !isXML ) { - return elem[ name ] === true ? name.toLowerCase() : - (val = elem.getAttributeNode( name )) && val.specified ? - val.value : - null; - } - }); -} - -return Sizzle; - -})( window ); - - - -jQuery.find = Sizzle; -jQuery.expr = Sizzle.selectors; -jQuery.expr[":"] = jQuery.expr.pseudos; -jQuery.unique = Sizzle.uniqueSort; -jQuery.text = Sizzle.getText; -jQuery.isXMLDoc = Sizzle.isXML; -jQuery.contains = Sizzle.contains; - - - -var rneedsContext = jQuery.expr.match.needsContext; - -var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/); - - - -var risSimple = /^.[^:#\[\.,]*$/; - -// Implement the identical functionality for filter and not -function winnow( elements, qualifier, not ) { - if ( jQuery.isFunction( qualifier ) ) { - return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ - return !!qualifier.call( elem, i, elem ) !== not; - }); - - } - - if ( qualifier.nodeType ) { - return jQuery.grep( elements, function( elem ) { - return ( elem === qualifier ) !== not; - }); - - } - - if ( typeof qualifier === "string" ) { - if ( risSimple.test( qualifier ) ) { - return jQuery.filter( qualifier, elements, not ); - } - - qualifier = jQuery.filter( qualifier, elements ); - } - - return jQuery.grep( elements, function( elem ) { - return ( jQuery.inArray( elem, qualifier ) >= 0 ) !== not; - }); -} - -jQuery.filter = function( expr, elems, not ) { - var elem = elems[ 0 ]; - - if ( not ) { - expr = ":not(" + expr + ")"; - } - - return elems.length === 1 && elem.nodeType === 1 ? - jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : - jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { - return elem.nodeType === 1; - })); -}; - -jQuery.fn.extend({ - find: function( selector ) { - var i, - ret = [], - self = this, - len = self.length; - - if ( typeof selector !== "string" ) { - return this.pushStack( jQuery( selector ).filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( self[ i ], this ) ) { - return true; - } - } - }) ); - } - - for ( i = 0; i < len; i++ ) { - jQuery.find( selector, self[ i ], ret ); - } - - // Needed because $( selector, context ) becomes $( context ).find( selector ) - ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); - ret.selector = this.selector ? this.selector + " " + selector : selector; - return ret; - }, - filter: function( selector ) { - return this.pushStack( winnow(this, selector || [], false) ); - }, - not: function( selector ) { - return this.pushStack( winnow(this, selector || [], true) ); - }, - is: function( selector ) { - return !!winnow( - this, - - // If this is a positional/relative selector, check membership in the returned set - // so $("p:first").is("p:last") won't return true for a doc with two "p". - typeof selector === "string" && rneedsContext.test( selector ) ? - jQuery( selector ) : - selector || [], - false - ).length; - } -}); - - -// Initialize a jQuery object - - -// A central reference to the root jQuery(document) -var rootjQuery, - - // Use the correct document accordingly with window argument (sandbox) - document = window.document, - - // A simple way to check for HTML strings - // Prioritize #id over to avoid XSS via location.hash (#9521) - // Strict HTML recognition (#11290: must start with <) - rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, - - init = jQuery.fn.init = function( selector, context ) { - var match, elem; - - // HANDLE: $(""), $(null), $(undefined), $(false) - if ( !selector ) { - return this; - } - - // Handle HTML strings - if ( typeof selector === "string" ) { - if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) { - // Assume that strings that start and end with <> are HTML and skip the regex check - match = [ null, selector, null ]; - - } else { - match = rquickExpr.exec( selector ); - } - - // Match html or make sure no context is specified for #id - if ( match && (match[1] || !context) ) { - - // HANDLE: $(html) -> $(array) - if ( match[1] ) { - context = context instanceof jQuery ? context[0] : context; - - // scripts is true for back-compat - // Intentionally let the error be thrown if parseHTML is not present - jQuery.merge( this, jQuery.parseHTML( - match[1], - context && context.nodeType ? context.ownerDocument || context : document, - true - ) ); - - // HANDLE: $(html, props) - if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) { - for ( match in context ) { - // Properties of context are called as methods if possible - if ( jQuery.isFunction( this[ match ] ) ) { - this[ match ]( context[ match ] ); - - // ...and otherwise set as attributes - } else { - this.attr( match, context[ match ] ); - } - } - } - - return this; - - // HANDLE: $(#id) - } else { - elem = document.getElementById( match[2] ); - - // Check parentNode to catch when Blackberry 4.6 returns - // nodes that are no longer in the document #6963 - if ( elem && elem.parentNode ) { - // Handle the case where IE and Opera return items - // by name instead of ID - if ( elem.id !== match[2] ) { - return rootjQuery.find( selector ); - } - - // Otherwise, we inject the element directly into the jQuery object - this.length = 1; - this[0] = elem; - } - - this.context = document; - this.selector = selector; - return this; - } - - // HANDLE: $(expr, $(...)) - } else if ( !context || context.jquery ) { - return ( context || rootjQuery ).find( selector ); - - // HANDLE: $(expr, context) - // (which is just equivalent to: $(context).find(expr) - } else { - return this.constructor( context ).find( selector ); - } - - // HANDLE: $(DOMElement) - } else if ( selector.nodeType ) { - this.context = this[0] = selector; - this.length = 1; - return this; - - // HANDLE: $(function) - // Shortcut for document ready - } else if ( jQuery.isFunction( selector ) ) { - return typeof rootjQuery.ready !== "undefined" ? - rootjQuery.ready( selector ) : - // Execute immediately if ready is not present - selector( jQuery ); - } - - if ( selector.selector !== undefined ) { - this.selector = selector.selector; - this.context = selector.context; - } - - return jQuery.makeArray( selector, this ); - }; - -// Give the init function the jQuery prototype for later instantiation -init.prototype = jQuery.fn; - -// Initialize central reference -rootjQuery = jQuery( document ); - - -var rparentsprev = /^(?:parents|prev(?:Until|All))/, - // methods guaranteed to produce a unique set when starting from a unique set - guaranteedUnique = { - children: true, - contents: true, - next: true, - prev: true - }; - -jQuery.extend({ - dir: function( elem, dir, until ) { - var matched = [], - cur = elem[ dir ]; - - while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) { - if ( cur.nodeType === 1 ) { - matched.push( cur ); - } - cur = cur[dir]; - } - return matched; - }, - - sibling: function( n, elem ) { - var r = []; - - for ( ; n; n = n.nextSibling ) { - if ( n.nodeType === 1 && n !== elem ) { - r.push( n ); - } - } - - return r; - } -}); - -jQuery.fn.extend({ - has: function( target ) { - var i, - targets = jQuery( target, this ), - len = targets.length; - - return this.filter(function() { - for ( i = 0; i < len; i++ ) { - if ( jQuery.contains( this, targets[i] ) ) { - return true; - } - } - }); - }, - - closest: function( selectors, context ) { - var cur, - i = 0, - l = this.length, - matched = [], - pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? - jQuery( selectors, context || this.context ) : - 0; - - for ( ; i < l; i++ ) { - for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) { - // Always skip document fragments - if ( cur.nodeType < 11 && (pos ? - pos.index(cur) > -1 : - - // Don't pass non-elements to Sizzle - cur.nodeType === 1 && - jQuery.find.matchesSelector(cur, selectors)) ) { - - matched.push( cur ); - break; - } - } - } - - return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched ); - }, - - // Determine the position of an element within - // the matched set of elements - index: function( elem ) { - - // No argument, return index in parent - if ( !elem ) { - return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1; - } - - // index in selector - if ( typeof elem === "string" ) { - return jQuery.inArray( this[0], jQuery( elem ) ); - } - - // Locate the position of the desired element - return jQuery.inArray( - // If it receives a jQuery object, the first element is used - elem.jquery ? elem[0] : elem, this ); - }, - - add: function( selector, context ) { - return this.pushStack( - jQuery.unique( - jQuery.merge( this.get(), jQuery( selector, context ) ) - ) - ); - }, - - addBack: function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter(selector) - ); - } -}); - -function sibling( cur, dir ) { - do { - cur = cur[ dir ]; - } while ( cur && cur.nodeType !== 1 ); - - return cur; -} - -jQuery.each({ - parent: function( elem ) { - var parent = elem.parentNode; - return parent && parent.nodeType !== 11 ? parent : null; - }, - parents: function( elem ) { - return jQuery.dir( elem, "parentNode" ); - }, - parentsUntil: function( elem, i, until ) { - return jQuery.dir( elem, "parentNode", until ); - }, - next: function( elem ) { - return sibling( elem, "nextSibling" ); - }, - prev: function( elem ) { - return sibling( elem, "previousSibling" ); - }, - nextAll: function( elem ) { - return jQuery.dir( elem, "nextSibling" ); - }, - prevAll: function( elem ) { - return jQuery.dir( elem, "previousSibling" ); - }, - nextUntil: function( elem, i, until ) { - return jQuery.dir( elem, "nextSibling", until ); - }, - prevUntil: function( elem, i, until ) { - return jQuery.dir( elem, "previousSibling", until ); - }, - siblings: function( elem ) { - return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem ); - }, - children: function( elem ) { - return jQuery.sibling( elem.firstChild ); - }, - contents: function( elem ) { - return jQuery.nodeName( elem, "iframe" ) ? - elem.contentDocument || elem.contentWindow.document : - jQuery.merge( [], elem.childNodes ); - } -}, function( name, fn ) { - jQuery.fn[ name ] = function( until, selector ) { - var ret = jQuery.map( this, fn, until ); - - if ( name.slice( -5 ) !== "Until" ) { - selector = until; - } - - if ( selector && typeof selector === "string" ) { - ret = jQuery.filter( selector, ret ); - } - - if ( this.length > 1 ) { - // Remove duplicates - if ( !guaranteedUnique[ name ] ) { - ret = jQuery.unique( ret ); - } - - // Reverse order for parents* and prev-derivatives - if ( rparentsprev.test( name ) ) { - ret = ret.reverse(); - } - } - - return this.pushStack( ret ); - }; -}); -var rnotwhite = (/\S+/g); - - - -// String to Object options format cache -var optionsCache = {}; - -// Convert String-formatted options into Object-formatted ones and store in cache -function createOptions( options ) { - var object = optionsCache[ options ] = {}; - jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { - object[ flag ] = true; - }); - return object; -} - -/* - * Create a callback list using the following parameters: - * - * options: an optional list of space-separated options that will change how - * the callback list behaves or a more traditional option object - * - * By default a callback list will act like an event callback list and can be - * "fired" multiple times. - * - * Possible options: - * - * once: will ensure the callback list can only be fired once (like a Deferred) - * - * memory: will keep track of previous values and will call any callback added - * after the list has been fired right away with the latest "memorized" - * values (like a Deferred) - * - * unique: will ensure a callback can only be added once (no duplicate in the list) - * - * stopOnFalse: interrupt callings when a callback returns false - * - */ -jQuery.Callbacks = function( options ) { - - // Convert options from String-formatted to Object-formatted if needed - // (we check in cache first) - options = typeof options === "string" ? - ( optionsCache[ options ] || createOptions( options ) ) : - jQuery.extend( {}, options ); - - var // Flag to know if list is currently firing - firing, - // Last fire value (for non-forgettable lists) - memory, - // Flag to know if list was already fired - fired, - // End of the loop when firing - firingLength, - // Index of currently firing callback (modified by remove if needed) - firingIndex, - // First callback to fire (used internally by add and fireWith) - firingStart, - // Actual callback list - list = [], - // Stack of fire calls for repeatable lists - stack = !options.once && [], - // Fire callbacks - fire = function( data ) { - memory = options.memory && data; - fired = true; - firingIndex = firingStart || 0; - firingStart = 0; - firingLength = list.length; - firing = true; - for ( ; list && firingIndex < firingLength; firingIndex++ ) { - if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) { - memory = false; // To prevent further calls using add - break; - } - } - firing = false; - if ( list ) { - if ( stack ) { - if ( stack.length ) { - fire( stack.shift() ); - } - } else if ( memory ) { - list = []; - } else { - self.disable(); - } - } - }, - // Actual Callbacks object - self = { - // Add a callback or a collection of callbacks to the list - add: function() { - if ( list ) { - // First, we save the current length - var start = list.length; - (function add( args ) { - jQuery.each( args, function( _, arg ) { - var type = jQuery.type( arg ); - if ( type === "function" ) { - if ( !options.unique || !self.has( arg ) ) { - list.push( arg ); - } - } else if ( arg && arg.length && type !== "string" ) { - // Inspect recursively - add( arg ); - } - }); - })( arguments ); - // Do we need to add the callbacks to the - // current firing batch? - if ( firing ) { - firingLength = list.length; - // With memory, if we're not firing then - // we should call right away - } else if ( memory ) { - firingStart = start; - fire( memory ); - } - } - return this; - }, - // Remove a callback from the list - remove: function() { - if ( list ) { - jQuery.each( arguments, function( _, arg ) { - var index; - while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { - list.splice( index, 1 ); - // Handle firing indexes - if ( firing ) { - if ( index <= firingLength ) { - firingLength--; - } - if ( index <= firingIndex ) { - firingIndex--; - } - } - } - }); - } - return this; - }, - // Check if a given callback is in the list. - // If no argument is given, return whether or not list has callbacks attached. - has: function( fn ) { - return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length ); - }, - // Remove all callbacks from the list - empty: function() { - list = []; - firingLength = 0; - return this; - }, - // Have the list do nothing anymore - disable: function() { - list = stack = memory = undefined; - return this; - }, - // Is it disabled? - disabled: function() { - return !list; - }, - // Lock the list in its current state - lock: function() { - stack = undefined; - if ( !memory ) { - self.disable(); - } - return this; - }, - // Is it locked? - locked: function() { - return !stack; - }, - // Call all callbacks with the given context and arguments - fireWith: function( context, args ) { - if ( list && ( !fired || stack ) ) { - args = args || []; - args = [ context, args.slice ? args.slice() : args ]; - if ( firing ) { - stack.push( args ); - } else { - fire( args ); - } - } - return this; - }, - // Call all the callbacks with the given arguments - fire: function() { - self.fireWith( this, arguments ); - return this; - }, - // To know if the callbacks have already been called at least once - fired: function() { - return !!fired; - } - }; - - return self; -}; - - -jQuery.extend({ - - Deferred: function( func ) { - var tuples = [ - // action, add listener, listener list, final state - [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], - [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ], - [ "notify", "progress", jQuery.Callbacks("memory") ] - ], - state = "pending", - promise = { - state: function() { - return state; - }, - always: function() { - deferred.done( arguments ).fail( arguments ); - return this; - }, - then: function( /* fnDone, fnFail, fnProgress */ ) { - var fns = arguments; - return jQuery.Deferred(function( newDefer ) { - jQuery.each( tuples, function( i, tuple ) { - var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; - // deferred[ done | fail | progress ] for forwarding actions to newDefer - deferred[ tuple[1] ](function() { - var returned = fn && fn.apply( this, arguments ); - if ( returned && jQuery.isFunction( returned.promise ) ) { - returned.promise() - .done( newDefer.resolve ) - .fail( newDefer.reject ) - .progress( newDefer.notify ); - } else { - newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments ); - } - }); - }); - fns = null; - }).promise(); - }, - // Get a promise for this deferred - // If obj is provided, the promise aspect is added to the object - promise: function( obj ) { - return obj != null ? jQuery.extend( obj, promise ) : promise; - } - }, - deferred = {}; - - // Keep pipe for back-compat - promise.pipe = promise.then; - - // Add list-specific methods - jQuery.each( tuples, function( i, tuple ) { - var list = tuple[ 2 ], - stateString = tuple[ 3 ]; - - // promise[ done | fail | progress ] = list.add - promise[ tuple[1] ] = list.add; - - // Handle state - if ( stateString ) { - list.add(function() { - // state = [ resolved | rejected ] - state = stateString; - - // [ reject_list | resolve_list ].disable; progress_list.lock - }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); - } - - // deferred[ resolve | reject | notify ] - deferred[ tuple[0] ] = function() { - deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments ); - return this; - }; - deferred[ tuple[0] + "With" ] = list.fireWith; - }); - - // Make the deferred a promise - promise.promise( deferred ); - - // Call given func if any - if ( func ) { - func.call( deferred, deferred ); - } - - // All done! - return deferred; - }, - - // Deferred helper - when: function( subordinate /* , ..., subordinateN */ ) { - var i = 0, - resolveValues = slice.call( arguments ), - length = resolveValues.length, - - // the count of uncompleted subordinates - remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, - - // the master Deferred. If resolveValues consist of only a single Deferred, just use that. - deferred = remaining === 1 ? subordinate : jQuery.Deferred(), - - // Update function for both resolve and progress values - updateFunc = function( i, contexts, values ) { - return function( value ) { - contexts[ i ] = this; - values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; - if ( values === progressValues ) { - deferred.notifyWith( contexts, values ); - - } else if ( !(--remaining) ) { - deferred.resolveWith( contexts, values ); - } - }; - }, - - progressValues, progressContexts, resolveContexts; - - // add listeners to Deferred subordinates; treat others as resolved - if ( length > 1 ) { - progressValues = new Array( length ); - progressContexts = new Array( length ); - resolveContexts = new Array( length ); - for ( ; i < length; i++ ) { - if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { - resolveValues[ i ].promise() - .done( updateFunc( i, resolveContexts, resolveValues ) ) - .fail( deferred.reject ) - .progress( updateFunc( i, progressContexts, progressValues ) ); - } else { - --remaining; - } - } - } - - // if we're not waiting on anything, resolve the master - if ( !remaining ) { - deferred.resolveWith( resolveContexts, resolveValues ); - } - - return deferred.promise(); - } -}); - - -// The deferred used on DOM ready -var readyList; - -jQuery.fn.ready = function( fn ) { - // Add the callback - jQuery.ready.promise().done( fn ); - - return this; -}; - -jQuery.extend({ - // Is the DOM ready to be used? Set to true once it occurs. - isReady: false, - - // A counter to track how many items to wait for before - // the ready event fires. See #6781 - readyWait: 1, - - // Hold (or release) the ready event - holdReady: function( hold ) { - if ( hold ) { - jQuery.readyWait++; - } else { - jQuery.ready( true ); - } - }, - - // Handle when the DOM is ready - ready: function( wait ) { - - // Abort if there are pending holds or we're already ready - if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { - return; - } - - // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443). - if ( !document.body ) { - return setTimeout( jQuery.ready ); - } - - // Remember that the DOM is ready - jQuery.isReady = true; - - // If a normal DOM Ready event fired, decrement, and wait if need be - if ( wait !== true && --jQuery.readyWait > 0 ) { - return; - } - - // If there are functions bound, to execute - readyList.resolveWith( document, [ jQuery ] ); - - // Trigger any bound ready events - if ( jQuery.fn.triggerHandler ) { - jQuery( document ).triggerHandler( "ready" ); - jQuery( document ).off( "ready" ); - } - } -}); - -/** - * Clean-up method for dom ready events - */ -function detach() { - if ( document.addEventListener ) { - document.removeEventListener( "DOMContentLoaded", completed, false ); - window.removeEventListener( "load", completed, false ); - - } else { - document.detachEvent( "onreadystatechange", completed ); - window.detachEvent( "onload", completed ); - } -} - -/** - * The ready event handler and self cleanup method - */ -function completed() { - // readyState === "complete" is good enough for us to call the dom ready in oldIE - if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) { - detach(); - jQuery.ready(); - } -} - -jQuery.ready.promise = function( obj ) { - if ( !readyList ) { - - readyList = jQuery.Deferred(); - - // Catch cases where $(document).ready() is called after the browser event has already occurred. - // we once tried to use readyState "interactive" here, but it caused issues like the one - // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15 - if ( document.readyState === "complete" ) { - // Handle it asynchronously to allow scripts the opportunity to delay ready - setTimeout( jQuery.ready ); - - // Standards-based browsers support DOMContentLoaded - } else if ( document.addEventListener ) { - // Use the handy event callback - document.addEventListener( "DOMContentLoaded", completed, false ); - - // A fallback to window.onload, that will always work - window.addEventListener( "load", completed, false ); - - // If IE event model is used - } else { - // Ensure firing before onload, maybe late but safe also for iframes - document.attachEvent( "onreadystatechange", completed ); - - // A fallback to window.onload, that will always work - window.attachEvent( "onload", completed ); - - // If IE and not a frame - // continually check to see if the document is ready - var top = false; - - try { - top = window.frameElement == null && document.documentElement; - } catch(e) {} - - if ( top && top.doScroll ) { - (function doScrollCheck() { - if ( !jQuery.isReady ) { - - try { - // Use the trick by Diego Perini - // http://javascript.nwbox.com/IEContentLoaded/ - top.doScroll("left"); - } catch(e) { - return setTimeout( doScrollCheck, 50 ); - } - - // detach all dom ready events - detach(); - - // and execute any waiting functions - jQuery.ready(); - } - })(); - } - } - } - return readyList.promise( obj ); -}; - - -var strundefined = typeof undefined; - - - -// Support: IE<9 -// Iteration over object's inherited properties before its own -var i; -for ( i in jQuery( support ) ) { - break; -} -support.ownLast = i !== "0"; - -// Note: most support tests are defined in their respective modules. -// false until the test is run -support.inlineBlockNeedsLayout = false; - -// Execute ASAP in case we need to set body.style.zoom -jQuery(function() { - // Minified: var a,b,c,d - var val, div, body, container; - - body = document.getElementsByTagName( "body" )[ 0 ]; - if ( !body || !body.style ) { - // Return for frameset docs that don't have a body - return; - } - - // Setup - div = document.createElement( "div" ); - container = document.createElement( "div" ); - container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; - body.appendChild( container ).appendChild( div ); - - if ( typeof div.style.zoom !== strundefined ) { - // Support: IE<8 - // Check if natively block-level elements act like inline-block - // elements when setting their display to 'inline' and giving - // them layout - div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; - - support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; - if ( val ) { - // Prevent IE 6 from affecting layout for positioned elements #11048 - // Prevent IE from shrinking the body in IE 7 mode #12869 - // Support: IE<8 - body.style.zoom = 1; - } - } - - body.removeChild( container ); -}); - - - - -(function() { - var div = document.createElement( "div" ); - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -/** - * Determines whether an object can have data - */ -jQuery.acceptData = function( elem ) { - var noData = jQuery.noData[ (elem.nodeName + " ").toLowerCase() ], - nodeType = +elem.nodeType || 1; - - // Do not set data on non-element DOM nodes because it will not be cleared (#8335). - return nodeType !== 1 && nodeType !== 9 ? - false : - - // Nodes accept data unless otherwise specified; rejection can be conditional - !noData || noData !== true && elem.getAttribute("classid") === noData; -}; - - -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, - rmultiDash = /([A-Z])/g; - -function dataAttr( elem, key, data ) { - // If nothing was found internally, try to fetch any - // data from the HTML5 data-* attribute - if ( data === undefined && elem.nodeType === 1 ) { - - var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); - - data = elem.getAttribute( name ); - - if ( typeof data === "string" ) { - try { - data = data === "true" ? true : - data === "false" ? false : - data === "null" ? null : - // Only convert to a number if it doesn't change the string - +data + "" === data ? +data : - rbrace.test( data ) ? jQuery.parseJSON( data ) : - data; - } catch( e ) {} - - // Make sure we set the data so it isn't changed later - jQuery.data( elem, key, data ); - - } else { - data = undefined; - } - } - - return data; -} - -// checks a cache object for emptiness -function isEmptyDataObject( obj ) { - var name; - for ( name in obj ) { - - // if the public data object is empty, the private is still empty - if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) { - continue; - } - if ( name !== "toJSON" ) { - return false; - } - } - - return true; -} - -function internalData( elem, name, data, pvt /* Internal Use Only */ ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var ret, thisCache, - internalKey = jQuery.expando, - - // We have to handle DOM nodes and JS objects differently because IE6-7 - // can't GC object references properly across the DOM-JS boundary - isNode = elem.nodeType, - - // Only DOM nodes need the global jQuery cache; JS object data is - // attached directly to the object so GC can occur automatically - cache = isNode ? jQuery.cache : elem, - - // Only defining an ID for JS objects if its cache already exists allows - // the code to shortcut on the same path as a DOM node with no cache - id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; - - // Avoid doing any more work than we need to when trying to get data on an - // object that has no data at all - if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && data === undefined && typeof name === "string" ) { - return; - } - - if ( !id ) { - // Only DOM nodes need a new unique ID for each element since their data - // ends up in the global cache - if ( isNode ) { - id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; - } else { - id = internalKey; - } - } - - if ( !cache[ id ] ) { - // Avoid exposing jQuery metadata on plain JS objects when the object - // is serialized using JSON.stringify - cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; - } - - // An object can be passed to jQuery.data instead of a key/value pair; this gets - // shallow copied over onto the existing cache - if ( typeof name === "object" || typeof name === "function" ) { - if ( pvt ) { - cache[ id ] = jQuery.extend( cache[ id ], name ); - } else { - cache[ id ].data = jQuery.extend( cache[ id ].data, name ); - } - } - - thisCache = cache[ id ]; - - // jQuery data() is stored in a separate object inside the object's internal data - // cache in order to avoid key collisions between internal data and user-defined - // data. - if ( !pvt ) { - if ( !thisCache.data ) { - thisCache.data = {}; - } - - thisCache = thisCache.data; - } - - if ( data !== undefined ) { - thisCache[ jQuery.camelCase( name ) ] = data; - } - - // Check for both converted-to-camel and non-converted data property names - // If a data property was specified - if ( typeof name === "string" ) { - - // First Try to find as-is property data - ret = thisCache[ name ]; - - // Test for null|undefined property data - if ( ret == null ) { - - // Try to find the camelCased property - ret = thisCache[ jQuery.camelCase( name ) ]; - } - } else { - ret = thisCache; - } - - return ret; -} - -function internalRemoveData( elem, name, pvt ) { - if ( !jQuery.acceptData( elem ) ) { - return; - } - - var thisCache, i, - isNode = elem.nodeType, - - // See jQuery.data for more information - cache = isNode ? jQuery.cache : elem, - id = isNode ? elem[ jQuery.expando ] : jQuery.expando; - - // If there is already no cache entry for this object, there is no - // purpose in continuing - if ( !cache[ id ] ) { - return; - } - - if ( name ) { - - thisCache = pvt ? cache[ id ] : cache[ id ].data; - - if ( thisCache ) { - - // Support array or space separated string names for data keys - if ( !jQuery.isArray( name ) ) { - - // try the string as a key before any manipulation - if ( name in thisCache ) { - name = [ name ]; - } else { - - // split the camel cased version by spaces unless a key with the spaces exists - name = jQuery.camelCase( name ); - if ( name in thisCache ) { - name = [ name ]; - } else { - name = name.split(" "); - } - } - } else { - // If "name" is an array of keys... - // When data is initially created, via ("key", "val") signature, - // keys will be converted to camelCase. - // Since there is no way to tell _how_ a key was added, remove - // both plain key and camelCase key. #12786 - // This will only penalize the array argument path. - name = name.concat( jQuery.map( name, jQuery.camelCase ) ); - } - - i = name.length; - while ( i-- ) { - delete thisCache[ name[i] ]; - } - - // If there is no data left in the cache, we want to continue - // and let the cache object itself get destroyed - if ( pvt ? !isEmptyDataObject(thisCache) : !jQuery.isEmptyObject(thisCache) ) { - return; - } - } - } - - // See jQuery.data for more information - if ( !pvt ) { - delete cache[ id ].data; - - // Don't destroy the parent cache unless the internal data object - // had been the only thing left in it - if ( !isEmptyDataObject( cache[ id ] ) ) { - return; - } - } - - // Destroy the cache - if ( isNode ) { - jQuery.cleanData( [ elem ], true ); - - // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) - /* jshint eqeqeq: false */ - } else if ( support.deleteExpando || cache != cache.window ) { - /* jshint eqeqeq: true */ - delete cache[ id ]; - - // When all else fails, null - } else { - cache[ id ] = null; - } -} - -jQuery.extend({ - cache: {}, - - // The following elements (space-suffixed to avoid Object.prototype collisions) - // throw uncatchable exceptions if you attempt to set expando properties - noData: { - "applet ": true, - "embed ": true, - // ...but Flash objects (which have this classid) *can* handle expandos - "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" - }, - - hasData: function( elem ) { - elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ]; - return !!elem && !isEmptyDataObject( elem ); - }, - - data: function( elem, name, data ) { - return internalData( elem, name, data ); - }, - - removeData: function( elem, name ) { - return internalRemoveData( elem, name ); - }, - - // For internal use only. - _data: function( elem, name, data ) { - return internalData( elem, name, data, true ); - }, - - _removeData: function( elem, name ) { - return internalRemoveData( elem, name, true ); - } -}); - -jQuery.fn.extend({ - data: function( key, value ) { - var i, name, data, - elem = this[0], - attrs = elem && elem.attributes; - - // Special expections of .data basically thwart jQuery.access, - // so implement the relevant behavior ourselves - - // Gets all values - if ( key === undefined ) { - if ( this.length ) { - data = jQuery.data( elem ); - - if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { - i = attrs.length; - while ( i-- ) { - - // Support: IE11+ - // The attrs elements can be null (#14894) - if ( attrs[ i ] ) { - name = attrs[ i ].name; - if ( name.indexOf( "data-" ) === 0 ) { - name = jQuery.camelCase( name.slice(5) ); - dataAttr( elem, name, data[ name ] ); - } - } - } - jQuery._data( elem, "parsedAttrs", true ); - } - } - - return data; - } - - // Sets multiple values - if ( typeof key === "object" ) { - return this.each(function() { - jQuery.data( this, key ); - }); - } - - return arguments.length > 1 ? - - // Sets one value - this.each(function() { - jQuery.data( this, key, value ); - }) : - - // Gets one value - // Try to fetch any internally stored data first - elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; - }, - - removeData: function( key ) { - return this.each(function() { - jQuery.removeData( this, key ); - }); - } -}); - - -jQuery.extend({ - queue: function( elem, type, data ) { - var queue; - - if ( elem ) { - type = ( type || "fx" ) + "queue"; - queue = jQuery._data( elem, type ); - - // Speed up dequeue by getting out quickly if this is just a lookup - if ( data ) { - if ( !queue || jQuery.isArray(data) ) { - queue = jQuery._data( elem, type, jQuery.makeArray(data) ); - } else { - queue.push( data ); - } - } - return queue || []; - } - }, - - dequeue: function( elem, type ) { - type = type || "fx"; - - var queue = jQuery.queue( elem, type ), - startLength = queue.length, - fn = queue.shift(), - hooks = jQuery._queueHooks( elem, type ), - next = function() { - jQuery.dequeue( elem, type ); - }; - - // If the fx queue is dequeued, always remove the progress sentinel - if ( fn === "inprogress" ) { - fn = queue.shift(); - startLength--; - } - - if ( fn ) { - - // Add a progress sentinel to prevent the fx queue from being - // automatically dequeued - if ( type === "fx" ) { - queue.unshift( "inprogress" ); - } - - // clear up the last queue stop function - delete hooks.stop; - fn.call( elem, next, hooks ); - } - - if ( !startLength && hooks ) { - hooks.empty.fire(); - } - }, - - // not intended for public consumption - generates a queueHooks object, or returns the current one - _queueHooks: function( elem, type ) { - var key = type + "queueHooks"; - return jQuery._data( elem, key ) || jQuery._data( elem, key, { - empty: jQuery.Callbacks("once memory").add(function() { - jQuery._removeData( elem, type + "queue" ); - jQuery._removeData( elem, key ); - }) - }); - } -}); - -jQuery.fn.extend({ - queue: function( type, data ) { - var setter = 2; - - if ( typeof type !== "string" ) { - data = type; - type = "fx"; - setter--; - } - - if ( arguments.length < setter ) { - return jQuery.queue( this[0], type ); - } - - return data === undefined ? - this : - this.each(function() { - var queue = jQuery.queue( this, type, data ); - - // ensure a hooks for this queue - jQuery._queueHooks( this, type ); - - if ( type === "fx" && queue[0] !== "inprogress" ) { - jQuery.dequeue( this, type ); - } - }); - }, - dequeue: function( type ) { - return this.each(function() { - jQuery.dequeue( this, type ); - }); - }, - clearQueue: function( type ) { - return this.queue( type || "fx", [] ); - }, - // Get a promise resolved when queues of a certain type - // are emptied (fx is the type by default) - promise: function( type, obj ) { - var tmp, - count = 1, - defer = jQuery.Deferred(), - elements = this, - i = this.length, - resolve = function() { - if ( !( --count ) ) { - defer.resolveWith( elements, [ elements ] ); - } - }; - - if ( typeof type !== "string" ) { - obj = type; - type = undefined; - } - type = type || "fx"; - - while ( i-- ) { - tmp = jQuery._data( elements[ i ], type + "queueHooks" ); - if ( tmp && tmp.empty ) { - count++; - tmp.empty.add( resolve ); - } - } - resolve(); - return defer.promise( obj ); - } -}); -var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source; - -var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; - -var isHidden = function( elem, el ) { - // isHidden might be called from jQuery#filter function; - // in that case, element will be second argument - elem = el || elem; - return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem ); - }; - - - -// Multifunctional method to get and set values of a collection -// The value/s can optionally be executed if it's a function -var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) { - var i = 0, - length = elems.length, - bulk = key == null; - - // Sets many values - if ( jQuery.type( key ) === "object" ) { - chainable = true; - for ( i in key ) { - jQuery.access( elems, fn, i, key[i], true, emptyGet, raw ); - } - - // Sets one value - } else if ( value !== undefined ) { - chainable = true; - - if ( !jQuery.isFunction( value ) ) { - raw = true; - } - - if ( bulk ) { - // Bulk operations run against the entire set - if ( raw ) { - fn.call( elems, value ); - fn = null; - - // ...except when executing function values - } else { - bulk = fn; - fn = function( elem, key, value ) { - return bulk.call( jQuery( elem ), value ); - }; - } - } - - if ( fn ) { - for ( ; i < length; i++ ) { - fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) ); - } - } - } - - return chainable ? - elems : - - // Gets - bulk ? - fn.call( elems ) : - length ? fn( elems[0], key ) : emptyGet; -}; -var rcheckableType = (/^(?:checkbox|radio)$/i); - - - -(function() { - // Minified: var a,b,c - var input = document.createElement( "input" ), - div = document.createElement( "div" ), - fragment = document.createDocumentFragment(); - - // Setup - div.innerHTML = "
    a"; - - // IE strips leading whitespace when .innerHTML is used - support.leadingWhitespace = div.firstChild.nodeType === 3; - - // Make sure that tbody elements aren't automatically inserted - // IE will insert them into empty tables - support.tbody = !div.getElementsByTagName( "tbody" ).length; - - // Make sure that link elements get serialized correctly by innerHTML - // This requires a wrapper element in IE - support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; - - // Makes sure cloning an html5 element does not cause problems - // Where outerHTML is undefined, this still works - support.html5Clone = - document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; - - // Check if a disconnected checkbox will retain its checked - // value of true after appended to the DOM (IE6/7) - input.type = "checkbox"; - input.checked = true; - fragment.appendChild( input ); - support.appendChecked = input.checked; - - // Make sure textarea (and checkbox) defaultValue is properly cloned - // Support: IE6-IE11+ - div.innerHTML = ""; - support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; - - // #11217 - WebKit loses check when the name is after the checked attribute - fragment.appendChild( div ); - div.innerHTML = ""; - - // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 - // old WebKit doesn't clone checked state correctly in fragments - support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; - - // Support: IE<9 - // Opera does not clone events (and typeof div.attachEvent === undefined). - // IE9-10 clones events bound via attachEvent, but they don't trigger with .click() - support.noCloneEvent = true; - if ( div.attachEvent ) { - div.attachEvent( "onclick", function() { - support.noCloneEvent = false; - }); - - div.cloneNode( true ).click(); - } - - // Execute the test only if not already executed in another module. - if (support.deleteExpando == null) { - // Support: IE<9 - support.deleteExpando = true; - try { - delete div.test; - } catch( e ) { - support.deleteExpando = false; - } - } -})(); - - -(function() { - var i, eventName, - div = document.createElement( "div" ); - - // Support: IE<9 (lack submit/change bubble), Firefox 23+ (lack focusin event) - for ( i in { submit: true, change: true, focusin: true }) { - eventName = "on" + i; - - if ( !(support[ i + "Bubbles" ] = eventName in window) ) { - // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) - div.setAttribute( eventName, "t" ); - support[ i + "Bubbles" ] = div.attributes[ eventName ].expando === false; - } - } - - // Null elements to avoid leaks in IE. - div = null; -})(); - - -var rformElems = /^(?:input|select|textarea)$/i, - rkeyEvent = /^key/, - rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/, - rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, - rtypenamespace = /^([^.]*)(?:\.(.+)|)$/; - -function returnTrue() { - return true; -} - -function returnFalse() { - return false; -} - -function safeActiveElement() { - try { - return document.activeElement; - } catch ( err ) { } -} - -/* - * Helper functions for managing events -- not part of the public interface. - * Props to Dean Edwards' addEvent library for many of the ideas. - */ -jQuery.event = { - - global: {}, - - add: function( elem, types, handler, data, selector ) { - var tmp, events, t, handleObjIn, - special, eventHandle, handleObj, - handlers, type, namespaces, origType, - elemData = jQuery._data( elem ); - - // Don't attach events to noData or text/comment nodes (but allow plain objects) - if ( !elemData ) { - return; - } - - // Caller can pass in an object of custom data in lieu of the handler - if ( handler.handler ) { - handleObjIn = handler; - handler = handleObjIn.handler; - selector = handleObjIn.selector; - } - - // Make sure that the handler has a unique ID, used to find/remove it later - if ( !handler.guid ) { - handler.guid = jQuery.guid++; - } - - // Init the element's event structure and main handler, if this is the first - if ( !(events = elemData.events) ) { - events = elemData.events = {}; - } - if ( !(eventHandle = elemData.handle) ) { - eventHandle = elemData.handle = function( e ) { - // Discard the second event of a jQuery.event.trigger() and - // when an event is called after a page has unloaded - return typeof jQuery !== strundefined && (!e || jQuery.event.triggered !== e.type) ? - jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : - undefined; - }; - // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events - eventHandle.elem = elem; - } - - // Handle multiple events separated by a space - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // There *must* be a type, no attaching namespace-only handlers - if ( !type ) { - continue; - } - - // If event changes its type, use the special event handlers for the changed type - special = jQuery.event.special[ type ] || {}; - - // If selector defined, determine special event api type, otherwise given type - type = ( selector ? special.delegateType : special.bindType ) || type; - - // Update special based on newly reset type - special = jQuery.event.special[ type ] || {}; - - // handleObj is passed to all event handlers - handleObj = jQuery.extend({ - type: type, - origType: origType, - data: data, - handler: handler, - guid: handler.guid, - selector: selector, - needsContext: selector && jQuery.expr.match.needsContext.test( selector ), - namespace: namespaces.join(".") - }, handleObjIn ); - - // Init the event handler queue if we're the first - if ( !(handlers = events[ type ]) ) { - handlers = events[ type ] = []; - handlers.delegateCount = 0; - - // Only use addEventListener/attachEvent if the special events handler returns false - if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { - // Bind the global event handler to the element - if ( elem.addEventListener ) { - elem.addEventListener( type, eventHandle, false ); - - } else if ( elem.attachEvent ) { - elem.attachEvent( "on" + type, eventHandle ); - } - } - } - - if ( special.add ) { - special.add.call( elem, handleObj ); - - if ( !handleObj.handler.guid ) { - handleObj.handler.guid = handler.guid; - } - } - - // Add to the element's handler list, delegates in front - if ( selector ) { - handlers.splice( handlers.delegateCount++, 0, handleObj ); - } else { - handlers.push( handleObj ); - } - - // Keep track of which events have ever been used, for event optimization - jQuery.event.global[ type ] = true; - } - - // Nullify elem to prevent memory leaks in IE - elem = null; - }, - - // Detach an event or set of events from an element - remove: function( elem, types, handler, selector, mappedTypes ) { - var j, handleObj, tmp, - origCount, t, events, - special, handlers, type, - namespaces, origType, - elemData = jQuery.hasData( elem ) && jQuery._data( elem ); - - if ( !elemData || !(events = elemData.events) ) { - return; - } - - // Once for each type.namespace in types; type may be omitted - types = ( types || "" ).match( rnotwhite ) || [ "" ]; - t = types.length; - while ( t-- ) { - tmp = rtypenamespace.exec( types[t] ) || []; - type = origType = tmp[1]; - namespaces = ( tmp[2] || "" ).split( "." ).sort(); - - // Unbind all events (on this namespace, if provided) for the element - if ( !type ) { - for ( type in events ) { - jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); - } - continue; - } - - special = jQuery.event.special[ type ] || {}; - type = ( selector ? special.delegateType : special.bindType ) || type; - handlers = events[ type ] || []; - tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ); - - // Remove matching events - origCount = j = handlers.length; - while ( j-- ) { - handleObj = handlers[ j ]; - - if ( ( mappedTypes || origType === handleObj.origType ) && - ( !handler || handler.guid === handleObj.guid ) && - ( !tmp || tmp.test( handleObj.namespace ) ) && - ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { - handlers.splice( j, 1 ); - - if ( handleObj.selector ) { - handlers.delegateCount--; - } - if ( special.remove ) { - special.remove.call( elem, handleObj ); - } - } - } - - // Remove generic event handler if we removed something and no more handlers exist - // (avoids potential for endless recursion during removal of special event handlers) - if ( origCount && !handlers.length ) { - if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { - jQuery.removeEvent( elem, type, elemData.handle ); - } - - delete events[ type ]; - } - } - - // Remove the expando if it's no longer used - if ( jQuery.isEmptyObject( events ) ) { - delete elemData.handle; - - // removeData also checks for emptiness and clears the expando if empty - // so use it instead of delete - jQuery._removeData( elem, "events" ); - } - }, - - trigger: function( event, data, elem, onlyHandlers ) { - var handle, ontype, cur, - bubbleType, special, tmp, i, - eventPath = [ elem || document ], - type = hasOwn.call( event, "type" ) ? event.type : event, - namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : []; - - cur = tmp = elem = elem || document; - - // Don't do events on text and comment nodes - if ( elem.nodeType === 3 || elem.nodeType === 8 ) { - return; - } - - // focus/blur morphs to focusin/out; ensure we're not firing them right now - if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { - return; - } - - if ( type.indexOf(".") >= 0 ) { - // Namespaced trigger; create a regexp to match event type in handle() - namespaces = type.split("."); - type = namespaces.shift(); - namespaces.sort(); - } - ontype = type.indexOf(":") < 0 && "on" + type; - - // Caller can pass in a jQuery.Event object, Object, or just an event type string - event = event[ jQuery.expando ] ? - event : - new jQuery.Event( type, typeof event === "object" && event ); - - // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) - event.isTrigger = onlyHandlers ? 2 : 3; - event.namespace = namespaces.join("."); - event.namespace_re = event.namespace ? - new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) : - null; - - // Clean up the event in case it is being reused - event.result = undefined; - if ( !event.target ) { - event.target = elem; - } - - // Clone any incoming data and prepend the event, creating the handler arg list - data = data == null ? - [ event ] : - jQuery.makeArray( data, [ event ] ); - - // Allow special events to draw outside the lines - special = jQuery.event.special[ type ] || {}; - if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { - return; - } - - // Determine event propagation path in advance, per W3C events spec (#9951) - // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) - if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { - - bubbleType = special.delegateType || type; - if ( !rfocusMorph.test( bubbleType + type ) ) { - cur = cur.parentNode; - } - for ( ; cur; cur = cur.parentNode ) { - eventPath.push( cur ); - tmp = cur; - } - - // Only add window if we got to document (e.g., not plain obj or detached DOM) - if ( tmp === (elem.ownerDocument || document) ) { - eventPath.push( tmp.defaultView || tmp.parentWindow || window ); - } - } - - // Fire handlers on the event path - i = 0; - while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) { - - event.type = i > 1 ? - bubbleType : - special.bindType || type; - - // jQuery handler - handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" ); - if ( handle ) { - handle.apply( cur, data ); - } - - // Native handler - handle = ontype && cur[ ontype ]; - if ( handle && handle.apply && jQuery.acceptData( cur ) ) { - event.result = handle.apply( cur, data ); - if ( event.result === false ) { - event.preventDefault(); - } - } - } - event.type = type; - - // If nobody prevented the default action, do it now - if ( !onlyHandlers && !event.isDefaultPrevented() ) { - - if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) && - jQuery.acceptData( elem ) ) { - - // Call a native DOM method on the target with the same name name as the event. - // Can't use an .isFunction() check here because IE6/7 fails that test. - // Don't do default actions on window, that's where global variables be (#6170) - if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { - - // Don't re-trigger an onFOO event when we call its FOO() method - tmp = elem[ ontype ]; - - if ( tmp ) { - elem[ ontype ] = null; - } - - // Prevent re-triggering of the same event, since we already bubbled it above - jQuery.event.triggered = type; - try { - elem[ type ](); - } catch ( e ) { - // IE<9 dies on focus/blur to hidden element (#1486,#12518) - // only reproducible on winXP IE8 native, not IE9 in IE8 mode - } - jQuery.event.triggered = undefined; - - if ( tmp ) { - elem[ ontype ] = tmp; - } - } - } - } - - return event.result; - }, - - dispatch: function( event ) { - - // Make a writable jQuery.Event from the native event object - event = jQuery.event.fix( event ); - - var i, ret, handleObj, matched, j, - handlerQueue = [], - args = slice.call( arguments ), - handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], - special = jQuery.event.special[ event.type ] || {}; - - // Use the fix-ed jQuery.Event rather than the (read-only) native event - args[0] = event; - event.delegateTarget = this; - - // Call the preDispatch hook for the mapped type, and let it bail if desired - if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { - return; - } - - // Determine handlers - handlerQueue = jQuery.event.handlers.call( this, event, handlers ); - - // Run delegates first; they may want to stop propagation beneath us - i = 0; - while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) { - event.currentTarget = matched.elem; - - j = 0; - while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) { - - // Triggered event must either 1) have no namespace, or - // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace). - if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) { - - event.handleObj = handleObj; - event.data = handleObj.data; - - ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler ) - .apply( matched.elem, args ); - - if ( ret !== undefined ) { - if ( (event.result = ret) === false ) { - event.preventDefault(); - event.stopPropagation(); - } - } - } - } - } - - // Call the postDispatch hook for the mapped type - if ( special.postDispatch ) { - special.postDispatch.call( this, event ); - } - - return event.result; - }, - - handlers: function( event, handlers ) { - var sel, handleObj, matches, i, - handlerQueue = [], - delegateCount = handlers.delegateCount, - cur = event.target; - - // Find delegate handlers - // Black-hole SVG instance trees (#13180) - // Avoid non-left-click bubbling in Firefox (#3861) - if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) { - - /* jshint eqeqeq: false */ - for ( ; cur != this; cur = cur.parentNode || this ) { - /* jshint eqeqeq: true */ - - // Don't check non-elements (#13208) - // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) - if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) { - matches = []; - for ( i = 0; i < delegateCount; i++ ) { - handleObj = handlers[ i ]; - - // Don't conflict with Object.prototype properties (#13203) - sel = handleObj.selector + " "; - - if ( matches[ sel ] === undefined ) { - matches[ sel ] = handleObj.needsContext ? - jQuery( sel, this ).index( cur ) >= 0 : - jQuery.find( sel, this, null, [ cur ] ).length; - } - if ( matches[ sel ] ) { - matches.push( handleObj ); - } - } - if ( matches.length ) { - handlerQueue.push({ elem: cur, handlers: matches }); - } - } - } - } - - // Add the remaining (directly-bound) handlers - if ( delegateCount < handlers.length ) { - handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) }); - } - - return handlerQueue; - }, - - fix: function( event ) { - if ( event[ jQuery.expando ] ) { - return event; - } - - // Create a writable copy of the event object and normalize some properties - var i, prop, copy, - type = event.type, - originalEvent = event, - fixHook = this.fixHooks[ type ]; - - if ( !fixHook ) { - this.fixHooks[ type ] = fixHook = - rmouseEvent.test( type ) ? this.mouseHooks : - rkeyEvent.test( type ) ? this.keyHooks : - {}; - } - copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; - - event = new jQuery.Event( originalEvent ); - - i = copy.length; - while ( i-- ) { - prop = copy[ i ]; - event[ prop ] = originalEvent[ prop ]; - } - - // Support: IE<9 - // Fix target property (#1925) - if ( !event.target ) { - event.target = originalEvent.srcElement || document; - } - - // Support: Chrome 23+, Safari? - // Target should not be a text node (#504, #13143) - if ( event.target.nodeType === 3 ) { - event.target = event.target.parentNode; - } - - // Support: IE<9 - // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) - event.metaKey = !!event.metaKey; - - return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; - }, - - // Includes some event props shared by KeyEvent and MouseEvent - props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "), - - fixHooks: {}, - - keyHooks: { - props: "char charCode key keyCode".split(" "), - filter: function( event, original ) { - - // Add which for key events - if ( event.which == null ) { - event.which = original.charCode != null ? original.charCode : original.keyCode; - } - - return event; - } - }, - - mouseHooks: { - props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "), - filter: function( event, original ) { - var body, eventDoc, doc, - button = original.button, - fromElement = original.fromElement; - - // Calculate pageX/Y if missing and clientX/Y available - if ( event.pageX == null && original.clientX != null ) { - eventDoc = event.target.ownerDocument || document; - doc = eventDoc.documentElement; - body = eventDoc.body; - - event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 ); - event.pageY = original.clientY + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - ( doc && doc.clientTop || body && body.clientTop || 0 ); - } - - // Add relatedTarget, if necessary - if ( !event.relatedTarget && fromElement ) { - event.relatedTarget = fromElement === event.target ? original.toElement : fromElement; - } - - // Add which for click: 1 === left; 2 === middle; 3 === right - // Note: button is not normalized, so don't use it - if ( !event.which && button !== undefined ) { - event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); - } - - return event; - } - }, - - special: { - load: { - // Prevent triggered image.load events from bubbling to window.load - noBubble: true - }, - focus: { - // Fire native event if possible so blur/focus sequence is correct - trigger: function() { - if ( this !== safeActiveElement() && this.focus ) { - try { - this.focus(); - return false; - } catch ( e ) { - // Support: IE<9 - // If we error on focus to hidden element (#1486, #12518), - // let .trigger() run the handlers - } - } - }, - delegateType: "focusin" - }, - blur: { - trigger: function() { - if ( this === safeActiveElement() && this.blur ) { - this.blur(); - return false; - } - }, - delegateType: "focusout" - }, - click: { - // For checkbox, fire native event so checked state will be right - trigger: function() { - if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { - this.click(); - return false; - } - }, - - // For cross-browser consistency, don't fire native .click() on links - _default: function( event ) { - return jQuery.nodeName( event.target, "a" ); - } - }, - - beforeunload: { - postDispatch: function( event ) { - - // Support: Firefox 20+ - // Firefox doesn't alert if the returnValue field is not set. - if ( event.result !== undefined && event.originalEvent ) { - event.originalEvent.returnValue = event.result; - } - } - } - }, - - simulate: function( type, elem, event, bubble ) { - // Piggyback on a donor event to simulate a different one. - // Fake originalEvent to avoid donor's stopPropagation, but if the - // simulated event prevents default then we do the same on the donor. - var e = jQuery.extend( - new jQuery.Event(), - event, - { - type: type, - isSimulated: true, - originalEvent: {} - } - ); - if ( bubble ) { - jQuery.event.trigger( e, null, elem ); - } else { - jQuery.event.dispatch.call( elem, e ); - } - if ( e.isDefaultPrevented() ) { - event.preventDefault(); - } - } -}; - -jQuery.removeEvent = document.removeEventListener ? - function( elem, type, handle ) { - if ( elem.removeEventListener ) { - elem.removeEventListener( type, handle, false ); - } - } : - function( elem, type, handle ) { - var name = "on" + type; - - if ( elem.detachEvent ) { - - // #8545, #7054, preventing memory leaks for custom events in IE6-8 - // detachEvent needed property on element, by name of that event, to properly expose it to GC - if ( typeof elem[ name ] === strundefined ) { - elem[ name ] = null; - } - - elem.detachEvent( name, handle ); - } - }; - -jQuery.Event = function( src, props ) { - // Allow instantiation without the 'new' keyword - if ( !(this instanceof jQuery.Event) ) { - return new jQuery.Event( src, props ); - } - - // Event object - if ( src && src.type ) { - this.originalEvent = src; - this.type = src.type; - - // Events bubbling up the document may have been marked as prevented - // by a handler lower down the tree; reflect the correct value. - this.isDefaultPrevented = src.defaultPrevented || - src.defaultPrevented === undefined && - // Support: IE < 9, Android < 4.0 - src.returnValue === false ? - returnTrue : - returnFalse; - - // Event type - } else { - this.type = src; - } - - // Put explicitly provided properties onto the event object - if ( props ) { - jQuery.extend( this, props ); - } - - // Create a timestamp if incoming event doesn't have one - this.timeStamp = src && src.timeStamp || jQuery.now(); - - // Mark it as fixed - this[ jQuery.expando ] = true; -}; - -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html -jQuery.Event.prototype = { - isDefaultPrevented: returnFalse, - isPropagationStopped: returnFalse, - isImmediatePropagationStopped: returnFalse, - - preventDefault: function() { - var e = this.originalEvent; - - this.isDefaultPrevented = returnTrue; - if ( !e ) { - return; - } - - // If preventDefault exists, run it on the original event - if ( e.preventDefault ) { - e.preventDefault(); - - // Support: IE - // Otherwise set the returnValue property of the original event to false - } else { - e.returnValue = false; - } - }, - stopPropagation: function() { - var e = this.originalEvent; - - this.isPropagationStopped = returnTrue; - if ( !e ) { - return; - } - // If stopPropagation exists, run it on the original event - if ( e.stopPropagation ) { - e.stopPropagation(); - } - - // Support: IE - // Set the cancelBubble property of the original event to true - e.cancelBubble = true; - }, - stopImmediatePropagation: function() { - var e = this.originalEvent; - - this.isImmediatePropagationStopped = returnTrue; - - if ( e && e.stopImmediatePropagation ) { - e.stopImmediatePropagation(); - } - - this.stopPropagation(); - } -}; - -// Create mouseenter/leave events using mouseover/out and event-time checks -jQuery.each({ - mouseenter: "mouseover", - mouseleave: "mouseout", - pointerenter: "pointerover", - pointerleave: "pointerout" -}, function( orig, fix ) { - jQuery.event.special[ orig ] = { - delegateType: fix, - bindType: fix, - - handle: function( event ) { - var ret, - target = this, - related = event.relatedTarget, - handleObj = event.handleObj; - - // For mousenter/leave call the handler if related is outside the target. - // NB: No relatedTarget if the mouse left/entered the browser window - if ( !related || (related !== target && !jQuery.contains( target, related )) ) { - event.type = handleObj.origType; - ret = handleObj.handler.apply( this, arguments ); - event.type = fix; - } - return ret; - } - }; -}); - -// IE submit delegation -if ( !support.submitBubbles ) { - - jQuery.event.special.submit = { - setup: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Lazy-add a submit handler when a descendant form may potentially be submitted - jQuery.event.add( this, "click._submit keypress._submit", function( e ) { - // Node name check avoids a VML-related crash in IE (#9807) - var elem = e.target, - form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined; - if ( form && !jQuery._data( form, "submitBubbles" ) ) { - jQuery.event.add( form, "submit._submit", function( event ) { - event._submit_bubble = true; - }); - jQuery._data( form, "submitBubbles", true ); - } - }); - // return undefined since we don't need an event listener - }, - - postDispatch: function( event ) { - // If form was submitted by the user, bubble the event up the tree - if ( event._submit_bubble ) { - delete event._submit_bubble; - if ( this.parentNode && !event.isTrigger ) { - jQuery.event.simulate( "submit", this.parentNode, event, true ); - } - } - }, - - teardown: function() { - // Only need this for delegated form submit events - if ( jQuery.nodeName( this, "form" ) ) { - return false; - } - - // Remove delegated handlers; cleanData eventually reaps submit handlers attached above - jQuery.event.remove( this, "._submit" ); - } - }; -} - -// IE change delegation and checkbox/radio fix -if ( !support.changeBubbles ) { - - jQuery.event.special.change = { - - setup: function() { - - if ( rformElems.test( this.nodeName ) ) { - // IE doesn't fire change on a check/radio until blur; trigger it on click - // after a propertychange. Eat the blur-change in special.change.handle. - // This still fires onchange a second time for check/radio after blur. - if ( this.type === "checkbox" || this.type === "radio" ) { - jQuery.event.add( this, "propertychange._change", function( event ) { - if ( event.originalEvent.propertyName === "checked" ) { - this._just_changed = true; - } - }); - jQuery.event.add( this, "click._change", function( event ) { - if ( this._just_changed && !event.isTrigger ) { - this._just_changed = false; - } - // Allow triggered, simulated change events (#11500) - jQuery.event.simulate( "change", this, event, true ); - }); - } - return false; - } - // Delegated event; lazy-add a change handler on descendant inputs - jQuery.event.add( this, "beforeactivate._change", function( e ) { - var elem = e.target; - - if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) { - jQuery.event.add( elem, "change._change", function( event ) { - if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { - jQuery.event.simulate( "change", this.parentNode, event, true ); - } - }); - jQuery._data( elem, "changeBubbles", true ); - } - }); - }, - - handle: function( event ) { - var elem = event.target; - - // Swallow native change events from checkbox/radio, we already triggered them above - if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) { - return event.handleObj.handler.apply( this, arguments ); - } - }, - - teardown: function() { - jQuery.event.remove( this, "._change" ); - - return !rformElems.test( this.nodeName ); - } - }; -} - -// Create "bubbling" focus and blur events -if ( !support.focusinBubbles ) { - jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) { - - // Attach a single capturing handler on the document while someone wants focusin/focusout - var handler = function( event ) { - jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true ); - }; - - jQuery.event.special[ fix ] = { - setup: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ); - - if ( !attaches ) { - doc.addEventListener( orig, handler, true ); - } - jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); - }, - teardown: function() { - var doc = this.ownerDocument || this, - attaches = jQuery._data( doc, fix ) - 1; - - if ( !attaches ) { - doc.removeEventListener( orig, handler, true ); - jQuery._removeData( doc, fix ); - } else { - jQuery._data( doc, fix, attaches ); - } - } - }; - }); -} - -jQuery.fn.extend({ - - on: function( types, selector, data, fn, /*INTERNAL*/ one ) { - var type, origFn; - - // Types can be a map of types/handlers - if ( typeof types === "object" ) { - // ( types-Object, selector, data ) - if ( typeof selector !== "string" ) { - // ( types-Object, data ) - data = data || selector; - selector = undefined; - } - for ( type in types ) { - this.on( type, selector, data, types[ type ], one ); - } - return this; - } - - if ( data == null && fn == null ) { - // ( types, fn ) - fn = selector; - data = selector = undefined; - } else if ( fn == null ) { - if ( typeof selector === "string" ) { - // ( types, selector, fn ) - fn = data; - data = undefined; - } else { - // ( types, data, fn ) - fn = data; - data = selector; - selector = undefined; - } - } - if ( fn === false ) { - fn = returnFalse; - } else if ( !fn ) { - return this; - } - - if ( one === 1 ) { - origFn = fn; - fn = function( event ) { - // Can use an empty set, since event contains the info - jQuery().off( event ); - return origFn.apply( this, arguments ); - }; - // Use same guid so caller can remove using origFn - fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); - } - return this.each( function() { - jQuery.event.add( this, types, fn, data, selector ); - }); - }, - one: function( types, selector, data, fn ) { - return this.on( types, selector, data, fn, 1 ); - }, - off: function( types, selector, fn ) { - var handleObj, type; - if ( types && types.preventDefault && types.handleObj ) { - // ( event ) dispatched jQuery.Event - handleObj = types.handleObj; - jQuery( types.delegateTarget ).off( - handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, - handleObj.selector, - handleObj.handler - ); - return this; - } - if ( typeof types === "object" ) { - // ( types-object [, selector] ) - for ( type in types ) { - this.off( type, selector, types[ type ] ); - } - return this; - } - if ( selector === false || typeof selector === "function" ) { - // ( types [, fn] ) - fn = selector; - selector = undefined; - } - if ( fn === false ) { - fn = returnFalse; - } - return this.each(function() { - jQuery.event.remove( this, types, fn, selector ); - }); - }, - - trigger: function( type, data ) { - return this.each(function() { - jQuery.event.trigger( type, data, this ); - }); - }, - triggerHandler: function( type, data ) { - var elem = this[0]; - if ( elem ) { - return jQuery.event.trigger( type, data, elem, true ); - } - } -}); - - -function createSafeFragment( document ) { - var list = nodeNames.split( "|" ), - safeFrag = document.createDocumentFragment(); - - if ( safeFrag.createElement ) { - while ( list.length ) { - safeFrag.createElement( - list.pop() - ); - } - } - return safeFrag; -} - -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" + - "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video", - rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, - rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"), - rleadingWhitespace = /^\s+/, - rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi, - rtagName = /<([\w:]+)/, - rtbody = /\s*$/g, - - // We have to close these tags to support XHTML (#13200) - wrapMap = { - option: [ 1, "" ], - legend: [ 1, "
    ", "
    " ], - area: [ 1, "", "" ], - param: [ 1, "", "" ], - thead: [ 1, "", "
    " ], - tr: [ 2, "", "
    " ], - col: [ 2, "", "
    " ], - td: [ 3, "", "
    " ], - - // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, - // unless wrapped in a div with non-breaking characters in front of it. - _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
    ", "
    " ] - }, - safeFragment = createSafeFragment( document ), - fragmentDiv = safeFragment.appendChild( document.createElement("div") ); - -wrapMap.optgroup = wrapMap.option; -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; -wrapMap.th = wrapMap.td; - -function getAll( context, tag ) { - var elems, elem, - i = 0, - found = typeof context.getElementsByTagName !== strundefined ? context.getElementsByTagName( tag || "*" ) : - typeof context.querySelectorAll !== strundefined ? context.querySelectorAll( tag || "*" ) : - undefined; - - if ( !found ) { - for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) { - if ( !tag || jQuery.nodeName( elem, tag ) ) { - found.push( elem ); - } else { - jQuery.merge( found, getAll( elem, tag ) ); - } - } - } - - return tag === undefined || tag && jQuery.nodeName( context, tag ) ? - jQuery.merge( [ context ], found ) : - found; -} - -// Used in buildFragment, fixes the defaultChecked property -function fixDefaultChecked( elem ) { - if ( rcheckableType.test( elem.type ) ) { - elem.defaultChecked = elem.checked; - } -} - -// Support: IE<8 -// Manipulating tables requires a tbody -function manipulationTarget( elem, content ) { - return jQuery.nodeName( elem, "table" ) && - jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? - - elem.getElementsByTagName("tbody")[0] || - elem.appendChild( elem.ownerDocument.createElement("tbody") ) : - elem; -} - -// Replace/restore the type attribute of script elements for safe DOM manipulation -function disableScript( elem ) { - elem.type = (jQuery.find.attr( elem, "type" ) !== null) + "/" + elem.type; - return elem; -} -function restoreScript( elem ) { - var match = rscriptTypeMasked.exec( elem.type ); - if ( match ) { - elem.type = match[1]; - } else { - elem.removeAttribute("type"); - } - return elem; -} - -// Mark scripts as having already been evaluated -function setGlobalEval( elems, refElements ) { - var elem, - i = 0; - for ( ; (elem = elems[i]) != null; i++ ) { - jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) ); - } -} - -function cloneCopyEvent( src, dest ) { - - if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { - return; - } - - var type, i, l, - oldData = jQuery._data( src ), - curData = jQuery._data( dest, oldData ), - events = oldData.events; - - if ( events ) { - delete curData.handle; - curData.events = {}; - - for ( type in events ) { - for ( i = 0, l = events[ type ].length; i < l; i++ ) { - jQuery.event.add( dest, type, events[ type ][ i ] ); - } - } - } - - // make the cloned public data object a copy from the original - if ( curData.data ) { - curData.data = jQuery.extend( {}, curData.data ); - } -} - -function fixCloneNodeIssues( src, dest ) { - var nodeName, e, data; - - // We do not need to do anything for non-Elements - if ( dest.nodeType !== 1 ) { - return; - } - - nodeName = dest.nodeName.toLowerCase(); - - // IE6-8 copies events bound via attachEvent when using cloneNode. - if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { - data = jQuery._data( dest ); - - for ( e in data.events ) { - jQuery.removeEvent( dest, e, data.handle ); - } - - // Event data gets referenced instead of copied if the expando gets copied too - dest.removeAttribute( jQuery.expando ); - } - - // IE blanks contents when cloning scripts, and tries to evaluate newly-set text - if ( nodeName === "script" && dest.text !== src.text ) { - disableScript( dest ).text = src.text; - restoreScript( dest ); - - // IE6-10 improperly clones children of object elements using classid. - // IE10 throws NoModificationAllowedError if parent is null, #12132. - } else if ( nodeName === "object" ) { - if ( dest.parentNode ) { - dest.outerHTML = src.outerHTML; - } - - // This path appears unavoidable for IE9. When cloning an object - // element in IE9, the outerHTML strategy above is not sufficient. - // If the src has innerHTML and the destination does not, - // copy the src.innerHTML into the dest.innerHTML. #10324 - if ( support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) { - dest.innerHTML = src.innerHTML; - } - - } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { - // IE6-8 fails to persist the checked state of a cloned checkbox - // or radio button. Worse, IE6-7 fail to give the cloned element - // a checked appearance if the defaultChecked value isn't also set - - dest.defaultChecked = dest.checked = src.checked; - - // IE6-7 get confused and end up setting the value of a cloned - // checkbox/radio button to an empty string instead of "on" - if ( dest.value !== src.value ) { - dest.value = src.value; - } - - // IE6-8 fails to return the selected option to the default selected - // state when cloning options - } else if ( nodeName === "option" ) { - dest.defaultSelected = dest.selected = src.defaultSelected; - - // IE6-8 fails to set the defaultValue to the correct value when - // cloning other types of input fields - } else if ( nodeName === "input" || nodeName === "textarea" ) { - dest.defaultValue = src.defaultValue; - } -} - -jQuery.extend({ - clone: function( elem, dataAndEvents, deepDataAndEvents ) { - var destElements, node, clone, i, srcElements, - inPage = jQuery.contains( elem.ownerDocument, elem ); - - if ( support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { - clone = elem.cloneNode( true ); - - // IE<=8 does not properly clone detached, unknown element nodes - } else { - fragmentDiv.innerHTML = elem.outerHTML; - fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); - } - - if ( (!support.noCloneEvent || !support.noCloneChecked) && - (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) { - - // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 - destElements = getAll( clone ); - srcElements = getAll( elem ); - - // Fix all IE cloning issues - for ( i = 0; (node = srcElements[i]) != null; ++i ) { - // Ensure that the destination node is not null; Fixes #9587 - if ( destElements[i] ) { - fixCloneNodeIssues( node, destElements[i] ); - } - } - } - - // Copy the events from the original to the clone - if ( dataAndEvents ) { - if ( deepDataAndEvents ) { - srcElements = srcElements || getAll( elem ); - destElements = destElements || getAll( clone ); - - for ( i = 0; (node = srcElements[i]) != null; i++ ) { - cloneCopyEvent( node, destElements[i] ); - } - } else { - cloneCopyEvent( elem, clone ); - } - } - - // Preserve script evaluation history - destElements = getAll( clone, "script" ); - if ( destElements.length > 0 ) { - setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); - } - - destElements = srcElements = node = null; - - // Return the cloned set - return clone; - }, - - buildFragment: function( elems, context, scripts, selection ) { - var j, elem, contains, - tmp, tag, tbody, wrap, - l = elems.length, - - // Ensure a safe fragment - safe = createSafeFragment( context ), - - nodes = [], - i = 0; - - for ( ; i < l; i++ ) { - elem = elems[ i ]; - - if ( elem || elem === 0 ) { - - // Add nodes directly - if ( jQuery.type( elem ) === "object" ) { - jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); - - // Convert non-html into a text node - } else if ( !rhtml.test( elem ) ) { - nodes.push( context.createTextNode( elem ) ); - - // Convert html into DOM nodes - } else { - tmp = tmp || safe.appendChild( context.createElement("div") ); - - // Deserialize a standard representation - tag = (rtagName.exec( elem ) || [ "", "" ])[ 1 ].toLowerCase(); - wrap = wrapMap[ tag ] || wrapMap._default; - - tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1>" ) + wrap[2]; - - // Descend through wrappers to the right content - j = wrap[0]; - while ( j-- ) { - tmp = tmp.lastChild; - } - - // Manually add leading whitespace removed by IE - if ( !support.leadingWhitespace && rleadingWhitespace.test( elem ) ) { - nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) ); - } - - // Remove IE's autoinserted from table fragments - if ( !support.tbody ) { - - // String was a , *may* have spurious - elem = tag === "table" && !rtbody.test( elem ) ? - tmp.firstChild : - - // String was a bare or - wrap[1] === "
    " && !rtbody.test( elem ) ? - tmp : - 0; - - j = elem && elem.childNodes.length; - while ( j-- ) { - if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) { - elem.removeChild( tbody ); - } - } - } - - jQuery.merge( nodes, tmp.childNodes ); - - // Fix #12392 for WebKit and IE > 9 - tmp.textContent = ""; - - // Fix #12392 for oldIE - while ( tmp.firstChild ) { - tmp.removeChild( tmp.firstChild ); - } - - // Remember the top-level container for proper cleanup - tmp = safe.lastChild; - } - } - } - - // Fix #11356: Clear elements from fragment - if ( tmp ) { - safe.removeChild( tmp ); - } - - // Reset defaultChecked for any radios and checkboxes - // about to be appended to the DOM in IE 6/7 (#8060) - if ( !support.appendChecked ) { - jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); - } - - i = 0; - while ( (elem = nodes[ i++ ]) ) { - - // #4087 - If origin and destination elements are the same, and this is - // that element, do not do anything - if ( selection && jQuery.inArray( elem, selection ) !== -1 ) { - continue; - } - - contains = jQuery.contains( elem.ownerDocument, elem ); - - // Append to fragment - tmp = getAll( safe.appendChild( elem ), "script" ); - - // Preserve script evaluation history - if ( contains ) { - setGlobalEval( tmp ); - } - - // Capture executables - if ( scripts ) { - j = 0; - while ( (elem = tmp[ j++ ]) ) { - if ( rscriptType.test( elem.type || "" ) ) { - scripts.push( elem ); - } - } - } - } - - tmp = null; - - return safe; - }, - - cleanData: function( elems, /* internal */ acceptData ) { - var elem, type, id, data, - i = 0, - internalKey = jQuery.expando, - cache = jQuery.cache, - deleteExpando = support.deleteExpando, - special = jQuery.event.special; - - for ( ; (elem = elems[i]) != null; i++ ) { - if ( acceptData || jQuery.acceptData( elem ) ) { - - id = elem[ internalKey ]; - data = id && cache[ id ]; - - if ( data ) { - if ( data.events ) { - for ( type in data.events ) { - if ( special[ type ] ) { - jQuery.event.remove( elem, type ); - - // This is a shortcut to avoid jQuery.event.remove's overhead - } else { - jQuery.removeEvent( elem, type, data.handle ); - } - } - } - - // Remove cache only if it was not already removed by jQuery.event.remove - if ( cache[ id ] ) { - - delete cache[ id ]; - - // IE does not allow us to delete expando properties from nodes, - // nor does it have a removeAttribute function on Document nodes; - // we must handle all of these cases - if ( deleteExpando ) { - delete elem[ internalKey ]; - - } else if ( typeof elem.removeAttribute !== strundefined ) { - elem.removeAttribute( internalKey ); - - } else { - elem[ internalKey ] = null; - } - - deletedIds.push( id ); - } - } - } - } - } -}); - -jQuery.fn.extend({ - text: function( value ) { - return access( this, function( value ) { - return value === undefined ? - jQuery.text( this ) : - this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) ); - }, null, value, arguments.length ); - }, - - append: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.appendChild( elem ); - } - }); - }, - - prepend: function() { - return this.domManip( arguments, function( elem ) { - if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { - var target = manipulationTarget( this, elem ); - target.insertBefore( elem, target.firstChild ); - } - }); - }, - - before: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this ); - } - }); - }, - - after: function() { - return this.domManip( arguments, function( elem ) { - if ( this.parentNode ) { - this.parentNode.insertBefore( elem, this.nextSibling ); - } - }); - }, - - remove: function( selector, keepData /* Internal Use Only */ ) { - var elem, - elems = selector ? jQuery.filter( selector, this ) : this, - i = 0; - - for ( ; (elem = elems[i]) != null; i++ ) { - - if ( !keepData && elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem ) ); - } - - if ( elem.parentNode ) { - if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) { - setGlobalEval( getAll( elem, "script" ) ); - } - elem.parentNode.removeChild( elem ); - } - } - - return this; - }, - - empty: function() { - var elem, - i = 0; - - for ( ; (elem = this[i]) != null; i++ ) { - // Remove element nodes and prevent memory leaks - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - } - - // Remove any remaining nodes - while ( elem.firstChild ) { - elem.removeChild( elem.firstChild ); - } - - // If this is a select, ensure that it displays empty (#12336) - // Support: IE<9 - if ( elem.options && jQuery.nodeName( elem, "select" ) ) { - elem.options.length = 0; - } - } - - return this; - }, - - clone: function( dataAndEvents, deepDataAndEvents ) { - dataAndEvents = dataAndEvents == null ? false : dataAndEvents; - deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; - - return this.map(function() { - return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); - }); - }, - - html: function( value ) { - return access( this, function( value ) { - var elem = this[ 0 ] || {}, - i = 0, - l = this.length; - - if ( value === undefined ) { - return elem.nodeType === 1 ? - elem.innerHTML.replace( rinlinejQuery, "" ) : - undefined; - } - - // See if we can take a shortcut and just use innerHTML - if ( typeof value === "string" && !rnoInnerhtml.test( value ) && - ( support.htmlSerialize || !rnoshimcache.test( value ) ) && - ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && - !wrapMap[ (rtagName.exec( value ) || [ "", "" ])[ 1 ].toLowerCase() ] ) { - - value = value.replace( rxhtmlTag, "<$1>" ); - - try { - for (; i < l; i++ ) { - // Remove element nodes and prevent memory leaks - elem = this[i] || {}; - if ( elem.nodeType === 1 ) { - jQuery.cleanData( getAll( elem, false ) ); - elem.innerHTML = value; - } - } - - elem = 0; - - // If using innerHTML throws an exception, use the fallback method - } catch(e) {} - } - - if ( elem ) { - this.empty().append( value ); - } - }, null, value, arguments.length ); - }, - - replaceWith: function() { - var arg = arguments[ 0 ]; - - // Make the changes, replacing each context element with the new content - this.domManip( arguments, function( elem ) { - arg = this.parentNode; - - jQuery.cleanData( getAll( this ) ); - - if ( arg ) { - arg.replaceChild( elem, this ); - } - }); - - // Force removal if there was no new content (e.g., from empty arguments) - return arg && (arg.length || arg.nodeType) ? this : this.remove(); - }, - - detach: function( selector ) { - return this.remove( selector, true ); - }, - - domManip: function( args, callback ) { - - // Flatten any nested arrays - args = concat.apply( [], args ); - - var first, node, hasScripts, - scripts, doc, fragment, - i = 0, - l = this.length, - set = this, - iNoClone = l - 1, - value = args[0], - isFunction = jQuery.isFunction( value ); - - // We can't cloneNode fragments that contain checked, in WebKit - if ( isFunction || - ( l > 1 && typeof value === "string" && - !support.checkClone && rchecked.test( value ) ) ) { - return this.each(function( index ) { - var self = set.eq( index ); - if ( isFunction ) { - args[0] = value.call( this, index, self.html() ); - } - self.domManip( args, callback ); - }); - } - - if ( l ) { - fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this ); - first = fragment.firstChild; - - if ( fragment.childNodes.length === 1 ) { - fragment = first; - } - - if ( first ) { - scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); - hasScripts = scripts.length; - - // Use the original fragment for the last item instead of the first because it can end up - // being emptied incorrectly in certain situations (#8070). - for ( ; i < l; i++ ) { - node = fragment; - - if ( i !== iNoClone ) { - node = jQuery.clone( node, true, true ); - - // Keep references to cloned scripts for later restoration - if ( hasScripts ) { - jQuery.merge( scripts, getAll( node, "script" ) ); - } - } - - callback.call( this[i], node, i ); - } - - if ( hasScripts ) { - doc = scripts[ scripts.length - 1 ].ownerDocument; - - // Reenable scripts - jQuery.map( scripts, restoreScript ); - - // Evaluate executable scripts on first document insertion - for ( i = 0; i < hasScripts; i++ ) { - node = scripts[ i ]; - if ( rscriptType.test( node.type || "" ) && - !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) { - - if ( node.src ) { - // Optional AJAX dependency, but won't run scripts if not present - if ( jQuery._evalUrl ) { - jQuery._evalUrl( node.src ); - } - } else { - jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) ); - } - } - } - } - - // Fix #11809: Avoid leaking memory - fragment = first = null; - } - } - - return this; - } -}); - -jQuery.each({ - appendTo: "append", - prependTo: "prepend", - insertBefore: "before", - insertAfter: "after", - replaceAll: "replaceWith" -}, function( name, original ) { - jQuery.fn[ name ] = function( selector ) { - var elems, - i = 0, - ret = [], - insert = jQuery( selector ), - last = insert.length - 1; - - for ( ; i <= last; i++ ) { - elems = i === last ? this : this.clone(true); - jQuery( insert[i] )[ original ]( elems ); - - // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() - push.apply( ret, elems.get() ); - } - - return this.pushStack( ret ); - }; -}); - - -var iframe, - elemdisplay = {}; - -/** - * Retrieve the actual display of a element - * @param {String} name nodeName of the element - * @param {Object} doc Document object - */ -// Called only from within defaultDisplay -function actualDisplay( name, doc ) { - var style, - elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), - - // getDefaultComputedStyle might be reliably used only on attached element - display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ? - - // Use of this method is a temporary fix (more like optmization) until something better comes along, - // since it was removed from specification and supported only in FF - style.display : jQuery.css( elem[ 0 ], "display" ); - - // We don't have any data stored on the element, - // so use "detach" method as fast way to get rid of the element - elem.detach(); - - return display; -} - -/** - * Try to determine the default display value of an element - * @param {String} nodeName - */ -function defaultDisplay( nodeName ) { - var doc = document, - display = elemdisplay[ nodeName ]; - - if ( !display ) { - display = actualDisplay( nodeName, doc ); - - // If the simple way fails, read from inside an iframe - if ( display === "none" || !display ) { - - // Use the already-created iframe if possible - iframe = (iframe || jQuery( "'); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) //hide the arrows when showing video - this._$modalArrows.css('display', 'none'); - this._toggleLoading(false); - return this; - } - }, { - key: '_showVideoIframe', - value: function _showVideoIframe(url, width, height, $containerForElement) { - // should be used for videos only. for remote content use loadRemoteContent (data-type=url) - height = height || width; // default to square - $containerForElement.html('
    '); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video - this._toggleLoading(false); - return this; - } - }, { - key: '_showHtml5Video', - value: function _showHtml5Video(url, $containerForElement) { - // should be used for videos only. for remote content use loadRemoteContent (data-type=url) - var width = this._$element.data('width') || 560; - var height = this._$element.data('height') || width / (560 / 315); - $containerForElement.html('
    '); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) this._$modalArrows.css('display', 'none'); //hide the arrows when showing video - this._toggleLoading(false); - return this; - } - }, { - key: '_loadRemoteContent', - value: function _loadRemoteContent(url, $containerForElement) { - var _this3 = this; - - var width = this._$element.data('width') || 560; - var height = this._$element.data('height') || 560; - - var disableExternalCheck = this._$element.data('disableExternalCheck') || false; - this._toggleLoading(false); - - // external urls are loading into an iframe - // local ajax can be loaded into the container itself - if (!disableExternalCheck && !this._isExternal(url)) { - $containerForElement.load(url, $.proxy(function () { - return _this3._$element.trigger('loaded.bs.modal');l; - })); - } else { - $containerForElement.html(''); - this._config.onContentLoaded.call(this); - } - - if (this._$modalArrows) //hide the arrows when remote content - this._$modalArrows.css('display', 'none'); - - this._resize(width, height); - return this; - } - }, { - key: '_isExternal', - value: function _isExternal(url) { - var match = url.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/); - if (typeof match[1] === "string" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) return true; - - if (typeof match[2] === "string" && match[2].length > 0 && match[2].replace(new RegExp(':(' + ({ - "http:": 80, - "https:": 443 - })[location.protocol] + ')?$'), "") !== location.host) return true; - - return false; - } - }, { - key: '_error', - value: function _error(message) { - console.error(message); - this._containerToUse().html(message); - this._resize(300, 300); - return this; - } - }, { - key: '_preloadImageByIndex', - value: function _preloadImageByIndex(startIndex, numberOfTimes) { - - if (!this._$galleryItems) return; - - var next = $(this._$galleryItems.get(startIndex), false); - if (typeof next == 'undefined') return; - - var src = next.attr('data-remote') || next.attr('href'); - if (next.attr('data-type') === 'image' || this._isImage(src)) this._preloadImage(src, false); - - if (numberOfTimes > 0) return this._preloadImageByIndex(startIndex + 1, numberOfTimes - 1); - } - }, { - key: '_preloadImage', - value: function _preloadImage(src, $containerForImage) { - var _this4 = this; - - $containerForImage = $containerForImage || false; - - var img = new Image(); - if ($containerForImage) { - (function () { - - // if loading takes > 200ms show a loader - var loadingTimeout = setTimeout(function () { - $containerForImage.append(_this4._config.loadingMessage); - }, 200); - - img.onload = function () { - if (loadingTimeout) clearTimeout(loadingTimeout); - loadingTimeout = null; - var image = $(''); - image.attr('src', img.src); - image.addClass('img-fluid'); - $containerForImage.html(image); - if (_this4._$modalArrows) _this4._$modalArrows.css('display', ''); // remove display to default to css property - - _this4._resize(img.width, img.height); - _this4._toggleLoading(false); - return _this4._config.onContentLoaded.call(_this4); - }; - img.onerror = function () { - _this4._toggleLoading(false); - return _this4._error(_this4._config.strings.fail + (' ' + src)); - }; - })(); - } - - img.src = src; - return img; - } - }, { - key: '_resize', - value: function _resize(width, height) { - - height = height || width; - this._wantedWidth = width; - this._wantedHeight = height; - - // if width > the available space, scale down the expected width and height - var widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right; - var maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth); - if (width + widthBorderAndPadding > maxWidth) { - height = (maxWidth - widthBorderAndPadding) / width * height; - width = maxWidth; - } else width = width + widthBorderAndPadding; - - var headerHeight = 0, - footerHeight = 0; - - // as the resize is performed the modal is show, the calculate might fail - // if so, default to the default sizes - if (this._footerIsShown) footerHeight = this._$modalFooter.outerHeight(true) || 55; - - if (this._titleIsShown) headerHeight = this._$modalHeader.outerHeight(true) || 67; - - var borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top; - - //calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins - var margins = parseFloat(this._$modalDialog.css('margin-top')) + parseFloat(this._$modalDialog.css('margin-bottom')); - - var maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight); - if (height > maxHeight) { - // if height > the available height, scale down the width - var factor = Math.min(maxHeight / height, 1); - width = Math.ceil(factor * width); - } - - this._$lightboxContainer.css('height', maxHeight); - this._$modalDialog.css('width', 'auto').css('maxWidth', width); - - this._$modal.modal('_handleUpdate'); - return this; - } - }], [{ - key: '_jQueryInterface', - value: function _jQueryInterface(config) { - var _this5 = this; - - config = config || {}; - return this.each(function () { - var $this = $(_this5); - var _config = $.extend({}, Lightbox.Default, $this.data(), typeof config === 'object' && config); - - new Lightbox(_this5, _config); - }); - } - }]); - - return Lightbox; - })(); - - $.fn[NAME] = Lightbox._jQueryInterface; - $.fn[NAME].Constructor = Lightbox; - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Lightbox._jQueryInterface; - }; - - return Lightbox; -})(jQuery); -//# sourceMappingURL=ekko-lightbox.js.map - -}(jQuery); diff --git a/bower_components/ekko-lightbox/dist/ekko-lightbox.js.map b/bower_components/ekko-lightbox/dist/ekko-lightbox.js.map deleted file mode 100644 index c42db921a2..0000000000 --- a/bower_components/ekko-lightbox/dist/ekko-lightbox.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../ekko-lightbox.js"],"names":[],"mappings":"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","file":"ekko-lightbox.js","sourcesContent":["const Lightbox = (($) => {\n\n\tconst NAME = 'ekkoLightbox'\n\tconst JQUERY_NO_CONFLICT = $.fn[NAME]\n\n\tconst Default = {\n\t\ttitle: '',\n\t\tfooter: '',\n\t\tshowArrows: true, //display the left / right arrows or not\n\t\ttype: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it\n\t\talwaysShowClose: false, //always show the close button, even if there is no title\n\t\tloadingMessage: '
    ', // http://tobiasahlin.com/spinkit/\n\t\tleftArrow: '',\n\t\trightArrow: '',\n\t\tstrings: {\n\t\t\tclose: 'Close',\n\t\t\tfail: 'Failed to load image:',\n\t\t\ttype: 'Could not detect remote target type. Force the type using data-type',\n\t\t},\n\t\tdoc: document, // if in an iframe can specify top.document\n\t\tonShow() {},\n\t\tonShown() {},\n\t\tonHide() {},\n\t\tonHidden() {},\n\t\tonNavigate() {},\n\t\tonContentLoaded() {}\n\t}\n\n\tclass Lightbox {\n\n\t\t/**\n\t\t \n\t Class properties:\n\t\t \n\t\t _$element: null -> the element currently being displayed\n\t\t _$modal: The bootstrap modal generated\n\t\t _$modalDialog: The .modal-dialog\n\t\t _$modalContent: The .modal-content\n\t\t _$modalBody: The .modal-body\n\t\t _$modalHeader: The .modal-header\n\t\t _$modalFooter: The .modal-footer\n\t\t _$lightboxContainerOne: Container of the first lightbox element\n\t\t _$lightboxContainerTwo: Container of the second lightbox element\n\t\t _$lightboxBody: First element in the container\n\t\t _$modalArrows: The overlayed arrows container\n\n\t\t _$galleryItems: Other 's available for this gallery\n\t\t _galleryName: Name of the current data('gallery') showing\n\t\t _galleryIndex: The current index of the _$galleryItems being shown\n\n\t\t _config: {} the options for the modal\n\t\t _modalId: unique id for the current lightbox\n\t\t _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content\n\n\t\t */\n\n\t\tstatic get Default() {\n\t\t\treturn Default\n\t\t}\n\n\t\tconstructor($element, config) {\n\t\t\tthis._config = $.extend({}, Default, config)\n\t\t\tthis._$modalArrows = null\n\t\t\tthis._galleryIndex = 0\n\t\t\tthis._galleryName = null\n\t\t\tthis._padding = null\n\t\t\tthis._border = null\n\t\t\tthis._titleIsShown = false\n\t\t\tthis._footerIsShown = false\n\t\t\tthis._wantedWidth = 0\n\t\t\tthis._wantedHeight = 0\n\t\t\tthis._modalId = `ekkoLightbox-${Math.floor((Math.random() * 1000) + 1)}`;\n\t\t\tthis._$element = $element instanceof jQuery ? $element : $($element)\n\n\t\t\tlet header = `

    ${this._config.title || \" \"}

    `;\n\t\t\tlet footer = `
    ${this._config.footer || \" \"}
    `;\n\t\t\tlet body = '
    '\n\t\t\tlet dialog = `
    ${header}${body}${footer}
    `\n\t\t\t$(this._config.doc.body).append(`
    ${dialog}
    `)\n\n\t\t\tthis._$modal = $(`#${this._modalId}`, this._config.doc)\n\t\t\tthis._$modalDialog = this._$modal.find('.modal-dialog').first()\n\t\t\tthis._$modalContent = this._$modal.find('.modal-content').first()\n\t\t\tthis._$modalBody = this._$modal.find('.modal-body').first()\n\t\t\tthis._$modalHeader = this._$modal.find('.modal-header').first()\n\t\t\tthis._$modalFooter = this._$modal.find('.modal-footer').first()\n\n\t\t\tthis._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first()\n\t\t\tthis._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first()\n\t\t\tthis._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first()\n\n\t\t\tthis._border = this._calculateBorders()\n\t\t\tthis._padding = this._calculatePadding()\n\n\t\t\tthis._galleryName = this._$element.data('gallery')\n\t\t\tif (this._galleryName) {\n\t\t\t\tthis._$galleryItems = $(document.body).find(`*[data-gallery=\"${this._galleryName}\"]`)\n\t\t\t\tthis._galleryIndex = this._$galleryItems.index(this._$element)\n\t\t\t\t$(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this))\n\n\t\t\t\t// add the directional arrows to the modal\n\t\t\t\tif (this._config.showArrows && this._$galleryItems.length > 1) {\n\t\t\t\t\tthis._$lightboxContainer.append(`
    `)\n\t\t\t\t\tthis._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first()\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:first-child', event => {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\treturn this.navigateLeft()\n\t\t\t\t\t})\n\t\t\t\t\tthis._$lightboxContainer.on('click', 'a:last-child', event => {\n\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\treturn this.navigateRight()\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._$modal\n\t\t\t.on('show.bs.modal', this._config.onShow.bind(this))\n\t\t\t.on('shown.bs.modal', () => {\n\t\t\t\tthis._toggleLoading(true)\n\t\t\t\tthis._handle()\n\t\t\t\treturn this._config.onShown.call(this)\n\t\t\t})\n\t\t\t.on('hide.bs.modal', this._config.onHide.bind(this))\n\t\t\t.on('hidden.bs.modal', () => {\n\t\t\t\tif (this._galleryName) {\n\t\t\t\t\t$(document).off('keydown.ekkoLightbox')\n\t\t\t\t\t$(window).off('resize.ekkoLightbox')\n\t\t\t\t}\n\t\t\t\tthis._$modal.remove()\n\t\t\t\treturn this._config.onHidden.call(this)\n\t\t\t})\n\t\t\t.modal(this._config)\n\n\t\t\t$(window).on('resize.ekkoLightbox', () => {\n\t\t\t\tthis._resize(this._wantedWidth, this._wantedHeight)\n\t\t\t})\n\t\t}\n\n\t\telement() {\n\t\t\treturn this._$element;\n\t\t}\n\n\t\tmodal() {\n\t\t\treturn this._$modal;\n\t\t}\n\n\t\tnavigateTo(index) {\n\n\t\t\tif (index < 0 || index > this._$galleryItems.length-1)\n\t\t\t\treturn this\n\n\t\t\tthis._galleryIndex = index\n\n\t\t\tthis._$element = $(this._$galleryItems.get(this._galleryIndex))\n\t\t\tthis._handle();\n\t\t}\n\n\t\tnavigateLeft() {\n\n\t\t\tif (this._$galleryItems.length === 1)\n\t\t\t\treturn\n\n\t\t\tif (this._galleryIndex === 0)\n\t\t\t\tthis._galleryIndex = this._$galleryItems.length - 1\n\t\t\telse //circular\n\t\t\t\tthis._galleryIndex--\n\n\t\t\tthis._config.onNavigate.call(this, 'left', this._galleryIndex)\n\t\t\treturn this.navigateTo(this._galleryIndex)\n\t\t}\n\n\t\tnavigateRight() {\n\n\t\t\tif (this._$galleryItems.length === 1)\n\t\t\t\treturn\n\n\t\t\tif (this._galleryIndex === this._$galleryItems.length - 1)\n\t\t\t\tthis._galleryIndex = 0\n\t\t\telse //circular\n\t\t\t\tthis._galleryIndex++\n\n\t\t\tthis._config.onNavigate.call(this, 'right', this._galleryIndex)\n\t\t\treturn this.navigateTo(this._galleryIndex)\n\t\t}\n\n\t\tclose() {\n\t\t\treturn this._$modal.modal('hide');\n\t\t}\n\n\t\t// helper private methods\n\t\t_navigationalBinder(event) {\n\t\t\tevent = event || window.event;\n\t\t\tif (event.keyCode === 39)\n\t\t\t\treturn this.navigateRight()\n\t\t\tif (event.keyCode === 37)\n\t\t\t\treturn this.navigateLeft()\n\t\t}\n\n\t\t// type detection private methods\n\t\t_detectRemoteType(src, type) {\n\n\t\t\ttype = type || false;\n\n\t\t\tif(!type && this._isImage(src))\n\t\t\t\ttype = 'image';\n\t\t\tif(!type && this._getYoutubeId(src))\n\t\t\t\ttype = 'youtube';\n\t\t\tif(!type && this._getVimeoId(src))\n\t\t\t\ttype = 'vimeo';\n\t\t\tif(!type && this._getInstagramId(src))\n\t\t\t\ttype = 'instagram';\n\n\t\t\tif(!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0)\n\t\t\t\ttype = 'url';\n\n\t\t\treturn type;\n\t\t}\n\n\t\t_isImage(string) {\n\t\t\treturn string && string.match(/(^data:image\\/.*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\\?|#).*)?$)/i)\n\t\t}\n\n\t\t_containerToUse() {\n\t\t\t// if currently showing an image, fade it out and remove\n\t\t\tlet $toUse = this._$lightboxBodyTwo\n\t\t\tlet $current = this._$lightboxBodyOne\n\n\t\t\tif(this._$lightboxBodyTwo.hasClass('in')) {\n\t\t\t\t$toUse = this._$lightboxBodyOne\n\t\t\t\t$current = this._$lightboxBodyTwo\n\t\t\t}\n\n\t\t\t$current.removeClass('in')\n\t\t\tsetTimeout(() => {\n\t\t\t\tif(!this._$lightboxBodyTwo.hasClass('in'))\n\t\t\t\t\tthis._$lightboxBodyTwo.empty()\n\t\t\t\tif(!this._$lightboxBodyOne.hasClass('in'))\n\t\t\t\t\tthis._$lightboxBodyOne.empty()\n\t\t\t}, 500)\n\n\t\t\t$toUse.addClass('in')\n\t\t\treturn $toUse\n\t\t}\n\n\t\t_handle() {\n\n\t\t\tlet $toUse = this._containerToUse()\n\t\t\tthis._updateTitleAndFooter()\n\n\t\t\tlet currentRemote = this._$element.attr('data-remote') || this._$element.attr('href')\n\t\t\tlet currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false)\n\n\t\t\tif(['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0)\n\t\t\t\treturn this._error(this._config.strings.type)\n\n\t\t\tswitch(currentType) {\n\t\t\t\tcase 'image':\n\t\t\t\t\tthis._preloadImage(currentRemote, $toUse)\n\t\t\t\t\tthis._preloadImageByIndex(this._galleryIndex, 3)\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'youtube':\n\t\t\t\t\tthis._showYoutubeVideo(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'vimeo':\n\t\t\t\t\tthis._showVimeoVideo(this._getVimeoId(currentRemote), $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'instagram':\n\t\t\t\t\tthis._showInstagramVideo(this._getInstagramId(currentRemote), $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'video':\n\t\t\t\t\tthis._showHtml5Video(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: // url\n\t\t\t\t\tthis._loadRemoteContent(currentRemote, $toUse);\n\t\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\treturn this;\n\t\t}\n\n\t\t_getYoutubeId(string) {\n\t\t\tif(!string)\n\t\t\t\treturn false;\n\t\t\tlet matches = string.match(/^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/)\n\t\t\treturn (matches && matches[2].length === 11) ? matches[2] : false\n\t\t}\n\n\t\t_getVimeoId(string) {\n\t\t\treturn string && string.indexOf('vimeo') > 0 ? string : false\n\t\t}\n\n\t\t_getInstagramId(string) {\n\t\t\treturn string && string.indexOf('instagram') > 0 ? string : false\n\t\t}\n\n\t\t// layout private methods\n\t\t_toggleLoading(show) {\n\t\t\tshow = show || false\n\t\t\tif(show) {\n\t\t\t\tthis._$modalDialog.css('display', 'none')\n\t\t\t\tthis._$modal.removeClass('in')\n\t\t\t\t$('.modal-backdrop').append(this._config.loadingMessage)\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._$modalDialog.css('display', 'block')\n\t\t\t\tthis._$modal.addClass('in')\n\t\t\t\t$('.modal-backdrop').find('.ekko-lightbox-loader').remove()\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\n\t\t_calculateBorders() {\n\t\t\treturn {\n\t\t\t\ttop: this._totalCssByAttribute('border-top-width'),\n\t\t\t\tright: this._totalCssByAttribute('border-right-width'),\n\t\t\t\tbottom: this._totalCssByAttribute('border-bottom-width'),\n\t\t\t\tleft: this._totalCssByAttribute('border-left-width'),\n\t\t\t}\n\t\t}\n\t\t\n\t\t_calculatePadding() {\n\t\t\treturn {\n\t\t\t\ttop: this._totalCssByAttribute('padding-top'),\n\t\t\t\tright: this._totalCssByAttribute('padding-right'),\n\t\t\t\tbottom: this._totalCssByAttribute('padding-bottom'),\n\t\t\t\tleft: this._totalCssByAttribute('padding-left'),\n\t\t\t}\n\t\t}\n\n\t\t_totalCssByAttribute(attribute) {\n\t\t\treturn parseInt(this._$modalDialog.css(attribute), 10) +\n\t\t\t\tparseInt(this._$modalContent.css(attribute), 10) +\n\t\t\t\tparseInt(this._$modalBody.css(attribute), 10)\n\t\t}\n\n\t\t_updateTitleAndFooter() {\n\t\t\tlet title = this._$element.data('title') || \"\"\n\t\t\tlet caption = this._$element.data('footer') || \"\"\n\n\t\t\tthis._titleIsShown = false\n\t\t\tif (title || this._config.alwaysShowClose) {\n\t\t\t\tthis._titleIsShown = true\n\t\t\t\tthis._$modalHeader.css('display', '').find('.modal-title').html(title || \" \")\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis._$modalHeader.css('display', 'none')\n\n\t\t\tthis._footerIsShown = false\n\t\t\tif (caption) {\n\t\t\t\tthis._footerIsShown = true\n\t\t\t\tthis._$modalFooter.css('display', '').html(caption)\n\t\t\t}\n\t\t\telse\n\t\t\t\tthis._$modalFooter.css('display', 'none')\n\n\t\t\treturn this;\n\t\t}\n\n\t\t_showYoutubeVideo(remote, $containerForElement) {\n\t\t\tlet id = this._getYoutubeId(remote)\n\t\t\tlet query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : ''\n\t\t\tlet width = this._$element.data('width') || 560\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\treturn this._showVideoIframe(\n\t\t\t\t`//www.youtube.com/embed/${id}?badge=0&autoplay=1&html5=1${query}`,\n\t\t\t\twidth,\n\t\t\t\theight,\n\t\t\t\t$containerForElement\n\t\t\t);\n\t\t}\n\n\t\t_showVimeoVideo(id, $containerForElement) {\n\t\t\tlet width = 500\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\treturn this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement)\n\t\t}\n\n\t\t_showInstagramVideo(id, $containerForElement) {\n\t\t\t// instagram load their content into iframe's so this can be put straight into the element\n\t\t\tlet width = this._$element.data('width') || 612\n\t\t\tlet height = width + 80;\n\t\t\tid = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash\n\t\t\t$containerForElement.html(``);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows) //hide the arrows when showing video\n\t\t\t\tthis._$modalArrows.css('display', 'none');\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_showVideoIframe(url, width, height, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\theight = height || width; // default to square\n\t\t\t$containerForElement.html(`
    `);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows)\n\t\t\t\tthis._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_showHtml5Video(url, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url)\n\t\t\tlet width = this._$element.data('width') || 560\n\t\t\tlet height = this._$element.data('height') || width / ( 560/315 )\n\t\t\t$containerForElement.html(`
    `);\n\t\t\tthis._resize(width, height);\n\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\tif (this._$modalArrows)\n\t\t\t\tthis._$modalArrows.css('display', 'none'); //hide the arrows when showing video\n\t\t\tthis._toggleLoading(false);\n\t\t\treturn this;\n\t\t}\n\n\t\t_loadRemoteContent(url, $containerForElement) {\n\t\t\tlet width = this._$element.data('width') || 560;\n\t\t\tlet height = this._$element.data('height') || 560;\n\n\t\t\tlet disableExternalCheck = this._$element.data('disableExternalCheck') || false;\n\t\t\tthis._toggleLoading(false);\n\n\t\t\t// external urls are loading into an iframe\n\t\t\t// local ajax can be loaded into the container itself\n\t\t\tif (!disableExternalCheck && !this._isExternal(url)) {\n\t\t\t\t$containerForElement.load(url, $.proxy(() => {\n\t\t\t\t\treturn this._$element.trigger('loaded.bs.modal');l\n\t\t\t\t}));\n\n\t\t\t} else {\n\t\t\t\t$containerForElement.html(``);\n\t\t\t\tthis._config.onContentLoaded.call(this);\n\t\t\t}\n\n\t\t\tif (this._$modalArrows) //hide the arrows when remote content\n\t\t\t\tthis._$modalArrows.css('display', 'none')\n\n\t\t\tthis._resize(width, height);\n\t\t\treturn this;\n\t\t}\n\n\t\t_isExternal(url) {\n\t\t\tlet match = url.match(/^([^:\\/?#]+:)?(?:\\/\\/([^\\/?#]*))?([^?#]+)?(\\?[^#]*)?(#.*)?/);\n\t\t\tif (typeof match[1] === \"string\" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol)\n\t\t\t\treturn true;\n\n\t\t\tif (typeof match[2] === \"string\" && match[2].length > 0 && match[2].replace(new RegExp(`:(${{\n\t\t\t\t\t\"http:\": 80,\n\t\t\t\t\t\"https:\": 443\n\t\t\t\t}[location.protocol]})?$`), \"\") !== location.host)\n\t\t\t\treturn true;\n\n\t\t\treturn false;\n\t\t}\n\n\t\t_error( message ) {\n\t\t\tconsole.error(message);\n\t\t\tthis._containerToUse().html(message);\n\t\t\tthis._resize(300, 300);\n\t\t\treturn this;\n\t\t}\n\n\t\t_preloadImageByIndex(startIndex, numberOfTimes) {\n\n\t\t\tif(!this._$galleryItems)\n\t\t\t\treturn;\n\n\t\t\tlet next = $(this._$galleryItems.get(startIndex), false)\n\t\t\tif(typeof next == 'undefined')\n\t\t\t\treturn\n\n\t\t\tlet src = next.attr('data-remote') || next.attr('href')\n\t\t\tif (next.attr('data-type') === 'image' || this._isImage(src))\n\t\t\t\tthis._preloadImage(src, false)\n\n\t\t\tif(numberOfTimes > 0)\n\t\t\t\treturn this._preloadImageByIndex(startIndex + 1, numberOfTimes-1);\n\t\t}\n\n\t\t_preloadImage( src, $containerForImage) {\n\n\t\t\t$containerForImage = $containerForImage || false\n\n\t\t\tlet img = new Image();\n\t\t\tif ($containerForImage) {\n\n\t\t\t\t// if loading takes > 200ms show a loader\n\t\t\t\tlet loadingTimeout = setTimeout(() => {\n\t\t\t\t\t$containerForImage.append(this._config.loadingMessage)\n\t\t\t\t}, 200)\n\n\t\t\t\timg.onload = () => {\n\t\t\t\t\tif(loadingTimeout)\n\t\t\t\t\t\tclearTimeout(loadingTimeout)\n\t\t\t\t\tloadingTimeout = null;\n\t\t\t\t\tlet image = $('');\n\t\t\t\t\timage.attr('src', img.src);\n\t\t\t\t\timage.addClass('img-fluid');\n\t\t\t\t\t$containerForImage.html(image);\n\t\t\t\t\tif (this._$modalArrows)\n\t\t\t\t\t\tthis._$modalArrows.css('display', '') // remove display to default to css property\n\n\t\t\t\t\tthis._resize(img.width, img.height);\n\t\t\t\t\tthis._toggleLoading(false);\n\t\t\t\t\treturn this._config.onContentLoaded.call(this);\n\t\t\t\t};\n\t\t\t\timg.onerror = () => {\n\t\t\t\t\tthis._toggleLoading(false);\n\t\t\t\t\treturn this._error(this._config.strings.fail+` ${src}`);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\timg.src = src;\n\t\t\treturn img;\n\t\t}\n\n\t\t_resize( width, height ) {\n\n\t\t\theight = height || width\n\t\t\tthis._wantedWidth = width\n\t\t\tthis._wantedHeight = height\n\n\t\t\t// if width > the available space, scale down the expected width and height\n\t\t\tlet widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right\n\t\t\tlet maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth)\n\t\t\tif((width + widthBorderAndPadding) > maxWidth) {\n\t\t\t\theight = ((maxWidth - widthBorderAndPadding) / width) * height\n\t\t\t\twidth = maxWidth\n\t\t\t} else\n\t\t\t\twidth = (width + widthBorderAndPadding)\n\n\t\t\tlet headerHeight = 0,\n\t\t\t\tfooterHeight = 0\n\n\t\t\t// as the resize is performed the modal is show, the calculate might fail\n\t\t\t// if so, default to the default sizes\n\t\t\tif (this._footerIsShown)\n\t\t\t\tfooterHeight = this._$modalFooter.outerHeight(true) || 55\n\n\t\t\tif (this._titleIsShown)\n\t\t\t\theaderHeight = this._$modalHeader.outerHeight(true) || 67\n\n\t\t\tlet borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top\n\n\t\t\t//calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins\n\t\t\tlet margins = parseFloat(this._$modalDialog.css('margin-top')) + parseFloat(this._$modalDialog.css('margin-bottom'));\n\n\t\t\tlet maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight);\n\t\t\tif(height > maxHeight) {\n\t\t\t\t// if height > the available height, scale down the width\n\t\t\t\tlet factor = Math.min(maxHeight / height, 1);\n\t\t\t\twidth = Math.ceil(factor * width);\n\t\t\t}\n\n\t\t\tthis._$lightboxContainer.css('height', maxHeight)\n\t\t\tthis._$modalDialog.css('width', 'auto') .css('maxWidth', width);\n\n\t\t\tthis._$modal.modal('_handleUpdate');\n\t\t\treturn this;\n\t\t}\n\n\t\tstatic _jQueryInterface(config) {\n\t\t\tconfig = config || {}\n\t\t\treturn this.each(() => {\n\t\t\t\tlet $this = $(this)\n\t\t\t\tlet _config = $.extend(\n\t\t\t\t\t{},\n\t\t\t\t\tLightbox.Default,\n\t\t\t\t\t$this.data(),\n\t\t\t\t\ttypeof config === 'object' && config\n\t\t\t\t)\n\n\t\t\t\tnew Lightbox(this, _config)\n\t\t\t})\n\t\t}\n\t}\n\n\n\n\t$.fn[NAME] = Lightbox._jQueryInterface\n\t$.fn[NAME].Constructor = Lightbox\n\t$.fn[NAME].noConflict = () => {\n\t\t$.fn[NAME] = JQUERY_NO_CONFLICT\n\t\treturn Lightbox._jQueryInterface\n\t}\n\n\treturn Lightbox\n\n})(jQuery)\n\nexport default Lightbox"]} \ No newline at end of file diff --git a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.css b/bower_components/ekko-lightbox/dist/ekko-lightbox.min.css deleted file mode 100644 index 98e91ebda1..0000000000 --- a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.css +++ /dev/null @@ -1,2 +0,0 @@ -.ekko-lightbox-nav-overlay a:focus,.ekko-lightbox-nav-overlay a>:focus{outline:0}.ekko-lightbox-container{position:relative}.ekko-lightbox-container>div.ekko-lightbox-item{position:absolute;top:0;left:0;width:100%;transition:opacity .5s ease-in-out;opacity:1}.ekko-lightbox-nav-overlay{z-index:1;position:absolute;top:0;left:0;width:100%;height:100%;display:-ms-flexbox;display:flex}.ekko-lightbox-nav-overlay a{-ms-flex:1;flex:1;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;opacity:0;transition:opacity .5s;color:#fff;font-size:30px;z-index:1}.ekko-lightbox-nav-overlay a>*{-ms-flex-positive:1;flex-grow:1}.ekko-lightbox-nav-overlay a span{padding:0 30px}.ekko-lightbox-nav-overlay a:last-child span{text-align:right}.ekko-lightbox-nav-overlay a:hover{text-decoration:none}.ekko-lightbox a:hover{opacity:1;text-decoration:none}.ekko-lightbox .modal-footer{text-align:left}.ekko-lightbox-loader{position:absolute;top:0;left:0;bottom:0;right:0;width:100%;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}.ekko-lightbox-loader>div{width:40px;height:40px;position:relative;text-align:center}.ekko-lightbox-loader>div>div{width:100%;height:100%;border-radius:50%;background-color:#fff;opacity:.6;position:absolute;top:0;left:0;animation:a 2s infinite ease-in-out}.ekko-lightbox-loader>div>div:last-child{animation-delay:-1s}@keyframes a{0%,to{transform:scale(0);-webkit-transform:scale(0)}50%{transform:scale(1);-webkit-transform:scale(1)}} -/*# sourceMappingURL=ekko-lightbox.min.css.map */ \ No newline at end of file diff --git a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.css.map b/bower_components/ekko-lightbox/dist/ekko-lightbox.min.css.map deleted file mode 100644 index 17f09be59c..0000000000 --- a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["dist/ekko-lightbox.css"],"names":[],"mappings":"AAkDA,uEACE,SAAS,CAnDX,yBACE,iBAAU,CAEZ,gDACE,kBACA,MACA,OACA,WACA,mCACA,SAAS,CAEX,2BACE,UACA,kBACA,MACA,OACA,WACA,YACA,oBACA,YAAS,CAEX,6BACE,WACI,OACJ,oBACA,aACA,sBACI,mBACJ,UACA,uBACA,WACA,eACA,SAAS,CAEX,+BACE,oBACI,WAAW,CAKjB,kCACE,cAAW,CAEb,6CACE,gBAAY,CAEd,mCACE,oBAAiB,CAKnB,uBACE,UACA,oBAAiB,CAEnB,6BACE,eAAY,CAEd,sBACE,kBACA,MACA,OACA,SACA,QACA,WACA,oBACA,aAEA,0BACI,sBAEJ,qBACI,uBAEJ,sBACI,kBAAa,CAEnB,0BACE,WACA,YACA,kBACA,iBAAY,CAEd,8BACE,WACA,YACA,kBACA,sBACA,WACA,kBACA,MACA,OACA,mCAAiC,CAEnC,yCACE,mBAAiB,CAEnB,aACE,MAEE,mBACA,0BAAmB,CAErB,IACE,mBACA,0BAAmB,CAAA,CAAA","file":"ekko-lightbox.min.css"} \ No newline at end of file diff --git a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.js b/bower_components/ekko-lightbox/dist/ekko-lightbox.min.js deleted file mode 100644 index 08ba49af91..0000000000 --- a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.js +++ /dev/null @@ -1,2 +0,0 @@ -+function(a){"use strict";function b(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}var c=function(){function a(a,b){for(var c=0;c
    ',leftArrow:"",rightArrow:"",strings:{close:"Close",fail:"Failed to load image:",type:"Could not detect remote target type. Force the type using data-type"},doc:document,onShow:function(){},onShown:function(){},onHide:function(){},onHidden:function(){},onNavigate:function(){},onContentLoaded:function(){}},g=function(){function d(c,e){var g=this;b(this,d),this._config=a.extend({},f,e),this._$modalArrows=null,this._galleryIndex=0,this._galleryName=null,this._padding=null,this._border=null,this._titleIsShown=!1,this._footerIsShown=!1,this._wantedWidth=0,this._wantedHeight=0,this._modalId="ekkoLightbox-"+Math.floor(1e3*Math.random()+1),this._$element=c instanceof jQuery?c:a(c);var h='",i='",j='',k='";a(this._config.doc.body).append('"),this._$modal=a("#"+this._modalId,this._config.doc),this._$modalDialog=this._$modal.find(".modal-dialog").first(),this._$modalContent=this._$modal.find(".modal-content").first(),this._$modalBody=this._$modal.find(".modal-body").first(),this._$modalHeader=this._$modal.find(".modal-header").first(),this._$modalFooter=this._$modal.find(".modal-footer").first(),this._$lightboxContainer=this._$modalBody.find(".ekko-lightbox-container").first(),this._$lightboxBodyOne=this._$lightboxContainer.find("> div:first-child").first(),this._$lightboxBodyTwo=this._$lightboxContainer.find("> div:last-child").first(),this._border=this._calculateBorders(),this._padding=this._calculatePadding(),this._galleryName=this._$element.data("gallery"),this._galleryName&&(this._$galleryItems=a(document.body).find('*[data-gallery="'+this._galleryName+'"]'),this._galleryIndex=this._$galleryItems.index(this._$element),a(document).on("keydown.ekkoLightbox",this._navigationalBinder.bind(this)),this._config.showArrows&&this._$galleryItems.length>1&&(this._$lightboxContainer.append('"),this._$modalArrows=this._$lightboxContainer.find("div.ekko-lightbox-nav-overlay").first(),this._$lightboxContainer.on("click","a:first-child",function(a){return a.preventDefault(),g.navigateLeft()}),this._$lightboxContainer.on("click","a:last-child",function(a){return a.preventDefault(),g.navigateRight()}))),this._$modal.on("show.bs.modal",this._config.onShow.bind(this)).on("shown.bs.modal",function(){return g._toggleLoading(!0),g._handle(),g._config.onShown.call(g)}).on("hide.bs.modal",this._config.onHide.bind(this)).on("hidden.bs.modal",function(){return g._galleryName&&(a(document).off("keydown.ekkoLightbox"),a(window).off("resize.ekkoLightbox")),g._$modal.remove(),g._config.onHidden.call(g)}).modal(this._config),a(window).on("resize.ekkoLightbox",function(){g._resize(g._wantedWidth,g._wantedHeight)})}return c(d,null,[{key:"Default",get:function(){return f}}]),c(d,[{key:"element",value:function(){return this._$element}},{key:"modal",value:function(){return this._$modal}},{key:"navigateTo",value:function(b){return b<0||b>this._$galleryItems.length-1?this:(this._galleryIndex=b,this._$element=a(this._$galleryItems.get(this._galleryIndex)),void this._handle())}},{key:"navigateLeft",value:function(){if(1!==this._$galleryItems.length)return 0===this._galleryIndex?this._galleryIndex=this._$galleryItems.length-1:this._galleryIndex--,this._config.onNavigate.call(this,"left",this._galleryIndex),this.navigateTo(this._galleryIndex)}},{key:"navigateRight",value:function(){if(1!==this._$galleryItems.length)return this._galleryIndex===this._$galleryItems.length-1?this._galleryIndex=0:this._galleryIndex++,this._config.onNavigate.call(this,"right",this._galleryIndex),this.navigateTo(this._galleryIndex)}},{key:"close",value:function(){return this._$modal.modal("hide")}},{key:"_navigationalBinder",value:function(a){return a=a||window.event,39===a.keyCode?this.navigateRight():37===a.keyCode?this.navigateLeft():void 0}},{key:"_detectRemoteType",value:function(a,b){return b=b||!1,!b&&this._isImage(a)&&(b="image"),!b&&this._getYoutubeId(a)&&(b="youtube"),!b&&this._getVimeoId(a)&&(b="vimeo"),!b&&this._getInstagramId(a)&&(b="instagram"),(!b||["image","youtube","vimeo","instagram","video","url"].indexOf(b)<0)&&(b="url"),b}},{key:"_isImage",value:function(a){return a&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)}},{key:"_containerToUse",value:function(){var a=this,b=this._$lightboxBodyTwo,c=this._$lightboxBodyOne;return this._$lightboxBodyTwo.hasClass("in")&&(b=this._$lightboxBodyOne,c=this._$lightboxBodyTwo),c.removeClass("in"),setTimeout(function(){a._$lightboxBodyTwo.hasClass("in")||a._$lightboxBodyTwo.empty(),a._$lightboxBodyOne.hasClass("in")||a._$lightboxBodyOne.empty()},500),b.addClass("in"),b}},{key:"_handle",value:function(){var a=this._containerToUse();this._updateTitleAndFooter();var b=this._$element.attr("data-remote")||this._$element.attr("href"),c=this._detectRemoteType(b,this._$element.attr("data-type")||!1);if(["image","youtube","vimeo","instagram","video","url"].indexOf(c)<0)return this._error(this._config.strings.type);switch(c){case"image":this._preloadImage(b,a),this._preloadImageByIndex(this._galleryIndex,3);break;case"youtube":this._showYoutubeVideo(b,a);break;case"vimeo":this._showVimeoVideo(this._getVimeoId(b),a);break;case"instagram":this._showInstagramVideo(this._getInstagramId(b),a);break;case"video":this._showHtml5Video(b,a);break;default:this._loadRemoteContent(b,a)}return this}},{key:"_getYoutubeId",value:function(a){if(!a)return!1;var b=a.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/);return!(!b||11!==b[2].length)&&b[2]}},{key:"_getVimeoId",value:function(a){return!!(a&&a.indexOf("vimeo")>0)&&a}},{key:"_getInstagramId",value:function(a){return!!(a&&a.indexOf("instagram")>0)&&a}},{key:"_toggleLoading",value:function(b){return b=b||!1,b?(this._$modalDialog.css("display","none"),this._$modal.removeClass("in"),a(".modal-backdrop").append(this._config.loadingMessage)):(this._$modalDialog.css("display","block"),this._$modal.addClass("in"),a(".modal-backdrop").find(".ekko-lightbox-loader").remove()),this}},{key:"_calculateBorders",value:function(){return{top:this._totalCssByAttribute("border-top-width"),right:this._totalCssByAttribute("border-right-width"),bottom:this._totalCssByAttribute("border-bottom-width"),left:this._totalCssByAttribute("border-left-width")}}},{key:"_calculatePadding",value:function(){return{top:this._totalCssByAttribute("padding-top"),right:this._totalCssByAttribute("padding-right"),bottom:this._totalCssByAttribute("padding-bottom"),left:this._totalCssByAttribute("padding-left")}}},{key:"_totalCssByAttribute",value:function(a){return parseInt(this._$modalDialog.css(a),10)+parseInt(this._$modalContent.css(a),10)+parseInt(this._$modalBody.css(a),10)}},{key:"_updateTitleAndFooter",value:function(){var a=this._$element.data("title")||"",b=this._$element.data("footer")||"";return this._titleIsShown=!1,a||this._config.alwaysShowClose?(this._titleIsShown=!0,this._$modalHeader.css("display","").find(".modal-title").html(a||" ")):this._$modalHeader.css("display","none"),this._footerIsShown=!1,b?(this._footerIsShown=!0,this._$modalFooter.css("display","").html(b)):this._$modalFooter.css("display","none"),this}},{key:"_showYoutubeVideo",value:function(a,b){var c=this._getYoutubeId(a),d=a.indexOf("&")>0?a.substr(a.indexOf("&")):"",e=this._$element.data("width")||560,f=this._$element.data("height")||e/(560/315);return this._showVideoIframe("//www.youtube.com/embed/"+c+"?badge=0&autoplay=1&html5=1"+d,e,f,b)}},{key:"_showVimeoVideo",value:function(a,b){var c=500,d=this._$element.data("height")||c/(560/315);return this._showVideoIframe(a+"?autoplay=1",c,d,b)}},{key:"_showInstagramVideo",value:function(a,b){var c=this._$element.data("width")||612,d=c+80;return a="/"!==a.substr(-1)?a+"/":a,b.html(''),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_showVideoIframe",value:function(a,b,c,d){return c=c||b,d.html('
    '),this._resize(b,c),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_showHtml5Video",value:function(a,b){var c=this._$element.data("width")||560,d=this._$element.data("height")||c/(560/315);return b.html('
    '),this._resize(c,d),this._config.onContentLoaded.call(this),this._$modalArrows&&this._$modalArrows.css("display","none"),this._toggleLoading(!1),this}},{key:"_loadRemoteContent",value:function(b,c){var d=this,e=this._$element.data("width")||560,f=this._$element.data("height")||560,g=this._$element.data("disableExternalCheck")||!1;return this._toggleLoading(!1),g||this._isExternal(b)?(c.html(''),this._config.onContentLoaded.call(this)):c.load(b,a.proxy(function(){return d._$element.trigger("loaded.bs.modal")})),this._$modalArrows&&this._$modalArrows.css("display","none"),this._resize(e,f),this}},{key:"_isExternal",value:function(a){var b=a.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/);return"string"==typeof b[1]&&b[1].length>0&&b[1].toLowerCase()!==location.protocol||"string"==typeof b[2]&&b[2].length>0&&b[2].replace(new RegExp(":("+{"http:":80,"https:":443}[location.protocol]+")?$"),"")!==location.host}},{key:"_error",value:function(a){return console.error(a),this._containerToUse().html(a),this._resize(300,300),this}},{key:"_preloadImageByIndex",value:function(b,c){if(this._$galleryItems){var d=a(this._$galleryItems.get(b),!1);if("undefined"!=typeof d){var e=d.attr("data-remote")||d.attr("href");return("image"===d.attr("data-type")||this._isImage(e))&&this._preloadImage(e,!1),c>0?this._preloadImageByIndex(b+1,c-1):void 0}}}},{key:"_preloadImage",value:function(b,c){var d=this;c=c||!1;var e=new Image;return c&&!function(){var f=setTimeout(function(){c.append(d._config.loadingMessage)},200);e.onload=function(){f&&clearTimeout(f),f=null;var b=a("");return b.attr("src",e.src),b.addClass("img-fluid"),c.html(b),d._$modalArrows&&d._$modalArrows.css("display",""),d._resize(e.width,e.height),d._toggleLoading(!1),d._config.onContentLoaded.call(d)},e.onerror=function(){return d._toggleLoading(!1),d._error(d._config.strings.fail+(" "+b))}}(),e.src=b,e}},{key:"_resize",value:function(b,c){c=c||b,this._wantedWidth=b,this._wantedHeight=c;var d=this._padding.left+this._padding.right+this._border.left+this._border.right,e=Math.min(b+d,this._config.doc.body.clientWidth);b+d>e?(c=(e-d)/b*c,b=e):b+=d;var f=0,g=0;this._footerIsShown&&(g=this._$modalFooter.outerHeight(!0)||55),this._titleIsShown&&(f=this._$modalHeader.outerHeight(!0)||67);var h=this._padding.top+this._padding.bottom+this._border.bottom+this._border.top,i=parseFloat(this._$modalDialog.css("margin-top"))+parseFloat(this._$modalDialog.css("margin-bottom")),j=Math.min(c,a(window).height()-h-i-f-g);if(c>j){var k=Math.min(j/c,1);b=Math.ceil(k*b)}return this._$lightboxContainer.css("height",j),this._$modalDialog.css("width","auto").css("maxWidth",b),this._$modal.modal("_handleUpdate"),this}}],[{key:"_jQueryInterface",value:function(b){var c=this;return b=b||{},this.each(function(){var e=a(c),f=a.extend({},d.Default,e.data(),"object"==typeof b&&b);new d(c,f)})}}]),d}();return a.fn[d]=g._jQueryInterface,a.fn[d].Constructor=g,a.fn[d].noConflict=function(){return a.fn[d]=e,g._jQueryInterface},g})(jQuery)}(jQuery); -//# sourceMappingURL=ekko-lightbox.min.js.map \ No newline at end of file diff --git a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.js.map b/bower_components/ekko-lightbox/dist/ekko-lightbox.min.js.map deleted file mode 100644 index 05ea1bccc8..0000000000 --- a/bower_components/ekko-lightbox/dist/ekko-lightbox.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["ekko-lightbox.js"],"names":["$","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","NAME","JQUERY_NO_CONFLICT","fn","Default","title","footer","showArrows","type","alwaysShowClose","loadingMessage","leftArrow","rightArrow","strings","close","fail","doc","document","onShow","onShown","onHide","onHidden","onNavigate","onContentLoaded","Lightbox","$element","config","_this","this","_config","extend","_$modalArrows","_galleryIndex","_galleryName","_padding","_border","_titleIsShown","_footerIsShown","_wantedWidth","_wantedHeight","_modalId","Math","floor","random","_$element","jQuery","header","body","dialog","append","_$modal","_$modalDialog","find","first","_$modalContent","_$modalBody","_$modalHeader","_$modalFooter","_$lightboxContainer","_$lightboxBodyOne","_$lightboxBodyTwo","_calculateBorders","_calculatePadding","data","_$galleryItems","index","on","_navigationalBinder","bind","event","preventDefault","navigateLeft","navigateRight","_toggleLoading","_handle","call","off","window","remove","modal","_resize","get","value","navigateTo","keyCode","src","_isImage","_getYoutubeId","_getVimeoId","_getInstagramId","indexOf","string","match","_this2","$toUse","$current","hasClass","removeClass","setTimeout","empty","addClass","_containerToUse","_updateTitleAndFooter","currentRemote","attr","currentType","_detectRemoteType","_error","_preloadImage","_preloadImageByIndex","_showYoutubeVideo","_showVimeoVideo","_showInstagramVideo","_showHtml5Video","_loadRemoteContent","matches","show","css","top","_totalCssByAttribute","right","bottom","left","attribute","parseInt","caption","html","remote","$containerForElement","id","query","substr","width","height","_showVideoIframe","url","_this3","disableExternalCheck","_isExternal","load","proxy","trigger","toLowerCase","location","protocol","replace","RegExp","http:","https:","host","message","console","error","startIndex","numberOfTimes","next","$containerForImage","_this4","img","Image","loadingTimeout","onload","clearTimeout","image","onerror","widthBorderAndPadding","maxWidth","min","clientWidth","headerHeight","footerHeight","outerHeight","borderPadding","margins","parseFloat","maxHeight","factor","ceil","_this5","each","$this","_jQueryInterface","noConflict"],"mappings":"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","file":"ekko-lightbox.min.js"} \ No newline at end of file diff --git a/bower_components/ekko-lightbox/ekko-lightbox.js b/bower_components/ekko-lightbox/ekko-lightbox.js deleted file mode 100644 index c193c64bc2..0000000000 --- a/bower_components/ekko-lightbox/ekko-lightbox.js +++ /dev/null @@ -1,590 +0,0 @@ -const Lightbox = (($) => { - - const NAME = 'ekkoLightbox' - const JQUERY_NO_CONFLICT = $.fn[NAME] - - const Default = { - title: '', - footer: '', - showArrows: true, //display the left / right arrows or not - type: null, //force the lightbox into image / youtube mode. if null, or not image|youtube|vimeo; detect it - alwaysShowClose: false, //always show the close button, even if there is no title - loadingMessage: '
    ', // http://tobiasahlin.com/spinkit/ - leftArrow: '', - rightArrow: '', - strings: { - close: 'Close', - fail: 'Failed to load image:', - type: 'Could not detect remote target type. Force the type using data-type', - }, - doc: document, // if in an iframe can specify top.document - onShow() {}, - onShown() {}, - onHide() {}, - onHidden() {}, - onNavigate() {}, - onContentLoaded() {} - } - - class Lightbox { - - /** - - Class properties: - - _$element: null -> the element currently being displayed - _$modal: The bootstrap modal generated - _$modalDialog: The .modal-dialog - _$modalContent: The .modal-content - _$modalBody: The .modal-body - _$modalHeader: The .modal-header - _$modalFooter: The .modal-footer - _$lightboxContainerOne: Container of the first lightbox element - _$lightboxContainerTwo: Container of the second lightbox element - _$lightboxBody: First element in the container - _$modalArrows: The overlayed arrows container - - _$galleryItems: Other 's available for this gallery - _galleryName: Name of the current data('gallery') showing - _galleryIndex: The current index of the _$galleryItems being shown - - _config: {} the options for the modal - _modalId: unique id for the current lightbox - _padding / _border: CSS properties for the modal container; these are used to calculate the available space for the content - - */ - - static get Default() { - return Default - } - - constructor($element, config) { - this._config = $.extend({}, Default, config) - this._$modalArrows = null - this._galleryIndex = 0 - this._galleryName = null - this._padding = null - this._border = null - this._titleIsShown = false - this._footerIsShown = false - this._wantedWidth = 0 - this._wantedHeight = 0 - this._modalId = `ekkoLightbox-${Math.floor((Math.random() * 1000) + 1)}`; - this._$element = $element instanceof jQuery ? $element : $($element) - - let header = ``; - let footer = ``; - let body = '' - let dialog = `` - $(this._config.doc.body).append(``) - - this._$modal = $(`#${this._modalId}`, this._config.doc) - this._$modalDialog = this._$modal.find('.modal-dialog').first() - this._$modalContent = this._$modal.find('.modal-content').first() - this._$modalBody = this._$modal.find('.modal-body').first() - this._$modalHeader = this._$modal.find('.modal-header').first() - this._$modalFooter = this._$modal.find('.modal-footer').first() - - this._$lightboxContainer = this._$modalBody.find('.ekko-lightbox-container').first() - this._$lightboxBodyOne = this._$lightboxContainer.find('> div:first-child').first() - this._$lightboxBodyTwo = this._$lightboxContainer.find('> div:last-child').first() - - this._border = this._calculateBorders() - this._padding = this._calculatePadding() - - this._galleryName = this._$element.data('gallery') - if (this._galleryName) { - this._$galleryItems = $(document.body).find(`*[data-gallery="${this._galleryName}"]`) - this._galleryIndex = this._$galleryItems.index(this._$element) - $(document).on('keydown.ekkoLightbox', this._navigationalBinder.bind(this)) - - // add the directional arrows to the modal - if (this._config.showArrows && this._$galleryItems.length > 1) { - this._$lightboxContainer.append(``) - this._$modalArrows = this._$lightboxContainer.find('div.ekko-lightbox-nav-overlay').first() - this._$lightboxContainer.on('click', 'a:first-child', event => { - event.preventDefault() - return this.navigateLeft() - }) - this._$lightboxContainer.on('click', 'a:last-child', event => { - event.preventDefault() - return this.navigateRight() - }) - } - } - - this._$modal - .on('show.bs.modal', this._config.onShow.bind(this)) - .on('shown.bs.modal', () => { - this._toggleLoading(true) - this._handle() - return this._config.onShown.call(this) - }) - .on('hide.bs.modal', this._config.onHide.bind(this)) - .on('hidden.bs.modal', () => { - if (this._galleryName) { - $(document).off('keydown.ekkoLightbox') - $(window).off('resize.ekkoLightbox') - } - this._$modal.remove() - return this._config.onHidden.call(this) - }) - .modal(this._config) - - $(window).on('resize.ekkoLightbox', () => { - this._resize(this._wantedWidth, this._wantedHeight) - }) - } - - element() { - return this._$element; - } - - modal() { - return this._$modal; - } - - navigateTo(index) { - - if (index < 0 || index > this._$galleryItems.length-1) - return this - - this._galleryIndex = index - - this._$element = $(this._$galleryItems.get(this._galleryIndex)) - this._handle(); - } - - navigateLeft() { - - if (this._$galleryItems.length === 1) - return - - if (this._galleryIndex === 0) - this._galleryIndex = this._$galleryItems.length - 1 - else //circular - this._galleryIndex-- - - this._config.onNavigate.call(this, 'left', this._galleryIndex) - return this.navigateTo(this._galleryIndex) - } - - navigateRight() { - - if (this._$galleryItems.length === 1) - return - - if (this._galleryIndex === this._$galleryItems.length - 1) - this._galleryIndex = 0 - else //circular - this._galleryIndex++ - - this._config.onNavigate.call(this, 'right', this._galleryIndex) - return this.navigateTo(this._galleryIndex) - } - - close() { - return this._$modal.modal('hide'); - } - - // helper private methods - _navigationalBinder(event) { - event = event || window.event; - if (event.keyCode === 39) - return this.navigateRight() - if (event.keyCode === 37) - return this.navigateLeft() - } - - // type detection private methods - _detectRemoteType(src, type) { - - type = type || false; - - if(!type && this._isImage(src)) - type = 'image'; - if(!type && this._getYoutubeId(src)) - type = 'youtube'; - if(!type && this._getVimeoId(src)) - type = 'vimeo'; - if(!type && this._getInstagramId(src)) - type = 'instagram'; - - if(!type || ['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(type) < 0) - type = 'url'; - - return type; - } - - _isImage(string) { - return string && string.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i) - } - - _containerToUse() { - // if currently showing an image, fade it out and remove - let $toUse = this._$lightboxBodyTwo - let $current = this._$lightboxBodyOne - - if(this._$lightboxBodyTwo.hasClass('in')) { - $toUse = this._$lightboxBodyOne - $current = this._$lightboxBodyTwo - } - - $current.removeClass('in') - setTimeout(() => { - if(!this._$lightboxBodyTwo.hasClass('in')) - this._$lightboxBodyTwo.empty() - if(!this._$lightboxBodyOne.hasClass('in')) - this._$lightboxBodyOne.empty() - }, 500) - - $toUse.addClass('in') - return $toUse - } - - _handle() { - - let $toUse = this._containerToUse() - this._updateTitleAndFooter() - - let currentRemote = this._$element.attr('data-remote') || this._$element.attr('href') - let currentType = this._detectRemoteType(currentRemote, this._$element.attr('data-type') || false) - - if(['image', 'youtube', 'vimeo', 'instagram', 'video', 'url'].indexOf(currentType) < 0) - return this._error(this._config.strings.type) - - switch(currentType) { - case 'image': - this._preloadImage(currentRemote, $toUse) - this._preloadImageByIndex(this._galleryIndex, 3) - break; - case 'youtube': - this._showYoutubeVideo(currentRemote, $toUse); - break; - case 'vimeo': - this._showVimeoVideo(this._getVimeoId(currentRemote), $toUse); - break; - case 'instagram': - this._showInstagramVideo(this._getInstagramId(currentRemote), $toUse); - break; - case 'video': - this._showHtml5Video(currentRemote, $toUse); - break; - default: // url - this._loadRemoteContent(currentRemote, $toUse); - break; - } - - return this; - } - - _getYoutubeId(string) { - if(!string) - return false; - let matches = string.match(/^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=)([^#\&\?]*).*/) - return (matches && matches[2].length === 11) ? matches[2] : false - } - - _getVimeoId(string) { - return string && string.indexOf('vimeo') > 0 ? string : false - } - - _getInstagramId(string) { - return string && string.indexOf('instagram') > 0 ? string : false - } - - // layout private methods - _toggleLoading(show) { - show = show || false - if(show) { - this._$modalDialog.css('display', 'none') - this._$modal.removeClass('in') - $('.modal-backdrop').append(this._config.loadingMessage) - } - else { - this._$modalDialog.css('display', 'block') - this._$modal.addClass('in') - $('.modal-backdrop').find('.ekko-lightbox-loader').remove() - } - return this; - } - - _calculateBorders() { - return { - top: this._totalCssByAttribute('border-top-width'), - right: this._totalCssByAttribute('border-right-width'), - bottom: this._totalCssByAttribute('border-bottom-width'), - left: this._totalCssByAttribute('border-left-width'), - } - } - - _calculatePadding() { - return { - top: this._totalCssByAttribute('padding-top'), - right: this._totalCssByAttribute('padding-right'), - bottom: this._totalCssByAttribute('padding-bottom'), - left: this._totalCssByAttribute('padding-left'), - } - } - - _totalCssByAttribute(attribute) { - return parseInt(this._$modalDialog.css(attribute), 10) + - parseInt(this._$modalContent.css(attribute), 10) + - parseInt(this._$modalBody.css(attribute), 10) - } - - _updateTitleAndFooter() { - let title = this._$element.data('title') || "" - let caption = this._$element.data('footer') || "" - - this._titleIsShown = false - if (title || this._config.alwaysShowClose) { - this._titleIsShown = true - this._$modalHeader.css('display', '').find('.modal-title').html(title || " ") - } - else - this._$modalHeader.css('display', 'none') - - this._footerIsShown = false - if (caption) { - this._footerIsShown = true - this._$modalFooter.css('display', '').html(caption) - } - else - this._$modalFooter.css('display', 'none') - - return this; - } - - _showYoutubeVideo(remote, $containerForElement) { - let id = this._getYoutubeId(remote) - let query = remote.indexOf('&') > 0 ? remote.substr(remote.indexOf('&')) : '' - let width = this._$element.data('width') || 560 - let height = this._$element.data('height') || width / ( 560/315 ) - return this._showVideoIframe( - `//www.youtube.com/embed/${id}?badge=0&autoplay=1&html5=1${query}`, - width, - height, - $containerForElement - ); - } - - _showVimeoVideo(id, $containerForElement) { - let width = 500 - let height = this._$element.data('height') || width / ( 560/315 ) - return this._showVideoIframe(id + '?autoplay=1', width, height, $containerForElement) - } - - _showInstagramVideo(id, $containerForElement) { - // instagram load their content into iframe's so this can be put straight into the element - let width = this._$element.data('width') || 612 - let height = width + 80; - id = id.substr(-1) !== '/' ? id + '/' : id; // ensure id has trailing slash - $containerForElement.html(``); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) //hide the arrows when showing video - this._$modalArrows.css('display', 'none'); - this._toggleLoading(false); - return this; - } - - _showVideoIframe(url, width, height, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url) - height = height || width; // default to square - $containerForElement.html(`
    `); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) - this._$modalArrows.css('display', 'none'); //hide the arrows when showing video - this._toggleLoading(false); - return this; - } - - _showHtml5Video(url, $containerForElement) { // should be used for videos only. for remote content use loadRemoteContent (data-type=url) - let width = this._$element.data('width') || 560 - let height = this._$element.data('height') || width / ( 560/315 ) - $containerForElement.html(`
    `); - this._resize(width, height); - this._config.onContentLoaded.call(this); - if (this._$modalArrows) - this._$modalArrows.css('display', 'none'); //hide the arrows when showing video - this._toggleLoading(false); - return this; - } - - _loadRemoteContent(url, $containerForElement) { - let width = this._$element.data('width') || 560; - let height = this._$element.data('height') || 560; - - let disableExternalCheck = this._$element.data('disableExternalCheck') || false; - this._toggleLoading(false); - - // external urls are loading into an iframe - // local ajax can be loaded into the container itself - if (!disableExternalCheck && !this._isExternal(url)) { - $containerForElement.load(url, $.proxy(() => { - return this._$element.trigger('loaded.bs.modal');l - })); - - } else { - $containerForElement.html(``); - this._config.onContentLoaded.call(this); - } - - if (this._$modalArrows) //hide the arrows when remote content - this._$modalArrows.css('display', 'none') - - this._resize(width, height); - return this; - } - - _isExternal(url) { - let match = url.match(/^([^:\/?#]+:)?(?:\/\/([^\/?#]*))?([^?#]+)?(\?[^#]*)?(#.*)?/); - if (typeof match[1] === "string" && match[1].length > 0 && match[1].toLowerCase() !== location.protocol) - return true; - - if (typeof match[2] === "string" && match[2].length > 0 && match[2].replace(new RegExp(`:(${{ - "http:": 80, - "https:": 443 - }[location.protocol]})?$`), "") !== location.host) - return true; - - return false; - } - - _error( message ) { - console.error(message); - this._containerToUse().html(message); - this._resize(300, 300); - return this; - } - - _preloadImageByIndex(startIndex, numberOfTimes) { - - if(!this._$galleryItems) - return; - - let next = $(this._$galleryItems.get(startIndex), false) - if(typeof next == 'undefined') - return - - let src = next.attr('data-remote') || next.attr('href') - if (next.attr('data-type') === 'image' || this._isImage(src)) - this._preloadImage(src, false) - - if(numberOfTimes > 0) - return this._preloadImageByIndex(startIndex + 1, numberOfTimes-1); - } - - _preloadImage( src, $containerForImage) { - - $containerForImage = $containerForImage || false - - let img = new Image(); - if ($containerForImage) { - - // if loading takes > 200ms show a loader - let loadingTimeout = setTimeout(() => { - $containerForImage.append(this._config.loadingMessage) - }, 200) - - img.onload = () => { - if(loadingTimeout) - clearTimeout(loadingTimeout) - loadingTimeout = null; - let image = $(''); - image.attr('src', img.src); - image.addClass('img-fluid'); - $containerForImage.html(image); - if (this._$modalArrows) - this._$modalArrows.css('display', '') // remove display to default to css property - - this._resize(img.width, img.height); - this._toggleLoading(false); - return this._config.onContentLoaded.call(this); - }; - img.onerror = () => { - this._toggleLoading(false); - return this._error(this._config.strings.fail+` ${src}`); - }; - } - - img.src = src; - return img; - } - - _resize( width, height ) { - - height = height || width - this._wantedWidth = width - this._wantedHeight = height - - // if width > the available space, scale down the expected width and height - let widthBorderAndPadding = this._padding.left + this._padding.right + this._border.left + this._border.right - let maxWidth = Math.min(width + widthBorderAndPadding, this._config.doc.body.clientWidth) - if((width + widthBorderAndPadding) > maxWidth) { - height = ((maxWidth - widthBorderAndPadding) / width) * height - width = maxWidth - } else - width = (width + widthBorderAndPadding) - - let headerHeight = 0, - footerHeight = 0 - - // as the resize is performed the modal is show, the calculate might fail - // if so, default to the default sizes - if (this._footerIsShown) - footerHeight = this._$modalFooter.outerHeight(true) || 55 - - if (this._titleIsShown) - headerHeight = this._$modalHeader.outerHeight(true) || 67 - - let borderPadding = this._padding.top + this._padding.bottom + this._border.bottom + this._border.top - - //calculated each time as resizing the window can cause them to change due to Bootstraps fluid margins - let margins = parseFloat(this._$modalDialog.css('margin-top')) + parseFloat(this._$modalDialog.css('margin-bottom')); - - let maxHeight = Math.min(height, $(window).height() - borderPadding - margins - headerHeight - footerHeight); - if(height > maxHeight) { - // if height > the available height, scale down the width - let factor = Math.min(maxHeight / height, 1); - width = Math.ceil(factor * width); - } - - this._$lightboxContainer.css('height', maxHeight) - this._$modalDialog.css('width', 'auto') .css('maxWidth', width); - - this._$modal.modal('_handleUpdate'); - return this; - } - - static _jQueryInterface(config) { - config = config || {} - return this.each(() => { - let $this = $(this) - let _config = $.extend( - {}, - Lightbox.Default, - $this.data(), - typeof config === 'object' && config - ) - - new Lightbox(this, _config) - }) - } - } - - - - $.fn[NAME] = Lightbox._jQueryInterface - $.fn[NAME].Constructor = Lightbox - $.fn[NAME].noConflict = () => { - $.fn[NAME] = JQUERY_NO_CONFLICT - return Lightbox._jQueryInterface - } - - return Lightbox - -})(jQuery) - -export default Lightbox \ No newline at end of file diff --git a/bower_components/ekko-lightbox/ekko-lightbox.less b/bower_components/ekko-lightbox/ekko-lightbox.less deleted file mode 100644 index 80fac57640..0000000000 --- a/bower_components/ekko-lightbox/ekko-lightbox.less +++ /dev/null @@ -1,130 +0,0 @@ -.ekko-lightbox { - &-container { - position:relative; - > div.ekko-lightbox-item { - position:absolute; - top:0; - left:0; - bottom:0; - right:0; - width:100%; - } - } - - iframe { - width: 100%; - height: 100%; - } - - &-nav-overlay { - z-index:100; - position: absolute; - top:0; - left:0; - width:100%; - height:100%; - display: flex; - - a { - flex: 1; - display:flex; - align-items: center; - - opacity: 0; - transition: opacity 0.5s; - color:#fff; - font-size:30px; - z-index:100; - - > * { - flex-grow:1; - &:focus { - outline: none; - } - } - span { - padding:0 30px; - } - &:last-child span { - text-align: right; - } - &:hover { - text-decoration: none; - } - &:focus { - outline: none; - } - } - } - - a:hover { - opacity: 1; - text-decoration: none; - } - .modal-dialog { - display:none; - } - .modal-footer { - text-align: left; - } - - // http://tobiasahlin.com/spinkit/ - &-loader { - position:absolute; - top:0; - left:0; - bottom:0; - right:0; - width:100%; - - display: flex; /* establish flex container */ - flex-direction: column; /* make main axis vertical */ - justify-content: center; /* center items vertically, in this case */ - align-items: center; - - > div { - width: 40px; - height: 40px; - - position: relative; - text-align: center; - - > div { - width: 100%; - height: 100%; - border-radius: 50%; - background-color: #fff; - opacity: 0.6; - position: absolute; - top: 0; - left: 0; - - animation: sk-bounce 2.0s infinite ease-in-out; - &:last-child { - animation-delay: -1.0s; - } - } - } - } - - .modal-dialog &-loader { - > div > div { - background-color:#333; - } - } - - @-webkit-keyframes sk-bounce { - 0%, 100% { -webkit-transform: scale(0.0) } - 50% { -webkit-transform: scale(1.0) } - } - - @keyframes sk-bounce { - 0%, 100% { - transform: scale(0.0); - -webkit-transform: scale(0.0); - } 50% { - transform: scale(1.0); - -webkit-transform: scale(1.0); - } - } -} \ No newline at end of file diff --git a/bower_components/ekko-lightbox/package.json b/bower_components/ekko-lightbox/package.json deleted file mode 100644 index 213bd2f3b5..0000000000 --- a/bower_components/ekko-lightbox/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "ekko-lightbox", - "description": "A lightbox gallery plugin for Bootstrap based on the modal plugin", - "version": "5.0.0", - "keywords": [ - "lightbox", - "gallery", - "bootstrap", - "jquery", - "modal" - ], - "homepage": "https://github.com/ashleydw/lightbox", - "author": "ashleydw ", - "main": "dist/ekko-lightbox.min.js", - "style": "dist/ekko-lightbox.css", - "less": "ekko-lightbox.less", - "repository": { - "type": "git", - "url": "https://github.com/ashleydw/lightbox.git" - }, - "bugs": { - "url": "https://github.com/ashleydw/lightbox/issues" - }, - "license": "MIT", - "devDependencies": { - "autoprefixer": "^6.4.0", - "babel-preset-es2015": "^6.13.2", - "cssnano": "^3.7.4", - "grunt": "^0.4.5", - "grunt-babel": "^5.0.0", - "grunt-contrib-less": "^1.4.0", - "grunt-contrib-uglify": "^0.11.0", - "grunt-contrib-watch": "^0.6.1", - "grunt-postcss": "^0.8.0", - "grunt-stamp": "^0.3.0" - }, - "npmName": "ekko-lightbox", - "npmFileMap": [ - { - "basePath": "/dist/", - "files": [ - "*" - ] - } - ] -} diff --git a/bower_components/fastclick/.bower.json b/bower_components/fastclick/.bower.json deleted file mode 100644 index d20384f435..0000000000 --- a/bower_components/fastclick/.bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "fastclick", - "main": "lib/fastclick.js", - "ignore": [ - "**/.*", - "component.json", - "package.json", - "Makefile", - "tests", - "examples" - ], - "homepage": "https://github.com/ftlabs/fastclick", - "version": "1.0.6", - "_release": "1.0.6", - "_resolution": { - "type": "version", - "tag": "v1.0.6", - "commit": "2ac7258407619398005ca720596f0d36ce66a6c8" - }, - "_source": "https://github.com/ftlabs/fastclick.git", - "_target": "^1.0.6", - "_originalSource": "fastclick", - "_direct": true -} \ No newline at end of file diff --git a/bower_components/fastclick/LICENSE b/bower_components/fastclick/LICENSE deleted file mode 100644 index 459a20dbcc..0000000000 --- a/bower_components/fastclick/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2014 The Financial Times Ltd. - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. diff --git a/bower_components/fastclick/README.md b/bower_components/fastclick/README.md deleted file mode 100644 index 074895dc45..0000000000 --- a/bower_components/fastclick/README.md +++ /dev/null @@ -1,140 +0,0 @@ -# FastClick # - -FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a `click` event on mobile browsers. The aim is to make your application feel less laggy and more responsive while avoiding any interference with your current logic. - -FastClick is developed by [FT Labs](http://labs.ft.com/), part of the Financial Times. - -[Explication en français](http://maxime.sh/2013/02/supprimer-le-lag-des-clics-sur-mobile-avec-fastclick/). - -[日本語で説明](https://developer.mozilla.org/ja/docs/Mozilla/Firefox_OS/Apps/Tips_and_techniques#Make_events_immediate)。 - -## Why does the delay exist? ## - -According to [Google](https://developers.google.com/mobile/articles/fast_buttons): - -> ...mobile browsers will wait approximately 300ms from the time that you tap the button to fire the click event. The reason for this is that the browser is waiting to see if you are actually performing a double tap. - -## Compatibility ## - -The library has been deployed as part of the [FT Web App](http://app.ft.com/) and is tried and tested on the following mobile browsers: - -* Mobile Safari on iOS 3 and upwards -* Chrome on iOS 5 and upwards -* Chrome on Android (ICS) -* Opera Mobile 11.5 and upwards -* Android Browser since Android 2 -* PlayBook OS 1 and upwards - -## When it isn't needed ## - -FastClick doesn't attach any listeners on desktop browsers. - -Chrome 32+ on Android with `width=device-width` in the [viewport meta tag](https://developer.mozilla.org/en-US/docs/Mobile/Viewport_meta_tag) doesn't have a 300ms delay, therefore listeners aren't attached. - -```html - -``` - -Same goes for Chrome on Android (all versions) with `user-scalable=no` in the viewport meta tag. But be aware that `user-scalable=no` also disables pinch zooming, which may be an accessibility concern. - -For IE11+, you can use `touch-action: manipulation;` to disable double-tap-to-zoom on certain elements (like links and buttons). For IE10 use `-ms-touch-action: manipulation`. - -## Usage ## - -Include fastclick.js in your JavaScript bundle or add it to your HTML page like this: - -```html - -``` - -The script must be loaded prior to instantiating FastClick on any element of the page. - -To instantiate FastClick on the `body`, which is the recommended method of use: - -```js -if ('addEventListener' in document) { - document.addEventListener('DOMContentLoaded', function() { - FastClick.attach(document.body); - }, false); -} -``` - -Or, if you're using jQuery: - -```js -$(function() { - FastClick.attach(document.body); -}); -``` - -If you're using Browserify or another CommonJS-style module system, the `FastClick.attach` function will be returned when you call `require('fastclick')`. As a result, the easiest way to use FastClick with these loaders is as follows: - -```js -var attachFastClick = require('fastclick'); -attachFastClick(document.body); -``` - -### Minified ### - -Run `make` to build a minified version of FastClick using the Closure Compiler REST API. The minified file is saved to `build/fastclick.min.js` or you can [download a pre-minified version](http://build.origami.ft.com/bundles/js?modules=fastclick). - -Note: the pre-minified version is built using [our build service](http://origami.ft.com/docs/developer-guide/build-service/) which exposes the `FastClick` object through `Origami.fastclick` and will have the Browserify/CommonJS API (see above). - -```js -var attachFastClick = Origami.fastclick; -attachFastClick(document.body); -``` - -### AMD ### - -FastClick has AMD (Asynchronous Module Definition) support. This allows it to be lazy-loaded with an AMD loader, such as [RequireJS](http://requirejs.org/). Note that when using the AMD style require, the full `FastClick` object will be returned, _not_ `FastClick.attach` - -```js -var FastClick = require('fastclick'); -FastClick.attach(document.body, options); -``` - -### Package managers ### - -You can install FastClick using [Component](https://github.com/component/component), [npm](https://npmjs.org/package/fastclick) or [Bower](http://bower.io/). - -For Ruby, there's a third-party gem called [fastclick-rails](http://rubygems.org/gems/fastclick-rails). For .NET there's a [NuGet package](http://nuget.org/packages/FastClick). - -## Advanced ## - -### Ignore certain elements with `needsclick` ### - -Sometimes you need FastClick to ignore certain elements. You can do this easily by adding the `needsclick` class. -```html -Ignored by FastClick -``` - -#### Use case 1: non-synthetic click required #### - -Internally, FastClick uses `document.createEvent` to fire a synthetic `click` event as soon as `touchend` is fired by the browser. It then suppresses the additional `click` event created by the browser after that. In some cases, the non-synthetic `click` event created by the browser is required, as described in the [triggering focus example](http://ftlabs.github.com/fastclick/examples/focus.html). - -This is where the `needsclick` class comes in. Add the class to any element that requires a non-synthetic click. - -#### Use case 2: Twitter Bootstrap 2.2.2 dropdowns #### - -Another example of when to use the `needsclick` class is with dropdowns in Twitter Bootstrap 2.2.2. Bootstrap add its own `touchstart` listener for dropdowns, so you want to tell FastClick to ignore those. If you don't, touch devices will automatically close the dropdown as soon as it is clicked, because both FastClick and Bootstrap execute the synthetic click, one opens the dropdown, the second closes it immediately after. - -```html -Dropdown -``` - -## Examples ## - -FastClick is designed to cope with many different browser oddities. Here are some examples to illustrate this: - -* [basic use](http://ftlabs.github.com/fastclick/examples/layer.html) showing the increase in perceived responsiveness -* [triggering focus](http://ftlabs.github.com/fastclick/examples/focus.html) on an input element from a `click` handler -* [input element](http://ftlabs.github.com/fastclick/examples/input.html) which never receives clicks but gets fast focus - -## Tests ## - -There are no automated tests. The files in `tests/` are manual reduced test cases. We've had a think about how best to test these cases, but they tend to be very browser/device specific and sometimes subjective which means it's not so trivial to test. - -## Credits and collaboration ## - -FastClick is maintained by [Rowan Beentje](http://twitter.com/rowanbeentje), [Matthew Caruana Galizia](http://twitter.com/mcaruanagalizia) and [Matthew Andrews](http://twitter.com/andrewsmatt) at [FT Labs](http://labs.ft.com). All open source code released by FT Labs is licenced under the MIT licence. We welcome comments, feedback and suggestions. Please feel free to raise an issue or pull request. diff --git a/bower_components/fastclick/bower.json b/bower_components/fastclick/bower.json deleted file mode 100644 index 18e1abd47f..0000000000 --- a/bower_components/fastclick/bower.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "fastclick", - "main": "lib/fastclick.js", - "ignore": [ - "**/.*", - "component.json", - "package.json", - "Makefile", - "tests", - "examples" - ] -} diff --git a/bower_components/fastclick/lib/fastclick.js b/bower_components/fastclick/lib/fastclick.js deleted file mode 100644 index 3af4f9d6f1..0000000000 --- a/bower_components/fastclick/lib/fastclick.js +++ /dev/null @@ -1,841 +0,0 @@ -;(function () { - 'use strict'; - - /** - * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. - * - * @codingstandard ftlabs-jsv2 - * @copyright The Financial Times Limited [All Rights Reserved] - * @license MIT License (see LICENSE.txt) - */ - - /*jslint browser:true, node:true*/ - /*global define, Event, Node*/ - - - /** - * Instantiate fast-clicking listeners on the specified layer. - * - * @constructor - * @param {Element} layer The layer to listen on - * @param {Object} [options={}] The options to override the defaults - */ - function FastClick(layer, options) { - var oldOnClick; - - options = options || {}; - - /** - * Whether a click is currently being tracked. - * - * @type boolean - */ - this.trackingClick = false; - - - /** - * Timestamp for when click tracking started. - * - * @type number - */ - this.trackingClickStart = 0; - - - /** - * The element being tracked for a click. - * - * @type EventTarget - */ - this.targetElement = null; - - - /** - * X-coordinate of touch start event. - * - * @type number - */ - this.touchStartX = 0; - - - /** - * Y-coordinate of touch start event. - * - * @type number - */ - this.touchStartY = 0; - - - /** - * ID of the last touch, retrieved from Touch.identifier. - * - * @type number - */ - this.lastTouchIdentifier = 0; - - - /** - * Touchmove boundary, beyond which a click will be cancelled. - * - * @type number - */ - this.touchBoundary = options.touchBoundary || 10; - - - /** - * The FastClick layer. - * - * @type Element - */ - this.layer = layer; - - /** - * The minimum time between tap(touchstart and touchend) events - * - * @type number - */ - this.tapDelay = options.tapDelay || 200; - - /** - * The maximum time for a tap - * - * @type number - */ - this.tapTimeout = options.tapTimeout || 700; - - if (FastClick.notNeeded(layer)) { - return; - } - - // Some old versions of Android don't have Function.prototype.bind - function bind(method, context) { - return function() { return method.apply(context, arguments); }; - } - - - var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel']; - var context = this; - for (var i = 0, l = methods.length; i < l; i++) { - context[methods[i]] = bind(context[methods[i]], context); - } - - // Set up event handlers as required - if (deviceIsAndroid) { - layer.addEventListener('mouseover', this.onMouse, true); - layer.addEventListener('mousedown', this.onMouse, true); - layer.addEventListener('mouseup', this.onMouse, true); - } - - layer.addEventListener('click', this.onClick, true); - layer.addEventListener('touchstart', this.onTouchStart, false); - layer.addEventListener('touchmove', this.onTouchMove, false); - layer.addEventListener('touchend', this.onTouchEnd, false); - layer.addEventListener('touchcancel', this.onTouchCancel, false); - - // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) - // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick - // layer when they are cancelled. - if (!Event.prototype.stopImmediatePropagation) { - layer.removeEventListener = function(type, callback, capture) { - var rmv = Node.prototype.removeEventListener; - if (type === 'click') { - rmv.call(layer, type, callback.hijacked || callback, capture); - } else { - rmv.call(layer, type, callback, capture); - } - }; - - layer.addEventListener = function(type, callback, capture) { - var adv = Node.prototype.addEventListener; - if (type === 'click') { - adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { - if (!event.propagationStopped) { - callback(event); - } - }), capture); - } else { - adv.call(layer, type, callback, capture); - } - }; - } - - // If a handler is already declared in the element's onclick attribute, it will be fired before - // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and - // adding it as listener. - if (typeof layer.onclick === 'function') { - - // Android browser on at least 3.2 requires a new reference to the function in layer.onclick - // - the old one won't work if passed to addEventListener directly. - oldOnClick = layer.onclick; - layer.addEventListener('click', function(event) { - oldOnClick(event); - }, false); - layer.onclick = null; - } - } - - /** - * Windows Phone 8.1 fakes user agent string to look like Android and iPhone. - * - * @type boolean - */ - var deviceIsWindowsPhone = navigator.userAgent.indexOf("Windows Phone") >= 0; - - /** - * Android requires exceptions. - * - * @type boolean - */ - var deviceIsAndroid = navigator.userAgent.indexOf('Android') > 0 && !deviceIsWindowsPhone; - - - /** - * iOS requires exceptions. - * - * @type boolean - */ - var deviceIsIOS = /iP(ad|hone|od)/.test(navigator.userAgent) && !deviceIsWindowsPhone; - - - /** - * iOS 4 requires an exception for select elements. - * - * @type boolean - */ - var deviceIsIOS4 = deviceIsIOS && (/OS 4_\d(_\d)?/).test(navigator.userAgent); - - - /** - * iOS 6.0-7.* requires the target element to be manually derived - * - * @type boolean - */ - var deviceIsIOSWithBadTarget = deviceIsIOS && (/OS [6-7]_\d/).test(navigator.userAgent); - - /** - * BlackBerry requires exceptions. - * - * @type boolean - */ - var deviceIsBlackBerry10 = navigator.userAgent.indexOf('BB10') > 0; - - /** - * Determine whether a given element requires a native click. - * - * @param {EventTarget|Element} target Target DOM element - * @returns {boolean} Returns true if the element needs a native click - */ - FastClick.prototype.needsClick = function(target) { - switch (target.nodeName.toLowerCase()) { - - // Don't send a synthetic click to disabled inputs (issue #62) - case 'button': - case 'select': - case 'textarea': - if (target.disabled) { - return true; - } - - break; - case 'input': - - // File inputs need real clicks on iOS 6 due to a browser bug (issue #68) - if ((deviceIsIOS && target.type === 'file') || target.disabled) { - return true; - } - - break; - case 'label': - case 'iframe': // iOS8 homescreen apps can prevent events bubbling into frames - case 'video': - return true; - } - - return (/\bneedsclick\b/).test(target.className); - }; - - - /** - * Determine whether a given element requires a call to focus to simulate click into element. - * - * @param {EventTarget|Element} target Target DOM element - * @returns {boolean} Returns true if the element requires a call to focus to simulate native click. - */ - FastClick.prototype.needsFocus = function(target) { - switch (target.nodeName.toLowerCase()) { - case 'textarea': - return true; - case 'select': - return !deviceIsAndroid; - case 'input': - switch (target.type) { - case 'button': - case 'checkbox': - case 'file': - case 'image': - case 'radio': - case 'submit': - return false; - } - - // No point in attempting to focus disabled inputs - return !target.disabled && !target.readOnly; - default: - return (/\bneedsfocus\b/).test(target.className); - } - }; - - - /** - * Send a click event to the specified element. - * - * @param {EventTarget|Element} targetElement - * @param {Event} event - */ - FastClick.prototype.sendClick = function(targetElement, event) { - var clickEvent, touch; - - // On some Android devices activeElement needs to be blurred otherwise the synthetic click will have no effect (#24) - if (document.activeElement && document.activeElement !== targetElement) { - document.activeElement.blur(); - } - - touch = event.changedTouches[0]; - - // Synthesise a click event, with an extra attribute so it can be tracked - clickEvent = document.createEvent('MouseEvents'); - clickEvent.initMouseEvent(this.determineEventType(targetElement), true, true, window, 1, touch.screenX, touch.screenY, touch.clientX, touch.clientY, false, false, false, false, 0, null); - clickEvent.forwardedTouchEvent = true; - targetElement.dispatchEvent(clickEvent); - }; - - FastClick.prototype.determineEventType = function(targetElement) { - - //Issue #159: Android Chrome Select Box does not open with a synthetic click event - if (deviceIsAndroid && targetElement.tagName.toLowerCase() === 'select') { - return 'mousedown'; - } - - return 'click'; - }; - - - /** - * @param {EventTarget|Element} targetElement - */ - FastClick.prototype.focus = function(targetElement) { - var length; - - // Issue #160: on iOS 7, some input elements (e.g. date datetime month) throw a vague TypeError on setSelectionRange. These elements don't have an integer value for the selectionStart and selectionEnd properties, but unfortunately that can't be used for detection because accessing the properties also throws a TypeError. Just check the type instead. Filed as Apple bug #15122724. - if (deviceIsIOS && targetElement.setSelectionRange && targetElement.type.indexOf('date') !== 0 && targetElement.type !== 'time' && targetElement.type !== 'month') { - length = targetElement.value.length; - targetElement.setSelectionRange(length, length); - } else { - targetElement.focus(); - } - }; - - - /** - * Check whether the given target element is a child of a scrollable layer and if so, set a flag on it. - * - * @param {EventTarget|Element} targetElement - */ - FastClick.prototype.updateScrollParent = function(targetElement) { - var scrollParent, parentElement; - - scrollParent = targetElement.fastClickScrollParent; - - // Attempt to discover whether the target element is contained within a scrollable layer. Re-check if the - // target element was moved to another parent. - if (!scrollParent || !scrollParent.contains(targetElement)) { - parentElement = targetElement; - do { - if (parentElement.scrollHeight > parentElement.offsetHeight) { - scrollParent = parentElement; - targetElement.fastClickScrollParent = parentElement; - break; - } - - parentElement = parentElement.parentElement; - } while (parentElement); - } - - // Always update the scroll top tracker if possible. - if (scrollParent) { - scrollParent.fastClickLastScrollTop = scrollParent.scrollTop; - } - }; - - - /** - * @param {EventTarget} targetElement - * @returns {Element|EventTarget} - */ - FastClick.prototype.getTargetElementFromEventTarget = function(eventTarget) { - - // On some older browsers (notably Safari on iOS 4.1 - see issue #56) the event target may be a text node. - if (eventTarget.nodeType === Node.TEXT_NODE) { - return eventTarget.parentNode; - } - - return eventTarget; - }; - - - /** - * On touch start, record the position and scroll offset. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchStart = function(event) { - var targetElement, touch, selection; - - // Ignore multiple touches, otherwise pinch-to-zoom is prevented if both fingers are on the FastClick element (issue #111). - if (event.targetTouches.length > 1) { - return true; - } - - targetElement = this.getTargetElementFromEventTarget(event.target); - touch = event.targetTouches[0]; - - if (deviceIsIOS) { - - // Only trusted events will deselect text on iOS (issue #49) - selection = window.getSelection(); - if (selection.rangeCount && !selection.isCollapsed) { - return true; - } - - if (!deviceIsIOS4) { - - // Weird things happen on iOS when an alert or confirm dialog is opened from a click event callback (issue #23): - // when the user next taps anywhere else on the page, new touchstart and touchend events are dispatched - // with the same identifier as the touch event that previously triggered the click that triggered the alert. - // Sadly, there is an issue on iOS 4 that causes some normal touch events to have the same identifier as an - // immediately preceeding touch event (issue #52), so this fix is unavailable on that platform. - // Issue 120: touch.identifier is 0 when Chrome dev tools 'Emulate touch events' is set with an iOS device UA string, - // which causes all touch events to be ignored. As this block only applies to iOS, and iOS identifiers are always long, - // random integers, it's safe to to continue if the identifier is 0 here. - if (touch.identifier && touch.identifier === this.lastTouchIdentifier) { - event.preventDefault(); - return false; - } - - this.lastTouchIdentifier = touch.identifier; - - // If the target element is a child of a scrollable layer (using -webkit-overflow-scrolling: touch) and: - // 1) the user does a fling scroll on the scrollable layer - // 2) the user stops the fling scroll with another tap - // then the event.target of the last 'touchend' event will be the element that was under the user's finger - // when the fling scroll was started, causing FastClick to send a click event to that layer - unless a check - // is made to ensure that a parent layer was not scrolled before sending a synthetic click (issue #42). - this.updateScrollParent(targetElement); - } - } - - this.trackingClick = true; - this.trackingClickStart = event.timeStamp; - this.targetElement = targetElement; - - this.touchStartX = touch.pageX; - this.touchStartY = touch.pageY; - - // Prevent phantom clicks on fast double-tap (issue #36) - if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { - event.preventDefault(); - } - - return true; - }; - - - /** - * Based on a touchmove event object, check whether the touch has moved past a boundary since it started. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.touchHasMoved = function(event) { - var touch = event.changedTouches[0], boundary = this.touchBoundary; - - if (Math.abs(touch.pageX - this.touchStartX) > boundary || Math.abs(touch.pageY - this.touchStartY) > boundary) { - return true; - } - - return false; - }; - - - /** - * Update the last position. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchMove = function(event) { - if (!this.trackingClick) { - return true; - } - - // If the touch has moved, cancel the click tracking - if (this.targetElement !== this.getTargetElementFromEventTarget(event.target) || this.touchHasMoved(event)) { - this.trackingClick = false; - this.targetElement = null; - } - - return true; - }; - - - /** - * Attempt to find the labelled control for the given label element. - * - * @param {EventTarget|HTMLLabelElement} labelElement - * @returns {Element|null} - */ - FastClick.prototype.findControl = function(labelElement) { - - // Fast path for newer browsers supporting the HTML5 control attribute - if (labelElement.control !== undefined) { - return labelElement.control; - } - - // All browsers under test that support touch events also support the HTML5 htmlFor attribute - if (labelElement.htmlFor) { - return document.getElementById(labelElement.htmlFor); - } - - // If no for attribute exists, attempt to retrieve the first labellable descendant element - // the list of which is defined here: http://www.w3.org/TR/html5/forms.html#category-label - return labelElement.querySelector('button, input:not([type=hidden]), keygen, meter, output, progress, select, textarea'); - }; - - - /** - * On touch end, determine whether to send a click event at once. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onTouchEnd = function(event) { - var forElement, trackingClickStart, targetTagName, scrollParent, touch, targetElement = this.targetElement; - - if (!this.trackingClick) { - return true; - } - - // Prevent phantom clicks on fast double-tap (issue #36) - if ((event.timeStamp - this.lastClickTime) < this.tapDelay) { - this.cancelNextClick = true; - return true; - } - - if ((event.timeStamp - this.trackingClickStart) > this.tapTimeout) { - return true; - } - - // Reset to prevent wrong click cancel on input (issue #156). - this.cancelNextClick = false; - - this.lastClickTime = event.timeStamp; - - trackingClickStart = this.trackingClickStart; - this.trackingClick = false; - this.trackingClickStart = 0; - - // On some iOS devices, the targetElement supplied with the event is invalid if the layer - // is performing a transition or scroll, and has to be re-detected manually. Note that - // for this to function correctly, it must be called *after* the event target is checked! - // See issue #57; also filed as rdar://13048589 . - if (deviceIsIOSWithBadTarget) { - touch = event.changedTouches[0]; - - // In certain cases arguments of elementFromPoint can be negative, so prevent setting targetElement to null - targetElement = document.elementFromPoint(touch.pageX - window.pageXOffset, touch.pageY - window.pageYOffset) || targetElement; - targetElement.fastClickScrollParent = this.targetElement.fastClickScrollParent; - } - - targetTagName = targetElement.tagName.toLowerCase(); - if (targetTagName === 'label') { - forElement = this.findControl(targetElement); - if (forElement) { - this.focus(targetElement); - if (deviceIsAndroid) { - return false; - } - - targetElement = forElement; - } - } else if (this.needsFocus(targetElement)) { - - // Case 1: If the touch started a while ago (best guess is 100ms based on tests for issue #36) then focus will be triggered anyway. Return early and unset the target element reference so that the subsequent click will be allowed through. - // Case 2: Without this exception for input elements tapped when the document is contained in an iframe, then any inputted text won't be visible even though the value attribute is updated as the user types (issue #37). - if ((event.timeStamp - trackingClickStart) > 100 || (deviceIsIOS && window.top !== window && targetTagName === 'input')) { - this.targetElement = null; - return false; - } - - this.focus(targetElement); - this.sendClick(targetElement, event); - - // Select elements need the event to go through on iOS 4, otherwise the selector menu won't open. - // Also this breaks opening selects when VoiceOver is active on iOS6, iOS7 (and possibly others) - if (!deviceIsIOS || targetTagName !== 'select') { - this.targetElement = null; - event.preventDefault(); - } - - return false; - } - - if (deviceIsIOS && !deviceIsIOS4) { - - // Don't send a synthetic click event if the target element is contained within a parent layer that was scrolled - // and this tap is being used to stop the scrolling (usually initiated by a fling - issue #42). - scrollParent = targetElement.fastClickScrollParent; - if (scrollParent && scrollParent.fastClickLastScrollTop !== scrollParent.scrollTop) { - return true; - } - } - - // Prevent the actual click from going though - unless the target node is marked as requiring - // real clicks or if it is in the whitelist in which case only non-programmatic clicks are permitted. - if (!this.needsClick(targetElement)) { - event.preventDefault(); - this.sendClick(targetElement, event); - } - - return false; - }; - - - /** - * On touch cancel, stop tracking the click. - * - * @returns {void} - */ - FastClick.prototype.onTouchCancel = function() { - this.trackingClick = false; - this.targetElement = null; - }; - - - /** - * Determine mouse events which should be permitted. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onMouse = function(event) { - - // If a target element was never set (because a touch event was never fired) allow the event - if (!this.targetElement) { - return true; - } - - if (event.forwardedTouchEvent) { - return true; - } - - // Programmatically generated events targeting a specific element should be permitted - if (!event.cancelable) { - return true; - } - - // Derive and check the target element to see whether the mouse event needs to be permitted; - // unless explicitly enabled, prevent non-touch click events from triggering actions, - // to prevent ghost/doubleclicks. - if (!this.needsClick(this.targetElement) || this.cancelNextClick) { - - // Prevent any user-added listeners declared on FastClick element from being fired. - if (event.stopImmediatePropagation) { - event.stopImmediatePropagation(); - } else { - - // Part of the hack for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) - event.propagationStopped = true; - } - - // Cancel the event - event.stopPropagation(); - event.preventDefault(); - - return false; - } - - // If the mouse event is permitted, return true for the action to go through. - return true; - }; - - - /** - * On actual clicks, determine whether this is a touch-generated click, a click action occurring - * naturally after a delay after a touch (which needs to be cancelled to avoid duplication), or - * an actual click which should be permitted. - * - * @param {Event} event - * @returns {boolean} - */ - FastClick.prototype.onClick = function(event) { - var permitted; - - // It's possible for another FastClick-like library delivered with third-party code to fire a click event before FastClick does (issue #44). In that case, set the click-tracking flag back to false and return early. This will cause onTouchEnd to return early. - if (this.trackingClick) { - this.targetElement = null; - this.trackingClick = false; - return true; - } - - // Very odd behaviour on iOS (issue #18): if a submit element is present inside a form and the user hits enter in the iOS simulator or clicks the Go button on the pop-up OS keyboard the a kind of 'fake' click event will be triggered with the submit-type input element as the target. - if (event.target.type === 'submit' && event.detail === 0) { - return true; - } - - permitted = this.onMouse(event); - - // Only unset targetElement if the click is not permitted. This will ensure that the check for !targetElement in onMouse fails and the browser's click doesn't go through. - if (!permitted) { - this.targetElement = null; - } - - // If clicks are permitted, return true for the action to go through. - return permitted; - }; - - - /** - * Remove all FastClick's event listeners. - * - * @returns {void} - */ - FastClick.prototype.destroy = function() { - var layer = this.layer; - - if (deviceIsAndroid) { - layer.removeEventListener('mouseover', this.onMouse, true); - layer.removeEventListener('mousedown', this.onMouse, true); - layer.removeEventListener('mouseup', this.onMouse, true); - } - - layer.removeEventListener('click', this.onClick, true); - layer.removeEventListener('touchstart', this.onTouchStart, false); - layer.removeEventListener('touchmove', this.onTouchMove, false); - layer.removeEventListener('touchend', this.onTouchEnd, false); - layer.removeEventListener('touchcancel', this.onTouchCancel, false); - }; - - - /** - * Check whether FastClick is needed. - * - * @param {Element} layer The layer to listen on - */ - FastClick.notNeeded = function(layer) { - var metaViewport; - var chromeVersion; - var blackberryVersion; - var firefoxVersion; - - // Devices that don't support touch don't need FastClick - if (typeof window.ontouchstart === 'undefined') { - return true; - } - - // Chrome version - zero for other browsers - chromeVersion = +(/Chrome\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; - - if (chromeVersion) { - - if (deviceIsAndroid) { - metaViewport = document.querySelector('meta[name=viewport]'); - - if (metaViewport) { - // Chrome on Android with user-scalable="no" doesn't need FastClick (issue #89) - if (metaViewport.content.indexOf('user-scalable=no') !== -1) { - return true; - } - // Chrome 32 and above with width=device-width or less don't need FastClick - if (chromeVersion > 31 && document.documentElement.scrollWidth <= window.outerWidth) { - return true; - } - } - - // Chrome desktop doesn't need FastClick (issue #15) - } else { - return true; - } - } - - if (deviceIsBlackBerry10) { - blackberryVersion = navigator.userAgent.match(/Version\/([0-9]*)\.([0-9]*)/); - - // BlackBerry 10.3+ does not require Fastclick library. - // https://github.com/ftlabs/fastclick/issues/251 - if (blackberryVersion[1] >= 10 && blackberryVersion[2] >= 3) { - metaViewport = document.querySelector('meta[name=viewport]'); - - if (metaViewport) { - // user-scalable=no eliminates click delay. - if (metaViewport.content.indexOf('user-scalable=no') !== -1) { - return true; - } - // width=device-width (or less than device-width) eliminates click delay. - if (document.documentElement.scrollWidth <= window.outerWidth) { - return true; - } - } - } - } - - // IE10 with -ms-touch-action: none or manipulation, which disables double-tap-to-zoom (issue #97) - if (layer.style.msTouchAction === 'none' || layer.style.touchAction === 'manipulation') { - return true; - } - - // Firefox version - zero for other browsers - firefoxVersion = +(/Firefox\/([0-9]+)/.exec(navigator.userAgent) || [,0])[1]; - - if (firefoxVersion >= 27) { - // Firefox 27+ does not have tap delay if the content is not zoomable - https://bugzilla.mozilla.org/show_bug.cgi?id=922896 - - metaViewport = document.querySelector('meta[name=viewport]'); - if (metaViewport && (metaViewport.content.indexOf('user-scalable=no') !== -1 || document.documentElement.scrollWidth <= window.outerWidth)) { - return true; - } - } - - // IE11: prefixed -ms-touch-action is no longer supported and it's recomended to use non-prefixed version - // http://msdn.microsoft.com/en-us/library/windows/apps/Hh767313.aspx - if (layer.style.touchAction === 'none' || layer.style.touchAction === 'manipulation') { - return true; - } - - return false; - }; - - - /** - * Factory method for creating a FastClick object - * - * @param {Element} layer The layer to listen on - * @param {Object} [options={}] The options to override the defaults - */ - FastClick.attach = function(layer, options) { - return new FastClick(layer, options); - }; - - - if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) { - - // AMD. Register as an anonymous module. - define(function() { - return FastClick; - }); - } else if (typeof module !== 'undefined' && module.exports) { - module.exports = FastClick.attach; - module.exports.FastClick = FastClick; - } else { - window.FastClick = FastClick; - } -}()); diff --git a/bower_components/font-awesome/.bower.json b/bower_components/font-awesome/.bower.json deleted file mode 100644 index 14de73d6af..0000000000 --- a/bower_components/font-awesome/.bower.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "font-awesome", - "description": "Font Awesome", - "keywords": [], - "homepage": "http://fontawesome.io", - "dependencies": {}, - "devDependencies": {}, - "license": [ - "OFL-1.1", - "MIT", - "CC-BY-3.0" - ], - "main": [ - "less/font-awesome.less", - "scss/font-awesome.scss" - ], - "ignore": [ - "*/.*", - "*.json", - "src", - "*.yml", - "Gemfile", - "Gemfile.lock", - "*.md" - ], - "version": "4.7.0", - "_release": "4.7.0", - "_resolution": { - "type": "version", - "tag": "v4.7.0", - "commit": "a3fe90fa5f6fac55d197f9cbd18e3f57dafb716c" - }, - "_source": "https://github.com/FortAwesome/Font-Awesome.git", - "_target": "^4.7.0", - "_originalSource": "fontawesome", - "_direct": true -} \ No newline at end of file diff --git a/bower_components/font-awesome/.gitignore b/bower_components/font-awesome/.gitignore deleted file mode 100644 index 39c4f20b70..0000000000 --- a/bower_components/font-awesome/.gitignore +++ /dev/null @@ -1,33 +0,0 @@ -*.pyc -*.egg-info -*.db -*.db.old -*.swp -*.db-journal - -.coverage -.DS_Store -.installed.cfg -_gh_pages/* - -.idea/* -.svn/* -src/website/static/* -src/website/media/* - -bin -cfcache -develop-eggs -dist -downloads -eggs -parts -tmp -.sass-cache -node_modules - -src/website/settingslocal.py -stunnel.log - -.ruby-version -.bundle diff --git a/bower_components/font-awesome/.npmignore b/bower_components/font-awesome/.npmignore deleted file mode 100644 index 54a691f815..0000000000 --- a/bower_components/font-awesome/.npmignore +++ /dev/null @@ -1,42 +0,0 @@ -*.pyc -*.egg-info -*.db -*.db.old -*.swp -*.db-journal - -.coverage -.DS_Store -.installed.cfg -_gh_pages/* - -.idea/* -.svn/* -src/website/static/* -src/website/media/* - -bin -cfcache -develop-eggs -dist -downloads -eggs -parts -tmp -.sass-cache -node_modules - -src/website/settingslocal.py -stunnel.log - -.ruby-version - -# don't need these in the npm package. -src/ -_config.yml -bower.json -component.json -composer.json -CONTRIBUTING.md -Gemfile -Gemfile.lock diff --git a/bower_components/font-awesome/HELP-US-OUT.txt b/bower_components/font-awesome/HELP-US-OUT.txt deleted file mode 100644 index 83d083dd77..0000000000 --- a/bower_components/font-awesome/HELP-US-OUT.txt +++ /dev/null @@ -1,7 +0,0 @@ -I hope you love Font Awesome. If you've found it useful, please do me a favor and check out my latest project, -Fort Awesome (https://fortawesome.com). It makes it easy to put the perfect icons on your website. Choose from our awesome, -comprehensive icon sets or copy and paste your own. - -Please. Check it out. - --Dave Gandy diff --git a/bower_components/font-awesome/bower.json b/bower_components/font-awesome/bower.json deleted file mode 100644 index 9e2112659b..0000000000 --- a/bower_components/font-awesome/bower.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "font-awesome", - "description": "Font Awesome", - "keywords": [], - "homepage": "http://fontawesome.io", - "dependencies": {}, - "devDependencies": {}, - "license": ["OFL-1.1", "MIT", "CC-BY-3.0"], - "main": [ - "less/font-awesome.less", - "scss/font-awesome.scss" - ], - "ignore": [ - "*/.*", - "*.json", - "src", - "*.yml", - "Gemfile", - "Gemfile.lock", - "*.md" - ] -} diff --git a/bower_components/font-awesome/css/font-awesome.css b/bower_components/font-awesome/css/font-awesome.css deleted file mode 100644 index cc3bbfc042..0000000000 --- a/bower_components/font-awesome/css/font-awesome.css +++ /dev/null @@ -1,2337 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ -/* FONT PATH - * -------------------------- */ -@font-face { - font-family: 'FontAwesome'; - src: url('../../assets/fonts/fontawesome-webfont.eot?v=4.7.0'); - src: url('../../assets/fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../../assets/fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../../assets/fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../../assets/fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../../assets/fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg'); - font-weight: normal; - font-style: normal; -} -.fa { - display: inline-block; - font: normal normal normal 14px/1 FontAwesome; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} -/* makes the font 33% larger relative to the icon container */ -.fa-lg { - font-size: 1.33333333em; - line-height: 0.75em; - vertical-align: -15%; -} -.fa-2x { - font-size: 2em; -} -.fa-3x { - font-size: 3em; -} -.fa-4x { - font-size: 4em; -} -.fa-5x { - font-size: 5em; -} -.fa-fw { - width: 1.28571429em; - text-align: center; -} -.fa-ul { - padding-left: 0; - margin-left: 2.14285714em; - list-style-type: none; -} -.fa-ul > li { - position: relative; -} -.fa-li { - position: absolute; - left: -2.14285714em; - width: 2.14285714em; - top: 0.14285714em; - text-align: center; -} -.fa-li.fa-lg { - left: -1.85714286em; -} -.fa-border { - padding: .2em .25em .15em; - border: solid 0.08em #eeeeee; - border-radius: .1em; -} -.fa-pull-left { - float: left; -} -.fa-pull-right { - float: right; -} -.fa.fa-pull-left { - margin-right: .3em; -} -.fa.fa-pull-right { - margin-left: .3em; -} -/* Deprecated as of 4.4.0 */ -.pull-right { - float: right; -} -.pull-left { - float: left; -} -.fa.pull-left { - margin-right: .3em; -} -.fa.pull-right { - margin-left: .3em; -} -.fa-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} -.fa-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} -.fa-rotate-90 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; - -webkit-transform: rotate(90deg); - -ms-transform: rotate(90deg); - transform: rotate(90deg); -} -.fa-rotate-180 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; - -webkit-transform: rotate(180deg); - -ms-transform: rotate(180deg); - transform: rotate(180deg); -} -.fa-rotate-270 { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; - -webkit-transform: rotate(270deg); - -ms-transform: rotate(270deg); - transform: rotate(270deg); -} -.fa-flip-horizontal { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; - -webkit-transform: scale(-1, 1); - -ms-transform: scale(-1, 1); - transform: scale(-1, 1); -} -.fa-flip-vertical { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; - -webkit-transform: scale(1, -1); - -ms-transform: scale(1, -1); - transform: scale(1, -1); -} -:root .fa-rotate-90, -:root .fa-rotate-180, -:root .fa-rotate-270, -:root .fa-flip-horizontal, -:root .fa-flip-vertical { - filter: none; -} -.fa-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.fa-stack-1x, -.fa-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.fa-stack-1x { - line-height: inherit; -} -.fa-stack-2x { - font-size: 2em; -} -.fa-inverse { - color: #ffffff; -} -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ -.fa-glass:before { - content: "\f000"; -} -.fa-music:before { - content: "\f001"; -} -.fa-search:before { - content: "\f002"; -} -.fa-envelope-o:before { - content: "\f003"; -} -.fa-heart:before { - content: "\f004"; -} -.fa-star:before { - content: "\f005"; -} -.fa-star-o:before { - content: "\f006"; -} -.fa-user:before { - content: "\f007"; -} -.fa-film:before { - content: "\f008"; -} -.fa-th-large:before { - content: "\f009"; -} -.fa-th:before { - content: "\f00a"; -} -.fa-th-list:before { - content: "\f00b"; -} -.fa-check:before { - content: "\f00c"; -} -.fa-remove:before, -.fa-close:before, -.fa-times:before { - content: "\f00d"; -} -.fa-search-plus:before { - content: "\f00e"; -} -.fa-search-minus:before { - content: "\f010"; -} -.fa-power-off:before { - content: "\f011"; -} -.fa-signal:before { - content: "\f012"; -} -.fa-gear:before, -.fa-cog:before { - content: "\f013"; -} -.fa-trash-o:before { - content: "\f014"; -} -.fa-home:before { - content: "\f015"; -} -.fa-file-o:before { - content: "\f016"; -} -.fa-clock-o:before { - content: "\f017"; -} -.fa-road:before { - content: "\f018"; -} -.fa-download:before { - content: "\f019"; -} -.fa-arrow-circle-o-down:before { - content: "\f01a"; -} -.fa-arrow-circle-o-up:before { - content: "\f01b"; -} -.fa-inbox:before { - content: "\f01c"; -} -.fa-play-circle-o:before { - content: "\f01d"; -} -.fa-rotate-right:before, -.fa-repeat:before { - content: "\f01e"; -} -.fa-refresh:before { - content: "\f021"; -} -.fa-list-alt:before { - content: "\f022"; -} -.fa-lock:before { - content: "\f023"; -} -.fa-flag:before { - content: "\f024"; -} -.fa-headphones:before { - content: "\f025"; -} -.fa-volume-off:before { - content: "\f026"; -} -.fa-volume-down:before { - content: "\f027"; -} -.fa-volume-up:before { - content: "\f028"; -} -.fa-qrcode:before { - content: "\f029"; -} -.fa-barcode:before { - content: "\f02a"; -} -.fa-tag:before { - content: "\f02b"; -} -.fa-tags:before { - content: "\f02c"; -} -.fa-book:before { - content: "\f02d"; -} -.fa-bookmark:before { - content: "\f02e"; -} -.fa-print:before { - content: "\f02f"; -} -.fa-camera:before { - content: "\f030"; -} -.fa-font:before { - content: "\f031"; -} -.fa-bold:before { - content: "\f032"; -} -.fa-italic:before { - content: "\f033"; -} -.fa-text-height:before { - content: "\f034"; -} -.fa-text-width:before { - content: "\f035"; -} -.fa-align-left:before { - content: "\f036"; -} -.fa-align-center:before { - content: "\f037"; -} -.fa-align-right:before { - content: "\f038"; -} -.fa-align-justify:before { - content: "\f039"; -} -.fa-list:before { - content: "\f03a"; -} -.fa-dedent:before, -.fa-outdent:before { - content: "\f03b"; -} -.fa-indent:before { - content: "\f03c"; -} -.fa-video-camera:before { - content: "\f03d"; -} -.fa-photo:before, -.fa-image:before, -.fa-picture-o:before { - content: "\f03e"; -} -.fa-pencil:before { - content: "\f040"; -} -.fa-map-marker:before { - content: "\f041"; -} -.fa-adjust:before { - content: "\f042"; -} -.fa-tint:before { - content: "\f043"; -} -.fa-edit:before, -.fa-pencil-square-o:before { - content: "\f044"; -} -.fa-share-square-o:before { - content: "\f045"; -} -.fa-check-square-o:before { - content: "\f046"; -} -.fa-arrows:before { - content: "\f047"; -} -.fa-step-backward:before { - content: "\f048"; -} -.fa-fast-backward:before { - content: "\f049"; -} -.fa-backward:before { - content: "\f04a"; -} -.fa-play:before { - content: "\f04b"; -} -.fa-pause:before { - content: "\f04c"; -} -.fa-stop:before { - content: "\f04d"; -} -.fa-forward:before { - content: "\f04e"; -} -.fa-fast-forward:before { - content: "\f050"; -} -.fa-step-forward:before { - content: "\f051"; -} -.fa-eject:before { - content: "\f052"; -} -.fa-chevron-left:before { - content: "\f053"; -} -.fa-chevron-right:before { - content: "\f054"; -} -.fa-plus-circle:before { - content: "\f055"; -} -.fa-minus-circle:before { - content: "\f056"; -} -.fa-times-circle:before { - content: "\f057"; -} -.fa-check-circle:before { - content: "\f058"; -} -.fa-question-circle:before { - content: "\f059"; -} -.fa-info-circle:before { - content: "\f05a"; -} -.fa-crosshairs:before { - content: "\f05b"; -} -.fa-times-circle-o:before { - content: "\f05c"; -} -.fa-check-circle-o:before { - content: "\f05d"; -} -.fa-ban:before { - content: "\f05e"; -} -.fa-arrow-left:before { - content: "\f060"; -} -.fa-arrow-right:before { - content: "\f061"; -} -.fa-arrow-up:before { - content: "\f062"; -} -.fa-arrow-down:before { - content: "\f063"; -} -.fa-mail-forward:before, -.fa-share:before { - content: "\f064"; -} -.fa-expand:before { - content: "\f065"; -} -.fa-compress:before { - content: "\f066"; -} -.fa-plus:before { - content: "\f067"; -} -.fa-minus:before { - content: "\f068"; -} -.fa-asterisk:before { - content: "\f069"; -} -.fa-exclamation-circle:before { - content: "\f06a"; -} -.fa-gift:before { - content: "\f06b"; -} -.fa-leaf:before { - content: "\f06c"; -} -.fa-fire:before { - content: "\f06d"; -} -.fa-eye:before { - content: "\f06e"; -} -.fa-eye-slash:before { - content: "\f070"; -} -.fa-warning:before, -.fa-exclamation-triangle:before { - content: "\f071"; -} -.fa-plane:before { - content: "\f072"; -} -.fa-calendar:before { - content: "\f073"; -} -.fa-random:before { - content: "\f074"; -} -.fa-comment:before { - content: "\f075"; -} -.fa-magnet:before { - content: "\f076"; -} -.fa-chevron-up:before { - content: "\f077"; -} -.fa-chevron-down:before { - content: "\f078"; -} -.fa-retweet:before { - content: "\f079"; -} -.fa-shopping-cart:before { - content: "\f07a"; -} -.fa-folder:before { - content: "\f07b"; -} -.fa-folder-open:before { - content: "\f07c"; -} -.fa-arrows-v:before { - content: "\f07d"; -} -.fa-arrows-h:before { - content: "\f07e"; -} -.fa-bar-chart-o:before, -.fa-bar-chart:before { - content: "\f080"; -} -.fa-twitter-square:before { - content: "\f081"; -} -.fa-facebook-square:before { - content: "\f082"; -} -.fa-camera-retro:before { - content: "\f083"; -} -.fa-key:before { - content: "\f084"; -} -.fa-gears:before, -.fa-cogs:before { - content: "\f085"; -} -.fa-comments:before { - content: "\f086"; -} -.fa-thumbs-o-up:before { - content: "\f087"; -} -.fa-thumbs-o-down:before { - content: "\f088"; -} -.fa-star-half:before { - content: "\f089"; -} -.fa-heart-o:before { - content: "\f08a"; -} -.fa-sign-out:before { - content: "\f08b"; -} -.fa-linkedin-square:before { - content: "\f08c"; -} -.fa-thumb-tack:before { - content: "\f08d"; -} -.fa-external-link:before { - content: "\f08e"; -} -.fa-sign-in:before { - content: "\f090"; -} -.fa-trophy:before { - content: "\f091"; -} -.fa-github-square:before { - content: "\f092"; -} -.fa-upload:before { - content: "\f093"; -} -.fa-lemon-o:before { - content: "\f094"; -} -.fa-phone:before { - content: "\f095"; -} -.fa-square-o:before { - content: "\f096"; -} -.fa-bookmark-o:before { - content: "\f097"; -} -.fa-phone-square:before { - content: "\f098"; -} -.fa-twitter:before { - content: "\f099"; -} -.fa-facebook-f:before, -.fa-facebook:before { - content: "\f09a"; -} -.fa-github:before { - content: "\f09b"; -} -.fa-unlock:before { - content: "\f09c"; -} -.fa-credit-card:before { - content: "\f09d"; -} -.fa-feed:before, -.fa-rss:before { - content: "\f09e"; -} -.fa-hdd-o:before { - content: "\f0a0"; -} -.fa-bullhorn:before { - content: "\f0a1"; -} -.fa-bell:before { - content: "\f0f3"; -} -.fa-certificate:before { - content: "\f0a3"; -} -.fa-hand-o-right:before { - content: "\f0a4"; -} -.fa-hand-o-left:before { - content: "\f0a5"; -} -.fa-hand-o-up:before { - content: "\f0a6"; -} -.fa-hand-o-down:before { - content: "\f0a7"; -} -.fa-arrow-circle-left:before { - content: "\f0a8"; -} -.fa-arrow-circle-right:before { - content: "\f0a9"; -} -.fa-arrow-circle-up:before { - content: "\f0aa"; -} -.fa-arrow-circle-down:before { - content: "\f0ab"; -} -.fa-globe:before { - content: "\f0ac"; -} -.fa-wrench:before { - content: "\f0ad"; -} -.fa-tasks:before { - content: "\f0ae"; -} -.fa-filter:before { - content: "\f0b0"; -} -.fa-briefcase:before { - content: "\f0b1"; -} -.fa-arrows-alt:before { - content: "\f0b2"; -} -.fa-group:before, -.fa-users:before { - content: "\f0c0"; -} -.fa-chain:before, -.fa-link:before { - content: "\f0c1"; -} -.fa-cloud:before { - content: "\f0c2"; -} -.fa-flask:before { - content: "\f0c3"; -} -.fa-cut:before, -.fa-scissors:before { - content: "\f0c4"; -} -.fa-copy:before, -.fa-files-o:before { - content: "\f0c5"; -} -.fa-paperclip:before { - content: "\f0c6"; -} -.fa-save:before, -.fa-floppy-o:before { - content: "\f0c7"; -} -.fa-square:before { - content: "\f0c8"; -} -.fa-navicon:before, -.fa-reorder:before, -.fa-bars:before { - content: "\f0c9"; -} -.fa-list-ul:before { - content: "\f0ca"; -} -.fa-list-ol:before { - content: "\f0cb"; -} -.fa-strikethrough:before { - content: "\f0cc"; -} -.fa-underline:before { - content: "\f0cd"; -} -.fa-table:before { - content: "\f0ce"; -} -.fa-magic:before { - content: "\f0d0"; -} -.fa-truck:before { - content: "\f0d1"; -} -.fa-pinterest:before { - content: "\f0d2"; -} -.fa-pinterest-square:before { - content: "\f0d3"; -} -.fa-google-plus-square:before { - content: "\f0d4"; -} -.fa-google-plus:before { - content: "\f0d5"; -} -.fa-money:before { - content: "\f0d6"; -} -.fa-caret-down:before { - content: "\f0d7"; -} -.fa-caret-up:before { - content: "\f0d8"; -} -.fa-caret-left:before { - content: "\f0d9"; -} -.fa-caret-right:before { - content: "\f0da"; -} -.fa-columns:before { - content: "\f0db"; -} -.fa-unsorted:before, -.fa-sort:before { - content: "\f0dc"; -} -.fa-sort-down:before, -.fa-sort-desc:before { - content: "\f0dd"; -} -.fa-sort-up:before, -.fa-sort-asc:before { - content: "\f0de"; -} -.fa-envelope:before { - content: "\f0e0"; -} -.fa-linkedin:before { - content: "\f0e1"; -} -.fa-rotate-left:before, -.fa-undo:before { - content: "\f0e2"; -} -.fa-legal:before, -.fa-gavel:before { - content: "\f0e3"; -} -.fa-dashboard:before, -.fa-tachometer:before { - content: "\f0e4"; -} -.fa-comment-o:before { - content: "\f0e5"; -} -.fa-comments-o:before { - content: "\f0e6"; -} -.fa-flash:before, -.fa-bolt:before { - content: "\f0e7"; -} -.fa-sitemap:before { - content: "\f0e8"; -} -.fa-umbrella:before { - content: "\f0e9"; -} -.fa-paste:before, -.fa-clipboard:before { - content: "\f0ea"; -} -.fa-lightbulb-o:before { - content: "\f0eb"; -} -.fa-exchange:before { - content: "\f0ec"; -} -.fa-cloud-download:before { - content: "\f0ed"; -} -.fa-cloud-upload:before { - content: "\f0ee"; -} -.fa-user-md:before { - content: "\f0f0"; -} -.fa-stethoscope:before { - content: "\f0f1"; -} -.fa-suitcase:before { - content: "\f0f2"; -} -.fa-bell-o:before { - content: "\f0a2"; -} -.fa-coffee:before { - content: "\f0f4"; -} -.fa-cutlery:before { - content: "\f0f5"; -} -.fa-file-text-o:before { - content: "\f0f6"; -} -.fa-building-o:before { - content: "\f0f7"; -} -.fa-hospital-o:before { - content: "\f0f8"; -} -.fa-ambulance:before { - content: "\f0f9"; -} -.fa-medkit:before { - content: "\f0fa"; -} -.fa-fighter-jet:before { - content: "\f0fb"; -} -.fa-beer:before { - content: "\f0fc"; -} -.fa-h-square:before { - content: "\f0fd"; -} -.fa-plus-square:before { - content: "\f0fe"; -} -.fa-angle-double-left:before { - content: "\f100"; -} -.fa-angle-double-right:before { - content: "\f101"; -} -.fa-angle-double-up:before { - content: "\f102"; -} -.fa-angle-double-down:before { - content: "\f103"; -} -.fa-angle-left:before { - content: "\f104"; -} -.fa-angle-right:before { - content: "\f105"; -} -.fa-angle-up:before { - content: "\f106"; -} -.fa-angle-down:before { - content: "\f107"; -} -.fa-desktop:before { - content: "\f108"; -} -.fa-laptop:before { - content: "\f109"; -} -.fa-tablet:before { - content: "\f10a"; -} -.fa-mobile-phone:before, -.fa-mobile:before { - content: "\f10b"; -} -.fa-circle-o:before { - content: "\f10c"; -} -.fa-quote-left:before { - content: "\f10d"; -} -.fa-quote-right:before { - content: "\f10e"; -} -.fa-spinner:before { - content: "\f110"; -} -.fa-circle:before { - content: "\f111"; -} -.fa-mail-reply:before, -.fa-reply:before { - content: "\f112"; -} -.fa-github-alt:before { - content: "\f113"; -} -.fa-folder-o:before { - content: "\f114"; -} -.fa-folder-open-o:before { - content: "\f115"; -} -.fa-smile-o:before { - content: "\f118"; -} -.fa-frown-o:before { - content: "\f119"; -} -.fa-meh-o:before { - content: "\f11a"; -} -.fa-gamepad:before { - content: "\f11b"; -} -.fa-keyboard-o:before { - content: "\f11c"; -} -.fa-flag-o:before { - content: "\f11d"; -} -.fa-flag-checkered:before { - content: "\f11e"; -} -.fa-terminal:before { - content: "\f120"; -} -.fa-code:before { - content: "\f121"; -} -.fa-mail-reply-all:before, -.fa-reply-all:before { - content: "\f122"; -} -.fa-star-half-empty:before, -.fa-star-half-full:before, -.fa-star-half-o:before { - content: "\f123"; -} -.fa-location-arrow:before { - content: "\f124"; -} -.fa-crop:before { - content: "\f125"; -} -.fa-code-fork:before { - content: "\f126"; -} -.fa-unlink:before, -.fa-chain-broken:before { - content: "\f127"; -} -.fa-question:before { - content: "\f128"; -} -.fa-info:before { - content: "\f129"; -} -.fa-exclamation:before { - content: "\f12a"; -} -.fa-superscript:before { - content: "\f12b"; -} -.fa-subscript:before { - content: "\f12c"; -} -.fa-eraser:before { - content: "\f12d"; -} -.fa-puzzle-piece:before { - content: "\f12e"; -} -.fa-microphone:before { - content: "\f130"; -} -.fa-microphone-slash:before { - content: "\f131"; -} -.fa-shield:before { - content: "\f132"; -} -.fa-calendar-o:before { - content: "\f133"; -} -.fa-fire-extinguisher:before { - content: "\f134"; -} -.fa-rocket:before { - content: "\f135"; -} -.fa-maxcdn:before { - content: "\f136"; -} -.fa-chevron-circle-left:before { - content: "\f137"; -} -.fa-chevron-circle-right:before { - content: "\f138"; -} -.fa-chevron-circle-up:before { - content: "\f139"; -} -.fa-chevron-circle-down:before { - content: "\f13a"; -} -.fa-html5:before { - content: "\f13b"; -} -.fa-css3:before { - content: "\f13c"; -} -.fa-anchor:before { - content: "\f13d"; -} -.fa-unlock-alt:before { - content: "\f13e"; -} -.fa-bullseye:before { - content: "\f140"; -} -.fa-ellipsis-h:before { - content: "\f141"; -} -.fa-ellipsis-v:before { - content: "\f142"; -} -.fa-rss-square:before { - content: "\f143"; -} -.fa-play-circle:before { - content: "\f144"; -} -.fa-ticket:before { - content: "\f145"; -} -.fa-minus-square:before { - content: "\f146"; -} -.fa-minus-square-o:before { - content: "\f147"; -} -.fa-level-up:before { - content: "\f148"; -} -.fa-level-down:before { - content: "\f149"; -} -.fa-check-square:before { - content: "\f14a"; -} -.fa-pencil-square:before { - content: "\f14b"; -} -.fa-external-link-square:before { - content: "\f14c"; -} -.fa-share-square:before { - content: "\f14d"; -} -.fa-compass:before { - content: "\f14e"; -} -.fa-toggle-down:before, -.fa-caret-square-o-down:before { - content: "\f150"; -} -.fa-toggle-up:before, -.fa-caret-square-o-up:before { - content: "\f151"; -} -.fa-toggle-right:before, -.fa-caret-square-o-right:before { - content: "\f152"; -} -.fa-euro:before, -.fa-eur:before { - content: "\f153"; -} -.fa-gbp:before { - content: "\f154"; -} -.fa-dollar:before, -.fa-usd:before { - content: "\f155"; -} -.fa-rupee:before, -.fa-inr:before { - content: "\f156"; -} -.fa-cny:before, -.fa-rmb:before, -.fa-yen:before, -.fa-jpy:before { - content: "\f157"; -} -.fa-ruble:before, -.fa-rouble:before, -.fa-rub:before { - content: "\f158"; -} -.fa-won:before, -.fa-krw:before { - content: "\f159"; -} -.fa-bitcoin:before, -.fa-btc:before { - content: "\f15a"; -} -.fa-file:before { - content: "\f15b"; -} -.fa-file-text:before { - content: "\f15c"; -} -.fa-sort-alpha-asc:before { - content: "\f15d"; -} -.fa-sort-alpha-desc:before { - content: "\f15e"; -} -.fa-sort-amount-asc:before { - content: "\f160"; -} -.fa-sort-amount-desc:before { - content: "\f161"; -} -.fa-sort-numeric-asc:before { - content: "\f162"; -} -.fa-sort-numeric-desc:before { - content: "\f163"; -} -.fa-thumbs-up:before { - content: "\f164"; -} -.fa-thumbs-down:before { - content: "\f165"; -} -.fa-youtube-square:before { - content: "\f166"; -} -.fa-youtube:before { - content: "\f167"; -} -.fa-xing:before { - content: "\f168"; -} -.fa-xing-square:before { - content: "\f169"; -} -.fa-youtube-play:before { - content: "\f16a"; -} -.fa-dropbox:before { - content: "\f16b"; -} -.fa-stack-overflow:before { - content: "\f16c"; -} -.fa-instagram:before { - content: "\f16d"; -} -.fa-flickr:before { - content: "\f16e"; -} -.fa-adn:before { - content: "\f170"; -} -.fa-bitbucket:before { - content: "\f171"; -} -.fa-bitbucket-square:before { - content: "\f172"; -} -.fa-tumblr:before { - content: "\f173"; -} -.fa-tumblr-square:before { - content: "\f174"; -} -.fa-long-arrow-down:before { - content: "\f175"; -} -.fa-long-arrow-up:before { - content: "\f176"; -} -.fa-long-arrow-left:before { - content: "\f177"; -} -.fa-long-arrow-right:before { - content: "\f178"; -} -.fa-apple:before { - content: "\f179"; -} -.fa-windows:before { - content: "\f17a"; -} -.fa-android:before { - content: "\f17b"; -} -.fa-linux:before { - content: "\f17c"; -} -.fa-dribbble:before { - content: "\f17d"; -} -.fa-skype:before { - content: "\f17e"; -} -.fa-foursquare:before { - content: "\f180"; -} -.fa-trello:before { - content: "\f181"; -} -.fa-female:before { - content: "\f182"; -} -.fa-male:before { - content: "\f183"; -} -.fa-gittip:before, -.fa-gratipay:before { - content: "\f184"; -} -.fa-sun-o:before { - content: "\f185"; -} -.fa-moon-o:before { - content: "\f186"; -} -.fa-archive:before { - content: "\f187"; -} -.fa-bug:before { - content: "\f188"; -} -.fa-vk:before { - content: "\f189"; -} -.fa-weibo:before { - content: "\f18a"; -} -.fa-renren:before { - content: "\f18b"; -} -.fa-pagelines:before { - content: "\f18c"; -} -.fa-stack-exchange:before { - content: "\f18d"; -} -.fa-arrow-circle-o-right:before { - content: "\f18e"; -} -.fa-arrow-circle-o-left:before { - content: "\f190"; -} -.fa-toggle-left:before, -.fa-caret-square-o-left:before { - content: "\f191"; -} -.fa-dot-circle-o:before { - content: "\f192"; -} -.fa-wheelchair:before { - content: "\f193"; -} -.fa-vimeo-square:before { - content: "\f194"; -} -.fa-turkish-lira:before, -.fa-try:before { - content: "\f195"; -} -.fa-plus-square-o:before { - content: "\f196"; -} -.fa-space-shuttle:before { - content: "\f197"; -} -.fa-slack:before { - content: "\f198"; -} -.fa-envelope-square:before { - content: "\f199"; -} -.fa-wordpress:before { - content: "\f19a"; -} -.fa-openid:before { - content: "\f19b"; -} -.fa-institution:before, -.fa-bank:before, -.fa-university:before { - content: "\f19c"; -} -.fa-mortar-board:before, -.fa-graduation-cap:before { - content: "\f19d"; -} -.fa-yahoo:before { - content: "\f19e"; -} -.fa-google:before { - content: "\f1a0"; -} -.fa-reddit:before { - content: "\f1a1"; -} -.fa-reddit-square:before { - content: "\f1a2"; -} -.fa-stumbleupon-circle:before { - content: "\f1a3"; -} -.fa-stumbleupon:before { - content: "\f1a4"; -} -.fa-delicious:before { - content: "\f1a5"; -} -.fa-digg:before { - content: "\f1a6"; -} -.fa-pied-piper-pp:before { - content: "\f1a7"; -} -.fa-pied-piper-alt:before { - content: "\f1a8"; -} -.fa-drupal:before { - content: "\f1a9"; -} -.fa-joomla:before { - content: "\f1aa"; -} -.fa-language:before { - content: "\f1ab"; -} -.fa-fax:before { - content: "\f1ac"; -} -.fa-building:before { - content: "\f1ad"; -} -.fa-child:before { - content: "\f1ae"; -} -.fa-paw:before { - content: "\f1b0"; -} -.fa-spoon:before { - content: "\f1b1"; -} -.fa-cube:before { - content: "\f1b2"; -} -.fa-cubes:before { - content: "\f1b3"; -} -.fa-behance:before { - content: "\f1b4"; -} -.fa-behance-square:before { - content: "\f1b5"; -} -.fa-steam:before { - content: "\f1b6"; -} -.fa-steam-square:before { - content: "\f1b7"; -} -.fa-recycle:before { - content: "\f1b8"; -} -.fa-automobile:before, -.fa-car:before { - content: "\f1b9"; -} -.fa-cab:before, -.fa-taxi:before { - content: "\f1ba"; -} -.fa-tree:before { - content: "\f1bb"; -} -.fa-spotify:before { - content: "\f1bc"; -} -.fa-deviantart:before { - content: "\f1bd"; -} -.fa-soundcloud:before { - content: "\f1be"; -} -.fa-database:before { - content: "\f1c0"; -} -.fa-file-pdf-o:before { - content: "\f1c1"; -} -.fa-file-word-o:before { - content: "\f1c2"; -} -.fa-file-excel-o:before { - content: "\f1c3"; -} -.fa-file-powerpoint-o:before { - content: "\f1c4"; -} -.fa-file-photo-o:before, -.fa-file-picture-o:before, -.fa-file-image-o:before { - content: "\f1c5"; -} -.fa-file-zip-o:before, -.fa-file-archive-o:before { - content: "\f1c6"; -} -.fa-file-sound-o:before, -.fa-file-audio-o:before { - content: "\f1c7"; -} -.fa-file-movie-o:before, -.fa-file-video-o:before { - content: "\f1c8"; -} -.fa-file-code-o:before { - content: "\f1c9"; -} -.fa-vine:before { - content: "\f1ca"; -} -.fa-codepen:before { - content: "\f1cb"; -} -.fa-jsfiddle:before { - content: "\f1cc"; -} -.fa-life-bouy:before, -.fa-life-buoy:before, -.fa-life-saver:before, -.fa-support:before, -.fa-life-ring:before { - content: "\f1cd"; -} -.fa-circle-o-notch:before { - content: "\f1ce"; -} -.fa-ra:before, -.fa-resistance:before, -.fa-rebel:before { - content: "\f1d0"; -} -.fa-ge:before, -.fa-empire:before { - content: "\f1d1"; -} -.fa-git-square:before { - content: "\f1d2"; -} -.fa-git:before { - content: "\f1d3"; -} -.fa-y-combinator-square:before, -.fa-yc-square:before, -.fa-hacker-news:before { - content: "\f1d4"; -} -.fa-tencent-weibo:before { - content: "\f1d5"; -} -.fa-qq:before { - content: "\f1d6"; -} -.fa-wechat:before, -.fa-weixin:before { - content: "\f1d7"; -} -.fa-send:before, -.fa-paper-plane:before { - content: "\f1d8"; -} -.fa-send-o:before, -.fa-paper-plane-o:before { - content: "\f1d9"; -} -.fa-history:before { - content: "\f1da"; -} -.fa-circle-thin:before { - content: "\f1db"; -} -.fa-header:before { - content: "\f1dc"; -} -.fa-paragraph:before { - content: "\f1dd"; -} -.fa-sliders:before { - content: "\f1de"; -} -.fa-share-alt:before { - content: "\f1e0"; -} -.fa-share-alt-square:before { - content: "\f1e1"; -} -.fa-bomb:before { - content: "\f1e2"; -} -.fa-soccer-ball-o:before, -.fa-futbol-o:before { - content: "\f1e3"; -} -.fa-tty:before { - content: "\f1e4"; -} -.fa-binoculars:before { - content: "\f1e5"; -} -.fa-plug:before { - content: "\f1e6"; -} -.fa-slideshare:before { - content: "\f1e7"; -} -.fa-twitch:before { - content: "\f1e8"; -} -.fa-yelp:before { - content: "\f1e9"; -} -.fa-newspaper-o:before { - content: "\f1ea"; -} -.fa-wifi:before { - content: "\f1eb"; -} -.fa-calculator:before { - content: "\f1ec"; -} -.fa-paypal:before { - content: "\f1ed"; -} -.fa-google-wallet:before { - content: "\f1ee"; -} -.fa-cc-visa:before { - content: "\f1f0"; -} -.fa-cc-mastercard:before { - content: "\f1f1"; -} -.fa-cc-discover:before { - content: "\f1f2"; -} -.fa-cc-amex:before { - content: "\f1f3"; -} -.fa-cc-paypal:before { - content: "\f1f4"; -} -.fa-cc-stripe:before { - content: "\f1f5"; -} -.fa-bell-slash:before { - content: "\f1f6"; -} -.fa-bell-slash-o:before { - content: "\f1f7"; -} -.fa-trash:before { - content: "\f1f8"; -} -.fa-copyright:before { - content: "\f1f9"; -} -.fa-at:before { - content: "\f1fa"; -} -.fa-eyedropper:before { - content: "\f1fb"; -} -.fa-paint-brush:before { - content: "\f1fc"; -} -.fa-birthday-cake:before { - content: "\f1fd"; -} -.fa-area-chart:before { - content: "\f1fe"; -} -.fa-pie-chart:before { - content: "\f200"; -} -.fa-line-chart:before { - content: "\f201"; -} -.fa-lastfm:before { - content: "\f202"; -} -.fa-lastfm-square:before { - content: "\f203"; -} -.fa-toggle-off:before { - content: "\f204"; -} -.fa-toggle-on:before { - content: "\f205"; -} -.fa-bicycle:before { - content: "\f206"; -} -.fa-bus:before { - content: "\f207"; -} -.fa-ioxhost:before { - content: "\f208"; -} -.fa-angellist:before { - content: "\f209"; -} -.fa-cc:before { - content: "\f20a"; -} -.fa-shekel:before, -.fa-sheqel:before, -.fa-ils:before { - content: "\f20b"; -} -.fa-meanpath:before { - content: "\f20c"; -} -.fa-buysellads:before { - content: "\f20d"; -} -.fa-connectdevelop:before { - content: "\f20e"; -} -.fa-dashcube:before { - content: "\f210"; -} -.fa-forumbee:before { - content: "\f211"; -} -.fa-leanpub:before { - content: "\f212"; -} -.fa-sellsy:before { - content: "\f213"; -} -.fa-shirtsinbulk:before { - content: "\f214"; -} -.fa-simplybuilt:before { - content: "\f215"; -} -.fa-skyatlas:before { - content: "\f216"; -} -.fa-cart-plus:before { - content: "\f217"; -} -.fa-cart-arrow-down:before { - content: "\f218"; -} -.fa-diamond:before { - content: "\f219"; -} -.fa-ship:before { - content: "\f21a"; -} -.fa-user-secret:before { - content: "\f21b"; -} -.fa-motorcycle:before { - content: "\f21c"; -} -.fa-street-view:before { - content: "\f21d"; -} -.fa-heartbeat:before { - content: "\f21e"; -} -.fa-venus:before { - content: "\f221"; -} -.fa-mars:before { - content: "\f222"; -} -.fa-mercury:before { - content: "\f223"; -} -.fa-intersex:before, -.fa-transgender:before { - content: "\f224"; -} -.fa-transgender-alt:before { - content: "\f225"; -} -.fa-venus-double:before { - content: "\f226"; -} -.fa-mars-double:before { - content: "\f227"; -} -.fa-venus-mars:before { - content: "\f228"; -} -.fa-mars-stroke:before { - content: "\f229"; -} -.fa-mars-stroke-v:before { - content: "\f22a"; -} -.fa-mars-stroke-h:before { - content: "\f22b"; -} -.fa-neuter:before { - content: "\f22c"; -} -.fa-genderless:before { - content: "\f22d"; -} -.fa-facebook-official:before { - content: "\f230"; -} -.fa-pinterest-p:before { - content: "\f231"; -} -.fa-whatsapp:before { - content: "\f232"; -} -.fa-server:before { - content: "\f233"; -} -.fa-user-plus:before { - content: "\f234"; -} -.fa-user-times:before { - content: "\f235"; -} -.fa-hotel:before, -.fa-bed:before { - content: "\f236"; -} -.fa-viacoin:before { - content: "\f237"; -} -.fa-train:before { - content: "\f238"; -} -.fa-subway:before { - content: "\f239"; -} -.fa-medium:before { - content: "\f23a"; -} -.fa-yc:before, -.fa-y-combinator:before { - content: "\f23b"; -} -.fa-optin-monster:before { - content: "\f23c"; -} -.fa-opencart:before { - content: "\f23d"; -} -.fa-expeditedssl:before { - content: "\f23e"; -} -.fa-battery-4:before, -.fa-battery:before, -.fa-battery-full:before { - content: "\f240"; -} -.fa-battery-3:before, -.fa-battery-three-quarters:before { - content: "\f241"; -} -.fa-battery-2:before, -.fa-battery-half:before { - content: "\f242"; -} -.fa-battery-1:before, -.fa-battery-quarter:before { - content: "\f243"; -} -.fa-battery-0:before, -.fa-battery-empty:before { - content: "\f244"; -} -.fa-mouse-pointer:before { - content: "\f245"; -} -.fa-i-cursor:before { - content: "\f246"; -} -.fa-object-group:before { - content: "\f247"; -} -.fa-object-ungroup:before { - content: "\f248"; -} -.fa-sticky-note:before { - content: "\f249"; -} -.fa-sticky-note-o:before { - content: "\f24a"; -} -.fa-cc-jcb:before { - content: "\f24b"; -} -.fa-cc-diners-club:before { - content: "\f24c"; -} -.fa-clone:before { - content: "\f24d"; -} -.fa-balance-scale:before { - content: "\f24e"; -} -.fa-hourglass-o:before { - content: "\f250"; -} -.fa-hourglass-1:before, -.fa-hourglass-start:before { - content: "\f251"; -} -.fa-hourglass-2:before, -.fa-hourglass-half:before { - content: "\f252"; -} -.fa-hourglass-3:before, -.fa-hourglass-end:before { - content: "\f253"; -} -.fa-hourglass:before { - content: "\f254"; -} -.fa-hand-grab-o:before, -.fa-hand-rock-o:before { - content: "\f255"; -} -.fa-hand-stop-o:before, -.fa-hand-paper-o:before { - content: "\f256"; -} -.fa-hand-scissors-o:before { - content: "\f257"; -} -.fa-hand-lizard-o:before { - content: "\f258"; -} -.fa-hand-spock-o:before { - content: "\f259"; -} -.fa-hand-pointer-o:before { - content: "\f25a"; -} -.fa-hand-peace-o:before { - content: "\f25b"; -} -.fa-trademark:before { - content: "\f25c"; -} -.fa-registered:before { - content: "\f25d"; -} -.fa-creative-commons:before { - content: "\f25e"; -} -.fa-gg:before { - content: "\f260"; -} -.fa-gg-circle:before { - content: "\f261"; -} -.fa-tripadvisor:before { - content: "\f262"; -} -.fa-odnoklassniki:before { - content: "\f263"; -} -.fa-odnoklassniki-square:before { - content: "\f264"; -} -.fa-get-pocket:before { - content: "\f265"; -} -.fa-wikipedia-w:before { - content: "\f266"; -} -.fa-safari:before { - content: "\f267"; -} -.fa-chrome:before { - content: "\f268"; -} -.fa-firefox:before { - content: "\f269"; -} -.fa-opera:before { - content: "\f26a"; -} -.fa-internet-explorer:before { - content: "\f26b"; -} -.fa-tv:before, -.fa-television:before { - content: "\f26c"; -} -.fa-contao:before { - content: "\f26d"; -} -.fa-500px:before { - content: "\f26e"; -} -.fa-amazon:before { - content: "\f270"; -} -.fa-calendar-plus-o:before { - content: "\f271"; -} -.fa-calendar-minus-o:before { - content: "\f272"; -} -.fa-calendar-times-o:before { - content: "\f273"; -} -.fa-calendar-check-o:before { - content: "\f274"; -} -.fa-industry:before { - content: "\f275"; -} -.fa-map-pin:before { - content: "\f276"; -} -.fa-map-signs:before { - content: "\f277"; -} -.fa-map-o:before { - content: "\f278"; -} -.fa-map:before { - content: "\f279"; -} -.fa-commenting:before { - content: "\f27a"; -} -.fa-commenting-o:before { - content: "\f27b"; -} -.fa-houzz:before { - content: "\f27c"; -} -.fa-vimeo:before { - content: "\f27d"; -} -.fa-black-tie:before { - content: "\f27e"; -} -.fa-fonticons:before { - content: "\f280"; -} -.fa-reddit-alien:before { - content: "\f281"; -} -.fa-edge:before { - content: "\f282"; -} -.fa-credit-card-alt:before { - content: "\f283"; -} -.fa-codiepie:before { - content: "\f284"; -} -.fa-modx:before { - content: "\f285"; -} -.fa-fort-awesome:before { - content: "\f286"; -} -.fa-usb:before { - content: "\f287"; -} -.fa-product-hunt:before { - content: "\f288"; -} -.fa-mixcloud:before { - content: "\f289"; -} -.fa-scribd:before { - content: "\f28a"; -} -.fa-pause-circle:before { - content: "\f28b"; -} -.fa-pause-circle-o:before { - content: "\f28c"; -} -.fa-stop-circle:before { - content: "\f28d"; -} -.fa-stop-circle-o:before { - content: "\f28e"; -} -.fa-shopping-bag:before { - content: "\f290"; -} -.fa-shopping-basket:before { - content: "\f291"; -} -.fa-hashtag:before { - content: "\f292"; -} -.fa-bluetooth:before { - content: "\f293"; -} -.fa-bluetooth-b:before { - content: "\f294"; -} -.fa-percent:before { - content: "\f295"; -} -.fa-gitlab:before { - content: "\f296"; -} -.fa-wpbeginner:before { - content: "\f297"; -} -.fa-wpforms:before { - content: "\f298"; -} -.fa-envira:before { - content: "\f299"; -} -.fa-universal-access:before { - content: "\f29a"; -} -.fa-wheelchair-alt:before { - content: "\f29b"; -} -.fa-question-circle-o:before { - content: "\f29c"; -} -.fa-blind:before { - content: "\f29d"; -} -.fa-audio-description:before { - content: "\f29e"; -} -.fa-volume-control-phone:before { - content: "\f2a0"; -} -.fa-braille:before { - content: "\f2a1"; -} -.fa-assistive-listening-systems:before { - content: "\f2a2"; -} -.fa-asl-interpreting:before, -.fa-american-sign-language-interpreting:before { - content: "\f2a3"; -} -.fa-deafness:before, -.fa-hard-of-hearing:before, -.fa-deaf:before { - content: "\f2a4"; -} -.fa-glide:before { - content: "\f2a5"; -} -.fa-glide-g:before { - content: "\f2a6"; -} -.fa-signing:before, -.fa-sign-language:before { - content: "\f2a7"; -} -.fa-low-vision:before { - content: "\f2a8"; -} -.fa-viadeo:before { - content: "\f2a9"; -} -.fa-viadeo-square:before { - content: "\f2aa"; -} -.fa-snapchat:before { - content: "\f2ab"; -} -.fa-snapchat-ghost:before { - content: "\f2ac"; -} -.fa-snapchat-square:before { - content: "\f2ad"; -} -.fa-pied-piper:before { - content: "\f2ae"; -} -.fa-first-order:before { - content: "\f2b0"; -} -.fa-yoast:before { - content: "\f2b1"; -} -.fa-themeisle:before { - content: "\f2b2"; -} -.fa-google-plus-circle:before, -.fa-google-plus-official:before { - content: "\f2b3"; -} -.fa-fa:before, -.fa-font-awesome:before { - content: "\f2b4"; -} -.fa-handshake-o:before { - content: "\f2b5"; -} -.fa-envelope-open:before { - content: "\f2b6"; -} -.fa-envelope-open-o:before { - content: "\f2b7"; -} -.fa-linode:before { - content: "\f2b8"; -} -.fa-address-book:before { - content: "\f2b9"; -} -.fa-address-book-o:before { - content: "\f2ba"; -} -.fa-vcard:before, -.fa-address-card:before { - content: "\f2bb"; -} -.fa-vcard-o:before, -.fa-address-card-o:before { - content: "\f2bc"; -} -.fa-user-circle:before { - content: "\f2bd"; -} -.fa-user-circle-o:before { - content: "\f2be"; -} -.fa-user-o:before { - content: "\f2c0"; -} -.fa-id-badge:before { - content: "\f2c1"; -} -.fa-drivers-license:before, -.fa-id-card:before { - content: "\f2c2"; -} -.fa-drivers-license-o:before, -.fa-id-card-o:before { - content: "\f2c3"; -} -.fa-quora:before { - content: "\f2c4"; -} -.fa-free-code-camp:before { - content: "\f2c5"; -} -.fa-telegram:before { - content: "\f2c6"; -} -.fa-thermometer-4:before, -.fa-thermometer:before, -.fa-thermometer-full:before { - content: "\f2c7"; -} -.fa-thermometer-3:before, -.fa-thermometer-three-quarters:before { - content: "\f2c8"; -} -.fa-thermometer-2:before, -.fa-thermometer-half:before { - content: "\f2c9"; -} -.fa-thermometer-1:before, -.fa-thermometer-quarter:before { - content: "\f2ca"; -} -.fa-thermometer-0:before, -.fa-thermometer-empty:before { - content: "\f2cb"; -} -.fa-shower:before { - content: "\f2cc"; -} -.fa-bathtub:before, -.fa-s15:before, -.fa-bath:before { - content: "\f2cd"; -} -.fa-podcast:before { - content: "\f2ce"; -} -.fa-window-maximize:before { - content: "\f2d0"; -} -.fa-window-minimize:before { - content: "\f2d1"; -} -.fa-window-restore:before { - content: "\f2d2"; -} -.fa-times-rectangle:before, -.fa-window-close:before { - content: "\f2d3"; -} -.fa-times-rectangle-o:before, -.fa-window-close-o:before { - content: "\f2d4"; -} -.fa-bandcamp:before { - content: "\f2d5"; -} -.fa-grav:before { - content: "\f2d6"; -} -.fa-etsy:before { - content: "\f2d7"; -} -.fa-imdb:before { - content: "\f2d8"; -} -.fa-ravelry:before { - content: "\f2d9"; -} -.fa-eercast:before { - content: "\f2da"; -} -.fa-microchip:before { - content: "\f2db"; -} -.fa-snowflake-o:before { - content: "\f2dc"; -} -.fa-superpowers:before { - content: "\f2dd"; -} -.fa-wpexplorer:before { - content: "\f2de"; -} -.fa-meetup:before { - content: "\f2e0"; -} -.sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - border: 0; -} -.sr-only-focusable:active, -.sr-only-focusable:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; -} diff --git a/bower_components/font-awesome/css/font-awesome.css.map b/bower_components/font-awesome/css/font-awesome.css.map deleted file mode 100644 index 60763a8640..0000000000 --- a/bower_components/font-awesome/css/font-awesome.css.map +++ /dev/null @@ -1,7 +0,0 @@ -{ -"version": 3, -"mappings": "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", -"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"], -"names": [], -"file": "font-awesome.css" -} diff --git a/bower_components/font-awesome/css/font-awesome.min.css b/bower_components/font-awesome/css/font-awesome.min.css deleted file mode 100644 index 540440ce89..0000000000 --- a/bower_components/font-awesome/css/font-awesome.min.css +++ /dev/null @@ -1,4 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/bower_components/font-awesome/fonts/FontAwesome.otf b/bower_components/font-awesome/fonts/FontAwesome.otf deleted file mode 100644 index 401ec0f36e4f73b8efa40bd6f604fe80d286db70..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134808 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 diff --git a/bower_components/font-awesome/fonts/fontawesome-webfont.eot b/bower_components/font-awesome/fonts/fontawesome-webfont.eot deleted file mode 100644 index e9f60ca953f93e35eab4108bd414bc02ddcf3928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165742 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 G*yFsbY~cLNXLP73aA74Mq6M9f^&YV`isWW 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

    5q!RY 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 - - - -Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 - By ,,, -Copyright Dave Gandy 2016. All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/bower_components/font-awesome/fonts/fontawesome-webfont.ttf b/bower_components/font-awesome/fonts/fontawesome-webfont.ttf deleted file mode 100644 index 35acda2fa1196aad98c2adf4378a7611dd713aa3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 165548 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 z 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 d0mRO}xo^G_%I z2O^L=ATW7lM&^H<^*^2eAN0eSJq3(x4DA1L)&F4euaO6sK5joV1E+r+DAqq4sQ>Wu z0|aVj?P25hA?l{GgpFa`oP%>HM?@(=7t5y$lA|Hyyb+&}%lcF7Py zVOq>>oZbI%cmJ;c1Ox&!PmnY&6cmq2?4Nt?RBbj#@*S#u% z($dm;AKJG3Yv)w@yrS19dscW!&dp@T$utcaiktwRu?l%Fgn7##v*Q%&IaI$|O!P}5 zE!tXI-Ss#N&%~+2xwep6)=D=@bER^nrNZX=A{Jq3H3E=sm}xcLG|pUA-88}8wRPyv zPnoSTxscjcm{McuVx_s+*=h#*Xv3UB1T}&E{uxPi!CD1QZy{>6F_-GvT;_v+@h3%S z3~p6JKLUMaO+O0%W$iTHs4{|UN^?L;ts#@G+64bnV>gujTO1A$SfkJKhUN{&{#iBu zbrz-NBAI4CWjjIN*&fwVu4RubbB`IvgcJ!WV;{$}bpWy2K1lw(2Xe|eWcN9U#V^J= z0v&sgD$Y5Kh^J4utKJ8w`)YkScnEwZDG=2~oYvdtqau)|6HAhwqW$r>MKydMdi-xf z|IPEi=Mls`ySoS4Uu8Lk>GP(?uENKw#l^+NO;vrl>caNS*3!n4J~PMG6%1?`Lo`8D zP!I`IikK!Gm+D~0Tx5dT2;-4lEPJvvNz@Roxn4bK2&F(-3ukKoTzvdLw9r!ZsOd)GFakMtPqh`I$P>j#E63N~^t! z8t)N`OP-Ey8cNVPKsgcS6B*&w9LA&4rPERq64J$9K^)cnN)EQxZgj#nJKXDP(AwtHNPvj4d!y|3WE|h>aXutjp#eR1Va1(D~!1cD@#G$XK@| z8ScdxW>*_WC0A}fCWQ_Gk+039h^tbyU`-AaRQXE3C@|xuc#bIvB-u`7jVA9qExYjR z=L}OyA;5`@PuJUM+d|rr+H3CQORerU?U9!{Bot;XUqe}i%R=!=DIcZf5IBHt${UX7 z$u&nXerDE=@3Wd|0@Hz$q*rpVDJ+Wsi!-OJ!$UKaeXQAz3oz@z3unQS7l<)x)linz zAH493JdOfC{BNrjX7CVfZBLDtgiqO>03bm9Y%opN;dZI*d!CgC7s1So zx$n!T6vhxG4g7BozT_i+(EXciSh1 z*WKx5dLayUw$Hadz3+<5D}%BZCKe`cE4yNK&2O zC_2B@YGbYTJ=@>6O14_I7;gA)sBiMPW}zMqr`$mljy|@#K)X4 zywlOE7bt(D_<9aY(j=81rYh}wpQBZ2>BFX$_0y{XD7Q1jV-(PFSPU`4DYgBSjuXGW zB&TypZ4-Ia;ZDv{*YiZ4BK%bLvA^d#3^`kw)^(lO=^V#PS}I{JY8vD2<6?gDUgByH zoos%w5n5SA70~&_wmZ}=sE_CH+$5D%I~M^tEkJ<ZQI7BsvH)rso$j0Tno$9{71< z@V}SCAhApjLIvlX0Pxk%zZqkf%M1LSF2n#NI}?5xPC=! zobSQlu20xcw~DY&-wOel-n@?qJ&by)A02bP=f7VUb$6h9A&zxij{$poi1x&>usk&q z)o~Zd^jeapPeoI1Jmh>Rc-6+ws~2@GiSZz{hBgw^soz#me0J4++L57M=6^+@00R~q za2yth-1NjYw%qz!q2gOQL3>x?qI6L_n5iR9jUE#0ppndAXQSaxXgAAg+?Y2ZVSq`= z9KUjbab4|QH-zBoMtL>BP)ja&OJ4O?2yYF#*>9aH4X@u0(otsJ5@}kXX@!4~Fy4Wh zDN>w`7i{CSlIi9?H2YDBB_h~K`_cJqA-9`a@G}pVc;w6b)PGdJz9MqO5mS;`wb~72i`W#}dhh!aglheCet+(79kLz+P{)7XRuyhb{YxtDFZ#1N?6e^# zh*vvtce7F3I~yiY){1)rPtn#OV%8zxe}b9$IU5=66PVl01yCBSd^dXUKhK1G0R|IV zcvk_Ac>q2IN6uR13{;c-_cRbEqYJTB_{Fr4IijaDP_s&jXx0$`sG}^H^o5 zz-Q`#Xift$p?Wb<=fxuzXVyNKg#>QnXBe)ocjuyk{hgW=c?V zRs~?RkX9n-Kuh2ogdASyGctZ-79U~PP*d!u<<~CRR3B7LYtxF8T{?!Nye0d%0n1-I zI4RC68nKpBKg^rfqiJ-i4HXbQx4>=dyxjLao>lA4TIu938pOX`7jX~@WPeN@jr_P# z^lTrnNnS5FJgePCzFZ$yZEE2?4_z#R){UKOsw3qqM;Tb8H@A2_3MP!1!fsit%Vn(B za_2OfhiiPV49y_-YDhUHAURUHq=tlP%rx5l^&mD@G^8z-Y=Z-tIt3L`u!>WVQxz;^ z&9LZUjm7~;VIecrymMSz9sAiMQWB|u=tF>$?NZ<_+~80;Rt&KJZ1cdqEdhb%EWus! zdJaxE0R*U{g1~6{#~l&e3R1mY+6nb{2=-5{7mcd@paR4GV(zxv{CelE`s$Ei#`XXd z)c6s?t)+nM8@GOItmYqze$tkR-@pNBhUdU3!dN9ILMYJOj4^aUvZMFQFK=P@cL1r6 z@U=sJ<=N(Bq`QQC3-wJHuee;+1OIT=^WJf^vichJbLK-(8A>DTum-ya`_|C7PvY^V z-X#zAoguBv{!+QTW6rx3-!1S_UiFDt_}ti$D*F?fI@AHKaETKn;7R7C5HXlh^h{!o zsrxdvVOX}7A?4Tr{6o+@q_3pMQZTg)Ea1)Q8|O#l$}N5<%GqV~ZE>N)M!~x7JUKA5 z9t(l39F)9Tiu!T`O`2ZQdW$v?+Qe4m558`xNHnv~bX8j4G6ay*PnvTLCWgm@K+IP1 z^SI~_P^NN)(Qy;gv`8wrCM0r zdu^7~mAS%W$G8dDhB^z`1T=lN-^sNz%Wcwkz4|)K)IQg@u1iEb91XhJ5xEwYDfvM6 zkLOfT>Goml>)dkK7RrcGd}4t$1w4`Vi@x?8r-Xz-T@erhoTTvYj;62sm##V72KMKy z7jCvo37#eEob8=(e^%k-w*#CwiWcoBL~yaY-mZ;3#7$hwrE0n&Z&_iqW9;qZ8h>;~ zOjAz(rmb4$^7bp}HHOIkg&1oXJz&O9f5ETRc`KDiwH!c>87$jXR}9R=#e{N-{typMNosUZX^8aPu^3Zb=_A_|$kJ2>CKI25a~u?@$|xUD0E z3rV0H2Dkhmtcz}Bqr1R;PGC&s1*q_(cw=w!eh^JIxmYy6ip|~R@0t~6h9kSKF8k`r z-rmZ)soKb2jgHIODnmo-1=6%KLu=Va>yJSJgYnC@P2eB{+<2U~g=4b-hjNb|x!65z z5!Z3c@32#?=kl#m5f8>l8a@f=Wi6&X>j+N1+ruaQG?CtDV~PXb>@WWf2Q($z>z7U+ zMBlz(Z=2s-T8$d;Ue6M3l3xRuVhSxm5s{3BKIpgmi-?-oisza zkmgcLp`Vnlx?L~qe?(H=WYV)H)PPR{pA7{5h`m_l^X{d`q$MOR49YduCf{c>9PI^G zU)!twAe$_^TtGrD{jAw%Wfw1k)5`DgJXWP`-7XNQ20MryLW6t0#t42k2 z0hnOio5PA`bpihQ)A=v&;|;YU&l?F@fC_Npa}OspB^Vr!zTb{NLwi)Hy`}19z@fr? zU3Jh7xd)*wL=El;v+()ck_u(iI_w^muPd_R6?OAcCyxtX2(vAWE-tjbs3u$PJ&jfGp*j;7`8P+@e0HF88@NU#6t?jH*EMz0L$My9PHiB zRVebeoyHC8Wl&pm$IT(G**{Utw9Bh)HAE_^TCH*ta-8|<-fxJ&aV4hWUSV75)+$)r zdIu%X^B9`Hh`wv*IW6Ho^#zL)v08Di99QNKyQ4Ex^x@3G;Cg6K(hX}D-{D_(j!D%6g}xd;qA)E>mv@<*$ZX$rUpcaK+~5kxF2pAac=%N>3B`6+-EO>fzLHkzfcD>r`}fy+!N&}- zUH9`HP&unio@pV+24r=ON7xE68a7?3>8!kAzHyK4Lb=YbvQ+HBn+||W{Eg?GVcYQ!l ztSPK!t!;Un>i4P0$ET?I9pdIh^EU0+RcYthPqRm& zPB}LVBWJC5;`qzHr{VN*QZ9;5?qvVIY@^viP)2>OQxb+mdkWDzLq#%PR5z67y??M+ zSjDiw%%q&n3QENt>Lwj~Ps8*c{0xvFm@csrU=eyiH}Cpb=6h0&O92O%dTc0WV%R`6~bS z;QT3eZTz7V7f#K|S{Kj{_}e_u;Joz^)V0uvH!H@e3WnVKG*Y;R5RQx=UKb=?4!qeb z=_DKa-vz<$?}ZxrbHii^hC> zLN`k`gS9^kaeye-(%)p=Q!i(kFa)B=q#!VbG7-calS3zKZMl8Kg`I^HD#h_iN?($! z>66rNVaPiYq<@#JX$rYXkw1$h7(yVDzNky$V^i%H!;0ZYI+ZXhW#@zfK7#lXMnh2Y z^3kcr0*7W=&Ss!urbd>4di6HWv0K><1f+uu%DQIF7AJcpusQzmE==J_e z-fwZbee~KU31mUe(k?U$jD<>ni>OKvN0|-t=m-(#j;6O&G~<{8=r6^gv3$D&K-xY8 z-A~Ae;#6^CAZ`&J{>W;EQAqsZ`r@~1+yiz(zXcIDK*GBO!0caA&f@eEcUcd0SLAp% ziK^4%9xfj7AK-j%&m}#)l$Krz(B|KAu~u{JsH3mYsRF-@7#pkE z;OJGjbEEV%#{Qt8>G*G(Vfh9<)rQPk1eaSAEZCJ)F~PoR(h+g}tl-VX($ zYO0R@KF7}dH^^v=pHnQ9YSNiTJWm+f!v@BwqQ$Y$ei`a_1{_|I-ss`3Ry;b`bNIE$Rnb+z+c*ky}aexvI*zKtJjccvTTZIqk!Rw!$+NgN&BT7q-IM^YM>9lAFF3qsj z{Ui)Y_-SRrj^=N_HhESJD-ltQtL~Y=Od(%jfPRpq8P9`F;O6pc)s_oF{z{=|n6er5 z!u-{h;{bvm_L%5agg+m)4aA0YAb@K`Qv~YLWx~sGmt6*V!|?F z%7PdL2(eqp+SqbvQ;>6xmHK-4tnG6El;(blqDJ+}Q2=*wlRYGBr%&K>9+K^{Aa z9GQ#O*$%Ki>UYmph71RnuwA?#!9vfTIuG|p%N;AWWwB5C+IE2*>xGPGkT?t@?Dvhd zt%Wpg_71*1_@0kBba@@FZN^TvjpVY+rkq1h2gtm zJPXCjvMjf7K+`s#pH$0kv}>*SPOV2H-e;NChSuuNAtqhRtEe-DVqBG7vr*enVEmVd zAv-&^RqMyAthD#nN)(w!Yp^GI_VB1e$~skiRlP3K6DJObNVTJM{r0E+{x$grTNFbh z_uBsc88W7$jtTI-pPGD>}Uj((F_m&nMmhI4lhx z;SZUOC;SP$w;q=0ux8Ozq190iFGeAoD%-HBSfOO9W&PK~Tem;KeV~3gA0dW>Pv6I1 zYNn)N-+Qq-I+AJB!=V9uxeoR-tL7t;-ZGy%%>9l;tMtQJm7z}(vh)}z8v;!QqkT%c z`Pr;kXU{<7gZGe(<&Zjp1|1&SGt0&iI1JiBIdPElDo}oD(oS=FPy1_j?dy9UkEB(@ z9bfbpt~myqXy`*o?NPpA2S*3Iq3$t0QzT^=d^GlO7pmjpsXe^IwU{J-P?mtkdD4jT zbfg}pfa66t&>R@5s6DBCTElqWD~=VAB5A$Y$g3nSX4Ol}s9ozugn47sFrns|d)D7D8mh1^h>F8%3W z2a5TI9W)%RgrtE1+L(i!DwwV@xZ@VytBSnvu3ay?9Y$%KBd@=bFp#4X>B};lBl^>;B5%>LW8TFDeNLsW?@@;#fCxMm!*pX9lfHt)uuajgiV$d zT#h**{Ipyhjltvp#_fvwZ6(9T&)Rb;VTsa~=gJDe$;q~EJzFO3Apn2EXrlA~F^1;i;H_jG>WmV*SvFHky zf3twjY=>%B`6@dr95pk37;>@x#zI%UP>yJ?6%2RCAY-s(SLIof9c#sG+>FEDjD6gU zD+r3UOyZKt5Q%XW6oZUQHH@|K!@vgu>y(j~#NpH5x9l+GPE6*P91EzHBE}krNo7~5 zb|0;8aj<>dJDCakJW=LK#vk^V^`8D9UP$2lLk&K$X+Ag;(w#ZeR7?dFGzJkJMi;Oc zoicM8#T@0|)<b|u?YyW0!6Ew$>Y~pX2XU`J zDYoQ`d*fm7~YwxoZtL1W7$X*5n>+fi8oUqvJri& z6nm&FFcO9AAX=7k9_;yussklMDtxu6t5OkjY3tvL7s1PUqGstoYssPT_ItLMXX))Z zJ03DK>_IPJgIKX7x8Rw<+?!kIc9MEA5hw)}5-iqzE8VFOr%mr5VC50inCtJ#tAQL} z1%tXg16rH5cZ?pPJcaYO6~hh*gGh%x5*s)RLDozXG<$(Q=kn_7fh78e%R|8C^X%4F zm9*vMr4{4*^7ibRo5iK-C*+ed7*^J_i&Im+>V~x=%ybD)(9wLptciZLN_)YB5O^v@ z{$Ja{Qtd!!GiH0^v6Ue$NG8nsD)~)N*JjWChU+1?Ny%198}eb+iG#cLFl;OopkF>K zIJg1zG{!THV!AKNdnO5aW zt-47+g@#B%3Z{it%Q@M`87PUsQr8-l>(V z7?crSbh@OEA$m#}=67-ZTp889W3?AU=1tjMdw;Ne(Izfm0-RQ+6jH&8gwGA_(Q}sf z2cqudmvKpmxhIPXLGEOm41F$3^s>mhI5{xLs3uHjw&8hlNfyhYWJ>LMMzm7Au8{{4 z-78CWHW(hd0`W;PqChl|g^3)t!&RZbm@=i00BhlV_)wg0=hMU42F)9g3L@3ao5I}H z8I}fZ8eb0a?<61oj=9=X+T!Eq!RN*aH=0Y9i8s}rg8IT>C(zNJ!Th>8L<=0PZ>~y% zhz0Bh?ag(U19g*K4YsztBIx+FBiiPs)+@S)uF6ph=|=6xgUL*jcixtPvskp*56`B0 z={4aNiYE!i0tq@Z1;pR-k?I3o>lQ~?sYinu)T9ag!9h~z6;ikT8&2oT|A@)-z( zaQOIKXY~=W6~KLycubCWOz(G95I!BBDB0Pny<_|zlgVmqx-mrqM_VmHhiBtJ`$Z5w zCPrd45%V_Ko8gYvDbKOB4l<(Fy#)}+&?NnmY-1A}rTwO$s?$(4W6U5%XfMI)w58zk zbnp#zcaX9eQujFlW$d|exgN>CX+D9ODCFX{GoRcYei!0W`_4DPA4@ELI0BSq?GTP9{qy5{Jp>{!$ilU=1r*;&BcRg z$*q-IA(UIbR;y$MuoVtrm}_sru-Iv6QF-Z$*v_HQLPEzhFGyrl8>MSf`fNpzygHW~ z_QJA574ufXwN23TR!mhNU*^BKQw@5<dJs*_=x{mDYt5qy%uW6HuIrYQdUw=BHHG z5Nt@%wEdaq4{)mv_E2B_!pNn?M`+Gf3%JA^GCHQY{6Z+#==o?VMBVKN&I-5tw2=+-ea|`(iVDzDkf` z_o4ZdXMG*j@}fOMk`);6@zP0?jJxg|pqYLnuYp;NEjq=E37d$523+{9c|=_m;Y=FC2zr0q z9ABp`#xa?^D8x?{^m9Pb8P5(LYi&GbahTA*2ISmx(8c(0gM7mGV0*-m^P2+5>2y*D zK>!ty(}TsN$-pvPyv8MaFTTJ&O7I6s@>;4;BIl36G56wWqHwlP{~pWLHf$Uy#0Puy zeV;G?gvis^Jxj`$>M5o?zm}_}UVzVP!9jt89Pwn(1x#nRAN`d2;9sJ`tk0AOz$1+E zH{8RxgaNe%M&|1hrS+*9C*P^Q=fDJ&p_?m6QWaQ!V5kK*vuF%HaecM^I*D{f1%Ubp+IA5m}APs2n1ZJu)J^J{Rl04s^nuyFN`DfFR|@!RJFA-DyQV<_xaV4SNKY62@hT@DgkLAq~ zhG+%xacHfgNfA`ZaU>zuj+4n`fU3TLj}&960XK1bcKm{wvmh9SVn*;5QgF*KxDXp> z;Zr51Q6HgH%jqJevB^Jiu6LMSlE`WNR1ubZUzzA5+#sU+UBVg8!D?yT@>=FvY+EEQ zC!*yn>I=^d@TLt~CRiEKJXWgp@5P+?!Jd%4yZjSDVZ z`OkMD7`^B2*g{%}qlKpgf7Zmo0$lvg7&BQ)Aza@3G~b|J$Ysk*P8I&CB}bAMZW-~Z zIR_wi6Up0t%hZXSOGa=}k*;=(xjt200^6TTRMf=`GX0xknXv$dY&rT#xsb_X8RNyA_$By$)d>6vNs2f?oR!rfdl)uT3^wm? zQwUBwSI&b&0r(I>$MjJH`fi%N1_>bz?&Ie_?js~TGj-`X%$+E9%n{r<<}`S$e`-p) z=*`trS)6S1Q%@D>CURjquWCtl()2l|<=i+Y;!j1i7jdhWpckp=OwWUJ0MIi}l3TJ6 z%ie2wuVKrrw_6uhff+-6)=_Nlw(qWRJwWbgGK?~1p|U<-iQ8R_>vJhnE;jiLPcBi1 zRW@hF{B?5XRh6|AR&h%$^yWc*ouol%@U#QTr4H?XOSYZzd|Vm2@o@5F7Ops_jl7Q) z_!ybL>GEq;&gio9wM`Qi-TlKa5EY2IY0@jteHNx%WR6`sJuJP1f$&aYFSPnLp{u4Y zEC0QDql)X^>kq8ecE4t_gb{C=2=3N2Gdry^aVqO$<8QdOeXI3e?r5`^^}Z(42qSR{ z0UzZY8>scj$7ip(7LQ+vQ=uIKkHj_~tcpcgSP5 zl5+MbW(cv;e_PPRsa@@MkrcgqMx5Z%N!L9-bn~Ur<+53s7!rjk3?KlB}I?)Qdv;%ICl2PJN$ftp)ow;+k%4wA>Ck$|vtQ zY_;32dscrw)Oop1ekSSV`gS{<%RUw@3VxU0lDzU1SQNO$YkfWP$ke$i6f&=S)<#|) zlsaMpADLw$TU8oa^N=>@h~Cf?=Nn=+j|^}w(vlxqQu54&1r>x{W^6ldqjSsVb<$rwy}rmwYQ01Baz>U?dDE) z6Enk8YWv#EPCC25t@EorUGU5O{POaAz%~D^imu19F!K|CcOQ6u9A(3jzt&6Lx23hJ z_sY^Wy`DrdJCS0duxEW>Bp16>_r;eS+N9O(hQNvjVv4ZBkPTG)KZS(quq)nebe34H)H7M%ti+!MZpA9N4oWcss21+ zAQwnD0vc>}2(d1Q#3z7x%6;?j6E#S26$>I+F1&^X5Yhyy)jZx2)-|Upucn@=gqJ|1 znjL{ulPOb0eXL1wk8Ah>PJa-YixeC}tZx!&A(kWBz|&k)2zfAfgt^NQ;Olk0Vk3P% zSYd$?<92$LGI`4r+F>*)w>2H8@J!QRnSiB-i2PD1f4t*yB0TW=VEPmk1ex?YExNMN zI9GtnDg}xUYG}IWCAHvEm4{~@{-51el6Asc*;aKov?K-kv&2q9S;tVToYnO+c-B=` znQKkgiC7CwY$Fiqj<-%#M!D%}%W?y{P=lzvRFF$pViFDB=NX-O>E6kM3WCB9`o^B* z{MM$j4lm`~NPO5-ia@%@awPiq@h@2GFf=ysU@*00s(yk}5oIaOg0TGff)nIUWYyxN zcEn}cZ}y^F)#s&R>KDsgsBwSUKb9_R?p87K-R`$x3itD)iTviK$x&+bcHFT*Q!eFg zNcceU!8YQz_sVsSd;ERa>;c4~o)C6(H5wX?RrI-;Mgfj(au5r*P)ju{uKG+ds!M@l zW?klvU;Oq*8pDCohHSQ24f7DeFk&%(PZcU>rFa>O6fcD4U}U3XS#+b?NZOc2maoDf zS5>B4E6*}7JnfMM)^Z2!u|FFCSETDqB*+}eo{nd-W7`sNQ!;2e+6~Ni)KbM22iZWB z%yRrZnm~6U0RBToY0kZLy)+s{VKacat74^qa)$4)&Ph1*?@Ov-g?MMEm?8Zb;eqt! zLvhaQgRdzKuk?`*jXV%Juuj*{CsQsj!V&}8J|X^iw$%6jIW)vwOI{HkFX{!z0lWlKgw@5_{( zOMVy%4F^Dsc0R@>XubIc?i6ec|UaBw?M>gea5yPFzj5S zT>m(ee^IdLw=-~?{o7xKpf^)qkrM(2p!((az6XGrED0(FM33D<0}i-zg79zA=DNXS zEsb+Zs~m#O<|j?o&r=|HRfL83{B0M~P{4zigdGU_Y0sk`&i#!eN@q9FI$Eh0D@$c= zHCwJI_FH!WbsFo5orbP4n^#UY>8;Ped9MS08=u=>R+PXtTkh6>nUbtX-mk~TlT<&} zv`4nQ78`LiHas=DuR9r3LjJaDID5~MGzV7ac6>D$N#lJ)K*b$#vtKZ<$~-Garg^@I zP>8fe%19Y_zr@ojHZ~{hg_(b+=~elZnQQ=ZFK<0h^nP0I2;dD#pcOcEKg%FDH|FA= zgCO~T$_6o8I$2SShA9w6s>(w(SXOn4pJ?h|oFzAC(qSCg$%!_$fG;Qnflw=yLUdWW zA)3k1AMBe)===HMKi6Z+RK3K-|6!Nf$WbMb-SFwgWqST%&t-)@hRVSed2jSKYbX^_BIu^IWwbNF9 zpJnu1Rn|Wqa>o_q$=jWj4UQukG7HKuhoijLbIp1FaSe$CRlFxs!%%g2>DL85wjvj( zy86kPCL7BS#|tDau=B}#QE|ffG7?kw$s+S;oe~>*PDr08^U!7HjxX!ohnTQt-D1S< zv>{kD2r9{5>ItH#v8$A+WSK86m8%+ql61HsP9hz+9q#mvT0C!ly1bL)-)G``ieJy& zd%tNl6e$!ua=U}>dM}XA>NTG{gA*PE_J3EIFWC8k4~p(C2wkZV>yfP7W~hmm#ntLo z8zO~R9Z9@lS@sMv$@L065Op;&QPR1FUw{cSF>(@B%9&rewXJ#8_cAc=o6*#1DT$xOzeycmC9E)Kw;29{@u_qV|P2(ZS zxS}xa+vYYvo$*1@$w1$QXeJ2ZsA|VX769oq82C&5=~|MRo4VlmF*%RSB7`4{P#pDd zHVO!rfZDXw4$Zpt!Il+oD?D$1+{uEk#nJjBK(eeJY%HhD`*}7)n_Btv{`Im!O4a(D z%EQ}+PvTbP=WADI;~|5XOqn2(kOqamX)kKHqw#y&_tnem731aRZGz5@?m$TdETNl9 zYS>UXk-v4THB7I;csa~%`a0{~6#Le+(mw=byX1PI&dDx!XDsGYB|_m zcnJe4os^9}S8d;{%WfLBg;;#j0-p7l;vBtSuFqcnEiu4ur+K*sVg3u1YtU+w(t}S* znYH047Q2SAnx}fb`rn$h^+M=ct#RG8&mx;^A;cRG6M`R-O{L-D%KMi~ug2yjTfo~> zH4VQ8Mvs>gE0<^aSeNJZh7>i+(1$u(`q{(nwWQK^YY{7>(QcDGjqqfWJw2Vyf}@0< z*0q@`%Zi=ABF2bB1I%U^tnxIB&zV$RNhKpCH@w6qHX=p|SL^r?GC$PTAhC+K`1sxu z=1&f_c)8l2Cc3u2W@J%(6;VRUbf0Btl2F`Y)VYf`m|vxeoTi>`gW96 zdvwr9$IR>Y)MUHq$%$rM=IkMf`b<@d5=nY#^q%C`fbwITF7v&Kd~K}4z;F$*^rQ0@ z4Sj#ac5hQzCLMN`*^3>aRyVd2a?)5z3k(T7strykphhh$nsZ>Qc7_&FaAzY51H=Kq zn4HbEn!l9dl5~X1xNQFng5l~P)~B!E-}j`fMweF^Ns421yno{$UANe9e-h$_dT3dQTzRcqepkzHk^z|s)HyzqDH#~EbY*nE z!3acTnuFHKm4Be2=5dmGaC(Z~Y(EH2Sh?kod(}((&UA6`XTR-YOn2Lq=K8Ed9J;;w zkQ210aTLZ=kK-~tSZUlpgbb=&zrtSoh^z`D-34aSz#KFN6OkBL#w9Qm3&c|6wm}xW zpST@|N0Y+_&$;v!^lp@ufMv?cYmi{r4I{lR1#NwKkwjJrH|5aRv8PE^P+iKQnnsxV zp9t{@(G&~gYy7pdSBcci0$eh7${KG?ZP|P5B!Hh!V~Ydjpyepjlz9e_y56W~f?UN1 zT}>?Ii^u;+sVa<|K{^5K$KG$V_fNK*c-!7`SKC-ilQU~8d^Yh?4bl^Be3ZK^lT{8= zS8p}8Foc24u}xec3~k@==9w{AJZg;u$Bsi94Ws6U%vuicdGkP86 zxPP_v64Oubdj3pnSIZt6EKDi*gaANFtS^9aDeN6?*l&Po^l(+nHNdVjB*mkA<#9R( zcBb{DRXMY=mRP1rN=ufcI?i2TqDX}okf?on<4}r zl;fjdikvb6STV!q@K~{=8VjL*l6Q)k40Kr!tD_9n-j}cIQH4J3L)rJNMja`rb^JJA zOox=e;F?5I3T&fsrC0_^(Yus3APsM;-FFE!Cx%+-tsa;5@zPj%AVh-)t$ zF+X@&4pt>X7%PsBv14&KggqdqHG1W^!jSt~HJUay?gXlvWsLkQPE0grR#Im*_Tl>X z$Zi}x0nE$Bk%)~}`lYFe!RX7JuD=ox%p`whlQ6|bqgsXfHaF81jT$YIL9{f(HSak? zpn0T?m@}WjLFh8hI=OyV6rERA*m#w}U1h2qzjXGbsml6#Jw&N*zdT-dd=15Ie+EtT z*#yE+H{;eR8(c31v!LGR%vg8(nR?iWQ!X zgB&?&SyDYVk5FD=GAgy6YMPzYc)U?f6w91AysneldB*ZfNwqr7o)r^k6yycj+5=oG zIsm{uOIXjQV$7>=Gfq1Zc(Qc~$x7f?D4xDB3DhOeHps*Sz*-D^I+uTCI|L@ z!^~0YFTBJ!r7pCmhdi8L0w%yf7id5|2Cex45Bt0=AS`Qc>_st%GM2eiFurXA8)&vn z(v1_c41I0zS)vsNNO%C$bu$RG48L{WZ2&C)?)C# z>17e@z3yu@{by7YpJ=5K$JiT#A#la2nF;S3f; zDSR=#+R(v$PoqqAEtF7EmCxP>bl;Bz4el=aO=r4jf0+oz{lpsf`JTJPo^$7U#Lirz z*rL0Ew*_?NZcc0iwo4?}+q1LDEVUGyv&xom@Y2<247cIV0>W%XhlS_CXn+GXfhKB1 zlkLEMF9fYoKw9yoIFBEbwmtAoO2?fPtK2%89$@3BqiiYqJ(gJ#O3CSZtS5)QCq#Td zD;_7RGd7geKFUW=+l}kCIyx@xSzhNHB=BU*rOC2NCU#BeGr7%XUc3KTRu(22MeP|OfeK}h6Sw$9 znybF@fKbPT$!GsTdDghElPCbj>FE=w$Ot1AM3OO`xCeU~O~LnREf(PRSZF*d#^Q?o z>;6J)+eJi7qg3szm{M%>vS1BMpTSV>egNC$?5H3hAr1~m4Pbo}?=89Nzi~9tHbPTP z;2V^AM16l1wX0b{vq4OIUpnQ|fwiRQ8kTb|JSWSTROq@C$lwruW0aX#qk-YnxK8H> zHw!#`jFjBf=_XQx5f~Oa{a_)-ei$&AuTgrk;Fu{BoqrAlS)sby2vM(P>jNt|rNgh>#=@{8vwQ;2CN+C+RNN7dj;t?ykeFtlMtesE?J!WjV9* z3rus4%J)WW(aIZ8p^48E4n3tHQ9k8b_cpaLHU+paT&KQ&zhG@L^d~+YM|w33YEs); zo?4rq3NcCzHtF8B$38y_U>LwR7r2++O5|Bv z#$sZ13Jk+K41jjkomNzn@>A+j*ifN0KeIZ^$OW<*yfL`NGz?~QZUTT{3buT*ARp{p{y4spA`#PCdq%(!t zgVbI=WSZrJZYhdd&(h!^D?ghV6EWy@F=6~$$K`8cR2A~~Yg!i~=>Q|o`GeD>@AK1s z*Uv*oP}N%In7?%8Abm7D=%i3{BPIHITKaU$uuS!$8KP0af*C~(-(~u;_{URw3*`*_ zdq{v!3xx93adJg%>3)ftaFArB(~d`3U&FxMhmx>t4)wF+v~l@12ZgHeOpelk^&}8 z>}dr$wl6ypRB);DsHO8~b^1t@aoA=_md7tRbz;K2)jSa&9J7=@>-9u+J;6&>r7Fe} z1Q+j@6rI;ze+5kFhp}4Uw>xg0GSfUi8Zhbz}Y@6}@->kHZ+jo_eNB zh(V%q_s&vwdO2BFfGpWxY$G-%v(_2hc5_AcDm2Jepu?qKUkzVEKPk4WM>j+2dM@ow z8vq`m^&8RJX*`fav$SU)?UJt_67BmEgZxsQOvV2JJV3+0J-Z{8?Apzzotf{|zIMm{ zv!jhM>cxsvuURNkE@|ysfs8o<_zT7QN@VBJQPZ3}3lcCuLXJ*(Vf-n-Y6LJ=XrD6d ztc1sN0qxRH0G(w}9yLBmu9JSRk?N^2Appkvq5mzs20=JsXT)mCPH|p0tTyVyWvdgg zFNy5FhuyPMb=0E4S|_06JTmFIA{Aep?DP~m+37hq-Z^Hn+1lxt zjM>@#ipY5E0K9@)7GY0>x+%?jWiTetLN0y zEVe7E>1ZOYDLtsHRm(ok5FV|sc~;NMl_AU6R$a+j>o`YW3Kwcu3mdMoaHyt8>hvJi ztWh>ls2=G!J$JBCIlEm~jLh;lFuvFj6jER{Lt;v4rIl!cMM*%Xx!m-4piw}Fxh>dAv%`Oh{%GoMl%m&=Avcrz zha=aWj=EV2(W6)pt)ZS4nWhCY?9WY&>4|QM(#Dh+q|(i4CW0erg?KVggqHH&GZrj>>FO8onE`P~>Jp5+Qe*(xghpone*3 zu1DM1jR5gVrXYiMOB;=6>H$|z)2x)cOke3Fn~-#fv72Fx=vyIaCjK5x7wtYu7UH2y zLT24kfdm$wx}YVs4BMkNA>nVV1`C;nts)i#B-$)Wy&Zc9@e*t@B2jO_27`#O6(d3f zQ70iH5)l(4vDyrxo=5_+I*Bd`ZwZPf{sW51Mjs9JdX%( zA>}GQiTJA7Gl{)M} zh#*o$5avbfvtlA(tb<&{U~yv6rqjDcLB!Z>auT6hXE50Xt6vJsSTIUh@ClI6sk78M z1cEWI$09;bEVuyMDLC~9Yl2At^On5i86XGx%Y{aA|c5HRqkDqve$iyKc zNpBn+=_%prn2e*^$A7B%LVg zWb8%&7H(uS14v;QdcBtj&=W}%3^t`B-iD(fdyIE)BbuN+J z1Hjl=s|20iY}O0NVkM%7POR0$TLmwSrGY9}IG_Rm2jl^`t3p2+aIGK&TbgU&-=>v>s+%nlBRP1Tm*_D-F+c#|3O2I|S|Agvju6c28f}K4-G;3MQTwF;jYKaR z&B!iPI|xqze2HK&#K2`YN;M;x*q2|8Z3>7gbgv0;-zr;{WR!>9^6WaP0KdH^d8 zVS^|P-yVJh>H%cIL|dzaX{L}ypaNJ{SQG$?t3+72Myw~i4LU;%adVx$%IfB&Y8}&# zaGi09w=$Z^MKvKyD89a^kxS)QYXQue!~|#K*taO0lHl@apQF%FEBv{_QmUi6UQzI| z=)?FePs_XaXv#qCyC&Fd>TkX!Jb07dYA@b}{2r1=Hc~BCd~D6bXn%C-9nWb@rC_bG z-gs|kjzX! z{0(PIY%gm5;t%KYP}*An+WRJfV{)o)schzsDjc(KMa6}i>~*TltlOR8WL2ggffBez z{#Ok(s$B3f!*-nPLw`W;*ECS2V!nLOO_Z@re6@? z_~N%!=oLKu5cbuSvwSa@ilceTLf3Y;3y*eQdwYlAQZRPiL&yIL~}Uiw~k zk*Ck;F=Z3DM!pQBXD3jJ@sy@YK~m`>Mw-nmD+EQg@t_%5tU%N!(B=0-r%N9Ux?g=l zed2yPK*f&%-H$GZ0NH0U#poRxOM@mT4EL^ow@$B$T*xrLR{r(-BNu zi3t!xUR+Fp7e0N}9g8;KEcWf_nA$7wxdS&2AG+~?jy~~bP52Q56fT^HE^BP^L~8CXSa#ff_m0%s zZC6}6HP)1Bg1^|*ORw0rR){m%Lba~=sqDg2^A_GDY`eQA;%RC`>se$;Pwjqjv+yAo ziw2^{|F1O6x^s;(QIsPOiO ziw`Wm=*Nq9+_ZH0awvJUw`k)s$839Z8eDMHKnpdgNI!_BUBgPXNXota)ag8Im-lYP zXu`=S5$c#Ru>MfPZO^0JQ*Xl_y5~1(zx5=V@WQ>_ht~J?)cyqMjq72}nVEilkXn6b zP?ymp`-_q`P4pNDqG-w$F1Vlb33>@xcyw&=D&a#f06BR3^}(H zmpa4Q6HG9d$!ONIZ^*FgXohW5A>rbrQ|4ltnc-&SL?TYQnaLn1i~6Xw6)1#RaYqv5 ziXxZ9jQN8*Lu(}(;|y&?r~O2z&6#a>OJUwMIv#N1HH-H=aM#imMrqBWJqH#~)0=nh zH0!4=KCoxe8cAqqx@hkMdls*eAf@ga{AG*XX3o_L#D98Kb9~{dE9OMCSM$Pnb9BxX ztF#xg3wCJlJjwJ9RBSVgs}Y{d)jsv+BYv13Jv}Hr}V^v*_?X!fW?1+PP83)pHRp zLBA|9>K>+eLYA~uT=sNALP0$W%JdK^exfs(E_=km(v47Ih<*_Q(N989y8_cXbL!7g zQ-M9di#kxZRP5S**amTB`oZKQK!7WL!IZ zmDlV1z-YA3)M{L-%V2h6l@rl*#YLhM*Bk)7r3FnQrOd zxmsB9{jh6qm1n_Ui5W^N*NwjuIh zDv_kvrYJ=-3Ht>H;g(Gc*Y{4IG`XhfYM*XWShh{Etw(b&O>|=Qkl51O+fq~29J&RV-l}mAJ*F{yQYFKdO6j$mz5UH5H9OeJR^BrqBbCImq)JXt=8jaZOE($K+EIK zc*=uC)4OH&$jE7TSg_$lm9cgWTO&GRuI^0ksb9KiYi(OC!kyVp*^H1yoEYj_e(}0x zZB4EAu-zqDf##O$o360nC9n7I09t=ybhcawZ^`QQRhApfQSlx1PdCr&2)6hg!LYxrefHz?*Bo5hG1V19m@G9A zGgi!!*My9s)hES_vU=xtHuX18X`dVjHn;TkZ(r~Pn)`B9_|)yCxp8oup)A8O_L~Ct zaZhO$BP#oDALAc8HviN9vGtApMkxJGdBrE{E8L@FRPNkypFCxyo07Xs7D1pQab=r^ z=-#qZ9dQ!Nc%c_eP*E6~SNVlex(`>Md8}xULT37sP1M2%5WXnP6tILut>#!upXKY!LZ!58LIB^o^PRM0)Iu4MVKth5Dp^$Ke0O2O) zD$tNZxp@h#+5)BA;e}FKXiZCb3oS?6mjbc1`OnO*4j&=B@BjNgh_$o3v%531vop^# z&-46#c%*0p;51w2hak8?{yi)cPo5NG;)|lla(H|4m6aKt6SG&l{pcpHlmZ}-lVPS&85{;Y5Mk9GhZqr%A{xj4Dn9cH)-#oi+0E$s3k{i#|D_Sb=hN>&lb+Gqn>Haxk@WWbpmY z%4P7Tl=$Iv`Fw}A!nVHoiN8$V^<-b~6T8nUpEbj1V{|NMseR-A8}GlouNha)9<6Da z?_BA$Je40~ymOKN;cz_&|7qSG7j`!E?7D2?+S|RXPN=Xrq}D};-?{se2mZdW*}r{Z zam|FybEnqGD_7r|4Mfh_w%kNs!`O*FTSQRd1Zo{|Txv5Gbb^s+Ac|xhTf`O_DWTFg za`NH#X!rQ}u~k=HwQ6Zg?>RU24-E9*_X=2i?z!io|A3e;!@?b|&^~8fEO5)?qix0UoTI_``5>_HnA!vfJrG-6}# z__6%cH*b``e16-u=Yjb~;Cby=+aKO_V&~2iyXIbbR(mmr^s2`V^r{nYojCCp-1w&a z>{B=+CNHoB>wK0 z);6*cMUUX2|$Yqei7s%w7PUQH4LMqk(gY+B9 zn2C}hcm}8#3?<14jMkZu2w4(+7D-DWCDmnc9+28d(Fx^RQUw(O0RxZ>5zK)U#vDii z;wvF34*ANp2`ULOLVz*LtgAvBV9h@FASRK2A1TA9oP-G`ugnUNpaZ}JDYNn{9Db82 zd`Nxn@YtFnii-G%Z)6bjL5`kV`(aNyDY56Kldwmj&d$zvOmeW_D0!Kl!KB2zmd`_i z`)7(#u;<((TU8v|y8dfXY`-LM;}*V2?)#xuM-dgOC+@x(5S zMw0vP?GDD_flZLuzJoCg9Y*m2Qw~XBK?$+qsx(o`LU~04=)1gO%J~rhBIi$O_z{@e zP`s>^o$ zAq*DGIv9}$6MS`1i71v7Rr86@oMqRy&Fo!H-uWYFJUfTP{gtcu7Iwu|7kd+u6@7)G z-e&QM=4#-x1xSb`SSCLSR)BT$;GEU#ez=;sR(@*sg0}fKz5Ems`#~qPmQ7jLcJxj9 z+94nPM^M|ja%JbVv(Fy-ApH^)*YB7V@kG+^f@{H-a=m#o>i z^L13l(o;6>Z|rZePn&NTXe|y-^>8@emsO9oG9(NI)f*T0$?v0`HQ`8=zRDd?d%xLIB+O2nqE@Nq-+*_#C+VvjV6VjP2Ityoof&i9| zl@;7PM%F!mD#xo-8-mf`Il&;nma%exo+UslhccOUA#{P>uGNy2G9$W`-i>amK{vNS z^ceK4(OFTc#>l$o6jhGu63$_GDE`Ely%k$Frsra-v%;Jds{%NRo%nlTF5!|9IWit` zz|1RlA4`V$9V7`0GSDlVuh($y+A4lc^K!Gb`_=r^H@@gq?@&^Iw zYK&$D&H-ItUIWOP=}@IdJ_7c*Dh0Po-pkHto^hbGdq(pXLCNt7*=$$xrR2ds6cv2{ zxF_*VuK7}aJTopRm|J!{|4~R#L$VKsq~~J_8huI39Aa`{To`^}I2soLiSCkn~*E4ZCWUitU^n_ih#+p}bL+c_al zbLHQG`1fDsfV*s#F>t$n48li`=GGu^>_#KCI=>d#I@E>mTlfwX1@PVY2}t~-7t629 z|GuNI=j?#Lup&Bh`Yk|r#~tZAF>b=~GoUN5jo%AZ;Tk5{`{>#^H`mwCvr5G}q4&{O zAN}k8zn=kWVep$Xqb%&Y-~<{Uz$uEp2#sMr#SW_&AmS3M7$;O`cr;4TK^*Y1UDT&P zG8Qp9i-mbX?qf8fQDlG3IL% zSqbyGKjsf#4@F83l21pHBaeBE7;Xc(30}eTvH4UKL7u8FRYD4TWQwfFj=9%W2bFyi zcv#v4F>+sNeSSD%DwWAS#$H`lDswG9n(C@c)#qfB6w+pAQHxc%DC6*sk#j7uT4j|H zt4&40@vkDydUo{!gz0#)12MAWfB3lwsfB=hMe~ zZ@#$~i!ik_XV$_FeaI;3s;Z_n>qkNRp}%n3!eg(E4r`$^8pCoS_$Dw zER-@?yNU*B#BQvCus+3>;v2PC;>*Txw+tsmA*=T^l5Fw1yPU-AjA^o(2~(&J6eyS9 zfmF`eQeVoTl+A?af+Swb2mQdC#fnXzi}KG;lXu>)EYoAtiqVATgPyEhNw{FlR4KKT z*d|F>xvDdv=2xQ{tO`?hBu4bzxD|W2WuY;!W=I0I$eYXjVR!Nmy9I4#t+{P;P1n}i!dTGl z4%QVpoK>|Ib#)cBRZd4y9X=K-tlipGv-!4FM>kKHu=yw%{}t?67l}b3%hWmBkisKL z+$GF;xRjw>pt=HQW<1$184U*c=UOdD5UR)?Oom8MCQtSgl;0i&MH2L&TA+VAln*m5 zCNM&z1brE>NV2q?g@nvt1QKqdD2V|s&sl&nwk%8#$bN@inWaQwfZTWhlTr3yGRhS? zn6Wlrbw0K>-wx=eDJ%L8kK21c>=8uJL+m{LgaNZ3RcnReZDNDo`+nSGd>d5!_+abd zzOL5d6Qj!*CXUMrK1J3KH=-g!oVJYkF{l;p(&ZKQJIdHE;F_TP27@5Vq>Vw3B!70A zLT38A8vnJ3>d9Gj*sQMx9Y#z@|hsip2 zD5hQ}q_}P9gN?l%_QuJZ`ZrB!DA)%k?{M>e)xX^R;-NiUAnAB&aomSDmXm12~beaIJq-laFD z_~Mf_A?5AiaABKrhDZ{%*|3Ev4GMhpz3+!yoX*l5z;5rp;^RPbyx51+fo6-2bA{f& z7awYvf?9`GoDLGLD{b=jBOiWvWS{l72MMHxrvyoHqI@1%y*nhLoe~ek{9p%vYu!f< zUTIs|ike2{`c&+ySep$hzENxr9v$gUk*q6}ilH9Kctpwl1l5u0AEJ_q3lyaGElr?< zOcH~}?ORHt^dOSA6wjxDq14iSEVU1{X)Z=AG9p6k`$vV*iSHQ*_PqkX6xlGL%JzQp zrb%UiPwDii!92B z#X^zeXqY&@54+m2sdN&37DHd*kAT*r4+Sdlusy^XuYY9vTf&(E(dbQk_Z?U4zDoRx zgk}Q;19vWAG_Z{{vhx-n=0pYR3~$K+}5} z|Nr{>GvyyyUyKND$#`3i!eYX_(pfPrhu2Nz(x>v$^l6TtF8zNaKRnIx;bq47skm+g z7>mkhe;>%!^k1VZo_8$$uQ3jemHI!GQ6B4H?&sw77<6<%5#aLNf$<9DcYHHXQNO3Y z`hWkG{BL?`)-NNkzZQTD-#{Qb+}o%HL~Nt+?IXUd2J?TVcYojBcM5C5XdJ|8r5BP@ zdF4r}_sjH6kU*m(=D|t)AM2xM=ut!0Gf6KVu)Tvx(y!>0QqZ2BtYejuuFQQtfLtLD zgpkmY$nuzD+iNpM2Fka-5(w9fI46!In^P>%&wH`W8EtD9STd{d-A;M0*;e zifKh!OcLpbNe!m@bJC(09R&Sj*XHx@6e2VD90V60TPips-~);XUQS0NmH;0JW2;~^ z9F1c`W;7mgprg?ysQCJVh=WDiI-dmchjRZwLjL_E-26TLi9~;@$Lmd|Qc173Cx!Qk zFf<7S69b?pc~AorUi3dw!vw7t^bdGbUX3&9)S&GE==W-|BADjV~aZN6xnv}ZW(i~Eq6gz>hgM;SCRB$G!zOnAY7mri*TINstE6`d|8QmNF3M?fNx zOs2d;1H(8|G4n}|E_H<8qXG{?@DE4f01-bvnac6j!VGh2zU?-p*sd@IM#hGP2Lu^= z0nq<3!Z&e5xxNpV>saNIQ%c!V%CnSGB}SG^A#+VAr5k<$Y#d%Nh~(@U^uL%0lH$f; zjdmm#F0Td5SO?)&U9HZgldE((@D@tc>U8oBupb;4^YAf}B1h1Vl4XayLpSzeQZ6GZ z*MDZpMdf^3a-6!%SO?);{BY&I`_U7~O~G5JTw@)EGnBHDz5QUnTH-3**oSesW>8l% z5oYeN_8QI)A&zyBiJYm{!w!Eos;Kz+;QTQUQ%bpxp>l1_Z?6#?6XIA0QMpcA-7yZs zW20X#%7F_u#$h}bq5cK8lJ|&9r3EADmQhDia}Vn`^k-u?78&1A-+*(o_x#?S;B;@B z+;avnG7);Na?k(43k2t$?w#O!R-$`u&6V?eHa=Z>n&wpP(2Cqxt>C5Rqx2}Ye5)s` zk=M0?Xxg4n85#2U!4zHy z?N?x%`sqz(bHCXPC z_aNf{KQ}za}--K*7MVC)=<*B%t6N9($#_rVs$xPB$sFlj;+&^LXkdHKHO%l9!~s-|}Z z&}{F%rI__`>Aqj~O~)DK|5BuN#gLx92H$Y{bow9o(&g!Ul#@zGg1kk!G9$-k`z)1@ zbis{8B~g7F^E%@&{#szAF{FYDVv7C2+4AB3S2jz;E1}WxV%lWj4Q7*tWdp4%H{WvG zN=#ZSQxeu8(FYHIeRmY}|4{xj?{{e}R+Bcsb;Q^7Z=WA4HsF|Dk`4c06j%A&A7rs) zDe~RbP>b+PAOL?As3R*|A8y| ze63fwBj?<^;rhF8*th=P4H5ShptpNoN5{P3KNnr_fK9KrJ#fLIOQ%-~Lgn;Jf#!{i zW^8H>XgO(I>*@)+-u&#yoJHH#&YBnS&Y8J(+rruX!@nyBehccjhrgQd9DNnGB&3R` z6FKuUCXF3Mpfmu> zxte_XGQMnW?lx$+9`W6dT{k;{@l)*m*y93!F8_nNX`Hp=)ml{-xSSeXS2_Mat6QX? z+MKDD2Hgf#6>9&tb<-2y{c>#O&-fwYF82MalnlAjMBju-mmK<^)kHB0f+zk*g;(V~ zv{7c6_V2es!i@0mDlt<5e>lJ?5D>mvIw1-vQAi4+67i5p!h~8GbtAw1cIwdkhf;6L zZ-a`r>EzoWHR>9iTt}*-dUz3>@?;WJfCm6(F*jw`MetaR{iyL=IhR^NZJ>5gmy(s& zd#J~V6(7|J4F{+m@w{|6FOBk`_lDA_7Qxf!IpguurP=(nC7X`oeTlG>jkF1vd(7xx z(mY^B|I|H(G7lkvk?t|4v**bMjJ=!L%9OgF+oIcU!WVptrq$`uZwYoLM$iPCNRBV_ ze$!u$IwX&=qi%q*QUA&PB%c|_pAIGQAAS&xe-)8Bp{~{0sWNH-mew-9LA-_Vgb-{1 zFv4u8S_d=HaoEw6$)ZQZiQ8)?Vhj!L$p`n(XhCY(`;B|nQZ~V=P6v&sMSb8_;J8$D{l$4 z#-&XL)+}0a>`$idEb75!R4p}`+Je7Bj<>}m@{7{pC>koYs5xw;QVtuc7dnaRYP0|U zY8E>2#4E2o_R!n!(x3e8Mytfu8*8O1S4E)0?r=$KpV%N-%W5t-_Tc_X-wlHg{jb^z zI#cE~&-8#tUeKKX+(x1~w*oR%)+oV>*88HWBtV^qr>w?O{6C7S2Uz~}$FhQw=2 zNG>7k2PFy{=ZN(KyLDvzDeN3;K|#kl&d58OO<*DoWxy)ze z`3)+^=&IGc)4@sdm5jsCYBVxnyOMxck6D5JW3NOp zzLQ^}i!F@9$m*3ux_9i#<$U9xrEC~e2iP+3G`K<-w~_$XVIm5}Pg2D0dLuH~&=Zg- zOAu@nal2?-Sl%j0oY7w%E#x#-jxK=ZHzwY>Yj_@T+wlj%i<2?BiYj|!NAOAV790sM zqw%KQyXy@WpmBkN_f45)92}8PK3VwlV~VT_PaWg-umhBiDn)guL~T!794sBy0*T@4)%W=^;2Th|FW3vyNlPiKv%AwNdq5{zS;}a3izc4AXOId&HeiPdcSWfV zCV5F1m%-Y^vN=SfNj*XE*8-nn0nD2De5x;nqUh#GsN<;j;dMOX^im1urjzLJ7?aGH zDu()pSuW_g|3>{qtNof7c2L&ep}(Fy>jvGEXW{r-t3|p0J#A|1LRVSXLUx_x66R^LnM!_p>J}HsA6^_PFKwOVDp*{H6?b%quFIumldITL5G-q+ zr5;qU?vo^z(}=Y9Ad+;KQoYnRYOl%=tgbxTtq#Q}miV}Y^5jJ}8>0}$;96)0)6zg*EG!EZ2psuQ zo9zo=anEsIUsx!AE(UC%dtUmcFXS&&I2|COWAY;^Vh)&TgV*HUCjC$4*5IaL4+Pp% z6zK_oY$AE#xC11A{{0#OCrkw5>^hKjV{d~$*O z6We-)G>Xc*<$c2*hR1^*^pOmab||9W-f5Tsj=lv&2GD6 zUV)`JC{@nAKHzSwE=v>@oMqPR)_IIT*V=niM%RY;d-h-+t$gGQg{C(%k=gJ!OOKr0 zlFAxz$dyQBsIXBYsc_LKKxA3i3y@R|W9d|gSxXE{O5iJ`R-zwImUm>tLnKWb5Uz5o89GOdB; zwb1H3c|QmM^8+6-A+14cDEsIE`78Oi@c!4`g<_(wy{)R%7pe*C-AjW-6LzesU*6PM z-t6mE<{=jQkkNZl-8#Qt-PqIDjsE_1`+Hhu=;3wiKIgnECaqdMjX87G-h16$2}aj! z;`;W+j&L`r7eKn##jJuiM+LDDyB#mXkRA~t^B7(^O@i(;B|pM_WzrW6B}0vAD%561 zX&R+zlqNWPOw>QUaEPiH=SN!xZI$)D_sLk=t6*di^lXeLYxDD%6ebj{%f%jJVjneb zpc?qY{-_0GWMDxT2QX&>mI*Bqri!uQ=EqnY3IPyO5EjoG*IC&SJkJa4djG|}RW0)Z z;{xZ*o_D?{=&1^JuQ;p?YK;IwSRAAeujmd|q2uSz?>-0Rn%9!}Yc*h5;0#n$+8b)R z%jYZsPtL}tE(+fqW|7#Ti#7y1Dm%x`TD)XVd3Q~Ny|NqsL}HZIjRC-J|FYIZVdtj1Ra>x;1CUFy?oR0eeqb&+2=e% z$~&q)yU&x+xIagyW8NZLd1w0iEzZ_yoa4bRW|Nh>@_e#OrLeVvlUDzJp`GK)pdB;>@7<$p`HuiC$DPtZWNvO@KGlI(6RZ6DEme z6}VQuV!a4^0I$V$D>>!m6uV?)u5Q4JrB@oW@DT(bq-tbSxcu>02{u0U6G0U?Z+dk0 z7Aq9wB(F8-6GnEv{9p3lX-?24EQSG{8SLumJ`UyqRLh$cqmmiEds=*T<@xB* zVHJ?xp;f`(^Pdl2LyuE#hi(fZ@@u3Z^yHDx$ECtWQ;PW-%7?Ew)AK<*mWg&zAn>&# zp3hvJR~so;NiebjfYJgZ3kyaTV2pQ=X?|^{Ax6G~%2D-FUc$(w<p&={&Y211-(yzcTTRn`)<;I4W|;^f2$aBJ}s1dJd5rt`Qknxu^-C+ z9(q4Lc?uX;1bzrU?iiff$UGAooQj6GSLCmN9<09puDifoFz#n+TbX%j92DwK-1#wM8;kZc8hOXTWOdlrk!v(g2;SK#-^cux!keFA4IM5Sc;|DiJ&Mc}6jWbN6Y^+S9;oR__{BE9E~mL0O5f<*Tuox#%@ zr7@25ogU>&ovbe_mhk0T9_E1gk&^W^o|L?To0L7|qZK6_;V~BcuGxCxX>ty!CxO z5RFNr6Q(Vo7)uyI2+byk4`} zVj6{$eA*oOvW%srAmjK=LgF-BiGv^}^XxTk(ofBo)YkiHV_?8ZBLf=sjg zd>Uh|;;ZU#ZhTc8z8+pXv@M7(>feO&Z3xl_g6JZ&vpcw9Si2~?|HzQ#F??AShgo`* zUoG)oRhAfrd#mR7_wxGouoZ?g_;uk0$|17mLn}ybIft%fKJO_U$gbDRwS*Q`$w}|c zr$9yHBq|YolD(KJ#D3Q0AO}{Cy}<)H`d|8_Sen8?S2m5t(62RvM5Ckq~2E?EaN1Epf{! zbW=IyvY5gAqdUm}}cfVfXIXhj^SM|VEr3QlwhK4oQV<1asbP(k8~-7Cvm)go_7q?N7BqPS)$?!|4HXXLz(F@M zMSJsH3`aR2f>bgIW~Kjhib5Ls2gFHH$qiSGn38jNZW!^ZQpM{~J{r^vBS(snt;Ad? zI^>izQIb;*(NYSNr8ld7o<{8RIsDDh%L2u6!tDmB;y@tn9p)4|V*DCWCS|x#2Z=M6 z$x@n5mRdvynk6PmAmP}4`Z9rg0)ap=NV(l|qFDaj_b(IiQ&#N1F$XwfnG*Q^0p(f0 z&$oq+=-hYZHKhf&ZTjyt8Hvdi^y|ZUj$FCrjxFn{oZky-NFdo8;7(Dv8@Eg0 zEEz8q#6KSW!){H1?qWTFTDGucdDpw5aH&y}FMC1(H3n4ODT;mz=?^Ovp7pGViM<%x zFz}OOyaLgS*IVgul?EH?vTIG4rCY6rN+pS*h3L0_bwm^{H%b$Cb$1l77SlT3Y|_Hb zdxOE*yF9_}x>&e!X7$8zRRxyk?~sg_3u42D_GXc@7-nlsf{}K_TNjqCxWG~toL*HO zt?!9X3cA3GTRw0-j9cSjZAE3oiJo=24njR#<<&nx)lnU4ov=uKXM52*Yt6{u0^sc`Q*f9H zXPt-RSpg=Lk;5~g;N`&Xz}A|*qVRy@?H}C_N(7z8_Di!?ejQ_dY}$91U7k!b3mW>GYNjjw8r7aOGob3_51*en?@!+BA%Wv)m- z4UwpU%8R6RUqA)&S7A!B-AxfWYB9nxQeP#KM&oKE)6HzT4rk@yl7~>IATf%-t89NG z|4gINiNBC^?@B@4IR0lE+s`aItw#RUyQI(k0r-_IstTAU3hRv0d{O8%N^qjtY!>B( zp@q&x7I3d*7A)!KBxA22&Xnir!IAbamYEF;_}{$+Dd>_vvI)%BaRj zd;4%yS0C7zeo1}^d`lKAdC7Qx#zdX5TSNCt^tzWWk`v%AdCz~JKhlv69k>ydeY+s$ z@egSz1Cn+M&}e%e>KRf%vRfT>F)8kI_#)u|K7f=U<$$6i(xk`G0a{^_rn9BZjfZsR zz4)YITRTr@7aVwOtB13XOa}mL3&`(#!ChAdCW9k0@1Bj0Z1lf?;3+#Ur*XLp1HF$IGVpgX!?{~3hfpur|&OJ_kB{+8(>)LPD>DVP3ahB`+kD)PR zJ}5`(GlLnv9!e&YX{1Wa@1PxY=vXr8MZGkAv(pKC(XXI`y+qblR+hmclhNRmZw9?i z<=0>|$q%R*uzp*AiemnX+A%^+C745YOnf3Rye$y*hiw6iAALq~Bn4R_p@0QDC^~B6 z(TFXEflxg(U022U2?%LzD~ET`)PQzcIp$jN#_ijTd}QXfi|5?hU3RNDReGs-W39%_ z>5N?)-%j{$ol|=2tew3rCp;BXnitj1(r6k(9W@iGYCO`Ef|BOi&hiO7+vJ~E(G)5X z>Ex4Lg@>=4a?a#xJ9BCf3{j`RQxR|ofZ~pO0T}ukel^4wH=Uinqols1z`#NI$AD%H zW|zMTeB+Dw96AmF`86~>Xaq-bm4b^wuqD)ZNo?eIuu9Be-jvKxb^+Wh2gkVTOWmfREs<6p@(we=^m8 zsqmQempb|9I-@}^r|?Q#iukf%x0jCe(_phfi%HWA;$JU-ars)#q!+ZdZ{CszrdR)~ zdb<4K!>_Q8W5G+u?iE`;K9?lTOBOM{mv=0Zyt}^4zUs=Gaev)+L zB-xQk=L9LTbBZE6=(lIATIWH(|MLtNc5A@? z5p^Ec8o74zW~;Jgtfl~4&fEZ`&$F+qeZC!g1P6(cpIGis-{*r?4DB5bh2x4G8V_Jz zLN)3Me*hT30Lcj0?E>?WuoD+G)wOnZ)J{&{d74Up?yB$JKB=|JDTYnvU})YNGqlaF z==;IJb9deAk<0G~kk^Qx#q1$aOy!qYT=4JK+-Jc#O>q2yHJh8xu%E495x; zL|>Z~lY&7WFE3Fcmpd4AyF&dTmrQKD!0QSz{c#grWwDsT+Q!6XC0&+@w=bNrE8q&1 z6gYcpI((u_tL62DR>@V>S?x1vfh38vpkaV*<`!bLLHC62Yyb!PUC>tH?P{rS06jp$ zzi9|=n$!i0-L7%~f-ZPTK@h?%iG@C~Ian61XtqkW;@Z+?k2BO&;pd!IVT-!vkH-B3 zi7|7lIE>ksH&TNS+HFJ|h7RlmL*R@t`7cyxjMXN=?a@SI4mI+}TTj;z>*HYaO!;q& zMxaH}3bZC)b!U}JvKH!jt=1*_I%;~I1tlR@VAqU=w@GAhvNl(Q%Yx0KZ((8!guw!Mi7N;|xyxM)yC!W4 zHlT*<@?sSF%vy$)*pbSq7StN6sf($rs5_}gsb3IY6YLp}SIHt6S}lkKM)ZG_MSrRh zFQP8rTUgac2xYu`^LYt6sS1AS zCH)ME_k1`&z%XqQOms>-wvf1_EZkur4vSijfLe}G3wSpbSRy%0p4dVj7_I7W{I0HWjX@fgjS7fsmt##Wj^E){pUy?{bo1~jqeueyZ z`Lio3Cg`kI-GuV}FtooMrPIctuN`xPS5<`MT1|LQ4?%<$pS%sTepn9;&mIjVl44-Bns< zds15@*u~P2yXlf9cPLcU&^00A0tTC&uD?AJxxFq;|731O6KgWDO%)4|Ju1Vj_1;^;2^ebV9-R=m3 zIcJ?U)VM)@Y5i*8UA)-i7HP0pW2hP*1IM(MSZ(>@#g*e@7A=^w1PyCdkGaF`9pS>F z@T93oQGx0H1q?V!@$QB~D(c=_`5ufXT>56Wz`7n~zsSmO+~EPtWX zRUdmVy?%T=?w)Im=t?FnTsJEii3DdILz}4Et)+kQ)}%>qO-?WTbX!w5XR~qLO`AT) zY2Iq(QJN9t&GJ8hY1)Bx^W<+QKRg><9qN9#8{cG(Y>c-Coe^+AzRm~jY`uP>(gI? zZoN)t|Dwz(9}^)c2>-)QuMy>GResD{fL@`=R0&p_Z9`{)^etA4sS=*&rLU>XjM2*2 zBxU(U@OlrnAlPWmfxWQefE)pKK=xu`fW&aeDC5f>Tk+GPhS%(VUaQrZpDC8;IB$8@ zBgt!!x^4A7E%F+zJOpmh{C?OXH4Q%S>kXFQ0{Mr6U@W0$8v^MtlzjoDV1xGo{7>^0 zqcLkJ9Zxa;MyXD+hA-7J#Q=leD{S^f08?|CfPnM_U#O%SDl-Y{*)1SM_~u)=NDTf8 zd?Xh>^8je*>;zuH=k$66P70$^0wD1vf*^RjP9GW}2IVW>klz?zQ&JL~;2fPp@Pa{b z^T{+=r)3$M=5%I;Yn1#SF;BXjouuz!v7CAnHK>;x?@TDeRxiKa%Zig=|OqxZ`@T006KsJsT{LMft~U z6__JC>l7)U2!vf_^WZilWz^0DjSle^NVcG0`i z7x%zRPTqCo$QZsCv#51BFP97$Z3gGI#2-R(5tfcW$k&Y#4@G?$AJ8|d$_bN~Mm^>tw{GPWReo8)X^!-VC*mrFr zI3FYZWg^+g*G#kup*m8&G;r%hk6d)oBk&Qj$?zB{U*OOK_?Y@H|2YuNUYG}5^05&u zh{S!vT(ziQ%jdz^aycqTm-j*)7#xX|a7ccA06vzU(GP0IicjulFJbRN`UH-yY{z{8 z*tsx{Gm4>iSB1%P(Mv>cQ$p{#ghjmpJ5D2MQ6ljWNQR`*{M81KxZ?qw#1Y(uAUe$8 zGng|YUczGE54u{jJsK`543%`oHwrJVY@1Fq*DqbN^CRojiW>O?`Lpt>gy>lsZ~o~0 zw&>CY8k4c2WWgIRtgD(bCt)q{a^fFhe89$;pK#4*E6ROC@~z(-GTDqQ548cCOG_8| z>q|VlkAq!c+-=Qf0Pkz-@>=H1v51By%Z4o#g%?g*lGJE!hCAH>t){w$*ZEzA0WDut zsL=$5MAw@3PV4w;+M==gqk*31&DtAo;QaOU)A!3xPhFv9PsqK=P&Ce6r>%Wy*F#fX zl^%~tUnK??R&`lh2@b6Ct~6w{Z$vsdVYdzuD&kn2gtL=SeF?V@9y77>fksuSE*1)- zkH!QDhaqm*80J%8IbLaN4~>p9SXU8835MNsO3Fcbc-}P4qJ4cdj8{&+_DO4dxZ<`4 zD?;ryW0l|Y;#GoYqfHGfmL$yNU>n~ zf;7#C3z)t>&Twn}YAKo4q1 z%tL_cz%gK`S^d}^h=-Lb8cAYN)Sn2#pwH&BSUso(=|{R9k1XyzwrQsCfvHpy zGye@{$d4Mm?c-;@@mZi1!1|>ZT+j%;@46N)+qkfj<>f^~>64zis0YA&JHNsp8%9%G z6^vSZQS8ux20k7Mg!oylV3aL%Q)@+2NnL>sfK$|Q4PXnRYdZFpFT8Elq|3qG`RzCT zDLZhKj&p!(egP)yDi-uED7a5v-mtB20tDlk>fyFf`cwj@QQa|Wk9};F9)4vu%6IFG zf=<4}sL@(gyg;P1ndPKT2a;wvarc>G+beh~VgMy#Iz;`I%89aqcFrrX!VE8ju3Zw># zA2Oi1lzLCaEQPnau&^HR(=e(^ z+gN5N8lS=u3NqZP3elazYG*fx=UtMlS+Zb4%k0^an{T{+^X8*d*Z2A>SFWA1V|iWO ztiXf=@`pv9wpc9KPEViq2%ymnGhz4c=e=H^AMLRJ{OHg@kH_zyP?BhmEZ=<5i_FfJ z>C@X{qMp0)oDJh>GtC&X{`>@sT#*haUSPB0t zeJ+fqcMN^L8{SBtH}o;Q1G{xAxU=jYGT#>>NpuF%fhejrM&>6*-LlForgUxv%8~?B zwqSLaEG~qJjSvS~V()tF$y$uv7;vCCPreNG!>F}`54;YC*A9+*?RKwYXt1ogX+d){ zGb>R!y?H_Nf#&kEW-zTP0e`$9IkYNy&J^BYG?W zDsO5+^C*_Pz9pO+Cdv;qNEHZz2Z0f{=dcESr;P*gENxUn`)gEYzp&14Z zSmQcXDhvO#Dl7$d^9B)U z#}&}PU+6A^Kx^T39HZwg09c(CD*$$_CJco~5-0Yp1rtRS-kd zg1Ml~67u`pb|Zuwr{|4y;jEb5R%WMxr^qNeW@#YcG&U~-IfjL>q>3$NtPg0-bg@TM zCRBwPBL`@!uIhrzDja$PM9<`Gv;#s5w3|vm`^@xRw4T#KT1V4*8r%c57LL`j9HfOZ zQLBGkXP`NTp#??*W2})jX|*g3fetc^M$iDW0OM9WI$?pu?bLIcYHKTZ3smjs-vCpgN>Y0;{? zaC}Flo-2Zs>Jxcg!!kMXdnsA<=A= zboFPIHnns{$LqshpN|%RU~-w=%o-p8&VY7JwBE?cbAZOevKl>VUmdN%FC5CZicV93 z+gzmc^X2UL^Q_jkySJ4>rgCRhxVcy~fYv#l61#1JUqgEUsI3F^!~)60GYQsHYSYr1 zJtm|;@(mLKXec&S6hm6C1x1qG1IkJmlVETF!NqDECOv=_V9;8$0*6XMbH$9rAPJOV zOb!4HX33;ww2);Pj^=^T>@w(Ei?uXg&^ErKh-$YhZMu-{0x8vb51u#yJgky{SX6Xt@Fn=M`wKqHaRi z^3%F$ey!7NFT!-*YhxYOYwI?>c-F3R8z^#@9qCxHWApl^Hy74SDTUAwM?7x5NsW)kvY0@5ksMt`)l#k00_;^34AB8>^v4`y zbSTXD@GR|6=z!5!f(8mN8{+XG2mE}D#q&GbVWdzPUqwcfR#59<9I;^$1Z68BG{8MZf>nuNIEmc*D>?(4-D$J@ZZ1 ztV_2}+Bv1!^bvgsXszwjcTXz7s}LnKCU-PP%RRcCBlNHmd?ja_vGAH1`or-0n$~5! zaM6d07vHwLLofpNH}Bjx;h#5s(Omq+$J75pp9{cs_ewu{+chcHY?J+eeH0i95)GY& z(K6PFx)+VK0~WqC79OM8ey!AUtbbI|)c|uRM`}H^;(LXeh#`)LEe3>J9>>kn89PcV zREW1Y!ZfR(&ta)3h6x!(j6KKP7;aoNqo&tWSSFedmUonvRJf`eHa*nSk=)oGnzo?% z&{=kG_k_sonzGuW+Q@%D*!hEv6TyZLkL>N8(Rr;r_}oTwx4HvZyaV2=og1rg>YY4q zHoGh{oIbxZQ5j!cRou3*vt>zhP$;nr*3xjqTUqICu3UO)aPszpM?UN}Z+s50*LKe6 z-K*@#gLsGN=M_kIc!k8Wv{4--;wobgi4%PCT0&DC%CmCD;+zhK4gR?~c$EF#r49D5swLbYDMy*C(Ztpb2 zyXMdrtVr1JWLjr1Gk@Xm`>lhIp$GK1Ohu->EjDy*Sy9mad8fQv{*}dUtFT*jTG?H| zYwca^-uQ~XzM)SopaEP;jaYY3G?h`FnrFZ`#dc{TGlK!uVw>IT54lbflMIV~Qw*{9 z4pD@d91=?|vFFl4E>kEISBCws1_=M7VucFR0h?qeeoVv2S?c0aG(f9tZ6x*^$?}<) zAC{^wjTHU4@@s9#m6}-9Uo|o13TeNt{Bu#HwB8J;&UGNUt`ksZx#!aVxb)Kh00X7< z(mnWsOO>)RxU50qiK_~` zfzxc2Hp}9(QT5&RiHS=ml0TH*)D4r}o8$pf8ag2>Jb67sn@CCCl*i*OeNZMCf1tm6 z(2Ah)QMOA2w@u<5NcaN5DhCh z&Mh1yG1e?`3l4^`3n!K{<3Zvh%*F}XJi+i`i6gGV&Zd^!_Rgp8+_ps7fQ^hA2(a7=X5$VsO@1*7Q;8+7|rM`s8!Ay49Z#gb#&Hj{N@{js{8$vy_gbF52b>5 zT*Jc}M@GO%ZAp-0)S*s{l@Li8LwsPzVIqk$pU3K-lwW?l_t&S^9{p_ZK{Q{6mdlq7 z+>R+`x4r{|Ty1?8(%9&GL`m-TT?mwYz@#%D;BL4hnC- z1vp;a&B1Zwif6vD^@fv&B4V*ns$iRODb=Q3u6i&MbG~nsAOEP>mP8(!23(u}1*0=3 z$r%pwVEs^m|D%Qo(g(4^f*Ox0%oRI1yNqT`bkMp`PIGj5i zHVSXp%wp8~=PmuXVj<;1x~Aa&WZ&!P|f)F}$^yO}A}WyEI?uczUqORQNyr0TI; z2+fT&8ucAkLV?J(mJPP0zAWrfvr;xZ(ims z&;`!vy}FsB8B-Y$4R)3_Ypiu9b5X3kw9p7SQLAI2z;gx7M$v4K{>PlC)h+N43G|#r z(1`xB)?jlrgG6%3S#`i0uI1=&5+8e`k+KGN84_vXrDw6Gkf(rQtpS9(o9;I1~?Sx!Q-CPV9OwHpeHnitg+vOrVP*xOk;(P;2%p*dJXR7!dM_Fkacr%KcCk9>!A@(~D33l{qFO=^ zPys_@NV`;2${;yL4xtlRWydNyya$_pXWHyy$Lwtytx+iAEgr%1MCG40ZkSzNeWGvU z3Zx_U%cli>FPfWH`aZaaaDPs7^`V7@;|;}yyZ$-kpKKCb zKK~@I`!=JSW%b5lfz>Zx+f(9yX2r6l?xH7}dv2I4I6gb1Y_93J_R`+g_8m{1vlTGO z2Y)avah+g5y#O|~v~4vCdeosB*TWUdch#e(qcXJh7}3+6<5=UYp7d6?ORROzdAws% zROE{5t2x*7eA!|PrKKdy7f<+Yk*4jzYo3tDq|7D2%%g$QVrN9=+@mi%fAqjF{efS~ zx20cw;(k!VM4xyy{TL{@-@knM!fy^9{Dy6j-9z%(tKJ39XThZ3q|4;LzPkz>83KRt z{6>COS?fcx!%ifpZNO_UG!|7kiYF)^Xe<^WHXi`=am8?&#c8$}#G+L!()$?!X*g(j z!fPV}{*XDGWOsTOE$>~md{(pBvROXzrsQ%-$3XeolBvrVtz0nIx8RUA%ot z$BH=%5|!NKi&rjaiTLa+W6-##)Yl22NawlDB`jwZH9S&}gzDI$6_<3taLdg3^SYWW z7Dp}ToZh`-+cn@P-P>BcwBRYw={}Ob1+Gv5c;~nvYK#@r_ROue24;3uT-pz4NLz~P zr)`~FXpzP>wYAll%sV?d>!fL$HecOQ(Aj;~qPde}CKI#N#XH)fjm6M0^Wr%z9ua*$ z^z~Qpj;5**tU+Rn4aqKlV=3ZEZYA+mM8X1!&pxpEEch>I%P=xAf7?2{K^{tfF?%cX zo58Zo-`3gm%-LIkd*b{Z^1py_$NY(4@+s;Rn2LU`YHy#nV@IBxi4n?b)cBw=X-w^> z3GQN&Dv@c1WK$tBeek;iz2G%t@R=U{u7Iy$GO=3L;cTq=WUS(8%ZfQmaRGBwteDBP z|2qpipcWCdVP;f?kySqRouwTmzbk8|xnho#-$z*+sF2HQQNqqFRvbh79RX@7>|13} z!^RAup%=eLJQ$C@{o-64zIYnO0M(vb_FcRIYIHsDekXl^>f^o)$>cUFh9g0VIEJOM zxC76vR0Ip94l)|i3XoWwkc(nVgXFXMaI}|1pIX}}zxnL#^4GVW_>pDjA;3Sg=bi1) z-FS*JnoBKT$feF8-2*kkg4o36y&XYtzr5ZIepPDu2rPT`u|M1fw6{M2%33dt{qeGA zH|Cme$)G41-hGa{u1nugYic%i^xW~M_fHOcpL>7H zY2<%NJq_P+5Z|Rao!031B(oI-bP((?xg7Eib#ojr7YFw-a<9LP%<6pO8eTynea1~H! zjj@kC>McGZ!4Owez{k<#=D?A@K92Vz@e~N49MF+kIv`<)Uf^LOtS=N_hot2e47n?6B961WqG6M}P#$nCuIyP>bjKY< z%X+F7xqz1us%tw-z)M5gZJ3D#B4VQL{7}iJ63_S> z#>>A6m5p~gu~#T~6AXYiv4<#Q^cC2;6YBSYu|(z&|785JVhvHTA|a(Rm&_0}v;jJo z46AOeNW;t}Rd_qp5K=q_f;7v1(K>h8L-qW;rs^4{xcqWlGq1V2%M`z*$ksADUUB>S z+g$}(Kz=?aJ+U^!~?f*yHcfdzgW&gi>-+S|>w>Q0J`lKf_nVIxXfRKa`dT60{2_PL| zXkr5urKl)T5gT?aD7snuT2L3a;Ln1)xVyHs7a()_-}~N72+00)KmY$fFz?;^%6+$- zbI&>769Z*&=?HR_*glK7a&$buXKoKElE}L~AsJqgKU5P(FP2Kt>A9d{{)Kxr*@7n3 z1v(-?mv&@d2GXwVL+Kuy>A-2c3`wM#O$4gJKqV6TgxlkNDK@RXep=ykg~}XxX_&4J zmnO3Ndc&nvfx^c_v_tLSEk=XU!s8GP6uz4CbxqEk0Ec`A(>nj4L0PM^q(LcaA10Id1)q5Mpm{izktGVY2Q2Q*gQ*eJRBACr@puIbLIEL@7DPWm zjku>lcqhI;$s6>={lta0XyS>feU>+wg*6a=TgdV8SP7NI;H4T8kewi2ZsJsyKaS%; z;sXT7P3s%Lq8I`ZsuTP?D{`?0p>G*Nj%v{AB_o@h2R&;uI_84kDJ2!8iU{(6(UE2|vUSj0y=3{EPz<3MEAZkh4?@ z-}u~5geN5)?UET^(Mg$TyH4l@-XwIC1kaixiL}410I|9?8aO_!p4Hbli-VRA!v8_#;~WRI1yY20!=v6?X8MN?3Zmg^1^!cmM}mWf2H#pUM_M2ST>zjS z{Qe8iCfOTAofg0o0R{?YAoqc#xc_go)X4~&` z0@ru0ER4rW%N@18Hu(Ae>YSeNB8%V0-zi?j;{K{A69Jq2>txg#-bq;I|8C!nK(}n zyH_vOCP*VpL^&`hDAAMswTM3r*c@Tg6sIXcfNg>y-b_4v3)rTZo}wjO+R(#{4@@-T zkCk9<&_7_7z_Wvi8LZV-qkmUxwGzFgXw}MMi5?v*X^zF3!S7}-%aE$MaE}!Oy$jsTzR>bSvL0Td++;NVs(S)dH55%@kQ}9 zC6b&R$u4(6flxDj9-LF@ZezX+W#!?k=jO0_^u44tt1`zGQCZEaA9!H3)uJi}Coj&I zxbW;l5SbHc@Ueci6yXI$l@ljmV`)W|D!_$|qywF&CONJ1(w<8lLHq8d9V3?74ZIy( zxr>}SD=)ocDHw4f|8m$~J-mC-aP*16Za1u4-LYhGJHU&ngO7i-dY!@U;Mdq3YucAA z0S{cr)sQ*rPA~X_C50G888F~QV%`c z_X4;U3_0`YBYm4*z$tX;a-trS+WXMYXC4J|bUL@9A{Q>W|J&~mUQvEK`ti{-ryd5% zs&e#gPDMq|Kz@bbeNX}7W?XcSdJ+1V?M>C9tVx?-FE}x2Q|-X-+XGI(-c6HGR;qRr z<2+wsPl|swDaHH)_h=cuk4~_54+yw9WO?vdflmkUNCHFa?10A9=U@nWiX_|&4LD~oIt&J{VgAvV4G-hI#pqgGW-vSqTyMOA{?^xV zXUBdqu|GIqe8~iC)FR?rh!WUtV)HQ|q)h{PbGihv?SMkuCq{n3h?`nsxpqfR4E>M} zz;zE_X5h_o2?ek;|GJo<5eSx{NlTr$pJ9?9>3G4va`nAm>yuP(DYul~0kR zHfJB@;anW`_dSJ!;OFz(S59T0m2q$4`E(<7gnErSO1)40o%$#BDfK1w72!c$G*Qr3 zL#}}J5lvDT=LRMm4T=UNC5dW?rw78K3Ys^JNNkfO5zqSqM{Ukf*ie#2=^%oV5Sc&( z8#!}AO`8)1T&Mu%5Z5c1EOo&eU^HXmPFf@CED?oO%%#!fg7}F9$}VB%fCx+-s)kWK zG)X2O#i=o)2Gl_2&$M4#E4vOtwpB>|Bxz-yq#st5{-?!Q>L@(G*198G`hylksi z?Nj7RIhZ}X?~uAQPefLxcyR$w0~ljS=AUV)}eG5SO1d|eseqLIbM-1TxU zEtAXmIH%|vWy^KP3rg911?^WpQiR^t08XQjav&F~IC!Z+2b8I`BbAb30E8=xJgy#( zv42x$Op{HbHsNJ0nBEN``ms8qxjEnENpAGphYlatomjdb!WL&kQ`xTNtFvrvb%PDQ z!Yqd~w)SoGIeHuY<4?&@MaQs?LSEhMt8)4Cq#Mfe4(1yDqZ>vhLJ?kV@)lzb!ywOc z&@|(*bIQ$yYK>f(XE8`Q15`0`MnXf4TBDONN>FIZ&v%R*1;XX!VE}HK*mRAlM^*GZN`LxS7LC}Tp=s~i2@Nv2#zU{1ib`}XIQdz67W%>n10p53?ab~WbNn>tsHZds}vbw53O<>=-m>M_qWDs~HH zTzh)(KWA;Bv1KNl)nY4XP~wc{IYP$mdz=kVjZrLZ8@&>|)w9P{TVQPJTs3+~w|2~f zb;>=8z?@)!6oh(m$L6`@j`*Le;qX`uey~;3nhk|#c8*>(d9Wj|Q7AGeeM4961EUp7 z8FTBUiqTItq@OpP)sSx+HfxpWw?o9t7(|VuCQwtT+0;DhO6pFspA#$;T-Aj{WzJAq zLopE~)1ky5Dstj~g3&S2y~JaI$b|$QPf=x)78Epnq*OwXh9x4bIRpYa7MSS}o_5WE z)!|P_ZXqDTi2EW!U1GY82N%!@qU=yfNGE8wBy?;f4`&*6a62#?40*X+Bh%0@!os*| zNsDoVTGt4rv!o#xgn+e~EqXZvBmqTv;S4CRSIDdk18J*+wwBZ?FJl?iTQsK(x?DE1 zngO)OP~_)z@VT0+&-@IZNHsIZXFWdSue0)xp#oTiPTv*}Z`@Jt88!Ty8mU~$I6TbI z2L?~MZnVZ7kb|9lr`4$fPQ?<1Xbon63m|56D;NWKjpn2>gOiQH*=@$F~Vxs zSpv|}e>?!{|1Q6)CtR9JGRevH=e#T5>0Lf3Ma|naxn4qrOT+jvy259Y{ndc_VnKA# z)c>Xc*bb=Da1Wx0H*catFQL-1n;L33o&y$9>je*j4^h9P-l9Ijl-OCI0d7zTYA&+l z*Y6}zYof%~zv&oRLGG+Fo_tUy{=zWL7Ioxp)bf0vzI~=G-RIqy= zz2En$pjwwiNkO%)6!=L2$H|kV!Y86`9h>&OO!iZpg4AdPk$;JN52hUnUjjs5F(AE! zvJpm4EGqEq=kwwW;xr~Opfte-2?)MnL~;t#XUgEXs+P5t_}IFp65ThdwPjP2Z~#{= z2l}VHHTAiTU)9v7nxE{x`)x3!YFw~#O)ELB1v6SlHEn7k2PRxOzisK>q2zc=>R9{o zMSGjuS1h`<@CEeg(t;|dqI3L?F~=TUeynYNW%Dgd@p0(hrE^xaH}74vyuJC>Ma2H< zECq=#aHEL1$eYr}?&8DaXNSE@rsPAvt=Hy<`BRpR-gV!u(e&5XzZB?uUC;!J1zx&7 z`Q5Fzes>O2Bx85v##B7ev7vmRA|FviQcYup2%D&wYDvOmDp?DkPBo>P*wcP@s@75O zNY%Ri1wq(r$}_>glfT!XaQQlzB?e2 zCx#EB!DujhD(FGA)>+X^!jqaqyC((UQoWj`+)}@NNvl6 zR^A2V`@5fg_SsYw>hf1>PpH)=ApRp~ZM7ft1Z%ZVgX{3IS1#|>)&^1c)7n~5rh=pt z3-No)aJvVo0;-Pe)*3xDK{gH2n8J%fj~6pPl-MIVkHHl1L}DdAPs~Gjb)P3dJdfcV zp~KQX4_Ar+INR6REdhJ<2WpniW!WVH;E z8#X_3aO2kfzw?H{C96y8fxI=tYjGKz`w&5A?e|(B?7^Bd`ez|RnS%icMF|7t1Hv3q zh{u(nK0|HEVc<@4&PhSvv_e2(q7t8I@wxMP`T1-iB@%(3>|cz_$3Y+ zZkRIXW;qzY>)5efH~tZREaQh&qrZqB=%?+kZre6v<~BOJXYrEZ?TgW?2bPu>84UOu zl`AbC7A_P&=1qepuDoV;-?5#$j=ggudJY6ufOl~^>Y1@^+pF8R5w!8MV> zh*J`DAVCz@*f^%@O?0CMqKSCyD>#kJ3)}Jz-B2^N$W1fP=^!Wd4ZlW`JfbY-^@DGe z{^J;T-`~nop~Cmj3;f51_OPYcS7a%IyWiC-OscTI%G0Fq{u7j~-TpqBwAr76%EMPBf_D|%LupDifIOO`dql`u{(^jd|*IYIx^%=U!>7yBr-47Ol zc@Jn!Ci>ADbj>qLFvIO&puv=9jiZ;)&On>b;5C`#dU^<0@WPiP(ba}A<8PkSpi%+a zuF+J9eWX?@_Ia|e+i(sog7@IoB19zDpEA&J)RQqF%{UUl?MJ$YnW!*;6O%Vjp1gS@ z{quNek)I`m?`CX zY04@_DTGP(Byqi&6pxsmOXAXZPF}x$GMcnWw5yep={8DLU_QQe0I&AHJg|tf>`8mX zGV>X`S#a*%(a_T{GX}gj;}Ozea?>R861C*4G@- zhW-T8O%{g`xo3(k--|pwtyrawaCHlinyNY~P&b4|2Fu!9_TYU?{>(HYQztLlM zXS)^7Ef4Mk`Lm6@GxyC4;pdyO_@!Q1uE8m_&sNyK2phNMsG?S%)U#IQ1G+-<&|!sK zz~#=71{$lB*%K}h1_9BRE&e7vp@xZHHjd^nj~&9H1fTFQ6ne)3%!tj~?n1{vp#^;k z&fqY}XWmIY?M72w=qnc}go9mRp9|<*cJsh1dyk{KIEaWj&(GgPXKMwPM)$JG*_y&p8DY%xvJzCY}QIyR;rbx zo&}!+Ij4|uDzG5AP9|HIlr_Eex=jAsTQWQ{KmXxNh2qN}lx*MkD%JOWD)(nUYGvGy zpGjoM1Q(*sKXMBFk6^7{F&yQ6FIDj0gLipF7Lt5xG=2+C%T%hA4t|Eu zAI5e8fs~@M{0ThOkRAFeVEW%SNqDs_(u55s)(=!sOsnQjFo#fc;#avQa*2G9EjZ;<2+8&q=@BuQPKx z5AmlgC|eT|E)b+;WD{4y8O1$w4hnwzh&?+X)*(i+2TN=YDquvgzsIkQ516u010XTu zNsgGj$MC<9ful*$5V?wk4f@EKEMbp0!ubw!ugd~p9w<25P^VC9T#@@TaTmLwYe7L`ijHUhI!FC)hA$^^2PjE)Wk8#F5X zI08b260F_26PnnTsJ+w$S6D7>DN-}cW?_ph1H&A4G@>hHXet!F4=&~}=FBWy0N z*o2uY0D@tUr2?Jilz@@j!n5;b8VE;sU$L&^mPlA*ER;Z+b*&k+AK5LJhsV*Yb2_;I z9cCDS>zZ(Tq~^x$m?&;oIA&3)!r}mcI9h02<@gk44GmIt~kvezZgb zd?f|MH5&m|C$yapw>TY*{c20kZQ8#t$bU5|I2n5 z`P}r}VY68|i(i_7EJx380lvoG z7aGu~&9fOLje8d(QOs*WA2vSw{BLN6&*sg$o#Um9gyCe&?epdV9k9)xzmMY?8ed1b z54XwJ=#z|&%)s|A6?B1rYYSkGQuNb}DGh?`2z)v+atYYtufKB^7(D69mYjy+%{4_G z=(>r3U9qynU0Ut_Z7+DY#+>XJvC_`ZPyGp4fKu=281L3x?45F`$Zwo^be>qk3>Z;e z%J8eNz$E*qUb6Yo-qVd~(%(FGHR;K{X2~>oK2^jrpAE zv+>v8!AHQwbwIEX7PO$_d@M?wB*HWq4U&S%*M_TPQpf#DaA)DZzv0vwPz_%)+S_Eyj-?UB` zGhQS69XBN61n5y45|PzRS^;$>6d_(g3jj$m2r0kbIWdt#d`BMGL>Plj2ejajo8PcO z8#fqP-HaJJ)~J8hZWudO9}hylq=bjO;kV3A1yWP$1aT#Kx3F(~wr0{Fg%}A( zdI4z`wG90PWU}A1j?u|XU4V}ezke@ze<1G!a@j?`e}WoD@RNSin^hCrQ9!iciG`_P zzTz=)wBWZ05LI_#zKE$@OepYTS&|w0^^e~rwJD+sTKdEjQW^(r(!Z(k%c|9XyD%Ls zS83o?(4?wKpMO(};41|2mA?B9Um=LE1oCqyrUYv^s@O1^zH4o{32a!$+aH?4qWoq zduTWM>gBF`zZ?R>hkJiG*1K;#V3eV(*(1hwPM`4fU(zytPMp^ylpJ$Ydd!(x2{r%^ zbOAOIl7T>G!x{5#IyQi56rCaMRE)4BA`AUjH~~G19{>IC=_n3;haPPOTD*9DeKlxH z-Nn55d-OO^rS77m-o7`DdB(msysRC zbP4)u1AzWRUH}zq*IrX7R1-<5M=*>1mFQ()_G-vQy@r$r4alafZ_DNya&gaR6 zf`p?Vz=P=B>v1L!m}jD`kiiRgvC;G{9+%Mp^La(DTGB;VesMRWq0bBkkiGAVOC~D! zFPqXj41^v#04#Tc({J3f_R87X8f8OkqO~=aH=?d?=!nI2tM0yM&9&1e)wh(iH<#rO zud5&0v8ZPCeXy_KmDT${1@eF1b;;B5Q0~$@%5Oe$JNn{Ii3NSVdi!+4P<35HJl2@g z*wN9LbM1;%+ovw5t&f%s5)-zaZ+{?SZxXAT1mQo66Ce>RNrWU?DhnUI zAx@ta7ktaIW;_9NCIfu!m#Y7;7j3@(`HuTKoFgOy@x^>#j@0j>6WU8IGv@p9InlG8$3E~Z0(A*-Lpql>2xaE>8+2n zH_w{0aWG1u8UMKPXV4+iJwjhoVm>!awNsO*1=K3)O6n%!ZzJd@o)hqY%+zuC7}O@r z5{{@{6Dvk87EgrY33Ht0h#{ARsP33?7fb|0L~EOLOOlI^5qtrB89Y&@i-qETN{f%8 z?j^2}AXS7~q$^MZjA0njIOaSxczWL3=(c&~&b+!C-`CZp{x;HNFPk>4%*A*3SZVn@ zblcmdb-MR&tjk;dsapLncf;Yb&Z3fuB}JWOha24gQma4p)E}-GSCqFPuV`Gw;d+!) zS4xTpeP#1N7o(k4W;c!W`#N}6nW@YdBsVFodk1s@)z*{fMRWkYcyjC3lb{lGg36PR zU1WgFs+YWV&|4fSyC-jq66ze4C7wgz=0l#+Qpb$$h3H@2gKtUdfpSdVJ!KI%p*?3z zPW!~xI~w%g$mQSY8}0x{K)AnXohT$tYPq9P|FvBHwZ8F=78tCDiZMC&mgbat4!)JT zAI&=CDXDbKUf4auQCjK=dT_?QIb#$M-x{x-1&uuKcKakd(*p1gSF_@q9MhRreZi_ph)aweN8Rc zIeJuQG;o>IxnxXaj)vAX#w>JTR(^v|d!(UO&AKglQq3j9Ee;u)YEOVo1!i**S{ae8 zGIo3nmvtB{?!sj>fX4&zil7C)=TF1~{#bnE1sJaqsu9maM+6LPt+0o=fLcMkdicD= zzXDBGBoZJaL-3?7AhWPWt;Z{)A6bUpwwBFrzN?bS9=*`PSneHh_2I(4=kmwH zsgu2)38`DgKk{NIT-i0Q0!(3`IC2e22S2-b7G}cyxrm>U`g`WoIeo75t5y0#=X+ z4#q(u0VCU9K@qu;n4}O3aRD1ffSn}TyCSd<*<=>LkBMRhCPL`uCBrMD)v=%Qf!)aB zVWKt$n;OGagSCr$z`ysR?{2GYFq&D`Z;X~reKgt9l6>@ed@7Nvg4y!gNqhgg{5GIs z3_Xi|4a3nkWHEW5-LUSv-#xyuvU8X(r+sk&9@yXSRkHznXGWE-j!#pU%rS%wYJSc3 z6@T43aW7s6_33qxAT_5IWfKHigjjA%+(c`gjALL-Q&j|o(#H{aO|yvBly)g2DB9xQ zCOVcO`{@Eu3=vg`jTF-YwbY~nI`!epu0FhFOL0eK#OpRFK|)V6tz$!enNep{XaOd& zDuxW5|nhM~>yJ>Fv| z*P5!8SA*Qj`h+oF-qtj|y__A{pe|7YmIX`xupoDd#*k%nL%`fT$Pg&VVJwoVdK1q= z27vr9t+B-e;gA!W0ECcMJX=j0vKtr~h!+4pLw8kUI`eq}C)|T+tF>^Y)+pr{*O zJQ?61L;8a-I73{*Pf$e&vK-M~F^iycT7gnE!Ny2-Zhd`jHf@cD?fLokaP*5}F$Eqh z36Ydg3Hs3;x)+_i)9mxuimL4$veXdt;R~SkrH4V;F}Uc;Wr{0#1IPW0 zydx3~hoWeTBQM|X$j<{`U6^nmb2B=%x2>6`<%|xlfA4kRz85&|-27>(X4#*{KE5!p z?OWjbcH6e^MEnxTS==4ZV`22CoP|Si+|%r&h`yM#s$z=P`gujIVF{9qQ~bPxs2s;U%19f5Mz- z)_HdYnY*U%33$NDz`*;azCnN1JJmAYgu(%u_DPaH^!f*Y9-<#O}NGCH3wut&Th zi$u;iguFbP%MK-S0l&aUkUm8X@H;{@h#RQE znA$OVVu4?13VUL_(HA3U`og>m_sVcN;-(UGp&lr>*Gl8M_4M_eI3b}@StrgV(#dmS zSbO3`Uk}+K9RMO11UL?$cnDcTFH87SgCd#+dzUhfJ1@Rt&+mPVw;h7w-qXE)6 zvv4||omk8Xv2mt%%QMfQAD@9}&%|{&xMkf$Fb5L2Hxfj9AOv$JLW&f5W{c8vXbj03 zbI7C=tKpCZC!RM}15}Kn{GttP9J5TOsJNAkml`hP94{dl#QwsRkEJdfH>&Cz2*0Ts zHSV&@9$p8(sUC>~<3?701J^waE*nTHr5;{azEZ2!t}I{oFfPJrSC(D&@MUEywcNPN z=o16!Ca#}%)ZuSkO|?+ts2P}hpeSM6SJ>ed1QUrkFcX|Tjevk~j**KJT=j?>@WSSC zT5HyXm(GE)xY&1v`7@MOT@j?}BDPD32#scdgA7I11qbrv2CGVuqxWtYWu>1g_`Z?n zYsVAZRP;9j%PPRBK5=_3ALAR($dxMj1er{3lXuGBS6CFCa=FYdn;^^5s|DbbF7<K-!j}4CKp$084w|1zSKMPRxLLb1-CP z0|^P2;E7SNIl=OrDUt~B0XP-7fqNmkmHp)&5VLUStgmY>-}O}teT+VieYI-nBo3Cjq;4%G}^0bPvlf+D(p$Du&<5-GZhJQswu7fnt*?+8K|w8OLiO)Zd2A+!-~ zOd(ygecNL|1*(Da(6;ud?p&Fm9VP9-6a6~y1H6l(B^OKG5wvgEU=ODLiz?tMm3$5a zGvz8>Nz1U-@<5=xby!OY8hft9D11qL;eNSa8W+JJXz!GzalrcLC7vJ}5kX%jK@cTG z%%C6IjqMM?-k>dLLwG_y#aZCL2)wNr#WVRm7Ow9&fjRbVnD97eky2lLhz-r2JYTo;_z96;Tlf$M|wn2O-sAnL|t3fBrn4uh9Snd<}1^KsqJ zz;yvZ_HR9_l>Afh+h?T81+PQ{Q4lWT>(a$y>LxD0d&bQX7p!LSsMm|ucL`b$`=|XS z@PhLN7ci&S0HZDuH_>y~Ke`_O2S2Xs9KU}3_|A17*A72(&&Z1034tw~QUyI59QF>@{g{P2iBwR@(%Enomm}-b2j?>p~b$e z!sueq1fUe42bV+&v;0dA0sHKoff75E)9{HQvt|uRHEZl8q|IjF^>A-mPD}74aL*Fl ziRt(RvB5VcfDU*#B7WuRf{q?CcV?fh!Of(|#TZ=7r$o#!tSWp2blXPuda@ZB^YKbns?YJMo*kSw%50^}xO<}koBF;&HLLR#f#t8aNgb(9wxYZg zT`sj}gVyq}j1IzEXr~6f++YFb0=3HpnlFpU9D$-;lH=>q`>HIdY;umqs8q|FA8Xg}8fj+kZ8je}!+_S{Jt zxlf<^{i`8^yhS60m>?+(gPHf&OL(36gEGOsUzFn{&$E57Q$9?$5}!5r>j_kzPJnrg zo%bU&tguPw(HXe&ARRn0hC)P=pAsxJSPEgH>D&(!dBKvPBzc-ru&-m9uDktIvb`Hn zq|#YT-O-d#kLs7l3%|Zvx>p1eW@^v$dfY+gy)%NYDpQ-pRdXm6_h$ib!Hws(5tuGZ zk6NQ4;l<2K+KMJY^!)@NFaiI{=OxaF1@arOEkZhvDHt41t~ch-7fiNuo5J}%FXg!NTGNPtw*J3{bLG+ zZnyjy$Uqxpo{{fX-C)Sd%gZvXjo`msdX>C&+_+Y`O1}$erE{m}RafWj(ktbgckI|K zSK>sC?ACqzZk3UOPrvcT)1)BLf)ng!gni6`QmGnh7&VfbPR*y*;K6x;PdMtoJQHk4 z5!EgdADA`}>rOjB2YVom3zEZ#UIchuI3e*w4;vV}Xd*qVWljtJk23W$=6EbV3Q4cG zl$;hM=PW+P=83h*fAG3+Laz^uT{JP31m~pp@T{2CE5K5V{06#9NTaFK6e%YmN8%Ch zEX95$A-H;jgnba`@e!Cj0v{k4L6MEg3Lv<@5hf6#WFfkAGWbH638aN4N@O(BF;V)J z-ZU0@^Q=LZNkBGaJ!7=cGN0ZrV}qNv%zmhQR?MORG{X$Psi6JC#aDNB&d|e=K!J{% zob6FYLwKlUJ!rXhumZPj4(&)S~YpNC3?pI@|IgTOR^!;J};%aL=Ij zHG2WrQ538UjcGEOn-^`o6<$-ES6t8(*MQz+o$1F1eebfGo0BaiKMUPSijUA6*e;W2 z$rCFJ{n}>J(4_D{j+D&$fSpyu%{jq_SHZ%<}*f(6);A8OBE z7^9&`G!ZW;1m0X6iADV-{X%_z#O!0lxfsXd>5$j#4S9otGzCwy#gUkx+FEQjnv9%- z_>1>R0#PE#@^Yg0V|>+;Xv7JGlhGU{P)r#%y9VGp2T6uGA@2MN`{rI4lxD2nh00UqpUOeS7$GU<76S0&p7wwf?~!|P9*{bsX& zE76%G<;b2pV4zS5g40J_PHUD%?Y3xKE|1IUaUF0vbvEK?#G!e#P;IuF4N8;8<|T!BDN>wVpsL17T6dGqbgCUp4q}Cg~+)V!_v(n{q%B3=yKIC!oYQ0WxHtTt< z+TidUb-6TlXDH-!sJEDvPA4fQUGH>iN<$%sQ{6^1h9RLyAwx5e#Dpg#Pd$6!0AlVR zjhkvVX_nFRK^3SRIUOBC?@pf%@<9HY`RE1o!aP!9&TL$w?>J5C3@VjDqf((VNXuD3 zT0zC;1ua%RZyB5A76Vqlm7JV_5uO5y?L(Aq$ur=G7>)BR7K3){Fu#8o`876Z4dLpr z!Qz!bMy^p<)E0w>1a)e&&Z4$*rYd`Ow!JE{J?zd3@g|K&nH9qITYQXz!4IfwbF zZXbFP-HQweNj$b--vje@&6~Fi!0QHgjvu`J?Wa~OUAp2au(f?|OLghgIvMb^CVrMC zT3Zv`&xuy}Q`BR7-|kkG%v{nu2|X5!jt8y(3g;Q*dbQSQ&kH2NzHF^ZqBI%odEwfs z?AAbCq^Kd-YM8lWX6i|(36I;c;hLf#e39IAo)nBZaRS{ZEA1?8E<=x9qiriJL62>L z{xizbwzg8{dweA1xW50}K}?aWF(2x{^mq_+qr<5Q)KThhcm`*I4ER9}m_|{2Gz1c4 zGRE^-z#KD|km)xP5KllnvC$B5>dyH>MqkLs`FOm_Ma>CdP&3{jo)AMECiKk-T+Qgy zMUCRc`i;1BcwsaPb3G>e6A`i(m^ea$q*sW{;LxORazRK5@u;*nDbG_@JdYbxm&W z%cgtV#BR7U>Utz$MlZTc-!V6S7LTAi!PrE}F=K`ML8+91x-$1Ym8pD-$*Qljcn8(p zTvU!ew;FA_I)Is0v%abJree&O{PnN9Z@dwGSr31jwQil)TO9G0gg376`-+QwUs-A| zyUb$^)TD}e@`1>mWtQtujE1{DXvgw9T&89%NKVQ%FEH^6&2%E zv!*lBu@=i2b66(xI^+2s<8+{LfqN`C?s3IrK8;DvO#>R>OkIlaT8i%q??vALP3qDy zKe1?IYZcwCO8E}^zi`=|%0!_*(r-l)?1M7T@)IKmMS#D{_D0_X@wO9!65uyq$spF?VB+!0C$w906K~nN=NB=uI{Ym=g6n{Ur7DJ+0L}Jgfs!Ns9sMfl{wE(PO58ST;#f z)Aq(8GY6GBD)o$N5D%W0vaJekULLC(#!5r^phJbD)LF2uwR)dHxJZYR`Q=4ygUChj zdO$AnfvQ;{6s_mssiABRo=KpB5Bs?#=h4;61I1a6K-9A`#|7pq7~{SEh!Edi5#!Mu ziJZSgDyQMpzX4Vv_kBx0{I&ZMSp?GDXB8@9<$!*C<9MiB8fy#eNo@&&kB~;>l->+3ySI*Lhd4Ghg(0S zYeZ2LGh1C7^aZ-=yx`ER!YpMDxKg9aDwNAN?Xs0>3wP~;m*j^B*T$rqclonMMypU> zL483%J^gS|WOCP{n#8=B722}Fxdt=)Gd!P5S~V!(lbvvlnf7T#omFL0+dSP_!BA6q zokeZdx~=-f*@0}}TeQ`(z9Ys}yB}h#Nfw{_^4KvXaum)Eet< zMQI&)k=(fueZIJ+cJq>CWges8 zW0|Znz(in52pU_Q_@}C7h#QH_<`Z7L%tX~*VygPGr3BUPdUq!PlvZ0YI%_r)l>+(C z56kV+Q8@54AL$rZ75eNsX=!_@bnSC7a0kwT2hrYFOIqgb+Bxr`tkD%(?aOLuyci{rJXL)lb-f-WySMLF=gEtWUdIPWDFbT}Z1w?zcbMIlobVM8373zQZs0^fC zGipKq+a)|fI-w`l1HbxWjQA=;Q$NuQa~|I^>88#irZ@AVJK+xpsuop&hEc!zq7SEE z4tx%O9=EJ!+JY!bqFV9AH#`HhQ_)`Lp03~e;{6!MY_ea@l^~i!#CM@Eh3Z7Kr(cT$ z4;~sG3CCvq3W@{7m+=9S5chH1#M29;E)LT)Fq}F8dW$$YdO^<7i}dO)(Sd^?a0Ia? zO&O>8FI-+#M(>3EZt8fMuK~ zXgU&I1OhokiI6U|lTc3Hs)5>48L=AtPdX^fx}i%~mA#3+1lrfVBWHJ%YL{y_4Y}r# zC$~3VBa^I<$oqaxM+F>R7-`GJKP47n%7)2Ou}&zCxkDuV54~zr%z*7rWS1mX&wR`oJS9FUG zPK!bi^F->${qDhAf&7-iwS1{WsbCeUn=O`*4ah=O%iA#ZKQYrp*U6xwSgBOWMs|`* zf>Pi(x*Cn^*V_{I^?YPck1}bAO^`tYh&-Qo1Ytuw@rs!i+7o{lG7thrN#l{pAJ37? z|0uV~=ceuo#9lv3)g}XQ!dx+J&PS8_UV^o~sa^?n1pPGWqd7S7k8+`GvKCOU$Aq#% z+MJIkpRN_k_NMj7kRXT5PW$NKsLWnFhzpJzOq7pk+7eylL^UHB-ZVEK9ojN=)w;(g z!gUpWPlvXS1PuD&FKeD#TFy0=R%^1=*1G0db0pNHrkZi7tJh38ygoS!HpI{T*s{Ph z_)qBjNq4-loQ;IMf%-`me$9FE(ENThJprLQB4B8W5SK72#31Q5f|trPV6hAGMxui$ zV#jgj967v#75T}E@r z;>&e8g6*ARrdNpMr_1CQwELYVQ<#+bWfdV8*XeGrC4Ldaf3@x1XQ&~iv0=Q!>)?Z( z@IOY9M5yDiTkIyambcm*POFvIs!ce-A*2c+P}?i!I&5O@1qE$ZyQ#Om8}y>u%&(i) zwvHSYbLLsH+~vU=TmEB29P@&_iY0Wo$4I{Wi|=p(wHkFosZ1fUOh}*hx5QD*SgMOqk_5My5p{+o zA>v)RAGAcY5y5L06xE@L6BH3`TOxqE5-F$817<>IIbH`pcdu(|{PPwh?$`MP0H63He zHJ2*rhZePsE&@uEi`igvn4626=vs--nQd3eCw#Nx_ksA7_VvRrcZ`@jF1+Z`uAZ-^ z)Wr69{b0{+0PL9i+U|+L>S;4BU%Dgy>eTj}$}G1zzhZ8aR(HvMhBoIY?D_2UVk0ot zpSKo_6=e2A_b^nF*}n3bFex1p@kk5;@-1HYOoHMnOWMe66zBd#KXkD$%(>`AaO(Gb z=JSVT3@rA?b-=(+3duc#qU~#;cIpggIARAQE2cJ?%R+;OCr8eFVjj&*dT`;>lMIT= zoF(Iz?%6-5`_clb&y?*?l(yu|-!tbtKL#fssF$k(4yaN9~_rE4NKcOZPz%b zRO86DvE@zI74Dq1Vn}iKQ!~JVCl+5~w=8TQ^5C+$_sm~moKilatTAN28h&!V!2_L^ z@roFtQR;lpyMD5rz+^wR*QU#%ar zzWw)^)qij1(ev&IQ2Npt8shr%9!8k|iHZk45$j6}rj7_I7yiyQL=+;?lCcqrVlp3i zIFp$XK>3O7f#460&<$C53dtfq$`T>6jFNtXQwYx{xTlTc(H}~O2;f>Y0#Bot!#>NA zx*?m79NE0|;X9w!mx09~3uR58Yh>9Yn=7jx)W}U5qfh_fq$5BID$yyl9i1B9REPHI zJujL2?m3K30q*dUnO6#`l^_Wo8~vfE80j$p#e|uML9!|9jQa@s`N;KOjjp*7Bsb6A z`67@Wv7kP4iCWUL?x6+jm$tN)vGxHhwFeA!tokLikxo@7?#|~kG zE+*&-{?lPdB@GUT0VWOLASs-p@F8iPEqesm!5CnFL^jt96a(bHPzjP|r_+p*u7U!1 zN!Z~CJ5m!;cO_%PhQ*TN5l-k{1YT}iURk-k4VBLl)`cr@-}@P_3k3vQfD(ti@a-@U zE#g>3Jp=_xFeC7Yf-H}TA(Amb7z0s>68C|SIDb?Cf#CEL=pa0ouun$(sd|4T;)l=q zfz;fWL&Eem!nWF`=M5?XLhO@vou zU6Igfkycz+Lab5z;zoswNkjzrBoUGvj}s$K4u&MYwCgoY%(nLudifI0jKD=bvUBNPRjf)O=l{r52=007PrgGJ=BHl23_GYizoTUnu)jJK* z+pHC*ZvFc$d+>KEMSoZtP%3j9$Byf8YB`Hm!#EnNvTDZ%Xy!_p)B{JvJMQ(ANLx#l z&WD`2@g<`tJ62aYv+wL^+w{ByN(!z|E^3pnu%_kTNda?+Jyzm8ye-9Jm$s%Cy)quw|EUkM>eecFQ4nKX(jrXWtXRD%RHF8@# zGzI?osQR8v`WsAjgrvtp#R;&`oiEWi;F#2{scT2GR-Gi@<;s`n&5}H@74UG{Sk|Ir z3tYWFQ&4-`XdWMB+FRXuEra0DT?O3T3|T?m3erAr`acTTcET=Ds_y zi6i@eXNy+77h9HP$+9F@xyX`igJs#6Vr;;eX1eL7n@)g$=p;ZwPk=zU5K;&!dY-#w-%u2RwxZHj3`~Bkw*6!@=?Ci|!%$qlF-upaI z6WM{D(kdBY5lRFpuAIJ3MICZ4hPU2> zqe)9idMC+ZL5CD*tn_WHwpgmy`6>+o#JW#NvKahEOVT97-3JWxpei4{=Bq-%w2D){ zs?}SXI?gw3+0w)oG;N`uTZnVP2iWebEH19}wHu9JFb|rnN z>*+0tz6)tIHDfJ8dkV1Q|B{>R3U|Ygc3%Yn_zD~VUjYHIhMskNX(Y7t`0=Go>(b-k zb=n=d2XX%tD5D?hia(CKgQ*jbaS%0vnnX2IbE$>Ya#Nd_@&<}LQI7%0zZFWEY39u77f}@L$ zsA3L)?f?>N3TWIS9@tGzlqZG()`D$nzZ%@7#dm*ivhgqLk|S=g5gxxA z9tX|Z?8sO^pI5!|vO-Ni0$068XTxvRx%88O4QZ^#2)tAQmZ>Y@2rx(-Y2m;~xRpht zWLF5jd+7AhM_3?!%(@?BefAl9_LPWOrjG8u2>*z_XJ&Ne7VvfU2;lr-0|SiWOPmPGhk8#Rf!?e~VsM;Fl=FeOt7ufWi<8O-lb zKe74XTrluGLwzMT>o%AQPmdmT9!xrWXXTg$(bI6{fH7blUDnYXOr`Zp$IVy{gYaXe zzNm7z=`5(7ckhNLW3)j`vHu{tznGHi1TQ~iha?B+{D{r=du>>`lZnSOc%h3J8NoRn zPrO5!{3d?d!S$=poc?0Zo-a1sZKkT{p)2EIsT=o8v_m7=;hh5$wE*-mP&)8D-+L~FjIvy&mWTJz&Zyy|C za&jGW=A<)Q*?SIFMTU8crqAXCKKdA%o5yzATa5dk%b{<&?gCg%Kw2TR#R|A9R{eOr zl^o!gR{b;_MhAH1)?seTcMo-BJoMe_nbO}Zm_9fUWWTyMvRk?N#4-94gVkz?I&eZ- zhmX-+lMc;x~%Y-3xxx=lMVHj_j=}v42cqZAt1zP$byS z2!7fO#8aD{_-f0e3Mn5|N|jTUR9~tF(dD6tGLNRlBkDYZnoZ587E#Nnm54%bL=<{E zqS1S){nRn)A{r4`^y4H)pWT41*GxTs0TZA2!!C&ue*oix{mKvD_ZkBKt&9Q|&Kog)MWkAKq7!fTs<;DFA zEJEXNJHdO%?y-iwm2qCojVxv~Cf?t6_;4Eo54YWae;a74$h&qauc9IkJeeD!e+uP- zC-W-67JTn8PS~>GFk908N^V6(E?13@zxfS1#`w@oM87Vh^B6?ExH#Mq-?cwa1kD&9 zkQKZ{P>B#pG0g#=u*nfuWfvasbNc|h=Yx+9k2tVmVe^cI%kLd_;J4@RpL%HoXS0Zv zhThZQ&ucb*z8R#PTYmBI&W)RnjhVi2?L_MgjXq8D$NS4>mluguhU8vPO*jSFQs%|? z-q>~M{lK{88#XQ<7kGaEp_gjQ*;JiDndEDnv-rbJXMuXu)`uV2I%?&#iD9QzuN|zv z|GYETX;A4>`qXs1=1f(^cvP}zj}RwyK@ec#G8HR}m*FgS(2J!O#D^~lM86hv$OTpMcWucX-vORWV(!IBB9z%> zbkZl^6T~L!WR;BN0ejNyV!G#o1JOjqa;6nhNls=3pPD397hsG&v(j75G657+Xw!^N z-qnR`kLxYy;|~*hn<}nGPduQRfUzh5{?j^hl&e^`8@+ZnVls7r!qC`MboYN;Yuzs3 z#5dr_yL2e$8@6t>KXXAg{1 zU@y8r&xaSlRWLr-6#W;1BeCFb1~4b}$-*m9#n%(w1o>AvLW8 zVXd7F+Zif4gWeyBFf8%65&4GRPXZu39a7qSO@z|xSxS?yr73L3i7Lr|kLIEp>K?@D zQydn{^KJq~{p*K-U>y5T56;9y8U}BhYrNRar~yNOVjm5RrYrTodL=M8IUk;8cpdu4 z;W5L8Y5m$^!%+C29&n;xyFaWwFCkUv1C8E#GAwKZg-=@bnh$h|IsNMEKnP$HABg&k zkfH9M{eI={ZTN0OgHG2F0!~n7E|->p9Bdp8FP2Hm&G1e5u@>EI_|;5UvjDjnAAelj zmrEaNDMi_Js3mnO0Afxc(__9M1vico?0_0;XE7)s77U|1#~u@KdoiIEh%LrvF%}V! z7C?Ypjl7q)GIXe^2{%Nz2~adG9ocUZZ{a8P8!07vx-#^~$T@{fqctfqJUXdDCYLFs zI!}heq}9k2oSc!7RN#SKw?+2dwo8)g8R{GJp^<+515MuyTds9Z?>W|7TSi~a2e0!f zA2w8s&Q^oga0r`7g~D_ZON(_htrOF%R>JT+YZsfvdS1@5$&U2ojLjN+=}PXO@&^2X|yUgF$EZj$n3aN#@WYpWD|QxjVLR5Jj}C z4son4*xE%&W2*`m*(f0*P)CB`+tq0kZlz6jFP4M`$X+|{?lGYRV%1G}uL*Im0lVNL zorv2rf&V5MyErPZUib2h-+Zr@4;j+GX`VCX2GzGy3|?24wDMVE4i+A~X-aM?O)VPn zsnx}?uB514-*2HVWg5QuUyIi7xci-J7ZyEbf^RzXTFvhK+zqe1!i9nOmF_Zk@b?*~ zw$$;mFOSTBtN-l!FW05GcXjYlM5K2$}DXvGpBKE zuDSp6#Z@ruGKT~cC)9eiJ`ncRHW6P}71PSo(#oe*6b|t_`~(b3w;g@| z6d?F=(V2_@&3PD@R>aHDjDU9&>@kc;+7x840G$GboRnpvJGI5y=nhT|78o5|zt=?R zMnk%2SBaK(&wzK&7dv!$vbDbxIdapv#c=ct*cMznzdj?Qe*W5E8>A_bgkhtPXtneh zTAN}3$P|sjC*H2c18CxXmepq9y(08u!|?Luwl2^ZA-L~vYvr=7pKm-4 zvY&`hLXX3HKTPW<@I};@5|Rq)M6CJ=pgp+h>s>0{F8F7yu$zOQO56vwYW5ra1 zP!e7gFEkU}c@j0MfY?A@D+DjY%O`gps}SileGTH=*6&(##i`{Qov0%EU{@vB-wl9& zc^J3yhJ;5+a6=O4|H;F^FrewAIz>Ng-MU%&6!poDD+yI1{ejFiRn$Pd=Nwabk5>bO z$Nh`?;V$B*FcEO#@g1)eOJSS&_}5r{tNQKz+d8=#*xp@wrIEU^NvVx)PWU#cv!Jg- zy3D2Xx21RXp(e`)Jzd!NL*y%1sW`q(|{rrM)N0OOGHq<_HX+VC<&8gBCf@Y?Nj$kQ1X zEi&lfAENK92Xof1hkM{JrN_Q#d$?3+a>S6csv$#EFalzU4JMVRrAFrr3Z2#e`8Y1%Xp}t**kD27h|~19-I0lJmRk#gaR}*u3=P(WL(*rt6jd+%6IcDfWSn&|f6{ z=`jW<-}Qa688sx+iW(3_z@JbA+mzVXCjJn94o1wWADt4-IQr?b&41pj62@RCG1b6{ zl0_&E9?`p!+aD%}Mj$91xqKJA9^nxegkmgdAHdTn2DPCmwy!Y|wc$9b`B&Ny z^_hQ*FcEhnLQ|5yM_9dpOO1P9XP;A}E*I|6gf{q(XFq#s$<~|3?7{1|o05UzrM8!L zJ@IyIR8nCK6@aREIJW{E3UdKCgbbO=?C7CEJH|pI--`5aLf<{3r7)eS;s_^BRwcm~KY1Abd6!PL>+4Mif%XZt@Y#-y6P|fnr+Zt-XxuS!qa)mX9zrWR zKFqF;*M*><3#CpVmm&)5@d@0P(d6~TH$m-jFsk^s;pggf@FPizBu^@R5q=b-@&BZZ z!1bb3nuij1gu1Fk&qWo69|<>J6sRDYhn@i0o$Vt;z9_sU^8HQoD)}~8J|ysvoj`CD zUJ)Rcx04OP>>?=%dO_^tNBM--B@ANpKB5yo70*<$UJ`w`$2$>$4YL?e7=yRRm{F>; zJ7X;`3SRHzBR6;TR&)Xhb0+QUibp3Z0f#Lk!Pln78^DUM-T+Z0!~nxyO($^NV~(OC z2fXbq>sR^JD=HRkIeO+y)Q;o0aFL_^xTA<3_U)dM67YM;kzJ2{8+{zz80jdYV(;QG zeXGMeVR&7@8i~`;CXNl010GkWDwjQQ-!-+R%90uy+u7;&2 zW>jxVm1fAS#_S@eQliQk!`qtc%c~p5gaQ*P3R4sxKXnHFJvlYmYNS=(Avs3ou{o#i zYA)Ugk2Jk-eC?o6iFl$?f|B2IcJZQNI2jJ2|P*sh_$s`g;Tu%eO8OJ?Rjei}yK z%55mfkyyqss)pHf<8tX0sO>hP^+XUOmQVsR3DG?#>+FEwj?7535doEh46RpbqecJ z<6oG7(%egKu(o)J7E(rSSYSv~UB}LSM}ozjgDqz$n@f#x1wo93P0%8V&ja?j_6Tus zZiow$IB$FfgEdmIXS|8<_0KUnKOF*13Y|^?kLVPw3LQLxFF+Hyh}!Ck0aZN%i-vfE z&EIcYxlTXio~Q2_qStL0@mX;l9gYF~!~1W3TF5urT3q)-(Ve&XrY)H|u}`L^9R1TY z)fLBeqWOQ2`gy653H8H0Q3V9F3;_$!S6o4c7)DzqG97%x{gvYh+(KeSjW$wE!hChr z^V#bX$rg!1DY<@KqEw(D4)lnL8lH7JhZ#)WDtrJ8JfPQEQY~g@XMLle{qsz^VxD#S zea>M_SLIi%(1=nzcE2-0FIG#L3H>6hlAxy_`-JhXXYbUc0h9>M?>DG+M97H{hz{+$ zuy5Z5Zsh0pM?>fmBcX)=Ci4XA3>xv>eWCk5N8xZ6mM*4aMxy1ycnx;mZm>&mUw7Mm zUWTZ==+Laz+6sRNfEqXr9z_4AftmpPp|urIpbuC9`ao*VB@qQft>M;4D}zs}WHp)fb=XKz!Mc z#EBEi8PWQeH%7wiUf|wQWoD}0;a*tBgg3t2-b#Enf%6#NsS|H5;oUicG~(9prxV^! z{mZg^A^0o}McWuCxHJu6E0kLnOK|lHUdP3XCSJt%YVJgIXesf(Vj-9}8Ztq|+<9Xm ziP0pXu@8B-6VKHWAVkt5l9M!Qm~Tkc>y%b-g9*{b=%3lymI4#(PbWujj z`092|PfYc8st1xfdtA_dOQMF~5Q!h;Zp7@A^QmfT5ETI;pam(wiRgT9&>sv16Tlp> z4Ez^(9b5)i0i+e^^I@bk7r{w0a#-4pJu$moq5ugKr)DA{4OT$#8-X{SkAdsBW80a< zF0|C*gR~U@BjTNnLXNDHIH|_i?Raq!I~EJ;Tazy~?cu#p#Kz&NE(oyr$6Xxo#GXT| zKE0JOVSptUPcW7|tUCk4ECswl23vQT1d%G>4Oj~ml^7@T27#5_AtGWz7+KJz1SaA05QSa*6k-yL1a8WK%4A}Ri+T}x#$hOO;%f1Jp8%JK zeL$kDIKO}ms~3t1J{7yP$vzr1q@YR_^DbSo575I>jK)&MsPw#nn+r1Y+ZQTE3PBJ3 zHpp_Mr2AdP7OrJTeM?K*l)tS?nScAzq4ZB;9S_Ea{RNH2=+NlzOrr`%z6@wiCl)0u zQ+SEYl4@0$EDp0)FXMfUGKoYrm`-a(9$faN@c1B!37qZL975qK)JsjXewhE zn&r8a!h)jA75U}Uciy4TF182d^f2I?+GTk#L@aOgNqL~xnjIFC(r!+XNyQe03H~f;u(Bx@y=|}~S<%O;;FuDxYM@n_ zEi)L^*6XiX8zgp}B_%VpT9NExUUgQfO3N@(uJ7xNa|19vbOIO-+8ID=s#N9@ zZyLw)Qd%V8vfWY?4w37?mnpDM_Q%^7sDhO}dF| zT%PUft6`)gz5aDu)lOcLtTR?|tk;kbZcM3^C>(arT#g%&o)BiMRN}l8M^TPRH*n_6 zJu^R=o7bmzjVN<&`xRN5NmH_*A5G_HCnskW(9FSMMs1o*Dlw*}N~B7?GF2?Mpiic% zp{0F&uAHD<yL>9Tk zqSh)TQj66fW}Zw`SmwNg{LYCenFa`bG*?b@!>@?!n^-ZZ`b*y1I}jxAXXU8p0bEJcG##ti8565H5_ znq5DE2f=N*0tCZ<)kOfQZ)WOfrRRSfBK> z2E*<`hmm0nmfm5I@2_&%!JsbgbM)%N@x{Lm!w=p?SN_vl)0 zrb)?3O}6}!0Yj(FsXR2syLjUCq4mAJX=;X6TZ_E|dkqf^jq4o5{BorcRM1*#2KMGc zb@x<+5goh1H0z2GD}wlTG|zikvRLFh#R*vXhPJWVxXrW9An4o)AlHcNk6*cLqMlfY zY!-Y1zW3RN4WEHx&;W{YC_49Mr00cdwN0%CD`(X@QpplO)iG4CY>t~se?X$wzqFp5 z&%rC_m?oDw5{?6^bFCXbgYWft+wX3H3mqM-hWK4=>QJrEQKngl9^e7@K4n?=t`g#;0+SI*_!1jMp9tJIK z|9>hEjX2W(v+~fLgOybeR74!UV zV&@X~AM4(h>XS|;7syV*Gdi*&RNw&8I;}O)&|Z{OAr7g00~&2!%rM$CeiOV<-ed;V^7P zXLU;pP=~m18*B<(&q8E{zVq6%ah@`!HEh&G+I$9i9g+#!8$$@`*njDjaV4&pdfZ`8|Em0v3jvcMTCAG!Wp92 z2uj6-v2)ZY>cKZqdh82Wc#5S!+&^wR7W$(I!RG@GMJdvQ!Zhwh_yJ15&OsGJbxP}$ z5qV=iEJk&&Rrk7S9Pt{0#9BHGUZ=gQs@Qw59sN*0^Vwrrq1CugLh6cZg8qb}Ggx$l zHJ(tdqg1#ZMRMrZfo`BG2!1JWMEntkz!(e9;vY@UFyM}FU5HF}+-rH3iZo#W6fTrmLR=Js+f_v`6g2=FY!YHiG9yhT0~%1I zib}M#5fQ)26m|kv0sPLm^aImw>~OK0rO@(gsqz=)@F!sFKpndToXNDjU}?&XQ1Mp- z>Y5a#IK-e10c@Ei%n@|22_?#m6$1BDQ38He68ff<)NpDlvAXO8B=mQNjb0;1oTZ>K zX~5tRHm48ceHWAUB6fG>B9_bnV!GxNJZ@t@q#FCprcV6*X(q9B|9+|1q_CP8`PQwB z4467*ep%ON&TYOeS=nF!{mztWb5^XFGi^#iv&FLJ`N_Gtlb>HRjj0(~RT^rjLhK|g z1%DYhu{%Ujaj}!5x6#~_Md>V93)nVL4BsoO>D8iA17KfJ%!?<#G+E4hTjVO57G>5q zEpDpM6tQ>t`*Mu9k0(&Ypmlc*>j2_2-A0 z9)KUd^cej3__RmAV?^C?u$XSV8saUv9<==?{Ah!t%Ye;DaQnKjslqx%M=O?YvLS^o zJfW(Cka`wP2WafX?;SZ3k8HxpV$tlNuEY~S@W_$)op3BJ=I>REX*bqo^-<;22x=~t z#b7BN#*x=_%6~hhzG(T~c|lOd<4M@KOiS2tA&Q0mB9oQndPay^5$&X|V+u-vXO$J1 zG~vS9$?QfqWmYJmfy`ikF-%@H*#Q1Rwht?+^7E_m*&XBW+Pz`-UE}*LoZ8H4>$Gh1 z)P?;zs9VLdA?$r28e+mI%l4nU;E6aHdMOE&_U~Ux0_uF6ePmM2;wrnnYH^Kh+xySG z#M|xsOV7Q(O?J!JL>XruH3;=uHO(8fag~QI7hGy>z(s2kHu1@A5M+FIG^R~fY;mV# z40hDD-5!*L3tv2PVev5Vt(wR&;e8tAExG?O1^JmS1 z^I=By3lO3B* z({2Z<-@mL@TZED@KS-(;8IjO;T`r8v-s?Xr zJA-<=1C4`!r|2V?kt0g|&(HXJ#`FGvzvSnhembJu{&sfu+uOVMr~d!D{v_h^*&Mi4 z9M+YIKa`+5L7`cE7Wyt^w>RceUE>x4sMIFBPef=uDtbWYj{%MeY2ArIcMcg`MaGG?PAv8eV8gY(@c4p0RUSCZdIF!@@*VJ!y87;8^o;sgl!5xb9h{p zt!iA=0awUZi&b$$^i%16zK*LB;%(1tS(K(TP1!#49&w%W_My@G-g7fx*t>7m;G*qQ zOu95KT;++j&}wWR8vXGGb=F(!%SnfnH#Z&ZwWWZch~4Oq@dWe^&+Glm+3iy_qHQyw zGBXFx8PXicr>W|Zv-YKfr>AUZ%j5e%f)20?&7uRT$=HuEhu2qvm?dBrRK`1zrn#89 z63>Yk%zp~-MR-GobQzu_7`-?u2pDG^mYOrfFh>G-dy*k{1si`p=DVUCc!_Bw7W8mz z;mM;FreF;RJ7(?MH)}!ez_I&gdGhGRXaMhN?(Ty}tr=AwvmP`QR)7!=!A~vP z9JRWlNUsG=){JkXOOuSg+B_$%jFJ^8ZMy22Kc}Gv49oGOCFpxwGH|<>7WehI;5*^% zg+9)@q_0c5@4`NfWqtjueVV`Sn-!hfxYaPiM8DO4pfX_hR7np=>x*tsD6l~xHXEGA zqLAc>GQeoAiEDkCRmwA=+F7-;-mJ)(9-(w2WPNk#`+T*l?S=4?C)m$({(Qe&@lap( z0L}K!zDL%B83Z2>^(4^g#IGDUJDC;y5!^x;Xo^wSA}klin8o0R273%O$!jNC6|q$T z9@emk55x5>@QdiD^(~Js0}p0L8>a3SSGLrPTE|C!>kdUK z%`Qf*k$TgZP^1-w#RKx_@Yu`}E+j2VgMF(eps`%2R)F%PRIF5Pc8REx!pPt5KLZb8 zk1r?hZmG8|do;Xx%8(hh`j+dhV9KF2jH1|OwmCfdG?&d~&Q<1?m1L?^t*OolRW`GW zKdkViyg>w50wx~j?TV5oA!MlTQ(@j%wi}_XKHS0$WTc;m3L%(j==#9#8 z%lVbkfUzLGFnQ*_(jv%Jk0^ANOCDUaQ&R3K2r(PXQzSuGeigHrXT?*+#di9+>~zpk zQd^9M>e$8V92m@{K2d=Q)%I%Cl&>7C<~ z9FXF3)K-~n&&*(p3vTd=!UeAANP3K`pekRbh<*a@b$Y8jN;yooEVjb=wk$JPnbW7Z z#{Bi4SReoVa)XcGC#M*2d`6S^NH~**B|xy+wlvRf?hSl9%iO<-q=d zqIyJ|s-84D4Q8=ogS5(nqK`;I9hKs1({n1`L{zCZbVgZ~>8oWexqW3LblWupvVB9v zx&6+c_w);T;H5(Q>RKOjo2laH$qD1&<0I$nL%b5bIL|X{-`Ih<3os#u9b8Qy!+P{! zMImU=n>|&V)#@Cr1%8Ud8CKAw)fZKO8OEgO(!TROS7{TbyU{SMbmrBz|HYpJhSfBT zh3~jLeTz%+te3F`zUQm$#DU?TVJRw^@Q;RDYwi>oIh~Owv2Gd0^-4!4;@HRS^63QN zP#xKn)(My}qjd`Sp;ob3p@V-^=(I{ES)pTC)WInq`TjE-Fmg(I)!HBTWOK4YZwxpV3F?Bhe;w4cegX zG_W_pFx`fQocIPwhNIJPqF6Hg*yl|kOm&kR;diTXfV=ddwK<0+H`KNv=jRDn0q zqyLSvJB6}C4>p49x9F5uR((Z6aT%zbI?59Bve}m!hI(kYyH|ktt|}K(FY^;8!o*h! zNrkC?Ml9qN)a;dj0I&fJ%~fQj4aGq^uF0#jD~WnKmIh*t4zx5U@Wr%`sLj}k^K*J@ zz~v4E+^zt-E-*L{7#wjgII;l!v1=F94_Ub2NTl!4MT?I<`1MhC-OJ;k5(vB*9!TcQ3f_i#Bj4og%zGK;yUjC*XH3SO7>FTFHx#0`&X(D9i+_foj#o z_KT}n+5CB94_sKX=>2;qM0p&IJ_C9!%X-&%?|JDycx`{nl#-Rk+niGt><8leUb+Xx zPhHT0`ponj6nlWsMIF``CSZ-|V9<9d=Kw3f9?5xAO!*zHK4Z$|0jzc8VFW!SD~o6; zRxGjtrZ?OIe*sdk97y557uK(TVLixIu!_t)_o6d3KxVbd(?+KCIRk%A8;OExKsMmr zh3>pelth|Q5VCXnssSyfV;^$5?4g1TdI^xe{0hqHmsef}2iK1uw|@P&@zIA<@-njQ z$u))nBo~F%T73ro-HHMuaejuHWP4UdUW(qT)S6kP!)){>C!4iOYXW{4Px+}J(N>M` z+IxVASJLUOd=kQ%M<%Q!gq>ue85LckqrW(x#{4g>cG*N~qwOZ~@%`gBj32)Nc%>P= z(xk3c>z1aZr1i>>8Z-M0yW4wLq0uNYmK#qk9E6S%qw!Sn_Thap`@aVN{@QCmPOnIW zI%OcvX?*k-eG-=}PRh*CYLmGneO|9zpR)L_f>;KN>Vzy`D^~h)djTzwzlL)I-*(40 z6=V=Epn7Wszjb(#Lo}fgIfywg@8rlOppz99rB;sF@)bP&l!G3+Vptp~Y%5xIHiJBctxaRM$}&^zLJ@ z&#}#`NUEL)LKk=If(z{z6<_h-MP>h9X7C;WTZ7S`>@(=+3!^tS0su}k`ge*JjpSV7 zBHB{s=oQ&9wHzGGc7rc{ed!{QPkTK5{#yOv-asMEXNUkOq=QAUpFIjS%yn0x5+JIQ z%Wm%o)h6I+OQ|GkA>wLxB~U!P@>H@s2(nH+kFl{)`=eTtRY4lrZpDB&1Tq`ZE3#fv zVLm^AF$vK{KJn~_Io*7+E)Ws-ZC30L7!BnLG%y7XkHi_f+ibu*Yfm=2(u+{G6C_JE zZJo%#qx|v>+a}O=HZzuFR?%zVC+pRSArJxefPrs44w7^VG)U+Lhtv8>Wn8s#E^SX? z70G)2ptcPvT7lB3`d7U7q+2d?&flL_B9*bF$`NZmgqPq;@Y08C)_e#uK|hfB;b*s) zVCeN`7cP!{7~NMqch$PFqUbC9yp`+6_I~>~tyL+c=`DwBeNdLws+qLY$|_PbncB}c zs2DkZ?SMY#9tTFXT%?oBTMk%JI<87Fw?v`{)qc88PU9*l27E(az9z9i^xA*MM}gSf zYNXOJIu5`)YfcyXT>cCRFtP#0g=P}9)2O8p#c%>Y?asjXB#5vuxBvKuZtM|lAPek+r{E{iVH=h7{Pmz>spuqr2#+fo_b={kvYTL|+%6g| zteGGdQ3UW9Vu;Qs&70gJD>ekeSQ|vy{$AD*?-FhF`(HbIP>+ z?wui%EmUNGzu3Q?Pp>J19yU0V-^gT5eVJp4w+mA zxGX1z;~xEQ@`6)mQKU|pLVc6MT=(_@qid%F{lV9d-3HG-nyP#f{_e|7xNkhiJOT>Ag9o-WFTG>wfw$f~ux#_P*_-d- zEc14)8Q;D=dwcu%HM{1`Sq{W|egM@cpTj)~EQ?%gg^#VS7+wMKxBSc z!4=raq81Uwjrz!^N51l zY5ismpR?<>cl&y;zd32-qI*_6@0kp)(U-VOcklQkJ*uQ&*Bj%9-~acG!xjU6(UIPd zg63a_!0*w7GZ8E?2PRi7KK>kdYS`p{`H#-u+_7rp_+bM+-E@{7c-L#M#pP^aUhp%5 zaRF|*t7*7tztESsF-_?d*U65hNZ8Gc+5p*zh>(p4&=j@d4NFm|Y67q^Bw+;aXEJ9a zg8oZwF$1T(Wr8| z?tG(PNrp$sBx!Xl?X{Lpgg+KkSF_)OVst8a`hptf(E98_ft7W(?DBMnL8{e{=$$vH z)a%fI3)NgWG@@kb#@UA^j@C(j82earbpe-zA8h}&p!x$aWm?|AeuZ*#RZ8`1M~|Kv z?8*u$67u!unQugW_%@@{)ekW7HdHR^3k<$~1;&hUU&q4Arc{MSMD?ybVMW%r`?6KgBNfSeF6E4vj61P_DGwQMB zTMQ=#mw_?rJBx}_6U}xq5K)a5>^gAt*u8t^F9>GK*ij%6;v{qbIrM7AnBEGUxYfS-fdGdzVfB4gf^$j^HASo`AI(q|V z%FI2x&%eK`%x_Vt(Q3~nYu+)SfAj4Ap?Mpcp59cmecM}Sw)v81vD9ufq!~2KT&p#5 z5oE6N%w2KYhxJ4AJZTb{%&d^`v!;djY+Re7MWj!$?$HPDy+bBi5DbMXT3U9^7-?Bht`i9SKrWV z=TkIl%am#`jNZ~Tc z3kY8x4HPFaK(sOjpeM!%{&JvXL@Je0r3kLw|Jl-IKRk16YPy&eNflh{9Iz1_cn#bu z)9BN^8m+{Tui*@KbFMB2h?HUpC&K!_qFF_rRd7R!)1_4WDRZz+CsVqXZP~HDIatzo z`|@p5iVW$aM26nQy|wV8+%c<9PM`X~q{`%IQ@^U3;Z|j@=DC%Px+V{k+WF|ia* zHxeB%C4|{!nPZhpptDzWhB%Vea z{eY!fZ>qBp9(?PDs_Wh-+=z1_eZtuVapodaxzqPh%nsdT)c>Eg!zgTJ{>m$Yjrpsu z3RdUw>sMZpL~Q?A)7*3G>^iSu+yAb;^k^NGNtIx%Scw3d6lZ)%K=05UblPYKcq&}w$kNg7l9 z=rUg?dh#O5WsYnFk1JhfD4aTkcytuximb5qAznwQqClsdJPv-~Bs(RYA|pR|Z9|Zl zeGUhYfLwS1Ho^-ug)6h`oYta!6tt?M3-BxGyV*kFHpm5!)S-LlcHv~p9u;JoPV}8W zCUcaN=-?0$RF}A=>tkW0rg*WssA&wi0ke??(fd;Ac1vbEu{Whdf>kP&X^Ff71QS(; z;H0&;W?HtBlr(Bv_K)bRZ?|ATNP-0BGKVZ3SBQ?knQ0XO!ccOYrnOa&w~HyRgXk6G zu}lej$vhCbom^aF+8;pN7w7bI8cyRx{{cGlUs{aXXgDb;dT;bzsZyswmo&Pho9Sj- zM-muvlEN+$c|7fz>DTNpiVo>z_Luf3`^)7H zX`*acgG%L#&o_9Zmb4@)kNp-g@r`gitZ=buN}e>;L&HxnP5YHapud(rXm}C1I6NMFGdw5id zp9Sqsw}=xFQ_Mh+4`3w;tm;V%j#I$9-A_Nlsehk0?Qz&%oG#ZhY!c^G+Er$yire+@ zkKjJ=Ex3=aO@Q?j{(uKQ2roaTeY`}<0HsW2~THYO4)HHTz#T=JNy!AVv{SIz@0yT#C$v#RkqBE?TRUx)e>@$^k24s!~ zqJ8VWKQV3EiSNmGl&}={57Yxil$26nDy>0(AQ_M|HsgipKTUpUz>Nm(=t+2qSr$DB zGTFm8Ob>yVaV(J=Hr!|xJ918d&pbCiUCL8X_ zyi+V$yA^&u^7?OnGh(Y5+#wTpu46?4E`yXHYuf>%v!f0yqS`68{F6_jn?Csjl%t7( z0>|iOAPfF6dIvlo@7M8XwNxcFBKAB_Ft-ElfEzp7=FmzvfYp>^pdi==3$39Hb{|@G zVvQYdz>$tQ>Ea*_d_+mlr?I1zTr3?f2eVCHo0dF#c5+&+e4@|hgZpgB;0Z_7fWnO% zn(FjYMGa`(E8=JXPPx7ju`DA`p_lr3j)vcxhMDBbez^E-t9{tQ8F)OCd%sqQ%pUydK`Al+coq zLfxkl8ie1L4o zaoLDri`yRF%pFF9oVM)ckQd*)=GeezuD3?*efiP2YPx%t~4S7i;Y?4`JQfYQ(X0}u+ zO_SvmNhC$r@XJQ6B7M5=4O;XvYL@~meF!pm8wzVW*sToe)Ebc-v3?koD4+zq-S1)Z z(F&?BP>w-4zlRTOfAwdY`SK41z18$eu`M{Hq1tHN zeErP>^jE9Dd3W!~KfL+!jaTL$ZLpd9c;V*2K-ymentt~a7(Ti8`U!(p4=ORM0N{qK zyC>dXiEh1sMxR1asHeqP3fv*F5lJVr~ojb1Wn)lYu5x32`{n6Id7vM*TdY~*mr2D}mQTS08t%N^c zg^P~>VorkE$%g9D7Q@qx;SmJvz^wskh|bY=!0nD67{`oifA$6Te*Ny~cVHZpM;--J znOYQe`N>8rB@1T2BwDhGC> z$;uJFJ`VCGtRzuCy-sS}9lT( zC%4Qt+b}tZD;=C{n60s)d^Bp0lO1DI(;tgn;#Q88YQtr-of$z}hPo-9xmMYvPw~6z z+*!WTn)Kmw_FdRFXLx!|sV~c2=kllMOZ%g*(!W%lVGCwBXP1SwdRcef03MBEJK;%) z@(ZQLHb7ny>Y>!KdPqq$S_0_j*TW&tMAy-qZ>6mgY#9s`@E?GEArb}(F!L6hCzys@ zM&HGaxZyHt5H*STAa;x5_)T~pOORC?O_ohuCjK0(amf7rZ{OAN=SP1$ zvo{EWzx@jsYg)X&eUd3FNoSU8`}fz%iz~E~0JX`KWzv}y+BtKy3bQ$=1<&=GXvoV? zvM|z8YySZ&-(RuoHp^gBDA!oK_rl)!gYP=?*GKn%X?)>J_}g!iU%u_h9d?DL!rTn# zW^*t@VZN&xCcTxe&<4#9zW&<>%oQ4~JO%L-88;~I3fYIBhuBCm>*28~;4)$l2pl$l z!Gbibo|^`UPg2&6x8Hqn5gWnya%2M!ODw*KS5qrvvWmGYtDjl3=9$%37ag?kx;poT zm6QDrxx|t;Y*s^Vir8eCPuWEEUtEXg3UDc~c)!jb6rXXD>r4^&stQkFK&6-oHCzlQk4bJW}a(IJRsmrhQ zW;pVDxs~bpDOMUxZ!qWOx{C7B6?|aK!aF7m-m!jCX>r4>nO;v#PO4O@b@@m6)j9xz zgPln(e?hO*8~=(u8s5~B-CUT55_15pzt&bawGY#y zeg0|d1QKmE|5a#EQHpb2{FM>(l-#B1n?K{J6@2Z(_uTHJyXeCN5yh=oIfCp^+d zLfCIJiav2LI$i4ZaH>wnI7H(|ULQV^$w&qiSv27Tm7D?ByNX?iMx!H!;|jyKEJlOD zXaS{6|HyTQPqHU^+_eAZ1||5Oz!WMTzW?*jV|I4_2BzcCLO zXzp?|9>ft5HEUIMa_wI$u4@Eac|-^CZ3Tn8V2hM0yO@K zwIv#)1Z9({*|T@=p7r27JO_$k!Hw}C1Y5^bH|XDo<{v-(%jx6uL-7Fk)1JM|w!M2I zlfZdUg#Mq89-?lHho|5v^Z;l|<+7!F<9!^)skmPkREe`D0s@JxoPHxs~IdpnC7ERM1wbJtPyQl+-9AV_Ar70GnWV^lS|vXXoTK-^=b}Hp35(to z7jXsCc%?RSACp8b#Y`|Fp_eLh44^n75si)BM^80HH^TP}Ig03=%s?FXJL&|G@t2-CND>*niCpz+$CwJ?)l z8-%BfhS3*RoGa7S>B`QncmYO7Px%oX0$+neKhmvj(F@};XfUz1seTdwx3{&vd~Euf zL!ZuU1fX%|r-#-|Klbwb!ekJ~ZivfIgmspV%0&EtVDoKo_;kb*nZ4^rME$_c6XTQE z6o*!39Qx~_w?{LPNQC(bJ_bf$wcKbETrOrWiP4hnML3Jz`UyIG zF*4YZ85}t>$X*JLq!)z4)QvT3AVxo+gmC0R{KO6FvB%Ju6nA8zJlF~Q_U+SmJvOqN z&Pp1dl|XF6UX%u~wvNfl;(b#bLjw;-yKQn5kHOgtzyXxBhi1afC0oy@XN;D*-N9*% zzFY~LTfcbG?%MqT6!|QJ-h&Nw3x@S7^VGW0FgguOqM8f)ndOUTjLk2 zbCr^0qf}xsr_gg>H^b+NfRo-j|5fzl7qH{i`SV`|9IyiJRagtpz%S3OSaA+mKnbvr z(3xAUe?}Cih=M^;N^zdZBR~A<=>CS}0x6rN-@1JHR(%#LEl4)>AN}cJxkq%Ah*KBz zcoPoIS#b`2+2e(<;8tpAsMl8``u%dOjR&9@BQb{|s~;VKwRgufI8l3|ZZGlxqLYge z8qwtDqy?pEJtzv0RRy*!#Cn28ZdEmx%a&(}nA}pvad%+P9b?b#+%)};KN zWt{D==4vbWHbbt-ISUqL?P+e_Gc)qhtT9`6y}GAk*W#_c&(gp2%a2~pE&)uRT=2Mf z!J13=-7#&`&U54LT$loKNBzdiRW+twH1S&al_9@R(YJc=Xfw{H{k8I~i+8o}d1cSm z#<@GsQayeA4ko_fdieOoC;_~Z7B;&{bddRf)qM$k8^zi8&g`Z8T4`n7vQEo~WJ|K- z+luWti5(}7bH|C}-1iANNr)lj;D!WJAmnO*aJD7Ta1|P$C6pFOxf@!V1m3ok5-60m zkZAMG%*u}Kgwnq6_x^t0msmSHv$M0av(L;t&&=~Y|1|MyL12rBHcM1iGJ#$lG`OL+ z4kDJbKYvRv&p{OL$8LGtwM8MX%SvJvN5bPOFP@mJ2)hzWgIcjz#qjGtyz2ck(z#C` znmhNQPXR+haO+^ExV^VT6F41juX0;VW~ZL)<2CuK1Ac?n7Vs2SJIwVOu7kI$jy?t& zQE~l?m7W;HN~87&pQqW$L_VxTTuV2$k?md0K`ju%2w|vid4NC@T@4})JFs>S>2pX( zqy^b0rw8!Z2criQ1SXHLAN%qlfO=S^1Bh5Ps2u#DXX@0RPH;m_qfWY&*D*A&UJnj5 z+Vt9Zxywew7uoTCMrAVdyx=jandqC=DXm^`KhGm(N?KCXnU@#f)G>cu0rs`Ff!^t% zm1;A$Qu-yWplLPpi_RgL&d$t`tUvA-t>B1;hqOX_y|hcpbuJ@(3Z>UwNVoN-AIasf7?=*A8z}FaxKP@# z61PV39-vIg`@r2@c!eWKTl}GF(mqY565$tQ=$q#4edL7X#g07oGs+KYdq*qUh;4 zJzV-crO4*=Eap)^BK&;L@||$IDeQqOMyzXc;EH(m(Gk;cJ}#@o;ueh)&3rW9g~CA@ z>JOu23Mo@M<;JE-d@6^Dht7z{{2+16M{}|^J6;7(_kJsKF7t?WM9m=W>${N1C09ey z%HlzpQB>QEb;0u1fXY`ItTWo+WxZ$Bxhv8H<4Awq@I)!CrKj#GFggMzi^UXh7z_4H zW8(%ldUOjZ25j`8#Q&pmhn_4$WM{y46tKHIPvqis0&H+jT zeK`W(QuY9wV}WWyJnU4w-%YfmLf$?-Da4!-Yzh)1JrRj^xqiwK^?$ja(s+*qaq+!& zcNlMn4u!F*8{@?tMEdP(D7fayYv$uFgbAKNn*_oIzCgmdYayoLeW&yxm&YGST03`V zUpSq8R^!v$uhDQBbokgltl_H8*R?))G)L|`a^w#_#Be+~BKMQ@jAS%iI(|mwLb9y6 zFVavK@<(EmW>ur!lf3~Ki%RurI1U}PAKQlAxuElPP5(7~Gc}2zE@21{+0S@xj|Xq@ z=U9O-X5}$U0Ez9stcC9P;k^ztKjI#hb9z!oe2M22#uFENN26zI5krW$LbJLm+1%u` zI*s5DqqG)n=Qc=}eUVq(b$iQ!oi@OTy4I3Hi_0zYc|$$^O541N9XlplIDw_rtCy6H z1~jXDa)5DO*3lS$Ij*JwoRyjMa7dRgRqC!_6>U&FJ>+A~cUnNsAZmXcs4o8m`6!lu$p=Ob>CXLBvCyV9!%F#HUikUmcQYAO>bZ4TP<9 zOfvdvSiVA9k@oxgVA9Q)fN;~$X+&&=vPu_0(M))aX2{E~f!qN8iP5^O;qZdR#=y`R z~Cl}lmm+I+Zs+rIF`ROlX%AB}qRy(R7CMIy_qR4VY{ zH$$&@c4;yNR*z)qIR__*9$`K6dY;Rpw^m92xVCugs2BjOM%4z&+d8v{crBm}%4rHA zaJ{GV(L1^hZ7=Ux(C7r#aC~?uzo35F>h3}%q`_CG7oUFNMnNgvF;n_}fUd05@;^m1 z1kn7qi9JizQXPnop)hJHUPi!DFe*7mNZ4l!_E1s++*?&ah99J1sfm70fP$|cy{G1LP{S9D%Rd0UUud_KUPoH1| zX8;ZI)Lu`E<0i-fuZg}_&*)1v>4h+|qdfD0uP_n(#HRD*x8(tq^o_+5^tYP-x?OMa z1xFd5pQCW+0S&B(ge&OjrrQcCAB@&Wv%E!2g}0(0m}0#(k#G`Z*i6Jv<3tiByJigOz~oF zBt@Ss7`B4ZkeP6ArG;TsypA)$CxK?E@p6qxwPEUPpaQS&G@Come-9<81=WU()Wlas z=zpG3YO5=0sUlpI2R5j6*D?!F7W<%={}G)m1I9-mmp*PB-X$${nkTGx7B~-IX$Boi z{&86Oqp9w&(rhqmM1_?;yYeNipvoBjOOQVOlV_yorr&2?(wdbhVGW(+^Q^3tl7`br z=H=-T&Vr(BBcm$jeh&7Om(#@>=_%FR&Sk&^EXy+wOkMaatS)e_pI~-6%~u{aGJLNd z+4mTUU4Xd!7{SZMqp7T3N(KQd$LG{>y;yQerNyur>VYqeVV=Tb*b)l6kzj=v-LP7b zJpAH;R0dXJ>^pD!!=HBS-2TPR?g?JLq3zIzr$EO^Z$o9|SNrzqT=`=+4KLBt>GX&# zla^%1ww)L*z`_?7`F-~2vg$5JOP+TH_`$pT4jkC`?#_Sg@YH3Tf4~31Pd|Nda+@|V zv-PO-+HAmjZ@mAFA9fD)?f*V}=XCXX>8aMWn}R~ut+rHkaGbr^Z5Us*;I<{TZHs#S zW0ASTPDQ9Fnoq|O4<1B)jLW$Tz&IHMCE1&z3E&kkR)drg&lX{kO%ja*0& zN)IPvdExaS?3oG@g&!Oc-6}G54&3fNFE-9~@!?oFXx0>{83k($Y#o1Wq>*J*ngW%@ zkFM~Ut>U#%p*Ls}I)A2kSfprpQO2)JXbn0AycU4Lt6|rOtbS5P;Pj%#B?>kJoGy&^ zkD7R|f3z?i>hsJNmqyfc!gVfIjEZcbpmh7)=ucrTU`23t@H!Zv^r#(HpmxBmkdkr0 zWJM-|J4hUGS#$7UP}Xb8*)z$_BsZH(>R5vU%8n)y@f>(L-M;nhN{3RXGc}l8sruG> zO>pyQXVUpTuP|H9+qP}nwkDp~wrx8T+sP9@v8|nV zYv1>++O68%`{DGdb8mm?TXpa0?thK(sW3*xydMYL%wnEf8l88wnXm4nLs1$VF1F5C=m< z^0OsOTsTCI{6`A{st_D%kTm&^5=GJIW^Y9UkVbiu{i@sYG83~Ws2;<>qZe*P#G8E- znL~<9SX5X;dKeQTtz6N(br))Mh6VdCMgMcO#W zmlgCpAM%=GCZR~HrO(EF7dpp1UIy|O*d`jiF?{_kL z1iLIm-L>4YyV1XBb&_g~0#eCdAnMD8i*VTrp|`PkKI|1gfG%-7F4~ly&yMp6J@*j^ zgf%n|udr@K609@35ia==-(d&*d}L_dE}ZIJ4*uIfC2j>*fw}99)|254Hj4T&b3Rv# z0$21kaI*T-bA#ZnQ`R-QX|8A3&U@YXWKfAy0>@^B*~B#zv2wIgjsurBM#+4jTPdC_ z2>zH!lg84RpfJejhbqpwUihLt$mrnM#k!Zwb9I)v9bL!X8q?eJcfyu>K&S8F+K3wz z&9wRHP<(CyMfQ7L{*N7ws%>_QU${8E9;Y1_51SC~FOwW|5AY0mFUQdvx0B*=RFe@5 z8`tuwWr;T)>lFQ%7KD;nSlchSy0N`u<@yHKTzdR0DGDiyDVD6d(lsUa1z(;68z8@> z3bLPtSQquUnQ!nMxj5FXSXI-#d;V&v^wf&W8PO&0s}Oh?TMy`5Ow!K#9=gNsf>B1mqqc`#*k+b^Ux~g)Sd(nm z$5~c5?)IWe*|rJdwI;g^4V#6z`I*J)kXp@d*1Ee)XS0j_>tP_1(oAz4)XHck^{Fg{ zie54eQLKMM6jii_f()4k++#RJ8v)%kOA4IUmLeUDx@D=_6YtP)UE4eUGU}LmBMu!& zT7r>6(6m8f?%+oSHAYpGAB%lSSNV9)f}ZZhSDM95%IDZIpR4m_F|>g1^ZSC13-!Ta z-q;F6=$JOw-XwGt$9C(v$8^b!qwfRI)A+&i)b!aeI;-lLE~8HoK%MCBvKUR1CY8r( z`m{Fiw=l*xz{E<02Z?w4-{XIyUQC*D)}wPoQ$Go1EL*$TMoB6D5=ANd~KUtR;v!IxSJN+jziV| zmS!+_d%q7SKA*o(Wc3?OsotPuLo|Q3lkd7rk56#)xw<@NuWR=0$Fj*tjV_0DfbnvG zyBwIM=Pwyqi-q7hJm3~_Q3PQPi0d=`%7TrQ<*K}ZdX7op#|xOXc|VtU!aK#*`rgWE zGC$RqZIx3tuxO3II@?ky=`?k#cmQ)xwDVH2P*AW~bkDdjC6o@PHM(I8eC5 z8I&o#Ev{7R3FC&q{x{q#q1_uPteoE)z%kk|3)1)+%QR81$CeQ#vJyHUzr9c(yH*S; zXHLZdSwyZ2FY-5u!p3V)G=fi)m>%RoZb#D%+YQ&%(PgdS4gXT#p({qULZMb`r%^z-PN@ZHb(2E7iv4!K0)6>CNc(zsDhH6!AvTZT6rmJPP_DWbA z<{-5uZf0^$XDPj8qJcJ-r1G=wU7Mmj%QoY9+Cm zchaL}2pl7Ue5Miam&AHWELLunG}Nr4fjwI+!$>&!F36<1!w`^^vBS#M7O*wtpkhb~ zEvWUsQ{$fY?5Z6jlTxrWIZ*40yeg~qvSdZlw3RHZ?DYe#mEFCqeAIk=soNfQ9;c^M zxx={MY5G0Nt;8gaG`^j$24K&1CQYUVIAFsI4tYsRF@FEPdGmIC~zQRn?X4RF=L} zl@4f-N7CE;^LI?Jm*dDB6YfEailXZa(=H}RB7Oo(tBBQu5Q|j`4MiDnWA=4TtMFR} zMt*{0eRU)3hU&l-s(TSv=c|cD)S3>473l@#AB`e`g_X_5Y#im(eBKSc#gnwTp&~ zlF!RU3z|d$#`ZKws~>EdQ0&?#A_%mdDaM355}(EG)PU;IQD=d;9m%u2vb%`y+?bO5_m`8 zIV$y4{W($SWX(qM%LY!3X6gqGKBN#%7!zxm^O`try(?0&7mbvBgjZq2pOqoTcsVT- z&7z#6kAgeLNQ7mu3sVjL(hw&a8f|c6pk0G8A+D9}WR#wrp%BJ4oVNaL50q?waq3Ru zjIZV!x-p53+rR10fh#AXu=$cFzYbzK`KgI{?H3}W4@@;m@x+7P@!|~z!W~E_Aq(sf z+EkvGKl!ZWHH+dca#Faj9VQk6x}J_9hib5d7S58hx&31bZCBjU==_BZ-a9(jqxo?e zp63aJgUoMKgC5w{Uik1&YM(d!xravA`p>3$!Mft4X}qm>=9kA`7KHEje0f9Y41r|` zxjx4SSs1bwYiue4z*ovXTXY$Lp+*zL`iDGXa0ABvah3sSy!4qSvL zi4oE93d9LC*i5>_a_+(tc$zzf@x10>&N0em3BhB#c6tT=^LWnn*6%L>WKwNc)t+rQ zkvX0nkc1p}+fPDKlgnqO9))~2p-lM*`z|BV$i-YEE}aSNO5b-3KN@q}DT4K_e8v@J zcLrrGHc51`i^5~-k|M!FRatDw)EcxQZ_+9#A36He4}Vxf4U7Y~&V>G!-fxDO-rHqT z49hO&!@6W1nW-*_a65r-gHijG7F%WJ&PnDs4N6qIG_BK1dj2Ij$ls2GK=nD86DlE} z)ch#Ma*jpZxhi_$I$FNdDtsm{(_*Kc?$L#rFgvNyqE_m8fvOEKtffn6<|f~ZUFvqm z)b^(V^&w#d3JKzS(pSqET;bRPbt9iW%8Mcp$(^51!Dc4_W$#ZX+`eD*3W!IIiy+2l zD?Td@N0H288#Eot5>7@&Mh!*DRkrcz+R6#ivDOeX$ z)r)yslFRGsKoOETT0CzL#$Jp0YU$Am4w@A6o}`NGmU0W;>aj3~KVNevfj`oz9VcEu zmN1ni_8b=S$d9fU$xOiXxBPV?NrQfa>+JujpvU(BTkFc>9Ve7{^%xEVZFYmkgiY&j zF)B|@7A?`Hw_iK|4j~sqdvFsUeY?8O0~PTv$~ZcgHMsBHX89__fSgS@o_2p`JIv@^ z`K)BP)XgRa|6S1?fC@WRh3PH4+TVd?V~LjU6~amUI6>4ADv_EatsJgD8`DD_XAqUO z%F6$^p%QDu9t|r5+m6z#o3+RuUS|I$>;3Wj7Z@63K<~Sn$mCiBUATtF_1hleo)I?u z2b!c*o0P!UInl@<>?5-xXl44EbtHN8Yj7r+J6whffhCiU9Q1rvT!eE6qqxD&WC{NmYTtXg0En8yr=}tO&trS7RpmF} zm4iOSkheF&p*0^;{Kzkz%|K8Q{Z5Ub0pn818f8dO2Z(;g6L=R>%s*bN?Ecy!x04*X zJ~yLj(YU3t@v#Ih+f8G6|K>o6oThpgg;KcB7u{-|Z!0-I?DD~R=h7DTUM}}~*L?x2 z#~f`_w99r|T!csB9MikdVOx{FE@#Ibd7vzPR;Uc0M@=0Z&#zhLW&yD5f8!s$-yg}D z`15IuLN;VTcpeL^5P&cy)Em1tby%qDy_X$!o4H_6GX?W0sU5{Gp(~6Tgd-2JlHS6z zq0oHM78NAiE$jba(d6!?1zqlIe{F6@c)m?u52=}_ihpo4lLROP&QO;Sy^|q?rb-fC3u?Hum6}s)Tmt{n3h{6Sd{7)xQHHS!S%gy8ZU&)D*t)a|wNOZ$`f=!i|Ni>o z!3?37a%L9klEJSXt3OyDo8)`&^$AeAA6X_>bdmEw?6{i}Yo5Di2$~{3=t~y}yxZp4 zxoj2h!xhm=u&n(4v;?VJRf(n+^c1LimCvDbfEe!M*<4ZLuIQS(aD_^ClPjaT0y2u{p+(<*hh?%h%(_ zK#dOnhyax5Z8}}xp2j=G*;58Nz;x)LbTgGUW>?McY-p>E25LQQBjC%U> zM%^=QTm=pXCbK=zY1vHA*;G3|)tJCu9-V8Dr{89Jn`!D*yp+F`t|$BthDSB>Rs2s+ zZPgOX!V$mKC-+a(zw>0(LJ;D=ruj%HIB|Rsy+T_+hf_6Qjdn-4M(g+BX!QLU&dYob zTY(fG%8A@n(HO;B4(^NR6WB5S^L;1hZ~gO@f7(dGGtW<2Ykj(DLA1sfQ%L&WP`<%{ z0Yc0O)&&#mvRFbG95)zsGQIadoZmYjTYgj_KWb;&l2R{7DSjeQr!0QTl*B?8;c7BP z720x2N={`-XZ_B*VPy(!#u6j8@Cpe)il?1c<5QdFlVbxmm!4whdzVV6-<=bm@JUPv z*na4&(xb8K}*;B3G0 z%6Yo^-@om)2Obx`rMD+hQ@DkCi#iSk>NwusJ*@e>N22Dx zonqnruw*?;pna+wO2w5>%jvD@TavZq^rY-c>HB6k+N8O+$ApOAu5)oZd-O*-2pwt^oc0$s$ehCgF^23VTTP8AltR8*&y@ zX{3Sf@nyAAuLnCzB98C!h)-v0ObGJrxV|e`eXmX}?F@SmP`Pkq)tk}a4{#7otu~VQ+i4YY*KcJ@` zf=7@mnTkFSK1|$ss=)5_=PlK_x8`Huw8yDd!aYt?fK&#)0<(F|iDfE1n>?v01h44d z2Wq#&*Oc4T9$$*Q3xl2jJBJW?`AoP)+xs`TvEV5j`ClET-h+hXJDtW*g>m$_rKTtyg+W9LQRHvN%fB< zwg}ZRZ_z`aN8%2ugfmIWXlrk?}X-m{v@I0SmU z?iT@oLMxczO-(N~wV}#1bz81VH8upLTQ6Ex%2I~l2R1@ozexcHh$M1aACKc?DwbV6 z?puFBKYF`#L7U_f@;ZH~c+gu4LMXE5s+W=Y52u5qh4Uh-5;6tsMM^f=?L6NdpqBO*+v+=?4;;Qq< zO5d?>(xm&yk4(g$neRl&W~{Q=V!I+cu?a`!Z~|M~2Ku1RTp*it${|M_{{1}^6aP|l zqsXiKYe5wp))f_G!x%wU?|-rYF0@+M<qQ{w`ezR;XuXcRGlEj- zJrJhYv9mija`6^MNF&d{{o`tFl^$KT>>nNyfjEyKRK%14g@VrweM}>od3JkU`wdw154l}2Th+A32y-zT&N$i4k5(th4d*~>pKcBZ#rz!x)e$@xayog3zro17Sh z4_m2sCTc}db1WZ}+>C^~bgj^j@#$yP3Z~^!XR%ObVf`HpgoE0R&nHeFd-44E0C)B< zjVM_AP8$n)6f>P&1`?WA(BeGpbf2V74}Y!Uf?|PUQ4lD?oU0NcUpT*pv2jcr5rgVW7ji>ZjPw{= z09}|c@xBHM&xf|1h__r<;lbOq+6kp6z!Rh zak@|q(|V<7k>YuHHcGvBDwHp&CV!jj&QYy!+`+-0x3f`5kH5Jm@?lXu)|*E87xMO% z>FoZr@B^JP8~GuGhZte780f!AgQHB6E|7KC&ecmY$HJ=?OPON5Sa@+OxDNJpI!mhe8s!VE8o>vVW zDLkZzK&(EdtJ0jn5oAfUS{utL;JK0sQ9pnt@r9g)paR(*m;RNw3oHo>scyh;qdi&Ueddl z6GS9FX$2Zt9Q#Ft!&^9nF`~z6N&}1Y7ll7eF@OLJAM;m#1#b5V5wHn!P~I~ zp&O_>{Rt=6$rYknGe4aEnVE3~wisT{wlYUs4@%kAf}h6UL2F>AF>eSn7yL2`k>lP~ z%H?`FodpY9Am%XZ!pTal5IgAe9$SakZJWAS=1>70+bL@;zRTdLKh!h!728;-pHM)K z60cIB$O#o2j?VvrHYY?L*fGV;J-r?TNu-{{A;NM?EXr;Qf(tPM`~g)%tT~3{>%}b= z)?h%!QB*V!WnrT?M6PO=WwHSLR98s(rD%XQ#bUEeT~G4*VNlFa?7$!3O91;&iIkN7 z4S@yKIgtF1iZ#i!8Q}au@sDxy#CzfiWoQ1VQ6D%sT)gYUK2RL1}Qe!8lCUuDg@ z(Dkhz*?kX6*3Sk=%0&W8qjfiitY7# zS|aE%cYJtU`_jp(igde#%Q0SLQgHV6Kgo4@x4)PiBZc>|)gs{YO~G9@{A!&?KkZR!982U0^cF{&Z~jzY+)mifl<-j` z3We66@JaEvr^H1E^Q}NE;&IrVrn;#A(Hev$iT;;B456MqC0l;q(JnHxKqV!o2im)A z2@3>zB-7iKj^xjBf{+1#SYN=i?KcPZ2Ns6FMfH!ee44xf3CeS%(YX(HNWUx{#yYCa zz0rDBbeKho@BIyFSo(sxqv}@??{kUsl5f^7tzPz_U z?(cqu9~GEdb`U4#LBWre^vx_IMB6MX=p1m@ti1h`5b0?Fe^C8^dxa@-eZlGi!!%Wh z>TnMHLOBBY%y-6fA3afIUZ4SAWIm!+-54175ZeevSF_&xQWQo9AMubGn@NY^3m#m$ zM_7UIEgLIF;teZh$-lEdt;wfG-snS0F_*K%JaU=W48o|g5E37Fl zexM%cm+P?W*e@%rt&(-egFq1_9CjEq)o>TL6j#~txmn$UL`Zl#-5UR z*Z~btbX}lpktV87Kn2416yyrcm7^=zmeiI+mQerEZL5}imL!(2AL7;^%Me1%B#m%% z_Vc}PqOqDUu3@tHTtq{Ol!MihHOQ1rnFetv?)h@vlw&9v43&Ix8ndQrASFZYsLvQa=k&x5{9vkjk<6^pWHP87tNU<<#jYv znbf(9aSU~ix?wq%gfg$xG5)z_n3hZzD7^msX3Hfi57UBWBt(qgCYjsFr~$B(UaklT zGvK;~>r*jyCsP=hU>vuZo*4}lZ2tB?E#}T`S?wGLf8*?6&X>;<+dwZBNo|=5OQa&R zqKgRQM7WHziA-WDXc_lfJJdiHfY^0~_ymDBepGuYnQZ$AU;_cmAMqMRnoqn|IN za~5cmttM`bMh{(>n++McGkmb4wQi_r&0YN68-%W1mvG?TRPjH;nShV&IOWU&^E6^i zN9yQlA(pw=hwCN^d^ovaLCC^_V3`F4scH>)@R}j$Krd1guI5t9g8NbUw!nfWY|Giz zU^SSQxYY<*gGv!08%d{c{u0CEmC zqok%mO-#iVmW;4C=~~2oe2uyG*T##|jMb)Jk@DM7S%|93wgz14Twi~sZ8ioGGkWbp z3yORQbnWRE3);vfRE5%n84FjZFsWX_(j~acSh&Lb9Um+ zT(o7eA1e2gH68;%RAKj8K|nw}vrP<54Gj&Ac=`5x#Y}norZph#-64_MjeS>sihqB9 z=LIGGfge6HG&BY|0|7Dp1-ts6eN0|v`}_MRZU}#JVq*uAj0alLfcU^b%>26_t1e@M zCWKV$^}rjGMH`OJ2Cgn8n@k&34ir1CC+LYJfQuyA7b6L#aIyZt{z4om>XYuSQDaf# z+igy&mf^4L>g?QEPMTV@*f)4fqu{ah)-Rb*R5{YA;H^=x4L}?7bWTJM#gafp<|CtL8URQHJHfb(q8bfIkzRjPi8E zbMR8VCO%i53l-dWqL7W)!85X@iGZepxh#AXr{ft}G->vWSuNRN5^Sw(N`&AoGqn9r zW?ij-z1>BhXKWad5}>P%oBA zee$ustjIrTy}3#J#9{C~Y)5W=Y{|Lsq2}=SZQL~v=p;qh+u$8)mV&;8?DObZjaP?d zlSB6~;@#)mi!BFgbrwVU_U8reVvKW{6N?`>pSwu^2S(U{NFC~>B%(N9H}Y74d)g)3 zZJyx0)xE9r9{sy>F>AL-$z3zT{X(7kOKIbUt*QE8b(Ac`mrjq_)4BW?`0gpA#!?^R zkwYi?Y|@*RgA1-ktcN#ujrZ5qnNnSaRw&rL)@L3|>%ge;r`OcE3{eEXz}`L0uWR9$ zs+ecrFX_+T8gJ`TsFpW^kRx`87d^oqHBq`g#R&IletSSyj9WiXNXv@G^Ckpvi9n&I z4$vcKCa%>x*Oa_^sk>$?m=jV1}dKxp*&ViPG*)QjrQ0uzjuF1Jv zXGJC_;B;)tT=x;mtF7=;xK9G%(raUopur&}_j*-Cr>VT}>l7Yvy|L{Je$yw0GAkws z({puNd#LNzjcUrfjpn^`&F~20d+V89lIo*6Yk@bmJ9{8c-w}?4V>K=O$21DbnD_uG zx`U<3DoZZ>w^kZ?h1vH@zsRmWeMk51_3XW$ z{6b#f#CIbAjt z6P>vW21pQAs1%~f%33&g=J&z!b^+caq?CVV3j*9fQAU+`x8@}IG0l)>+R6Fti~k1A0lx}g3RIM5(;_7glACnP7_}~@6adqq0^mZA6_}&IxmpA;=6qmVEhr4nnmS-`F-5tm1q#+j|T$?PMrAf4f?AwxMiXNosq8}vUMXb zO`+a0>pD>$lj&N#?|pz-XI2J@AsF-4AGtIctJG(tjw|X1J|rzDx6bg_HqON@584r< zZc|Lq_EOpBkDkrB*Ct?F95?v3fxF_~cBU9v>67Lk8?xJUOB=z2I$RMtdpWW@?E7s4 zRz7b!7l9HmnI44>nA{#J4u~vU5rpqI)&d{OrzugpP&YRq+=%-DI2Ppa{1HI6NbZOV z7w~^1K$(ciykWeO6D3!?kO0V*xT0^)d!C>bR9=OJ1JZMfd0!X>`KADzz8Szf_T3C~ znXIct;U1pN3BZlOVRmTmN3U+a1V(og!1vEuG_X4~b@D>*III1~NmaGMP};d=`%K4p z_yPRB1M`8-@OGgG!g<>(#&uv95$5idQ|kA=?2g4XXfLnm;xA{ydwjlu2#OnDX@CBm z6P0spi+!#h{kf(v3&y2fMW^`Xc_EpyySuzem+avva!P373*kzO% zl_qADVt-W;Q=It8RE7v|s-@)V&Q^_Q!@4(ySBYEcx6a~{oy=xa2p%K;wjYhRLrr=r z77@>iBZKV3){V2?f=e;$Lo@GGbC8v0RKa-^SP_sOL=)`tW?($rhr}C{%F=MY@l1lx zHMwQV;v%(cmeSo`3ck-X3-R*wmleSZnow{;6?L)nx(bQ>1kkf=1LpV?$&=d&9N#JN zkT#PDdb&ZFdgd2!uipR;g!@BtTbKl&Yq0T2rwVmnRLo$2S7@2RsvD@tE+Kwr2f|e81 zE+oC^^0xGLvMDEMoV3PPxY<;up%>MRqbW0p9*sgXbiaTc%6nWs6u>0DDT?#%zDM^< zh)WBOgN6$R%B>l^?#f*+M$b90FYcN2Lvr5_mcU-jgn7qtHvRI#VQd#aI|3gl6Qly; z=ds|hid)~BrR{SQz<~EW=pexLp5a05jgbFJ^ock~2EP;0Z}f&|#DG67vF97}hW)@h zW2^9wR74!uvp97M*E8dsI;kB;w{2;6uscO&$Bo==Vl=lyuYwL=8lCv-==e5ZFR zy!huiUgZs5Qt=-RU1QtKdIbboKn$bhhxrV3AJTRgj%B^?yMef*`D&QH_A62X}V0M)&MAU{=7&Be%INeD`-&=u28+3{x3agKlm6|5oa`0x?IBu!8}8&wv||)m$zgk@UH3RJ<@01ORv*&UQkbKZ zZfy{tOt4F&Jx3=#pY~UA&gvR}OT30%#Xtzm^tUHcX(ijzM!xP7WCy{w+cyKNn2&qT zcNFx8dVwhWAp8I`>&bKdul$mGigY4>2IPmV;MC7hI5-4DelQSxN>I6fxnfGvt~II< z+GyW)v7Ak@;kwz^R<2@y`;CGj<-SRPrt(_rwGn1Hl`JVH!fg zZp`inHE_ZK2MQC^24OkLV-AbskJp)Xi26(3u#nfWG2BUnzb~fiV$i#^n2v}7beKx+ z1lsxor7CUR((g;o&WoEq=slB!NlQ#ikGxR3$aC@ytiRrm4@;Gf`0*F6 z2Rn6_6BSmEXX&E2NVFqL?KGOhnypc<6EAf|rP`0X;wmy!tPo7orDiHVlDfB8)wZs14g`Y`>YFE8D+t!j+#PKjUg{YS{_IVdIx7*Li&5~fuqR0}m zzAGQmTp66he@C8Tn*nY3D&PF|^*Q6OM^3**Z@4PFG*A}3z6qH=LB+^39&TZ0qt}o< zv;8z6To1+@-PAISDX=w5+oqD&QnP6l3^Ou%8n;{7Qt4ue7$>LxUGW)DOnrV+Q}yu~ zmBml8#~&{K@(ZNfz1w~c8dOxWpM3%^IG728XeIX2dU>7nZYF1`OEnd^%55d~kl?|r zrbMt@<3mVj`9Fske-zcjr4GSpLgNmM)xpM!UhllAr@tXx~~U`uE&^(fCUJ*|D+F>0Vub_ z(MQk#q}yR?!)*ZC?Fh9IxB&5XX!~#-fOaQlMw zLhlAU40!;$ZunmKKS2C{3Ir1lDFDiDSYEh3e)vQ81se=G0NQRKKM?#80|EsG^8m9q zm@hOR@LveufdPYkfZZFy7lu+Kq(6+Y*i*&`_Z9e#KVdb8jqnDPbi*f|AZmwW9Zj~t zIYy=(UABI-4c9o@Y(egZZtlCc^IZkaTm^US+qd&v1^Mjjw{u*DyzgVhnLtl! z3W3R0?}N+l`?m`a1VZf#c`_0NS2@CzIYC<7D)Pc1j{Ulkb9hyV;bA#OM^}k_s)b)6cL5H!@E`bJ1pi*tu)tp4EyIh(2ksaCchL86z+T_2z>9%2G7^eXCUbHL-jP)# zjB2qFPJxp4zZG|gn&MbXlZ{aJl4(nqjo{Ye8cUmv@Ey_31@~sYOF^Cm`DT_&;jRVy zW}ZtSp9TG9j!TjE1*}+=-+xt!Lu4x#z~vVFn+5O%p%#Q(8S#ayETc-T!p%<=xnmH@ zegP%9qvA?UfSTNKab>7LQSRUJr7A#G?pXOU7N9J5^h~J>P`7g4%Ty@`XNgpd&RQkH z_Marcxm?1}d7_BzP(_efj8)>kSunaeb*2m!DBKxIUn&Ds?u?-?qX9~HM%9+u0JS^g zYRhne;+?4oAQcgO!-c<^e;jOAp@-*WH(wHowq-r4&E}|dwA5}^t$+IJb}32PSEayTxbHfb z@3pcNI6&mMj$Kyp&X!uIqLzwul`Ztzutj8D`R?w8!<|6o*d9uyG`zcc6acwajBAYE z;U$>L%BmSps#5EM<@Hlh6oBoq_MJzXmp>dzPu;e9VPITpQ6E)fS5=neh_Mzf|DBY) z#kE&CI#btGv20oVz$`wm-JF)0Z~Cwwy}$HNx6|Z1(m74tM11X7oZ2WjT8lL<#~9R> zSih9ljNH6;XSqOo(dsgAQKi9?&xBt_Ofit%fO6p*q$JkM887nJ=fm-`sDDg`61e8k{}G z`>9v^#``})6gz_nC!#`fF-pL7zinD_@~BO&Hr&-;HY6hwgPf=E>z}Dv{lVdNssh0F zy~uE~+JE(Y7O0nMzVfYJdwB@!iqcsR)DDx}4^K}Te(nE4A-r||;ZsxDLNbQEa+zmm924D!y}qE`j0(cw%8g>VjGXG;^1eHX19qvnK|DWGdK8c;mYF~m^km2)N0G# z+acU}PYg(|{q}wgT&0F;lYKVrSRjl7lNxi@9^vdHWg?@vcaFqzy6{h%&cHL9i4I0^ zunBdDzvHr9I&{JlzVJ_-=$SEYuwxP7yA?vg4<$dSM|^QS>cupPrVuR(napy9y@iF& z*m3l)U$td+VLy|BqiP&^Sr`Z9m_Yn-#`>yUkNa}-cG~HjZ7dSkG6IELDI8(8bQPDi z->SP6)om(@U@EphzTquVyJbk4Yq$<6@~4ehvUCsYYDLX`=Y(f>B2;}2z7bE!i$%n3 zSG^`2y*!wcqk|%&^;%qCdxm+4;CJSFXCtSu;x8C2>3D^aJLB&)eeU{WRiT+Ob&DeR zb*I`{|G{yg)xF5QO+9pX&p~$!%Ki4k`{t-sMGw{RX&VmCDT&xCq{;E~y>p(jCZx9f;keo|<~ zil$7BWv7x}^->yY{Ab&MC zA-*>H_b7*h`X`Tzw!zGC_{SwFmVX8BH?Qx_6Fpe6KXXQc5g>dSC)2|FIpOG_Llzjy zAr$P53h7~iWY=cF1Pr8$`&G+jxo3wPc;~!T87GXG?<5SnD0jz}TahBLT^$)GEXNmS zTvo5fSW%e6bzGAxBRu$loav+!B)xs7kP;2VL6V&p()C6fr8XsJrcP4kRFKHKlD)mH zW36##Qqcxkl!!j_8!gW6t=5$C`OF1)2f#OTy04qFwZB$z2qO;t&twuT~;5c*ENEE=ZfA)zq*8CZ8#0$}| zor^Y6snM;KG=gJrW{*Ad{?(bJZ6$y=Y{*8|KT-!_@pPpp&x8KY|ZxgYgGfzq(Ts9l~Usv*3=Q|~qX4|Ok4XkqnWEbrn~>>AO|v9ZsgUe*QZ5OCj3PM> z-8;ci^6--vmFzz01Gd}o;Wf#`_5Gks8WA$8zsiy7sNra(XlhjC#pzRGe(!U)Y9_ub zE1dDNFqVz9dZ2PJmdb)jKQhtg4oy4Nv7?dQtWt_8Wt61MvvAVlsKnHwpsB!F`N_k0 z@iFJx14n6;v6O!r>mnTlW3Ad`5iGU7pG)U0YM`u37CmX*QjNW-B- z!1H4e7ZZ^~5SNzA!WcIu+NT&}ucK{65&jgGHL9m-$4VtL|5vc?zk|>Q;#x>%Ldg)s1dM-!%YPPQiF<5k9X{l5jPOl+jaRu*E8bLP8QGBqUD665Mi zu%~&7yewF+|5wyQ{C>uAM{Am=%FBZ7y81Y0xw|RTL;ZdxN`;*5w3<9;xwt9QRXu6O SdSQM28?+M|D(2r_;{O0|uQ74} diff --git a/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 b/bower_components/font-awesome/fonts/fontawesome-webfont.woff2 deleted file mode 100644 index 4d13fc60404b91e398a37200c4a77b645cfd9586..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77160 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 diff --git a/bower_components/font-awesome/less/animated.less b/bower_components/font-awesome/less/animated.less deleted file mode 100644 index 66ad52a5ba..0000000000 --- a/bower_components/font-awesome/less/animated.less +++ /dev/null @@ -1,34 +0,0 @@ -// Animated Icons -// -------------------------- - -.@{fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.@{fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/bower_components/font-awesome/less/bordered-pulled.less b/bower_components/font-awesome/less/bordered-pulled.less deleted file mode 100644 index f1c8ad75f5..0000000000 --- a/bower_components/font-awesome/less/bordered-pulled.less +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.@{fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em @fa-border-color; - border-radius: .1em; -} - -.@{fa-css-prefix}-pull-left { float: left; } -.@{fa-css-prefix}-pull-right { float: right; } - -.@{fa-css-prefix} { - &.@{fa-css-prefix}-pull-left { margin-right: .3em; } - &.@{fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.@{fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/bower_components/font-awesome/less/core.less b/bower_components/font-awesome/less/core.less deleted file mode 100644 index c577ac84a6..0000000000 --- a/bower_components/font-awesome/less/core.less +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.@{fa-css-prefix} { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/bower_components/font-awesome/less/fixed-width.less b/bower_components/font-awesome/less/fixed-width.less deleted file mode 100644 index 110289f2f4..0000000000 --- a/bower_components/font-awesome/less/fixed-width.less +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.@{fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/bower_components/font-awesome/less/font-awesome.less b/bower_components/font-awesome/less/font-awesome.less deleted file mode 100644 index c3677def31..0000000000 --- a/bower_components/font-awesome/less/font-awesome.less +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables.less"; -@import "mixins.less"; -@import "path.less"; -@import "core.less"; -@import "larger.less"; -@import "fixed-width.less"; -@import "list.less"; -@import "bordered-pulled.less"; -@import "animated.less"; -@import "rotated-flipped.less"; -@import "stacked.less"; -@import "icons.less"; -@import "screen-reader.less"; diff --git a/bower_components/font-awesome/less/icons.less b/bower_components/font-awesome/less/icons.less deleted file mode 100644 index 159d600425..0000000000 --- a/bower_components/font-awesome/less/icons.less +++ /dev/null @@ -1,789 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } -.@{fa-css-prefix}-music:before { content: @fa-var-music; } -.@{fa-css-prefix}-search:before { content: @fa-var-search; } -.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } -.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } -.@{fa-css-prefix}-star:before { content: @fa-var-star; } -.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } -.@{fa-css-prefix}-user:before { content: @fa-var-user; } -.@{fa-css-prefix}-film:before { content: @fa-var-film; } -.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } -.@{fa-css-prefix}-th:before { content: @fa-var-th; } -.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } -.@{fa-css-prefix}-check:before { content: @fa-var-check; } -.@{fa-css-prefix}-remove:before, -.@{fa-css-prefix}-close:before, -.@{fa-css-prefix}-times:before { content: @fa-var-times; } -.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } -.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } -.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } -.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } -.@{fa-css-prefix}-gear:before, -.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } -.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } -.@{fa-css-prefix}-home:before { content: @fa-var-home; } -.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } -.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } -.@{fa-css-prefix}-road:before { content: @fa-var-road; } -.@{fa-css-prefix}-download:before { content: @fa-var-download; } -.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } -.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } -.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } -.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } -.@{fa-css-prefix}-rotate-right:before, -.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } -.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } -.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } -.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } -.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } -.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } -.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } -.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } -.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } -.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } -.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } -.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } -.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } -.@{fa-css-prefix}-book:before { content: @fa-var-book; } -.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } -.@{fa-css-prefix}-print:before { content: @fa-var-print; } -.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } -.@{fa-css-prefix}-font:before { content: @fa-var-font; } -.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } -.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } -.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } -.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } -.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } -.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } -.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } -.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } -.@{fa-css-prefix}-list:before { content: @fa-var-list; } -.@{fa-css-prefix}-dedent:before, -.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } -.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } -.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } -.@{fa-css-prefix}-photo:before, -.@{fa-css-prefix}-image:before, -.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } -.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } -.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } -.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } -.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } -.@{fa-css-prefix}-edit:before, -.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } -.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } -.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } -.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } -.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } -.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } -.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } -.@{fa-css-prefix}-play:before { content: @fa-var-play; } -.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } -.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } -.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } -.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } -.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } -.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } -.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } -.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } -.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } -.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } -.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } -.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } -.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } -.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } -.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } -.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } -.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } -.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } -.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } -.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } -.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } -.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } -.@{fa-css-prefix}-mail-forward:before, -.@{fa-css-prefix}-share:before { content: @fa-var-share; } -.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } -.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } -.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } -.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } -.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } -.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } -.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } -.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } -.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } -.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } -.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } -.@{fa-css-prefix}-warning:before, -.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } -.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } -.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } -.@{fa-css-prefix}-random:before { content: @fa-var-random; } -.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } -.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } -.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } -.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } -.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } -.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } -.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } -.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } -.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } -.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } -.@{fa-css-prefix}-bar-chart-o:before, -.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } -.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } -.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } -.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } -.@{fa-css-prefix}-key:before { content: @fa-var-key; } -.@{fa-css-prefix}-gears:before, -.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } -.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } -.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } -.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } -.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } -.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } -.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } -.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } -.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } -.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } -.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } -.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } -.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } -.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } -.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } -.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } -.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } -.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } -.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } -.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } -.@{fa-css-prefix}-facebook-f:before, -.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } -.@{fa-css-prefix}-github:before { content: @fa-var-github; } -.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } -.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } -.@{fa-css-prefix}-feed:before, -.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } -.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } -.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } -.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } -.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } -.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } -.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } -.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } -.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } -.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } -.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } -.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } -.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } -.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } -.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } -.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } -.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } -.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } -.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } -.@{fa-css-prefix}-group:before, -.@{fa-css-prefix}-users:before { content: @fa-var-users; } -.@{fa-css-prefix}-chain:before, -.@{fa-css-prefix}-link:before { content: @fa-var-link; } -.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } -.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } -.@{fa-css-prefix}-cut:before, -.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } -.@{fa-css-prefix}-copy:before, -.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } -.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } -.@{fa-css-prefix}-save:before, -.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } -.@{fa-css-prefix}-square:before { content: @fa-var-square; } -.@{fa-css-prefix}-navicon:before, -.@{fa-css-prefix}-reorder:before, -.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } -.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } -.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } -.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } -.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } -.@{fa-css-prefix}-table:before { content: @fa-var-table; } -.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } -.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } -.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } -.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } -.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } -.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } -.@{fa-css-prefix}-money:before { content: @fa-var-money; } -.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } -.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } -.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } -.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } -.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } -.@{fa-css-prefix}-unsorted:before, -.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } -.@{fa-css-prefix}-sort-down:before, -.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } -.@{fa-css-prefix}-sort-up:before, -.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } -.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } -.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } -.@{fa-css-prefix}-rotate-left:before, -.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } -.@{fa-css-prefix}-legal:before, -.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } -.@{fa-css-prefix}-dashboard:before, -.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } -.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } -.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } -.@{fa-css-prefix}-flash:before, -.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } -.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } -.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } -.@{fa-css-prefix}-paste:before, -.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } -.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } -.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } -.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } -.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } -.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } -.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } -.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } -.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } -.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } -.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } -.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } -.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } -.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } -.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } -.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } -.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } -.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } -.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } -.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } -.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } -.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } -.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } -.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } -.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } -.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } -.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } -.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } -.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } -.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } -.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } -.@{fa-css-prefix}-mobile-phone:before, -.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } -.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } -.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } -.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } -.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } -.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } -.@{fa-css-prefix}-mail-reply:before, -.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } -.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } -.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } -.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } -.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } -.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } -.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } -.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } -.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } -.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } -.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } -.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } -.@{fa-css-prefix}-code:before { content: @fa-var-code; } -.@{fa-css-prefix}-mail-reply-all:before, -.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } -.@{fa-css-prefix}-star-half-empty:before, -.@{fa-css-prefix}-star-half-full:before, -.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } -.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } -.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } -.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } -.@{fa-css-prefix}-unlink:before, -.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } -.@{fa-css-prefix}-question:before { content: @fa-var-question; } -.@{fa-css-prefix}-info:before { content: @fa-var-info; } -.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } -.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } -.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } -.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } -.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } -.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } -.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } -.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } -.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } -.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } -.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } -.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } -.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } -.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } -.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } -.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } -.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } -.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } -.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } -.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } -.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } -.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } -.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } -.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } -.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } -.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } -.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } -.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } -.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } -.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } -.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } -.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } -.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } -.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } -.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } -.@{fa-css-prefix}-toggle-down:before, -.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } -.@{fa-css-prefix}-toggle-up:before, -.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } -.@{fa-css-prefix}-toggle-right:before, -.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } -.@{fa-css-prefix}-euro:before, -.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } -.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } -.@{fa-css-prefix}-dollar:before, -.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } -.@{fa-css-prefix}-rupee:before, -.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } -.@{fa-css-prefix}-cny:before, -.@{fa-css-prefix}-rmb:before, -.@{fa-css-prefix}-yen:before, -.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } -.@{fa-css-prefix}-ruble:before, -.@{fa-css-prefix}-rouble:before, -.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } -.@{fa-css-prefix}-won:before, -.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } -.@{fa-css-prefix}-bitcoin:before, -.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } -.@{fa-css-prefix}-file:before { content: @fa-var-file; } -.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } -.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } -.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } -.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } -.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } -.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } -.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } -.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } -.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } -.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } -.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } -.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } -.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } -.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } -.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } -.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } -.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } -.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } -.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } -.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } -.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } -.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } -.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } -.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } -.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } -.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } -.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } -.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } -.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } -.@{fa-css-prefix}-android:before { content: @fa-var-android; } -.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } -.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } -.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } -.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } -.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } -.@{fa-css-prefix}-female:before { content: @fa-var-female; } -.@{fa-css-prefix}-male:before { content: @fa-var-male; } -.@{fa-css-prefix}-gittip:before, -.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } -.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } -.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } -.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } -.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } -.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } -.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } -.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } -.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } -.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } -.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } -.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } -.@{fa-css-prefix}-toggle-left:before, -.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } -.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } -.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } -.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } -.@{fa-css-prefix}-turkish-lira:before, -.@{fa-css-prefix}-try:before { content: @fa-var-try; } -.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } -.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } -.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } -.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } -.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } -.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } -.@{fa-css-prefix}-institution:before, -.@{fa-css-prefix}-bank:before, -.@{fa-css-prefix}-university:before { content: @fa-var-university; } -.@{fa-css-prefix}-mortar-board:before, -.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } -.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } -.@{fa-css-prefix}-google:before { content: @fa-var-google; } -.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } -.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } -.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } -.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } -.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } -.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } -.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } -.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } -.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } -.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } -.@{fa-css-prefix}-language:before { content: @fa-var-language; } -.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } -.@{fa-css-prefix}-building:before { content: @fa-var-building; } -.@{fa-css-prefix}-child:before { content: @fa-var-child; } -.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } -.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } -.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } -.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } -.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } -.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } -.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } -.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } -.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } -.@{fa-css-prefix}-automobile:before, -.@{fa-css-prefix}-car:before { content: @fa-var-car; } -.@{fa-css-prefix}-cab:before, -.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } -.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } -.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } -.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } -.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } -.@{fa-css-prefix}-database:before { content: @fa-var-database; } -.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } -.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } -.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } -.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } -.@{fa-css-prefix}-file-photo-o:before, -.@{fa-css-prefix}-file-picture-o:before, -.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } -.@{fa-css-prefix}-file-zip-o:before, -.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } -.@{fa-css-prefix}-file-sound-o:before, -.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } -.@{fa-css-prefix}-file-movie-o:before, -.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } -.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } -.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } -.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } -.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } -.@{fa-css-prefix}-life-bouy:before, -.@{fa-css-prefix}-life-buoy:before, -.@{fa-css-prefix}-life-saver:before, -.@{fa-css-prefix}-support:before, -.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } -.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } -.@{fa-css-prefix}-ra:before, -.@{fa-css-prefix}-resistance:before, -.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } -.@{fa-css-prefix}-ge:before, -.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } -.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } -.@{fa-css-prefix}-git:before { content: @fa-var-git; } -.@{fa-css-prefix}-y-combinator-square:before, -.@{fa-css-prefix}-yc-square:before, -.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } -.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } -.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } -.@{fa-css-prefix}-wechat:before, -.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } -.@{fa-css-prefix}-send:before, -.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } -.@{fa-css-prefix}-send-o:before, -.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } -.@{fa-css-prefix}-history:before { content: @fa-var-history; } -.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } -.@{fa-css-prefix}-header:before { content: @fa-var-header; } -.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } -.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } -.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } -.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } -.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } -.@{fa-css-prefix}-soccer-ball-o:before, -.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } -.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } -.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } -.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } -.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } -.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } -.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } -.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } -.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } -.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } -.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } -.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } -.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } -.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } -.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } -.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } -.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } -.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } -.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } -.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } -.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } -.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } -.@{fa-css-prefix}-at:before { content: @fa-var-at; } -.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } -.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } -.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } -.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } -.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } -.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } -.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } -.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } -.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } -.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } -.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } -.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } -.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } -.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } -.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } -.@{fa-css-prefix}-shekel:before, -.@{fa-css-prefix}-sheqel:before, -.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } -.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } -.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } -.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } -.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } -.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } -.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } -.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } -.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } -.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } -.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } -.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } -.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } -.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } -.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } -.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } -.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } -.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } -.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } -.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } -.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } -.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } -.@{fa-css-prefix}-intersex:before, -.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } -.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } -.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } -.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } -.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } -.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } -.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } -.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } -.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } -.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } -.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } -.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } -.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } -.@{fa-css-prefix}-server:before { content: @fa-var-server; } -.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } -.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } -.@{fa-css-prefix}-hotel:before, -.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } -.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } -.@{fa-css-prefix}-train:before { content: @fa-var-train; } -.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } -.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } -.@{fa-css-prefix}-yc:before, -.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } -.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } -.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } -.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } -.@{fa-css-prefix}-battery-4:before, -.@{fa-css-prefix}-battery:before, -.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } -.@{fa-css-prefix}-battery-3:before, -.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } -.@{fa-css-prefix}-battery-2:before, -.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } -.@{fa-css-prefix}-battery-1:before, -.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } -.@{fa-css-prefix}-battery-0:before, -.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } -.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } -.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } -.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } -.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } -.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } -.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } -.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } -.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } -.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } -.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } -.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } -.@{fa-css-prefix}-hourglass-1:before, -.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } -.@{fa-css-prefix}-hourglass-2:before, -.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } -.@{fa-css-prefix}-hourglass-3:before, -.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } -.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } -.@{fa-css-prefix}-hand-grab-o:before, -.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } -.@{fa-css-prefix}-hand-stop-o:before, -.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } -.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } -.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } -.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } -.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } -.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } -.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } -.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } -.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } -.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } -.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } -.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } -.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } -.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } -.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } -.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } -.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } -.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } -.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } -.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } -.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } -.@{fa-css-prefix}-tv:before, -.@{fa-css-prefix}-television:before { content: @fa-var-television; } -.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } -.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } -.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } -.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } -.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } -.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } -.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } -.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } -.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } -.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } -.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } -.@{fa-css-prefix}-map:before { content: @fa-var-map; } -.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } -.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } -.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } -.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } -.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } -.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } -.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } -.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } -.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } -.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } -.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } -.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } -.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } -.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } -.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } -.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } -.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } -.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } -.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } -.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } -.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } -.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } -.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } -.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } -.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } -.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } -.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } -.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } -.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } -.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } -.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } -.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } -.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } -.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } -.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } -.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } -.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } -.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } -.@{fa-css-prefix}-asl-interpreting:before, -.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } -.@{fa-css-prefix}-deafness:before, -.@{fa-css-prefix}-hard-of-hearing:before, -.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } -.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } -.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } -.@{fa-css-prefix}-signing:before, -.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } -.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } -.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } -.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } -.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } -.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } -.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } -.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } -.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } -.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } -.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } -.@{fa-css-prefix}-google-plus-circle:before, -.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } -.@{fa-css-prefix}-fa:before, -.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } -.@{fa-css-prefix}-handshake-o:before { content: @fa-var-handshake-o; } -.@{fa-css-prefix}-envelope-open:before { content: @fa-var-envelope-open; } -.@{fa-css-prefix}-envelope-open-o:before { content: @fa-var-envelope-open-o; } -.@{fa-css-prefix}-linode:before { content: @fa-var-linode; } -.@{fa-css-prefix}-address-book:before { content: @fa-var-address-book; } -.@{fa-css-prefix}-address-book-o:before { content: @fa-var-address-book-o; } -.@{fa-css-prefix}-vcard:before, -.@{fa-css-prefix}-address-card:before { content: @fa-var-address-card; } -.@{fa-css-prefix}-vcard-o:before, -.@{fa-css-prefix}-address-card-o:before { content: @fa-var-address-card-o; } -.@{fa-css-prefix}-user-circle:before { content: @fa-var-user-circle; } -.@{fa-css-prefix}-user-circle-o:before { content: @fa-var-user-circle-o; } -.@{fa-css-prefix}-user-o:before { content: @fa-var-user-o; } -.@{fa-css-prefix}-id-badge:before { content: @fa-var-id-badge; } -.@{fa-css-prefix}-drivers-license:before, -.@{fa-css-prefix}-id-card:before { content: @fa-var-id-card; } -.@{fa-css-prefix}-drivers-license-o:before, -.@{fa-css-prefix}-id-card-o:before { content: @fa-var-id-card-o; } -.@{fa-css-prefix}-quora:before { content: @fa-var-quora; } -.@{fa-css-prefix}-free-code-camp:before { content: @fa-var-free-code-camp; } -.@{fa-css-prefix}-telegram:before { content: @fa-var-telegram; } -.@{fa-css-prefix}-thermometer-4:before, -.@{fa-css-prefix}-thermometer:before, -.@{fa-css-prefix}-thermometer-full:before { content: @fa-var-thermometer-full; } -.@{fa-css-prefix}-thermometer-3:before, -.@{fa-css-prefix}-thermometer-three-quarters:before { content: @fa-var-thermometer-three-quarters; } -.@{fa-css-prefix}-thermometer-2:before, -.@{fa-css-prefix}-thermometer-half:before { content: @fa-var-thermometer-half; } -.@{fa-css-prefix}-thermometer-1:before, -.@{fa-css-prefix}-thermometer-quarter:before { content: @fa-var-thermometer-quarter; } -.@{fa-css-prefix}-thermometer-0:before, -.@{fa-css-prefix}-thermometer-empty:before { content: @fa-var-thermometer-empty; } -.@{fa-css-prefix}-shower:before { content: @fa-var-shower; } -.@{fa-css-prefix}-bathtub:before, -.@{fa-css-prefix}-s15:before, -.@{fa-css-prefix}-bath:before { content: @fa-var-bath; } -.@{fa-css-prefix}-podcast:before { content: @fa-var-podcast; } -.@{fa-css-prefix}-window-maximize:before { content: @fa-var-window-maximize; } -.@{fa-css-prefix}-window-minimize:before { content: @fa-var-window-minimize; } -.@{fa-css-prefix}-window-restore:before { content: @fa-var-window-restore; } -.@{fa-css-prefix}-times-rectangle:before, -.@{fa-css-prefix}-window-close:before { content: @fa-var-window-close; } -.@{fa-css-prefix}-times-rectangle-o:before, -.@{fa-css-prefix}-window-close-o:before { content: @fa-var-window-close-o; } -.@{fa-css-prefix}-bandcamp:before { content: @fa-var-bandcamp; } -.@{fa-css-prefix}-grav:before { content: @fa-var-grav; } -.@{fa-css-prefix}-etsy:before { content: @fa-var-etsy; } -.@{fa-css-prefix}-imdb:before { content: @fa-var-imdb; } -.@{fa-css-prefix}-ravelry:before { content: @fa-var-ravelry; } -.@{fa-css-prefix}-eercast:before { content: @fa-var-eercast; } -.@{fa-css-prefix}-microchip:before { content: @fa-var-microchip; } -.@{fa-css-prefix}-snowflake-o:before { content: @fa-var-snowflake-o; } -.@{fa-css-prefix}-superpowers:before { content: @fa-var-superpowers; } -.@{fa-css-prefix}-wpexplorer:before { content: @fa-var-wpexplorer; } -.@{fa-css-prefix}-meetup:before { content: @fa-var-meetup; } diff --git a/bower_components/font-awesome/less/larger.less b/bower_components/font-awesome/less/larger.less deleted file mode 100644 index c9d646770e..0000000000 --- a/bower_components/font-awesome/less/larger.less +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.@{fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.@{fa-css-prefix}-2x { font-size: 2em; } -.@{fa-css-prefix}-3x { font-size: 3em; } -.@{fa-css-prefix}-4x { font-size: 4em; } -.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/bower_components/font-awesome/less/list.less b/bower_components/font-awesome/less/list.less deleted file mode 100644 index 0b440382f6..0000000000 --- a/bower_components/font-awesome/less/list.less +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.@{fa-css-prefix}-ul { - padding-left: 0; - margin-left: @fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.@{fa-css-prefix}-li { - position: absolute; - left: -@fa-li-width; - width: @fa-li-width; - top: (2em / 14); - text-align: center; - &.@{fa-css-prefix}-lg { - left: (-@fa-li-width + (4em / 14)); - } -} diff --git a/bower_components/font-awesome/less/mixins.less b/bower_components/font-awesome/less/mixins.less deleted file mode 100644 index beef231d0e..0000000000 --- a/bower_components/font-awesome/less/mixins.less +++ /dev/null @@ -1,60 +0,0 @@ -// Mixins -// -------------------------- - -.fa-icon() { - display: inline-block; - font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -.fa-icon-rotate(@degrees, @rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; - -webkit-transform: rotate(@degrees); - -ms-transform: rotate(@degrees); - transform: rotate(@degrees); -} - -.fa-icon-flip(@horiz, @vert, @rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; - -webkit-transform: scale(@horiz, @vert); - -ms-transform: scale(@horiz, @vert); - transform: scale(@horiz, @vert); -} - - -// Only display content to screen readers. A la Bootstrap 4. -// -// See: http://a11yproject.com/posts/how-to-hide-content/ - -.sr-only() { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; -} - -// Use in conjunction with .sr-only to only display content when it's focused. -// -// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 -// -// Credit: HTML5 Boilerplate - -.sr-only-focusable() { - &:active, - &:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; - } -} diff --git a/bower_components/font-awesome/less/path.less b/bower_components/font-awesome/less/path.less deleted file mode 100644 index 835be41f81..0000000000 --- a/bower_components/font-awesome/less/path.less +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); - src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), - url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), - url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), - url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), - url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); - // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/bower_components/font-awesome/less/rotated-flipped.less b/bower_components/font-awesome/less/rotated-flipped.less deleted file mode 100644 index f6ba81475b..0000000000 --- a/bower_components/font-awesome/less/rotated-flipped.less +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } -.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } -.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } - -.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } -.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .@{fa-css-prefix}-rotate-90, -:root .@{fa-css-prefix}-rotate-180, -:root .@{fa-css-prefix}-rotate-270, -:root .@{fa-css-prefix}-flip-horizontal, -:root .@{fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/bower_components/font-awesome/less/screen-reader.less b/bower_components/font-awesome/less/screen-reader.less deleted file mode 100644 index 11c188196d..0000000000 --- a/bower_components/font-awesome/less/screen-reader.less +++ /dev/null @@ -1,5 +0,0 @@ -// Screen Readers -// ------------------------- - -.sr-only { .sr-only(); } -.sr-only-focusable { .sr-only-focusable(); } diff --git a/bower_components/font-awesome/less/stacked.less b/bower_components/font-awesome/less/stacked.less deleted file mode 100644 index fc53fb0e7a..0000000000 --- a/bower_components/font-awesome/less/stacked.less +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.@{fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.@{fa-css-prefix}-stack-1x { line-height: inherit; } -.@{fa-css-prefix}-stack-2x { font-size: 2em; } -.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/bower_components/font-awesome/less/variables.less b/bower_components/font-awesome/less/variables.less deleted file mode 100644 index 7ddbbc0115..0000000000 --- a/bower_components/font-awesome/less/variables.less +++ /dev/null @@ -1,800 +0,0 @@ -// Variables -// -------------------------- - -@fa-font-path: "../fonts"; -@fa-font-size-base: 14px; -@fa-line-height-base: 1; -//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts"; // for referencing Bootstrap CDN font files directly -@fa-css-prefix: fa; -@fa-version: "4.7.0"; -@fa-border-color: #eee; -@fa-inverse: #fff; -@fa-li-width: (30em / 14); - -@fa-var-500px: "\f26e"; -@fa-var-address-book: "\f2b9"; -@fa-var-address-book-o: "\f2ba"; -@fa-var-address-card: "\f2bb"; -@fa-var-address-card-o: "\f2bc"; -@fa-var-adjust: "\f042"; -@fa-var-adn: "\f170"; -@fa-var-align-center: "\f037"; -@fa-var-align-justify: "\f039"; -@fa-var-align-left: "\f036"; -@fa-var-align-right: "\f038"; -@fa-var-amazon: "\f270"; -@fa-var-ambulance: "\f0f9"; -@fa-var-american-sign-language-interpreting: "\f2a3"; -@fa-var-anchor: "\f13d"; -@fa-var-android: "\f17b"; -@fa-var-angellist: "\f209"; -@fa-var-angle-double-down: "\f103"; -@fa-var-angle-double-left: "\f100"; -@fa-var-angle-double-right: "\f101"; -@fa-var-angle-double-up: "\f102"; -@fa-var-angle-down: "\f107"; -@fa-var-angle-left: "\f104"; -@fa-var-angle-right: "\f105"; -@fa-var-angle-up: "\f106"; -@fa-var-apple: "\f179"; -@fa-var-archive: "\f187"; -@fa-var-area-chart: "\f1fe"; -@fa-var-arrow-circle-down: "\f0ab"; -@fa-var-arrow-circle-left: "\f0a8"; -@fa-var-arrow-circle-o-down: "\f01a"; -@fa-var-arrow-circle-o-left: "\f190"; -@fa-var-arrow-circle-o-right: "\f18e"; -@fa-var-arrow-circle-o-up: "\f01b"; -@fa-var-arrow-circle-right: "\f0a9"; -@fa-var-arrow-circle-up: "\f0aa"; -@fa-var-arrow-down: "\f063"; -@fa-var-arrow-left: "\f060"; -@fa-var-arrow-right: "\f061"; -@fa-var-arrow-up: "\f062"; -@fa-var-arrows: "\f047"; -@fa-var-arrows-alt: "\f0b2"; -@fa-var-arrows-h: "\f07e"; -@fa-var-arrows-v: "\f07d"; -@fa-var-asl-interpreting: "\f2a3"; -@fa-var-assistive-listening-systems: "\f2a2"; -@fa-var-asterisk: "\f069"; -@fa-var-at: "\f1fa"; -@fa-var-audio-description: "\f29e"; -@fa-var-automobile: "\f1b9"; -@fa-var-backward: "\f04a"; -@fa-var-balance-scale: "\f24e"; -@fa-var-ban: "\f05e"; -@fa-var-bandcamp: "\f2d5"; -@fa-var-bank: "\f19c"; -@fa-var-bar-chart: "\f080"; -@fa-var-bar-chart-o: "\f080"; -@fa-var-barcode: "\f02a"; -@fa-var-bars: "\f0c9"; -@fa-var-bath: "\f2cd"; -@fa-var-bathtub: "\f2cd"; -@fa-var-battery: "\f240"; -@fa-var-battery-0: "\f244"; -@fa-var-battery-1: "\f243"; -@fa-var-battery-2: "\f242"; -@fa-var-battery-3: "\f241"; -@fa-var-battery-4: "\f240"; -@fa-var-battery-empty: "\f244"; -@fa-var-battery-full: "\f240"; -@fa-var-battery-half: "\f242"; -@fa-var-battery-quarter: "\f243"; -@fa-var-battery-three-quarters: "\f241"; -@fa-var-bed: "\f236"; -@fa-var-beer: "\f0fc"; -@fa-var-behance: "\f1b4"; -@fa-var-behance-square: "\f1b5"; -@fa-var-bell: "\f0f3"; -@fa-var-bell-o: "\f0a2"; -@fa-var-bell-slash: "\f1f6"; -@fa-var-bell-slash-o: "\f1f7"; -@fa-var-bicycle: "\f206"; -@fa-var-binoculars: "\f1e5"; -@fa-var-birthday-cake: "\f1fd"; -@fa-var-bitbucket: "\f171"; -@fa-var-bitbucket-square: "\f172"; -@fa-var-bitcoin: "\f15a"; -@fa-var-black-tie: "\f27e"; -@fa-var-blind: "\f29d"; -@fa-var-bluetooth: "\f293"; -@fa-var-bluetooth-b: "\f294"; -@fa-var-bold: "\f032"; -@fa-var-bolt: "\f0e7"; -@fa-var-bomb: "\f1e2"; -@fa-var-book: "\f02d"; -@fa-var-bookmark: "\f02e"; -@fa-var-bookmark-o: "\f097"; -@fa-var-braille: "\f2a1"; -@fa-var-briefcase: "\f0b1"; -@fa-var-btc: "\f15a"; -@fa-var-bug: "\f188"; -@fa-var-building: "\f1ad"; -@fa-var-building-o: "\f0f7"; -@fa-var-bullhorn: "\f0a1"; -@fa-var-bullseye: "\f140"; -@fa-var-bus: "\f207"; -@fa-var-buysellads: "\f20d"; -@fa-var-cab: "\f1ba"; -@fa-var-calculator: "\f1ec"; -@fa-var-calendar: "\f073"; -@fa-var-calendar-check-o: "\f274"; -@fa-var-calendar-minus-o: "\f272"; -@fa-var-calendar-o: "\f133"; -@fa-var-calendar-plus-o: "\f271"; -@fa-var-calendar-times-o: "\f273"; -@fa-var-camera: "\f030"; -@fa-var-camera-retro: "\f083"; -@fa-var-car: "\f1b9"; -@fa-var-caret-down: "\f0d7"; -@fa-var-caret-left: "\f0d9"; -@fa-var-caret-right: "\f0da"; -@fa-var-caret-square-o-down: "\f150"; -@fa-var-caret-square-o-left: "\f191"; -@fa-var-caret-square-o-right: "\f152"; -@fa-var-caret-square-o-up: "\f151"; -@fa-var-caret-up: "\f0d8"; -@fa-var-cart-arrow-down: "\f218"; -@fa-var-cart-plus: "\f217"; -@fa-var-cc: "\f20a"; -@fa-var-cc-amex: "\f1f3"; -@fa-var-cc-diners-club: "\f24c"; -@fa-var-cc-discover: "\f1f2"; -@fa-var-cc-jcb: "\f24b"; -@fa-var-cc-mastercard: "\f1f1"; -@fa-var-cc-paypal: "\f1f4"; -@fa-var-cc-stripe: "\f1f5"; -@fa-var-cc-visa: "\f1f0"; -@fa-var-certificate: "\f0a3"; -@fa-var-chain: "\f0c1"; -@fa-var-chain-broken: "\f127"; -@fa-var-check: "\f00c"; -@fa-var-check-circle: "\f058"; -@fa-var-check-circle-o: "\f05d"; -@fa-var-check-square: "\f14a"; -@fa-var-check-square-o: "\f046"; -@fa-var-chevron-circle-down: "\f13a"; -@fa-var-chevron-circle-left: "\f137"; -@fa-var-chevron-circle-right: "\f138"; -@fa-var-chevron-circle-up: "\f139"; -@fa-var-chevron-down: "\f078"; -@fa-var-chevron-left: "\f053"; -@fa-var-chevron-right: "\f054"; -@fa-var-chevron-up: "\f077"; -@fa-var-child: "\f1ae"; -@fa-var-chrome: "\f268"; -@fa-var-circle: "\f111"; -@fa-var-circle-o: "\f10c"; -@fa-var-circle-o-notch: "\f1ce"; -@fa-var-circle-thin: "\f1db"; -@fa-var-clipboard: "\f0ea"; -@fa-var-clock-o: "\f017"; -@fa-var-clone: "\f24d"; -@fa-var-close: "\f00d"; -@fa-var-cloud: "\f0c2"; -@fa-var-cloud-download: "\f0ed"; -@fa-var-cloud-upload: "\f0ee"; -@fa-var-cny: "\f157"; -@fa-var-code: "\f121"; -@fa-var-code-fork: "\f126"; -@fa-var-codepen: "\f1cb"; -@fa-var-codiepie: "\f284"; -@fa-var-coffee: "\f0f4"; -@fa-var-cog: "\f013"; -@fa-var-cogs: "\f085"; -@fa-var-columns: "\f0db"; -@fa-var-comment: "\f075"; -@fa-var-comment-o: "\f0e5"; -@fa-var-commenting: "\f27a"; -@fa-var-commenting-o: "\f27b"; -@fa-var-comments: "\f086"; -@fa-var-comments-o: "\f0e6"; -@fa-var-compass: "\f14e"; -@fa-var-compress: "\f066"; -@fa-var-connectdevelop: "\f20e"; -@fa-var-contao: "\f26d"; -@fa-var-copy: "\f0c5"; -@fa-var-copyright: "\f1f9"; -@fa-var-creative-commons: "\f25e"; -@fa-var-credit-card: "\f09d"; -@fa-var-credit-card-alt: "\f283"; -@fa-var-crop: "\f125"; -@fa-var-crosshairs: "\f05b"; -@fa-var-css3: "\f13c"; -@fa-var-cube: "\f1b2"; -@fa-var-cubes: "\f1b3"; -@fa-var-cut: "\f0c4"; -@fa-var-cutlery: "\f0f5"; -@fa-var-dashboard: "\f0e4"; -@fa-var-dashcube: "\f210"; -@fa-var-database: "\f1c0"; -@fa-var-deaf: "\f2a4"; -@fa-var-deafness: "\f2a4"; -@fa-var-dedent: "\f03b"; -@fa-var-delicious: "\f1a5"; -@fa-var-desktop: "\f108"; -@fa-var-deviantart: "\f1bd"; -@fa-var-diamond: "\f219"; -@fa-var-digg: "\f1a6"; -@fa-var-dollar: "\f155"; -@fa-var-dot-circle-o: "\f192"; -@fa-var-download: "\f019"; -@fa-var-dribbble: "\f17d"; -@fa-var-drivers-license: "\f2c2"; -@fa-var-drivers-license-o: "\f2c3"; -@fa-var-dropbox: "\f16b"; -@fa-var-drupal: "\f1a9"; -@fa-var-edge: "\f282"; -@fa-var-edit: "\f044"; -@fa-var-eercast: "\f2da"; -@fa-var-eject: "\f052"; -@fa-var-ellipsis-h: "\f141"; -@fa-var-ellipsis-v: "\f142"; -@fa-var-empire: "\f1d1"; -@fa-var-envelope: "\f0e0"; -@fa-var-envelope-o: "\f003"; -@fa-var-envelope-open: "\f2b6"; -@fa-var-envelope-open-o: "\f2b7"; -@fa-var-envelope-square: "\f199"; -@fa-var-envira: "\f299"; -@fa-var-eraser: "\f12d"; -@fa-var-etsy: "\f2d7"; -@fa-var-eur: "\f153"; -@fa-var-euro: "\f153"; -@fa-var-exchange: "\f0ec"; -@fa-var-exclamation: "\f12a"; -@fa-var-exclamation-circle: "\f06a"; -@fa-var-exclamation-triangle: "\f071"; -@fa-var-expand: "\f065"; -@fa-var-expeditedssl: "\f23e"; -@fa-var-external-link: "\f08e"; -@fa-var-external-link-square: "\f14c"; -@fa-var-eye: "\f06e"; -@fa-var-eye-slash: "\f070"; -@fa-var-eyedropper: "\f1fb"; -@fa-var-fa: "\f2b4"; -@fa-var-facebook: "\f09a"; -@fa-var-facebook-f: "\f09a"; -@fa-var-facebook-official: "\f230"; -@fa-var-facebook-square: "\f082"; -@fa-var-fast-backward: "\f049"; -@fa-var-fast-forward: "\f050"; -@fa-var-fax: "\f1ac"; -@fa-var-feed: "\f09e"; -@fa-var-female: "\f182"; -@fa-var-fighter-jet: "\f0fb"; -@fa-var-file: "\f15b"; -@fa-var-file-archive-o: "\f1c6"; -@fa-var-file-audio-o: "\f1c7"; -@fa-var-file-code-o: "\f1c9"; -@fa-var-file-excel-o: "\f1c3"; -@fa-var-file-image-o: "\f1c5"; -@fa-var-file-movie-o: "\f1c8"; -@fa-var-file-o: "\f016"; -@fa-var-file-pdf-o: "\f1c1"; -@fa-var-file-photo-o: "\f1c5"; -@fa-var-file-picture-o: "\f1c5"; -@fa-var-file-powerpoint-o: "\f1c4"; -@fa-var-file-sound-o: "\f1c7"; -@fa-var-file-text: "\f15c"; -@fa-var-file-text-o: "\f0f6"; -@fa-var-file-video-o: "\f1c8"; -@fa-var-file-word-o: "\f1c2"; -@fa-var-file-zip-o: "\f1c6"; -@fa-var-files-o: "\f0c5"; -@fa-var-film: "\f008"; -@fa-var-filter: "\f0b0"; -@fa-var-fire: "\f06d"; -@fa-var-fire-extinguisher: "\f134"; -@fa-var-firefox: "\f269"; -@fa-var-first-order: "\f2b0"; -@fa-var-flag: "\f024"; -@fa-var-flag-checkered: "\f11e"; -@fa-var-flag-o: "\f11d"; -@fa-var-flash: "\f0e7"; -@fa-var-flask: "\f0c3"; -@fa-var-flickr: "\f16e"; -@fa-var-floppy-o: "\f0c7"; -@fa-var-folder: "\f07b"; -@fa-var-folder-o: "\f114"; -@fa-var-folder-open: "\f07c"; -@fa-var-folder-open-o: "\f115"; -@fa-var-font: "\f031"; -@fa-var-font-awesome: "\f2b4"; -@fa-var-fonticons: "\f280"; -@fa-var-fort-awesome: "\f286"; -@fa-var-forumbee: "\f211"; -@fa-var-forward: "\f04e"; -@fa-var-foursquare: "\f180"; -@fa-var-free-code-camp: "\f2c5"; -@fa-var-frown-o: "\f119"; -@fa-var-futbol-o: "\f1e3"; -@fa-var-gamepad: "\f11b"; -@fa-var-gavel: "\f0e3"; -@fa-var-gbp: "\f154"; -@fa-var-ge: "\f1d1"; -@fa-var-gear: "\f013"; -@fa-var-gears: "\f085"; -@fa-var-genderless: "\f22d"; -@fa-var-get-pocket: "\f265"; -@fa-var-gg: "\f260"; -@fa-var-gg-circle: "\f261"; -@fa-var-gift: "\f06b"; -@fa-var-git: "\f1d3"; -@fa-var-git-square: "\f1d2"; -@fa-var-github: "\f09b"; -@fa-var-github-alt: "\f113"; -@fa-var-github-square: "\f092"; -@fa-var-gitlab: "\f296"; -@fa-var-gittip: "\f184"; -@fa-var-glass: "\f000"; -@fa-var-glide: "\f2a5"; -@fa-var-glide-g: "\f2a6"; -@fa-var-globe: "\f0ac"; -@fa-var-google: "\f1a0"; -@fa-var-google-plus: "\f0d5"; -@fa-var-google-plus-circle: "\f2b3"; -@fa-var-google-plus-official: "\f2b3"; -@fa-var-google-plus-square: "\f0d4"; -@fa-var-google-wallet: "\f1ee"; -@fa-var-graduation-cap: "\f19d"; -@fa-var-gratipay: "\f184"; -@fa-var-grav: "\f2d6"; -@fa-var-group: "\f0c0"; -@fa-var-h-square: "\f0fd"; -@fa-var-hacker-news: "\f1d4"; -@fa-var-hand-grab-o: "\f255"; -@fa-var-hand-lizard-o: "\f258"; -@fa-var-hand-o-down: "\f0a7"; -@fa-var-hand-o-left: "\f0a5"; -@fa-var-hand-o-right: "\f0a4"; -@fa-var-hand-o-up: "\f0a6"; -@fa-var-hand-paper-o: "\f256"; -@fa-var-hand-peace-o: "\f25b"; -@fa-var-hand-pointer-o: "\f25a"; -@fa-var-hand-rock-o: "\f255"; -@fa-var-hand-scissors-o: "\f257"; -@fa-var-hand-spock-o: "\f259"; -@fa-var-hand-stop-o: "\f256"; -@fa-var-handshake-o: "\f2b5"; -@fa-var-hard-of-hearing: "\f2a4"; -@fa-var-hashtag: "\f292"; -@fa-var-hdd-o: "\f0a0"; -@fa-var-header: "\f1dc"; -@fa-var-headphones: "\f025"; -@fa-var-heart: "\f004"; -@fa-var-heart-o: "\f08a"; -@fa-var-heartbeat: "\f21e"; -@fa-var-history: "\f1da"; -@fa-var-home: "\f015"; -@fa-var-hospital-o: "\f0f8"; -@fa-var-hotel: "\f236"; -@fa-var-hourglass: "\f254"; -@fa-var-hourglass-1: "\f251"; -@fa-var-hourglass-2: "\f252"; -@fa-var-hourglass-3: "\f253"; -@fa-var-hourglass-end: "\f253"; -@fa-var-hourglass-half: "\f252"; -@fa-var-hourglass-o: "\f250"; -@fa-var-hourglass-start: "\f251"; -@fa-var-houzz: "\f27c"; -@fa-var-html5: "\f13b"; -@fa-var-i-cursor: "\f246"; -@fa-var-id-badge: "\f2c1"; -@fa-var-id-card: "\f2c2"; -@fa-var-id-card-o: "\f2c3"; -@fa-var-ils: "\f20b"; -@fa-var-image: "\f03e"; -@fa-var-imdb: "\f2d8"; -@fa-var-inbox: "\f01c"; -@fa-var-indent: "\f03c"; -@fa-var-industry: "\f275"; -@fa-var-info: "\f129"; -@fa-var-info-circle: "\f05a"; -@fa-var-inr: "\f156"; -@fa-var-instagram: "\f16d"; -@fa-var-institution: "\f19c"; -@fa-var-internet-explorer: "\f26b"; -@fa-var-intersex: "\f224"; -@fa-var-ioxhost: "\f208"; -@fa-var-italic: "\f033"; -@fa-var-joomla: "\f1aa"; -@fa-var-jpy: "\f157"; -@fa-var-jsfiddle: "\f1cc"; -@fa-var-key: "\f084"; -@fa-var-keyboard-o: "\f11c"; -@fa-var-krw: "\f159"; -@fa-var-language: "\f1ab"; -@fa-var-laptop: "\f109"; -@fa-var-lastfm: "\f202"; -@fa-var-lastfm-square: "\f203"; -@fa-var-leaf: "\f06c"; -@fa-var-leanpub: "\f212"; -@fa-var-legal: "\f0e3"; -@fa-var-lemon-o: "\f094"; -@fa-var-level-down: "\f149"; -@fa-var-level-up: "\f148"; -@fa-var-life-bouy: "\f1cd"; -@fa-var-life-buoy: "\f1cd"; -@fa-var-life-ring: "\f1cd"; -@fa-var-life-saver: "\f1cd"; -@fa-var-lightbulb-o: "\f0eb"; -@fa-var-line-chart: "\f201"; -@fa-var-link: "\f0c1"; -@fa-var-linkedin: "\f0e1"; -@fa-var-linkedin-square: "\f08c"; -@fa-var-linode: "\f2b8"; -@fa-var-linux: "\f17c"; -@fa-var-list: "\f03a"; -@fa-var-list-alt: "\f022"; -@fa-var-list-ol: "\f0cb"; -@fa-var-list-ul: "\f0ca"; -@fa-var-location-arrow: "\f124"; -@fa-var-lock: "\f023"; -@fa-var-long-arrow-down: "\f175"; -@fa-var-long-arrow-left: "\f177"; -@fa-var-long-arrow-right: "\f178"; -@fa-var-long-arrow-up: "\f176"; -@fa-var-low-vision: "\f2a8"; -@fa-var-magic: "\f0d0"; -@fa-var-magnet: "\f076"; -@fa-var-mail-forward: "\f064"; -@fa-var-mail-reply: "\f112"; -@fa-var-mail-reply-all: "\f122"; -@fa-var-male: "\f183"; -@fa-var-map: "\f279"; -@fa-var-map-marker: "\f041"; -@fa-var-map-o: "\f278"; -@fa-var-map-pin: "\f276"; -@fa-var-map-signs: "\f277"; -@fa-var-mars: "\f222"; -@fa-var-mars-double: "\f227"; -@fa-var-mars-stroke: "\f229"; -@fa-var-mars-stroke-h: "\f22b"; -@fa-var-mars-stroke-v: "\f22a"; -@fa-var-maxcdn: "\f136"; -@fa-var-meanpath: "\f20c"; -@fa-var-medium: "\f23a"; -@fa-var-medkit: "\f0fa"; -@fa-var-meetup: "\f2e0"; -@fa-var-meh-o: "\f11a"; -@fa-var-mercury: "\f223"; -@fa-var-microchip: "\f2db"; -@fa-var-microphone: "\f130"; -@fa-var-microphone-slash: "\f131"; -@fa-var-minus: "\f068"; -@fa-var-minus-circle: "\f056"; -@fa-var-minus-square: "\f146"; -@fa-var-minus-square-o: "\f147"; -@fa-var-mixcloud: "\f289"; -@fa-var-mobile: "\f10b"; -@fa-var-mobile-phone: "\f10b"; -@fa-var-modx: "\f285"; -@fa-var-money: "\f0d6"; -@fa-var-moon-o: "\f186"; -@fa-var-mortar-board: "\f19d"; -@fa-var-motorcycle: "\f21c"; -@fa-var-mouse-pointer: "\f245"; -@fa-var-music: "\f001"; -@fa-var-navicon: "\f0c9"; -@fa-var-neuter: "\f22c"; -@fa-var-newspaper-o: "\f1ea"; -@fa-var-object-group: "\f247"; -@fa-var-object-ungroup: "\f248"; -@fa-var-odnoklassniki: "\f263"; -@fa-var-odnoklassniki-square: "\f264"; -@fa-var-opencart: "\f23d"; -@fa-var-openid: "\f19b"; -@fa-var-opera: "\f26a"; -@fa-var-optin-monster: "\f23c"; -@fa-var-outdent: "\f03b"; -@fa-var-pagelines: "\f18c"; -@fa-var-paint-brush: "\f1fc"; -@fa-var-paper-plane: "\f1d8"; -@fa-var-paper-plane-o: "\f1d9"; -@fa-var-paperclip: "\f0c6"; -@fa-var-paragraph: "\f1dd"; -@fa-var-paste: "\f0ea"; -@fa-var-pause: "\f04c"; -@fa-var-pause-circle: "\f28b"; -@fa-var-pause-circle-o: "\f28c"; -@fa-var-paw: "\f1b0"; -@fa-var-paypal: "\f1ed"; -@fa-var-pencil: "\f040"; -@fa-var-pencil-square: "\f14b"; -@fa-var-pencil-square-o: "\f044"; -@fa-var-percent: "\f295"; -@fa-var-phone: "\f095"; -@fa-var-phone-square: "\f098"; -@fa-var-photo: "\f03e"; -@fa-var-picture-o: "\f03e"; -@fa-var-pie-chart: "\f200"; -@fa-var-pied-piper: "\f2ae"; -@fa-var-pied-piper-alt: "\f1a8"; -@fa-var-pied-piper-pp: "\f1a7"; -@fa-var-pinterest: "\f0d2"; -@fa-var-pinterest-p: "\f231"; -@fa-var-pinterest-square: "\f0d3"; -@fa-var-plane: "\f072"; -@fa-var-play: "\f04b"; -@fa-var-play-circle: "\f144"; -@fa-var-play-circle-o: "\f01d"; -@fa-var-plug: "\f1e6"; -@fa-var-plus: "\f067"; -@fa-var-plus-circle: "\f055"; -@fa-var-plus-square: "\f0fe"; -@fa-var-plus-square-o: "\f196"; -@fa-var-podcast: "\f2ce"; -@fa-var-power-off: "\f011"; -@fa-var-print: "\f02f"; -@fa-var-product-hunt: "\f288"; -@fa-var-puzzle-piece: "\f12e"; -@fa-var-qq: "\f1d6"; -@fa-var-qrcode: "\f029"; -@fa-var-question: "\f128"; -@fa-var-question-circle: "\f059"; -@fa-var-question-circle-o: "\f29c"; -@fa-var-quora: "\f2c4"; -@fa-var-quote-left: "\f10d"; -@fa-var-quote-right: "\f10e"; -@fa-var-ra: "\f1d0"; -@fa-var-random: "\f074"; -@fa-var-ravelry: "\f2d9"; -@fa-var-rebel: "\f1d0"; -@fa-var-recycle: "\f1b8"; -@fa-var-reddit: "\f1a1"; -@fa-var-reddit-alien: "\f281"; -@fa-var-reddit-square: "\f1a2"; -@fa-var-refresh: "\f021"; -@fa-var-registered: "\f25d"; -@fa-var-remove: "\f00d"; -@fa-var-renren: "\f18b"; -@fa-var-reorder: "\f0c9"; -@fa-var-repeat: "\f01e"; -@fa-var-reply: "\f112"; -@fa-var-reply-all: "\f122"; -@fa-var-resistance: "\f1d0"; -@fa-var-retweet: "\f079"; -@fa-var-rmb: "\f157"; -@fa-var-road: "\f018"; -@fa-var-rocket: "\f135"; -@fa-var-rotate-left: "\f0e2"; -@fa-var-rotate-right: "\f01e"; -@fa-var-rouble: "\f158"; -@fa-var-rss: "\f09e"; -@fa-var-rss-square: "\f143"; -@fa-var-rub: "\f158"; -@fa-var-ruble: "\f158"; -@fa-var-rupee: "\f156"; -@fa-var-s15: "\f2cd"; -@fa-var-safari: "\f267"; -@fa-var-save: "\f0c7"; -@fa-var-scissors: "\f0c4"; -@fa-var-scribd: "\f28a"; -@fa-var-search: "\f002"; -@fa-var-search-minus: "\f010"; -@fa-var-search-plus: "\f00e"; -@fa-var-sellsy: "\f213"; -@fa-var-send: "\f1d8"; -@fa-var-send-o: "\f1d9"; -@fa-var-server: "\f233"; -@fa-var-share: "\f064"; -@fa-var-share-alt: "\f1e0"; -@fa-var-share-alt-square: "\f1e1"; -@fa-var-share-square: "\f14d"; -@fa-var-share-square-o: "\f045"; -@fa-var-shekel: "\f20b"; -@fa-var-sheqel: "\f20b"; -@fa-var-shield: "\f132"; -@fa-var-ship: "\f21a"; -@fa-var-shirtsinbulk: "\f214"; -@fa-var-shopping-bag: "\f290"; -@fa-var-shopping-basket: "\f291"; -@fa-var-shopping-cart: "\f07a"; -@fa-var-shower: "\f2cc"; -@fa-var-sign-in: "\f090"; -@fa-var-sign-language: "\f2a7"; -@fa-var-sign-out: "\f08b"; -@fa-var-signal: "\f012"; -@fa-var-signing: "\f2a7"; -@fa-var-simplybuilt: "\f215"; -@fa-var-sitemap: "\f0e8"; -@fa-var-skyatlas: "\f216"; -@fa-var-skype: "\f17e"; -@fa-var-slack: "\f198"; -@fa-var-sliders: "\f1de"; -@fa-var-slideshare: "\f1e7"; -@fa-var-smile-o: "\f118"; -@fa-var-snapchat: "\f2ab"; -@fa-var-snapchat-ghost: "\f2ac"; -@fa-var-snapchat-square: "\f2ad"; -@fa-var-snowflake-o: "\f2dc"; -@fa-var-soccer-ball-o: "\f1e3"; -@fa-var-sort: "\f0dc"; -@fa-var-sort-alpha-asc: "\f15d"; -@fa-var-sort-alpha-desc: "\f15e"; -@fa-var-sort-amount-asc: "\f160"; -@fa-var-sort-amount-desc: "\f161"; -@fa-var-sort-asc: "\f0de"; -@fa-var-sort-desc: "\f0dd"; -@fa-var-sort-down: "\f0dd"; -@fa-var-sort-numeric-asc: "\f162"; -@fa-var-sort-numeric-desc: "\f163"; -@fa-var-sort-up: "\f0de"; -@fa-var-soundcloud: "\f1be"; -@fa-var-space-shuttle: "\f197"; -@fa-var-spinner: "\f110"; -@fa-var-spoon: "\f1b1"; -@fa-var-spotify: "\f1bc"; -@fa-var-square: "\f0c8"; -@fa-var-square-o: "\f096"; -@fa-var-stack-exchange: "\f18d"; -@fa-var-stack-overflow: "\f16c"; -@fa-var-star: "\f005"; -@fa-var-star-half: "\f089"; -@fa-var-star-half-empty: "\f123"; -@fa-var-star-half-full: "\f123"; -@fa-var-star-half-o: "\f123"; -@fa-var-star-o: "\f006"; -@fa-var-steam: "\f1b6"; -@fa-var-steam-square: "\f1b7"; -@fa-var-step-backward: "\f048"; -@fa-var-step-forward: "\f051"; -@fa-var-stethoscope: "\f0f1"; -@fa-var-sticky-note: "\f249"; -@fa-var-sticky-note-o: "\f24a"; -@fa-var-stop: "\f04d"; -@fa-var-stop-circle: "\f28d"; -@fa-var-stop-circle-o: "\f28e"; -@fa-var-street-view: "\f21d"; -@fa-var-strikethrough: "\f0cc"; -@fa-var-stumbleupon: "\f1a4"; -@fa-var-stumbleupon-circle: "\f1a3"; -@fa-var-subscript: "\f12c"; -@fa-var-subway: "\f239"; -@fa-var-suitcase: "\f0f2"; -@fa-var-sun-o: "\f185"; -@fa-var-superpowers: "\f2dd"; -@fa-var-superscript: "\f12b"; -@fa-var-support: "\f1cd"; -@fa-var-table: "\f0ce"; -@fa-var-tablet: "\f10a"; -@fa-var-tachometer: "\f0e4"; -@fa-var-tag: "\f02b"; -@fa-var-tags: "\f02c"; -@fa-var-tasks: "\f0ae"; -@fa-var-taxi: "\f1ba"; -@fa-var-telegram: "\f2c6"; -@fa-var-television: "\f26c"; -@fa-var-tencent-weibo: "\f1d5"; -@fa-var-terminal: "\f120"; -@fa-var-text-height: "\f034"; -@fa-var-text-width: "\f035"; -@fa-var-th: "\f00a"; -@fa-var-th-large: "\f009"; -@fa-var-th-list: "\f00b"; -@fa-var-themeisle: "\f2b2"; -@fa-var-thermometer: "\f2c7"; -@fa-var-thermometer-0: "\f2cb"; -@fa-var-thermometer-1: "\f2ca"; -@fa-var-thermometer-2: "\f2c9"; -@fa-var-thermometer-3: "\f2c8"; -@fa-var-thermometer-4: "\f2c7"; -@fa-var-thermometer-empty: "\f2cb"; -@fa-var-thermometer-full: "\f2c7"; -@fa-var-thermometer-half: "\f2c9"; -@fa-var-thermometer-quarter: "\f2ca"; -@fa-var-thermometer-three-quarters: "\f2c8"; -@fa-var-thumb-tack: "\f08d"; -@fa-var-thumbs-down: "\f165"; -@fa-var-thumbs-o-down: "\f088"; -@fa-var-thumbs-o-up: "\f087"; -@fa-var-thumbs-up: "\f164"; -@fa-var-ticket: "\f145"; -@fa-var-times: "\f00d"; -@fa-var-times-circle: "\f057"; -@fa-var-times-circle-o: "\f05c"; -@fa-var-times-rectangle: "\f2d3"; -@fa-var-times-rectangle-o: "\f2d4"; -@fa-var-tint: "\f043"; -@fa-var-toggle-down: "\f150"; -@fa-var-toggle-left: "\f191"; -@fa-var-toggle-off: "\f204"; -@fa-var-toggle-on: "\f205"; -@fa-var-toggle-right: "\f152"; -@fa-var-toggle-up: "\f151"; -@fa-var-trademark: "\f25c"; -@fa-var-train: "\f238"; -@fa-var-transgender: "\f224"; -@fa-var-transgender-alt: "\f225"; -@fa-var-trash: "\f1f8"; -@fa-var-trash-o: "\f014"; -@fa-var-tree: "\f1bb"; -@fa-var-trello: "\f181"; -@fa-var-tripadvisor: "\f262"; -@fa-var-trophy: "\f091"; -@fa-var-truck: "\f0d1"; -@fa-var-try: "\f195"; -@fa-var-tty: "\f1e4"; -@fa-var-tumblr: "\f173"; -@fa-var-tumblr-square: "\f174"; -@fa-var-turkish-lira: "\f195"; -@fa-var-tv: "\f26c"; -@fa-var-twitch: "\f1e8"; -@fa-var-twitter: "\f099"; -@fa-var-twitter-square: "\f081"; -@fa-var-umbrella: "\f0e9"; -@fa-var-underline: "\f0cd"; -@fa-var-undo: "\f0e2"; -@fa-var-universal-access: "\f29a"; -@fa-var-university: "\f19c"; -@fa-var-unlink: "\f127"; -@fa-var-unlock: "\f09c"; -@fa-var-unlock-alt: "\f13e"; -@fa-var-unsorted: "\f0dc"; -@fa-var-upload: "\f093"; -@fa-var-usb: "\f287"; -@fa-var-usd: "\f155"; -@fa-var-user: "\f007"; -@fa-var-user-circle: "\f2bd"; -@fa-var-user-circle-o: "\f2be"; -@fa-var-user-md: "\f0f0"; -@fa-var-user-o: "\f2c0"; -@fa-var-user-plus: "\f234"; -@fa-var-user-secret: "\f21b"; -@fa-var-user-times: "\f235"; -@fa-var-users: "\f0c0"; -@fa-var-vcard: "\f2bb"; -@fa-var-vcard-o: "\f2bc"; -@fa-var-venus: "\f221"; -@fa-var-venus-double: "\f226"; -@fa-var-venus-mars: "\f228"; -@fa-var-viacoin: "\f237"; -@fa-var-viadeo: "\f2a9"; -@fa-var-viadeo-square: "\f2aa"; -@fa-var-video-camera: "\f03d"; -@fa-var-vimeo: "\f27d"; -@fa-var-vimeo-square: "\f194"; -@fa-var-vine: "\f1ca"; -@fa-var-vk: "\f189"; -@fa-var-volume-control-phone: "\f2a0"; -@fa-var-volume-down: "\f027"; -@fa-var-volume-off: "\f026"; -@fa-var-volume-up: "\f028"; -@fa-var-warning: "\f071"; -@fa-var-wechat: "\f1d7"; -@fa-var-weibo: "\f18a"; -@fa-var-weixin: "\f1d7"; -@fa-var-whatsapp: "\f232"; -@fa-var-wheelchair: "\f193"; -@fa-var-wheelchair-alt: "\f29b"; -@fa-var-wifi: "\f1eb"; -@fa-var-wikipedia-w: "\f266"; -@fa-var-window-close: "\f2d3"; -@fa-var-window-close-o: "\f2d4"; -@fa-var-window-maximize: "\f2d0"; -@fa-var-window-minimize: "\f2d1"; -@fa-var-window-restore: "\f2d2"; -@fa-var-windows: "\f17a"; -@fa-var-won: "\f159"; -@fa-var-wordpress: "\f19a"; -@fa-var-wpbeginner: "\f297"; -@fa-var-wpexplorer: "\f2de"; -@fa-var-wpforms: "\f298"; -@fa-var-wrench: "\f0ad"; -@fa-var-xing: "\f168"; -@fa-var-xing-square: "\f169"; -@fa-var-y-combinator: "\f23b"; -@fa-var-y-combinator-square: "\f1d4"; -@fa-var-yahoo: "\f19e"; -@fa-var-yc: "\f23b"; -@fa-var-yc-square: "\f1d4"; -@fa-var-yelp: "\f1e9"; -@fa-var-yen: "\f157"; -@fa-var-yoast: "\f2b1"; -@fa-var-youtube: "\f167"; -@fa-var-youtube-play: "\f16a"; -@fa-var-youtube-square: "\f166"; - diff --git a/bower_components/font-awesome/scss/_animated.scss b/bower_components/font-awesome/scss/_animated.scss deleted file mode 100644 index 8a020dbfff..0000000000 --- a/bower_components/font-awesome/scss/_animated.scss +++ /dev/null @@ -1,34 +0,0 @@ -// Spinning Icons -// -------------------------- - -.#{$fa-css-prefix}-spin { - -webkit-animation: fa-spin 2s infinite linear; - animation: fa-spin 2s infinite linear; -} - -.#{$fa-css-prefix}-pulse { - -webkit-animation: fa-spin 1s infinite steps(8); - animation: fa-spin 1s infinite steps(8); -} - -@-webkit-keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} - -@keyframes fa-spin { - 0% { - -webkit-transform: rotate(0deg); - transform: rotate(0deg); - } - 100% { - -webkit-transform: rotate(359deg); - transform: rotate(359deg); - } -} diff --git a/bower_components/font-awesome/scss/_bordered-pulled.scss b/bower_components/font-awesome/scss/_bordered-pulled.scss deleted file mode 100644 index d4b85a02f2..0000000000 --- a/bower_components/font-awesome/scss/_bordered-pulled.scss +++ /dev/null @@ -1,25 +0,0 @@ -// Bordered & Pulled -// ------------------------- - -.#{$fa-css-prefix}-border { - padding: .2em .25em .15em; - border: solid .08em $fa-border-color; - border-radius: .1em; -} - -.#{$fa-css-prefix}-pull-left { float: left; } -.#{$fa-css-prefix}-pull-right { float: right; } - -.#{$fa-css-prefix} { - &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } - &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } -} - -/* Deprecated as of 4.4.0 */ -.pull-right { float: right; } -.pull-left { float: left; } - -.#{$fa-css-prefix} { - &.pull-left { margin-right: .3em; } - &.pull-right { margin-left: .3em; } -} diff --git a/bower_components/font-awesome/scss/_core.scss b/bower_components/font-awesome/scss/_core.scss deleted file mode 100644 index 7425ef85fc..0000000000 --- a/bower_components/font-awesome/scss/_core.scss +++ /dev/null @@ -1,12 +0,0 @@ -// Base Class Definition -// ------------------------- - -.#{$fa-css-prefix} { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} diff --git a/bower_components/font-awesome/scss/_fixed-width.scss b/bower_components/font-awesome/scss/_fixed-width.scss deleted file mode 100644 index b221c98133..0000000000 --- a/bower_components/font-awesome/scss/_fixed-width.scss +++ /dev/null @@ -1,6 +0,0 @@ -// Fixed Width Icons -// ------------------------- -.#{$fa-css-prefix}-fw { - width: (18em / 14); - text-align: center; -} diff --git a/bower_components/font-awesome/scss/_icons.scss b/bower_components/font-awesome/scss/_icons.scss deleted file mode 100644 index e63e702c4d..0000000000 --- a/bower_components/font-awesome/scss/_icons.scss +++ /dev/null @@ -1,789 +0,0 @@ -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen - readers do not read off random characters that represent icons */ - -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } -.#{$fa-css-prefix}-music:before { content: $fa-var-music; } -.#{$fa-css-prefix}-search:before { content: $fa-var-search; } -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } -.#{$fa-css-prefix}-star:before { content: $fa-var-star; } -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } -.#{$fa-css-prefix}-user:before { content: $fa-var-user; } -.#{$fa-css-prefix}-film:before { content: $fa-var-film; } -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } -.#{$fa-css-prefix}-th:before { content: $fa-var-th; } -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } -.#{$fa-css-prefix}-check:before { content: $fa-var-check; } -.#{$fa-css-prefix}-remove:before, -.#{$fa-css-prefix}-close:before, -.#{$fa-css-prefix}-times:before { content: $fa-var-times; } -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } -.#{$fa-css-prefix}-gear:before, -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } -.#{$fa-css-prefix}-home:before { content: $fa-var-home; } -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } -.#{$fa-css-prefix}-road:before { content: $fa-var-road; } -.#{$fa-css-prefix}-download:before { content: $fa-var-download; } -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } -.#{$fa-css-prefix}-rotate-right:before, -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } -.#{$fa-css-prefix}-book:before { content: $fa-var-book; } -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } -.#{$fa-css-prefix}-print:before { content: $fa-var-print; } -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } -.#{$fa-css-prefix}-font:before { content: $fa-var-font; } -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } -.#{$fa-css-prefix}-list:before { content: $fa-var-list; } -.#{$fa-css-prefix}-dedent:before, -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } -.#{$fa-css-prefix}-photo:before, -.#{$fa-css-prefix}-image:before, -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } -.#{$fa-css-prefix}-edit:before, -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } -.#{$fa-css-prefix}-play:before { content: $fa-var-play; } -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } -.#{$fa-css-prefix}-mail-forward:before, -.#{$fa-css-prefix}-share:before { content: $fa-var-share; } -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } -.#{$fa-css-prefix}-warning:before, -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } -.#{$fa-css-prefix}-random:before { content: $fa-var-random; } -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } -.#{$fa-css-prefix}-bar-chart-o:before, -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } -.#{$fa-css-prefix}-key:before { content: $fa-var-key; } -.#{$fa-css-prefix}-gears:before, -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } -.#{$fa-css-prefix}-facebook-f:before, -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } -.#{$fa-css-prefix}-github:before { content: $fa-var-github; } -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } -.#{$fa-css-prefix}-feed:before, -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } -.#{$fa-css-prefix}-group:before, -.#{$fa-css-prefix}-users:before { content: $fa-var-users; } -.#{$fa-css-prefix}-chain:before, -.#{$fa-css-prefix}-link:before { content: $fa-var-link; } -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } -.#{$fa-css-prefix}-cut:before, -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } -.#{$fa-css-prefix}-copy:before, -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } -.#{$fa-css-prefix}-save:before, -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } -.#{$fa-css-prefix}-square:before { content: $fa-var-square; } -.#{$fa-css-prefix}-navicon:before, -.#{$fa-css-prefix}-reorder:before, -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } -.#{$fa-css-prefix}-table:before { content: $fa-var-table; } -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } -.#{$fa-css-prefix}-money:before { content: $fa-var-money; } -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } -.#{$fa-css-prefix}-unsorted:before, -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } -.#{$fa-css-prefix}-sort-down:before, -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } -.#{$fa-css-prefix}-sort-up:before, -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } -.#{$fa-css-prefix}-rotate-left:before, -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } -.#{$fa-css-prefix}-legal:before, -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } -.#{$fa-css-prefix}-dashboard:before, -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } -.#{$fa-css-prefix}-flash:before, -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } -.#{$fa-css-prefix}-paste:before, -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } -.#{$fa-css-prefix}-mobile-phone:before, -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } -.#{$fa-css-prefix}-mail-reply:before, -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } -.#{$fa-css-prefix}-code:before { content: $fa-var-code; } -.#{$fa-css-prefix}-mail-reply-all:before, -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } -.#{$fa-css-prefix}-star-half-empty:before, -.#{$fa-css-prefix}-star-half-full:before, -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } -.#{$fa-css-prefix}-unlink:before, -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } -.#{$fa-css-prefix}-question:before { content: $fa-var-question; } -.#{$fa-css-prefix}-info:before { content: $fa-var-info; } -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } -.#{$fa-css-prefix}-toggle-down:before, -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } -.#{$fa-css-prefix}-toggle-up:before, -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } -.#{$fa-css-prefix}-toggle-right:before, -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } -.#{$fa-css-prefix}-euro:before, -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } -.#{$fa-css-prefix}-dollar:before, -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } -.#{$fa-css-prefix}-rupee:before, -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } -.#{$fa-css-prefix}-cny:before, -.#{$fa-css-prefix}-rmb:before, -.#{$fa-css-prefix}-yen:before, -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } -.#{$fa-css-prefix}-ruble:before, -.#{$fa-css-prefix}-rouble:before, -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } -.#{$fa-css-prefix}-won:before, -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } -.#{$fa-css-prefix}-bitcoin:before, -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } -.#{$fa-css-prefix}-file:before { content: $fa-var-file; } -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } -.#{$fa-css-prefix}-android:before { content: $fa-var-android; } -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } -.#{$fa-css-prefix}-female:before { content: $fa-var-female; } -.#{$fa-css-prefix}-male:before { content: $fa-var-male; } -.#{$fa-css-prefix}-gittip:before, -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } -.#{$fa-css-prefix}-toggle-left:before, -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } -.#{$fa-css-prefix}-turkish-lira:before, -.#{$fa-css-prefix}-try:before { content: $fa-var-try; } -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } -.#{$fa-css-prefix}-institution:before, -.#{$fa-css-prefix}-bank:before, -.#{$fa-css-prefix}-university:before { content: $fa-var-university; } -.#{$fa-css-prefix}-mortar-board:before, -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } -.#{$fa-css-prefix}-google:before { content: $fa-var-google; } -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } -.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } -.#{$fa-css-prefix}-language:before { content: $fa-var-language; } -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } -.#{$fa-css-prefix}-building:before { content: $fa-var-building; } -.#{$fa-css-prefix}-child:before { content: $fa-var-child; } -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } -.#{$fa-css-prefix}-automobile:before, -.#{$fa-css-prefix}-car:before { content: $fa-var-car; } -.#{$fa-css-prefix}-cab:before, -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } -.#{$fa-css-prefix}-database:before { content: $fa-var-database; } -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } -.#{$fa-css-prefix}-file-photo-o:before, -.#{$fa-css-prefix}-file-picture-o:before, -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } -.#{$fa-css-prefix}-file-zip-o:before, -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } -.#{$fa-css-prefix}-file-sound-o:before, -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } -.#{$fa-css-prefix}-file-movie-o:before, -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } -.#{$fa-css-prefix}-life-bouy:before, -.#{$fa-css-prefix}-life-buoy:before, -.#{$fa-css-prefix}-life-saver:before, -.#{$fa-css-prefix}-support:before, -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } -.#{$fa-css-prefix}-ra:before, -.#{$fa-css-prefix}-resistance:before, -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } -.#{$fa-css-prefix}-ge:before, -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } -.#{$fa-css-prefix}-git:before { content: $fa-var-git; } -.#{$fa-css-prefix}-y-combinator-square:before, -.#{$fa-css-prefix}-yc-square:before, -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } -.#{$fa-css-prefix}-wechat:before, -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } -.#{$fa-css-prefix}-send:before, -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } -.#{$fa-css-prefix}-send-o:before, -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } -.#{$fa-css-prefix}-history:before { content: $fa-var-history; } -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } -.#{$fa-css-prefix}-header:before { content: $fa-var-header; } -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } -.#{$fa-css-prefix}-soccer-ball-o:before, -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } -.#{$fa-css-prefix}-at:before { content: $fa-var-at; } -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } -.#{$fa-css-prefix}-shekel:before, -.#{$fa-css-prefix}-sheqel:before, -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } -.#{$fa-css-prefix}-intersex:before, -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } -.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } -.#{$fa-css-prefix}-server:before { content: $fa-var-server; } -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } -.#{$fa-css-prefix}-hotel:before, -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } -.#{$fa-css-prefix}-train:before { content: $fa-var-train; } -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } -.#{$fa-css-prefix}-yc:before, -.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } -.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } -.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } -.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } -.#{$fa-css-prefix}-battery-4:before, -.#{$fa-css-prefix}-battery:before, -.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } -.#{$fa-css-prefix}-battery-3:before, -.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } -.#{$fa-css-prefix}-battery-2:before, -.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } -.#{$fa-css-prefix}-battery-1:before, -.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } -.#{$fa-css-prefix}-battery-0:before, -.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } -.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } -.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } -.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } -.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } -.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } -.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } -.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } -.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } -.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } -.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } -.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } -.#{$fa-css-prefix}-hourglass-1:before, -.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } -.#{$fa-css-prefix}-hourglass-2:before, -.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } -.#{$fa-css-prefix}-hourglass-3:before, -.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } -.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } -.#{$fa-css-prefix}-hand-grab-o:before, -.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } -.#{$fa-css-prefix}-hand-stop-o:before, -.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } -.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } -.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } -.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } -.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } -.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } -.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } -.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } -.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } -.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } -.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } -.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } -.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } -.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } -.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } -.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } -.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } -.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } -.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } -.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } -.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } -.#{$fa-css-prefix}-tv:before, -.#{$fa-css-prefix}-television:before { content: $fa-var-television; } -.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } -.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } -.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } -.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } -.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } -.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } -.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } -.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } -.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } -.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } -.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } -.#{$fa-css-prefix}-map:before { content: $fa-var-map; } -.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } -.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } -.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } -.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } -.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } -.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } -.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } -.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } -.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } -.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } -.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } -.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } -.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } -.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } -.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } -.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } -.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } -.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } -.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } -.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } -.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } -.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } -.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } -.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } -.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } -.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } -.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } -.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } -.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } -.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } -.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } -.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } -.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } -.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } -.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } -.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } -.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } -.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } -.#{$fa-css-prefix}-asl-interpreting:before, -.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } -.#{$fa-css-prefix}-deafness:before, -.#{$fa-css-prefix}-hard-of-hearing:before, -.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } -.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } -.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } -.#{$fa-css-prefix}-signing:before, -.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } -.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } -.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } -.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } -.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } -.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } -.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } -.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } -.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } -.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } -.#{$fa-css-prefix}-google-plus-circle:before, -.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } -.#{$fa-css-prefix}-fa:before, -.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } -.#{$fa-css-prefix}-handshake-o:before { content: $fa-var-handshake-o; } -.#{$fa-css-prefix}-envelope-open:before { content: $fa-var-envelope-open; } -.#{$fa-css-prefix}-envelope-open-o:before { content: $fa-var-envelope-open-o; } -.#{$fa-css-prefix}-linode:before { content: $fa-var-linode; } -.#{$fa-css-prefix}-address-book:before { content: $fa-var-address-book; } -.#{$fa-css-prefix}-address-book-o:before { content: $fa-var-address-book-o; } -.#{$fa-css-prefix}-vcard:before, -.#{$fa-css-prefix}-address-card:before { content: $fa-var-address-card; } -.#{$fa-css-prefix}-vcard-o:before, -.#{$fa-css-prefix}-address-card-o:before { content: $fa-var-address-card-o; } -.#{$fa-css-prefix}-user-circle:before { content: $fa-var-user-circle; } -.#{$fa-css-prefix}-user-circle-o:before { content: $fa-var-user-circle-o; } -.#{$fa-css-prefix}-user-o:before { content: $fa-var-user-o; } -.#{$fa-css-prefix}-id-badge:before { content: $fa-var-id-badge; } -.#{$fa-css-prefix}-drivers-license:before, -.#{$fa-css-prefix}-id-card:before { content: $fa-var-id-card; } -.#{$fa-css-prefix}-drivers-license-o:before, -.#{$fa-css-prefix}-id-card-o:before { content: $fa-var-id-card-o; } -.#{$fa-css-prefix}-quora:before { content: $fa-var-quora; } -.#{$fa-css-prefix}-free-code-camp:before { content: $fa-var-free-code-camp; } -.#{$fa-css-prefix}-telegram:before { content: $fa-var-telegram; } -.#{$fa-css-prefix}-thermometer-4:before, -.#{$fa-css-prefix}-thermometer:before, -.#{$fa-css-prefix}-thermometer-full:before { content: $fa-var-thermometer-full; } -.#{$fa-css-prefix}-thermometer-3:before, -.#{$fa-css-prefix}-thermometer-three-quarters:before { content: $fa-var-thermometer-three-quarters; } -.#{$fa-css-prefix}-thermometer-2:before, -.#{$fa-css-prefix}-thermometer-half:before { content: $fa-var-thermometer-half; } -.#{$fa-css-prefix}-thermometer-1:before, -.#{$fa-css-prefix}-thermometer-quarter:before { content: $fa-var-thermometer-quarter; } -.#{$fa-css-prefix}-thermometer-0:before, -.#{$fa-css-prefix}-thermometer-empty:before { content: $fa-var-thermometer-empty; } -.#{$fa-css-prefix}-shower:before { content: $fa-var-shower; } -.#{$fa-css-prefix}-bathtub:before, -.#{$fa-css-prefix}-s15:before, -.#{$fa-css-prefix}-bath:before { content: $fa-var-bath; } -.#{$fa-css-prefix}-podcast:before { content: $fa-var-podcast; } -.#{$fa-css-prefix}-window-maximize:before { content: $fa-var-window-maximize; } -.#{$fa-css-prefix}-window-minimize:before { content: $fa-var-window-minimize; } -.#{$fa-css-prefix}-window-restore:before { content: $fa-var-window-restore; } -.#{$fa-css-prefix}-times-rectangle:before, -.#{$fa-css-prefix}-window-close:before { content: $fa-var-window-close; } -.#{$fa-css-prefix}-times-rectangle-o:before, -.#{$fa-css-prefix}-window-close-o:before { content: $fa-var-window-close-o; } -.#{$fa-css-prefix}-bandcamp:before { content: $fa-var-bandcamp; } -.#{$fa-css-prefix}-grav:before { content: $fa-var-grav; } -.#{$fa-css-prefix}-etsy:before { content: $fa-var-etsy; } -.#{$fa-css-prefix}-imdb:before { content: $fa-var-imdb; } -.#{$fa-css-prefix}-ravelry:before { content: $fa-var-ravelry; } -.#{$fa-css-prefix}-eercast:before { content: $fa-var-eercast; } -.#{$fa-css-prefix}-microchip:before { content: $fa-var-microchip; } -.#{$fa-css-prefix}-snowflake-o:before { content: $fa-var-snowflake-o; } -.#{$fa-css-prefix}-superpowers:before { content: $fa-var-superpowers; } -.#{$fa-css-prefix}-wpexplorer:before { content: $fa-var-wpexplorer; } -.#{$fa-css-prefix}-meetup:before { content: $fa-var-meetup; } diff --git a/bower_components/font-awesome/scss/_larger.scss b/bower_components/font-awesome/scss/_larger.scss deleted file mode 100644 index 41e9a8184a..0000000000 --- a/bower_components/font-awesome/scss/_larger.scss +++ /dev/null @@ -1,13 +0,0 @@ -// Icon Sizes -// ------------------------- - -/* makes the font 33% larger relative to the icon container */ -.#{$fa-css-prefix}-lg { - font-size: (4em / 3); - line-height: (3em / 4); - vertical-align: -15%; -} -.#{$fa-css-prefix}-2x { font-size: 2em; } -.#{$fa-css-prefix}-3x { font-size: 3em; } -.#{$fa-css-prefix}-4x { font-size: 4em; } -.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/bower_components/font-awesome/scss/_list.scss b/bower_components/font-awesome/scss/_list.scss deleted file mode 100644 index 7d1e4d54d6..0000000000 --- a/bower_components/font-awesome/scss/_list.scss +++ /dev/null @@ -1,19 +0,0 @@ -// List Icons -// ------------------------- - -.#{$fa-css-prefix}-ul { - padding-left: 0; - margin-left: $fa-li-width; - list-style-type: none; - > li { position: relative; } -} -.#{$fa-css-prefix}-li { - position: absolute; - left: -$fa-li-width; - width: $fa-li-width; - top: (2em / 14); - text-align: center; - &.#{$fa-css-prefix}-lg { - left: -$fa-li-width + (4em / 14); - } -} diff --git a/bower_components/font-awesome/scss/_mixins.scss b/bower_components/font-awesome/scss/_mixins.scss deleted file mode 100644 index c3bbd5745d..0000000000 --- a/bower_components/font-awesome/scss/_mixins.scss +++ /dev/null @@ -1,60 +0,0 @@ -// Mixins -// -------------------------- - -@mixin fa-icon() { - display: inline-block; - font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration - font-size: inherit; // can't have font-size inherit on line above, so need to override - text-rendering: auto; // optimizelegibility throws things off #1094 - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -} - -@mixin fa-icon-rotate($degrees, $rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; - -webkit-transform: rotate($degrees); - -ms-transform: rotate($degrees); - transform: rotate($degrees); -} - -@mixin fa-icon-flip($horiz, $vert, $rotation) { - -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; - -webkit-transform: scale($horiz, $vert); - -ms-transform: scale($horiz, $vert); - transform: scale($horiz, $vert); -} - - -// Only display content to screen readers. A la Bootstrap 4. -// -// See: http://a11yproject.com/posts/how-to-hide-content/ - -@mixin sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0,0,0,0); - border: 0; -} - -// Use in conjunction with .sr-only to only display content when it's focused. -// -// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 -// -// Credit: HTML5 Boilerplate - -@mixin sr-only-focusable { - &:active, - &:focus { - position: static; - width: auto; - height: auto; - margin: 0; - overflow: visible; - clip: auto; - } -} diff --git a/bower_components/font-awesome/scss/_path.scss b/bower_components/font-awesome/scss/_path.scss deleted file mode 100644 index bb457c23a8..0000000000 --- a/bower_components/font-awesome/scss/_path.scss +++ /dev/null @@ -1,15 +0,0 @@ -/* FONT PATH - * -------------------------- */ - -@font-face { - font-family: 'FontAwesome'; - src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); - src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), - url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), - url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), - url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), - url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); -// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts - font-weight: normal; - font-style: normal; -} diff --git a/bower_components/font-awesome/scss/_rotated-flipped.scss b/bower_components/font-awesome/scss/_rotated-flipped.scss deleted file mode 100644 index a3558fd09c..0000000000 --- a/bower_components/font-awesome/scss/_rotated-flipped.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Rotated & Flipped Icons -// ------------------------- - -.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } - -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } -.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } - -// Hook for IE8-9 -// ------------------------- - -:root .#{$fa-css-prefix}-rotate-90, -:root .#{$fa-css-prefix}-rotate-180, -:root .#{$fa-css-prefix}-rotate-270, -:root .#{$fa-css-prefix}-flip-horizontal, -:root .#{$fa-css-prefix}-flip-vertical { - filter: none; -} diff --git a/bower_components/font-awesome/scss/_screen-reader.scss b/bower_components/font-awesome/scss/_screen-reader.scss deleted file mode 100644 index 637426f0da..0000000000 --- a/bower_components/font-awesome/scss/_screen-reader.scss +++ /dev/null @@ -1,5 +0,0 @@ -// Screen Readers -// ------------------------- - -.sr-only { @include sr-only(); } -.sr-only-focusable { @include sr-only-focusable(); } diff --git a/bower_components/font-awesome/scss/_stacked.scss b/bower_components/font-awesome/scss/_stacked.scss deleted file mode 100644 index aef7403660..0000000000 --- a/bower_components/font-awesome/scss/_stacked.scss +++ /dev/null @@ -1,20 +0,0 @@ -// Stacked Icons -// ------------------------- - -.#{$fa-css-prefix}-stack { - position: relative; - display: inline-block; - width: 2em; - height: 2em; - line-height: 2em; - vertical-align: middle; -} -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { - position: absolute; - left: 0; - width: 100%; - text-align: center; -} -.#{$fa-css-prefix}-stack-1x { line-height: inherit; } -.#{$fa-css-prefix}-stack-2x { font-size: 2em; } -.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/bower_components/font-awesome/scss/_variables.scss b/bower_components/font-awesome/scss/_variables.scss deleted file mode 100644 index 498fc4a087..0000000000 --- a/bower_components/font-awesome/scss/_variables.scss +++ /dev/null @@ -1,800 +0,0 @@ -// Variables -// -------------------------- - -$fa-font-path: "../fonts" !default; -$fa-font-size-base: 14px !default; -$fa-line-height-base: 1 !default; -//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.7.0/fonts" !default; // for referencing Bootstrap CDN font files directly -$fa-css-prefix: fa !default; -$fa-version: "4.7.0" !default; -$fa-border-color: #eee !default; -$fa-inverse: #fff !default; -$fa-li-width: (30em / 14) !default; - -$fa-var-500px: "\f26e"; -$fa-var-address-book: "\f2b9"; -$fa-var-address-book-o: "\f2ba"; -$fa-var-address-card: "\f2bb"; -$fa-var-address-card-o: "\f2bc"; -$fa-var-adjust: "\f042"; -$fa-var-adn: "\f170"; -$fa-var-align-center: "\f037"; -$fa-var-align-justify: "\f039"; -$fa-var-align-left: "\f036"; -$fa-var-align-right: "\f038"; -$fa-var-amazon: "\f270"; -$fa-var-ambulance: "\f0f9"; -$fa-var-american-sign-language-interpreting: "\f2a3"; -$fa-var-anchor: "\f13d"; -$fa-var-android: "\f17b"; -$fa-var-angellist: "\f209"; -$fa-var-angle-double-down: "\f103"; -$fa-var-angle-double-left: "\f100"; -$fa-var-angle-double-right: "\f101"; -$fa-var-angle-double-up: "\f102"; -$fa-var-angle-down: "\f107"; -$fa-var-angle-left: "\f104"; -$fa-var-angle-right: "\f105"; -$fa-var-angle-up: "\f106"; -$fa-var-apple: "\f179"; -$fa-var-archive: "\f187"; -$fa-var-area-chart: "\f1fe"; -$fa-var-arrow-circle-down: "\f0ab"; -$fa-var-arrow-circle-left: "\f0a8"; -$fa-var-arrow-circle-o-down: "\f01a"; -$fa-var-arrow-circle-o-left: "\f190"; -$fa-var-arrow-circle-o-right: "\f18e"; -$fa-var-arrow-circle-o-up: "\f01b"; -$fa-var-arrow-circle-right: "\f0a9"; -$fa-var-arrow-circle-up: "\f0aa"; -$fa-var-arrow-down: "\f063"; -$fa-var-arrow-left: "\f060"; -$fa-var-arrow-right: "\f061"; -$fa-var-arrow-up: "\f062"; -$fa-var-arrows: "\f047"; -$fa-var-arrows-alt: "\f0b2"; -$fa-var-arrows-h: "\f07e"; -$fa-var-arrows-v: "\f07d"; -$fa-var-asl-interpreting: "\f2a3"; -$fa-var-assistive-listening-systems: "\f2a2"; -$fa-var-asterisk: "\f069"; -$fa-var-at: "\f1fa"; -$fa-var-audio-description: "\f29e"; -$fa-var-automobile: "\f1b9"; -$fa-var-backward: "\f04a"; -$fa-var-balance-scale: "\f24e"; -$fa-var-ban: "\f05e"; -$fa-var-bandcamp: "\f2d5"; -$fa-var-bank: "\f19c"; -$fa-var-bar-chart: "\f080"; -$fa-var-bar-chart-o: "\f080"; -$fa-var-barcode: "\f02a"; -$fa-var-bars: "\f0c9"; -$fa-var-bath: "\f2cd"; -$fa-var-bathtub: "\f2cd"; -$fa-var-battery: "\f240"; -$fa-var-battery-0: "\f244"; -$fa-var-battery-1: "\f243"; -$fa-var-battery-2: "\f242"; -$fa-var-battery-3: "\f241"; -$fa-var-battery-4: "\f240"; -$fa-var-battery-empty: "\f244"; -$fa-var-battery-full: "\f240"; -$fa-var-battery-half: "\f242"; -$fa-var-battery-quarter: "\f243"; -$fa-var-battery-three-quarters: "\f241"; -$fa-var-bed: "\f236"; -$fa-var-beer: "\f0fc"; -$fa-var-behance: "\f1b4"; -$fa-var-behance-square: "\f1b5"; -$fa-var-bell: "\f0f3"; -$fa-var-bell-o: "\f0a2"; -$fa-var-bell-slash: "\f1f6"; -$fa-var-bell-slash-o: "\f1f7"; -$fa-var-bicycle: "\f206"; -$fa-var-binoculars: "\f1e5"; -$fa-var-birthday-cake: "\f1fd"; -$fa-var-bitbucket: "\f171"; -$fa-var-bitbucket-square: "\f172"; -$fa-var-bitcoin: "\f15a"; -$fa-var-black-tie: "\f27e"; -$fa-var-blind: "\f29d"; -$fa-var-bluetooth: "\f293"; -$fa-var-bluetooth-b: "\f294"; -$fa-var-bold: "\f032"; -$fa-var-bolt: "\f0e7"; -$fa-var-bomb: "\f1e2"; -$fa-var-book: "\f02d"; -$fa-var-bookmark: "\f02e"; -$fa-var-bookmark-o: "\f097"; -$fa-var-braille: "\f2a1"; -$fa-var-briefcase: "\f0b1"; -$fa-var-btc: "\f15a"; -$fa-var-bug: "\f188"; -$fa-var-building: "\f1ad"; -$fa-var-building-o: "\f0f7"; -$fa-var-bullhorn: "\f0a1"; -$fa-var-bullseye: "\f140"; -$fa-var-bus: "\f207"; -$fa-var-buysellads: "\f20d"; -$fa-var-cab: "\f1ba"; -$fa-var-calculator: "\f1ec"; -$fa-var-calendar: "\f073"; -$fa-var-calendar-check-o: "\f274"; -$fa-var-calendar-minus-o: "\f272"; -$fa-var-calendar-o: "\f133"; -$fa-var-calendar-plus-o: "\f271"; -$fa-var-calendar-times-o: "\f273"; -$fa-var-camera: "\f030"; -$fa-var-camera-retro: "\f083"; -$fa-var-car: "\f1b9"; -$fa-var-caret-down: "\f0d7"; -$fa-var-caret-left: "\f0d9"; -$fa-var-caret-right: "\f0da"; -$fa-var-caret-square-o-down: "\f150"; -$fa-var-caret-square-o-left: "\f191"; -$fa-var-caret-square-o-right: "\f152"; -$fa-var-caret-square-o-up: "\f151"; -$fa-var-caret-up: "\f0d8"; -$fa-var-cart-arrow-down: "\f218"; -$fa-var-cart-plus: "\f217"; -$fa-var-cc: "\f20a"; -$fa-var-cc-amex: "\f1f3"; -$fa-var-cc-diners-club: "\f24c"; -$fa-var-cc-discover: "\f1f2"; -$fa-var-cc-jcb: "\f24b"; -$fa-var-cc-mastercard: "\f1f1"; -$fa-var-cc-paypal: "\f1f4"; -$fa-var-cc-stripe: "\f1f5"; -$fa-var-cc-visa: "\f1f0"; -$fa-var-certificate: "\f0a3"; -$fa-var-chain: "\f0c1"; -$fa-var-chain-broken: "\f127"; -$fa-var-check: "\f00c"; -$fa-var-check-circle: "\f058"; -$fa-var-check-circle-o: "\f05d"; -$fa-var-check-square: "\f14a"; -$fa-var-check-square-o: "\f046"; -$fa-var-chevron-circle-down: "\f13a"; -$fa-var-chevron-circle-left: "\f137"; -$fa-var-chevron-circle-right: "\f138"; -$fa-var-chevron-circle-up: "\f139"; -$fa-var-chevron-down: "\f078"; -$fa-var-chevron-left: "\f053"; -$fa-var-chevron-right: "\f054"; -$fa-var-chevron-up: "\f077"; -$fa-var-child: "\f1ae"; -$fa-var-chrome: "\f268"; -$fa-var-circle: "\f111"; -$fa-var-circle-o: "\f10c"; -$fa-var-circle-o-notch: "\f1ce"; -$fa-var-circle-thin: "\f1db"; -$fa-var-clipboard: "\f0ea"; -$fa-var-clock-o: "\f017"; -$fa-var-clone: "\f24d"; -$fa-var-close: "\f00d"; -$fa-var-cloud: "\f0c2"; -$fa-var-cloud-download: "\f0ed"; -$fa-var-cloud-upload: "\f0ee"; -$fa-var-cny: "\f157"; -$fa-var-code: "\f121"; -$fa-var-code-fork: "\f126"; -$fa-var-codepen: "\f1cb"; -$fa-var-codiepie: "\f284"; -$fa-var-coffee: "\f0f4"; -$fa-var-cog: "\f013"; -$fa-var-cogs: "\f085"; -$fa-var-columns: "\f0db"; -$fa-var-comment: "\f075"; -$fa-var-comment-o: "\f0e5"; -$fa-var-commenting: "\f27a"; -$fa-var-commenting-o: "\f27b"; -$fa-var-comments: "\f086"; -$fa-var-comments-o: "\f0e6"; -$fa-var-compass: "\f14e"; -$fa-var-compress: "\f066"; -$fa-var-connectdevelop: "\f20e"; -$fa-var-contao: "\f26d"; -$fa-var-copy: "\f0c5"; -$fa-var-copyright: "\f1f9"; -$fa-var-creative-commons: "\f25e"; -$fa-var-credit-card: "\f09d"; -$fa-var-credit-card-alt: "\f283"; -$fa-var-crop: "\f125"; -$fa-var-crosshairs: "\f05b"; -$fa-var-css3: "\f13c"; -$fa-var-cube: "\f1b2"; -$fa-var-cubes: "\f1b3"; -$fa-var-cut: "\f0c4"; -$fa-var-cutlery: "\f0f5"; -$fa-var-dashboard: "\f0e4"; -$fa-var-dashcube: "\f210"; -$fa-var-database: "\f1c0"; -$fa-var-deaf: "\f2a4"; -$fa-var-deafness: "\f2a4"; -$fa-var-dedent: "\f03b"; -$fa-var-delicious: "\f1a5"; -$fa-var-desktop: "\f108"; -$fa-var-deviantart: "\f1bd"; -$fa-var-diamond: "\f219"; -$fa-var-digg: "\f1a6"; -$fa-var-dollar: "\f155"; -$fa-var-dot-circle-o: "\f192"; -$fa-var-download: "\f019"; -$fa-var-dribbble: "\f17d"; -$fa-var-drivers-license: "\f2c2"; -$fa-var-drivers-license-o: "\f2c3"; -$fa-var-dropbox: "\f16b"; -$fa-var-drupal: "\f1a9"; -$fa-var-edge: "\f282"; -$fa-var-edit: "\f044"; -$fa-var-eercast: "\f2da"; -$fa-var-eject: "\f052"; -$fa-var-ellipsis-h: "\f141"; -$fa-var-ellipsis-v: "\f142"; -$fa-var-empire: "\f1d1"; -$fa-var-envelope: "\f0e0"; -$fa-var-envelope-o: "\f003"; -$fa-var-envelope-open: "\f2b6"; -$fa-var-envelope-open-o: "\f2b7"; -$fa-var-envelope-square: "\f199"; -$fa-var-envira: "\f299"; -$fa-var-eraser: "\f12d"; -$fa-var-etsy: "\f2d7"; -$fa-var-eur: "\f153"; -$fa-var-euro: "\f153"; -$fa-var-exchange: "\f0ec"; -$fa-var-exclamation: "\f12a"; -$fa-var-exclamation-circle: "\f06a"; -$fa-var-exclamation-triangle: "\f071"; -$fa-var-expand: "\f065"; -$fa-var-expeditedssl: "\f23e"; -$fa-var-external-link: "\f08e"; -$fa-var-external-link-square: "\f14c"; -$fa-var-eye: "\f06e"; -$fa-var-eye-slash: "\f070"; -$fa-var-eyedropper: "\f1fb"; -$fa-var-fa: "\f2b4"; -$fa-var-facebook: "\f09a"; -$fa-var-facebook-f: "\f09a"; -$fa-var-facebook-official: "\f230"; -$fa-var-facebook-square: "\f082"; -$fa-var-fast-backward: "\f049"; -$fa-var-fast-forward: "\f050"; -$fa-var-fax: "\f1ac"; -$fa-var-feed: "\f09e"; -$fa-var-female: "\f182"; -$fa-var-fighter-jet: "\f0fb"; -$fa-var-file: "\f15b"; -$fa-var-file-archive-o: "\f1c6"; -$fa-var-file-audio-o: "\f1c7"; -$fa-var-file-code-o: "\f1c9"; -$fa-var-file-excel-o: "\f1c3"; -$fa-var-file-image-o: "\f1c5"; -$fa-var-file-movie-o: "\f1c8"; -$fa-var-file-o: "\f016"; -$fa-var-file-pdf-o: "\f1c1"; -$fa-var-file-photo-o: "\f1c5"; -$fa-var-file-picture-o: "\f1c5"; -$fa-var-file-powerpoint-o: "\f1c4"; -$fa-var-file-sound-o: "\f1c7"; -$fa-var-file-text: "\f15c"; -$fa-var-file-text-o: "\f0f6"; -$fa-var-file-video-o: "\f1c8"; -$fa-var-file-word-o: "\f1c2"; -$fa-var-file-zip-o: "\f1c6"; -$fa-var-files-o: "\f0c5"; -$fa-var-film: "\f008"; -$fa-var-filter: "\f0b0"; -$fa-var-fire: "\f06d"; -$fa-var-fire-extinguisher: "\f134"; -$fa-var-firefox: "\f269"; -$fa-var-first-order: "\f2b0"; -$fa-var-flag: "\f024"; -$fa-var-flag-checkered: "\f11e"; -$fa-var-flag-o: "\f11d"; -$fa-var-flash: "\f0e7"; -$fa-var-flask: "\f0c3"; -$fa-var-flickr: "\f16e"; -$fa-var-floppy-o: "\f0c7"; -$fa-var-folder: "\f07b"; -$fa-var-folder-o: "\f114"; -$fa-var-folder-open: "\f07c"; -$fa-var-folder-open-o: "\f115"; -$fa-var-font: "\f031"; -$fa-var-font-awesome: "\f2b4"; -$fa-var-fonticons: "\f280"; -$fa-var-fort-awesome: "\f286"; -$fa-var-forumbee: "\f211"; -$fa-var-forward: "\f04e"; -$fa-var-foursquare: "\f180"; -$fa-var-free-code-camp: "\f2c5"; -$fa-var-frown-o: "\f119"; -$fa-var-futbol-o: "\f1e3"; -$fa-var-gamepad: "\f11b"; -$fa-var-gavel: "\f0e3"; -$fa-var-gbp: "\f154"; -$fa-var-ge: "\f1d1"; -$fa-var-gear: "\f013"; -$fa-var-gears: "\f085"; -$fa-var-genderless: "\f22d"; -$fa-var-get-pocket: "\f265"; -$fa-var-gg: "\f260"; -$fa-var-gg-circle: "\f261"; -$fa-var-gift: "\f06b"; -$fa-var-git: "\f1d3"; -$fa-var-git-square: "\f1d2"; -$fa-var-github: "\f09b"; -$fa-var-github-alt: "\f113"; -$fa-var-github-square: "\f092"; -$fa-var-gitlab: "\f296"; -$fa-var-gittip: "\f184"; -$fa-var-glass: "\f000"; -$fa-var-glide: "\f2a5"; -$fa-var-glide-g: "\f2a6"; -$fa-var-globe: "\f0ac"; -$fa-var-google: "\f1a0"; -$fa-var-google-plus: "\f0d5"; -$fa-var-google-plus-circle: "\f2b3"; -$fa-var-google-plus-official: "\f2b3"; -$fa-var-google-plus-square: "\f0d4"; -$fa-var-google-wallet: "\f1ee"; -$fa-var-graduation-cap: "\f19d"; -$fa-var-gratipay: "\f184"; -$fa-var-grav: "\f2d6"; -$fa-var-group: "\f0c0"; -$fa-var-h-square: "\f0fd"; -$fa-var-hacker-news: "\f1d4"; -$fa-var-hand-grab-o: "\f255"; -$fa-var-hand-lizard-o: "\f258"; -$fa-var-hand-o-down: "\f0a7"; -$fa-var-hand-o-left: "\f0a5"; -$fa-var-hand-o-right: "\f0a4"; -$fa-var-hand-o-up: "\f0a6"; -$fa-var-hand-paper-o: "\f256"; -$fa-var-hand-peace-o: "\f25b"; -$fa-var-hand-pointer-o: "\f25a"; -$fa-var-hand-rock-o: "\f255"; -$fa-var-hand-scissors-o: "\f257"; -$fa-var-hand-spock-o: "\f259"; -$fa-var-hand-stop-o: "\f256"; -$fa-var-handshake-o: "\f2b5"; -$fa-var-hard-of-hearing: "\f2a4"; -$fa-var-hashtag: "\f292"; -$fa-var-hdd-o: "\f0a0"; -$fa-var-header: "\f1dc"; -$fa-var-headphones: "\f025"; -$fa-var-heart: "\f004"; -$fa-var-heart-o: "\f08a"; -$fa-var-heartbeat: "\f21e"; -$fa-var-history: "\f1da"; -$fa-var-home: "\f015"; -$fa-var-hospital-o: "\f0f8"; -$fa-var-hotel: "\f236"; -$fa-var-hourglass: "\f254"; -$fa-var-hourglass-1: "\f251"; -$fa-var-hourglass-2: "\f252"; -$fa-var-hourglass-3: "\f253"; -$fa-var-hourglass-end: "\f253"; -$fa-var-hourglass-half: "\f252"; -$fa-var-hourglass-o: "\f250"; -$fa-var-hourglass-start: "\f251"; -$fa-var-houzz: "\f27c"; -$fa-var-html5: "\f13b"; -$fa-var-i-cursor: "\f246"; -$fa-var-id-badge: "\f2c1"; -$fa-var-id-card: "\f2c2"; -$fa-var-id-card-o: "\f2c3"; -$fa-var-ils: "\f20b"; -$fa-var-image: "\f03e"; -$fa-var-imdb: "\f2d8"; -$fa-var-inbox: "\f01c"; -$fa-var-indent: "\f03c"; -$fa-var-industry: "\f275"; -$fa-var-info: "\f129"; -$fa-var-info-circle: "\f05a"; -$fa-var-inr: "\f156"; -$fa-var-instagram: "\f16d"; -$fa-var-institution: "\f19c"; -$fa-var-internet-explorer: "\f26b"; -$fa-var-intersex: "\f224"; -$fa-var-ioxhost: "\f208"; -$fa-var-italic: "\f033"; -$fa-var-joomla: "\f1aa"; -$fa-var-jpy: "\f157"; -$fa-var-jsfiddle: "\f1cc"; -$fa-var-key: "\f084"; -$fa-var-keyboard-o: "\f11c"; -$fa-var-krw: "\f159"; -$fa-var-language: "\f1ab"; -$fa-var-laptop: "\f109"; -$fa-var-lastfm: "\f202"; -$fa-var-lastfm-square: "\f203"; -$fa-var-leaf: "\f06c"; -$fa-var-leanpub: "\f212"; -$fa-var-legal: "\f0e3"; -$fa-var-lemon-o: "\f094"; -$fa-var-level-down: "\f149"; -$fa-var-level-up: "\f148"; -$fa-var-life-bouy: "\f1cd"; -$fa-var-life-buoy: "\f1cd"; -$fa-var-life-ring: "\f1cd"; -$fa-var-life-saver: "\f1cd"; -$fa-var-lightbulb-o: "\f0eb"; -$fa-var-line-chart: "\f201"; -$fa-var-link: "\f0c1"; -$fa-var-linkedin: "\f0e1"; -$fa-var-linkedin-square: "\f08c"; -$fa-var-linode: "\f2b8"; -$fa-var-linux: "\f17c"; -$fa-var-list: "\f03a"; -$fa-var-list-alt: "\f022"; -$fa-var-list-ol: "\f0cb"; -$fa-var-list-ul: "\f0ca"; -$fa-var-location-arrow: "\f124"; -$fa-var-lock: "\f023"; -$fa-var-long-arrow-down: "\f175"; -$fa-var-long-arrow-left: "\f177"; -$fa-var-long-arrow-right: "\f178"; -$fa-var-long-arrow-up: "\f176"; -$fa-var-low-vision: "\f2a8"; -$fa-var-magic: "\f0d0"; -$fa-var-magnet: "\f076"; -$fa-var-mail-forward: "\f064"; -$fa-var-mail-reply: "\f112"; -$fa-var-mail-reply-all: "\f122"; -$fa-var-male: "\f183"; -$fa-var-map: "\f279"; -$fa-var-map-marker: "\f041"; -$fa-var-map-o: "\f278"; -$fa-var-map-pin: "\f276"; -$fa-var-map-signs: "\f277"; -$fa-var-mars: "\f222"; -$fa-var-mars-double: "\f227"; -$fa-var-mars-stroke: "\f229"; -$fa-var-mars-stroke-h: "\f22b"; -$fa-var-mars-stroke-v: "\f22a"; -$fa-var-maxcdn: "\f136"; -$fa-var-meanpath: "\f20c"; -$fa-var-medium: "\f23a"; -$fa-var-medkit: "\f0fa"; -$fa-var-meetup: "\f2e0"; -$fa-var-meh-o: "\f11a"; -$fa-var-mercury: "\f223"; -$fa-var-microchip: "\f2db"; -$fa-var-microphone: "\f130"; -$fa-var-microphone-slash: "\f131"; -$fa-var-minus: "\f068"; -$fa-var-minus-circle: "\f056"; -$fa-var-minus-square: "\f146"; -$fa-var-minus-square-o: "\f147"; -$fa-var-mixcloud: "\f289"; -$fa-var-mobile: "\f10b"; -$fa-var-mobile-phone: "\f10b"; -$fa-var-modx: "\f285"; -$fa-var-money: "\f0d6"; -$fa-var-moon-o: "\f186"; -$fa-var-mortar-board: "\f19d"; -$fa-var-motorcycle: "\f21c"; -$fa-var-mouse-pointer: "\f245"; -$fa-var-music: "\f001"; -$fa-var-navicon: "\f0c9"; -$fa-var-neuter: "\f22c"; -$fa-var-newspaper-o: "\f1ea"; -$fa-var-object-group: "\f247"; -$fa-var-object-ungroup: "\f248"; -$fa-var-odnoklassniki: "\f263"; -$fa-var-odnoklassniki-square: "\f264"; -$fa-var-opencart: "\f23d"; -$fa-var-openid: "\f19b"; -$fa-var-opera: "\f26a"; -$fa-var-optin-monster: "\f23c"; -$fa-var-outdent: "\f03b"; -$fa-var-pagelines: "\f18c"; -$fa-var-paint-brush: "\f1fc"; -$fa-var-paper-plane: "\f1d8"; -$fa-var-paper-plane-o: "\f1d9"; -$fa-var-paperclip: "\f0c6"; -$fa-var-paragraph: "\f1dd"; -$fa-var-paste: "\f0ea"; -$fa-var-pause: "\f04c"; -$fa-var-pause-circle: "\f28b"; -$fa-var-pause-circle-o: "\f28c"; -$fa-var-paw: "\f1b0"; -$fa-var-paypal: "\f1ed"; -$fa-var-pencil: "\f040"; -$fa-var-pencil-square: "\f14b"; -$fa-var-pencil-square-o: "\f044"; -$fa-var-percent: "\f295"; -$fa-var-phone: "\f095"; -$fa-var-phone-square: "\f098"; -$fa-var-photo: "\f03e"; -$fa-var-picture-o: "\f03e"; -$fa-var-pie-chart: "\f200"; -$fa-var-pied-piper: "\f2ae"; -$fa-var-pied-piper-alt: "\f1a8"; -$fa-var-pied-piper-pp: "\f1a7"; -$fa-var-pinterest: "\f0d2"; -$fa-var-pinterest-p: "\f231"; -$fa-var-pinterest-square: "\f0d3"; -$fa-var-plane: "\f072"; -$fa-var-play: "\f04b"; -$fa-var-play-circle: "\f144"; -$fa-var-play-circle-o: "\f01d"; -$fa-var-plug: "\f1e6"; -$fa-var-plus: "\f067"; -$fa-var-plus-circle: "\f055"; -$fa-var-plus-square: "\f0fe"; -$fa-var-plus-square-o: "\f196"; -$fa-var-podcast: "\f2ce"; -$fa-var-power-off: "\f011"; -$fa-var-print: "\f02f"; -$fa-var-product-hunt: "\f288"; -$fa-var-puzzle-piece: "\f12e"; -$fa-var-qq: "\f1d6"; -$fa-var-qrcode: "\f029"; -$fa-var-question: "\f128"; -$fa-var-question-circle: "\f059"; -$fa-var-question-circle-o: "\f29c"; -$fa-var-quora: "\f2c4"; -$fa-var-quote-left: "\f10d"; -$fa-var-quote-right: "\f10e"; -$fa-var-ra: "\f1d0"; -$fa-var-random: "\f074"; -$fa-var-ravelry: "\f2d9"; -$fa-var-rebel: "\f1d0"; -$fa-var-recycle: "\f1b8"; -$fa-var-reddit: "\f1a1"; -$fa-var-reddit-alien: "\f281"; -$fa-var-reddit-square: "\f1a2"; -$fa-var-refresh: "\f021"; -$fa-var-registered: "\f25d"; -$fa-var-remove: "\f00d"; -$fa-var-renren: "\f18b"; -$fa-var-reorder: "\f0c9"; -$fa-var-repeat: "\f01e"; -$fa-var-reply: "\f112"; -$fa-var-reply-all: "\f122"; -$fa-var-resistance: "\f1d0"; -$fa-var-retweet: "\f079"; -$fa-var-rmb: "\f157"; -$fa-var-road: "\f018"; -$fa-var-rocket: "\f135"; -$fa-var-rotate-left: "\f0e2"; -$fa-var-rotate-right: "\f01e"; -$fa-var-rouble: "\f158"; -$fa-var-rss: "\f09e"; -$fa-var-rss-square: "\f143"; -$fa-var-rub: "\f158"; -$fa-var-ruble: "\f158"; -$fa-var-rupee: "\f156"; -$fa-var-s15: "\f2cd"; -$fa-var-safari: "\f267"; -$fa-var-save: "\f0c7"; -$fa-var-scissors: "\f0c4"; -$fa-var-scribd: "\f28a"; -$fa-var-search: "\f002"; -$fa-var-search-minus: "\f010"; -$fa-var-search-plus: "\f00e"; -$fa-var-sellsy: "\f213"; -$fa-var-send: "\f1d8"; -$fa-var-send-o: "\f1d9"; -$fa-var-server: "\f233"; -$fa-var-share: "\f064"; -$fa-var-share-alt: "\f1e0"; -$fa-var-share-alt-square: "\f1e1"; -$fa-var-share-square: "\f14d"; -$fa-var-share-square-o: "\f045"; -$fa-var-shekel: "\f20b"; -$fa-var-sheqel: "\f20b"; -$fa-var-shield: "\f132"; -$fa-var-ship: "\f21a"; -$fa-var-shirtsinbulk: "\f214"; -$fa-var-shopping-bag: "\f290"; -$fa-var-shopping-basket: "\f291"; -$fa-var-shopping-cart: "\f07a"; -$fa-var-shower: "\f2cc"; -$fa-var-sign-in: "\f090"; -$fa-var-sign-language: "\f2a7"; -$fa-var-sign-out: "\f08b"; -$fa-var-signal: "\f012"; -$fa-var-signing: "\f2a7"; -$fa-var-simplybuilt: "\f215"; -$fa-var-sitemap: "\f0e8"; -$fa-var-skyatlas: "\f216"; -$fa-var-skype: "\f17e"; -$fa-var-slack: "\f198"; -$fa-var-sliders: "\f1de"; -$fa-var-slideshare: "\f1e7"; -$fa-var-smile-o: "\f118"; -$fa-var-snapchat: "\f2ab"; -$fa-var-snapchat-ghost: "\f2ac"; -$fa-var-snapchat-square: "\f2ad"; -$fa-var-snowflake-o: "\f2dc"; -$fa-var-soccer-ball-o: "\f1e3"; -$fa-var-sort: "\f0dc"; -$fa-var-sort-alpha-asc: "\f15d"; -$fa-var-sort-alpha-desc: "\f15e"; -$fa-var-sort-amount-asc: "\f160"; -$fa-var-sort-amount-desc: "\f161"; -$fa-var-sort-asc: "\f0de"; -$fa-var-sort-desc: "\f0dd"; -$fa-var-sort-down: "\f0dd"; -$fa-var-sort-numeric-asc: "\f162"; -$fa-var-sort-numeric-desc: "\f163"; -$fa-var-sort-up: "\f0de"; -$fa-var-soundcloud: "\f1be"; -$fa-var-space-shuttle: "\f197"; -$fa-var-spinner: "\f110"; -$fa-var-spoon: "\f1b1"; -$fa-var-spotify: "\f1bc"; -$fa-var-square: "\f0c8"; -$fa-var-square-o: "\f096"; -$fa-var-stack-exchange: "\f18d"; -$fa-var-stack-overflow: "\f16c"; -$fa-var-star: "\f005"; -$fa-var-star-half: "\f089"; -$fa-var-star-half-empty: "\f123"; -$fa-var-star-half-full: "\f123"; -$fa-var-star-half-o: "\f123"; -$fa-var-star-o: "\f006"; -$fa-var-steam: "\f1b6"; -$fa-var-steam-square: "\f1b7"; -$fa-var-step-backward: "\f048"; -$fa-var-step-forward: "\f051"; -$fa-var-stethoscope: "\f0f1"; -$fa-var-sticky-note: "\f249"; -$fa-var-sticky-note-o: "\f24a"; -$fa-var-stop: "\f04d"; -$fa-var-stop-circle: "\f28d"; -$fa-var-stop-circle-o: "\f28e"; -$fa-var-street-view: "\f21d"; -$fa-var-strikethrough: "\f0cc"; -$fa-var-stumbleupon: "\f1a4"; -$fa-var-stumbleupon-circle: "\f1a3"; -$fa-var-subscript: "\f12c"; -$fa-var-subway: "\f239"; -$fa-var-suitcase: "\f0f2"; -$fa-var-sun-o: "\f185"; -$fa-var-superpowers: "\f2dd"; -$fa-var-superscript: "\f12b"; -$fa-var-support: "\f1cd"; -$fa-var-table: "\f0ce"; -$fa-var-tablet: "\f10a"; -$fa-var-tachometer: "\f0e4"; -$fa-var-tag: "\f02b"; -$fa-var-tags: "\f02c"; -$fa-var-tasks: "\f0ae"; -$fa-var-taxi: "\f1ba"; -$fa-var-telegram: "\f2c6"; -$fa-var-television: "\f26c"; -$fa-var-tencent-weibo: "\f1d5"; -$fa-var-terminal: "\f120"; -$fa-var-text-height: "\f034"; -$fa-var-text-width: "\f035"; -$fa-var-th: "\f00a"; -$fa-var-th-large: "\f009"; -$fa-var-th-list: "\f00b"; -$fa-var-themeisle: "\f2b2"; -$fa-var-thermometer: "\f2c7"; -$fa-var-thermometer-0: "\f2cb"; -$fa-var-thermometer-1: "\f2ca"; -$fa-var-thermometer-2: "\f2c9"; -$fa-var-thermometer-3: "\f2c8"; -$fa-var-thermometer-4: "\f2c7"; -$fa-var-thermometer-empty: "\f2cb"; -$fa-var-thermometer-full: "\f2c7"; -$fa-var-thermometer-half: "\f2c9"; -$fa-var-thermometer-quarter: "\f2ca"; -$fa-var-thermometer-three-quarters: "\f2c8"; -$fa-var-thumb-tack: "\f08d"; -$fa-var-thumbs-down: "\f165"; -$fa-var-thumbs-o-down: "\f088"; -$fa-var-thumbs-o-up: "\f087"; -$fa-var-thumbs-up: "\f164"; -$fa-var-ticket: "\f145"; -$fa-var-times: "\f00d"; -$fa-var-times-circle: "\f057"; -$fa-var-times-circle-o: "\f05c"; -$fa-var-times-rectangle: "\f2d3"; -$fa-var-times-rectangle-o: "\f2d4"; -$fa-var-tint: "\f043"; -$fa-var-toggle-down: "\f150"; -$fa-var-toggle-left: "\f191"; -$fa-var-toggle-off: "\f204"; -$fa-var-toggle-on: "\f205"; -$fa-var-toggle-right: "\f152"; -$fa-var-toggle-up: "\f151"; -$fa-var-trademark: "\f25c"; -$fa-var-train: "\f238"; -$fa-var-transgender: "\f224"; -$fa-var-transgender-alt: "\f225"; -$fa-var-trash: "\f1f8"; -$fa-var-trash-o: "\f014"; -$fa-var-tree: "\f1bb"; -$fa-var-trello: "\f181"; -$fa-var-tripadvisor: "\f262"; -$fa-var-trophy: "\f091"; -$fa-var-truck: "\f0d1"; -$fa-var-try: "\f195"; -$fa-var-tty: "\f1e4"; -$fa-var-tumblr: "\f173"; -$fa-var-tumblr-square: "\f174"; -$fa-var-turkish-lira: "\f195"; -$fa-var-tv: "\f26c"; -$fa-var-twitch: "\f1e8"; -$fa-var-twitter: "\f099"; -$fa-var-twitter-square: "\f081"; -$fa-var-umbrella: "\f0e9"; -$fa-var-underline: "\f0cd"; -$fa-var-undo: "\f0e2"; -$fa-var-universal-access: "\f29a"; -$fa-var-university: "\f19c"; -$fa-var-unlink: "\f127"; -$fa-var-unlock: "\f09c"; -$fa-var-unlock-alt: "\f13e"; -$fa-var-unsorted: "\f0dc"; -$fa-var-upload: "\f093"; -$fa-var-usb: "\f287"; -$fa-var-usd: "\f155"; -$fa-var-user: "\f007"; -$fa-var-user-circle: "\f2bd"; -$fa-var-user-circle-o: "\f2be"; -$fa-var-user-md: "\f0f0"; -$fa-var-user-o: "\f2c0"; -$fa-var-user-plus: "\f234"; -$fa-var-user-secret: "\f21b"; -$fa-var-user-times: "\f235"; -$fa-var-users: "\f0c0"; -$fa-var-vcard: "\f2bb"; -$fa-var-vcard-o: "\f2bc"; -$fa-var-venus: "\f221"; -$fa-var-venus-double: "\f226"; -$fa-var-venus-mars: "\f228"; -$fa-var-viacoin: "\f237"; -$fa-var-viadeo: "\f2a9"; -$fa-var-viadeo-square: "\f2aa"; -$fa-var-video-camera: "\f03d"; -$fa-var-vimeo: "\f27d"; -$fa-var-vimeo-square: "\f194"; -$fa-var-vine: "\f1ca"; -$fa-var-vk: "\f189"; -$fa-var-volume-control-phone: "\f2a0"; -$fa-var-volume-down: "\f027"; -$fa-var-volume-off: "\f026"; -$fa-var-volume-up: "\f028"; -$fa-var-warning: "\f071"; -$fa-var-wechat: "\f1d7"; -$fa-var-weibo: "\f18a"; -$fa-var-weixin: "\f1d7"; -$fa-var-whatsapp: "\f232"; -$fa-var-wheelchair: "\f193"; -$fa-var-wheelchair-alt: "\f29b"; -$fa-var-wifi: "\f1eb"; -$fa-var-wikipedia-w: "\f266"; -$fa-var-window-close: "\f2d3"; -$fa-var-window-close-o: "\f2d4"; -$fa-var-window-maximize: "\f2d0"; -$fa-var-window-minimize: "\f2d1"; -$fa-var-window-restore: "\f2d2"; -$fa-var-windows: "\f17a"; -$fa-var-won: "\f159"; -$fa-var-wordpress: "\f19a"; -$fa-var-wpbeginner: "\f297"; -$fa-var-wpexplorer: "\f2de"; -$fa-var-wpforms: "\f298"; -$fa-var-wrench: "\f0ad"; -$fa-var-xing: "\f168"; -$fa-var-xing-square: "\f169"; -$fa-var-y-combinator: "\f23b"; -$fa-var-y-combinator-square: "\f1d4"; -$fa-var-yahoo: "\f19e"; -$fa-var-yc: "\f23b"; -$fa-var-yc-square: "\f1d4"; -$fa-var-yelp: "\f1e9"; -$fa-var-yen: "\f157"; -$fa-var-yoast: "\f2b1"; -$fa-var-youtube: "\f167"; -$fa-var-youtube-play: "\f16a"; -$fa-var-youtube-square: "\f166"; - diff --git a/bower_components/font-awesome/scss/font-awesome.scss b/bower_components/font-awesome/scss/font-awesome.scss deleted file mode 100644 index f1c83aaa5d..0000000000 --- a/bower_components/font-awesome/scss/font-awesome.scss +++ /dev/null @@ -1,18 +0,0 @@ -/*! - * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */ - -@import "variables"; -@import "mixins"; -@import "path"; -@import "core"; -@import "larger"; -@import "fixed-width"; -@import "list"; -@import "bordered-pulled"; -@import "animated"; -@import "rotated-flipped"; -@import "stacked"; -@import "icons"; -@import "screen-reader"; diff --git a/bower_components/iCheck/.bower.json b/bower_components/iCheck/.bower.json deleted file mode 100644 index b24bd226d1..0000000000 --- a/bower_components/iCheck/.bower.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "iCheck", - "version": "1.0.2", - "description": "Highly customizable checkboxes and radio buttons (jQuery & Zepto)", - "keywords": [ - "icheck", - "checkbox", - "radio", - "input", - "field", - "form", - "custom", - "replacement", - "accessibility", - "skins", - "ui", - "checked", - "disabled", - "indeterminate" - ], - "main": [ - "./icheck.min.js" - ], - "dependencies": { - "jquery": ">=1.7" - }, - "ignore": [ - ".gitignore", - "CHANGELOG.md", - "README.md", - "demo/" - ], - "license": "MIT", - "authors": [ - { - "name": "Damir Sultanov", - "email": "info@fronteed.com", - "homepage": "http://fronteed.com/" - } - ], - "homepage": "http://fronteed.com/iCheck/", - "_release": "1.0.2", - "_resolution": { - "type": "version", - "tag": "1.0.2", - "commit": "8a6eb37bd7dab1e843c1b630c91c6398ff409d05" - }, - "_source": "https://github.com/fronteed/iCheck.git", - "_target": "^1.0.2", - "_originalSource": "jquery-icheck", - "_direct": true -} \ No newline at end of file diff --git a/bower_components/iCheck/bower.json b/bower_components/iCheck/bower.json deleted file mode 100644 index a2b8288c9c..0000000000 --- a/bower_components/iCheck/bower.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "iCheck", - "version": "1.0.2", - "description": "Highly customizable checkboxes and radio buttons (jQuery & Zepto)", - "keywords": [ - "icheck", - "checkbox", - "radio", - "input", - "field", - "form", - "custom", - "replacement", - "accessibility", - "skins", - "ui", - "checked", - "disabled", - "indeterminate" - ], - "main": [ - "./icheck.min.js" - ], - "dependencies": { - "jquery": ">=1.7" - }, - "ignore": [ - ".gitignore", - "CHANGELOG.md", - "README.md", - "demo/" - ], - "license": "MIT", - "authors": [ - { - "name": "Damir Sultanov", - "email": "info@fronteed.com", - "homepage": "http://fronteed.com/" - } - ], - "homepage": "http://fronteed.com/iCheck/" -} diff --git a/bower_components/iCheck/icheck.jquery.json b/bower_components/iCheck/icheck.jquery.json deleted file mode 100644 index e7018a6453..0000000000 --- a/bower_components/iCheck/icheck.jquery.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "name": "icheck", - "version": "1.0.2", - "title": "iCheck", - "author": { - "name": "Damir Sultanov", - "email": "info@fronteed.com", - "homepage": "http://fronteed.com/" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://en.wikipedia.org/wiki/MIT_License" - } - ], - "dependencies": { - "jquery": ">=1.7" - }, - "description": "Highly customizable checkboxes and radio buttons (jQuery and Zepto). Features: identical inputs across different browsers and devices (both desktop and mobile), touch devices support (iOS, Android, BlackBerry, Windows Phone, Amazon Kindle), keyboard accessible inputs (Tab, Spacebar, Arrow up/down and other shortcuts), screenreader accessible inputs — (ARIA attributes for VoiceOver and others), customization freedom (use any HTML and CSS to style inputs or try 6 Retina-ready skins), lightweight size (1 kb gzipped). Provides 32 options to customize checkboxes and radio buttons, 11 callbacks to handle changes, 9 methods to make changes programmatically. Saves changes to original inputs, works carefully with any selectors.", - "keywords": [ - "checkbox", - "radio", - "input", - "field", - "form", - "desktop", - "mobile", - "custom", - "replacement", - "accessibility", - "skins", - "ui", - "checked", - "disabled", - "indeterminate", - "css3", - "html5", - "tiny", - "lightweight", - "jquery", - "zepto" - ], - "homepage": "http://fronteed.com/iCheck/", - "docs": "https://github.com/fronteed/iCheck", - "demo": "http://fronteed.com/iCheck/", - "download": "http://fronteed.com/iCheck/", - "bugs": "https://github.com/fronteed/iCheck/issues/" -} diff --git a/bower_components/iCheck/icheck.js b/bower_components/iCheck/icheck.js deleted file mode 100644 index 51c3e80bd3..0000000000 --- a/bower_components/iCheck/icheck.js +++ /dev/null @@ -1,509 +0,0 @@ -/*! - * iCheck v1.0.2, http://git.io/arlzeA - * =================================== - * Powerful jQuery and Zepto plugin for checkboxes and radio buttons customization - * - * (c) 2013 Damir Sultanov, http://fronteed.com - * MIT Licensed - */ - -(function($) { - - // Cached vars - var _iCheck = 'iCheck', - _iCheckHelper = _iCheck + '-helper', - _checkbox = 'checkbox', - _radio = 'radio', - _checked = 'checked', - _unchecked = 'un' + _checked, - _disabled = 'disabled',a - _determinate = 'determinate', - _indeterminate = 'in' + _determinate, - _update = 'update', - _type = 'type', - _click = 'click', - _touch = 'touchbegin.i touchend.i', - _add = 'addClass', - _remove = 'removeClass', - _callback = 'trigger', - _label = 'label', - _cursor = 'cursor', - _mobile = /ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent); - - // Plugin init - $.fn[_iCheck] = function(options, fire) { - - // Walker - var handle = 'input[type="' + _checkbox + '"], input[type="' + _radio + '"]', - stack = $(), - walker = function(object) { - object.each(function() { - var self = $(this); - - if (self.is(handle)) { - stack = stack.add(self); - } else { - stack = stack.add(self.find(handle)); - } - }); - }; - - // Check if we should operate with some method - if (/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(options)) { - - // Normalize method's name - options = options.toLowerCase(); - - // Find checkboxes and radio buttons - walker(this); - - return stack.each(function() { - var self = $(this); - - if (options == 'destroy') { - tidy(self, 'ifDestroyed'); - } else { - operate(self, true, options); - } - - // Fire method's callback - if ($.isFunction(fire)) { - fire(); - } - }); - - // Customization - } else if (typeof options == 'object' || !options) { - - // Check if any options were passed - var settings = $.extend({ - checkedClass: _checked, - disabledClass: _disabled, - indeterminateClass: _indeterminate, - labelHover: true - }, options), - - selector = settings.handle, - hoverClass = settings.hoverClass || 'hover', - focusClass = settings.focusClass || 'focus', - activeClass = settings.activeClass || 'active', - labelHover = !!settings.labelHover, - labelHoverClass = settings.labelHoverClass || 'hover', - - // Setup clickable area - area = ('' + settings.increaseArea).replace('%', '') | 0; - - // Selector limit - if (selector == _checkbox || selector == _radio) { - handle = 'input[type="' + selector + '"]'; - } - - // Clickable area limit - if (area < -50) { - area = -50; - } - - // Walk around the selector - walker(this); - - return stack.each(function() { - var self = $(this); - - // If already customized - tidy(self); - - var node = this, - id = node.id, - - // Layer styles - offset = -area + '%', - size = 100 + (area * 2) + '%', - layer = { - position: 'absolute', - top: offset, - left: offset, - display: 'block', - width: size, - height: size, - margin: 0, - padding: 0, - background: '#fff', - border: 0, - opacity: 0 - }, - - // Choose how to hide input - hide = _mobile ? { - position: 'absolute', - visibility: 'hidden' - } : area ? layer : { - position: 'absolute', - opacity: 0 - }, - - // Get proper class - className = node[_type] == _checkbox ? settings.checkboxClass || 'i' + _checkbox : settings.radioClass || 'i' + _radio, - - // Find assigned labels - label = $(_label + '[for="' + id + '"]').add(self.closest(_label)), - - // Check ARIA option - aria = !!settings.aria, - - // Set ARIA placeholder - ariaID = _iCheck + '-' + Math.random().toString(36).substr(2,6), - - // Parent & helper - parent = '

    ')[_callback]('ifCreated').parent().append(settings.insert); - - // Layer addition - helper = $('').css(layer).appendTo(parent); - - // Finalize customization - self.data(_iCheck, {o: settings, s: self.attr('style')}).css(hide); - !!settings.inheritClass && parent[_add](node.className || ''); - !!settings.inheritID && id && parent.attr('id', _iCheck + '-' + id); - parent.css('position') == 'static' && parent.css('position', 'relative'); - operate(self, true, _update); - - // Label events - if (label.length) { - label.on(_click + '.i mouseover.i mouseout.i ' + _touch, function(event) { - var type = event[_type], - item = $(this); - - // Do nothing if input is disabled - if (!node[_disabled]) { - - // Click - if (type == _click) { - if ($(event.target).is('a')) { - return; - } - operate(self, false, true); - - // Hover state - } else if (labelHover) { - - // mouseout|touchend - if (/ut|nd/.test(type)) { - parent[_remove](hoverClass); - item[_remove](labelHoverClass); - } else { - parent[_add](hoverClass); - item[_add](labelHoverClass); - } - } - - if (_mobile) { - event.stopPropagation(); - } else { - return false; - } - } - }); - } - - // Input events - self.on(_click + '.i focus.i blur.i keyup.i keydown.i keypress.i', function(event) { - var type = event[_type], - key = event.keyCode; - - // Click - if (type == _click) { - return false; - - // Keydown - } else if (type == 'keydown' && key == 32) { - if (!(node[_type] == _radio && node[_checked])) { - if (node[_checked]) { - off(self, _checked); - } else { - on(self, _checked); - } - } - - return false; - - // Keyup - } else if (type == 'keyup' && node[_type] == _radio) { - !node[_checked] && on(self, _checked); - - // Focus/blur - } else if (/us|ur/.test(type)) { - parent[type == 'blur' ? _remove : _add](focusClass); - } - }); - - // Helper events - helper.on(_click + ' mousedown mouseup mouseover mouseout ' + _touch, function(event) { - var type = event[_type], - - // mousedown|mouseup - toggle = /wn|up/.test(type) ? activeClass : hoverClass; - - // Do nothing if input is disabled - if (!node[_disabled]) { - - // Click - if (type == _click) { - operate(self, false, true); - - // Active and hover states - } else { - - // State is on - if (/wn|er|in/.test(type)) { - - // mousedown|mouseover|touchbegin - parent[_add](toggle); - - // State is off - } else { - parent[_remove](toggle + ' ' + activeClass); - } - - // Label hover - if (label.length && labelHover && toggle == hoverClass) { - - // mouseout|touchend - label[/ut|nd/.test(type) ? _remove : _add](labelHoverClass); - } - } - - if (_mobile) { - event.stopPropagation(); - } else { - return false; - } - } - }); - }); - } else { - return this; - } - }; - - // Do something with inputs - function operate(input, direct, method) { - var node = input[0], - state = /er/.test(method) ? _indeterminate : /bl/.test(method) ? _disabled : _checked, - active = method == _update ? { - checked: node[_checked], - disabled: node[_disabled], - indeterminate: input.attr(_indeterminate) == 'true' || input.attr(_determinate) == 'false' - } : node[state]; - - // Check, disable or indeterminate - if (/^(ch|di|in)/.test(method) && !active) { - on(input, state); - - // Uncheck, enable or determinate - } else if (/^(un|en|de)/.test(method) && active) { - off(input, state); - - // Update - } else if (method == _update) { - - // Handle states - for (var each in active) { - if (active[each]) { - on(input, each, true); - } else { - off(input, each, true); - } - } - - } else if (!direct || method == 'toggle') { - - // Helper or label was clicked - if (!direct) { - input[_callback]('ifClicked'); - } - - // Toggle checked state - if (active) { - if (node[_type] !== _radio) { - off(input, state); - } - } else { - on(input, state); - } - } - } - - // Add checked, disabled or indeterminate state - function on(input, state, keep) { - var node = input[0], - parent = input.parent(), - checked = state == _checked, - indeterminate = state == _indeterminate, - disabled = state == _disabled, - callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', - regular = option(input, callback + capitalize(node[_type])), - specific = option(input, state + capitalize(node[_type])); - - // Prevent unnecessary actions - if (node[state] !== true) { - - // Toggle assigned radio buttons - if (!keep && state == _checked && node[_type] == _radio && node.name) { - var form = input.closest('form'), - inputs = 'input[name="' + node.name + '"]'; - - inputs = form.length ? form.find(inputs) : $(inputs); - - inputs.each(function() { - if (this !== node && $(this).data(_iCheck)) { - off($(this), state); - } - }); - } - - // Indeterminate state - if (indeterminate) { - - // Add indeterminate state - node[state] = true; - - // Remove checked state - if (node[_checked]) { - off(input, _checked, 'force'); - } - - // Checked or disabled state - } else { - - // Add checked or disabled state - if (!keep) { - node[state] = true; - } - - // Remove indeterminate state - if (checked && node[_indeterminate]) { - off(input, _indeterminate, false); - } - } - - // Trigger callbacks - callbacks(input, checked, state, keep); - } - - // Add proper cursor - if (node[_disabled] && !!option(input, _cursor, true)) { - parent.find('.' + _iCheckHelper).css(_cursor, 'default'); - } - - // Add state class - parent[_add](specific || option(input, state) || ''); - - // Set ARIA attribute - if (!!parent.attr('role') && !indeterminate) { - parent.attr('aria-' + (disabled ? _disabled : _checked), 'true'); - } - - // Remove regular state class - parent[_remove](regular || option(input, callback) || ''); - } - - // Remove checked, disabled or indeterminate state - function off(input, state, keep) { - var node = input[0], - parent = input.parent(), - checked = state == _checked, - indeterminate = state == _indeterminate, - disabled = state == _disabled, - callback = indeterminate ? _determinate : checked ? _unchecked : 'enabled', - regular = option(input, callback + capitalize(node[_type])), - specific = option(input, state + capitalize(node[_type])); - - // Prevent unnecessary actions - if (node[state] !== false) { - - // Toggle state - if (indeterminate || !keep || keep == 'force') { - node[state] = false; - } - - // Trigger callbacks - callbacks(input, checked, callback, keep); - } - - // Add proper cursor - if (!node[_disabled] && !!option(input, _cursor, true)) { - parent.find('.' + _iCheckHelper).css(_cursor, 'pointer'); - } - - // Remove state class - parent[_remove](specific || option(input, state) || ''); - - // Set ARIA attribute - if (!!parent.attr('role') && !indeterminate) { - parent.attr('aria-' + (disabled ? _disabled : _checked), 'false'); - } - - // Add regular state class - parent[_add](regular || option(input, callback) || ''); - } - - // Remove all traces - function tidy(input, callback) { - if (input.data(_iCheck)) { - - // Remove everything except input - input.parent().html(input.attr('style', input.data(_iCheck).s || '')); - - // Callback - if (callback) { - input[_callback](callback); - } - - // Unbind events - input.off('.i').unwrap(); - $(_label + '[for="' + input[0].id + '"]').add(input.closest(_label)).off('.i'); - } - } - - // Get some option - function option(input, state, regular) { - if (input.data(_iCheck)) { - return input.data(_iCheck).o[state + (regular ? '' : 'Class')]; - } - } - - // Capitalize some string - function capitalize(string) { - return string.charAt(0).toUpperCase() + string.slice(1); - } - - // Executable handlers - function callbacks(input, checked, callback, keep) { - if (!keep) { - if (checked) { - input[_callback]('ifToggled'); - } - - input[_callback]('ifChanged')[_callback]('if' + capitalize(callback)); - } - } -})(window.jQuery || window.Zepto); diff --git a/bower_components/iCheck/icheck.min.js b/bower_components/iCheck/icheck.min.js deleted file mode 100644 index 7cdb17e0d5..0000000000 --- a/bower_components/iCheck/icheck.min.js +++ /dev/null @@ -1,11 +0,0 @@ -/*! iCheck v1.0.2 by Damir Sultanov, http://git.io/arlzeA, MIT Licensed */ -(function(f){function A(a,b,d){var c=a[0],g=/er/.test(d)?_indeterminate:/bl/.test(d)?n:k,e=d==_update?{checked:c[k],disabled:c[n],indeterminate:"true"==a.attr(_indeterminate)||"false"==a.attr(_determinate)}:c[g];if(/^(ch|di|in)/.test(d)&&!e)x(a,g);else if(/^(un|en|de)/.test(d)&&e)q(a,g);else if(d==_update)for(var f in e)e[f]?x(a,f,!0):q(a,f,!0);else if(!b||"toggle"==d){if(!b)a[_callback]("ifClicked");e?c[_type]!==r&&q(a,g):x(a,g)}}function x(a,b,d){var c=a[0],g=a.parent(),e=b==k,u=b==_indeterminate, -v=b==n,s=u?_determinate:e?y:"enabled",F=l(a,s+t(c[_type])),B=l(a,b+t(c[_type]));if(!0!==c[b]){if(!d&&b==k&&c[_type]==r&&c.name){var w=a.closest("form"),p='input[name="'+c.name+'"]',p=w.length?w.find(p):f(p);p.each(function(){this!==c&&f(this).data(m)&&q(f(this),b)})}u?(c[b]=!0,c[k]&&q(a,k,"force")):(d||(c[b]=!0),e&&c[_indeterminate]&&q(a,_indeterminate,!1));D(a,e,b,d)}c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"default");g[_add](B||l(a,b)||"");g.attr("role")&&!u&&g.attr("aria-"+(v?n:k),"true"); -g[_remove](F||l(a,s)||"")}function q(a,b,d){var c=a[0],g=a.parent(),e=b==k,f=b==_indeterminate,m=b==n,s=f?_determinate:e?y:"enabled",q=l(a,s+t(c[_type])),r=l(a,b+t(c[_type]));if(!1!==c[b]){if(f||!d||"force"==d)c[b]=!1;D(a,e,s,d)}!c[n]&&l(a,_cursor,!0)&&g.find("."+C).css(_cursor,"pointer");g[_remove](r||l(a,b)||"");g.attr("role")&&!f&&g.attr("aria-"+(m?n:k),"false");g[_add](q||l(a,s)||"")}function E(a,b){if(a.data(m)){a.parent().html(a.attr("style",a.data(m).s||""));if(b)a[_callback](b);a.off(".i").unwrap(); -f(_label+'[for="'+a[0].id+'"]').add(a.closest(_label)).off(".i")}}function l(a,b,f){if(a.data(m))return a.data(m).o[b+(f?"":"Class")]}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function D(a,b,f,c){if(!c){if(b)a[_callback]("ifToggled");a[_callback]("ifChanged")[_callback]("if"+t(f))}}var m="iCheck",C=m+"-helper",r="radio",k="checked",y="un"+k,n="disabled";_determinate="determinate";_indeterminate="in"+_determinate;_update="update";_type="type";_click="click";_touch="touchbegin.i touchend.i"; -_add="addClass";_remove="removeClass";_callback="trigger";_label="label";_cursor="cursor";_mobile=/ipad|iphone|ipod|android|blackberry|windows phone|opera mini|silk/i.test(navigator.userAgent);f.fn[m]=function(a,b){var d='input[type="checkbox"], input[type="'+r+'"]',c=f(),g=function(a){a.each(function(){var a=f(this);c=a.is(d)?c.add(a):c.add(a.find(d))})};if(/^(check|uncheck|toggle|indeterminate|determinate|disable|enable|update|destroy)$/i.test(a))return a=a.toLowerCase(),g(this),c.each(function(){var c= -f(this);"destroy"==a?E(c,"ifDestroyed"):A(c,!0,a);f.isFunction(b)&&b()});if("object"!=typeof a&&a)return this;var e=f.extend({checkedClass:k,disabledClass:n,indeterminateClass:_indeterminate,labelHover:!0},a),l=e.handle,v=e.hoverClass||"hover",s=e.focusClass||"focus",t=e.activeClass||"active",B=!!e.labelHover,w=e.labelHoverClass||"hover",p=(""+e.increaseArea).replace("%","")|0;if("checkbox"==l||l==r)d='input[type="'+l+'"]';-50>p&&(p=-50);g(this);return c.each(function(){var a=f(this);E(a);var c=this, -b=c.id,g=-p+"%",d=100+2*p+"%",d={position:"absolute",top:g,left:g,display:"block",width:d,height:d,margin:0,padding:0,background:"#fff",border:0,opacity:0},g=_mobile?{position:"absolute",visibility:"hidden"}:p?d:{position:"absolute",opacity:0},l="checkbox"==c[_type]?e.checkboxClass||"icheckbox":e.radioClass||"i"+r,z=f(_label+'[for="'+b+'"]').add(a.closest(_label)),u=!!e.aria,y=m+"-"+Math.random().toString(36).substr(2,6),h='
    ")[_callback]("ifCreated").parent().append(e.insert);d=f('').css(d).appendTo(h);a.data(m,{o:e,s:a.attr("style")}).css(g);e.inheritClass&&h[_add](c.className||"");e.inheritID&&b&&h.attr("id",m+"-"+b);"static"==h.css("position")&&h.css("position","relative");A(a,!0,_update);if(z.length)z.on(_click+".i mouseover.i mouseout.i "+_touch,function(b){var d=b[_type],e=f(this);if(!c[n]){if(d==_click){if(f(b.target).is("a"))return; -A(a,!1,!0)}else B&&(/ut|nd/.test(d)?(h[_remove](v),e[_remove](w)):(h[_add](v),e[_add](w)));if(_mobile)b.stopPropagation();else return!1}});a.on(_click+".i focus.i blur.i keyup.i keydown.i keypress.i",function(b){var d=b[_type];b=b.keyCode;if(d==_click)return!1;if("keydown"==d&&32==b)return c[_type]==r&&c[k]||(c[k]?q(a,k):x(a,k)),!1;if("keyup"==d&&c[_type]==r)!c[k]&&x(a,k);else if(/us|ur/.test(d))h["blur"==d?_remove:_add](s)});d.on(_click+" mousedown mouseup mouseover mouseout "+_touch,function(b){var d= -b[_type],e=/wn|up/.test(d)?t:v;if(!c[n]){if(d==_click)A(a,!1,!0);else{if(/wn|er|in/.test(d))h[_add](e);else h[_remove](e+" "+t);if(z.length&&B&&e==v)z[/ut|nd/.test(d)?_remove:_add](w)}if(_mobile)b.stopPropagation();else return!1}})})}})(window.jQuery||window.Zepto); diff --git a/bower_components/iCheck/skins/all.css b/bower_components/iCheck/skins/all.css deleted file mode 100644 index 6439b7429b..0000000000 --- a/bower_components/iCheck/skins/all.css +++ /dev/null @@ -1,61 +0,0 @@ -/* iCheck plugin skins ------------------------------------ */ -@import url("minimal/_all.css"); -/* -@import url("minimal/minimal.css"); -@import url("minimal/red.css"); -@import url("minimal/green.css"); -@import url("minimal/blue.css"); -@import url("minimal/aero.css"); -@import url("minimal/grey.css"); -@import url("minimal/orange.css"); -@import url("minimal/yellow.css"); -@import url("minimal/pink.css"); -@import url("minimal/purple.css"); -*/ - -@import url("square/_all.css"); -/* -@import url("square/square.css"); -@import url("square/red.css"); -@import url("square/green.css"); -@import url("square/blue.css"); -@import url("square/aero.css"); -@import url("square/grey.css"); -@import url("square/orange.css"); -@import url("square/yellow.css"); -@import url("square/pink.css"); -@import url("square/purple.css"); -*/ - -@import url("flat/_all.css"); -/* -@import url("flat/flat.css"); -@import url("flat/red.css"); -@import url("flat/green.css"); -@import url("flat/blue.css"); -@import url("flat/aero.css"); -@import url("flat/grey.css"); -@import url("flat/orange.css"); -@import url("flat/yellow.css"); -@import url("flat/pink.css"); -@import url("flat/purple.css"); -*/ - -@import url("line/_all.css"); -/* -@import url("line/line.css"); -@import url("line/red.css"); -@import url("line/green.css"); -@import url("line/blue.css"); -@import url("line/aero.css"); -@import url("line/grey.css"); -@import url("line/orange.css"); -@import url("line/yellow.css"); -@import url("line/pink.css"); -@import url("line/purple.css"); -*/ - -@import url("polaris/polaris.css"); - -@import url("futurico/futurico.css"); \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/_all.css b/bower_components/iCheck/skins/flat/_all.css deleted file mode 100644 index e9d0ceb92e..0000000000 --- a/bower_components/iCheck/skins/flat/_all.css +++ /dev/null @@ -1,530 +0,0 @@ -/* iCheck plugin Flat skin ------------------------------------ */ -.icheckbox_flat, -.iradio_flat { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(flat.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat { - background-position: 0 0; -} - .icheckbox_flat.checked { - background-position: -22px 0; - } - .icheckbox_flat.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat { - background-position: -88px 0; -} - .iradio_flat.checked { - background-position: -110px 0; - } - .iradio_flat.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat, - .iradio_flat { - background-image: url(flat@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* red */ -.icheckbox_flat-red, -.iradio_flat-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-red { - background-position: 0 0; -} - .icheckbox_flat-red.checked { - background-position: -22px 0; - } - .icheckbox_flat-red.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-red.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-red { - background-position: -88px 0; -} - .iradio_flat-red.checked { - background-position: -110px 0; - } - .iradio_flat-red.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-red.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-red, - .iradio_flat-red { - background-image: url(red@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* green */ -.icheckbox_flat-green, -.iradio_flat-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-green { - background-position: 0 0; -} - .icheckbox_flat-green.checked { - background-position: -22px 0; - } - .icheckbox_flat-green.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-green.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-green { - background-position: -88px 0; -} - .iradio_flat-green.checked { - background-position: -110px 0; - } - .iradio_flat-green.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-green.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-green, - .iradio_flat-green { - background-image: url(green@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* blue */ -.icheckbox_flat-blue, -.iradio_flat-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-blue { - background-position: 0 0; -} - .icheckbox_flat-blue.checked { - background-position: -22px 0; - } - .icheckbox_flat-blue.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-blue.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-blue { - background-position: -88px 0; -} - .iradio_flat-blue.checked { - background-position: -110px 0; - } - .iradio_flat-blue.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-blue.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-blue, - .iradio_flat-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* aero */ -.icheckbox_flat-aero, -.iradio_flat-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-aero { - background-position: 0 0; -} - .icheckbox_flat-aero.checked { - background-position: -22px 0; - } - .icheckbox_flat-aero.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-aero.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-aero { - background-position: -88px 0; -} - .iradio_flat-aero.checked { - background-position: -110px 0; - } - .iradio_flat-aero.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-aero.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-aero, - .iradio_flat-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* grey */ -.icheckbox_flat-grey, -.iradio_flat-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-grey { - background-position: 0 0; -} - .icheckbox_flat-grey.checked { - background-position: -22px 0; - } - .icheckbox_flat-grey.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-grey.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-grey { - background-position: -88px 0; -} - .iradio_flat-grey.checked { - background-position: -110px 0; - } - .iradio_flat-grey.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-grey.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-grey, - .iradio_flat-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* orange */ -.icheckbox_flat-orange, -.iradio_flat-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-orange { - background-position: 0 0; -} - .icheckbox_flat-orange.checked { - background-position: -22px 0; - } - .icheckbox_flat-orange.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-orange.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-orange { - background-position: -88px 0; -} - .iradio_flat-orange.checked { - background-position: -110px 0; - } - .iradio_flat-orange.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-orange.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-orange, - .iradio_flat-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* yellow */ -.icheckbox_flat-yellow, -.iradio_flat-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-yellow { - background-position: 0 0; -} - .icheckbox_flat-yellow.checked { - background-position: -22px 0; - } - .icheckbox_flat-yellow.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-yellow.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-yellow { - background-position: -88px 0; -} - .iradio_flat-yellow.checked { - background-position: -110px 0; - } - .iradio_flat-yellow.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-yellow.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-yellow, - .iradio_flat-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* pink */ -.icheckbox_flat-pink, -.iradio_flat-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-pink { - background-position: 0 0; -} - .icheckbox_flat-pink.checked { - background-position: -22px 0; - } - .icheckbox_flat-pink.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-pink.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-pink { - background-position: -88px 0; -} - .iradio_flat-pink.checked { - background-position: -110px 0; - } - .iradio_flat-pink.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-pink.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-pink, - .iradio_flat-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} - -/* purple */ -.icheckbox_flat-purple, -.iradio_flat-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-purple { - background-position: 0 0; -} - .icheckbox_flat-purple.checked { - background-position: -22px 0; - } - .icheckbox_flat-purple.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-purple.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-purple { - background-position: -88px 0; -} - .iradio_flat-purple.checked { - background-position: -110px 0; - } - .iradio_flat-purple.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-purple.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-purple, - .iradio_flat-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/aero.css b/bower_components/iCheck/skins/flat/aero.css deleted file mode 100644 index 71cbca97ec..0000000000 --- a/bower_components/iCheck/skins/flat/aero.css +++ /dev/null @@ -1,53 +0,0 @@ -/* iCheck plugin Flat skin, aero ------------------------------------ */ -.icheckbox_flat-aero, -.iradio_flat-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-aero { - background-position: 0 0; -} - .icheckbox_flat-aero.checked { - background-position: -22px 0; - } - .icheckbox_flat-aero.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-aero.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-aero { - background-position: -88px 0; -} - .iradio_flat-aero.checked { - background-position: -110px 0; - } - .iradio_flat-aero.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-aero.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-aero, - .iradio_flat-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/aero.png b/bower_components/iCheck/skins/flat/aero.png deleted file mode 100644 index f4277aa4cf04050989b48c548ce0f9ae377bdc48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1520 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 RY6AcO002ovPDHLkV1gs!@UZ{@ diff --git a/bower_components/iCheck/skins/flat/flat@2x.png b/bower_components/iCheck/skins/flat/flat@2x.png deleted file mode 100644 index e70e438c5d5ed00e7082929e61a0d9d162daf473..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3217 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 diff --git a/bower_components/iCheck/skins/flat/green.css b/bower_components/iCheck/skins/flat/green.css deleted file mode 100644 index b80e04d513..0000000000 --- a/bower_components/iCheck/skins/flat/green.css +++ /dev/null @@ -1,53 +0,0 @@ -/* iCheck plugin Flat skin, green ------------------------------------ */ -.icheckbox_flat-green, -.iradio_flat-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-green { - background-position: 0 0; -} - .icheckbox_flat-green.checked { - background-position: -22px 0; - } - .icheckbox_flat-green.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-green.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-green { - background-position: -88px 0; -} - .iradio_flat-green.checked { - background-position: -110px 0; - } - .iradio_flat-green.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-green.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-green, - .iradio_flat-green { - background-image: url(green@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/green.png b/bower_components/iCheck/skins/flat/green.png deleted file mode 100644 index 6b303fbeadb70a90e11d83439189de9b618f0729..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1444 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 Hu0mjf1RVUH diff --git a/bower_components/iCheck/skins/flat/grey.css b/bower_components/iCheck/skins/flat/grey.css deleted file mode 100644 index 96e62e832b..0000000000 --- a/bower_components/iCheck/skins/flat/grey.css +++ /dev/null @@ -1,53 +0,0 @@ -/* iCheck plugin Flat skin, grey ------------------------------------ */ -.icheckbox_flat-grey, -.iradio_flat-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-grey { - background-position: 0 0; -} - .icheckbox_flat-grey.checked { - background-position: -22px 0; - } - .icheckbox_flat-grey.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-grey.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-grey { - background-position: -88px 0; -} - .iradio_flat-grey.checked { - background-position: -110px 0; - } - .iradio_flat-grey.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-grey.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-grey, - .iradio_flat-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/grey.png b/bower_components/iCheck/skins/flat/grey.png deleted file mode 100644 index c6e2873ed5fc2cb1f151c333034ed85422d29a31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1516 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 DWRxc% diff --git a/bower_components/iCheck/skins/flat/orange.css b/bower_components/iCheck/skins/flat/orange.css deleted file mode 100644 index f9c873ffc8..0000000000 --- a/bower_components/iCheck/skins/flat/orange.css +++ /dev/null @@ -1,53 +0,0 @@ -/* iCheck plugin Flat skin, orange ------------------------------------ */ -.icheckbox_flat-orange, -.iradio_flat-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-orange { - background-position: 0 0; -} - .icheckbox_flat-orange.checked { - background-position: -22px 0; - } - .icheckbox_flat-orange.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-orange.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-orange { - background-position: -88px 0; -} - .iradio_flat-orange.checked { - background-position: -110px 0; - } - .iradio_flat-orange.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-orange.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-orange, - .iradio_flat-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/orange.png b/bower_components/iCheck/skins/flat/orange.png deleted file mode 100644 index ec2532ebe4492b949f48278fd13b46e792869083..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1518 zcmV zZ)lZe7{~EC)0yRr7N(vhAw^EDES=3E6ea^DrB$==PxcS#O*Ir!B7GAoXpkmJl=e!p zHFawK86nOZMVp#`Q>R(_VpDseiB7_kXZ96-TZfC&dG2=Z=kW}>-~)%l{e01fi|4Q% zz4h41-)_-N#%zp6AGk~#_TWQo?Fbd$Klq;mpWmHTx6kY6JG;%lo=QD41Y=Nye8+AA zt@sfqz=)?VfA@kVcE^O- zH5OxT7g}?5ttPVWc#Q2rcPz$7)s3M9UdFV->c%~G<6(ED5_ZWFSb;JWNSWSCz$_aL zGkh{--BrWRFxVwaq6w?9SXS%3q+K>OymxsD53>tg054-&VRd_X?DmSFn~!BC(27!2 zp%HD;sP{_IYMRT{>R4WHU9~zU4--uH5>}xOEl5a<-dm+JjL=ZadzU5d?8cC5Q-_7< zF7pc-G6bgJUh{;Ugaa9x2kokZvkW;8PrMXdlF9w&mE($45Ai3woXJ*ey2Qy&0EGbmk}1 zEq3hYVItI6_R|U^&>D8>1MPEtcB~?vn7t* zrFa{KxJ$3!ckISZ_b^qfu8kK;)eHA&!ARO4$@=GyW~5$;1fHsfb4 zZ%xqh20Xz=!gU_9EywN}*jeq^ZA-N+ZXH@2{-Wh`tGQwdb$ z;_^yQOv50wV?C-Jme)FDx>Mmg_UvBA?p&rC_P}0@gOAw*O<=cg7rSRL7(S*IuH9Z;>B>5MfOpJS%vBOJTuZ|Y zi?@zXv8=i@)CJ@S;uveb3LYat^Me}RyDYD|Kn%;^WlSrqZllL;W0+mzU3}by)=FKg ziLAR5ySvccjh#_-W7vX4$Z}}VN_jeX>#Ef;$I;-S+n|>BE>8({0ZHO5RN`b%L}#Yp zO_=SIT{Y~~qZ+4> zfa@f5&6jF;@3OqMYi+=A%+Tx8_)AXfy%{>Q9%dr%9>q%3>h(n=<)YrJ)tRGVbXnZ= zUGvl3X7M^Kp!cpc%T4dHv|ah(@eA=Vp?8xwBoTDo?`;nq=oZ5Iv+DnY{jVF&-@VRn Ul15pQMF0Q*07*qoM6N<$f=ns@CIA2c diff --git a/bower_components/iCheck/skins/flat/orange@2x.png b/bower_components/iCheck/skins/flat/orange@2x.png deleted file mode 100644 index 9350b50624f9017ba8bb3fc64c526428d0bda407..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3275 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 Ef=5*|pa1{> diff --git a/bower_components/iCheck/skins/flat/purple.css b/bower_components/iCheck/skins/flat/purple.css deleted file mode 100644 index dfedafc29a..0000000000 --- a/bower_components/iCheck/skins/flat/purple.css +++ /dev/null @@ -1,53 +0,0 @@ -/* iCheck plugin Flat skin, purple ------------------------------------ */ -.icheckbox_flat-purple, -.iradio_flat-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-purple { - background-position: 0 0; -} - .icheckbox_flat-purple.checked { - background-position: -22px 0; - } - .icheckbox_flat-purple.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-purple.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-purple { - background-position: -88px 0; -} - .iradio_flat-purple.checked { - background-position: -110px 0; - } - .iradio_flat-purple.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-purple.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-purple, - .iradio_flat-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/purple.png b/bower_components/iCheck/skins/flat/purple.png deleted file mode 100644 index 3699fd583289e37e1eca6be2940f22e0daa5350b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1519 zcmV ze`r;87{~Ft)0x$b2BzL6Aw^EDES=3E6ea^DrB$==NA?3mh-xULMEXytph22sQTm@` zYwFadju2;!qD{@8smoUS$ENm2OLP+6yw+RzI4%!%&X;??=iWQ$ffrm3=e(JRhjZDz z^VXB?zulslhWQwWJK-|j*pCme<3_0T{$V{Qe7vF|qwedAruB5&em$Lf&Tx!J2?`y% z33TEIoB|`By8PQu*`L)?w@NAySEB=muoc_YWenY8-QSG5++TBVZ>j*LG89Ef;v&wW zO_H#aahHAi&+d%{UW#{-$t=TSb923PS>nZJDW1X;8Frh|q=45h%heRH5YJ*I9ti2Q zV-e~@7C7y$;{uOBC5l73UD%D2Cg7#ZPTjN{!_)cAje0RC0l~7j{TL51(ADYOz6&}0e zqwE^Xu`rF+LS3uLT6YpAq|u##N!jYgPzEn!T2Xc59=q|VyHX9iWC^T61&X9X#}Y8h zM#Bv6Oc{68urm^N$&zTrdMuaqI+nD{riS+}PvMbvfs5c}Oe?BxKYv+T(RT~6$^<%5 zjvBO}TUvCi9G#}Q8igs#>#eKSjVZun)4hmwXha7R(xGGPbPgjl)bieCiF>*+8L6LKTY2XxQtoU72#pcPd&Ul({M zs`$-#34u?L?{f;Z*FSY2uwMbI$^<^eVTbk+d}dpY-9mhbKhUMug^t})(>-98ENIz& zG~H6iZULrXkxW5>K5Yr?#`0`=pJRCwyrqq}{<;?|@0UpOmNt;U2nDQhCa@8%W6v#f z?5@OHD8}7-{hnhtZo0?dI`-VSW499J=r84%7}U+x0&lZ7Pj;B)-HSoU^|aww(DGs+ zUJm$@X0T}z~7=8bFd*L(17Rj zaCy(54qI^~CGfNB@=5~fPTw4KlNoel+3MzEfgi_{ENYU#tEk0SsLr?Ll@i>CYuJvT zw7hj;%Nz0p8w1yQ$hI828(?R>W4Alt=^W-B)4k-_JpwxigSxp`;QnY}Q7c&3BxVq( z%E#rEzL<%jTH?*9by!~OsOipt>)3M-ICd9e4gQohSmN0I-E<#@>)3P8I(B!X6@N)9 znq0auWOHsuBMUo5-^2fths$f1cov2z@Q+F}@a_lBhgJP*c!m-EG>}GKvv&);OZo?c5vCHdd6FSV796Rx7 zKwva>nJ+{-)rz`%+ngY?#=)zd{1Uz_d#%*ABHQ7Ca8 zo2zqrMvbdcbop$!r`rbyFcCgxKQy7;0cm#6ViH?C)o2W*+L#G|n z@rJI|WUYG*yHJNNhi(_@bj>y2UGC{Fs0)cHuozX?i_37G%ev+nHSAkl#$7e+G@%x! zk$~$Ybj=rPc<-{jwrg#{D9qODGx%H1=-6zXv)Kf4(LI5+sMqTYNXi8rtJgUvqUf@? z>Kf*^yY1q2SU~SxX_K6HS=w}ddHh_$C->bXj!G7~?)SEjPUsb)`dRh=!T#3^=U)u0 VZ#F@RuLJ-9002ovPDHLkV1fY7`WgTL diff --git a/bower_components/iCheck/skins/flat/purple@2x.png b/bower_components/iCheck/skins/flat/purple@2x.png deleted file mode 100644 index 7f4be74a7c08a453802d46e6a7971250ee416f08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3218 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 Ef)^M{V*mgE diff --git a/bower_components/iCheck/skins/flat/red.css b/bower_components/iCheck/skins/flat/red.css deleted file mode 100644 index 83ec91e924..0000000000 --- a/bower_components/iCheck/skins/flat/red.css +++ /dev/null @@ -1,53 +0,0 @@ -/* iCheck plugin Flat skin, red ------------------------------------ */ -.icheckbox_flat-red, -.iradio_flat-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 20px; - height: 20px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_flat-red { - background-position: 0 0; -} - .icheckbox_flat-red.checked { - background-position: -22px 0; - } - .icheckbox_flat-red.disabled { - background-position: -44px 0; - cursor: default; - } - .icheckbox_flat-red.checked.disabled { - background-position: -66px 0; - } - -.iradio_flat-red { - background-position: -88px 0; -} - .iradio_flat-red.checked { - background-position: -110px 0; - } - .iradio_flat-red.disabled { - background-position: -132px 0; - cursor: default; - } - .iradio_flat-red.checked.disabled { - background-position: -154px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_flat-red, - .iradio_flat-red { - background-image: url(red@2x.png); - -webkit-background-size: 176px 22px; - background-size: 176px 22px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/flat/red.png b/bower_components/iCheck/skins/flat/red.png deleted file mode 100644 index 0d5ac3819b4d2aee17a543497d3e70699a06f052..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1516 zcmV zZ)jC@9LMpx)0x$b7Ny=LAw^EDES=3E6ea^DrDd~F%l?q~q#6@aB7G7nXpkmJlzS%G znmRTAj1XsyqD{@esnb^aU{ibG5}kxM@9h2HbMJ#McF&J{e)o6>ec=U{!#QuZ!_~-5A0D1Q;bQIEp}P02s!Mm> z1iJ7uPQy(2F2DO}`?Ff=R!IfoYINcdwqTpOjG=q1`x~mu{WbUYrV3Ch!%&1IF5^7f zB?&vByX@0{c2f(y6dxkYEW=`RbG>v~;>Bhup2IUCyDex|z-yP~YR<3_FJdJg3FvfS z5gG#)I7HWJfk&be#R1)J?8ZqG@X}?cZrY7uTIeN%8q<+lUT6)v!yJz#3GbNGfzJ0kdp0 z%<#?>x~qnrQLsyvL>ua`Tu)vQp@YDt5#|XFvWB)V;!2%iG+0O*gBoV2o1HocUj_eH->zhCM-o? zncvWoAutmUnkVEm9L~@@jOTF;sVTwB5p+jmkafQP$KX2l+_+=666F{u<(L%Qjedc*+M6dk%<}HVVBG3y$FWSyi~I3< zhA(M`nC3ya&LPtp>ezh^cIG*D?eB3Ou4A9nMULGuurn^88~FnNfNIRedZcDMUdqGe zJ&Oix!4ah9lR!9?)`ZpRGyD>yP_h2`R`;=YYJaq@=VyInSM;p;;zU0`6Co=@b zV3+wqq)V+_caNJd5Bgztz!DF^9B?iJHBRKZ8^aa&njUB}c8l>ne#Btcu3Uq!NjP=~ z;tjmzxV#DTdV%Scpbe{0hP$Lp$M&JbG;32oqu#x|b!nx$Na8!w9fWz9f;b8#u4D6b zPI}b1o{KJj8%}ro;Q%JV$LxnDusbNr?l}yHkLiMIcR)5>*@%zvzWIu|MuLWGX_#U0 zHu5eOs!Ky%K#n7hiRP=|2@*6vso}lL@~R8OunJzrv~tyL_1JCAW!LxspJmZnt7|op zb@yOj7TtZ=6IC~c?O29TqXw!r;`YisDvpV*w&e;Srk#|pEEgJRu5|VOB#~O9ciClD9Ty+ie z>28~N9Tw1gSK8&4cUjtOK0JOUAtthJ5=SM1uKT_1rxW@F-#@GQ&!Ye9gYz#aOK(=d Sl4{xj0000xky7y@!Zce>mF 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 diff --git a/bower_components/iCheck/skins/line/orange.css b/bower_components/iCheck/skins/line/orange.css deleted file mode 100644 index 5f051b40fa..0000000000 --- a/bower_components/iCheck/skins/line/orange.css +++ /dev/null @@ -1,71 +0,0 @@ -/* iCheck plugin Line skin, orange ------------------------------------ */ -.icheckbox_line-orange, -.iradio_line-orange { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #f70; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-orange .icheck_line-icon, - .iradio_line-orange .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-orange.hover, - .icheckbox_line-orange.checked.hover, - .iradio_line-orange.hover { - background: #FF9233; - } - .icheckbox_line-orange.checked, - .iradio_line-orange.checked { - background: #f70; - } - .icheckbox_line-orange.checked .icheck_line-icon, - .iradio_line-orange.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-orange.disabled, - .iradio_line-orange.disabled { - background: #FFD6B3; - cursor: default; - } - .icheckbox_line-orange.disabled .icheck_line-icon, - .iradio_line-orange.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-orange.checked.disabled, - .iradio_line-orange.checked.disabled { - background: #FFD6B3; - } - .icheckbox_line-orange.checked.disabled .icheck_line-icon, - .iradio_line-orange.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_line-orange .icheck_line-icon, - .iradio_line-orange .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/line/pink.css b/bower_components/iCheck/skins/line/pink.css deleted file mode 100644 index b98bbc3da6..0000000000 --- a/bower_components/iCheck/skins/line/pink.css +++ /dev/null @@ -1,71 +0,0 @@ -/* iCheck plugin Line skin, pink ------------------------------------ */ -.icheckbox_line-pink, -.iradio_line-pink { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #a77a94; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-pink .icheck_line-icon, - .iradio_line-pink .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-pink.hover, - .icheckbox_line-pink.checked.hover, - .iradio_line-pink.hover { - background: #B995A9; - } - .icheckbox_line-pink.checked, - .iradio_line-pink.checked { - background: #a77a94; - } - .icheckbox_line-pink.checked .icheck_line-icon, - .iradio_line-pink.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-pink.disabled, - .iradio_line-pink.disabled { - background: #E0D0DA; - cursor: default; - } - .icheckbox_line-pink.disabled .icheck_line-icon, - .iradio_line-pink.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-pink.checked.disabled, - .iradio_line-pink.checked.disabled { - background: #E0D0DA; - } - .icheckbox_line-pink.checked.disabled .icheck_line-icon, - .iradio_line-pink.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_line-pink .icheck_line-icon, - .iradio_line-pink .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/line/purple.css b/bower_components/iCheck/skins/line/purple.css deleted file mode 100644 index 61f4a2f9b1..0000000000 --- a/bower_components/iCheck/skins/line/purple.css +++ /dev/null @@ -1,71 +0,0 @@ -/* iCheck plugin Line skin, purple ------------------------------------ */ -.icheckbox_line-purple, -.iradio_line-purple { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #6a5a8c; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-purple .icheck_line-icon, - .iradio_line-purple .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-purple.hover, - .icheckbox_line-purple.checked.hover, - .iradio_line-purple.hover { - background: #8677A7; - } - .icheckbox_line-purple.checked, - .iradio_line-purple.checked { - background: #6a5a8c; - } - .icheckbox_line-purple.checked .icheck_line-icon, - .iradio_line-purple.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-purple.disabled, - .iradio_line-purple.disabled { - background: #D2CCDE; - cursor: default; - } - .icheckbox_line-purple.disabled .icheck_line-icon, - .iradio_line-purple.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-purple.checked.disabled, - .iradio_line-purple.checked.disabled { - background: #D2CCDE; - } - .icheckbox_line-purple.checked.disabled .icheck_line-icon, - .iradio_line-purple.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_line-purple .icheck_line-icon, - .iradio_line-purple .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/line/red.css b/bower_components/iCheck/skins/line/red.css deleted file mode 100644 index d86c946ba9..0000000000 --- a/bower_components/iCheck/skins/line/red.css +++ /dev/null @@ -1,71 +0,0 @@ -/* iCheck plugin Line skin, red ------------------------------------ */ -.icheckbox_line-red, -.iradio_line-red { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #e56c69; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-red .icheck_line-icon, - .iradio_line-red .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-red.hover, - .icheckbox_line-red.checked.hover, - .iradio_line-red.hover { - background: #E98582; - } - .icheckbox_line-red.checked, - .iradio_line-red.checked { - background: #e56c69; - } - .icheckbox_line-red.checked .icheck_line-icon, - .iradio_line-red.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-red.disabled, - .iradio_line-red.disabled { - background: #F7D3D2; - cursor: default; - } - .icheckbox_line-red.disabled .icheck_line-icon, - .iradio_line-red.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-red.checked.disabled, - .iradio_line-red.checked.disabled { - background: #F7D3D2; - } - .icheckbox_line-red.checked.disabled .icheck_line-icon, - .iradio_line-red.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_line-red .icheck_line-icon, - .iradio_line-red .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/line/yellow.css b/bower_components/iCheck/skins/line/yellow.css deleted file mode 100644 index b34148a645..0000000000 --- a/bower_components/iCheck/skins/line/yellow.css +++ /dev/null @@ -1,71 +0,0 @@ -/* iCheck plugin Line skin, yellow ------------------------------------ */ -.icheckbox_line-yellow, -.iradio_line-yellow { - position: relative; - display: block; - margin: 0; - padding: 5px 15px 5px 38px; - font-size: 13px; - line-height: 17px; - color: #fff; - background: #FFC414; - border: none; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - cursor: pointer; -} - .icheckbox_line-yellow .icheck_line-icon, - .iradio_line-yellow .icheck_line-icon { - position: absolute; - top: 50%; - left: 13px; - width: 13px; - height: 11px; - margin: -5px 0 0 0; - padding: 0; - overflow: hidden; - background: url(line.png) no-repeat; - border: none; - } - .icheckbox_line-yellow.hover, - .icheckbox_line-yellow.checked.hover, - .iradio_line-yellow.hover { - background: #FFD34F; - } - .icheckbox_line-yellow.checked, - .iradio_line-yellow.checked { - background: #FFC414; - } - .icheckbox_line-yellow.checked .icheck_line-icon, - .iradio_line-yellow.checked .icheck_line-icon { - background-position: -15px 0; - } - .icheckbox_line-yellow.disabled, - .iradio_line-yellow.disabled { - background: #FFE495; - cursor: default; - } - .icheckbox_line-yellow.disabled .icheck_line-icon, - .iradio_line-yellow.disabled .icheck_line-icon { - background-position: -30px 0; - } - .icheckbox_line-yellow.checked.disabled, - .iradio_line-yellow.checked.disabled { - background: #FFE495; - } - .icheckbox_line-yellow.checked.disabled .icheck_line-icon, - .iradio_line-yellow.checked.disabled .icheck_line-icon { - background-position: -45px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_line-yellow .icheck_line-icon, - .iradio_line-yellow .icheck_line-icon { - background-image: url(line@2x.png); - -webkit-background-size: 60px 13px; - background-size: 60px 13px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/_all.css b/bower_components/iCheck/skins/minimal/_all.css deleted file mode 100644 index 8cf8aca9bd..0000000000 --- a/bower_components/iCheck/skins/minimal/_all.css +++ /dev/null @@ -1,590 +0,0 @@ -/* iCheck plugin Minimal skin ------------------------------------ */ -.icheckbox_minimal, -.iradio_minimal { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(minimal.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal { - background-position: 0 0; -} - .icheckbox_minimal.hover { - background-position: -20px 0; - } - .icheckbox_minimal.checked { - background-position: -40px 0; - } - .icheckbox_minimal.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal { - background-position: -100px 0; -} - .iradio_minimal.hover { - background-position: -120px 0; - } - .iradio_minimal.checked { - background-position: -140px 0; - } - .iradio_minimal.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal, - .iradio_minimal { - background-image: url(minimal@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* red */ -.icheckbox_minimal-red, -.iradio_minimal-red { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(red.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-red { - background-position: 0 0; -} - .icheckbox_minimal-red.hover { - background-position: -20px 0; - } - .icheckbox_minimal-red.checked { - background-position: -40px 0; - } - .icheckbox_minimal-red.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-red.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-red { - background-position: -100px 0; -} - .iradio_minimal-red.hover { - background-position: -120px 0; - } - .iradio_minimal-red.checked { - background-position: -140px 0; - } - .iradio_minimal-red.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-red.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-red, - .iradio_minimal-red { - background-image: url(red@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* green */ -.icheckbox_minimal-green, -.iradio_minimal-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-green { - background-position: 0 0; -} - .icheckbox_minimal-green.hover { - background-position: -20px 0; - } - .icheckbox_minimal-green.checked { - background-position: -40px 0; - } - .icheckbox_minimal-green.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-green.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-green { - background-position: -100px 0; -} - .iradio_minimal-green.hover { - background-position: -120px 0; - } - .iradio_minimal-green.checked { - background-position: -140px 0; - } - .iradio_minimal-green.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-green.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-green, - .iradio_minimal-green { - background-image: url(green@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* blue */ -.icheckbox_minimal-blue, -.iradio_minimal-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-blue { - background-position: 0 0; -} - .icheckbox_minimal-blue.hover { - background-position: -20px 0; - } - .icheckbox_minimal-blue.checked { - background-position: -40px 0; - } - .icheckbox_minimal-blue.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-blue.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-blue { - background-position: -100px 0; -} - .iradio_minimal-blue.hover { - background-position: -120px 0; - } - .iradio_minimal-blue.checked { - background-position: -140px 0; - } - .iradio_minimal-blue.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-blue.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-blue, - .iradio_minimal-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* aero */ -.icheckbox_minimal-aero, -.iradio_minimal-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-aero { - background-position: 0 0; -} - .icheckbox_minimal-aero.hover { - background-position: -20px 0; - } - .icheckbox_minimal-aero.checked { - background-position: -40px 0; - } - .icheckbox_minimal-aero.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-aero.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-aero { - background-position: -100px 0; -} - .iradio_minimal-aero.hover { - background-position: -120px 0; - } - .iradio_minimal-aero.checked { - background-position: -140px 0; - } - .iradio_minimal-aero.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-aero.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-aero, - .iradio_minimal-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* grey */ -.icheckbox_minimal-grey, -.iradio_minimal-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-grey { - background-position: 0 0; -} - .icheckbox_minimal-grey.hover { - background-position: -20px 0; - } - .icheckbox_minimal-grey.checked { - background-position: -40px 0; - } - .icheckbox_minimal-grey.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-grey.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-grey { - background-position: -100px 0; -} - .iradio_minimal-grey.hover { - background-position: -120px 0; - } - .iradio_minimal-grey.checked { - background-position: -140px 0; - } - .iradio_minimal-grey.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-grey.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-grey, - .iradio_minimal-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* orange */ -.icheckbox_minimal-orange, -.iradio_minimal-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-orange { - background-position: 0 0; -} - .icheckbox_minimal-orange.hover { - background-position: -20px 0; - } - .icheckbox_minimal-orange.checked { - background-position: -40px 0; - } - .icheckbox_minimal-orange.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-orange.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-orange { - background-position: -100px 0; -} - .iradio_minimal-orange.hover { - background-position: -120px 0; - } - .iradio_minimal-orange.checked { - background-position: -140px 0; - } - .iradio_minimal-orange.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-orange.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-orange, - .iradio_minimal-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* yellow */ -.icheckbox_minimal-yellow, -.iradio_minimal-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-yellow { - background-position: 0 0; -} - .icheckbox_minimal-yellow.hover { - background-position: -20px 0; - } - .icheckbox_minimal-yellow.checked { - background-position: -40px 0; - } - .icheckbox_minimal-yellow.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-yellow.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-yellow { - background-position: -100px 0; -} - .iradio_minimal-yellow.hover { - background-position: -120px 0; - } - .iradio_minimal-yellow.checked { - background-position: -140px 0; - } - .iradio_minimal-yellow.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-yellow.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-yellow, - .iradio_minimal-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* pink */ -.icheckbox_minimal-pink, -.iradio_minimal-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-pink { - background-position: 0 0; -} - .icheckbox_minimal-pink.hover { - background-position: -20px 0; - } - .icheckbox_minimal-pink.checked { - background-position: -40px 0; - } - .icheckbox_minimal-pink.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-pink.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-pink { - background-position: -100px 0; -} - .iradio_minimal-pink.hover { - background-position: -120px 0; - } - .iradio_minimal-pink.checked { - background-position: -140px 0; - } - .iradio_minimal-pink.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-pink.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-pink, - .iradio_minimal-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} - -/* purple */ -.icheckbox_minimal-purple, -.iradio_minimal-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-purple { - background-position: 0 0; -} - .icheckbox_minimal-purple.hover { - background-position: -20px 0; - } - .icheckbox_minimal-purple.checked { - background-position: -40px 0; - } - .icheckbox_minimal-purple.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-purple.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-purple { - background-position: -100px 0; -} - .iradio_minimal-purple.hover { - background-position: -120px 0; - } - .iradio_minimal-purple.checked { - background-position: -140px 0; - } - .iradio_minimal-purple.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-purple.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-purple, - .iradio_minimal-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/aero.css b/bower_components/iCheck/skins/minimal/aero.css deleted file mode 100644 index 0a7a945382..0000000000 --- a/bower_components/iCheck/skins/minimal/aero.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Minimal skin, aero ------------------------------------ */ -.icheckbox_minimal-aero, -.iradio_minimal-aero { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(aero.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-aero { - background-position: 0 0; -} - .icheckbox_minimal-aero.hover { - background-position: -20px 0; - } - .icheckbox_minimal-aero.checked { - background-position: -40px 0; - } - .icheckbox_minimal-aero.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-aero.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-aero { - background-position: -100px 0; -} - .iradio_minimal-aero.hover { - background-position: -120px 0; - } - .iradio_minimal-aero.checked { - background-position: -140px 0; - } - .iradio_minimal-aero.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-aero.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-aero, - .iradio_minimal-aero { - background-image: url(aero@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/aero.png b/bower_components/iCheck/skins/minimal/aero.png deleted file mode 100644 index dccf7740c9cb727f9c1eeadd6b584eec8634f23e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1151 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 diff --git a/bower_components/iCheck/skins/minimal/blue.css b/bower_components/iCheck/skins/minimal/blue.css deleted file mode 100644 index c290097518..0000000000 --- a/bower_components/iCheck/skins/minimal/blue.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Minimal skin, blue ------------------------------------ */ -.icheckbox_minimal-blue, -.iradio_minimal-blue { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(blue.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-blue { - background-position: 0 0; -} - .icheckbox_minimal-blue.hover { - background-position: -20px 0; - } - .icheckbox_minimal-blue.checked { - background-position: -40px 0; - } - .icheckbox_minimal-blue.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-blue.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-blue { - background-position: -100px 0; -} - .iradio_minimal-blue.hover { - background-position: -120px 0; - } - .iradio_minimal-blue.checked { - background-position: -140px 0; - } - .iradio_minimal-blue.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-blue.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-blue, - .iradio_minimal-blue { - background-image: url(blue@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/blue.png b/bower_components/iCheck/skins/minimal/blue.png deleted file mode 100644 index af04cee596d5d2f884b03f9d8f0dd25c1cd5a0fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 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 Q$N&HU07*qoM6N<$f*_*2MgRZ+ diff --git a/bower_components/iCheck/skins/minimal/green.css b/bower_components/iCheck/skins/minimal/green.css deleted file mode 100644 index aa685f3665..0000000000 --- a/bower_components/iCheck/skins/minimal/green.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Minimal skin, green ------------------------------------ */ -.icheckbox_minimal-green, -.iradio_minimal-green { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(green.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-green { - background-position: 0 0; -} - .icheckbox_minimal-green.hover { - background-position: -20px 0; - } - .icheckbox_minimal-green.checked { - background-position: -40px 0; - } - .icheckbox_minimal-green.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-green.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-green { - background-position: -100px 0; -} - .iradio_minimal-green.hover { - background-position: -120px 0; - } - .iradio_minimal-green.checked { - background-position: -140px 0; - } - .iradio_minimal-green.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-green.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-green, - .iradio_minimal-green { - background-image: url(green@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/green.png b/bower_components/iCheck/skins/minimal/green.png deleted file mode 100644 index 9171ebc7e456848eee4440b1e9975282f62fe03d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1143 zcmV--1c>{IP)VcOZuC z(Z^km5{SLDNt`DBrcmj_0Gd;{rv_2Fx)5yM2O257y17aJ+{y)B}`je1K2>!HAD=h>zE0-mk}1AFs=- zs|SQ*jgKke>tmhxcwJ_ltxwy(0{oL3C)Z7Jc``LLlj8*(BN$caYE)f#07um^qdrRU zK^3~1iQEP8(Z^An`g-qy_|&oey$~P4s6wEx_a2CkV=a7|{-rh`c{m()^Kgq`EJe^R z!cBE74%x&9p?!ozeDu??t&g?h^Bk+a5Ffz^?PIO@aA*$AFOElm&pm@rY{`k5J))8l;D*`2`{0PfbR}W z!&WG&*SE4-U)C?NTvIr>hIWz+i76bKNizg(ivrp(lz{KJkKlB6>&yOU5I5Oym_rgR z9KtWlo1=sFzTB7bfC#Az$NDFS@C}A73fKW(6Ywqg2x?iaFRKC3Ool|mA(O%8eZ?o3 zuqb03J|y6~3Nz4A%)ozHtuM=W(w&q}4heyFa+rAn_qbOuyN++NHo+;l-0y=~=tjJs zBtBDp>f5S|ilBQufj)XR8}*wkjtT9YK3QgRuzHLwxkuwXKh};`1D< zeG(rNA+(RR;=`fw+4WBXlJ!ZF=8!~1J@tABo)VG@=+09C&cicxOv6VhKBz!J6O00g zk8m_>>g&A+;^WwcPoKm`NGed!1fu}r<5&xyrhi%b45EG)vY{X(b@jyTJY3-QoVtnC zhC$c~<8TIk!al>}?sX6!cs{}q=p!7>IO|iv3Yxfef+0R$8+{xTt55g1y9=>wf7{22 ziTin|1bo4hgkbDdIRn-I!JINUhvW3A37lZ0M|^079o&#HgD zUlb0+^oznoCI^k*=)W7WIv)gKBeze!#R~dGq2mVrqsYn0x8ILOB``|uWn2IN002ov JPDHLkV1hWAFZBQb diff --git a/bower_components/iCheck/skins/minimal/green@2x.png b/bower_components/iCheck/skins/minimal/green@2x.png deleted file mode 100644 index 7f18f96a9c30c6b2d8b726019939ec908a9067cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1408 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 diff --git a/bower_components/iCheck/skins/minimal/minimal@2x.png b/bower_components/iCheck/skins/minimal/minimal@2x.png deleted file mode 100644 index d62291daaa78d173897d6a713e5cf26321e70cf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1410 zcmV-|1%3L7P)l000F^NklC7#7>40~P-}&PHl_&)QBtv`NW=pMOKCMhnxI9OR;=3w7Sf7r)Q#Ac(ggL`Y62KF zCejG*q!`kQ3yVz?)M5}?e%gp3A?*UCEtWRT=e>9rZXlhUGV`6DXOb)5ip-t2G?NJv zq6-%;#CgeDQCV48UKB-nwi4GD$8p}pix-pGXY;#${d!{iii?XA-^a3_vGXd$R@7iM zR$z$*jNwn5M-NV5*fo%!FCRjqD3N{t`~65{pZ$I$w$J|lSz|)`Y~@2sBr^+9k6oxj zben(&&3e3w7`BEP zq_7#=u*tlGCUiRl1npCw`tqSA;;s;B?680#?89M<-zH$h^x*)CupMus0$n(W*D)Eg zPkrjs0TMuYdAYX${{2b=52FN~*nmmw#YdQO3>e2}_zJtxf*n|gZ5T~*pZe6dz&Tw+ zhsRIYfFV?&6;l}mOraH37{UhIqa}%Y#qf* zn6y1>lhCI=_2~c+akl^;TR;nb^AOOF77J*@!jOIHQ=eX8Wv4iJf#&xzR^u}Edu-p2 zMpU349rLx1*Nd6FM)Wj4{d{!;5pnmLefMG7W56_8tzlQ_KJ}?j2Z%qh(QB*ho?j_8 zVH}6ydwp$tSK*Ny>MKAqdNF2t(TsvHeVU&R5D_=eAwnl60t8H;(;BwsNZ)ewA&reF zG8>UbAC~*?)BJRR_!pb(ym@GT)%HD!K#RStB?tNna15zC1fDPd5+|H)Hl) z8mz$f#&{0&{pt{K)^DHYmwg9_UKd3s%+mb+vhPZSS++N>{TRmI7VrQ{k-}!YfFcVRL=(D_(5F82xgH=f z61UW+zJ%+-8q}i+8?oKYX7!>S-(V&wed<%6ZXhCl%%H=R;(64d0uN)U1>C?D44?ny;)Th4uq`w4GpZc=QFg`W&x=(%Ti{dzTXcG|;@%;)*L_~Ceh=_>Rf8mTFRg-4= Q7ytkO07*qoM6N<$f-B6VcmMzZ diff --git a/bower_components/iCheck/skins/minimal/orange.css b/bower_components/iCheck/skins/minimal/orange.css deleted file mode 100644 index ba1b9c34a3..0000000000 --- a/bower_components/iCheck/skins/minimal/orange.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Minimal skin, orange ------------------------------------ */ -.icheckbox_minimal-orange, -.iradio_minimal-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-orange { - background-position: 0 0; -} - .icheckbox_minimal-orange.hover { - background-position: -20px 0; - } - .icheckbox_minimal-orange.checked { - background-position: -40px 0; - } - .icheckbox_minimal-orange.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-orange.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-orange { - background-position: -100px 0; -} - .iradio_minimal-orange.hover { - background-position: -120px 0; - } - .iradio_minimal-orange.checked { - background-position: -140px 0; - } - .iradio_minimal-orange.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-orange.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-orange, - .iradio_minimal-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/orange.png b/bower_components/iCheck/skins/minimal/orange.png deleted file mode 100644 index f2a314978df05edbfe0da6ab1e51f81070079b44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1139 zcmV-(1dRKMP)ZO!m-Q8E|KVCp7wFxVqT~(wSQBvH%BDo1XpKv4g1dV0L~DM4h&LM1Gouasx`9- zO6`LV*nP1afbm6QHl)7cHPAk_cDxtbM=&~I^$o9q_OaH}=kDKR2c!yz;IIPM2*wi+ z?JE4L*5c4Z`yjh7mc|ze5n3N}wQuAwz0f{_k=e&w?Ze^l`S-8rfK=hIGY5yE1HR*y zT00l!t9)e*hztlvkvoI?y5Tf*^*x6l1L(r(aUb~mVyS)3`XW(-8?X)U)Ol@e7qR;E zJ%R_U$?T)|HMjxW@J^lAZ2c?q4kEq7QG7^DINUVhQ9ua~p;>_MH@E~JL0z3+D{Fma zzXy@daKus+9}@F#kLMoKuoY0i7EBl5JDVW*y1ez3{~kmZ8xD6!yuxAlFYw`LE!UW_nRy@2w%aE<33mdKVKxY&skqAcQ{;D z*q-rNee`U}_nR!%WcJ}stPh8!f91Xh5sq*a9+H4}wI0L2&<5Y}ty;Sp>Z^R^zXuVn za1UiC~2igbkeUY&HV!57YeJWVC9k)j?w2yPAk2Sga(q4C$kjwbcK0cVdUkNF| zXWvN(#tF6kpMpy;4Lk5BJclc=nz85Wkj)oMnP+{>P4StXgkEOyF*mC(sDHy>6duUw z7lj{i=P=Ot{r6wcLuT15Z=002ovPDHLk FV1hHXFjD{k diff --git a/bower_components/iCheck/skins/minimal/orange@2x.png b/bower_components/iCheck/skins/minimal/orange@2x.png deleted file mode 100644 index 68c835915ac81a16716bd7b0c5d83c81a8d5840e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1407 zcmV-_1%UdAP)l000F>Nkl!D`KdY5xdv zq@CrAF|&haV_-GI{Ilssh9KL4rPJnQJbe$YgHA@?Y~J_%?)_cx;W?7~%QeT%0}qW+c#&^?fivhtI|kr1{Cs&ZJCZ2-{`310WuN_iMB8V7|Ew|6KAS8wA`>$mwb+76B;y3! zZ8Koin)TcgOAX86j{EzlG1K(mHPN51tn5^kR6;5HHoi!u2 zKJ}?j7l??vCal1Dti@$a_FTp@IB#b)#nh)h^|@alqBjriZyo9|f?5pXPR$Tr#E6}_ zE`~n!sZSS(h`VX{&;lCqtA~IdG+ID2rpMN&KJ{gxiCc=Wqy4>vMYw=H@HKl-hYHl9 zb*lF9_2NXnM)b5l{e1NXBI52fd+x$5_?lbTZ4FyO_o+{Px+n6-(Pj3cQ0`V_3`T6Fd{Z-lX7y=DvTT21-72z;)7;kcD!`*)Sv_D-SB5oGj^CUve zZ}xn&0Qxo~hyR<$u_^5Sw7)F;j=ly;Cit~b0)M0ZJz&oZ2sP*JIlln z?N4tYB5r2c^D4rOosE(L=v(Fxu+(p#_7~9`h~7l>=Ar$`gxrG1(f;%XBI4$nJ!d1# z*x48^fWBWG0#5nu)Bf`B0@2q+i3u~>-=FqefG}fc<6;5ywK@c}`t8&Hbb*MtIc?7+ z2s3szelLK&7M#4zFN0eA_Gy2*K>SI}g#Ua{+Fz$V*CNc=**IPReK%2q9*j39QH`5^ z`?Nn@AR=zsk)j$i;d^GH+8Wvmr0)_|U>i>0x;cSucoLWV_i2BAzrvFI|5`}<>&H*1 z!ba?e&v_ZMtf9Yv`bN=YBI(oqbb*Mt`v_Hd6JL1zeDp5tu!g-;xsQL6UHgl?PoMFI zl^A_(m4Ev?h_hIL?eI0*vB1tg7`jh=>eB@x;%*G}7SMp4hkzU!EMP0fLiedpeY!xx zOH6*fd1!w}@j33nA(Y}yO(_o9S)ZXJratwlPZx-YyDjL(!}uO^G1)U0N9~Mm)Q9d< zpZemzK=dXe@$c^jUcfm#hU3U#vL=U4EWtTD>qe}7>Qi49nn`3|lgQLHgr{)?PoN8p zcn_msoE6~>yn|x=jA{(U+^0VE=?z50-5{RAJ{03!oIxFCIt0u>9Zq8>im?x?F&KNF z`qY<&M#SAe*o<$`jD^^b_i-3Mpa%o^%L4908FE;I=TTw-=TMK182Z$wKGzE*MRcP+ z^+m1&i&2Yuti%R$JJW@|_!?ue^r=sMdIJ&hV+^gP49{UTD)1m?TfkLZ#94IWI}GG& zpZe67MS^HYed^0I1NhiX=|1(TFGhaV5fRY^A|fK1e*s#49%*Q=;9LLz N002ovPDHLkV1lNixX}Or diff --git a/bower_components/iCheck/skins/minimal/pink.css b/bower_components/iCheck/skins/minimal/pink.css deleted file mode 100644 index 77c5741862..0000000000 --- a/bower_components/iCheck/skins/minimal/pink.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Minimal skin, pink ------------------------------------ */ -.icheckbox_minimal-pink, -.iradio_minimal-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-pink { - background-position: 0 0; -} - .icheckbox_minimal-pink.hover { - background-position: -20px 0; - } - .icheckbox_minimal-pink.checked { - background-position: -40px 0; - } - .icheckbox_minimal-pink.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-pink.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-pink { - background-position: -100px 0; -} - .iradio_minimal-pink.hover { - background-position: -120px 0; - } - .iradio_minimal-pink.checked { - background-position: -140px 0; - } - .iradio_minimal-pink.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-pink.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-pink, - .iradio_minimal-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/pink.png b/bower_components/iCheck/skins/minimal/pink.png deleted file mode 100644 index 660553c07409fce4efbc979a4985aa2eb6cf9de7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmV-^1cCdBP)CninA;vEhrPvJgn`_>Eei{YLg;J!Kt%9+BJ3tC$lhc%N7=(>P{x)44}O8( zLo_N3>cxLxh79DOqOhO?ix&q%`%F{3lF&6(oodqEIt35ip{pKV-tHeYkZx~%eLWmY zVO0O=dP*QZN4)OEYHGe}wHnpe>-AFcRVtPAeVWnjcBeTUg=yHU1h3&4Jb0wOR@YH>p zx~Dia;74e}zp$YM`(PI8@E=@&j-dcMUu`Aw(OdDk)W^KYM^HM3K3Msf7y0PB$>-d^ zaTtvpLO6a?yTfI;$-}j|P0${|yt)d<3z&nJM!CfYk&h5;@evO3aX!cOR$BFOKF7S4 zCLCLQJp8df=82ETgn2Gcb`AZ`@eqy^jE00Go=vz0$JCms7^V22 z0eWBHZ-V&fCorYhxx!-KeHoVF1AJ8HWnKS@yn}?MaO5#05)L!d@W`QrRhZ7ecNG?30xIf!sp$2U zpok+hh9mI3JcLC4w*SA!By2boumO`9_)f$K&K14B5)^fW*@wd%68mrnpTT7}EW7(g zzJdot$Xz(BcMd)8V4p()Kf&7!e79o+&7#&<)PQ&(BS+zohu`J8;uXv~lyLxFX5jk^ z>d;fv;ZjlSEAkHFnZl9BkVrVp+=Vl|p0Q^K1?+*daA&&@lKW~a;v zV2#$tZkxD1)>!-Ke;*cMLa_*aQ~$=Hh{J)_M(uTVd+)OR7V$dzvlLef%i%-(`O zIKRnp6*iy@Kf?hy5C6ljhS%L&AU=qEghB5M{7#znsbJ}L+!nzQALm9NYf|+Md)+;R zRK{-mxG`zJ5|V*WzmpJ*U)1)02o_)x`tSyx!=JEb+4BzA`2s&ovp(h;eT1Y#FRgsc zwe>mmZ}3IoSV~_M?&i)R(D?8DyAikh5%}MA{|Jx>;=U;K!cZ5)5hF(93y;7Qi|9&h QIRF3v07*qoM6N<$f*O)Mf&c&j diff --git a/bower_components/iCheck/skins/minimal/pink@2x.png b/bower_components/iCheck/skins/minimal/pink@2x.png deleted file mode 100644 index 7d7b385146c633079799de2d61c49a8562e15d61..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmV-{1%CR8P)l000F@Nkl-QtdKKuQMw$J|lS!1MqHW_F{re`i{u@zNF z<7RWeS%sI7LqB$7Kc@1jPkrjkz{U;@Cx@Gi$3FF`&)r6}qrw8l(T&3x#0dVjfO}Df zEY@Q))|$7_gkCsIxIXo%F9VH;yF#>~!2*V{1N$(Jo6V>hKnF^&1#hAPJ=lX+a6M$7 z`qZZjB!KewhP(v~y;iP;hf#_yRN^|e<3miqWybL-zC;UJ(SViMjIo&e)Th2Va2pX_ z9zUWI!>GbeOiUwS0y|NKVN}`~r6K#&r#@XEvro?WAMLLQ-(o3_qZ)&lsTo8yj$^5v zRTNvF`qZZjM8sViR^u!-;38&vF5)SiwX@n{>QkTk+%FK(n}_zd5%su^T8!dO%^04y zv+A)ihCcPFPZx-YyE*vC0$TB_hk!w}T0lGI#@44k^<|)mTMl7I`+EV)a1OiRYj&X? z6{tn$Z0+Og#p!&F=xKlY`RWZs#NEsG+<{5>nn~=mhOMFd)TcgOApYcxzP8Hm{gq)Y z#<35+=PNtA3J)cyuK>;H#}(6$W)y_!)BbdUh`4zgX>{Q#e9u*MS;MA;^ew^w+OP&C zW)0dffJOfMv_D-S{^d-5zIkYW)%HA$K*QPAl7PMf97OgO0aodIJ%0GtZuv5oYXclq8^Ul|#TvzkS+YL~kH^6VaQ8_9xRa36G=w=?z50%@upj zN0_m*F`j_FUmOCC`|Z>I^6vuC*F|X)X0*RQ?YRVD#?Hq11oU+}1a$iC)BbdUh`2dn z&lLzWb~b)bKwk%r-R74;9e(??KV2aHq|LPdd{Ek7pFKAq%-GpDl7PM&*o?tj1RO&R zZusrf{&azexH*IzYETT{Q;ZsGIFyjS3s{X79K}_06fJlH7yS2We}2EhlKlT#Nc$Vc zPpC#6_QL19hQkRC5D|A@|k}p&O5* zAFX&F6JVSb;8nbhLi~&xjK$oiKK1DhM8w@Fp2Qv$;vJksJ&GLyicpUeco&7(gLN2< zy-$7W%RnRI?*C}SH)zLF?8OH-h#xSB5&UHV_n{0~tjDt`v4GQPLQf2R>QkTV1(HK_ zqdxUTt_RCeizckW7IQn(kKOnhQ?c}^Pknj=5%FURou&-WU>z#(Am&@ZWt_(;^x->< zQi4jm&>IzA|ev+e`zZsBDz3CL`3rsArl=T)dQYv P00000NkvXXu0mjf#dyTk diff --git a/bower_components/iCheck/skins/minimal/purple.css b/bower_components/iCheck/skins/minimal/purple.css deleted file mode 100644 index d509f04346..0000000000 --- a/bower_components/iCheck/skins/minimal/purple.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Minimal skin, purple ------------------------------------ */ -.icheckbox_minimal-purple, -.iradio_minimal-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-purple { - background-position: 0 0; -} - .icheckbox_minimal-purple.hover { - background-position: -20px 0; - } - .icheckbox_minimal-purple.checked { - background-position: -40px 0; - } - .icheckbox_minimal-purple.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-purple.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-purple { - background-position: -100px 0; -} - .iradio_minimal-purple.hover { - background-position: -120px 0; - } - .iradio_minimal-purple.checked { - background-position: -140px 0; - } - .iradio_minimal-purple.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-purple.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-purple, - .iradio_minimal-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/purple.png b/bower_components/iCheck/skins/minimal/purple.png deleted file mode 100644 index 48dec794dd5be9f8209e4392edacd345a1a42c24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 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 diff --git a/bower_components/iCheck/skins/minimal/red@2x.png b/bower_components/iCheck/skins/minimal/red@2x.png deleted file mode 100644 index 2eb55a65c7ea2f94073905c81396627b4967352f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1410 zcmV-|1%3L7P)l000F^Nkl@_yje*q+)6GBc$Pi>Zuyoqo7;oQ$>!6d7H}Aaf``z=q;KOqy_m^vqn+F~= zb?)4`Tv1$;TC`|U(V1r#6xl@AxAdEA(fRY|Jsn6X8w4l-ghH(_f(Tf56Z2|Y7 z0vW8sCaf`Uq5;R?FyZ>tr@k~aBJN7ijI9=s#cmwL@B{&arU&~_ip_WfmFUENyo`~M zed<%6E|37mUft*|V8**0T6h@cXvZpyU>82XC|qV3pWq8Lq6u5E0-G=tbD#RuHw|th zqRZn)tU?ym*n`nL0!Fb1)yQI%olzdLPkrjs1v2&IjQ`R8X5w2c#%a``7n3!;sKIG0 zwzFo&)~7!8=>idP*NoM;fc3b7$(}2C0vGJ8=9v1_r#|-!MD*sN{cS)!Mo@=A+^HGD za~QERH^k7VKK1DW5pg#SA6h^Ye)SO0izW+b!SvYr)Th2QG;zxz>}Y?_V+k%|FMQ2j z)T0u0Xq&2ie7%^@*NC3>r=PFhKt$ZVWY66ggRdFG9&6Yhx=(%T(*@#B&gg5a!ros6 z)?gS1;d{Qcv#YTnL4C#8fo@zk-PnQRFn!veE)WqnPa=hO+<@=7fp%-yn2^4C=s`28 zP-?2sj2_JM->3cQ0`V_r3iHiF`>V0%aReI9ww46+72^mpm}oL+$6bE=v_D-SB5s!1 z^AtkOZ}wc8fWB?W;Q!`fYz@0V?Jo_#qpyKdd44UFg1^!J?ziVfgqjQXoS%TcEe-)& z(BiL8`_mhUh@08=yoNAiXQMO$eJdRTR`~7H{vvt<(VK|gJhVT_%NRV4_NO-x5jWTE zIR|0J&c<*8`hIZ;IPJGj`zyQ)L|+%BOqkLB{@i1tQ|+ zj6Ihl%-GrZJpq0DaOyU{4BF?nPy5pa;!n!t{pW+y{<`eB9%07L#)$;<-NGjHVxl>P zTHNy6r~T;y5pmOj9BMHOzGoI{t)U|!eV4HsjW~%L<|G>NC@%Z&)BgN^g(ZdmwUG9g z#ZRcg794=jc>%MnA)BDSQ8b%K`m{e?AR_KQLJeNS=N>;Foq^Y_p>-Ptg2iR^0v`qZa45D`Dd(Pk>}6xN~=4`7Z3T*D>wp$p$( zpiukNr@k~&h<4Pcz5+9VkIj_sQ=j@$xm>PDBO)U4{+G5QBBBdKL_{?I0;Cuo&3X(# Q1ONa407*qoM6N<$f|jt+4*&oF diff --git a/bower_components/iCheck/skins/minimal/yellow.css b/bower_components/iCheck/skins/minimal/yellow.css deleted file mode 100644 index 730bb4c471..0000000000 --- a/bower_components/iCheck/skins/minimal/yellow.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Minimal skin, yellow ------------------------------------ */ -.icheckbox_minimal-yellow, -.iradio_minimal-yellow { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 18px; - height: 18px; - background: url(yellow.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_minimal-yellow { - background-position: 0 0; -} - .icheckbox_minimal-yellow.hover { - background-position: -20px 0; - } - .icheckbox_minimal-yellow.checked { - background-position: -40px 0; - } - .icheckbox_minimal-yellow.disabled { - background-position: -60px 0; - cursor: default; - } - .icheckbox_minimal-yellow.checked.disabled { - background-position: -80px 0; - } - -.iradio_minimal-yellow { - background-position: -100px 0; -} - .iradio_minimal-yellow.hover { - background-position: -120px 0; - } - .iradio_minimal-yellow.checked { - background-position: -140px 0; - } - .iradio_minimal-yellow.disabled { - background-position: -160px 0; - cursor: default; - } - .iradio_minimal-yellow.checked.disabled { - background-position: -180px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_minimal-yellow, - .iradio_minimal-yellow { - background-image: url(yellow@2x.png); - -webkit-background-size: 200px 20px; - background-size: 200px 20px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/minimal/yellow.png b/bower_components/iCheck/skins/minimal/yellow.png deleted file mode 100644 index 0999b7ecdcea2d0ef81d0810037cebbc6d143217..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1135 zcmV-#1d#iQP)83a%uQiDc#BG4mfZU$!a@=u_h>{!P;qy&;2%WTn{3vj>_HP@Bn;#rD(Dx8 zMukDW2z^dSAO~GsScn7SMPaCYW-O{m)7{lYHR-*@t&F9^} z5vaxhLO6a_yTd#zu>*D^g0&vZTTtP612fQ0Q10+S*ZhMqKEk1WoX>E*omYLF&oHl@ z5RM%_c8ORY^R$oi8Rq%=Qu{Xydvk{uKKK3&T0p9B7$#vqG{JS;S8FHz ze3h@P0g)czC~{}8UpLG`OW$+2(S;VwMt$J!3#9g0>kCBFQs=eEE|Tce_XrNK zCbN&;*WfN}!zXoKv-Gc&JBV}+NAV#s;jl9S&pb+4fr$cqx8W)rgt|JvRo42-eh(t8 z;RvKCJ|yOEhwnW`Vaua{Ef_7pcP>WoOL^-n|2>E-HXQblIEBOT)$_~In!m5|?UkGK z!3&4`&JpD!jCmAr1pX<&_aH{lDr#Ka_zXuVPa1vC3 zp9x6WcalL4i7V=<*HiF_kjz2a>og3P;jvn?7NgWYn1f_rD2BoK0=ec>U+)@dA8XfQ z`lNk?WDXL2y=$O-to86&`d5~F5cRu|SQ@Yw2O(*zCuW!73g=54S6~Zja1^HCSNIIa zEswjmLHpplFBHkXK(6Omp9)sej@u>}+Q+%o$C_MyX^*>0$Yt!dj~6EIM?wnqMRyW{ zaZGLhC*dlL!Z-K;ui-kZX6*SoWb*}5=2;(eQ+#G8p_iF_%+2ca>R;~{g+n?0qHq^? z4g-z<(SJAM_j&~K2kxHv6f5Z$g+j`t231s4<9|-I70su7lD+@{002ovPDHLkV1ns# BDx&}Z diff --git a/bower_components/iCheck/skins/minimal/yellow@2x.png b/bower_components/iCheck/skins/minimal/yellow@2x.png deleted file mode 100644 index c16f2b7dc5e975766863f9d98034c34f9eb24fe7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1406 zcmV-^1%djBP)l000F=Nkluv)V~jfx;g z+F8z!nH@A61Fae6pKWer2(lembF(=aPv3*({SG+c$Ua-01rl`yD$^IW}Mo7GnYC zSilYZfeUEIarDD!`2F%=&LmOx{pa6DlzsN^BicUu`)7@j_Ss~i5t*EssKYi?BbgxJ zL9-mMB1H%G;V{PYsZV|C%fiME4JX9}T|aq&8W11VI0FrbfF)ATfqG&M-FST z5v$ERXut_LOt?PvsV@tSh`VAmVT%RyVK)w8c!Gcd(~12k!6v+oO0?ksUdL$2KJ}?j z7f1jVLyvh2=qc^i!ow&-E2=PxUHAxNaG7CzhOe*#jo5-^*oeWH`_!kt8E_jBT^>K7 z3Vo=?9*j*QU<`XujXqS_8D$~+)TcgOAk$B3{EzlG3*TW8&Y=cfn5yYQ4bEYaoi!`A zKJ}?j7l??vCagp+*5MkadamJF^x9cXG4-iWeeM^C=*>g>TaS8-q7DPNTQi84FluM6 zkD*U}>eB@x;%){$wtzLH*DjTX?1nX&b$PkmWv;+7)pXn!wbF)m{-e9d0eqY`y! znXY|&y*Qb#5k2iszhAw9h`4*rp1W}yzUDUeSi`o^ed<%6E)aiGqpz*FsR6HQo!60-_T z=)`>gecGQc5dTt>pKl)8UyVIaBG7QQwG=>K5so5U3_`i7)Tf**7`^&=b=xd;4l3xoY@Hg7uL-xFkP}6JA1qINz*&$#vn*H@@ ze|iHEaWluBLkKf=HcAShZ@ELjGQWM=Uqo*pdK1x`hxR9vavL5;`_mhUh?^VsEJc{H zvoTx%eZM#aob%hK{pH^UqOXe*6K1r(Kkc~?VaCqJl>+E%aR_Mf+o%2M0uga@-kwVl zX6$VIUI2ajarO?s4BGFvPy5pa;!k2G{pW+y{@U%i4q?X5#;F46yM>MD!bEcxwYcTC zPy5paBI4#aQq*ELe9vsuTEp=I>AQ-R*n!g+F{kZkPvNTnKJCx%S6Gt&Ukhn}efSwQ z*o=elIj>-jHS`rw-x!)qBz@YSE)WrSpP&YB;!BU8kKTi~tYP1D?&~S-*8U>z(`US4 zB}QLc<=_4e<02MfCw$FLEVQ!^hwf9K`gDPaxEn`<1?)o3LqHC@EMPmvL-(mqeY!xx zOH6*fd1!wp@CEL}5tQL>O&N~ZS)ZdVratwlPZx-YyKU&iqxb>yFx4{;C+v()G=%O` zpZemzK=dXe@$c^@Uc@Clfm6s~swRhaEX5@|>t?Kd>Qi49nki&olgRWnh-YvNE6{;P ze1I`9&Wi8`-bFFapcaEM_o+{PdIJ%0H-M*c0L6F@7f_Gc4gs@JkMnpR#W;X97>K=3 zed^0XBjWBKY{j=|#v&ZVhd7EK(S?5eWdRSM967AT3n;OGOK3n_41MZTpX&vZBDztZ z`XbkcC8$FKR$-I5lj*=de1q{=`qZaBy@81MF^(2fj_0ukm3SDX7BGY>xQKRqkN$k^ zQ=j^>ND%F)Pkni&AD^0O-KReFC25*wG$JAr?|*44A|kp#L_|dMFA?1xzbBdu1ONa4 M07*qoM6N<$g4YDGqyPW_ diff --git a/bower_components/iCheck/skins/polaris/polaris.css b/bower_components/iCheck/skins/polaris/polaris.css deleted file mode 100644 index 2a4d519ca1..0000000000 --- a/bower_components/iCheck/skins/polaris/polaris.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Polaris skin ------------------------------------ */ -.icheckbox_polaris, -.iradio_polaris { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 29px; - height: 29px; - background: url(polaris.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_polaris { - background-position: 0 0; -} - .icheckbox_polaris.hover { - background-position: -31px 0; - } - .icheckbox_polaris.checked { - background-position: -62px 0; - } - .icheckbox_polaris.disabled { - background-position: -93px 0; - cursor: default; - } - .icheckbox_polaris.checked.disabled { - background-position: -124px 0; - } - -.iradio_polaris { - background-position: -155px 0; -} - .iradio_polaris.hover { - background-position: -186px 0; - } - .iradio_polaris.checked { - background-position: -217px 0; - } - .iradio_polaris.disabled { - background-position: -248px 0; - cursor: default; - } - .iradio_polaris.checked.disabled { - background-position: -279px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_polaris, - .iradio_polaris { - background-image: url(polaris@2x.png); - -webkit-background-size: 310px 31px; - background-size: 310px 31px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/polaris/polaris.png b/bower_components/iCheck/skins/polaris/polaris.png deleted file mode 100644 index 60c14e6a88f4cc5626d63052f95f5ed87eae5ff1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6401 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%0AGo%L^) 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 t@UE11bp6rDR_i~f>+6;|n>1RGj~WeP1d&iB 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 Yu37qTXT(DE;jD$j4(?=C4f9F*54WWf`2YX_ diff --git a/bower_components/iCheck/skins/square/grey.css b/bower_components/iCheck/skins/square/grey.css deleted file mode 100644 index 909db1ab74..0000000000 --- a/bower_components/iCheck/skins/square/grey.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Square skin, grey ------------------------------------ */ -.icheckbox_square-grey, -.iradio_square-grey { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(grey.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-grey { - background-position: 0 0; -} - .icheckbox_square-grey.hover { - background-position: -24px 0; - } - .icheckbox_square-grey.checked { - background-position: -48px 0; - } - .icheckbox_square-grey.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-grey.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-grey { - background-position: -120px 0; -} - .iradio_square-grey.hover { - background-position: -144px 0; - } - .iradio_square-grey.checked { - background-position: -168px 0; - } - .iradio_square-grey.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-grey.checked.disabled { - background-position: -216px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_square-grey, - .iradio_square-grey { - background-image: url(grey@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/square/grey.png b/bower_components/iCheck/skins/square/grey.png deleted file mode 100644 index f69375854d3c5a283121d10352be8a1729a16cc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2186 zcmV;52zB>~P)Z%D!>FuvY(_oi& z45m$JV~n1H4;m)Kf|MM~@vBoy6qFJkuXLd|w$JKkKYFKlfr& z20jOzzyX3_0Q7=((2P0;BFwQwh%rBz#;wgjqkh)FCnUL2W7gd0e<)ZFYh%aeMeqtZ z4t@igKo7VFxIifzqZ7OVegOg!Tf+Uh5*GR&A{)V8G-Ak)Mhe8(xN-U889!@-o{*KG z0=U5i;01n=39>;x8*e9GUyp4AYCS5kCERb9u+U#X9t2g9{FGUrL_Z|dPshYp^fYYV z2e3H<-sh^-r3gkqEBQ0{F`MPzU=z3|k)!#`fbj7NP!GIe9}r7HHJy7wHR`$v_15*X z_KH6$xtc%P_&Gm#y*v#%z#-sMd_i!VTmf}##%HnbaWq-KM2_a49mj`Z6>%;d!gX;SE9Q|>I ze&C8QKiSwk0~*13;EQ2?2Ecjl^9&t&p`XngAG0-ox`9&=9yXums`9f0P6e=!9HQf1 zphok%z!^5?*%*$n&hfQpxbJB+D*ftVGyRFjr8j;aHg5y}0rd&YPd)eD23M9K3YtG# z5>K|~Pd9Mtu?zeI>@)DUj(uFkcIo(+^L%j!@W*kQ%f~t8YFwuYm(bU39z(@_`omL#YA%3H+@C`^XRIcoi$I<`+Ju-#F^{ z`Pb%3&|p+dM+Kc)=r<|!r+fpiu395CKm3st6)ljd7}tW5$}cQlz9%PdX0%WCYVZ#D z$b_$^y6CD_{5jxH;4cQgwmVBlj*j1~`l|j#pb7X)m>(Zqixj`z#QNIlOx*^4^wGy; z{f3R=aNI8sJ^ZjtwahCjUYVO$P?eF9F(W%Czch+qEjTacrO{Y}~v>5NT?>D1UqZuQJ(^k&&5+ zBCc}WpHrX;=DHqOo|ixCaX|usJD0mZ^!z=FZYj7Z=A{uVQTzh_Y1mAM>NmN*s(%jX z5%b~&PQ`C_eVs|&z^kjiE*m#(kr%$dQ|8Yv5-lqpDVHa& z30K&K6)57GqJ&Fs zH@Uv5(*gWqQs{ChezWWANa_Z5H#N%O;DF4SF+-kv{sk#6DUoGg{E|HR&26FLwzOQ9 zw~y6IFc_4{nEu||E#u=sKMtYpb1f*|kvDVJ0%xJCtYB8*CP9XW0_~mcm;Zp*1SNWg z!E~`M!`x1{%5QOf$1MIq)0h?YP3i{j>FJSQ|LT|0*Vij{yIr3B?(lG~(0i?;wRUW5^uJhDriF?-Jk;6gxqNCozE7Vv@Od#WOF*OI7qCo>XB80DZ+?C0 zrwSBU_yKp@g8F)syMal6Utg%m-Q8VsrL9$t9QmD$j*Q4uN#K(^zN?;=+R@RG8=tPc zo$Z%S22t@iHRr)vF)!=Ddx~E`wP7^$qt=lO&JdKPU(G zzbR8SDD0iKOCS8!;8!!9;HRL=;KdO0vDpra760C_-!`93@bbX*bPUj``g2UGuTSy2 z!A?*Qds(V6Tka2j5a(97oCCC0Ohu3n&p{!m^A_5_;O9`?@Ch13G>;s01g$ zeQ`7|UMr`-S3q+_ztQOX8$dBwX<&X<@=&}%$L|&6xvBZn4V*%7Mc4{n0xu`fysxnN zpU}B5Uh{tpwkW^WiqyQ?`SfORUEu$$3;X$R^e3F_dgJHC@~6NmP?5m=RIvF^(xpc8 z4@%-0(EO>{!09ITaE06fehyr*Ttf`-TKP8jg+n(UZ58GA9QY%63KW5RKo%cA#plk2 z?ekSMs;-~URni}Cnxl=Mry57V60jCz$1p$HU@iAKLWf>7|ILI}Ui$Cm9XTcvI5!eg zlWyXxXvh`3%Z3}g%N4Lm`960sSI}>PH^2%Ikm%{;Yj=Y^U^CH+kN*A2%B$DJSFvhq z<9`|CO62s%dP^P7Pao#zFwbSb$9eGpFYwdp08UWKd8!A8W4xtKAE2MN)QOxS5YsJn zCJY?=OA4eWS>}d^)B7;CL%hAqb8Of`AZ+9&Hg+-SllT$%muZuAL8~Y&VGoFO}K=YSI@Vle=KfNoZ z(Km#moI0y4-w=26T3rk0-uf}{u9SCm{?W)r>p$h{n-t{b`}%yZ>$)?~Ior!f?Uxb~5|VLruyqv@ z68^Ds)|U|5Sw9rNlob*Jo_4ggc8^8;ECxhg_)^>_0Ier0W5n`=l2#;=FqKZb8bwel zz2{Hrn$aSpvb4k^&5DP-h9>l0lofkb{x#^NZefO%6CEwQr&gUDZKin+NR!YIOWG|W zK|e}&L|n7FNcGyTiEC%j=P41x9VXjNUz_e@ul`~;*Rwd=#5lNS~zI$8~y?G8*2?i`NHfh`#z08Qntc%TbEZR=6GOk;2fwaDN2GG&>W7Y&U3w_W~aUb^mX+1&3-Nw%Z7|lBRj=X)a5UwQyi06xlNOH zKKY#u8jTK;-5OdplkHO}l;pNd4X$dGYX23TI*0<0C zn@1OGcV1bfS8pPZf15Q@R#FG&@*T7RlQ+O3pj^Bm%(le;3R@!W1jug7sGm!GBCv@j zq`;Eg*^w(RDc}-PZ5UCVKM36NtDZ-lHD6#Jh%uWPrkUq@E3WF|dP&0I8W{&*1R$@c z`|&_^wx66=KGAIi;@1dRhaDDJ$z>}`i|ttxS=)~#d-xj?%u>CD1l_}wk8!~^zy#q{ zhwJC~{I*mIhORaY4I#MITGtpFaqCUkO!`UyLJql@qp_I`on@Z*2w6=nUAcq%uD&9K zC7+L86^EZdPcHJ-LKmUgASx^znTxwcqw2HckfZ`ApDbNm(y; zOgiguTY167bdQ*n%0b7K5o**ml>dCjW&`pa2a>_C$S7L<0e2bqJR7TK3gx(-N!U8DcuPRb`%LaY(algS&(LZFq zb`!60Z(4){hx)Gq@@y-A<+-3k)^N}(vCn6endON9UJ4lPBay&exTEsUj85ZfSJ+q- zC$E!5IreB_V`XUo`^0JOHOnyk)yQUfpU&=EoM9l`Lk%rG>z9V6TPm*DgPQd-R>{&F z?-=6b@(%{ihh`Z0cbPmz_ZczTKRmdsVTWh>8}-5`g+1;JQq@$zuBH<^C>8TCebI@L%ABXfJ1OE0 zi;q*Btf%cgf_~F7zAXD5g2r6p$P+v$-NcoiPv4N=H-aqrg(P3PMfk}wc0}U#NMK~c z3OSmmgLX@lp?2_O*^|R)^=22ng4EOwIfQhNp+rZtAra)S9q#U8?TN=1uCO=Jojj854@y zCBOa;@>Fl7zFQNx5(AF+t~~LnB(Zlc@$ub@=P%7dHYT=3H8lW-SAs@!KDFs}A}&5p zBkFwnwf=T5K`8E}62GMy8HDCK)3z!gYWB9~i@WVxIB@hQ@-bdqn6UBSW79M9pO9+P zSqF@~#P;md81hp#3;z7OR;zLlc#KA)r61DbIlhufDs&K`-iWmBVS$jP-XcD`*z)YX zlT}@DwSXnKE;q_&Cy;#((yo}#K_}4vEGgNLh4@cuksQ{TNbqC+r>AorOvfh6JtaP;1{p*K zwv{N}HLbeL<3X?U?q?*61k1W;X>AnvKIT+XapHVbE|tdPuCK3EWi!g_>)l$?yLQzv zqsw+%f5Xi@5G$81JZ9C<)Z}9p@ydUopwsz5C*%C6;+(NTDUtR!W*Rk9%j7ghpPg%T z{axArkE1~z*PMJoN=VX8CSjsd&;<+}Vd54gfRi)#ib#v8OOAN3_|$XytP9 z^3WubD$H8-F1IxS%Ni@k62fdcj+>aAVd-D?eqGk*4^skzOx#bRP-CA5UrX-U>@5APen~rUiM4%fdh^v^<^9Mmvgc70UI9^M=b7()`Xt&e`+7?Fn-y{l&#QHFw$br- zx#Pb)`~*D{ozVB~6moK|zeA@XDCz8SH(BTdwIgKy*^nVFf{ijX|<^6WlO&poJNS-|Dd(NVg~qeL%g_FcBRgkAB>3;Dst3??80TZ!lc!B^{jOBf-=l?u z$R+vYOs#2m&kG+o+!9@cO@!O*+@tvlKUzqyjqj}A>NypVjXZ!KF$wD=i&gAVv04M_PG4MoUSC#L z)3$6Yyt%wzg`u~h<=E^MQ@H;QHjUW9Ab)FoNIo%IaANKsCd8W2WRwi36Hfn0CnCNd z+`cE(TkySTSSMRi_gf+J_EMA z#vS`TQwAY!W_84lPELk3w=LHvR~jT_8z{|JAQGSaS_2_T9IjFL+}c%188O|ysf_}LRBt*Mh03$M8xIOu zcvxTQqR`NA{EK-)_eGo6E;q)J1|I*-=AheWmF_xv)bRPhhJ>K97ee68B~1WfUrjzh=9zR!%fc<`S(Ph%Y5wZMp8F|e%^UR zmL4sT{+Ae5aK55%PuCtl(dIpsJqxD+)*iW55Qu$$YW~wGOtgAXweMgXYBux9_lb;M!3cQoZ%y>xr$|&HEeisH`*6R?{ zLzqmY9I(5l1{+yq^bnuPQ~aCCVd?|Did?2jDzRiI?}^ec=?F&C@h32o@t1PijcYrV zbPQ$&*lB$h;R&=07MvUB;^h}b=#bS7Z_g&KA~x3o)PkhAJ(2)&W*Oc==%a5o7ns+M ziB_n;**}O^ZV}S9)$N1uIj$sw`#a@EU->PRx!U>hR2Uwqeu>09A5WF&raq1LKc$Ri zN>959qZMk^xKTad@OE1#%s=@1cf1>JC!M4pch&ehf;4yb3tobJ`qS*t)n!P2Bq>m9 z!Cd6^Qnxz(^lO`gm}gtp))7)*{;ezHf*6M*cy!4x8n^INx(B_!gTWfgr6rC(IGl@0cm!v|KDhO4_QNQl+@D+PF)UeE+oWa^T(d88d`QB|d;WZB zMqIOTKb}8>;ZGF{4CJbnr7I)^%Gy`L;uQ*qP}~sp_@Nk67jrUn;CyToWR5A{2r+={t@AA4NccJSc5ct_1Dy5Fy!zRYq+5LQros8c$Lcb&Pw|Vk=gLVl zszn@Uc!kC#Qm9mshjE8Cm1@T^06K6P|9rS#Aa_gBpMX_K&$`lbMm#)uDqR@ zRO~WV9-LmeHGj(gApT7;shx71-(2_fC2jhjN(Xhw>h{61oSrk|&|h~w4Drz99C zy8EodQ5I@o@@SJ?3hZ9(gqGN9M$m*HC-ggHTd(~q{z2%&uPRj=m%ZmIat4mSLY1oY zA<^I54c2?Nf;h@~UB3E%W=U$N|DQcYy~W%&<$v!4dk{{WPIVP`y>>oVgdFXhZEN7Z G$^QeNB@0pj diff --git a/bower_components/iCheck/skins/square/orange.css b/bower_components/iCheck/skins/square/orange.css deleted file mode 100644 index c6e5892d68..0000000000 --- a/bower_components/iCheck/skins/square/orange.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Square skin, orange ------------------------------------ */ -.icheckbox_square-orange, -.iradio_square-orange { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(orange.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-orange { - background-position: 0 0; -} - .icheckbox_square-orange.hover { - background-position: -24px 0; - } - .icheckbox_square-orange.checked { - background-position: -48px 0; - } - .icheckbox_square-orange.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-orange.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-orange { - background-position: -120px 0; -} - .iradio_square-orange.hover { - background-position: -144px 0; - } - .iradio_square-orange.checked { - background-position: -168px 0; - } - .iradio_square-orange.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-orange.checked.disabled { - background-position: -216px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_square-orange, - .iradio_square-orange { - background-image: url(orange@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/square/orange.png b/bower_components/iCheck/skins/square/orange.png deleted file mode 100644 index 84608500a670b9460092d68cbf7b4dae77c7d303..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2181 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 diff --git a/bower_components/iCheck/skins/square/pink.css b/bower_components/iCheck/skins/square/pink.css deleted file mode 100644 index bdab9c7916..0000000000 --- a/bower_components/iCheck/skins/square/pink.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Square skin, pink ------------------------------------ */ -.icheckbox_square-pink, -.iradio_square-pink { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(pink.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-pink { - background-position: 0 0; -} - .icheckbox_square-pink.hover { - background-position: -24px 0; - } - .icheckbox_square-pink.checked { - background-position: -48px 0; - } - .icheckbox_square-pink.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-pink.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-pink { - background-position: -120px 0; -} - .iradio_square-pink.hover { - background-position: -144px 0; - } - .iradio_square-pink.checked { - background-position: -168px 0; - } - .iradio_square-pink.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-pink.checked.disabled { - background-position: -216px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_square-pink, - .iradio_square-pink { - background-image: url(pink@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/square/pink.png b/bower_components/iCheck/skins/square/pink.png deleted file mode 100644 index 9c8b4e2b6ce76e1638ab81688b3e7f2cafd901c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2189 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 diff --git a/bower_components/iCheck/skins/square/purple.css b/bower_components/iCheck/skins/square/purple.css deleted file mode 100644 index 4c291b412e..0000000000 --- a/bower_components/iCheck/skins/square/purple.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Square skin, purple ------------------------------------ */ -.icheckbox_square-purple, -.iradio_square-purple { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(purple.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square-purple { - background-position: 0 0; -} - .icheckbox_square-purple.hover { - background-position: -24px 0; - } - .icheckbox_square-purple.checked { - background-position: -48px 0; - } - .icheckbox_square-purple.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square-purple.checked.disabled { - background-position: -96px 0; - } - -.iradio_square-purple { - background-position: -120px 0; -} - .iradio_square-purple.hover { - background-position: -144px 0; - } - .iradio_square-purple.checked { - background-position: -168px 0; - } - .iradio_square-purple.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square-purple.checked.disabled { - background-position: -216px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_square-purple, - .iradio_square-purple { - background-image: url(purple@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/square/purple.png b/bower_components/iCheck/skins/square/purple.png deleted file mode 100644 index 6bfc16a38ce8d5b2246f25758f2fba8134f6243f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2188 zcmV;72y^#|P)f6B?xpp#8TrQ`SZTl0YbNE?l}`7LwR;Fu9oQsr4LWed6TUKIe$U z_9OjtEPT#SAK&ZO-?5!@9L*OR#>9pct$4;E$j@FnNWbMcxV6Rq&Ih|f{+5gXsj_K) zs^AvHF2Amq|F3LpD#3TaGB6hmgImB2&Vm!559p@)z{jGKi2Rsm`Xh(0E7Rj=o%QBt z1~x_DtH24;K@j*rFK7cTsAFK9IhJu^&QDUgb(m<>M-6;T;wx2F&5iz>g8i^IY1sS% zybg|ocR>@l4Wm06A>D?byE_+XmEnL?TPLKTX0ye=d0flo|OUvp=!ENvQ9Rv9IV! z*t`p|IRpO5RqLiA7zS6#N8k@^mQTP&&?VzX^A`c(;}f7Bc*5QwR)9)6_kl{(btCHC zWzf8e-;gZLZ!~_+5B8U>pdC~Lui^`W9&!!Tu^E4iV~?ZB`i;gz|Cgh9Gb{s3_53N4 zC`mT2i!Zppf}Lz$qcezGU>A?6190d@^A~aZJg8s;-vC2k0JMS=e6BqF7&NG^pU=@B zb&8C}kNL^K=2dVBoCn?r=En!l^O#rZ&50@!#c}-&+yn&XjJ;u(`Nc(k4ta-JZ;_#J_YqL%uhX!-3-@MK@>E9 zhQyu>&7W-G#A65e80Z|&ff+pa#V1B%GEmiz!7S=b7&ctotvhuG> z#pY6(l`&JET)s#qTju8%6lZ1UmZhYmd?_O{r_kuN49<&nIR`cjVh|2Cv+@?*5m7ZUwj~*5wjduJ{G~+q9Vu)o*cqRsURY zTda!*I2FIu^>xN|1Fzk<3PpTQcK&9I^5QFH;&6yuYIMtA-l>%b55^|o z3cIKTMO>S|=!qX@X3d@_%-s3;Pvzt~%LTa~xOcU)t@YFxVxV&ZkBu)-?Xkxqx2S%L z>#I7`fnO{NUFnM7>iVX~bpv1gv`u{dgOWaLhHU@Ui&D76B`en~k*z;k7b@=Mi=A@x z&mYO?Xiz3%`g?m?A3O;9aSAolwV+^I_Ut(eoO!OI+&Ot01sS>@XzOUZ@;B@g6ypqm z>0)1oxSej7-{$&`+WZGiqjuCct{b@f)?GRD`x@!(@k!c@Y4Y>E-> zySdG?$StbhhWdJRS4{J$E4tr?`ugLyfytfQeRAk`HR9>+m8sKGL&d$?a$Sxb`cOtk zf-=!F==b$@wO>6pIy!RK;c%peiaT__qr-ir2DJ@Fq52GbO{~jua7pnCcuLG?4G`6D zaeY;P56HFg4X($A`g-EKfl2ROU#Q48Iz7_b+$HZGJT1e+BQjYMxHstSbhjQG85!>W zV&&~W;ibttA57vuy*#OQdegT!H&2*@Ki|ecU+reV7E``9Y_${q(xIb0mJOjRa z^4724m&qCwcJQ;y7mk?xX{H0b1#X(W7~(6~ybKBy|Gu!lZLW>+^1yOBd~~Y*OpEI4 zRs79hJE#XkcVm>?Qg7abM59OEY3pI*M z1mB?JOre-d&GS1X#QjaClFi_UI4qmo*0_< zbvFMdoeSeN|9`>vw7=Ghpm{fN-wNGfh&@0hynJMAMjW>bmP`mQEtzI(_jn82h+e*KHkFT z&W0WHEE-kU&*w_%k2WnvqhL8$4>BT{pA4{`#~h_YFPi^OOe-(_kMoWkV=;U- z5=)b8;!ZT=)4a<@Gx&fjV3YED?lP{RFM$K#X%GT{fGin5{gK{Mhx5~i`FW3@Wq-?t;>POsk&Ov`OsO3%V zdZUrE(f6Z~wefElXZ**b9X}hT4z+9KRX;1)u;~=|frpL#Hs>>%g#1AB7mnj^Hu8UQ zS4y)l2t_%0R$0Cv9_O{XHqO2MW8hsWAM5<1k- diff --git a/bower_components/iCheck/skins/square/purple@2x.png b/bower_components/iCheck/skins/square/purple@2x.png deleted file mode 100644 index 6d3c8b1af31a6ec5303ac592f5dcdddb5e2034d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4501 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 QnE(I)07*qoM6N<$g2I7inE(I) diff --git a/bower_components/iCheck/skins/square/red@2x.png b/bower_components/iCheck/skins/square/red@2x.png deleted file mode 100644 index c05700a574071f9ccf8a6110d907440c9dc5d8d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4490 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 diff --git a/bower_components/iCheck/skins/square/square.css b/bower_components/iCheck/skins/square/square.css deleted file mode 100644 index fb628f9135..0000000000 --- a/bower_components/iCheck/skins/square/square.css +++ /dev/null @@ -1,59 +0,0 @@ -/* iCheck plugin Square skin, black ------------------------------------ */ -.icheckbox_square, -.iradio_square { - display: inline-block; - *display: inline; - vertical-align: middle; - margin: 0; - padding: 0; - width: 22px; - height: 22px; - background: url(square.png) no-repeat; - border: none; - cursor: pointer; -} - -.icheckbox_square { - background-position: 0 0; -} - .icheckbox_square.hover { - background-position: -24px 0; - } - .icheckbox_square.checked { - background-position: -48px 0; - } - .icheckbox_square.disabled { - background-position: -72px 0; - cursor: default; - } - .icheckbox_square.checked.disabled { - background-position: -96px 0; - } - -.iradio_square { - background-position: -120px 0; -} - .iradio_square.hover { - background-position: -144px 0; - } - .iradio_square.checked { - background-position: -168px 0; - } - .iradio_square.disabled { - background-position: -192px 0; - cursor: default; - } - .iradio_square.checked.disabled { - background-position: -216px 0; - } - -/* HiDPI support */ -@media (-o-min-device-pixel-ratio: 5/4), (-webkit-min-device-pixel-ratio: 1.25), (min-resolution: 120dpi) { - .icheckbox_square, - .iradio_square { - background-image: url(square@2x.png); - -webkit-background-size: 240px 24px; - background-size: 240px 24px; - } -} \ No newline at end of file diff --git a/bower_components/iCheck/skins/square/square.png b/bower_components/iCheck/skins/square/square.png deleted file mode 100644 index 2a3c88116c4d39ea9b131b07201a3ca724d097e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2175 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 JPDHLkV1k9ADRlq< diff --git a/bower_components/iCheck/skins/square/yellow@2x.png b/bower_components/iCheck/skins/square/yellow@2x.png deleted file mode 100644 index 6b8e328e1abe901ffa1b472461c858516024a975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4385 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 M0<$r%F};)UA9(ifzyJUM diff --git a/bower_components/jquery-slimscroll/.bower.json b/bower_components/jquery-slimscroll/.bower.json deleted file mode 100644 index 94e33a043f..0000000000 --- a/bower_components/jquery-slimscroll/.bower.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "jquery-slimscroll", - "version": "1.3.8", - "description": "slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.", - "keywords": [ - "scrollbar", - "scroll", - "slimscroll", - "scrollable", - "scrolling", - "scroller", - "ui", - "jquery-plugin", - "ecosystem:jquery" - ], - "homepage": "http://rocha.la/jQuery-slimScroll/", - "authors": [ - { - "name": "Piotr Rochala", - "homepage": "http://rocha.la/" - } - ], - "repository": { - "type": "git", - "url": "https://github.com/rochal/jQuery-slimScroll.git" - }, - "main": [ - "jquery.slimscroll.js", - "jquery.slimscroll.min.js" - ], - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - }, - { - "type": "GPL", - "url": "http://www.opensource.org/licenses/gpl-license.php" - } - ], - "moduleType": [], - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ], - "_release": "1.3.8", - "_resolution": { - "type": "version", - "tag": "v1.3.8", - "commit": "cf39d364e777ef95574c30c42d3b85cb2bf325d3" - }, - "_source": "https://github.com/rochal/jQuery-slimScroll.git", - "_target": "^1.3.8", - "_originalSource": "slimscroll", - "_direct": true -} \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/README.md b/bower_components/jquery-slimscroll/README.md deleted file mode 100644 index bc9034769e..0000000000 --- a/bower_components/jquery-slimscroll/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# What is slimScroll? - -slimScroll is a small jQuery plugin that transforms any div into a scrollable area with a nice scrollbar - similar to the one Facebook and Google started using in their products recently. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over. User can drag the scrollbar or use mouse-wheel to change the scroll value. - -Demo and deocumentation available here: [jQuery slimScroll docs](http://rocha.la/jQuery-slimScroll) - -Copyright (c) 2011 Piotr Rochala (http://rocha.la) -Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/bower.json b/bower_components/jquery-slimscroll/bower.json deleted file mode 100644 index 831eb3245e..0000000000 --- a/bower_components/jquery-slimscroll/bower.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "jquery-slimscroll", - "version": "1.3.8", - "description": "slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.", - "keywords": [ - "scrollbar", - "scroll", - "slimscroll", - "scrollable", - "scrolling", - "scroller", - "ui", - "jquery-plugin", - "ecosystem:jquery" - ], - "homepage": "http://rocha.la/jQuery-slimScroll/", - "authors": [ - { "name": "Piotr Rochala", "homepage": "http://rocha.la/" } - ], - "repository": { - "type": "git", - "url": "https://github.com/rochal/jQuery-slimScroll.git" - }, - "main": [ - "jquery.slimscroll.js", - "jquery.slimscroll.min.js" - ], - "licenses" : [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/mit-license.php" - }, - { - "type": "GPL", - "url": "http://www.opensource.org/licenses/gpl-license.php" - } - ], - "moduleType": [], - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/bower_components/jquery-slimscroll/examples/allow-page-scroll.html b/bower_components/jquery-slimscroll/examples/allow-page-scroll.html deleted file mode 100644 index b594de3217..0000000000 --- a/bower_components/jquery-slimscroll/examples/allow-page-scroll.html +++ /dev/null @@ -1,94 +0,0 @@ - - - -jquery.slimscroll - allow page scroll - - - - - - - - -
    Fork me on GitHub -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    - -
    -  $('#testDiv').slimScroll();
    -
    - -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Hello!Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    - -
    -  $('#testDiv2').slimScroll({
    -      allowPageScroll: true
    -  });
    -
    - -
    ...adding height...
    -
    - - - - - - - \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/examples/chaining.html b/bower_components/jquery-slimscroll/examples/chaining.html deleted file mode 100644 index fead426c3a..0000000000 --- a/bower_components/jquery-slimscroll/examples/chaining.html +++ /dev/null @@ -1,80 +0,0 @@ - - - -jquery.slimscroll - chaining - - - - - - - - -Fork me on GitHub -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    - -
    -$('#testDiv').slimscroll({
    -  height: '250px'
    -}).parent().css({
    -  background: '#237FAD',
    -  border: '2px dashed #184055'
    -});
    -
    - - -
    - - - - - - - \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/examples/disable-fade-out.html b/bower_components/jquery-slimscroll/examples/disable-fade-out.html deleted file mode 100644 index 7c8e6fa42a..0000000000 --- a/bower_components/jquery-slimscroll/examples/disable-fade-out.html +++ /dev/null @@ -1,94 +0,0 @@ - - - -jquery.slimscroll - disable fade out - - - - - - - - - -Fork me on GitHub -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    - -
    -$('#testDiv').slimscroll();
    -
    - -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    - -
    -$('#testDiv2').slimscroll({
    -  disableFadeOut: true
    -});
    -
    - -
    - - - - - - - \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/examples/dynamic-content.html b/bower_components/jquery-slimscroll/examples/dynamic-content.html deleted file mode 100644 index 1ac5e5612c..0000000000 --- a/bower_components/jquery-slimscroll/examples/dynamic-content.html +++ /dev/null @@ -1,81 +0,0 @@ - - - -jquery.slimscroll - dynamic content - - - - - - - - - -Fork me on GitHub -
    - - -
    -
    - -
    -  // update content every second
    -  setInterval(function(){
    -    var el = $('<div></div>').html('#' + $('#testDiv').children().length)
    -            .css({ padding: '3px', border: '1px solid #ccc', margin: '5px' });
    -    $('#testDiv').append(el);
    -
    -    // update slimscroll every time content changes
    -    $('#testDiv').slimscroll();
    -  }, 1000);
    -
    -  $('#testDiv').slimscroll({
    -    alwaysVisible: true,
    -    height: 150
    -  });
    -  
    - - - -
    - - - - - - - \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/examples/height-width.html b/bower_components/jquery-slimscroll/examples/height-width.html deleted file mode 100644 index 4b006b0bcb..0000000000 --- a/bower_components/jquery-slimscroll/examples/height-width.html +++ /dev/null @@ -1,125 +0,0 @@ - - - -jquery.slimscroll - height / width - - - - - - - - - -Fork me on GitHub -
    -
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    -
    - -
    -$('#testDiv').slimscroll({
    -  height: 'auto'
    -});
    -
    - -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    - -
    -$('#testDiv2').slimscroll({
    -  height: '100px',
    -  width: '300px'
    -});
    -
    - -
    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -

    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.

    -

    Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

    -

    Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.

    -

    Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.

    -

    Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.

    -
    - -
    -$('#testDiv3').slimscroll();
    -
    - -
    - - - - - - - \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/examples/index.html b/bower_components/jquery-slimscroll/examples/index.html deleted file mode 100644 index 890dd716e1..0000000000 --- a/bower_components/jquery-slimscroll/examples/index.html +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/bower_components/jquery-slimscroll/examples/libs/prettify/prettify.css b/bower_components/jquery-slimscroll/examples/libs/prettify/prettify.css deleted file mode 100644 index 400fd74284..0000000000 --- a/bower_components/jquery-slimscroll/examples/libs/prettify/prettify.css +++ /dev/null @@ -1,52 +0,0 @@ -/* Pretty printing styles. Used with prettify.js. */ - -/* SPAN elements with the classes below are added by prettyprint. */ -.pln { color: #000 } /* plain text */ - -@media screen { - .str { color: #080 } /* string content */ - .kwd { color: #008 } /* a keyword */ - .com { color: #800 } /* a comment */ - .typ { color: #606 } /* a type name */ - .lit { color: #066 } /* a literal value */ - /* punctuation, lisp open bracket, lisp close bracket */ - .pun, .opn, .clo { color: #660 } - .tag { color: #008 } /* a markup tag name */ - .atn { color: #606 } /* a markup attribute name */ - .atv { color: #080 } /* a markup attribute value */ - .dec, .var { color: #606 } /* a declaration; a variable name */ - .fun { color: red } /* a function name */ -} - -/* Use higher contrast and text-weight for printable form. */ -@media print, projection { - .str { color: #060 } - .kwd { color: #006; font-weight: bold } - .com { color: #600; font-style: italic } - .typ { color: #404; font-weight: bold } - .lit { color: #044 } - .pun, .opn, .clo { color: #440 } - .tag { color: #006; font-weight: bold } - .atn { color: #404 } - .atv { color: #060 } -} - -/* Put a border around prettyprinted code snippets. */ -pre.prettyprint { padding: 2px; border: 1px solid #888 } - -/* Specify class=linenums on a pre to get line numbering */ -ol.linenums { margin-top: 0; margin-bottom: 0 } /* IE indents via margin-left */ -li.L0, -li.L1, -li.L2, -li.L3, -li.L5, -li.L6, -li.L7, -li.L8 { list-style-type: none } -/* Alternate shading for lines */ -li.L1, -li.L3, -li.L5, -li.L7, -li.L9 { background: #eee } diff --git a/bower_components/jquery-slimscroll/examples/libs/prettify/prettify.js b/bower_components/jquery-slimscroll/examples/libs/prettify/prettify.js deleted file mode 100644 index 037c26da4a..0000000000 --- a/bower_components/jquery-slimscroll/examples/libs/prettify/prettify.js +++ /dev/null @@ -1,1477 +0,0 @@ -// Copyright (C) 2006 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - - -/** - * @fileoverview - * some functions for browser-side pretty printing of code contained in html. - * - *

    - * For a fairly comprehensive set of languages see the - * README - * file that came with this source. At a minimum, the lexer should work on a - * number of languages including C and friends, Java, Python, Bash, SQL, HTML, - * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk - * and a subset of Perl, but, because of commenting conventions, doesn't work on - * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. - *

    - * Usage:

      - *
    1. include this source file in an html page via - * {@code } - *
    2. define style rules. See the example page for examples. - *
    3. mark the {@code
      } and {@code } tags in your source with
      - *    {@code class=prettyprint.}
      - *    You can also use the (html deprecated) {@code } tag, but the pretty
      - *    printer needs to do more substantial DOM manipulations to support that, so
      - *    some css styles may not be preserved.
      - * </ol>
      - * That's it.  I wanted to keep the API as simple as possible, so there's no
      - * need to specify which language the code is in, but if you wish, you can add
      - * another class to the {@code <pre>} or {@code <code>} element to specify the
      - * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
      - * starts with "lang-" followed by a file extension, specifies the file type.
      - * See the "lang-*.js" files in this directory for code that implements
      - * per-language file handlers.
      - * <p>
      - * Change log:<br>
      - * cbeust, 2006/08/22
      - * <blockquote>
      - *   Java annotations (start with "@") are now captured as literals ("lit")
      - * </blockquote>
      - * @requires console
      - */
      -
      -// JSLint declarations
      -/*global console, document, navigator, setTimeout, window */
      -
      -/**
      - * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
      - * UI events.
      - * If set to {@code false}, {@code prettyPrint()} is synchronous.
      - */
      -window['PR_SHOULD_USE_CONTINUATION'] = true;
      -
      -(function () {
      -  // Keyword lists for various languages.
      -  // We use things that coerce to strings to make them compact when minified
      -  // and to defeat aggressive optimizers that fold large string constants.
      -  var FLOW_CONTROL_KEYWORDS = ["break,continue,do,else,for,if,return,while"];
      -  var C_KEYWORDS = [FLOW_CONTROL_KEYWORDS,"auto,case,char,const,default," + 
      -      "double,enum,extern,float,goto,int,long,register,short,signed,sizeof," +
      -      "static,struct,switch,typedef,union,unsigned,void,volatile"];
      -  var COMMON_KEYWORDS = [C_KEYWORDS,"catch,class,delete,false,import," +
      -      "new,operator,private,protected,public,this,throw,true,try,typeof"];
      -  var CPP_KEYWORDS = [COMMON_KEYWORDS,"alignof,align_union,asm,axiom,bool," +
      -      "concept,concept_map,const_cast,constexpr,decltype," +
      -      "dynamic_cast,explicit,export,friend,inline,late_check," +
      -      "mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast," +
      -      "template,typeid,typename,using,virtual,where"];
      -  var JAVA_KEYWORDS = [COMMON_KEYWORDS,
      -      "abstract,boolean,byte,extends,final,finally,implements,import," +
      -      "instanceof,null,native,package,strictfp,super,synchronized,throws," +
      -      "transient"];
      -  var CSHARP_KEYWORDS = [JAVA_KEYWORDS,
      -      "as,base,by,checked,decimal,delegate,descending,dynamic,event," +
      -      "fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock," +
      -      "object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed," +
      -      "stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];
      -  var COFFEE_KEYWORDS = "all,and,by,catch,class,else,extends,false,finally," +
      -      "for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then," +
      -      "true,try,unless,until,when,while,yes";
      -  var JSCRIPT_KEYWORDS = [COMMON_KEYWORDS,
      -      "debugger,eval,export,function,get,null,set,undefined,var,with," +
      -      "Infinity,NaN"];
      -  var PERL_KEYWORDS = "caller,delete,die,do,dump,elsif,eval,exit,foreach,for," +
      -      "goto,if,import,last,local,my,next,no,our,print,package,redo,require," +
      -      "sub,undef,unless,until,use,wantarray,while,BEGIN,END";
      -  var PYTHON_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "and,as,assert,class,def,del," +
      -      "elif,except,exec,finally,from,global,import,in,is,lambda," +
      -      "nonlocal,not,or,pass,print,raise,try,with,yield," +
      -      "False,True,None"];
      -  var RUBY_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "alias,and,begin,case,class," +
      -      "def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo," +
      -      "rescue,retry,self,super,then,true,undef,unless,until,when,yield," +
      -      "BEGIN,END"];
      -  var SH_KEYWORDS = [FLOW_CONTROL_KEYWORDS, "case,done,elif,esac,eval,fi," +
      -      "function,in,local,set,then,until"];
      -  var ALL_KEYWORDS = [
      -      CPP_KEYWORDS, CSHARP_KEYWORDS, JSCRIPT_KEYWORDS, PERL_KEYWORDS +
      -      PYTHON_KEYWORDS, RUBY_KEYWORDS, SH_KEYWORDS];
      -  var C_TYPES = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;
      -
      -  // token style names.  correspond to css classes
      -  /**
      -   * token style for a string literal
      -   * @const
      -   */
      -  var PR_STRING = 'str';
      -  /**
      -   * token style for a keyword
      -   * @const
      -   */
      -  var PR_KEYWORD = 'kwd';
      -  /**
      -   * token style for a comment
      -   * @const
      -   */
      -  var PR_COMMENT = 'com';
      -  /**
      -   * token style for a type
      -   * @const
      -   */
      -  var PR_TYPE = 'typ';
      -  /**
      -   * token style for a literal value.  e.g. 1, null, true.
      -   * @const
      -   */
      -  var PR_LITERAL = 'lit';
      -  /**
      -   * token style for a punctuation string.
      -   * @const
      -   */
      -  var PR_PUNCTUATION = 'pun';
      -  /**
      -   * token style for a punctuation string.
      -   * @const
      -   */
      -  var PR_PLAIN = 'pln';
      -
      -  /**
      -   * token style for an sgml tag.
      -   * @const
      -   */
      -  var PR_TAG = 'tag';
      -  /**
      -   * token style for a markup declaration such as a DOCTYPE.
      -   * @const
      -   */
      -  var PR_DECLARATION = 'dec';
      -  /**
      -   * token style for embedded source.
      -   * @const
      -   */
      -  var PR_SOURCE = 'src';
      -  /**
      -   * token style for an sgml attribute name.
      -   * @const
      -   */
      -  var PR_ATTRIB_NAME = 'atn';
      -  /**
      -   * token style for an sgml attribute value.
      -   * @const
      -   */
      -  var PR_ATTRIB_VALUE = 'atv';
      -
      -  /**
      -   * A class that indicates a section of markup that is not code, e.g. to allow
      -   * embedding of line numbers within code listings.
      -   * @const
      -   */
      -  var PR_NOCODE = 'nocode';
      -
      -
      -
      -/**
      - * A set of tokens that can precede a regular expression literal in
      - * javascript
      - * http://web.archive.org/web/20070717142515/http://www.mozilla.org/js/language/js20/rationale/syntax.html
      - * has the full list, but I've removed ones that might be problematic when
      - * seen in languages that don't support regular expression literals.
      - *
      - * <p>Specifically, I've removed any keywords that can't precede a regexp
      - * literal in a syntactically legal javascript program, and I've removed the
      - * "in" keyword since it's not a keyword in many languages, and might be used
      - * as a count of inches.
      - *
      - * <p>The link a above does not accurately describe EcmaScript rules since
      - * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
      - * very well in practice.
      - *
      - * @private
      - * @const
      - */
      -var REGEXP_PRECEDER_PATTERN = '(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*';
      -
      -// CAVEAT: this does not properly handle the case where a regular
      -// expression immediately follows another since a regular expression may
      -// have flags for case-sensitivity and the like.  Having regexp tokens
      -// adjacent is not valid in any language I'm aware of, so I'm punting.
      -// TODO: maybe style special characters inside a regexp as punctuation.
      -
      -
      -  /**
      -   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
      -   * matches the union of the sets of strings matched by the input RegExp.
      -   * Since it matches globally, if the input strings have a start-of-input
      -   * anchor (/^.../), it is ignored for the purposes of unioning.
      -   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
      -   * @return {RegExp} a global regex.
      -   */
      -  function combinePrefixPatterns(regexs) {
      -    var capturedGroupIndex = 0;
      -  
      -    var needToFoldCase = false;
      -    var ignoreCase = false;
      -    for (var i = 0, n = regexs.length; i < n; ++i) {
      -      var regex = regexs[i];
      -      if (regex.ignoreCase) {
      -        ignoreCase = true;
      -      } else if (/[a-z]/i.test(regex.source.replace(
      -                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
      -        needToFoldCase = true;
      -        ignoreCase = false;
      -        break;
      -      }
      -    }
      -  
      -    var escapeCharToCodeUnit = {
      -      'b': 8,
      -      't': 9,
      -      'n': 0xa,
      -      'v': 0xb,
      -      'f': 0xc,
      -      'r': 0xd
      -    };
      -  
      -    function decodeEscape(charsetPart) {
      -      var cc0 = charsetPart.charCodeAt(0);
      -      if (cc0 !== 92 /* \\ */) {
      -        return cc0;
      -      }
      -      var c1 = charsetPart.charAt(1);
      -      cc0 = escapeCharToCodeUnit[c1];
      -      if (cc0) {
      -        return cc0;
      -      } else if ('0' <= c1 && c1 <= '7') {
      -        return parseInt(charsetPart.substring(1), 8);
      -      } else if (c1 === 'u' || c1 === 'x') {
      -        return parseInt(charsetPart.substring(2), 16);
      -      } else {
      -        return charsetPart.charCodeAt(1);
      -      }
      -    }
      -  
      -    function encodeEscape(charCode) {
      -      if (charCode < 0x20) {
      -        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
      -      }
      -      var ch = String.fromCharCode(charCode);
      -      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
      -        ch = '\\' + ch;
      -      }
      -      return ch;
      -    }
      -  
      -    function caseFoldCharset(charSet) {
      -      var charsetParts = charSet.substring(1, charSet.length - 1).match(
      -          new RegExp(
      -              '\\\\u[0-9A-Fa-f]{4}'
      -              + '|\\\\x[0-9A-Fa-f]{2}'
      -              + '|\\\\[0-3][0-7]{0,2}'
      -              + '|\\\\[0-7]{1,2}'
      -              + '|\\\\[\\s\\S]'
      -              + '|-'
      -              + '|[^-\\\\]',
      -              'g'));
      -      var groups = [];
      -      var ranges = [];
      -      var inverse = charsetParts[0] === '^';
      -      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
      -        var p = charsetParts[i];
      -        if (/\\[bdsw]/i.test(p)) {  // Don't muck with named groups.
      -          groups.push(p);
      -        } else {
      -          var start = decodeEscape(p);
      -          var end;
      -          if (i + 2 < n && '-' === charsetParts[i + 1]) {
      -            end = decodeEscape(charsetParts[i + 2]);
      -            i += 2;
      -          } else {
      -            end = start;
      -          }
      -          ranges.push([start, end]);
      -          // If the range might intersect letters, then expand it.
      -          // This case handling is too simplistic.
      -          // It does not deal with non-latin case folding.
      -          // It works for latin source code identifiers though.
      -          if (!(end < 65 || start > 122)) {
      -            if (!(end < 65 || start > 90)) {
      -              ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
      -            }
      -            if (!(end < 97 || start > 122)) {
      -              ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
      -            }
      -          }
      -        }
      -      }
      -  
      -      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
      -      // -> [[1, 12], [14, 14], [16, 17]]
      -      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
      -      var consolidatedRanges = [];
      -      var lastRange = [NaN, NaN];
      -      for (var i = 0; i < ranges.length; ++i) {
      -        var range = ranges[i];
      -        if (range[0] <= lastRange[1] + 1) {
      -          lastRange[1] = Math.max(lastRange[1], range[1]);
      -        } else {
      -          consolidatedRanges.push(lastRange = range);
      -        }
      -      }
      -  
      -      var out = ['['];
      -      if (inverse) { out.push('^'); }
      -      out.push.apply(out, groups);
      -      for (var i = 0; i < consolidatedRanges.length; ++i) {
      -        var range = consolidatedRanges[i];
      -        out.push(encodeEscape(range[0]));
      -        if (range[1] > range[0]) {
      -          if (range[1] + 1 > range[0]) { out.push('-'); }
      -          out.push(encodeEscape(range[1]));
      -        }
      -      }
      -      out.push(']');
      -      return out.join('');
      -    }
      -  
      -    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
      -      // Split into character sets, escape sequences, punctuation strings
      -      // like ('(', '(?:', ')', '^'), and runs of characters that do not
      -      // include any of the above.
      -      var parts = regex.source.match(
      -          new RegExp(
      -              '(?:'
      -              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
      -              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
      -              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
      -              + '|\\\\[0-9]+'  // a back-reference or octal escape
      -              + '|\\\\[^ux0-9]'  // other escape sequence
      -              + '|\\(\\?[:!=]'  // start of a non-capturing group
      -              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
      -              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
      -              + ')',
      -              'g'));
      -      var n = parts.length;
      -  
      -      // Maps captured group numbers to the number they will occupy in
      -      // the output or to -1 if that has not been determined, or to
      -      // undefined if they need not be capturing in the output.
      -      var capturedGroups = [];
      -  
      -      // Walk over and identify back references to build the capturedGroups
      -      // mapping.
      -      for (var i = 0, groupIndex = 0; i < n; ++i) {
      -        var p = parts[i];
      -        if (p === '(') {
      -          // groups are 1-indexed, so max group index is count of '('
      -          ++groupIndex;
      -        } else if ('\\' === p.charAt(0)) {
      -          var decimalValue = +p.substring(1);
      -          if (decimalValue && decimalValue <= groupIndex) {
      -            capturedGroups[decimalValue] = -1;
      -          }
      -        }
      -      }
      -  
      -      // Renumber groups and reduce capturing groups to non-capturing groups
      -      // where possible.
      -      for (var i = 1; i < capturedGroups.length; ++i) {
      -        if (-1 === capturedGroups[i]) {
      -          capturedGroups[i] = ++capturedGroupIndex;
      -        }
      -      }
      -      for (var i = 0, groupIndex = 0; i < n; ++i) {
      -        var p = parts[i];
      -        if (p === '(') {
      -          ++groupIndex;
      -          if (capturedGroups[groupIndex] === undefined) {
      -            parts[i] = '(?:';
      -          }
      -        } else if ('\\' === p.charAt(0)) {
      -          var decimalValue = +p.substring(1);
      -          if (decimalValue && decimalValue <= groupIndex) {
      -            parts[i] = '\\' + capturedGroups[groupIndex];
      -          }
      -        }
      -      }
      -  
      -      // Remove any prefix anchors so that the output will match anywhere.
      -      // ^^ really does mean an anchored match though.
      -      for (var i = 0, groupIndex = 0; i < n; ++i) {
      -        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
      -      }
      -  
      -      // Expand letters to groups to handle mixing of case-sensitive and
      -      // case-insensitive patterns if necessary.
      -      if (regex.ignoreCase && needToFoldCase) {
      -        for (var i = 0; i < n; ++i) {
      -          var p = parts[i];
      -          var ch0 = p.charAt(0);
      -          if (p.length >= 2 && ch0 === '[') {
      -            parts[i] = caseFoldCharset(p);
      -          } else if (ch0 !== '\\') {
      -            // TODO: handle letters in numeric escapes.
      -            parts[i] = p.replace(
      -                /[a-zA-Z]/g,
      -                function (ch) {
      -                  var cc = ch.charCodeAt(0);
      -                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
      -                });
      -          }
      -        }
      -      }
      -  
      -      return parts.join('');
      -    }
      -  
      -    var rewritten = [];
      -    for (var i = 0, n = regexs.length; i < n; ++i) {
      -      var regex = regexs[i];
      -      if (regex.global || regex.multiline) { throw new Error('' + regex); }
      -      rewritten.push(
      -          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
      -    }
      -  
      -    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
      -  }
      -
      -
      -  /**
      -   * Split markup into a string of source code and an array mapping ranges in
      -   * that string to the text nodes in which they appear.
      -   *
      -   * <p>
      -   * The HTML DOM structure:</p>
      -   * <pre>
      -   * (Element   "p"
      -   *   (Element "b"
      -   *     (Text  "print "))       ; #1
      -   *   (Text    "'Hello '")      ; #2
      -   *   (Element "br")            ; #3
      -   *   (Text    "  + 'World';")) ; #4
      -   * </pre>
      -   * <p>
      -   * corresponds to the HTML
      -   * {@code <p><b>print </b>'Hello '<br>  + 'World';</p>}.</p>
      -   *
      -   * <p>
      -   * It will produce the output:</p>
      -   * <pre>
      -   * {
      -   *   sourceCode: "print 'Hello '\n  + 'World';",
      -   *   //                 1         2
      -   *   //       012345678901234 5678901234567
      -   *   spans: [0, #1, 6, #2, 14, #3, 15, #4]
      -   * }
      -   * </pre>
      -   * <p>
      -   * where #1 is a reference to the {@code "print "} text node above, and so
      -   * on for the other text nodes.
      -   * </p>
      -   *
      -   * <p>
      -   * The {@code} spans array is an array of pairs.  Even elements are the start
      -   * indices of substrings, and odd elements are the text nodes (or BR elements)
      -   * that contain the text for those substrings.
      -   * Substrings continue until the next index or the end of the source.
      -   * </p>
      -   *
      -   * @param {Node} node an HTML DOM subtree containing source-code.
      -   * @return {Object} source code and the text nodes in which they occur.
      -   */
      -  function extractSourceSpans(node) {
      -    var nocode = /(?:^|\s)nocode(?:\s|$)/;
      -  
      -    var chunks = [];
      -    var length = 0;
      -    var spans = [];
      -    var k = 0;
      -  
      -    var whitespace;
      -    if (node.currentStyle) {
      -      whitespace = node.currentStyle.whiteSpace;
      -    } else if (window.getComputedStyle) {
      -      whitespace = document.defaultView.getComputedStyle(node, null)
      -          .getPropertyValue('white-space');
      -    }
      -    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
      -  
      -    function walk(node) {
      -      switch (node.nodeType) {
      -        case 1:  // Element
      -          if (nocode.test(node.className)) { return; }
      -          for (var child = node.firstChild; child; child = child.nextSibling) {
      -            walk(child);
      -          }
      -          var nodeName = node.nodeName;
      -          if ('BR' === nodeName || 'LI' === nodeName) {
      -            chunks[k] = '\n';
      -            spans[k << 1] = length++;
      -            spans[(k++ << 1) | 1] = node;
      -          }
      -          break;
      -        case 3: case 4:  // Text
      -          var text = node.nodeValue;
      -          if (text.length) {
      -            if (!isPreformatted) {
      -              text = text.replace(/[ \t\r\n]+/g, ' ');
      -            } else {
      -              text = text.replace(/\r\n?/g, '\n');  // Normalize newlines.
      -            }
      -            // TODO: handle tabs here?
      -            chunks[k] = text;
      -            spans[k << 1] = length;
      -            length += text.length;
      -            spans[(k++ << 1) | 1] = node;
      -          }
      -          break;
      -      }
      -    }
      -  
      -    walk(node);
      -  
      -    return {
      -      sourceCode: chunks.join('').replace(/\n$/, ''),
      -      spans: spans
      -    };
      -  }
      -
      -
      -  /**
      -   * Apply the given language handler to sourceCode and add the resulting
      -   * decorations to out.
      -   * @param {number} basePos the index of sourceCode within the chunk of source
      -   *    whose decorations are already present on out.
      -   */
      -  function appendDecorations(basePos, sourceCode, langHandler, out) {
      -    if (!sourceCode) { return; }
      -    var job = {
      -      sourceCode: sourceCode,
      -      basePos: basePos
      -    };
      -    langHandler(job);
      -    out.push.apply(out, job.decorations);
      -  }
      -
      -  var notWs = /\S/;
      -
      -  /**
      -   * Given an element, if it contains only one child element and any text nodes
      -   * it contains contain only space characters, return the sole child element.
      -   * Otherwise returns undefined.
      -   * <p>
      -   * This is meant to return the CODE element in {@code <pre><code ...>} when
      -   * there is a single child element that contains all the non-space textual
      -   * content, but not to return anything where there are multiple child elements
      -   * as in {@code <pre><code>...</code><code>...</code></pre>} or when there
      -   * is textual content.
      -   */
      -  function childContentWrapper(element) {
      -    var wrapper = undefined;
      -    for (var c = element.firstChild; c; c = c.nextSibling) {
      -      var type = c.nodeType;
      -      wrapper = (type === 1)  // Element Node
      -          ? (wrapper ? element : c)
      -          : (type === 3)  // Text Node
      -          ? (notWs.test(c.nodeValue) ? element : wrapper)
      -          : wrapper;
      -    }
      -    return wrapper === element ? undefined : wrapper;
      -  }
      -
      -  /** Given triples of [style, pattern, context] returns a lexing function,
      -    * The lexing function interprets the patterns to find token boundaries and
      -    * returns a decoration list of the form
      -    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
      -    * where index_n is an index into the sourceCode, and style_n is a style
      -    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
      -    * all characters in sourceCode[index_n-1:index_n].
      -    *
      -    * The stylePatterns is a list whose elements have the form
      -    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
      -    *
      -    * Style is a style constant like PR_PLAIN, or can be a string of the
      -    * form 'lang-FOO', where FOO is a language extension describing the
      -    * language of the portion of the token in $1 after pattern executes.
      -    * E.g., if style is 'lang-lisp', and group 1 contains the text
      -    * '(hello (world))', then that portion of the token will be passed to the
      -    * registered lisp handler for formatting.
      -    * The text before and after group 1 will be restyled using this decorator
      -    * so decorators should take care that this doesn't result in infinite
      -    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
      -    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
      -    * '<script>foo()<\/script>', which would cause the current decorator to
      -    * be called with '<script>' which would not match the same rule since
      -    * group 1 must not be empty, so it would be instead styled as PR_TAG by
      -    * the generic tag rule.  The handler registered for the 'js' extension would
      -    * then be called with 'foo()', and finally, the current decorator would
      -    * be called with '<\/script>' which would not match the original rule and
      -    * so the generic tag rule would identify it as a tag.
      -    *
      -    * Pattern must only match prefixes, and if it matches a prefix, then that
      -    * match is considered a token with the same style.
      -    *
      -    * Context is applied to the last non-whitespace, non-comment token
      -    * recognized.
      -    *
      -    * Shortcut is an optional string of characters, any of which, if the first
      -    * character, gurantee that this pattern and only this pattern matches.
      -    *
      -    * @param {Array} shortcutStylePatterns patterns that always start with
      -    *   a known character.  Must have a shortcut string.
      -    * @param {Array} fallthroughStylePatterns patterns that will be tried in
      -    *   order if the shortcut ones fail.  May have shortcuts.
      -    *
      -    * @return {function (Object)} a
      -    *   function that takes source code and returns a list of decorations.
      -    */
      -  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
      -    var shortcuts = {};
      -    var tokenizer;
      -    (function () {
      -      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
      -      var allRegexs = [];
      -      var regexKeys = {};
      -      for (var i = 0, n = allPatterns.length; i < n; ++i) {
      -        var patternParts = allPatterns[i];
      -        var shortcutChars = patternParts[3];
      -        if (shortcutChars) {
      -          for (var c = shortcutChars.length; --c >= 0;) {
      -            shortcuts[shortcutChars.charAt(c)] = patternParts;
      -          }
      -        }
      -        var regex = patternParts[1];
      -        var k = '' + regex;
      -        if (!regexKeys.hasOwnProperty(k)) {
      -          allRegexs.push(regex);
      -          regexKeys[k] = null;
      -        }
      -      }
      -      allRegexs.push(/[\0-\uffff]/);
      -      tokenizer = combinePrefixPatterns(allRegexs);
      -    })();
      -
      -    var nPatterns = fallthroughStylePatterns.length;
      -
      -    /**
      -     * Lexes job.sourceCode and produces an output array job.decorations of
      -     * style classes preceded by the position at which they start in
      -     * job.sourceCode in order.
      -     *
      -     * @param {Object} job an object like <pre>{
      -     *    sourceCode: {string} sourceText plain text,
      -     *    basePos: {int} position of job.sourceCode in the larger chunk of
      -     *        sourceCode.
      -     * }</pre>
      -     */
      -    var decorate = function (job) {
      -      var sourceCode = job.sourceCode, basePos = job.basePos;
      -      /** Even entries are positions in source in ascending order.  Odd enties
      -        * are style markers (e.g., PR_COMMENT) that run from that position until
      -        * the end.
      -        * @type {Array.<number|string>}
      -        */
      -      var decorations = [basePos, PR_PLAIN];
      -      var pos = 0;  // index into sourceCode
      -      var tokens = sourceCode.match(tokenizer) || [];
      -      var styleCache = {};
      -
      -      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
      -        var token = tokens[ti];
      -        var style = styleCache[token];
      -        var match = void 0;
      -
      -        var isEmbedded;
      -        if (typeof style === 'string') {
      -          isEmbedded = false;
      -        } else {
      -          var patternParts = shortcuts[token.charAt(0)];
      -          if (patternParts) {
      -            match = token.match(patternParts[1]);
      -            style = patternParts[0];
      -          } else {
      -            for (var i = 0; i < nPatterns; ++i) {
      -              patternParts = fallthroughStylePatterns[i];
      -              match = token.match(patternParts[1]);
      -              if (match) {
      -                style = patternParts[0];
      -                break;
      -              }
      -            }
      -
      -            if (!match) {  // make sure that we make progress
      -              style = PR_PLAIN;
      -            }
      -          }
      -
      -          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
      -          if (isEmbedded && !(match && typeof match[1] === 'string')) {
      -            isEmbedded = false;
      -            style = PR_SOURCE;
      -          }
      -
      -          if (!isEmbedded) { styleCache[token] = style; }
      -        }
      -
      -        var tokenStart = pos;
      -        pos += token.length;
      -
      -        if (!isEmbedded) {
      -          decorations.push(basePos + tokenStart, style);
      -        } else {  // Treat group 1 as an embedded block of source code.
      -          var embeddedSource = match[1];
      -          var embeddedSourceStart = token.indexOf(embeddedSource);
      -          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
      -          if (match[2]) {
      -            // If embeddedSource can be blank, then it would match at the
      -            // beginning which would cause us to infinitely recurse on the
      -            // entire token, so we catch the right context in match[2].
      -            embeddedSourceEnd = token.length - match[2].length;
      -            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
      -          }
      -          var lang = style.substring(5);
      -          // Decorate the left of the embedded source
      -          appendDecorations(
      -              basePos + tokenStart,
      -              token.substring(0, embeddedSourceStart),
      -              decorate, decorations);
      -          // Decorate the embedded source
      -          appendDecorations(
      -              basePos + tokenStart + embeddedSourceStart,
      -              embeddedSource,
      -              langHandlerForExtension(lang, embeddedSource),
      -              decorations);
      -          // Decorate the right of the embedded section
      -          appendDecorations(
      -              basePos + tokenStart + embeddedSourceEnd,
      -              token.substring(embeddedSourceEnd),
      -              decorate, decorations);
      -        }
      -      }
      -      job.decorations = decorations;
      -    };
      -    return decorate;
      -  }
      -
      -  /** returns a function that produces a list of decorations from source text.
      -    *
      -    * This code treats ", ', and ` as string delimiters, and \ as a string
      -    * escape.  It does not recognize perl's qq() style strings.
      -    * It has no special handling for double delimiter escapes as in basic, or
      -    * the tripled delimiters used in python, but should work on those regardless
      -    * although in those cases a single string literal may be broken up into
      -    * multiple adjacent string literals.
      -    *
      -    * It recognizes C, C++, and shell style comments.
      -    *
      -    * @param {Object} options a set of optional parameters.
      -    * @return {function (Object)} a function that examines the source code
      -    *     in the input job and builds the decoration list.
      -    */
      -  function sourceDecorator(options) {
      -    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
      -    if (options['tripleQuotedStrings']) {
      -      // '''multi-line-string''', 'single-line-string', and double-quoted
      -      shortcutStylePatterns.push(
      -          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
      -           null, '\'"']);
      -    } else if (options['multiLineStrings']) {
      -      // 'multi-line-string', "multi-line-string"
      -      shortcutStylePatterns.push(
      -          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
      -           null, '\'"`']);
      -    } else {
      -      // 'single-line-string', "single-line-string"
      -      shortcutStylePatterns.push(
      -          [PR_STRING,
      -           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
      -           null, '"\'']);
      -    }
      -    if (options['verbatimStrings']) {
      -      // verbatim-string-literal production from the C# grammar.  See issue 93.
      -      fallthroughStylePatterns.push(
      -          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
      -    }
      -    var hc = options['hashComments'];
      -    if (hc) {
      -      if (options['cStyleComments']) {
      -        if (hc > 1) {  // multiline hash comments
      -          shortcutStylePatterns.push(
      -              [PR_COMMENT, /^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/, null, '#']);
      -        } else {
      -          // Stop C preprocessor declarations at an unclosed open comment
      -          shortcutStylePatterns.push(
      -              [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
      -               null, '#']);
      -        }
      -        fallthroughStylePatterns.push(
      -            [PR_STRING,
      -             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
      -             null]);
      -      } else {
      -        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
      -      }
      -    }
      -    if (options['cStyleComments']) {
      -      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
      -      fallthroughStylePatterns.push(
      -          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
      -    }
      -    if (options['regexLiterals']) {
      -      /**
      -       * @const
      -       */
      -      var REGEX_LITERAL = (
      -          // A regular expression literal starts with a slash that is
      -          // not followed by * or / so that it is not confused with
      -          // comments.
      -          '/(?=[^/*])'
      -          // and then contains any number of raw characters,
      -          + '(?:[^/\\x5B\\x5C]'
      -          // escape sequences (\x5C),
      -          +    '|\\x5C[\\s\\S]'
      -          // or non-nesting character sets (\x5B\x5D);
      -          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
      -          // finally closed by a /.
      -          + '/');
      -      fallthroughStylePatterns.push(
      -          ['lang-regex',
      -           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
      -           ]);
      -    }
      -
      -    var types = options['types'];
      -    if (types) {
      -      fallthroughStylePatterns.push([PR_TYPE, types]);
      -    }
      -
      -    var keywords = ("" + options['keywords']).replace(/^ | $/g, '');
      -    if (keywords.length) {
      -      fallthroughStylePatterns.push(
      -          [PR_KEYWORD,
      -           new RegExp('^(?:' + keywords.replace(/[\s,]+/g, '|') + ')\\b'),
      -           null]);
      -    }
      -
      -    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
      -    fallthroughStylePatterns.push(
      -        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
      -        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
      -        [PR_TYPE,        /^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/, null],
      -        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
      -        [PR_LITERAL,
      -         new RegExp(
      -             '^(?:'
      -             // A hex number
      -             + '0x[a-f0-9]+'
      -             // or an octal or decimal number,
      -             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
      -             // possibly in scientific notation
      -             + '(?:e[+\\-]?\\d+)?'
      -             + ')'
      -             // with an optional modifier like UL for unsigned long
      -             + '[a-z]*', 'i'),
      -         null, '0123456789'],
      -        // Don't treat escaped quotes in bash as starting strings.  See issue 144.
      -        [PR_PLAIN,       /^\\[\s\S]?/, null],
      -        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#\\]*/, null]);
      -
      -    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
      -  }
      -
      -  var decorateSource = sourceDecorator({
      -        'keywords': ALL_KEYWORDS,
      -        'hashComments': true,
      -        'cStyleComments': true,
      -        'multiLineStrings': true,
      -        'regexLiterals': true
      -      });
      -
      -  /**
      -   * Given a DOM subtree, wraps it in a list, and puts each line into its own
      -   * list item.
      -   *
      -   * @param {Node} node modified in place.  Its content is pulled into an
      -   *     HTMLOListElement, and each line is moved into a separate list item.
      -   *     This requires cloning elements, so the input might not have unique
      -   *     IDs after numbering.
      -   */
      -  function numberLines(node, opt_startLineNum) {
      -    var nocode = /(?:^|\s)nocode(?:\s|$)/;
      -    var lineBreak = /\r\n?|\n/;
      -  
      -    var document = node.ownerDocument;
      -  
      -    var whitespace;
      -    if (node.currentStyle) {
      -      whitespace = node.currentStyle.whiteSpace;
      -    } else if (window.getComputedStyle) {
      -      whitespace = document.defaultView.getComputedStyle(node, null)
      -          .getPropertyValue('white-space');
      -    }
      -    // If it's preformatted, then we need to split lines on line breaks
      -    // in addition to <BR>s.
      -    var isPreformatted = whitespace && 'pre' === whitespace.substring(0, 3);
      -  
      -    var li = document.createElement('LI');
      -    while (node.firstChild) {
      -      li.appendChild(node.firstChild);
      -    }
      -    // An array of lines.  We split below, so this is initialized to one
      -    // un-split line.
      -    var listItems = [li];
      -  
      -    function walk(node) {
      -      switch (node.nodeType) {
      -        case 1:  // Element
      -          if (nocode.test(node.className)) { break; }
      -          if ('BR' === node.nodeName) {
      -            breakAfter(node);
      -            // Discard the <BR> since it is now flush against a </LI>.
      -            if (node.parentNode) {
      -              node.parentNode.removeChild(node);
      -            }
      -          } else {
      -            for (var child = node.firstChild; child; child = child.nextSibling) {
      -              walk(child);
      -            }
      -          }
      -          break;
      -        case 3: case 4:  // Text
      -          if (isPreformatted) {
      -            var text = node.nodeValue;
      -            var match = text.match(lineBreak);
      -            if (match) {
      -              var firstLine = text.substring(0, match.index);
      -              node.nodeValue = firstLine;
      -              var tail = text.substring(match.index + match[0].length);
      -              if (tail) {
      -                var parent = node.parentNode;
      -                parent.insertBefore(
      -                    document.createTextNode(tail), node.nextSibling);
      -              }
      -              breakAfter(node);
      -              if (!firstLine) {
      -                // Don't leave blank text nodes in the DOM.
      -                node.parentNode.removeChild(node);
      -              }
      -            }
      -          }
      -          break;
      -      }
      -    }
      -  
      -    // Split a line after the given node.
      -    function breakAfter(lineEndNode) {
      -      // If there's nothing to the right, then we can skip ending the line
      -      // here, and move root-wards since splitting just before an end-tag
      -      // would require us to create a bunch of empty copies.
      -      while (!lineEndNode.nextSibling) {
      -        lineEndNode = lineEndNode.parentNode;
      -        if (!lineEndNode) { return; }
      -      }
      -  
      -      function breakLeftOf(limit, copy) {
      -        // Clone shallowly if this node needs to be on both sides of the break.
      -        var rightSide = copy ? limit.cloneNode(false) : limit;
      -        var parent = limit.parentNode;
      -        if (parent) {
      -          // We clone the parent chain.
      -          // This helps us resurrect important styling elements that cross lines.
      -          // E.g. in <i>Foo<br>Bar</i>
      -          // should be rewritten to <li><i>Foo</i></li><li><i>Bar</i></li>.
      -          var parentClone = breakLeftOf(parent, 1);
      -          // Move the clone and everything to the right of the original
      -          // onto the cloned parent.
      -          var next = limit.nextSibling;
      -          parentClone.appendChild(rightSide);
      -          for (var sibling = next; sibling; sibling = next) {
      -            next = sibling.nextSibling;
      -            parentClone.appendChild(sibling);
      -          }
      -        }
      -        return rightSide;
      -      }
      -  
      -      var copiedListItem = breakLeftOf(lineEndNode.nextSibling, 0);
      -  
      -      // Walk the parent chain until we reach an unattached LI.
      -      for (var parent;
      -           // Check nodeType since IE invents document fragments.
      -           (parent = copiedListItem.parentNode) && parent.nodeType === 1;) {
      -        copiedListItem = parent;
      -      }
      -      // Put it on the list of lines for later processing.
      -      listItems.push(copiedListItem);
      -    }
      -  
      -    // Split lines while there are lines left to split.
      -    for (var i = 0;  // Number of lines that have been split so far.
      -         i < listItems.length;  // length updated by breakAfter calls.
      -         ++i) {
      -      walk(listItems[i]);
      -    }
      -  
      -    // Make sure numeric indices show correctly.
      -    if (opt_startLineNum === (opt_startLineNum|0)) {
      -      listItems[0].setAttribute('value', opt_startLineNum);
      -    }
      -  
      -    var ol = document.createElement('OL');
      -    ol.className = 'linenums';
      -    var offset = Math.max(0, ((opt_startLineNum - 1 /* zero index */)) | 0) || 0;
      -    for (var i = 0, n = listItems.length; i < n; ++i) {
      -      li = listItems[i];
      -      // Stick a class on the LIs so that stylesheets can
      -      // color odd/even rows, or any other row pattern that
      -      // is co-prime with 10.
      -      li.className = 'L' + ((i + offset) % 10);
      -      if (!li.firstChild) {
      -        li.appendChild(document.createTextNode('\xA0'));
      -      }
      -      ol.appendChild(li);
      -    }
      -  
      -    node.appendChild(ol);
      -  }
      -
      -  /**
      -   * Breaks {@code job.sourceCode} around style boundaries in
      -   * {@code job.decorations} and modifies {@code job.sourceNode} in place.
      -   * @param {Object} job like <pre>{
      -   *    sourceCode: {string} source as plain text,
      -   *    spans: {Array.<number|Node>} alternating span start indices into source
      -   *       and the text node or element (e.g. {@code <BR>}) corresponding to that
      -   *       span.
      -   *    decorations: {Array.<number|string} an array of style classes preceded
      -   *       by the position at which they start in job.sourceCode in order
      -   * }</pre>
      -   * @private
      -   */
      -  function recombineTagsAndDecorations(job) {
      -    var isIE = /\bMSIE\b/.test(navigator.userAgent);
      -    var newlineRe = /\n/g;
      -  
      -    var source = job.sourceCode;
      -    var sourceLength = source.length;
      -    // Index into source after the last code-unit recombined.
      -    var sourceIndex = 0;
      -  
      -    var spans = job.spans;
      -    var nSpans = spans.length;
      -    // Index into spans after the last span which ends at or before sourceIndex.
      -    var spanIndex = 0;
      -  
      -    var decorations = job.decorations;
      -    var nDecorations = decorations.length;
      -    // Index into decorations after the last decoration which ends at or before
      -    // sourceIndex.
      -    var decorationIndex = 0;
      -  
      -    // Remove all zero-length decorations.
      -    decorations[nDecorations] = sourceLength;
      -    var decPos, i;
      -    for (i = decPos = 0; i < nDecorations;) {
      -      if (decorations[i] !== decorations[i + 2]) {
      -        decorations[decPos++] = decorations[i++];
      -        decorations[decPos++] = decorations[i++];
      -      } else {
      -        i += 2;
      -      }
      -    }
      -    nDecorations = decPos;
      -  
      -    // Simplify decorations.
      -    for (i = decPos = 0; i < nDecorations;) {
      -      var startPos = decorations[i];
      -      // Conflate all adjacent decorations that use the same style.
      -      var startDec = decorations[i + 1];
      -      var end = i + 2;
      -      while (end + 2 <= nDecorations && decorations[end + 1] === startDec) {
      -        end += 2;
      -      }
      -      decorations[decPos++] = startPos;
      -      decorations[decPos++] = startDec;
      -      i = end;
      -    }
      -  
      -    nDecorations = decorations.length = decPos;
      -  
      -    var decoration = null;
      -    while (spanIndex < nSpans) {
      -      var spanStart = spans[spanIndex];
      -      var spanEnd = spans[spanIndex + 2] || sourceLength;
      -  
      -      var decStart = decorations[decorationIndex];
      -      var decEnd = decorations[decorationIndex + 2] || sourceLength;
      -  
      -      var end = Math.min(spanEnd, decEnd);
      -  
      -      var textNode = spans[spanIndex + 1];
      -      var styledText;
      -      if (textNode.nodeType !== 1  // Don't muck with <BR>s or <LI>s
      -          // Don't introduce spans around empty text nodes.
      -          && (styledText = source.substring(sourceIndex, end))) {
      -        // This may seem bizarre, and it is.  Emitting LF on IE causes the
      -        // code to display with spaces instead of line breaks.
      -        // Emitting Windows standard issue linebreaks (CRLF) causes a blank
      -        // space to appear at the beginning of every line but the first.
      -        // Emitting an old Mac OS 9 line separator makes everything spiffy.
      -        if (isIE) { styledText = styledText.replace(newlineRe, '\r'); }
      -        textNode.nodeValue = styledText;
      -        var document = textNode.ownerDocument;
      -        var span = document.createElement('SPAN');
      -        span.className = decorations[decorationIndex + 1];
      -        var parentNode = textNode.parentNode;
      -        parentNode.replaceChild(span, textNode);
      -        span.appendChild(textNode);
      -        if (sourceIndex < spanEnd) {  // Split off a text node.
      -          spans[spanIndex + 1] = textNode
      -              // TODO: Possibly optimize by using '' if there's no flicker.
      -              = document.createTextNode(source.substring(end, spanEnd));
      -          parentNode.insertBefore(textNode, span.nextSibling);
      -        }
      -      }
      -  
      -      sourceIndex = end;
      -  
      -      if (sourceIndex >= spanEnd) {
      -        spanIndex += 2;
      -      }
      -      if (sourceIndex >= decEnd) {
      -        decorationIndex += 2;
      -      }
      -    }
      -  }
      -
      -
      -  /** Maps language-specific file extensions to handlers. */
      -  var langHandlerRegistry = {};
      -  /** Register a language handler for the given file extensions.
      -    * @param {function (Object)} handler a function from source code to a list
      -    *      of decorations.  Takes a single argument job which describes the
      -    *      state of the computation.   The single parameter has the form
      -    *      {@code {
      -    *        sourceCode: {string} as plain text.
      -    *        decorations: {Array.<number|string>} an array of style classes
      -    *                     preceded by the position at which they start in
      -    *                     job.sourceCode in order.
      -    *                     The language handler should assigned this field.
      -    *        basePos: {int} the position of source in the larger source chunk.
      -    *                 All positions in the output decorations array are relative
      -    *                 to the larger source chunk.
      -    *      } }
      -    * @param {Array.<string>} fileExtensions
      -    */
      -  function registerLangHandler(handler, fileExtensions) {
      -    for (var i = fileExtensions.length; --i >= 0;) {
      -      var ext = fileExtensions[i];
      -      if (!langHandlerRegistry.hasOwnProperty(ext)) {
      -        langHandlerRegistry[ext] = handler;
      -      } else if (window['console']) {
      -        console['warn']('cannot override language handler %s', ext);
      -      }
      -    }
      -  }
      -  function langHandlerForExtension(extension, source) {
      -    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
      -      // Treat it as markup if the first non whitespace character is a < and
      -      // the last non-whitespace character is a >.
      -      extension = /^\s*</.test(source)
      -          ? 'default-markup'
      -          : 'default-code';
      -    }
      -    return langHandlerRegistry[extension];
      -  }
      -  registerLangHandler(decorateSource, ['default-code']);
      -  registerLangHandler(
      -      createSimpleLexer(
      -          [],
      -          [
      -           [PR_PLAIN,       /^[^<?]+/],
      -           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
      -           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
      -           // Unescaped content in an unknown language
      -           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
      -           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
      -           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
      -           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
      -           // Unescaped content in javascript.  (Or possibly vbscript).
      -           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
      -           // Contains unescaped stylesheet content
      -           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
      -           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
      -          ]),
      -      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
      -  registerLangHandler(
      -      createSimpleLexer(
      -          [
      -           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
      -           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
      -           ],
      -          [
      -           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
      -           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
      -           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
      -           [PR_PUNCTUATION,  /^[=<>\/]+/],
      -           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
      -           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
      -           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
      -           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
      -           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
      -           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
      -           ]),
      -      ['in.tag']);
      -  registerLangHandler(
      -      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': CPP_KEYWORDS,
      -          'hashComments': true,
      -          'cStyleComments': true,
      -          'types': C_TYPES
      -        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': 'null,true,false'
      -        }), ['json']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': CSHARP_KEYWORDS,
      -          'hashComments': true,
      -          'cStyleComments': true,
      -          'verbatimStrings': true,
      -          'types': C_TYPES
      -        }), ['cs']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': JAVA_KEYWORDS,
      -          'cStyleComments': true
      -        }), ['java']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': SH_KEYWORDS,
      -          'hashComments': true,
      -          'multiLineStrings': true
      -        }), ['bsh', 'csh', 'sh']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': PYTHON_KEYWORDS,
      -          'hashComments': true,
      -          'multiLineStrings': true,
      -          'tripleQuotedStrings': true
      -        }), ['cv', 'py']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': PERL_KEYWORDS,
      -          'hashComments': true,
      -          'multiLineStrings': true,
      -          'regexLiterals': true
      -        }), ['perl', 'pl', 'pm']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': RUBY_KEYWORDS,
      -          'hashComments': true,
      -          'multiLineStrings': true,
      -          'regexLiterals': true
      -        }), ['rb']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': JSCRIPT_KEYWORDS,
      -          'cStyleComments': true,
      -          'regexLiterals': true
      -        }), ['js']);
      -  registerLangHandler(sourceDecorator({
      -          'keywords': COFFEE_KEYWORDS,
      -          'hashComments': 3,  // ### style block comments
      -          'cStyleComments': true,
      -          'multilineStrings': true,
      -          'tripleQuotedStrings': true,
      -          'regexLiterals': true
      -        }), ['coffee']);
      -  registerLangHandler(createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
      -
      -  function applyDecorator(job) {
      -    var opt_langExtension = job.langExtension;
      -
      -    try {
      -      // Extract tags, and convert the source code to plain text.
      -      var sourceAndSpans = extractSourceSpans(job.sourceNode);
      -      /** Plain text. @type {string} */
      -      var source = sourceAndSpans.sourceCode;
      -      job.sourceCode = source;
      -      job.spans = sourceAndSpans.spans;
      -      job.basePos = 0;
      -
      -      // Apply the appropriate language handler
      -      langHandlerForExtension(opt_langExtension, source)(job);
      -
      -      // Integrate the decorations and tags back into the source code,
      -      // modifying the sourceNode in place.
      -      recombineTagsAndDecorations(job);
      -    } catch (e) {
      -      if ('console' in window) {
      -        console['log'](e && e['stack'] ? e['stack'] : e);
      -      }
      -    }
      -  }
      -
      -  /**
      -   * @param sourceCodeHtml {string} The HTML to pretty print.
      -   * @param opt_langExtension {string} The language name to use.
      -   *     Typically, a filename extension like 'cpp' or 'java'.
      -   * @param opt_numberLines {number|boolean} True to number lines,
      -   *     or the 1-indexed number of the first line in sourceCodeHtml.
      -   */
      -  function prettyPrintOne(sourceCodeHtml, opt_langExtension, opt_numberLines) {
      -    var container = document.createElement('PRE');
      -    // This could cause images to load and onload listeners to fire.
      -    // E.g. <img onerror="alert(1337)" src="nosuchimage.png">.
      -    // We assume that the inner HTML is from a trusted source.
      -    container.innerHTML = sourceCodeHtml;
      -    if (opt_numberLines) {
      -      numberLines(container, opt_numberLines);
      -    }
      -
      -    var job = {
      -      langExtension: opt_langExtension,
      -      numberLines: opt_numberLines,
      -      sourceNode: container
      -    };
      -    applyDecorator(job);
      -    return container.innerHTML;
      -  }
      -
      -  function prettyPrint(opt_whenDone) {
      -    function byTagName(tn) { return document.getElementsByTagName(tn); }
      -    // fetch a list of nodes to rewrite
      -    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
      -    var elements = [];
      -    for (var i = 0; i < codeSegments.length; ++i) {
      -      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
      -        elements.push(codeSegments[i][j]);
      -      }
      -    }
      -    codeSegments = null;
      -
      -    var clock = Date;
      -    if (!clock['now']) {
      -      clock = { 'now': function () { return +(new Date); } };
      -    }
      -
      -    // The loop is broken into a series of continuations to make sure that we
      -    // don't make the browser unresponsive when rewriting a large page.
      -    var k = 0;
      -    var prettyPrintingJob;
      -
      -    var langExtensionRe = /\blang(?:uage)?-([\w.]+)(?!\S)/;
      -    var prettyPrintRe = /\bprettyprint\b/;
      -
      -    function doWork() {
      -      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
      -                     clock['now']() + 250 /* ms */ :
      -                     Infinity);
      -      for (; k < elements.length && clock['now']() < endTime; k++) {
      -        var cs = elements[k];
      -        var className = cs.className;
      -        if (className.indexOf('prettyprint') >= 0) {
      -          // If the classes includes a language extensions, use it.
      -          // Language extensions can be specified like
      -          //     <pre class="prettyprint lang-cpp">
      -          // the language extension "cpp" is used to find a language handler as
      -          // passed to PR.registerLangHandler.
      -          // HTML5 recommends that a language be specified using "language-"
      -          // as the prefix instead.  Google Code Prettify supports both.
      -          // http://dev.w3.org/html5/spec-author-view/the-code-element.html
      -          var langExtension = className.match(langExtensionRe);
      -          // Support <pre class="prettyprint"><code class="language-c">
      -          var wrapper;
      -          if (!langExtension && (wrapper = childContentWrapper(cs))
      -              && "CODE" === wrapper.tagName) {
      -            langExtension = wrapper.className.match(langExtensionRe);
      -          }
      -
      -          if (langExtension) {
      -            langExtension = langExtension[1];
      -          }
      -
      -          // make sure this is not nested in an already prettified element
      -          var nested = false;
      -          for (var p = cs.parentNode; p; p = p.parentNode) {
      -            if ((p.tagName === 'pre' || p.tagName === 'code' ||
      -                 p.tagName === 'xmp') &&
      -                p.className && p.className.indexOf('prettyprint') >= 0) {
      -              nested = true;
      -              break;
      -            }
      -          }
      -          if (!nested) {
      -            // Look for a class like linenums or linenums:<n> where <n> is the
      -            // 1-indexed number of the first line.
      -            var lineNums = cs.className.match(/\blinenums\b(?::(\d+))?/);
      -            lineNums = lineNums
      -                  ? lineNums[1] && lineNums[1].length ? +lineNums[1] : true
      -                  : false;
      -            if (lineNums) { numberLines(cs, lineNums); }
      -
      -            // do the pretty printing
      -            prettyPrintingJob = {
      -              langExtension: langExtension,
      -              sourceNode: cs,
      -              numberLines: lineNums
      -            };
      -            applyDecorator(prettyPrintingJob);
      -          }
      -        }
      -      }
      -      if (k < elements.length) {
      -        // finish up in a continuation
      -        setTimeout(doWork, 250);
      -      } else if (opt_whenDone) {
      -        opt_whenDone();
      -      }
      -    }
      -
      -    doWork();
      -  }
      -
      -   /**
      -    * Find all the {@code <pre>} and {@code <code>} tags in the DOM with
      -    * {@code class=prettyprint} and prettify them.
      -    *
      -    * @param {Function?} opt_whenDone if specified, called when the last entry
      -    *     has been finished.
      -    */
      -  window['prettyPrintOne'] = prettyPrintOne;
      -   /**
      -    * Pretty print a chunk of code.
      -    *
      -    * @param {string} sourceCodeHtml code as html
      -    * @return {string} code as html, but prettier
      -    */
      -  window['prettyPrint'] = prettyPrint;
      -   /**
      -    * Contains functions for creating and registering new language handlers.
      -    * @type {Object}
      -    */
      -  window['PR'] = {
      -        'createSimpleLexer': createSimpleLexer,
      -        'registerLangHandler': registerLangHandler,
      -        'sourceDecorator': sourceDecorator,
      -        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
      -        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
      -        'PR_COMMENT': PR_COMMENT,
      -        'PR_DECLARATION': PR_DECLARATION,
      -        'PR_KEYWORD': PR_KEYWORD,
      -        'PR_LITERAL': PR_LITERAL,
      -        'PR_NOCODE': PR_NOCODE,
      -        'PR_PLAIN': PR_PLAIN,
      -        'PR_PUNCTUATION': PR_PUNCTUATION,
      -        'PR_SOURCE': PR_SOURCE,
      -        'PR_STRING': PR_STRING,
      -        'PR_TAG': PR_TAG,
      -        'PR_TYPE': PR_TYPE
      -      };
      -})();
      diff --git a/bower_components/jquery-slimscroll/examples/mouse-wheel.html b/bower_components/jquery-slimscroll/examples/mouse-wheel.html
      deleted file mode 100644
      index 434c80c39d..0000000000
      --- a/bower_components/jquery-slimscroll/examples/mouse-wheel.html
      +++ /dev/null
      @@ -1,99 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - mouse wheel</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -  <div id="testDiv">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv').slimScroll({
      -      wheelStep: 20
      -  });
      -</pre>
      -
      -  <div id="testDiv2">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv2').slimScroll({
      -      wheelStep: 100
      -  });
      -</pre>
      -
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -
      -      $('#testDiv').slimScroll({
      -          wheelStep: 20
      -      });
      -
      -      $('#testDiv2').slimScroll({
      -          wheelStep: 100
      -      });
      -
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/multiple-elements.html b/bower_components/jquery-slimscroll/examples/multiple-elements.html
      deleted file mode 100644
      index 8923825b58..0000000000
      --- a/bower_components/jquery-slimscroll/examples/multiple-elements.html
      +++ /dev/null
      @@ -1,120 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - multiple elements</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -<div style="height:80px;float:left;">
      -  <div class="area">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -</div>
      -<div style="height:400px;float:left;">
      -  <div class="area">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -</div>
      -<div style="height:300px;float:left;">
      -  <div class="area">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -</div>
      -
      -<div style="clear:both"></div>
      -<pre class="prettyprint">
      -  $('.area').slimscroll({
      -    width: '200px',
      -  }).parent().css({
      -    'float': 'left',
      -    'margin-right': '30px'
      -  });
      -</pre>
      -
      -<div style="clear:both"></div>
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -
      -      $('.area').slimscroll({
      -        width: '200px',
      -        height: 'auto'
      -      }).parent().css({
      -        'float': 'left',
      -        'margin-right': '30px'
      -      });
      -
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/navigation.html b/bower_components/jquery-slimscroll/examples/navigation.html
      deleted file mode 100644
      index 2df6272e57..0000000000
      --- a/bower_components/jquery-slimscroll/examples/navigation.html
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - navigation</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<div id="nav">
      -  <h1>jQuery slimScroll</h1>
      -  <h2>Facebook-style jQuery Scrollbar</h1>
      -  <hr />
      -  <ul>
      -    <li><a target="main" href="height-width.html">Height / Width options</a></li>
      -    <li><a target="main" href="scrollbar.html">Scrollbar options</a></li>
      -    <li><a target="main" href="rail.html">Rail options</a></li>
      -    <li><a target="main" href="start-position.html">Start position</a></li>
      -    <li><a target="main" href="chaining.html">Chaining</a></li>
      -    <li><a target="main" href="multiple-elements.html">Mulitple bindings</a></li>
      -    <li><a target="main" href="programmatic-scrolling.html">Programmatic Scrolling</a></li>
      -    <li><a target="main" href="scroll-events.html">Scroll Events</a></li>
      -    <li><a target="main" href="allow-page-scroll.html">allowPageScroll option</a></li>
      -    <li><a target="main" href="disable-fade-out.html">disableFadeOut option</a></li>
      -    <li><a target="main" href="mouse-wheel.html">wheelStep option</a></li>
      -    <li><a target="main" href="nested.html">nested elements</a></li>
      -    <li><a target="main" href="dynamic-content.html">dynamic content</a></li>
      -  </ul>
      -</div>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/nested.html b/bower_components/jquery-slimscroll/examples/nested.html
      deleted file mode 100644
      index 92bd599d7d..0000000000
      --- a/bower_components/jquery-slimscroll/examples/nested.html
      +++ /dev/null
      @@ -1,82 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - nested elements</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -  <div id="testDiv">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -      <div id="testDivNested">
      -        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -        <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -        <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -        <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -        <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -      </div>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv').slimscroll({
      -    height: '500px'
      -  });
      -  $('#testDivNested').slimscroll({
      -    width: '300px',
      -    height: '200px'
      -  });
      -</pre>
      -
      -
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -
      -      $('#testDiv').slimscroll({
      -        height: '500px'
      -      });
      -      $('#testDivNested').slimscroll({
      -        width: '300px',
      -        height: '200px'
      -      }).parent().css({
      -        'float': 'left',
      -        'margin': '0 10px 10px 0'
      -      });
      -
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/programmatic-scrolling.html b/bower_components/jquery-slimscroll/examples/programmatic-scrolling.html
      deleted file mode 100644
      index 163e753061..0000000000
      --- a/bower_components/jquery-slimscroll/examples/programmatic-scrolling.html
      +++ /dev/null
      @@ -1,138 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - programmatic scrolling</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -  <div id="testDiv">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -  <input type="button" id="scrollDown" value="scroll down by 50 px" />
      -  <input type="button" id="scrollUp" value="scroll up by 50 px" />
      -
      -
      -<pre class="prettyprint">
      -$('#testDiv').slimscroll({
      -  height: '250px'
      -});
      -
      -$('#scrollDown').click(function(){
      -  $('#testDiv').slimScroll({ scrollBy: '50px' });
      -});
      -
      -$('#scrollUp').click(function(){
      -  $('#testDiv').slimScroll({ scrollBy: '-50px' });
      -});
      -</pre>
      -
      -  <div id="testDiv2">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -  <input type="button" id="scrollDownTo" value="Scroll to 300px from the top" />
      -  <input type="button" id="scrollUpTo" value="Scroll to 20px from the top" />
      -
      -
      -<pre class="prettyprint">
      -$('#testDiv2').slimscroll({
      -  height: '250px'
      -});
      -
      -$('#scrollDownTo').click(function(){
      -  $('#testDiv2').slimScroll({ scrollTo: '300px' });
      -});
      -
      -$('#scrollUpTo').click(function(){
      -  $('#testDiv2').slimScroll({ scrollTo: '20px' });
      -});
      -</pre>
      -
      -
      -
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -      $('#testDiv').slimscroll({
      -        height: '250px'
      -      });
      -
      -      $('#scrollDown').click(function(){
      -        $('#testDiv').slimScroll({ scrollBy: '50px' });
      -      });
      -
      -      $('#scrollUp').click(function(){
      -        $('#testDiv').slimScroll({ scrollBy: '-50px' });
      -      });
      -
      -      $('#testDiv2').slimscroll({
      -        height: '250px'
      -      });
      -
      -      $('#scrollDownTo').click(function(){
      -        $('#testDiv2').slimScroll({ scrollTo: '300px' });
      -      });
      -
      -      $('#scrollUpTo').click(function(){
      -        $('#testDiv2').slimScroll({ scrollTo: '20px' });
      -      });
      -
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/rail.html b/bower_components/jquery-slimscroll/examples/rail.html
      deleted file mode 100644
      index 4f77f34946..0000000000
      --- a/bower_components/jquery-slimscroll/examples/rail.html
      +++ /dev/null
      @@ -1,190 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - rail options</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -  <div id="testDiv">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv').slimScroll({
      -      alwaysVisible: true,
      -      railVisible: true
      -  });
      -</pre>
      -
      -  <div id="testDiv2">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv2').slimScroll({
      -      railVisible: true,
      -      railColor: '#f00'
      -  });
      -</pre>
      -
      -  <div id="testDiv3">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv3').slimScroll({
      -      railVisible: true,
      -      railOpacity: 0.8
      -  });
      -</pre>
      -
      -  <div id="testDiv4">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv4').slimscroll({
      -    railVisible: true,
      -    railBorderRadius: 0
      -  });
      -</pre>
      -
      -  <div id="testDiv5">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv5').slimscroll({
      -    railDraggable: false
      -  });
      -</pre>
      -
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -
      -      $('#testDiv').slimScroll({
      -          alwaysVisible: true,
      -          railVisible: true
      -      });
      -
      -      $('#testDiv2').slimScroll({
      -          railVisible: true,
      -          railColor: '#f00'
      -      });
      -
      -      $('#testDiv3').slimScroll({
      -          railVisible: true,
      -          railOpacity: 0.8
      -      });
      -
      -      $('#testDiv4').slimscroll({
      -        railVisible: true,
      -        railBorderRadius: 0
      -      });
      -
      -      $('#testDiv5').slimscroll({
      -        railDraggable: false
      -      });
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/scroll-events.html b/bower_components/jquery-slimscroll/examples/scroll-events.html
      deleted file mode 100644
      index 9eabbdc953..0000000000
      --- a/bower_components/jquery-slimscroll/examples/scroll-events.html
      +++ /dev/null
      @@ -1,88 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - top/bottom events</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -  <div id="testDiv">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -  </div>
      -  <div style="padding:2px;border:1px dashed #333;margin:2px;" id="testDivOut"></div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv').slimscroll({
      -    alwaysVisible: true
      -  }).bind('slimscroll', function(e, pos) {
      -    $('#testDivOut').append("Reached " + pos + ", ");
      -  });
      -</pre>
      -
      -  <div id="testDiv2">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -  </div>
      -  <div style="padding:2px;border:1px dashed #333;margin:2px;" id="testDivOut2"></div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv2').slimscroll().bind('slimscrolling', function(e, pos) {
      -    $('#testDivOut2').append("Scroll value: " + pos + "px");
      -  });
      -</pre>
      -
      -
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -
      -      $('#testDiv').slimscroll({
      -        alwaysVisible: true
      -      }).bind('slimscroll', function(e, pos) {
      -        $('#testDivOut').append("Reached " + pos + ", ");
      -      });
      -
      -      $('#testDiv2').slimscroll().bind('slimscrolling', function(e, pos) {
      -        $('#testDivOut2').append("Scroll: " + pos + "px, ");
      -      });
      -
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/scrollbar.html b/bower_components/jquery-slimscroll/examples/scrollbar.html
      deleted file mode 100644
      index 9f13b03d4f..0000000000
      --- a/bower_components/jquery-slimscroll/examples/scrollbar.html
      +++ /dev/null
      @@ -1,189 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - scrollbar options</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -  <div id="testDiv">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv').slimscroll({
      -    size: '15px'
      -  });
      -</pre>
      -
      -  <div id="testDiv2">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv2').slimScroll({
      -      position: 'left'
      -  });
      -</pre>
      -
      -  <div id="testDiv3">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv3').slimScroll({
      -      color: '#00f'
      -  });
      -</pre>
      -
      -
      -
      -  <div id="testDiv4">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv4').slimScroll({
      -      alwaysVisible: true
      -  });
      -</pre>
      -
      -
      -
      -  <div id="testDiv5">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv5').slimScroll({
      -      distance: '20px',
      -      opacity: 1
      -  });
      -</pre>
      -
      -
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -      $('#testDiv').slimscroll({
      -        size: '15px'
      -      });
      -
      -      $('#testDiv2').slimScroll({
      -          position: 'left'
      -      });
      -
      -      $('#testDiv3').slimScroll({
      -          color: '#00f'
      -      });
      -
      -      $('#testDiv4').slimScroll({
      -          alwaysVisible: true
      -      });
      -
      -      $('#testDiv5').slimScroll({
      -          distance: '20px',
      -          opacity: 1
      -      });
      -
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/start-position.html b/bower_components/jquery-slimscroll/examples/start-position.html
      deleted file mode 100644
      index 8afdda6c53..0000000000
      --- a/bower_components/jquery-slimscroll/examples/start-position.html
      +++ /dev/null
      @@ -1,100 +0,0 @@
      -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
      -<html>
      -<head>
      -<title>jquery.slimscroll - start position</title>
      -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
      -<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
      -
      -<link href="libs/prettify/prettify.css" type="text/css" rel="stylesheet" />
      -<script type="text/javascript" src="libs/prettify/prettify.js"></script>
      -<script type="text/javascript" src="../jquery.slimscroll.js"></script>
      -<link href="style.css" type="text/css" rel="stylesheet" />
      -</head>
      -<body>
      -<a id="git-fork" href="https://github.com/rochal/jQuery-slimScroll"><img src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub"></a>
      -
      -<div class="examples">
      -  <div id="testDiv">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv').slimScroll({
      -      start: 'bottom'
      -  });
      -</pre>
      -
      -  <div id="testDiv2">
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p><span class="helloDiv" style="background:green;font-weigh:bold;">Hello!</span>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam rhoncus, felis interdum condimentum consectetur, nisl libero elementum eros, vehicula congue lacus eros non diam. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus mauris lorem, lacinia id tempus non, imperdiet et leo. Cras sit amet erat sit amet lacus egestas placerat. Aenean ultricies ultrices mauris ac congue. In vel tortor vel velit tristique tempus ac id nisi. Proin quis lorem velit. Nunc dui dui, blandit a ullamcorper vitae, congue fringilla lectus. Aliquam ultricies malesuada feugiat. Vestibulum placerat turpis et eros lobortis vel semper sapien pulvinar.</p>
      -    <p>Pellentesque rhoncus aliquet porta. Sed vel magna eu turpis pharetra consequat ut vitae lectus. In molestie sollicitudin mi sit amet convallis. Aliquam erat volutpat. Nullam feugiat placerat ipsum eget malesuada. Nulla facilisis nunc non dolor vehicula pretium. Sed dui magna, sodales id pharetra non, ullamcorper eu sapien. Mauris ac consectetur leo. Mauris consequat, lectus ut bibendum pulvinar, leo magna feugiat enim, eu commodo lacus sem vel ante. Sed tempus metus eget leo mollis vulputate. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.</p>
      -    <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed pulvinar rhoncus quam, vel semper tellus viverra id. Nulla rutrum porttitor odio, a rutrum purus gravida non. Etiam ac purus augue, eget vestibulum purus. Aenean venenatis ullamcorper augue, non consequat elit tempor sed. Donec velit sapien, volutpat sed ultricies egestas, semper a ante. Fusce dapibus, quam eget auctor suscipit, nibh leo posuere ante, at auctor nisi lacus in sem. Morbi interdum consectetur euismod. Cras accumsan est lacus. Nulla eleifend, eros vel consequat commodo, arcu nunc malesuada nunc, quis sagittis felis sem ac turpis.</p>
      -    <p>Nulla rhoncus elementum convallis. Mauris condimentum aliquet egestas. Ut iaculis nisi eget tellus accumsan venenatis. Maecenas imperdiet aliquam porta. Aenean ultrices dolor sed quam laoreet varius. Curabitur condimentum blandit erat, quis accumsan eros interdum vitae. Curabitur ligula arcu, sollicitudin vitae iaculis sed, blandit sit amet enim. Morbi ullamcorper, metus vel mollis tristique, arcu turpis malesuada nisi, at dignissim lorem odio a orci. Proin ultrices, ipsum ut vestibulum interdum, libero felis auctor mi, vitae convallis nisl justo ac tellus. Integer nec lacinia turpis. Etiam massa nisl, rhoncus quis rutrum in, pretium eu leo. Proin a velit ut nulla laoreet vestibulum. Curabitur eu elit vitae felis auctor tincidunt. Curabitur tincidunt, metus sed sollicitudin cursus, quam elit commodo erat, ut tempor erat sapien vitae velit. Morbi nec viverra erat.</p>
      -    <p>Nullam scelerisque facilisis pretium. Vivamus lectus leo, commodo ac sagittis ac, dictum a mi. Donec quis massa ut libero malesuada commodo in et risus. Fusce nunc dolor, aliquet vel rutrum in, molestie sit amet massa. Aliquam suscipit, justo a commodo condimentum, enim sapien fringilla ante, sed lobortis orci lectus in ante. Donec vel interdum est. Donec placerat cursus lacus, eu ultricies nisl tincidunt a. Fusce libero risus, sagittis eleifend iaculis aliquet, condimentum vitae diam. Suspendisse potenti. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin leo purus, sodales a venenatis luctus, faucibus ac enim. Sed id metus ac sem lobortis pretium. Mauris faucibus tempor scelerisque. Nunc vulputate interdum tortor, non tincidunt dui condimentum eget. Aenean in porttitor velit. Nam accumsan rhoncus risus id consectetur.</p>
      -  </div>
      -
      -<pre class="prettyprint">
      -  $('#testDiv2').slimScroll({
      -      start: $('.helloDiv')
      -  });
      -</pre>
      -
      -
      -</div>
      -
      -<script type="text/javascript">
      -    $(function(){
      -
      -      $('#testDiv').slimScroll({
      -          start: 'bottom'
      -      });
      -
      -      $('#testDiv2').slimScroll({
      -          start: $('.helloDiv')
      -      });
      -
      -    });
      -</script>
      -
      -
      -<script type="text/javascript">
      -
      -  //enable syntax highlighter
      -  prettyPrint();
      -
      -  var _gaq = _gaq || [];
      -  _gaq.push(['_setAccount', 'UA-3112455-22']);
      -  _gaq.push(['_setDomainName', 'none']);
      -  _gaq.push(['_trackPageview']);
      -
      -  (function() {
      -    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      -    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      -    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      -  })();
      -</script>
      -</body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/examples/style.css b/bower_components/jquery-slimscroll/examples/style.css
      deleted file mode 100644
      index b676c81360..0000000000
      --- a/bower_components/jquery-slimscroll/examples/style.css
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -body { font-family:Verdana,sans-serif; font-size:12px; color:#000; background:#111; }
      -h1 { font-size:20px; margin:0 }
      -h2 { font-size:10px; margin:0 }
      -p { margin:5px 0; font-size:12px; }
      -pre.prettyprint { padding:15px; border:1px solid #eee; border-radius:5px; background:#eee; border-bottom:3px solid; }
      -.examples { border-radius:20px; background:#fff; padding:15px;
      -  margin:0 150px 0 0; border-collapse: collapse; border:1px solid #000; }
      -.slimScrollDiv { border:1px solid #eee; }
      -#nav { position:fixed; top:0; left:0; background:#fff; padding:15px; border-radius:20px; width:200px; }
      -#nav ul { list-style-type:square; list-style-position:inside; margin:20px 0 0 0; padding:0; }
      -#nav a { text-decoration:none; color:#000; }
      -#nav a:hover { text-decoration: underline }
      -#git-fork img { position:fixed; top:0; right:0; border:0; z-index:999; }
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/jquery.slimscroll.js b/bower_components/jquery-slimscroll/jquery.slimscroll.js
      deleted file mode 100644
      index 90caed348a..0000000000
      --- a/bower_components/jquery-slimscroll/jquery.slimscroll.js
      +++ /dev/null
      @@ -1,474 +0,0 @@
      -/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
      - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
      - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
      - *
      - * Version: 1.3.8
      - *
      - */
      -(function($) {
      -
      -  $.fn.extend({
      -    slimScroll: function(options) {
      -
      -      var defaults = {
      -
      -        // width in pixels of the visible scroll area
      -        width : 'auto',
      -
      -        // height in pixels of the visible scroll area
      -        height : '250px',
      -
      -        // width in pixels of the scrollbar and rail
      -        size : '7px',
      -
      -        // scrollbar color, accepts any hex/color value
      -        color: '#000',
      -
      -        // scrollbar position - left/right
      -        position : 'right',
      -
      -        // distance in pixels between the side edge and the scrollbar
      -        distance : '1px',
      -
      -        // default scroll position on load - top / bottom / $('selector')
      -        start : 'top',
      -
      -        // sets scrollbar opacity
      -        opacity : .4,
      -
      -        // enables always-on mode for the scrollbar
      -        alwaysVisible : false,
      -
      -        // check if we should hide the scrollbar when user is hovering over
      -        disableFadeOut : false,
      -
      -        // sets visibility of the rail
      -        railVisible : false,
      -
      -        // sets rail color
      -        railColor : '#333',
      -
      -        // sets rail opacity
      -        railOpacity : .2,
      -
      -        // whether  we should use jQuery UI Draggable to enable bar dragging
      -        railDraggable : true,
      -
      -        // defautlt CSS class of the slimscroll rail
      -        railClass : 'slimScrollRail',
      -
      -        // defautlt CSS class of the slimscroll bar
      -        barClass : 'slimScrollBar',
      -
      -        // defautlt CSS class of the slimscroll wrapper
      -        wrapperClass : 'slimScrollDiv',
      -
      -        // check if mousewheel should scroll the window if we reach top/bottom
      -        allowPageScroll : false,
      -
      -        // scroll amount applied to each mouse wheel step
      -        wheelStep : 20,
      -
      -        // scroll amount applied when user is using gestures
      -        touchScrollStep : 200,
      -
      -        // sets border radius
      -        borderRadius: '7px',
      -
      -        // sets border radius of the rail
      -        railBorderRadius : '7px'
      -      };
      -
      -      var o = $.extend(defaults, options);
      -
      -      // do it for every element that matches selector
      -      this.each(function(){
      -
      -      var isOverPanel, isOverBar, isDragg, queueHide, touchDif,
      -        barHeight, percentScroll, lastScroll,
      -        divS = '<div></div>',
      -        minBarHeight = 30,
      -        releaseScroll = false;
      -
      -        // used in event handlers and for better minification
      -        var me = $(this);
      -
      -        // ensure we are not binding it again
      -        if (me.parent().hasClass(o.wrapperClass))
      -        {
      -            // start from last bar position
      -            var offset = me.scrollTop();
      -
      -            // find bar and rail
      -            bar = me.siblings('.' + o.barClass);
      -            rail = me.siblings('.' + o.railClass);
      -
      -            getBarHeight();
      -
      -            // check if we should scroll existing instance
      -            if ($.isPlainObject(options))
      -            {
      -              // Pass height: auto to an existing slimscroll object to force a resize after contents have changed
      -              if ( 'height' in options && options.height == 'auto' ) {
      -                me.parent().css('height', 'auto');
      -                me.css('height', 'auto');
      -                var height = me.parent().parent().height();
      -                me.parent().css('height', height);
      -                me.css('height', height);
      -              } else if ('height' in options) {
      -                var h = options.height;
      -                me.parent().css('height', h);
      -                me.css('height', h);
      -              }
      -
      -              if ('scrollTo' in options)
      -              {
      -                // jump to a static point
      -                offset = parseInt(o.scrollTo);
      -              }
      -              else if ('scrollBy' in options)
      -              {
      -                // jump by value pixels
      -                offset += parseInt(o.scrollBy);
      -              }
      -              else if ('destroy' in options)
      -              {
      -                // remove slimscroll elements
      -                bar.remove();
      -                rail.remove();
      -                me.unwrap();
      -                return;
      -              }
      -
      -              // scroll content by the given offset
      -              scrollContent(offset, false, true);
      -            }
      -
      -            return;
      -        }
      -        else if ($.isPlainObject(options))
      -        {
      -            if ('destroy' in options)
      -            {
      -            	return;
      -            }
      -        }
      -
      -        // optionally set height to the parent's height
      -        o.height = (o.height == 'auto') ? me.parent().height() : o.height;
      -
      -        // wrap content
      -        var wrapper = $(divS)
      -          .addClass(o.wrapperClass)
      -          .css({
      -            position: 'relative',
      -            overflow: 'hidden',
      -            width: o.width,
      -            height: o.height
      -          });
      -
      -        // update style for the div
      -        me.css({
      -          overflow: 'hidden',
      -          width: o.width,
      -          height: o.height
      -        });
      -
      -        // create scrollbar rail
      -        var rail = $(divS)
      -          .addClass(o.railClass)
      -          .css({
      -            width: o.size,
      -            height: '100%',
      -            position: 'absolute',
      -            top: 0,
      -            display: (o.alwaysVisible && o.railVisible) ? 'block' : 'none',
      -            'border-radius': o.railBorderRadius,
      -            background: o.railColor,
      -            opacity: o.railOpacity,
      -            zIndex: 90
      -          });
      -
      -        // create scrollbar
      -        var bar = $(divS)
      -          .addClass(o.barClass)
      -          .css({
      -            background: o.color,
      -            width: o.size,
      -            position: 'absolute',
      -            top: 0,
      -            opacity: o.opacity,
      -            display: o.alwaysVisible ? 'block' : 'none',
      -            'border-radius' : o.borderRadius,
      -            BorderRadius: o.borderRadius,
      -            MozBorderRadius: o.borderRadius,
      -            WebkitBorderRadius: o.borderRadius,
      -            zIndex: 99
      -          });
      -
      -        // set position
      -        var posCss = (o.position == 'right') ? { right: o.distance } : { left: o.distance };
      -        rail.css(posCss);
      -        bar.css(posCss);
      -
      -        // wrap it
      -        me.wrap(wrapper);
      -
      -        // append to parent div
      -        me.parent().append(bar);
      -        me.parent().append(rail);
      -
      -        // make it draggable and no longer dependent on the jqueryUI
      -        if (o.railDraggable){
      -          bar.bind("mousedown", function(e) {
      -            var $doc = $(document);
      -            isDragg = true;
      -            t = parseFloat(bar.css('top'));
      -            pageY = e.pageY;
      -
      -            $doc.bind("mousemove.slimscroll", function(e){
      -              currTop = t + e.pageY - pageY;
      -              bar.css('top', currTop);
      -              scrollContent(0, bar.position().top, false);// scroll content
      -            });
      -
      -            $doc.bind("mouseup.slimscroll", function(e) {
      -              isDragg = false;hideBar();
      -              $doc.unbind('.slimscroll');
      -            });
      -            return false;
      -          }).bind("selectstart.slimscroll", function(e){
      -            e.stopPropagation();
      -            e.preventDefault();
      -            return false;
      -          });
      -        }
      -
      -        // on rail over
      -        rail.hover(function(){
      -          showBar();
      -        }, function(){
      -          hideBar();
      -        });
      -
      -        // on bar over
      -        bar.hover(function(){
      -          isOverBar = true;
      -        }, function(){
      -          isOverBar = false;
      -        });
      -
      -        // show on parent mouseover
      -        me.hover(function(){
      -          isOverPanel = true;
      -          showBar();
      -          hideBar();
      -        }, function(){
      -          isOverPanel = false;
      -          hideBar();
      -        });
      -
      -        // support for mobile
      -        me.bind('touchstart', function(e,b){
      -          if (e.originalEvent.touches.length)
      -          {
      -            // record where touch started
      -            touchDif = e.originalEvent.touches[0].pageY;
      -          }
      -        });
      -
      -        me.bind('touchmove', function(e){
      -          // prevent scrolling the page if necessary
      -          if(!releaseScroll)
      -          {
      -  		      e.originalEvent.preventDefault();
      -		      }
      -          if (e.originalEvent.touches.length)
      -          {
      -            // see how far user swiped
      -            var diff = (touchDif - e.originalEvent.touches[0].pageY) / o.touchScrollStep;
      -            // scroll content
      -            scrollContent(diff, true);
      -            touchDif = e.originalEvent.touches[0].pageY;
      -          }
      -        });
      -
      -        // set up initial height
      -        getBarHeight();
      -
      -        // check start position
      -        if (o.start === 'bottom')
      -        {
      -          // scroll content to bottom
      -          bar.css({ top: me.outerHeight() - bar.outerHeight() });
      -          scrollContent(0, true);
      -        }
      -        else if (o.start !== 'top')
      -        {
      -          // assume jQuery selector
      -          scrollContent($(o.start).position().top, null, true);
      -
      -          // make sure bar stays hidden
      -          if (!o.alwaysVisible) { bar.hide(); }
      -        }
      -
      -        // attach scroll events
      -        attachWheel(this);
      -
      -        function _onWheel(e)
      -        {
      -          // use mouse wheel only when mouse is over
      -          if (!isOverPanel) { return; }
      -
      -          var e = e || window.event;
      -
      -          var delta = 0;
      -          if (e.wheelDelta) { delta = -e.wheelDelta/120; }
      -          if (e.detail) { delta = e.detail / 3; }
      -
      -          var target = e.target || e.srcTarget || e.srcElement;
      -          if ($(target).closest('.' + o.wrapperClass).is(me.parent())) {
      -            // scroll content
      -            scrollContent(delta, true);
      -          }
      -
      -          // stop window scroll
      -          if (e.preventDefault && !releaseScroll) { e.preventDefault(); }
      -          if (!releaseScroll) { e.returnValue = false; }
      -        }
      -
      -        function scrollContent(y, isWheel, isJump)
      -        {
      -          releaseScroll = false;
      -          var delta = y;
      -          var maxTop = me.outerHeight() - bar.outerHeight();
      -
      -          if (isWheel)
      -          {
      -            // move bar with mouse wheel
      -            delta = parseInt(bar.css('top')) + y * parseInt(o.wheelStep) / 100 * bar.outerHeight();
      -
      -            // move bar, make sure it doesn't go out
      -            delta = Math.min(Math.max(delta, 0), maxTop);
      -
      -            // if scrolling down, make sure a fractional change to the
      -            // scroll position isn't rounded away when the scrollbar's CSS is set
      -            // this flooring of delta would happened automatically when
      -            // bar.css is set below, but we floor here for clarity
      -            delta = (y > 0) ? Math.ceil(delta) : Math.floor(delta);
      -
      -            // scroll the scrollbar
      -            bar.css({ top: delta + 'px' });
      -          }
      -
      -          // calculate actual scroll amount
      -          percentScroll = parseInt(bar.css('top')) / (me.outerHeight() - bar.outerHeight());
      -          delta = percentScroll * (me[0].scrollHeight - me.outerHeight());
      -
      -          if (isJump)
      -          {
      -            delta = y;
      -            var offsetTop = delta / me[0].scrollHeight * me.outerHeight();
      -            offsetTop = Math.min(Math.max(offsetTop, 0), maxTop);
      -            bar.css({ top: offsetTop + 'px' });
      -          }
      -
      -          // scroll content
      -          me.scrollTop(delta);
      -
      -          // fire scrolling event
      -          me.trigger('slimscrolling', ~~delta);
      -
      -          // ensure bar is visible
      -          showBar();
      -
      -          // trigger hide when scroll is stopped
      -          hideBar();
      -        }
      -
      -        function attachWheel(target)
      -        {
      -          if (window.addEventListener)
      -          {
      -            target.addEventListener('DOMMouseScroll', _onWheel, false );
      -            target.addEventListener('mousewheel', _onWheel, false );
      -          }
      -          else
      -          {
      -            document.attachEvent("onmousewheel", _onWheel)
      -          }
      -        }
      -
      -        function getBarHeight()
      -        {
      -          // calculate scrollbar height and make sure it is not too small
      -          barHeight = Math.max((me.outerHeight() / me[0].scrollHeight) * me.outerHeight(), minBarHeight);
      -          bar.css({ height: barHeight + 'px' });
      -
      -          // hide scrollbar if content is not long enough
      -          var display = barHeight == me.outerHeight() ? 'none' : 'block';
      -          bar.css({ display: display });
      -        }
      -
      -        function showBar()
      -        {
      -          // recalculate bar height
      -          getBarHeight();
      -          clearTimeout(queueHide);
      -
      -          // when bar reached top or bottom
      -          if (percentScroll == ~~percentScroll)
      -          {
      -            //release wheel
      -            releaseScroll = o.allowPageScroll;
      -
      -            // publish approporiate event
      -            if (lastScroll != percentScroll)
      -            {
      -                var msg = (~~percentScroll == 0) ? 'top' : 'bottom';
      -                me.trigger('slimscroll', msg);
      -            }
      -          }
      -          else
      -          {
      -            releaseScroll = false;
      -          }
      -          lastScroll = percentScroll;
      -
      -          // show only when required
      -          if(barHeight >= me.outerHeight()) {
      -            //allow window scroll
      -            releaseScroll = true;
      -            return;
      -          }
      -          bar.stop(true,true).fadeIn('fast');
      -          if (o.railVisible) { rail.stop(true,true).fadeIn('fast'); }
      -        }
      -
      -        function hideBar()
      -        {
      -          // only hide when options allow it
      -          if (!o.alwaysVisible)
      -          {
      -            queueHide = setTimeout(function(){
      -              if (!(o.disableFadeOut && isOverPanel) && !isOverBar && !isDragg)
      -              {
      -                bar.fadeOut('slow');
      -                rail.fadeOut('slow');
      -              }
      -            }, 1000);
      -          }
      -        }
      -
      -      });
      -
      -      // maintain chainability
      -      return this;
      -    }
      -  });
      -
      -  $.fn.extend({
      -    slimscroll: $.fn.slimScroll
      -  });
      -
      -})(jQuery);
      diff --git a/bower_components/jquery-slimscroll/jquery.slimscroll.min.js b/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
      deleted file mode 100644
      index 7531ab35f4..0000000000
      --- a/bower_components/jquery-slimscroll/jquery.slimscroll.min.js
      +++ /dev/null
      @@ -1,16 +0,0 @@
      -/*! Copyright (c) 2011 Piotr Rochala (http://rocha.la)
      - * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
      - * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
      - *
      - * Version: 1.3.8
      - *
      - */
      -(function(e){e.fn.extend({slimScroll:function(f){var a=e.extend({width:"auto",height:"250px",size:"7px",color:"#000",position:"right",distance:"1px",start:"top",opacity:.4,alwaysVisible:!1,disableFadeOut:!1,railVisible:!1,railColor:"#333",railOpacity:.2,railDraggable:!0,railClass:"slimScrollRail",barClass:"slimScrollBar",wrapperClass:"slimScrollDiv",allowPageScroll:!1,wheelStep:20,touchScrollStep:200,borderRadius:"7px",railBorderRadius:"7px"},f);this.each(function(){function v(d){if(r){d=d||window.event;
      -var c=0;d.wheelDelta&&(c=-d.wheelDelta/120);d.detail&&(c=d.detail/3);e(d.target||d.srcTarget||d.srcElement).closest("."+a.wrapperClass).is(b.parent())&&n(c,!0);d.preventDefault&&!k&&d.preventDefault();k||(d.returnValue=!1)}}function n(d,g,e){k=!1;var f=b.outerHeight()-c.outerHeight();g&&(g=parseInt(c.css("top"))+d*parseInt(a.wheelStep)/100*c.outerHeight(),g=Math.min(Math.max(g,0),f),g=0<d?Math.ceil(g):Math.floor(g),c.css({top:g+"px"}));l=parseInt(c.css("top"))/(b.outerHeight()-c.outerHeight());g=
      -l*(b[0].scrollHeight-b.outerHeight());e&&(g=d,d=g/b[0].scrollHeight*b.outerHeight(),d=Math.min(Math.max(d,0),f),c.css({top:d+"px"}));b.scrollTop(g);b.trigger("slimscrolling",~~g);w();p()}function x(){u=Math.max(b.outerHeight()/b[0].scrollHeight*b.outerHeight(),30);c.css({height:u+"px"});var a=u==b.outerHeight()?"none":"block";c.css({display:a})}function w(){x();clearTimeout(B);l==~~l?(k=a.allowPageScroll,C!=l&&b.trigger("slimscroll",0==~~l?"top":"bottom")):k=!1;C=l;u>=b.outerHeight()?k=!0:(c.stop(!0,
      -!0).fadeIn("fast"),a.railVisible&&m.stop(!0,!0).fadeIn("fast"))}function p(){a.alwaysVisible||(B=setTimeout(function(){a.disableFadeOut&&r||y||z||(c.fadeOut("slow"),m.fadeOut("slow"))},1E3))}var r,y,z,B,A,u,l,C,k=!1,b=e(this);if(b.parent().hasClass(a.wrapperClass)){var q=b.scrollTop(),c=b.siblings("."+a.barClass),m=b.siblings("."+a.railClass);x();if(e.isPlainObject(f)){if("height"in f&&"auto"==f.height){b.parent().css("height","auto");b.css("height","auto");var h=b.parent().parent().height();b.parent().css("height",
      -h);b.css("height",h)}else"height"in f&&(h=f.height,b.parent().css("height",h),b.css("height",h));if("scrollTo"in f)q=parseInt(a.scrollTo);else if("scrollBy"in f)q+=parseInt(a.scrollBy);else if("destroy"in f){c.remove();m.remove();b.unwrap();return}n(q,!1,!0)}}else if(!(e.isPlainObject(f)&&"destroy"in f)){a.height="auto"==a.height?b.parent().height():a.height;q=e("<div></div>").addClass(a.wrapperClass).css({position:"relative",overflow:"hidden",width:a.width,height:a.height});b.css({overflow:"hidden",
      -width:a.width,height:a.height});var m=e("<div></div>").addClass(a.railClass).css({width:a.size,height:"100%",position:"absolute",top:0,display:a.alwaysVisible&&a.railVisible?"block":"none","border-radius":a.railBorderRadius,background:a.railColor,opacity:a.railOpacity,zIndex:90}),c=e("<div></div>").addClass(a.barClass).css({background:a.color,width:a.size,position:"absolute",top:0,opacity:a.opacity,display:a.alwaysVisible?"block":"none","border-radius":a.borderRadius,BorderRadius:a.borderRadius,MozBorderRadius:a.borderRadius,
      -WebkitBorderRadius:a.borderRadius,zIndex:99}),h="right"==a.position?{right:a.distance}:{left:a.distance};m.css(h);c.css(h);b.wrap(q);b.parent().append(c);b.parent().append(m);a.railDraggable&&c.bind("mousedown",function(a){var b=e(document);z=!0;t=parseFloat(c.css("top"));pageY=a.pageY;b.bind("mousemove.slimscroll",function(a){currTop=t+a.pageY-pageY;c.css("top",currTop);n(0,c.position().top,!1)});b.bind("mouseup.slimscroll",function(a){z=!1;p();b.unbind(".slimscroll")});return!1}).bind("selectstart.slimscroll",
      -function(a){a.stopPropagation();a.preventDefault();return!1});m.hover(function(){w()},function(){p()});c.hover(function(){y=!0},function(){y=!1});b.hover(function(){r=!0;w();p()},function(){r=!1;p()});b.bind("touchstart",function(a,b){a.originalEvent.touches.length&&(A=a.originalEvent.touches[0].pageY)});b.bind("touchmove",function(b){k||b.originalEvent.preventDefault();b.originalEvent.touches.length&&(n((A-b.originalEvent.touches[0].pageY)/a.touchScrollStep,!0),A=b.originalEvent.touches[0].pageY)});
      -x();"bottom"===a.start?(c.css({top:b.outerHeight()-c.outerHeight()}),n(0,!0)):"top"!==a.start&&(n(e(a.start).position().top,null,!0),a.alwaysVisible||c.hide());window.addEventListener?(this.addEventListener("DOMMouseScroll",v,!1),this.addEventListener("mousewheel",v,!1)):document.attachEvent("onmousewheel",v)}});return this}});e.fn.extend({slimscroll:e.fn.slimScroll})})(jQuery);
      \ No newline at end of file
      diff --git a/bower_components/jquery-slimscroll/package.json b/bower_components/jquery-slimscroll/package.json
      deleted file mode 100644
      index 147e92deff..0000000000
      --- a/bower_components/jquery-slimscroll/package.json
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -{
      -  "name"        : "jquery-slimscroll",
      -  "main"        : "jquery.slimscroll.js",
      -  "version"     : "1.3.8",
      -  "title"       : "jQuery slimScroll scrollbar",
      -  "description" : "slimScroll is a small jQuery plugin that transforms any div into a scrollable area. slimScroll doesn't occupy any visual space as it only appears on a user initiated mouse-over.",
      -  "keywords"    : ["scrollbar", "scroll", "slimscroll", "scrollable", "scrolling", "scroller", "ui", "jquery-plugin", "ecosystem:jquery"],
      -  "homepage"    : "http://rocha.la/jQuery-slimScroll/",
      -  "repository": {
      -    "type": "git",
      -    "url": "https://github.com/rochal/jQuery-slimScroll.git"
      -  },
      -  "author" : {
      -    "name"  : "Piotr Rochala",
      -    "url"   : "http://rocha.la/"
      -  },
      -
      -  "dependencies" : {
      -    "jquery" : ">= 1.7"
      -  },
      -
      -  "licenses" : [
      -    {
      -      "type": "MIT",
      -      "url": "http://www.opensource.org/licenses/mit-license.php"
      -    },
      -    {
      -      "type": "GPL",
      -      "url": "http://www.opensource.org/licenses/gpl-license.php"
      -    }
      -  ]
      -}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/.bower.json b/bower_components/jquery-ui/.bower.json
      deleted file mode 100644
      index d74dd89dbb..0000000000
      --- a/bower_components/jquery-ui/.bower.json
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -{
      -  "name": "jquery-ui",
      -  "version": "1.12.1",
      -  "main": [
      -    "jquery-ui.js"
      -  ],
      -  "ignore": [],
      -  "license": "MIT",
      -  "dependencies": {
      -    "jquery": ">=1.6"
      -  },
      -  "homepage": "https://github.com/components/jqueryui",
      -  "_release": "1.12.1",
      -  "_resolution": {
      -    "type": "version",
      -    "tag": "1.12.1",
      -    "commit": "44ecf3794cc56b65954cc19737234a3119d036cc"
      -  },
      -  "_source": "https://github.com/components/jqueryui.git",
      -  "_target": "^1.12.1",
      -  "_originalSource": "jquery-ui",
      -  "_direct": true
      -}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/.gitignore b/bower_components/jquery-ui/.gitignore
      deleted file mode 100644
      index cfcaf7a64a..0000000000
      --- a/bower_components/jquery-ui/.gitignore
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -components
      -composer.lock
      -vendor
      -.DS_Store
      diff --git a/bower_components/jquery-ui/README.md b/bower_components/jquery-ui/README.md
      deleted file mode 100644
      index 749a76ec3d..0000000000
      --- a/bower_components/jquery-ui/README.md
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -jQuery UI
      -=========
      -
      -Shim [repository](https://github.com/components/jqueryui) for the [jQuery UI](https://jqueryui.com).
      -
      -Package Managers
      -----------------
      -
      -* [Bower](http://bower.io/): `jquery-ui`
      -* [Component](https://github.com/component/component): `components/jquery-ui`
      -* [Composer](http://packagist.org/packages/components/jquery): `components/jqueryui`
      -* [npm](https://www.npmjs.com/): `components-jqueryui`
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/bower.json b/bower_components/jquery-ui/bower.json
      deleted file mode 100644
      index 965aba7b03..0000000000
      --- a/bower_components/jquery-ui/bower.json
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -{
      -  "name": "jquery-ui",
      -  "version": "1.12.1",
      -  "main": [
      -    "jquery-ui.js"
      -  ],
      -  "ignore": [
      -  ],
      -  "license": "MIT",
      -  "dependencies": {
      -    "jquery": ">=1.6"
      -  }
      -}
      diff --git a/bower_components/jquery-ui/component.json b/bower_components/jquery-ui/component.json
      deleted file mode 100644
      index 25188ae755..0000000000
      --- a/bower_components/jquery-ui/component.json
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -{
      -  "name": "jquery-ui",
      -  "repo": "components/jqueryui",
      -  "version": "1.12.1",
      -  "license": "MIT",
      -  "scripts": [
      -    "jquery-ui.js"
      -  ],
      -  "main": "jquery-ui.js",
      -  "dependencies": {
      -    "components/jquery": "*"
      -  }
      -}
      diff --git a/bower_components/jquery-ui/composer.json b/bower_components/jquery-ui/composer.json
      deleted file mode 100644
      index cea9ab6582..0000000000
      --- a/bower_components/jquery-ui/composer.json
      +++ /dev/null
      @@ -1,69 +0,0 @@
      -{
      -    "name": "components/jqueryui",
      -    "type": "component",
      -    "description": "jQuery UI is a curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library. Whether you're building highly interactive web applications or you just need to add a date picker to a form control, jQuery UI is the perfect choice.",
      -    "license": "MIT",
      -    "require": {
      -        "components/jquery": ">=1.6"
      -    },
      -    "authors": [
      -        {
      -            "name": "jQuery UI Team",
      -            "homepage": "http://jqueryui.com/about"
      -        },
      -        {
      -            "name": "Scott Gonzalez",
      -            "email": "scott.gonzalez@gmail.com",
      -            "homepage": "http://scottgonzalez.com"
      -        },
      -        {
      -            "name": "Joern Zaefferer",
      -            "email": "joern.zaefferer@gmail.com",
      -            "homepage": "http://bassistance.de"
      -        },
      -        {
      -            "name": "Kris Borchers",
      -            "email": "kris.borchers@gmail.com",
      -            "homepage": "http://krisborchers.com"
      -        },
      -        {
      -            "name": "Corey Frang",
      -            "email": "gnarf37@gmail.com",
      -            "homepage": "http://gnarf.net"
      -        },
      -        {
      -            "name": "Mike Sherov",
      -            "email": "mike.sherov@gmail.com",
      -            "homepage": "http://mike.sherov.com"
      -        },
      -        {
      -            "name": "TJ VanToll",
      -            "email": "tj.vantoll@gmail.com",
      -            "homepage": "http://tjvantoll.com"
      -        },
      -        {
      -            "name": "Felix Nagel",
      -            "email": "info@felixnagel.com",
      -            "homepage": "http://www.felixnagel.com"
      -        }
      -    ],
      -    "extra": {
      -        "component": {
      -            "name": "jquery-ui",
      -            "scripts": [
      -                "jquery-ui.js"
      -            ],
      -            "files": [
      -                "ui/**",
      -                "themes/**",
      -                "jquery-ui.min.js"
      -            ],
      -            "shim": {
      -                "deps": [
      -                    "jquery"
      -                ],
      -                "exports": "jQuery"
      -            }
      -        }
      -    }
      -}
      diff --git a/bower_components/jquery-ui/jquery-ui.js b/bower_components/jquery-ui/jquery-ui.js
      deleted file mode 100644
      index 0213552372..0000000000
      --- a/bower_components/jquery-ui/jquery-ui.js
      +++ /dev/null
      @@ -1,18706 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -(function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define([ "jquery" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}(function( $ ) {
      -
      -$.ui = $.ui || {};
      -
      -var version = $.ui.version = "1.12.1";
      -
      -
      -/*!
      - * jQuery UI Widget 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Widget
      -//>>group: Core
      -//>>description: Provides a factory for creating stateful widgets with a common API.
      -//>>docs: http://api.jqueryui.com/jQuery.widget/
      -//>>demos: http://jqueryui.com/widget/
      -
      -
      -
      -var widgetUuid = 0;
      -var widgetSlice = Array.prototype.slice;
      -
      -$.cleanData = ( function( orig ) {
      -	return function( elems ) {
      -		var events, elem, i;
      -		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
      -			try {
      -
      -				// Only trigger remove when necessary to save time
      -				events = $._data( elem, "events" );
      -				if ( events && events.remove ) {
      -					$( elem ).triggerHandler( "remove" );
      -				}
      -
      -			// Http://bugs.jquery.com/ticket/8235
      -			} catch ( e ) {}
      -		}
      -		orig( elems );
      -	};
      -} )( $.cleanData );
      -
      -$.widget = function( name, base, prototype ) {
      -	var existingConstructor, constructor, basePrototype;
      -
      -	// ProxiedPrototype allows the provided prototype to remain unmodified
      -	// so that it can be used as a mixin for multiple widgets (#8876)
      -	var proxiedPrototype = {};
      -
      -	var namespace = name.split( "." )[ 0 ];
      -	name = name.split( "." )[ 1 ];
      -	var fullName = namespace + "-" + name;
      -
      -	if ( !prototype ) {
      -		prototype = base;
      -		base = $.Widget;
      -	}
      -
      -	if ( $.isArray( prototype ) ) {
      -		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
      -	}
      -
      -	// Create selector for plugin
      -	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
      -		return !!$.data( elem, fullName );
      -	};
      -
      -	$[ namespace ] = $[ namespace ] || {};
      -	existingConstructor = $[ namespace ][ name ];
      -	constructor = $[ namespace ][ name ] = function( options, element ) {
      -
      -		// Allow instantiation without "new" keyword
      -		if ( !this._createWidget ) {
      -			return new constructor( options, element );
      -		}
      -
      -		// Allow instantiation without initializing for simple inheritance
      -		// must use "new" keyword (the code above always passes args)
      -		if ( arguments.length ) {
      -			this._createWidget( options, element );
      -		}
      -	};
      -
      -	// Extend with the existing constructor to carry over any static properties
      -	$.extend( constructor, existingConstructor, {
      -		version: prototype.version,
      -
      -		// Copy the object used to create the prototype in case we need to
      -		// redefine the widget later
      -		_proto: $.extend( {}, prototype ),
      -
      -		// Track widgets that inherit from this widget in case this widget is
      -		// redefined after a widget inherits from it
      -		_childConstructors: []
      -	} );
      -
      -	basePrototype = new base();
      -
      -	// We need to make the options hash a property directly on the new instance
      -	// otherwise we'll modify the options hash on the prototype that we're
      -	// inheriting from
      -	basePrototype.options = $.widget.extend( {}, basePrototype.options );
      -	$.each( prototype, function( prop, value ) {
      -		if ( !$.isFunction( value ) ) {
      -			proxiedPrototype[ prop ] = value;
      -			return;
      -		}
      -		proxiedPrototype[ prop ] = ( function() {
      -			function _super() {
      -				return base.prototype[ prop ].apply( this, arguments );
      -			}
      -
      -			function _superApply( args ) {
      -				return base.prototype[ prop ].apply( this, args );
      -			}
      -
      -			return function() {
      -				var __super = this._super;
      -				var __superApply = this._superApply;
      -				var returnValue;
      -
      -				this._super = _super;
      -				this._superApply = _superApply;
      -
      -				returnValue = value.apply( this, arguments );
      -
      -				this._super = __super;
      -				this._superApply = __superApply;
      -
      -				return returnValue;
      -			};
      -		} )();
      -	} );
      -	constructor.prototype = $.widget.extend( basePrototype, {
      -
      -		// TODO: remove support for widgetEventPrefix
      -		// always use the name + a colon as the prefix, e.g., draggable:start
      -		// don't prefix for widgets that aren't DOM-based
      -		widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name
      -	}, proxiedPrototype, {
      -		constructor: constructor,
      -		namespace: namespace,
      -		widgetName: name,
      -		widgetFullName: fullName
      -	} );
      -
      -	// If this widget is being redefined then we need to find all widgets that
      -	// are inheriting from it and redefine all of them so that they inherit from
      -	// the new version of this widget. We're essentially trying to replace one
      -	// level in the prototype chain.
      -	if ( existingConstructor ) {
      -		$.each( existingConstructor._childConstructors, function( i, child ) {
      -			var childPrototype = child.prototype;
      -
      -			// Redefine the child widget using the same prototype that was
      -			// originally used, but inherit from the new version of the base
      -			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor,
      -				child._proto );
      -		} );
      -
      -		// Remove the list of existing child constructors from the old constructor
      -		// so the old child constructors can be garbage collected
      -		delete existingConstructor._childConstructors;
      -	} else {
      -		base._childConstructors.push( constructor );
      -	}
      -
      -	$.widget.bridge( name, constructor );
      -
      -	return constructor;
      -};
      -
      -$.widget.extend = function( target ) {
      -	var input = widgetSlice.call( arguments, 1 );
      -	var inputIndex = 0;
      -	var inputLength = input.length;
      -	var key;
      -	var value;
      -
      -	for ( ; inputIndex < inputLength; inputIndex++ ) {
      -		for ( key in input[ inputIndex ] ) {
      -			value = input[ inputIndex ][ key ];
      -			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
      -
      -				// Clone objects
      -				if ( $.isPlainObject( value ) ) {
      -					target[ key ] = $.isPlainObject( target[ key ] ) ?
      -						$.widget.extend( {}, target[ key ], value ) :
      -
      -						// Don't extend strings, arrays, etc. with objects
      -						$.widget.extend( {}, value );
      -
      -				// Copy everything else by reference
      -				} else {
      -					target[ key ] = value;
      -				}
      -			}
      -		}
      -	}
      -	return target;
      -};
      -
      -$.widget.bridge = function( name, object ) {
      -	var fullName = object.prototype.widgetFullName || name;
      -	$.fn[ name ] = function( options ) {
      -		var isMethodCall = typeof options === "string";
      -		var args = widgetSlice.call( arguments, 1 );
      -		var returnValue = this;
      -
      -		if ( isMethodCall ) {
      -
      -			// If this is an empty collection, we need to have the instance method
      -			// return undefined instead of the jQuery instance
      -			if ( !this.length && options === "instance" ) {
      -				returnValue = undefined;
      -			} else {
      -				this.each( function() {
      -					var methodValue;
      -					var instance = $.data( this, fullName );
      -
      -					if ( options === "instance" ) {
      -						returnValue = instance;
      -						return false;
      -					}
      -
      -					if ( !instance ) {
      -						return $.error( "cannot call methods on " + name +
      -							" prior to initialization; " +
      -							"attempted to call method '" + options + "'" );
      -					}
      -
      -					if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
      -						return $.error( "no such method '" + options + "' for " + name +
      -							" widget instance" );
      -					}
      -
      -					methodValue = instance[ options ].apply( instance, args );
      -
      -					if ( methodValue !== instance && methodValue !== undefined ) {
      -						returnValue = methodValue && methodValue.jquery ?
      -							returnValue.pushStack( methodValue.get() ) :
      -							methodValue;
      -						return false;
      -					}
      -				} );
      -			}
      -		} else {
      -
      -			// Allow multiple hashes to be passed on init
      -			if ( args.length ) {
      -				options = $.widget.extend.apply( null, [ options ].concat( args ) );
      -			}
      -
      -			this.each( function() {
      -				var instance = $.data( this, fullName );
      -				if ( instance ) {
      -					instance.option( options || {} );
      -					if ( instance._init ) {
      -						instance._init();
      -					}
      -				} else {
      -					$.data( this, fullName, new object( options, this ) );
      -				}
      -			} );
      -		}
      -
      -		return returnValue;
      -	};
      -};
      -
      -$.Widget = function( /* options, element */ ) {};
      -$.Widget._childConstructors = [];
      -
      -$.Widget.prototype = {
      -	widgetName: "widget",
      -	widgetEventPrefix: "",
      -	defaultElement: "<div>",
      -
      -	options: {
      -		classes: {},
      -		disabled: false,
      -
      -		// Callbacks
      -		create: null
      -	},
      -
      -	_createWidget: function( options, element ) {
      -		element = $( element || this.defaultElement || this )[ 0 ];
      -		this.element = $( element );
      -		this.uuid = widgetUuid++;
      -		this.eventNamespace = "." + this.widgetName + this.uuid;
      -
      -		this.bindings = $();
      -		this.hoverable = $();
      -		this.focusable = $();
      -		this.classesElementLookup = {};
      -
      -		if ( element !== this ) {
      -			$.data( element, this.widgetFullName, this );
      -			this._on( true, this.element, {
      -				remove: function( event ) {
      -					if ( event.target === element ) {
      -						this.destroy();
      -					}
      -				}
      -			} );
      -			this.document = $( element.style ?
      -
      -				// Element within the document
      -				element.ownerDocument :
      -
      -				// Element is window or document
      -				element.document || element );
      -			this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );
      -		}
      -
      -		this.options = $.widget.extend( {},
      -			this.options,
      -			this._getCreateOptions(),
      -			options );
      -
      -		this._create();
      -
      -		if ( this.options.disabled ) {
      -			this._setOptionDisabled( this.options.disabled );
      -		}
      -
      -		this._trigger( "create", null, this._getCreateEventData() );
      -		this._init();
      -	},
      -
      -	_getCreateOptions: function() {
      -		return {};
      -	},
      -
      -	_getCreateEventData: $.noop,
      -
      -	_create: $.noop,
      -
      -	_init: $.noop,
      -
      -	destroy: function() {
      -		var that = this;
      -
      -		this._destroy();
      -		$.each( this.classesElementLookup, function( key, value ) {
      -			that._removeClass( value, key );
      -		} );
      -
      -		// We can probably remove the unbind calls in 2.0
      -		// all event bindings should go through this._on()
      -		this.element
      -			.off( this.eventNamespace )
      -			.removeData( this.widgetFullName );
      -		this.widget()
      -			.off( this.eventNamespace )
      -			.removeAttr( "aria-disabled" );
      -
      -		// Clean up events and states
      -		this.bindings.off( this.eventNamespace );
      -	},
      -
      -	_destroy: $.noop,
      -
      -	widget: function() {
      -		return this.element;
      -	},
      -
      -	option: function( key, value ) {
      -		var options = key;
      -		var parts;
      -		var curOption;
      -		var i;
      -
      -		if ( arguments.length === 0 ) {
      -
      -			// Don't return a reference to the internal hash
      -			return $.widget.extend( {}, this.options );
      -		}
      -
      -		if ( typeof key === "string" ) {
      -
      -			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
      -			options = {};
      -			parts = key.split( "." );
      -			key = parts.shift();
      -			if ( parts.length ) {
      -				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
      -				for ( i = 0; i < parts.length - 1; i++ ) {
      -					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
      -					curOption = curOption[ parts[ i ] ];
      -				}
      -				key = parts.pop();
      -				if ( arguments.length === 1 ) {
      -					return curOption[ key ] === undefined ? null : curOption[ key ];
      -				}
      -				curOption[ key ] = value;
      -			} else {
      -				if ( arguments.length === 1 ) {
      -					return this.options[ key ] === undefined ? null : this.options[ key ];
      -				}
      -				options[ key ] = value;
      -			}
      -		}
      -
      -		this._setOptions( options );
      -
      -		return this;
      -	},
      -
      -	_setOptions: function( options ) {
      -		var key;
      -
      -		for ( key in options ) {
      -			this._setOption( key, options[ key ] );
      -		}
      -
      -		return this;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "classes" ) {
      -			this._setOptionClasses( value );
      -		}
      -
      -		this.options[ key ] = value;
      -
      -		if ( key === "disabled" ) {
      -			this._setOptionDisabled( value );
      -		}
      -
      -		return this;
      -	},
      -
      -	_setOptionClasses: function( value ) {
      -		var classKey, elements, currentElements;
      -
      -		for ( classKey in value ) {
      -			currentElements = this.classesElementLookup[ classKey ];
      -			if ( value[ classKey ] === this.options.classes[ classKey ] ||
      -					!currentElements ||
      -					!currentElements.length ) {
      -				continue;
      -			}
      -
      -			// We are doing this to create a new jQuery object because the _removeClass() call
      -			// on the next line is going to destroy the reference to the current elements being
      -			// tracked. We need to save a copy of this collection so that we can add the new classes
      -			// below.
      -			elements = $( currentElements.get() );
      -			this._removeClass( currentElements, classKey );
      -
      -			// We don't use _addClass() here, because that uses this.options.classes
      -			// for generating the string of classes. We want to use the value passed in from
      -			// _setOption(), this is the new value of the classes option which was passed to
      -			// _setOption(). We pass this value directly to _classes().
      -			elements.addClass( this._classes( {
      -				element: elements,
      -				keys: classKey,
      -				classes: value,
      -				add: true
      -			} ) );
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value );
      -
      -		// If the widget is becoming disabled, then nothing is interactive
      -		if ( value ) {
      -			this._removeClass( this.hoverable, null, "ui-state-hover" );
      -			this._removeClass( this.focusable, null, "ui-state-focus" );
      -		}
      -	},
      -
      -	enable: function() {
      -		return this._setOptions( { disabled: false } );
      -	},
      -
      -	disable: function() {
      -		return this._setOptions( { disabled: true } );
      -	},
      -
      -	_classes: function( options ) {
      -		var full = [];
      -		var that = this;
      -
      -		options = $.extend( {
      -			element: this.element,
      -			classes: this.options.classes || {}
      -		}, options );
      -
      -		function processClassString( classes, checkOption ) {
      -			var current, i;
      -			for ( i = 0; i < classes.length; i++ ) {
      -				current = that.classesElementLookup[ classes[ i ] ] || $();
      -				if ( options.add ) {
      -					current = $( $.unique( current.get().concat( options.element.get() ) ) );
      -				} else {
      -					current = $( current.not( options.element ).get() );
      -				}
      -				that.classesElementLookup[ classes[ i ] ] = current;
      -				full.push( classes[ i ] );
      -				if ( checkOption && options.classes[ classes[ i ] ] ) {
      -					full.push( options.classes[ classes[ i ] ] );
      -				}
      -			}
      -		}
      -
      -		this._on( options.element, {
      -			"remove": "_untrackClassesElement"
      -		} );
      -
      -		if ( options.keys ) {
      -			processClassString( options.keys.match( /\S+/g ) || [], true );
      -		}
      -		if ( options.extra ) {
      -			processClassString( options.extra.match( /\S+/g ) || [] );
      -		}
      -
      -		return full.join( " " );
      -	},
      -
      -	_untrackClassesElement: function( event ) {
      -		var that = this;
      -		$.each( that.classesElementLookup, function( key, value ) {
      -			if ( $.inArray( event.target, value ) !== -1 ) {
      -				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
      -			}
      -		} );
      -	},
      -
      -	_removeClass: function( element, keys, extra ) {
      -		return this._toggleClass( element, keys, extra, false );
      -	},
      -
      -	_addClass: function( element, keys, extra ) {
      -		return this._toggleClass( element, keys, extra, true );
      -	},
      -
      -	_toggleClass: function( element, keys, extra, add ) {
      -		add = ( typeof add === "boolean" ) ? add : extra;
      -		var shift = ( typeof element === "string" || element === null ),
      -			options = {
      -				extra: shift ? keys : extra,
      -				keys: shift ? element : keys,
      -				element: shift ? this.element : element,
      -				add: add
      -			};
      -		options.element.toggleClass( this._classes( options ), add );
      -		return this;
      -	},
      -
      -	_on: function( suppressDisabledCheck, element, handlers ) {
      -		var delegateElement;
      -		var instance = this;
      -
      -		// No suppressDisabledCheck flag, shuffle arguments
      -		if ( typeof suppressDisabledCheck !== "boolean" ) {
      -			handlers = element;
      -			element = suppressDisabledCheck;
      -			suppressDisabledCheck = false;
      -		}
      -
      -		// No element argument, shuffle and use this.element
      -		if ( !handlers ) {
      -			handlers = element;
      -			element = this.element;
      -			delegateElement = this.widget();
      -		} else {
      -			element = delegateElement = $( element );
      -			this.bindings = this.bindings.add( element );
      -		}
      -
      -		$.each( handlers, function( event, handler ) {
      -			function handlerProxy() {
      -
      -				// Allow widgets to customize the disabled handling
      -				// - disabled as an array instead of boolean
      -				// - disabled class as method for disabling individual parts
      -				if ( !suppressDisabledCheck &&
      -						( instance.options.disabled === true ||
      -						$( this ).hasClass( "ui-state-disabled" ) ) ) {
      -					return;
      -				}
      -				return ( typeof handler === "string" ? instance[ handler ] : handler )
      -					.apply( instance, arguments );
      -			}
      -
      -			// Copy the guid so direct unbinding works
      -			if ( typeof handler !== "string" ) {
      -				handlerProxy.guid = handler.guid =
      -					handler.guid || handlerProxy.guid || $.guid++;
      -			}
      -
      -			var match = event.match( /^([\w:-]*)\s*(.*)$/ );
      -			var eventName = match[ 1 ] + instance.eventNamespace;
      -			var selector = match[ 2 ];
      -
      -			if ( selector ) {
      -				delegateElement.on( eventName, selector, handlerProxy );
      -			} else {
      -				element.on( eventName, handlerProxy );
      -			}
      -		} );
      -	},
      -
      -	_off: function( element, eventName ) {
      -		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
      -			this.eventNamespace;
      -		element.off( eventName ).off( eventName );
      -
      -		// Clear the stack to avoid memory leaks (#10056)
      -		this.bindings = $( this.bindings.not( element ).get() );
      -		this.focusable = $( this.focusable.not( element ).get() );
      -		this.hoverable = $( this.hoverable.not( element ).get() );
      -	},
      -
      -	_delay: function( handler, delay ) {
      -		function handlerProxy() {
      -			return ( typeof handler === "string" ? instance[ handler ] : handler )
      -				.apply( instance, arguments );
      -		}
      -		var instance = this;
      -		return setTimeout( handlerProxy, delay || 0 );
      -	},
      -
      -	_hoverable: function( element ) {
      -		this.hoverable = this.hoverable.add( element );
      -		this._on( element, {
      -			mouseenter: function( event ) {
      -				this._addClass( $( event.currentTarget ), null, "ui-state-hover" );
      -			},
      -			mouseleave: function( event ) {
      -				this._removeClass( $( event.currentTarget ), null, "ui-state-hover" );
      -			}
      -		} );
      -	},
      -
      -	_focusable: function( element ) {
      -		this.focusable = this.focusable.add( element );
      -		this._on( element, {
      -			focusin: function( event ) {
      -				this._addClass( $( event.currentTarget ), null, "ui-state-focus" );
      -			},
      -			focusout: function( event ) {
      -				this._removeClass( $( event.currentTarget ), null, "ui-state-focus" );
      -			}
      -		} );
      -	},
      -
      -	_trigger: function( type, event, data ) {
      -		var prop, orig;
      -		var callback = this.options[ type ];
      -
      -		data = data || {};
      -		event = $.Event( event );
      -		event.type = ( type === this.widgetEventPrefix ?
      -			type :
      -			this.widgetEventPrefix + type ).toLowerCase();
      -
      -		// The original event may come from any element
      -		// so we need to reset the target on the new event
      -		event.target = this.element[ 0 ];
      -
      -		// Copy original event properties over to the new event
      -		orig = event.originalEvent;
      -		if ( orig ) {
      -			for ( prop in orig ) {
      -				if ( !( prop in event ) ) {
      -					event[ prop ] = orig[ prop ];
      -				}
      -			}
      -		}
      -
      -		this.element.trigger( event, data );
      -		return !( $.isFunction( callback ) &&
      -			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
      -			event.isDefaultPrevented() );
      -	}
      -};
      -
      -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
      -	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
      -		if ( typeof options === "string" ) {
      -			options = { effect: options };
      -		}
      -
      -		var hasOptions;
      -		var effectName = !options ?
      -			method :
      -			options === true || typeof options === "number" ?
      -				defaultEffect :
      -				options.effect || defaultEffect;
      -
      -		options = options || {};
      -		if ( typeof options === "number" ) {
      -			options = { duration: options };
      -		}
      -
      -		hasOptions = !$.isEmptyObject( options );
      -		options.complete = callback;
      -
      -		if ( options.delay ) {
      -			element.delay( options.delay );
      -		}
      -
      -		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
      -			element[ method ]( options );
      -		} else if ( effectName !== method && element[ effectName ] ) {
      -			element[ effectName ]( options.duration, options.easing, callback );
      -		} else {
      -			element.queue( function( next ) {
      -				$( this )[ method ]();
      -				if ( callback ) {
      -					callback.call( element[ 0 ] );
      -				}
      -				next();
      -			} );
      -		}
      -	};
      -} );
      -
      -var widget = $.widget;
      -
      -
      -/*!
      - * jQuery UI Position 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/position/
      - */
      -
      -//>>label: Position
      -//>>group: Core
      -//>>description: Positions elements relative to other elements.
      -//>>docs: http://api.jqueryui.com/position/
      -//>>demos: http://jqueryui.com/position/
      -
      -
      -( function() {
      -var cachedScrollbarWidth,
      -	max = Math.max,
      -	abs = Math.abs,
      -	rhorizontal = /left|center|right/,
      -	rvertical = /top|center|bottom/,
      -	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
      -	rposition = /^\w+/,
      -	rpercent = /%$/,
      -	_position = $.fn.position;
      -
      -function getOffsets( offsets, width, height ) {
      -	return [
      -		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
      -		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
      -	];
      -}
      -
      -function parseCss( element, property ) {
      -	return parseInt( $.css( element, property ), 10 ) || 0;
      -}
      -
      -function getDimensions( elem ) {
      -	var raw = elem[ 0 ];
      -	if ( raw.nodeType === 9 ) {
      -		return {
      -			width: elem.width(),
      -			height: elem.height(),
      -			offset: { top: 0, left: 0 }
      -		};
      -	}
      -	if ( $.isWindow( raw ) ) {
      -		return {
      -			width: elem.width(),
      -			height: elem.height(),
      -			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
      -		};
      -	}
      -	if ( raw.preventDefault ) {
      -		return {
      -			width: 0,
      -			height: 0,
      -			offset: { top: raw.pageY, left: raw.pageX }
      -		};
      -	}
      -	return {
      -		width: elem.outerWidth(),
      -		height: elem.outerHeight(),
      -		offset: elem.offset()
      -	};
      -}
      -
      -$.position = {
      -	scrollbarWidth: function() {
      -		if ( cachedScrollbarWidth !== undefined ) {
      -			return cachedScrollbarWidth;
      -		}
      -		var w1, w2,
      -			div = $( "<div " +
      -				"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
      -				"<div style='height:100px;width:auto;'></div></div>" ),
      -			innerDiv = div.children()[ 0 ];
      -
      -		$( "body" ).append( div );
      -		w1 = innerDiv.offsetWidth;
      -		div.css( "overflow", "scroll" );
      -
      -		w2 = innerDiv.offsetWidth;
      -
      -		if ( w1 === w2 ) {
      -			w2 = div[ 0 ].clientWidth;
      -		}
      -
      -		div.remove();
      -
      -		return ( cachedScrollbarWidth = w1 - w2 );
      -	},
      -	getScrollInfo: function( within ) {
      -		var overflowX = within.isWindow || within.isDocument ? "" :
      -				within.element.css( "overflow-x" ),
      -			overflowY = within.isWindow || within.isDocument ? "" :
      -				within.element.css( "overflow-y" ),
      -			hasOverflowX = overflowX === "scroll" ||
      -				( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
      -			hasOverflowY = overflowY === "scroll" ||
      -				( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
      -		return {
      -			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
      -			height: hasOverflowX ? $.position.scrollbarWidth() : 0
      -		};
      -	},
      -	getWithinInfo: function( element ) {
      -		var withinElement = $( element || window ),
      -			isWindow = $.isWindow( withinElement[ 0 ] ),
      -			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
      -			hasOffset = !isWindow && !isDocument;
      -		return {
      -			element: withinElement,
      -			isWindow: isWindow,
      -			isDocument: isDocument,
      -			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
      -			scrollLeft: withinElement.scrollLeft(),
      -			scrollTop: withinElement.scrollTop(),
      -			width: withinElement.outerWidth(),
      -			height: withinElement.outerHeight()
      -		};
      -	}
      -};
      -
      -$.fn.position = function( options ) {
      -	if ( !options || !options.of ) {
      -		return _position.apply( this, arguments );
      -	}
      -
      -	// Make a copy, we don't want to modify arguments
      -	options = $.extend( {}, options );
      -
      -	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
      -		target = $( options.of ),
      -		within = $.position.getWithinInfo( options.within ),
      -		scrollInfo = $.position.getScrollInfo( within ),
      -		collision = ( options.collision || "flip" ).split( " " ),
      -		offsets = {};
      -
      -	dimensions = getDimensions( target );
      -	if ( target[ 0 ].preventDefault ) {
      -
      -		// Force left top to allow flipping
      -		options.at = "left top";
      -	}
      -	targetWidth = dimensions.width;
      -	targetHeight = dimensions.height;
      -	targetOffset = dimensions.offset;
      -
      -	// Clone to reuse original targetOffset later
      -	basePosition = $.extend( {}, targetOffset );
      -
      -	// Force my and at to have valid horizontal and vertical positions
      -	// if a value is missing or invalid, it will be converted to center
      -	$.each( [ "my", "at" ], function() {
      -		var pos = ( options[ this ] || "" ).split( " " ),
      -			horizontalOffset,
      -			verticalOffset;
      -
      -		if ( pos.length === 1 ) {
      -			pos = rhorizontal.test( pos[ 0 ] ) ?
      -				pos.concat( [ "center" ] ) :
      -				rvertical.test( pos[ 0 ] ) ?
      -					[ "center" ].concat( pos ) :
      -					[ "center", "center" ];
      -		}
      -		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
      -		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
      -
      -		// Calculate offsets
      -		horizontalOffset = roffset.exec( pos[ 0 ] );
      -		verticalOffset = roffset.exec( pos[ 1 ] );
      -		offsets[ this ] = [
      -			horizontalOffset ? horizontalOffset[ 0 ] : 0,
      -			verticalOffset ? verticalOffset[ 0 ] : 0
      -		];
      -
      -		// Reduce to just the positions without the offsets
      -		options[ this ] = [
      -			rposition.exec( pos[ 0 ] )[ 0 ],
      -			rposition.exec( pos[ 1 ] )[ 0 ]
      -		];
      -	} );
      -
      -	// Normalize collision option
      -	if ( collision.length === 1 ) {
      -		collision[ 1 ] = collision[ 0 ];
      -	}
      -
      -	if ( options.at[ 0 ] === "right" ) {
      -		basePosition.left += targetWidth;
      -	} else if ( options.at[ 0 ] === "center" ) {
      -		basePosition.left += targetWidth / 2;
      -	}
      -
      -	if ( options.at[ 1 ] === "bottom" ) {
      -		basePosition.top += targetHeight;
      -	} else if ( options.at[ 1 ] === "center" ) {
      -		basePosition.top += targetHeight / 2;
      -	}
      -
      -	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
      -	basePosition.left += atOffset[ 0 ];
      -	basePosition.top += atOffset[ 1 ];
      -
      -	return this.each( function() {
      -		var collisionPosition, using,
      -			elem = $( this ),
      -			elemWidth = elem.outerWidth(),
      -			elemHeight = elem.outerHeight(),
      -			marginLeft = parseCss( this, "marginLeft" ),
      -			marginTop = parseCss( this, "marginTop" ),
      -			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
      -				scrollInfo.width,
      -			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
      -				scrollInfo.height,
      -			position = $.extend( {}, basePosition ),
      -			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
      -
      -		if ( options.my[ 0 ] === "right" ) {
      -			position.left -= elemWidth;
      -		} else if ( options.my[ 0 ] === "center" ) {
      -			position.left -= elemWidth / 2;
      -		}
      -
      -		if ( options.my[ 1 ] === "bottom" ) {
      -			position.top -= elemHeight;
      -		} else if ( options.my[ 1 ] === "center" ) {
      -			position.top -= elemHeight / 2;
      -		}
      -
      -		position.left += myOffset[ 0 ];
      -		position.top += myOffset[ 1 ];
      -
      -		collisionPosition = {
      -			marginLeft: marginLeft,
      -			marginTop: marginTop
      -		};
      -
      -		$.each( [ "left", "top" ], function( i, dir ) {
      -			if ( $.ui.position[ collision[ i ] ] ) {
      -				$.ui.position[ collision[ i ] ][ dir ]( position, {
      -					targetWidth: targetWidth,
      -					targetHeight: targetHeight,
      -					elemWidth: elemWidth,
      -					elemHeight: elemHeight,
      -					collisionPosition: collisionPosition,
      -					collisionWidth: collisionWidth,
      -					collisionHeight: collisionHeight,
      -					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
      -					my: options.my,
      -					at: options.at,
      -					within: within,
      -					elem: elem
      -				} );
      -			}
      -		} );
      -
      -		if ( options.using ) {
      -
      -			// Adds feedback as second argument to using callback, if present
      -			using = function( props ) {
      -				var left = targetOffset.left - position.left,
      -					right = left + targetWidth - elemWidth,
      -					top = targetOffset.top - position.top,
      -					bottom = top + targetHeight - elemHeight,
      -					feedback = {
      -						target: {
      -							element: target,
      -							left: targetOffset.left,
      -							top: targetOffset.top,
      -							width: targetWidth,
      -							height: targetHeight
      -						},
      -						element: {
      -							element: elem,
      -							left: position.left,
      -							top: position.top,
      -							width: elemWidth,
      -							height: elemHeight
      -						},
      -						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
      -						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
      -					};
      -				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
      -					feedback.horizontal = "center";
      -				}
      -				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
      -					feedback.vertical = "middle";
      -				}
      -				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
      -					feedback.important = "horizontal";
      -				} else {
      -					feedback.important = "vertical";
      -				}
      -				options.using.call( this, props, feedback );
      -			};
      -		}
      -
      -		elem.offset( $.extend( position, { using: using } ) );
      -	} );
      -};
      -
      -$.ui.position = {
      -	fit: {
      -		left: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
      -				outerWidth = within.width,
      -				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
      -				overLeft = withinOffset - collisionPosLeft,
      -				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
      -				newOverRight;
      -
      -			// Element is wider than within
      -			if ( data.collisionWidth > outerWidth ) {
      -
      -				// Element is initially over the left side of within
      -				if ( overLeft > 0 && overRight <= 0 ) {
      -					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
      -						withinOffset;
      -					position.left += overLeft - newOverRight;
      -
      -				// Element is initially over right side of within
      -				} else if ( overRight > 0 && overLeft <= 0 ) {
      -					position.left = withinOffset;
      -
      -				// Element is initially over both left and right sides of within
      -				} else {
      -					if ( overLeft > overRight ) {
      -						position.left = withinOffset + outerWidth - data.collisionWidth;
      -					} else {
      -						position.left = withinOffset;
      -					}
      -				}
      -
      -			// Too far left -> align with left edge
      -			} else if ( overLeft > 0 ) {
      -				position.left += overLeft;
      -
      -			// Too far right -> align with right edge
      -			} else if ( overRight > 0 ) {
      -				position.left -= overRight;
      -
      -			// Adjust based on position and margin
      -			} else {
      -				position.left = max( position.left - collisionPosLeft, position.left );
      -			}
      -		},
      -		top: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
      -				outerHeight = data.within.height,
      -				collisionPosTop = position.top - data.collisionPosition.marginTop,
      -				overTop = withinOffset - collisionPosTop,
      -				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
      -				newOverBottom;
      -
      -			// Element is taller than within
      -			if ( data.collisionHeight > outerHeight ) {
      -
      -				// Element is initially over the top of within
      -				if ( overTop > 0 && overBottom <= 0 ) {
      -					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
      -						withinOffset;
      -					position.top += overTop - newOverBottom;
      -
      -				// Element is initially over bottom of within
      -				} else if ( overBottom > 0 && overTop <= 0 ) {
      -					position.top = withinOffset;
      -
      -				// Element is initially over both top and bottom of within
      -				} else {
      -					if ( overTop > overBottom ) {
      -						position.top = withinOffset + outerHeight - data.collisionHeight;
      -					} else {
      -						position.top = withinOffset;
      -					}
      -				}
      -
      -			// Too far up -> align with top
      -			} else if ( overTop > 0 ) {
      -				position.top += overTop;
      -
      -			// Too far down -> align with bottom edge
      -			} else if ( overBottom > 0 ) {
      -				position.top -= overBottom;
      -
      -			// Adjust based on position and margin
      -			} else {
      -				position.top = max( position.top - collisionPosTop, position.top );
      -			}
      -		}
      -	},
      -	flip: {
      -		left: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.offset.left + within.scrollLeft,
      -				outerWidth = within.width,
      -				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
      -				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
      -				overLeft = collisionPosLeft - offsetLeft,
      -				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
      -				myOffset = data.my[ 0 ] === "left" ?
      -					-data.elemWidth :
      -					data.my[ 0 ] === "right" ?
      -						data.elemWidth :
      -						0,
      -				atOffset = data.at[ 0 ] === "left" ?
      -					data.targetWidth :
      -					data.at[ 0 ] === "right" ?
      -						-data.targetWidth :
      -						0,
      -				offset = -2 * data.offset[ 0 ],
      -				newOverRight,
      -				newOverLeft;
      -
      -			if ( overLeft < 0 ) {
      -				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
      -					outerWidth - withinOffset;
      -				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
      -					position.left += myOffset + atOffset + offset;
      -				}
      -			} else if ( overRight > 0 ) {
      -				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
      -					atOffset + offset - offsetLeft;
      -				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
      -					position.left += myOffset + atOffset + offset;
      -				}
      -			}
      -		},
      -		top: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.offset.top + within.scrollTop,
      -				outerHeight = within.height,
      -				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
      -				collisionPosTop = position.top - data.collisionPosition.marginTop,
      -				overTop = collisionPosTop - offsetTop,
      -				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
      -				top = data.my[ 1 ] === "top",
      -				myOffset = top ?
      -					-data.elemHeight :
      -					data.my[ 1 ] === "bottom" ?
      -						data.elemHeight :
      -						0,
      -				atOffset = data.at[ 1 ] === "top" ?
      -					data.targetHeight :
      -					data.at[ 1 ] === "bottom" ?
      -						-data.targetHeight :
      -						0,
      -				offset = -2 * data.offset[ 1 ],
      -				newOverTop,
      -				newOverBottom;
      -			if ( overTop < 0 ) {
      -				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
      -					outerHeight - withinOffset;
      -				if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
      -					position.top += myOffset + atOffset + offset;
      -				}
      -			} else if ( overBottom > 0 ) {
      -				newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
      -					offset - offsetTop;
      -				if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
      -					position.top += myOffset + atOffset + offset;
      -				}
      -			}
      -		}
      -	},
      -	flipfit: {
      -		left: function() {
      -			$.ui.position.flip.left.apply( this, arguments );
      -			$.ui.position.fit.left.apply( this, arguments );
      -		},
      -		top: function() {
      -			$.ui.position.flip.top.apply( this, arguments );
      -			$.ui.position.fit.top.apply( this, arguments );
      -		}
      -	}
      -};
      -
      -} )();
      -
      -var position = $.ui.position;
      -
      -
      -/*!
      - * jQuery UI :data 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: :data Selector
      -//>>group: Core
      -//>>description: Selects elements which have data stored under the specified key.
      -//>>docs: http://api.jqueryui.com/data-selector/
      -
      -
      -var data = $.extend( $.expr[ ":" ], {
      -	data: $.expr.createPseudo ?
      -		$.expr.createPseudo( function( dataName ) {
      -			return function( elem ) {
      -				return !!$.data( elem, dataName );
      -			};
      -		} ) :
      -
      -		// Support: jQuery <1.8
      -		function( elem, i, match ) {
      -			return !!$.data( elem, match[ 3 ] );
      -		}
      -} );
      -
      -/*!
      - * jQuery UI Disable Selection 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: disableSelection
      -//>>group: Core
      -//>>description: Disable selection of text content within the set of matched elements.
      -//>>docs: http://api.jqueryui.com/disableSelection/
      -
      -// This file is deprecated
      -
      -
      -var disableSelection = $.fn.extend( {
      -	disableSelection: ( function() {
      -		var eventType = "onselectstart" in document.createElement( "div" ) ?
      -			"selectstart" :
      -			"mousedown";
      -
      -		return function() {
      -			return this.on( eventType + ".ui-disableSelection", function( event ) {
      -				event.preventDefault();
      -			} );
      -		};
      -	} )(),
      -
      -	enableSelection: function() {
      -		return this.off( ".ui-disableSelection" );
      -	}
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Effects Core
      -//>>group: Effects
      -// jscs:disable maximumLineLength
      -//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/category/effects-core/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var dataSpace = "ui-effects-",
      -	dataSpaceStyle = "ui-effects-style",
      -	dataSpaceAnimated = "ui-effects-animated",
      -
      -	// Create a local jQuery because jQuery Color relies on it and the
      -	// global may not exist with AMD and a custom build (#10199)
      -	jQuery = $;
      -
      -$.effects = {
      -	effect: {}
      -};
      -
      -/*!
      - * jQuery Color Animations v2.1.2
      - * https://github.com/jquery/jquery-color
      - *
      - * Copyright 2014 jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * Date: Wed Jan 16 08:47:09 2013 -0600
      - */
      -( function( jQuery, undefined ) {
      -
      -	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
      -		"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
      -
      -	// Plusequals test for += 100 -= 100
      -	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
      -
      -	// A set of RE's that can match strings and generate color tuples.
      -	stringParsers = [ {
      -			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      -			parse: function( execResult ) {
      -				return [
      -					execResult[ 1 ],
      -					execResult[ 2 ],
      -					execResult[ 3 ],
      -					execResult[ 4 ]
      -				];
      -			}
      -		}, {
      -			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      -			parse: function( execResult ) {
      -				return [
      -					execResult[ 1 ] * 2.55,
      -					execResult[ 2 ] * 2.55,
      -					execResult[ 3 ] * 2.55,
      -					execResult[ 4 ]
      -				];
      -			}
      -		}, {
      -
      -			// This regex ignores A-F because it's compared against an already lowercased string
      -			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
      -			parse: function( execResult ) {
      -				return [
      -					parseInt( execResult[ 1 ], 16 ),
      -					parseInt( execResult[ 2 ], 16 ),
      -					parseInt( execResult[ 3 ], 16 )
      -				];
      -			}
      -		}, {
      -
      -			// This regex ignores A-F because it's compared against an already lowercased string
      -			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
      -			parse: function( execResult ) {
      -				return [
      -					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
      -					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
      -					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
      -				];
      -			}
      -		}, {
      -			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      -			space: "hsla",
      -			parse: function( execResult ) {
      -				return [
      -					execResult[ 1 ],
      -					execResult[ 2 ] / 100,
      -					execResult[ 3 ] / 100,
      -					execResult[ 4 ]
      -				];
      -			}
      -		} ],
      -
      -	// JQuery.Color( )
      -	color = jQuery.Color = function( color, green, blue, alpha ) {
      -		return new jQuery.Color.fn.parse( color, green, blue, alpha );
      -	},
      -	spaces = {
      -		rgba: {
      -			props: {
      -				red: {
      -					idx: 0,
      -					type: "byte"
      -				},
      -				green: {
      -					idx: 1,
      -					type: "byte"
      -				},
      -				blue: {
      -					idx: 2,
      -					type: "byte"
      -				}
      -			}
      -		},
      -
      -		hsla: {
      -			props: {
      -				hue: {
      -					idx: 0,
      -					type: "degrees"
      -				},
      -				saturation: {
      -					idx: 1,
      -					type: "percent"
      -				},
      -				lightness: {
      -					idx: 2,
      -					type: "percent"
      -				}
      -			}
      -		}
      -	},
      -	propTypes = {
      -		"byte": {
      -			floor: true,
      -			max: 255
      -		},
      -		"percent": {
      -			max: 1
      -		},
      -		"degrees": {
      -			mod: 360,
      -			floor: true
      -		}
      -	},
      -	support = color.support = {},
      -
      -	// Element for support tests
      -	supportElem = jQuery( "<p>" )[ 0 ],
      -
      -	// Colors = jQuery.Color.names
      -	colors,
      -
      -	// Local aliases of functions called often
      -	each = jQuery.each;
      -
      -// Determine rgba support immediately
      -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
      -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
      -
      -// Define cache name and alpha properties
      -// for rgba and hsla spaces
      -each( spaces, function( spaceName, space ) {
      -	space.cache = "_" + spaceName;
      -	space.props.alpha = {
      -		idx: 3,
      -		type: "percent",
      -		def: 1
      -	};
      -} );
      -
      -function clamp( value, prop, allowEmpty ) {
      -	var type = propTypes[ prop.type ] || {};
      -
      -	if ( value == null ) {
      -		return ( allowEmpty || !prop.def ) ? null : prop.def;
      -	}
      -
      -	// ~~ is an short way of doing floor for positive numbers
      -	value = type.floor ? ~~value : parseFloat( value );
      -
      -	// IE will pass in empty strings as value for alpha,
      -	// which will hit this case
      -	if ( isNaN( value ) ) {
      -		return prop.def;
      -	}
      -
      -	if ( type.mod ) {
      -
      -		// We add mod before modding to make sure that negatives values
      -		// get converted properly: -10 -> 350
      -		return ( value + type.mod ) % type.mod;
      -	}
      -
      -	// For now all property types without mod have min and max
      -	return 0 > value ? 0 : type.max < value ? type.max : value;
      -}
      -
      -function stringParse( string ) {
      -	var inst = color(),
      -		rgba = inst._rgba = [];
      -
      -	string = string.toLowerCase();
      -
      -	each( stringParsers, function( i, parser ) {
      -		var parsed,
      -			match = parser.re.exec( string ),
      -			values = match && parser.parse( match ),
      -			spaceName = parser.space || "rgba";
      -
      -		if ( values ) {
      -			parsed = inst[ spaceName ]( values );
      -
      -			// If this was an rgba parse the assignment might happen twice
      -			// oh well....
      -			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
      -			rgba = inst._rgba = parsed._rgba;
      -
      -			// Exit each( stringParsers ) here because we matched
      -			return false;
      -		}
      -	} );
      -
      -	// Found a stringParser that handled it
      -	if ( rgba.length ) {
      -
      -		// If this came from a parsed string, force "transparent" when alpha is 0
      -		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
      -		if ( rgba.join() === "0,0,0,0" ) {
      -			jQuery.extend( rgba, colors.transparent );
      -		}
      -		return inst;
      -	}
      -
      -	// Named colors
      -	return colors[ string ];
      -}
      -
      -color.fn = jQuery.extend( color.prototype, {
      -	parse: function( red, green, blue, alpha ) {
      -		if ( red === undefined ) {
      -			this._rgba = [ null, null, null, null ];
      -			return this;
      -		}
      -		if ( red.jquery || red.nodeType ) {
      -			red = jQuery( red ).css( green );
      -			green = undefined;
      -		}
      -
      -		var inst = this,
      -			type = jQuery.type( red ),
      -			rgba = this._rgba = [];
      -
      -		// More than 1 argument specified - assume ( red, green, blue, alpha )
      -		if ( green !== undefined ) {
      -			red = [ red, green, blue, alpha ];
      -			type = "array";
      -		}
      -
      -		if ( type === "string" ) {
      -			return this.parse( stringParse( red ) || colors._default );
      -		}
      -
      -		if ( type === "array" ) {
      -			each( spaces.rgba.props, function( key, prop ) {
      -				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
      -			} );
      -			return this;
      -		}
      -
      -		if ( type === "object" ) {
      -			if ( red instanceof color ) {
      -				each( spaces, function( spaceName, space ) {
      -					if ( red[ space.cache ] ) {
      -						inst[ space.cache ] = red[ space.cache ].slice();
      -					}
      -				} );
      -			} else {
      -				each( spaces, function( spaceName, space ) {
      -					var cache = space.cache;
      -					each( space.props, function( key, prop ) {
      -
      -						// If the cache doesn't exist, and we know how to convert
      -						if ( !inst[ cache ] && space.to ) {
      -
      -							// If the value was null, we don't need to copy it
      -							// if the key was alpha, we don't need to copy it either
      -							if ( key === "alpha" || red[ key ] == null ) {
      -								return;
      -							}
      -							inst[ cache ] = space.to( inst._rgba );
      -						}
      -
      -						// This is the only case where we allow nulls for ALL properties.
      -						// call clamp with alwaysAllowEmpty
      -						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
      -					} );
      -
      -					// Everything defined but alpha?
      -					if ( inst[ cache ] &&
      -							jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
      -
      -						// Use the default of 1
      -						inst[ cache ][ 3 ] = 1;
      -						if ( space.from ) {
      -							inst._rgba = space.from( inst[ cache ] );
      -						}
      -					}
      -				} );
      -			}
      -			return this;
      -		}
      -	},
      -	is: function( compare ) {
      -		var is = color( compare ),
      -			same = true,
      -			inst = this;
      -
      -		each( spaces, function( _, space ) {
      -			var localCache,
      -				isCache = is[ space.cache ];
      -			if ( isCache ) {
      -				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
      -				each( space.props, function( _, prop ) {
      -					if ( isCache[ prop.idx ] != null ) {
      -						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
      -						return same;
      -					}
      -				} );
      -			}
      -			return same;
      -		} );
      -		return same;
      -	},
      -	_space: function() {
      -		var used = [],
      -			inst = this;
      -		each( spaces, function( spaceName, space ) {
      -			if ( inst[ space.cache ] ) {
      -				used.push( spaceName );
      -			}
      -		} );
      -		return used.pop();
      -	},
      -	transition: function( other, distance ) {
      -		var end = color( other ),
      -			spaceName = end._space(),
      -			space = spaces[ spaceName ],
      -			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
      -			start = startColor[ space.cache ] || space.to( startColor._rgba ),
      -			result = start.slice();
      -
      -		end = end[ space.cache ];
      -		each( space.props, function( key, prop ) {
      -			var index = prop.idx,
      -				startValue = start[ index ],
      -				endValue = end[ index ],
      -				type = propTypes[ prop.type ] || {};
      -
      -			// If null, don't override start value
      -			if ( endValue === null ) {
      -				return;
      -			}
      -
      -			// If null - use end
      -			if ( startValue === null ) {
      -				result[ index ] = endValue;
      -			} else {
      -				if ( type.mod ) {
      -					if ( endValue - startValue > type.mod / 2 ) {
      -						startValue += type.mod;
      -					} else if ( startValue - endValue > type.mod / 2 ) {
      -						startValue -= type.mod;
      -					}
      -				}
      -				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
      -			}
      -		} );
      -		return this[ spaceName ]( result );
      -	},
      -	blend: function( opaque ) {
      -
      -		// If we are already opaque - return ourself
      -		if ( this._rgba[ 3 ] === 1 ) {
      -			return this;
      -		}
      -
      -		var rgb = this._rgba.slice(),
      -			a = rgb.pop(),
      -			blend = color( opaque )._rgba;
      -
      -		return color( jQuery.map( rgb, function( v, i ) {
      -			return ( 1 - a ) * blend[ i ] + a * v;
      -		} ) );
      -	},
      -	toRgbaString: function() {
      -		var prefix = "rgba(",
      -			rgba = jQuery.map( this._rgba, function( v, i ) {
      -				return v == null ? ( i > 2 ? 1 : 0 ) : v;
      -			} );
      -
      -		if ( rgba[ 3 ] === 1 ) {
      -			rgba.pop();
      -			prefix = "rgb(";
      -		}
      -
      -		return prefix + rgba.join() + ")";
      -	},
      -	toHslaString: function() {
      -		var prefix = "hsla(",
      -			hsla = jQuery.map( this.hsla(), function( v, i ) {
      -				if ( v == null ) {
      -					v = i > 2 ? 1 : 0;
      -				}
      -
      -				// Catch 1 and 2
      -				if ( i && i < 3 ) {
      -					v = Math.round( v * 100 ) + "%";
      -				}
      -				return v;
      -			} );
      -
      -		if ( hsla[ 3 ] === 1 ) {
      -			hsla.pop();
      -			prefix = "hsl(";
      -		}
      -		return prefix + hsla.join() + ")";
      -	},
      -	toHexString: function( includeAlpha ) {
      -		var rgba = this._rgba.slice(),
      -			alpha = rgba.pop();
      -
      -		if ( includeAlpha ) {
      -			rgba.push( ~~( alpha * 255 ) );
      -		}
      -
      -		return "#" + jQuery.map( rgba, function( v ) {
      -
      -			// Default to 0 when nulls exist
      -			v = ( v || 0 ).toString( 16 );
      -			return v.length === 1 ? "0" + v : v;
      -		} ).join( "" );
      -	},
      -	toString: function() {
      -		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
      -	}
      -} );
      -color.fn.parse.prototype = color.fn;
      -
      -// Hsla conversions adapted from:
      -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
      -
      -function hue2rgb( p, q, h ) {
      -	h = ( h + 1 ) % 1;
      -	if ( h * 6 < 1 ) {
      -		return p + ( q - p ) * h * 6;
      -	}
      -	if ( h * 2 < 1 ) {
      -		return q;
      -	}
      -	if ( h * 3 < 2 ) {
      -		return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
      -	}
      -	return p;
      -}
      -
      -spaces.hsla.to = function( rgba ) {
      -	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
      -		return [ null, null, null, rgba[ 3 ] ];
      -	}
      -	var r = rgba[ 0 ] / 255,
      -		g = rgba[ 1 ] / 255,
      -		b = rgba[ 2 ] / 255,
      -		a = rgba[ 3 ],
      -		max = Math.max( r, g, b ),
      -		min = Math.min( r, g, b ),
      -		diff = max - min,
      -		add = max + min,
      -		l = add * 0.5,
      -		h, s;
      -
      -	if ( min === max ) {
      -		h = 0;
      -	} else if ( r === max ) {
      -		h = ( 60 * ( g - b ) / diff ) + 360;
      -	} else if ( g === max ) {
      -		h = ( 60 * ( b - r ) / diff ) + 120;
      -	} else {
      -		h = ( 60 * ( r - g ) / diff ) + 240;
      -	}
      -
      -	// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
      -	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
      -	if ( diff === 0 ) {
      -		s = 0;
      -	} else if ( l <= 0.5 ) {
      -		s = diff / add;
      -	} else {
      -		s = diff / ( 2 - add );
      -	}
      -	return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];
      -};
      -
      -spaces.hsla.from = function( hsla ) {
      -	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
      -		return [ null, null, null, hsla[ 3 ] ];
      -	}
      -	var h = hsla[ 0 ] / 360,
      -		s = hsla[ 1 ],
      -		l = hsla[ 2 ],
      -		a = hsla[ 3 ],
      -		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
      -		p = 2 * l - q;
      -
      -	return [
      -		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
      -		Math.round( hue2rgb( p, q, h ) * 255 ),
      -		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
      -		a
      -	];
      -};
      -
      -each( spaces, function( spaceName, space ) {
      -	var props = space.props,
      -		cache = space.cache,
      -		to = space.to,
      -		from = space.from;
      -
      -	// Makes rgba() and hsla()
      -	color.fn[ spaceName ] = function( value ) {
      -
      -		// Generate a cache for this space if it doesn't exist
      -		if ( to && !this[ cache ] ) {
      -			this[ cache ] = to( this._rgba );
      -		}
      -		if ( value === undefined ) {
      -			return this[ cache ].slice();
      -		}
      -
      -		var ret,
      -			type = jQuery.type( value ),
      -			arr = ( type === "array" || type === "object" ) ? value : arguments,
      -			local = this[ cache ].slice();
      -
      -		each( props, function( key, prop ) {
      -			var val = arr[ type === "object" ? key : prop.idx ];
      -			if ( val == null ) {
      -				val = local[ prop.idx ];
      -			}
      -			local[ prop.idx ] = clamp( val, prop );
      -		} );
      -
      -		if ( from ) {
      -			ret = color( from( local ) );
      -			ret[ cache ] = local;
      -			return ret;
      -		} else {
      -			return color( local );
      -		}
      -	};
      -
      -	// Makes red() green() blue() alpha() hue() saturation() lightness()
      -	each( props, function( key, prop ) {
      -
      -		// Alpha is included in more than one space
      -		if ( color.fn[ key ] ) {
      -			return;
      -		}
      -		color.fn[ key ] = function( value ) {
      -			var vtype = jQuery.type( value ),
      -				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
      -				local = this[ fn ](),
      -				cur = local[ prop.idx ],
      -				match;
      -
      -			if ( vtype === "undefined" ) {
      -				return cur;
      -			}
      -
      -			if ( vtype === "function" ) {
      -				value = value.call( this, cur );
      -				vtype = jQuery.type( value );
      -			}
      -			if ( value == null && prop.empty ) {
      -				return this;
      -			}
      -			if ( vtype === "string" ) {
      -				match = rplusequals.exec( value );
      -				if ( match ) {
      -					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
      -				}
      -			}
      -			local[ prop.idx ] = value;
      -			return this[ fn ]( local );
      -		};
      -	} );
      -} );
      -
      -// Add cssHook and .fx.step function for each named hook.
      -// accept a space separated string of properties
      -color.hook = function( hook ) {
      -	var hooks = hook.split( " " );
      -	each( hooks, function( i, hook ) {
      -		jQuery.cssHooks[ hook ] = {
      -			set: function( elem, value ) {
      -				var parsed, curElem,
      -					backgroundColor = "";
      -
      -				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||
      -						( parsed = stringParse( value ) ) ) ) {
      -					value = color( parsed || value );
      -					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
      -						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
      -						while (
      -							( backgroundColor === "" || backgroundColor === "transparent" ) &&
      -							curElem && curElem.style
      -						) {
      -							try {
      -								backgroundColor = jQuery.css( curElem, "backgroundColor" );
      -								curElem = curElem.parentNode;
      -							} catch ( e ) {
      -							}
      -						}
      -
      -						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
      -							backgroundColor :
      -							"_default" );
      -					}
      -
      -					value = value.toRgbaString();
      -				}
      -				try {
      -					elem.style[ hook ] = value;
      -				} catch ( e ) {
      -
      -					// Wrapped to prevent IE from throwing errors on "invalid" values like
      -					// 'auto' or 'inherit'
      -				}
      -			}
      -		};
      -		jQuery.fx.step[ hook ] = function( fx ) {
      -			if ( !fx.colorInit ) {
      -				fx.start = color( fx.elem, hook );
      -				fx.end = color( fx.end );
      -				fx.colorInit = true;
      -			}
      -			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
      -		};
      -	} );
      -
      -};
      -
      -color.hook( stepHooks );
      -
      -jQuery.cssHooks.borderColor = {
      -	expand: function( value ) {
      -		var expanded = {};
      -
      -		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
      -			expanded[ "border" + part + "Color" ] = value;
      -		} );
      -		return expanded;
      -	}
      -};
      -
      -// Basic color names only.
      -// Usage of any of the other color names requires adding yourself or including
      -// jquery.color.svg-names.js.
      -colors = jQuery.Color.names = {
      -
      -	// 4.1. Basic color keywords
      -	aqua: "#00ffff",
      -	black: "#000000",
      -	blue: "#0000ff",
      -	fuchsia: "#ff00ff",
      -	gray: "#808080",
      -	green: "#008000",
      -	lime: "#00ff00",
      -	maroon: "#800000",
      -	navy: "#000080",
      -	olive: "#808000",
      -	purple: "#800080",
      -	red: "#ff0000",
      -	silver: "#c0c0c0",
      -	teal: "#008080",
      -	white: "#ffffff",
      -	yellow: "#ffff00",
      -
      -	// 4.2.3. "transparent" color keyword
      -	transparent: [ null, null, null, 0 ],
      -
      -	_default: "#ffffff"
      -};
      -
      -} )( jQuery );
      -
      -/******************************************************************************/
      -/****************************** CLASS ANIMATIONS ******************************/
      -/******************************************************************************/
      -( function() {
      -
      -var classAnimationActions = [ "add", "remove", "toggle" ],
      -	shorthandStyles = {
      -		border: 1,
      -		borderBottom: 1,
      -		borderColor: 1,
      -		borderLeft: 1,
      -		borderRight: 1,
      -		borderTop: 1,
      -		borderWidth: 1,
      -		margin: 1,
      -		padding: 1
      -	};
      -
      -$.each(
      -	[ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ],
      -	function( _, prop ) {
      -		$.fx.step[ prop ] = function( fx ) {
      -			if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
      -				jQuery.style( fx.elem, prop, fx.end );
      -				fx.setAttr = true;
      -			}
      -		};
      -	}
      -);
      -
      -function getElementStyles( elem ) {
      -	var key, len,
      -		style = elem.ownerDocument.defaultView ?
      -			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
      -			elem.currentStyle,
      -		styles = {};
      -
      -	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
      -		len = style.length;
      -		while ( len-- ) {
      -			key = style[ len ];
      -			if ( typeof style[ key ] === "string" ) {
      -				styles[ $.camelCase( key ) ] = style[ key ];
      -			}
      -		}
      -
      -	// Support: Opera, IE <9
      -	} else {
      -		for ( key in style ) {
      -			if ( typeof style[ key ] === "string" ) {
      -				styles[ key ] = style[ key ];
      -			}
      -		}
      -	}
      -
      -	return styles;
      -}
      -
      -function styleDifference( oldStyle, newStyle ) {
      -	var diff = {},
      -		name, value;
      -
      -	for ( name in newStyle ) {
      -		value = newStyle[ name ];
      -		if ( oldStyle[ name ] !== value ) {
      -			if ( !shorthandStyles[ name ] ) {
      -				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
      -					diff[ name ] = value;
      -				}
      -			}
      -		}
      -	}
      -
      -	return diff;
      -}
      -
      -// Support: jQuery <1.8
      -if ( !$.fn.addBack ) {
      -	$.fn.addBack = function( selector ) {
      -		return this.add( selector == null ?
      -			this.prevObject : this.prevObject.filter( selector )
      -		);
      -	};
      -}
      -
      -$.effects.animateClass = function( value, duration, easing, callback ) {
      -	var o = $.speed( duration, easing, callback );
      -
      -	return this.queue( function() {
      -		var animated = $( this ),
      -			baseClass = animated.attr( "class" ) || "",
      -			applyClassChange,
      -			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
      -
      -		// Map the animated objects to store the original styles.
      -		allAnimations = allAnimations.map( function() {
      -			var el = $( this );
      -			return {
      -				el: el,
      -				start: getElementStyles( this )
      -			};
      -		} );
      -
      -		// Apply class change
      -		applyClassChange = function() {
      -			$.each( classAnimationActions, function( i, action ) {
      -				if ( value[ action ] ) {
      -					animated[ action + "Class" ]( value[ action ] );
      -				}
      -			} );
      -		};
      -		applyClassChange();
      -
      -		// Map all animated objects again - calculate new styles and diff
      -		allAnimations = allAnimations.map( function() {
      -			this.end = getElementStyles( this.el[ 0 ] );
      -			this.diff = styleDifference( this.start, this.end );
      -			return this;
      -		} );
      -
      -		// Apply original class
      -		animated.attr( "class", baseClass );
      -
      -		// Map all animated objects again - this time collecting a promise
      -		allAnimations = allAnimations.map( function() {
      -			var styleInfo = this,
      -				dfd = $.Deferred(),
      -				opts = $.extend( {}, o, {
      -					queue: false,
      -					complete: function() {
      -						dfd.resolve( styleInfo );
      -					}
      -				} );
      -
      -			this.el.animate( this.diff, opts );
      -			return dfd.promise();
      -		} );
      -
      -		// Once all animations have completed:
      -		$.when.apply( $, allAnimations.get() ).done( function() {
      -
      -			// Set the final class
      -			applyClassChange();
      -
      -			// For each animated element,
      -			// clear all css properties that were animated
      -			$.each( arguments, function() {
      -				var el = this.el;
      -				$.each( this.diff, function( key ) {
      -					el.css( key, "" );
      -				} );
      -			} );
      -
      -			// This is guarnteed to be there if you use jQuery.speed()
      -			// it also handles dequeuing the next anim...
      -			o.complete.call( animated[ 0 ] );
      -		} );
      -	} );
      -};
      -
      -$.fn.extend( {
      -	addClass: ( function( orig ) {
      -		return function( classNames, speed, easing, callback ) {
      -			return speed ?
      -				$.effects.animateClass.call( this,
      -					{ add: classNames }, speed, easing, callback ) :
      -				orig.apply( this, arguments );
      -		};
      -	} )( $.fn.addClass ),
      -
      -	removeClass: ( function( orig ) {
      -		return function( classNames, speed, easing, callback ) {
      -			return arguments.length > 1 ?
      -				$.effects.animateClass.call( this,
      -					{ remove: classNames }, speed, easing, callback ) :
      -				orig.apply( this, arguments );
      -		};
      -	} )( $.fn.removeClass ),
      -
      -	toggleClass: ( function( orig ) {
      -		return function( classNames, force, speed, easing, callback ) {
      -			if ( typeof force === "boolean" || force === undefined ) {
      -				if ( !speed ) {
      -
      -					// Without speed parameter
      -					return orig.apply( this, arguments );
      -				} else {
      -					return $.effects.animateClass.call( this,
      -						( force ? { add: classNames } : { remove: classNames } ),
      -						speed, easing, callback );
      -				}
      -			} else {
      -
      -				// Without force parameter
      -				return $.effects.animateClass.call( this,
      -					{ toggle: classNames }, force, speed, easing );
      -			}
      -		};
      -	} )( $.fn.toggleClass ),
      -
      -	switchClass: function( remove, add, speed, easing, callback ) {
      -		return $.effects.animateClass.call( this, {
      -			add: add,
      -			remove: remove
      -		}, speed, easing, callback );
      -	}
      -} );
      -
      -} )();
      -
      -/******************************************************************************/
      -/*********************************** EFFECTS **********************************/
      -/******************************************************************************/
      -
      -( function() {
      -
      -if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
      -	$.expr.filters.animated = ( function( orig ) {
      -		return function( elem ) {
      -			return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
      -		};
      -	} )( $.expr.filters.animated );
      -}
      -
      -if ( $.uiBackCompat !== false ) {
      -	$.extend( $.effects, {
      -
      -		// Saves a set of properties in a data storage
      -		save: function( element, set ) {
      -			var i = 0, length = set.length;
      -			for ( ; i < length; i++ ) {
      -				if ( set[ i ] !== null ) {
      -					element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
      -				}
      -			}
      -		},
      -
      -		// Restores a set of previously saved properties from a data storage
      -		restore: function( element, set ) {
      -			var val, i = 0, length = set.length;
      -			for ( ; i < length; i++ ) {
      -				if ( set[ i ] !== null ) {
      -					val = element.data( dataSpace + set[ i ] );
      -					element.css( set[ i ], val );
      -				}
      -			}
      -		},
      -
      -		setMode: function( el, mode ) {
      -			if ( mode === "toggle" ) {
      -				mode = el.is( ":hidden" ) ? "show" : "hide";
      -			}
      -			return mode;
      -		},
      -
      -		// Wraps the element around a wrapper that copies position properties
      -		createWrapper: function( element ) {
      -
      -			// If the element is already wrapped, return it
      -			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
      -				return element.parent();
      -			}
      -
      -			// Wrap the element
      -			var props = {
      -					width: element.outerWidth( true ),
      -					height: element.outerHeight( true ),
      -					"float": element.css( "float" )
      -				},
      -				wrapper = $( "<div></div>" )
      -					.addClass( "ui-effects-wrapper" )
      -					.css( {
      -						fontSize: "100%",
      -						background: "transparent",
      -						border: "none",
      -						margin: 0,
      -						padding: 0
      -					} ),
      -
      -				// Store the size in case width/height are defined in % - Fixes #5245
      -				size = {
      -					width: element.width(),
      -					height: element.height()
      -				},
      -				active = document.activeElement;
      -
      -			// Support: Firefox
      -			// Firefox incorrectly exposes anonymous content
      -			// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
      -			try {
      -				active.id;
      -			} catch ( e ) {
      -				active = document.body;
      -			}
      -
      -			element.wrap( wrapper );
      -
      -			// Fixes #7595 - Elements lose focus when wrapped.
      -			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
      -				$( active ).trigger( "focus" );
      -			}
      -
      -			// Hotfix for jQuery 1.4 since some change in wrap() seems to actually
      -			// lose the reference to the wrapped element
      -			wrapper = element.parent();
      -
      -			// Transfer positioning properties to the wrapper
      -			if ( element.css( "position" ) === "static" ) {
      -				wrapper.css( { position: "relative" } );
      -				element.css( { position: "relative" } );
      -			} else {
      -				$.extend( props, {
      -					position: element.css( "position" ),
      -					zIndex: element.css( "z-index" )
      -				} );
      -				$.each( [ "top", "left", "bottom", "right" ], function( i, pos ) {
      -					props[ pos ] = element.css( pos );
      -					if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
      -						props[ pos ] = "auto";
      -					}
      -				} );
      -				element.css( {
      -					position: "relative",
      -					top: 0,
      -					left: 0,
      -					right: "auto",
      -					bottom: "auto"
      -				} );
      -			}
      -			element.css( size );
      -
      -			return wrapper.css( props ).show();
      -		},
      -
      -		removeWrapper: function( element ) {
      -			var active = document.activeElement;
      -
      -			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
      -				element.parent().replaceWith( element );
      -
      -				// Fixes #7595 - Elements lose focus when wrapped.
      -				if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
      -					$( active ).trigger( "focus" );
      -				}
      -			}
      -
      -			return element;
      -		}
      -	} );
      -}
      -
      -$.extend( $.effects, {
      -	version: "1.12.1",
      -
      -	define: function( name, mode, effect ) {
      -		if ( !effect ) {
      -			effect = mode;
      -			mode = "effect";
      -		}
      -
      -		$.effects.effect[ name ] = effect;
      -		$.effects.effect[ name ].mode = mode;
      -
      -		return effect;
      -	},
      -
      -	scaledDimensions: function( element, percent, direction ) {
      -		if ( percent === 0 ) {
      -			return {
      -				height: 0,
      -				width: 0,
      -				outerHeight: 0,
      -				outerWidth: 0
      -			};
      -		}
      -
      -		var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1,
      -			y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1;
      -
      -		return {
      -			height: element.height() * y,
      -			width: element.width() * x,
      -			outerHeight: element.outerHeight() * y,
      -			outerWidth: element.outerWidth() * x
      -		};
      -
      -	},
      -
      -	clipToBox: function( animation ) {
      -		return {
      -			width: animation.clip.right - animation.clip.left,
      -			height: animation.clip.bottom - animation.clip.top,
      -			left: animation.clip.left,
      -			top: animation.clip.top
      -		};
      -	},
      -
      -	// Injects recently queued functions to be first in line (after "inprogress")
      -	unshift: function( element, queueLength, count ) {
      -		var queue = element.queue();
      -
      -		if ( queueLength > 1 ) {
      -			queue.splice.apply( queue,
      -				[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );
      -		}
      -		element.dequeue();
      -	},
      -
      -	saveStyle: function( element ) {
      -		element.data( dataSpaceStyle, element[ 0 ].style.cssText );
      -	},
      -
      -	restoreStyle: function( element ) {
      -		element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || "";
      -		element.removeData( dataSpaceStyle );
      -	},
      -
      -	mode: function( element, mode ) {
      -		var hidden = element.is( ":hidden" );
      -
      -		if ( mode === "toggle" ) {
      -			mode = hidden ? "show" : "hide";
      -		}
      -		if ( hidden ? mode === "hide" : mode === "show" ) {
      -			mode = "none";
      -		}
      -		return mode;
      -	},
      -
      -	// Translates a [top,left] array into a baseline value
      -	getBaseline: function( origin, original ) {
      -		var y, x;
      -
      -		switch ( origin[ 0 ] ) {
      -		case "top":
      -			y = 0;
      -			break;
      -		case "middle":
      -			y = 0.5;
      -			break;
      -		case "bottom":
      -			y = 1;
      -			break;
      -		default:
      -			y = origin[ 0 ] / original.height;
      -		}
      -
      -		switch ( origin[ 1 ] ) {
      -		case "left":
      -			x = 0;
      -			break;
      -		case "center":
      -			x = 0.5;
      -			break;
      -		case "right":
      -			x = 1;
      -			break;
      -		default:
      -			x = origin[ 1 ] / original.width;
      -		}
      -
      -		return {
      -			x: x,
      -			y: y
      -		};
      -	},
      -
      -	// Creates a placeholder element so that the original element can be made absolute
      -	createPlaceholder: function( element ) {
      -		var placeholder,
      -			cssPosition = element.css( "position" ),
      -			position = element.position();
      -
      -		// Lock in margins first to account for form elements, which
      -		// will change margin if you explicitly set height
      -		// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380
      -		// Support: Safari
      -		element.css( {
      -			marginTop: element.css( "marginTop" ),
      -			marginBottom: element.css( "marginBottom" ),
      -			marginLeft: element.css( "marginLeft" ),
      -			marginRight: element.css( "marginRight" )
      -		} )
      -		.outerWidth( element.outerWidth() )
      -		.outerHeight( element.outerHeight() );
      -
      -		if ( /^(static|relative)/.test( cssPosition ) ) {
      -			cssPosition = "absolute";
      -
      -			placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( {
      -
      -				// Convert inline to inline block to account for inline elements
      -				// that turn to inline block based on content (like img)
      -				display: /^(inline|ruby)/.test( element.css( "display" ) ) ?
      -					"inline-block" :
      -					"block",
      -				visibility: "hidden",
      -
      -				// Margins need to be set to account for margin collapse
      -				marginTop: element.css( "marginTop" ),
      -				marginBottom: element.css( "marginBottom" ),
      -				marginLeft: element.css( "marginLeft" ),
      -				marginRight: element.css( "marginRight" ),
      -				"float": element.css( "float" )
      -			} )
      -			.outerWidth( element.outerWidth() )
      -			.outerHeight( element.outerHeight() )
      -			.addClass( "ui-effects-placeholder" );
      -
      -			element.data( dataSpace + "placeholder", placeholder );
      -		}
      -
      -		element.css( {
      -			position: cssPosition,
      -			left: position.left,
      -			top: position.top
      -		} );
      -
      -		return placeholder;
      -	},
      -
      -	removePlaceholder: function( element ) {
      -		var dataKey = dataSpace + "placeholder",
      -				placeholder = element.data( dataKey );
      -
      -		if ( placeholder ) {
      -			placeholder.remove();
      -			element.removeData( dataKey );
      -		}
      -	},
      -
      -	// Removes a placeholder if it exists and restores
      -	// properties that were modified during placeholder creation
      -	cleanUp: function( element ) {
      -		$.effects.restoreStyle( element );
      -		$.effects.removePlaceholder( element );
      -	},
      -
      -	setTransition: function( element, list, factor, value ) {
      -		value = value || {};
      -		$.each( list, function( i, x ) {
      -			var unit = element.cssUnit( x );
      -			if ( unit[ 0 ] > 0 ) {
      -				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
      -			}
      -		} );
      -		return value;
      -	}
      -} );
      -
      -// Return an effect options object for the given parameters:
      -function _normalizeArguments( effect, options, speed, callback ) {
      -
      -	// Allow passing all options as the first parameter
      -	if ( $.isPlainObject( effect ) ) {
      -		options = effect;
      -		effect = effect.effect;
      -	}
      -
      -	// Convert to an object
      -	effect = { effect: effect };
      -
      -	// Catch (effect, null, ...)
      -	if ( options == null ) {
      -		options = {};
      -	}
      -
      -	// Catch (effect, callback)
      -	if ( $.isFunction( options ) ) {
      -		callback = options;
      -		speed = null;
      -		options = {};
      -	}
      -
      -	// Catch (effect, speed, ?)
      -	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
      -		callback = speed;
      -		speed = options;
      -		options = {};
      -	}
      -
      -	// Catch (effect, options, callback)
      -	if ( $.isFunction( speed ) ) {
      -		callback = speed;
      -		speed = null;
      -	}
      -
      -	// Add options to effect
      -	if ( options ) {
      -		$.extend( effect, options );
      -	}
      -
      -	speed = speed || options.duration;
      -	effect.duration = $.fx.off ? 0 :
      -		typeof speed === "number" ? speed :
      -		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
      -		$.fx.speeds._default;
      -
      -	effect.complete = callback || options.complete;
      -
      -	return effect;
      -}
      -
      -function standardAnimationOption( option ) {
      -
      -	// Valid standard speeds (nothing, number, named speed)
      -	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
      -		return true;
      -	}
      -
      -	// Invalid strings - treat as "normal" speed
      -	if ( typeof option === "string" && !$.effects.effect[ option ] ) {
      -		return true;
      -	}
      -
      -	// Complete callback
      -	if ( $.isFunction( option ) ) {
      -		return true;
      -	}
      -
      -	// Options hash (but not naming an effect)
      -	if ( typeof option === "object" && !option.effect ) {
      -		return true;
      -	}
      -
      -	// Didn't match any standard API
      -	return false;
      -}
      -
      -$.fn.extend( {
      -	effect: function( /* effect, options, speed, callback */ ) {
      -		var args = _normalizeArguments.apply( this, arguments ),
      -			effectMethod = $.effects.effect[ args.effect ],
      -			defaultMode = effectMethod.mode,
      -			queue = args.queue,
      -			queueName = queue || "fx",
      -			complete = args.complete,
      -			mode = args.mode,
      -			modes = [],
      -			prefilter = function( next ) {
      -				var el = $( this ),
      -					normalizedMode = $.effects.mode( el, mode ) || defaultMode;
      -
      -				// Sentinel for duck-punching the :animated psuedo-selector
      -				el.data( dataSpaceAnimated, true );
      -
      -				// Save effect mode for later use,
      -				// we can't just call $.effects.mode again later,
      -				// as the .show() below destroys the initial state
      -				modes.push( normalizedMode );
      -
      -				// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13
      -				if ( defaultMode && ( normalizedMode === "show" ||
      -						( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
      -					el.show();
      -				}
      -
      -				if ( !defaultMode || normalizedMode !== "none" ) {
      -					$.effects.saveStyle( el );
      -				}
      -
      -				if ( $.isFunction( next ) ) {
      -					next();
      -				}
      -			};
      -
      -		if ( $.fx.off || !effectMethod ) {
      -
      -			// Delegate to the original method (e.g., .show()) if possible
      -			if ( mode ) {
      -				return this[ mode ]( args.duration, complete );
      -			} else {
      -				return this.each( function() {
      -					if ( complete ) {
      -						complete.call( this );
      -					}
      -				} );
      -			}
      -		}
      -
      -		function run( next ) {
      -			var elem = $( this );
      -
      -			function cleanup() {
      -				elem.removeData( dataSpaceAnimated );
      -
      -				$.effects.cleanUp( elem );
      -
      -				if ( args.mode === "hide" ) {
      -					elem.hide();
      -				}
      -
      -				done();
      -			}
      -
      -			function done() {
      -				if ( $.isFunction( complete ) ) {
      -					complete.call( elem[ 0 ] );
      -				}
      -
      -				if ( $.isFunction( next ) ) {
      -					next();
      -				}
      -			}
      -
      -			// Override mode option on a per element basis,
      -			// as toggle can be either show or hide depending on element state
      -			args.mode = modes.shift();
      -
      -			if ( $.uiBackCompat !== false && !defaultMode ) {
      -				if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
      -
      -					// Call the core method to track "olddisplay" properly
      -					elem[ mode ]();
      -					done();
      -				} else {
      -					effectMethod.call( elem[ 0 ], args, done );
      -				}
      -			} else {
      -				if ( args.mode === "none" ) {
      -
      -					// Call the core method to track "olddisplay" properly
      -					elem[ mode ]();
      -					done();
      -				} else {
      -					effectMethod.call( elem[ 0 ], args, cleanup );
      -				}
      -			}
      -		}
      -
      -		// Run prefilter on all elements first to ensure that
      -		// any showing or hiding happens before placeholder creation,
      -		// which ensures that any layout changes are correctly captured.
      -		return queue === false ?
      -			this.each( prefilter ).each( run ) :
      -			this.queue( queueName, prefilter ).queue( queueName, run );
      -	},
      -
      -	show: ( function( orig ) {
      -		return function( option ) {
      -			if ( standardAnimationOption( option ) ) {
      -				return orig.apply( this, arguments );
      -			} else {
      -				var args = _normalizeArguments.apply( this, arguments );
      -				args.mode = "show";
      -				return this.effect.call( this, args );
      -			}
      -		};
      -	} )( $.fn.show ),
      -
      -	hide: ( function( orig ) {
      -		return function( option ) {
      -			if ( standardAnimationOption( option ) ) {
      -				return orig.apply( this, arguments );
      -			} else {
      -				var args = _normalizeArguments.apply( this, arguments );
      -				args.mode = "hide";
      -				return this.effect.call( this, args );
      -			}
      -		};
      -	} )( $.fn.hide ),
      -
      -	toggle: ( function( orig ) {
      -		return function( option ) {
      -			if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
      -				return orig.apply( this, arguments );
      -			} else {
      -				var args = _normalizeArguments.apply( this, arguments );
      -				args.mode = "toggle";
      -				return this.effect.call( this, args );
      -			}
      -		};
      -	} )( $.fn.toggle ),
      -
      -	cssUnit: function( key ) {
      -		var style = this.css( key ),
      -			val = [];
      -
      -		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
      -			if ( style.indexOf( unit ) > 0 ) {
      -				val = [ parseFloat( style ), unit ];
      -			}
      -		} );
      -		return val;
      -	},
      -
      -	cssClip: function( clipObj ) {
      -		if ( clipObj ) {
      -			return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " +
      -				clipObj.bottom + "px " + clipObj.left + "px)" );
      -		}
      -		return parseClip( this.css( "clip" ), this );
      -	},
      -
      -	transfer: function( options, done ) {
      -		var element = $( this ),
      -			target = $( options.to ),
      -			targetFixed = target.css( "position" ) === "fixed",
      -			body = $( "body" ),
      -			fixTop = targetFixed ? body.scrollTop() : 0,
      -			fixLeft = targetFixed ? body.scrollLeft() : 0,
      -			endPosition = target.offset(),
      -			animation = {
      -				top: endPosition.top - fixTop,
      -				left: endPosition.left - fixLeft,
      -				height: target.innerHeight(),
      -				width: target.innerWidth()
      -			},
      -			startPosition = element.offset(),
      -			transfer = $( "<div class='ui-effects-transfer'></div>" )
      -				.appendTo( "body" )
      -				.addClass( options.className )
      -				.css( {
      -					top: startPosition.top - fixTop,
      -					left: startPosition.left - fixLeft,
      -					height: element.innerHeight(),
      -					width: element.innerWidth(),
      -					position: targetFixed ? "fixed" : "absolute"
      -				} )
      -				.animate( animation, options.duration, options.easing, function() {
      -					transfer.remove();
      -					if ( $.isFunction( done ) ) {
      -						done();
      -					}
      -				} );
      -	}
      -} );
      -
      -function parseClip( str, element ) {
      -		var outerWidth = element.outerWidth(),
      -			outerHeight = element.outerHeight(),
      -			clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
      -			values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ];
      -
      -		return {
      -			top: parseFloat( values[ 1 ] ) || 0,
      -			right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ),
      -			bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ),
      -			left: parseFloat( values[ 4 ] ) || 0
      -		};
      -}
      -
      -$.fx.step.clip = function( fx ) {
      -	if ( !fx.clipInit ) {
      -		fx.start = $( fx.elem ).cssClip();
      -		if ( typeof fx.end === "string" ) {
      -			fx.end = parseClip( fx.end, fx.elem );
      -		}
      -		fx.clipInit = true;
      -	}
      -
      -	$( fx.elem ).cssClip( {
      -		top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
      -		right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,
      -		bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,
      -		left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
      -	} );
      -};
      -
      -} )();
      -
      -/******************************************************************************/
      -/*********************************** EASING ***********************************/
      -/******************************************************************************/
      -
      -( function() {
      -
      -// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
      -
      -var baseEasings = {};
      -
      -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
      -	baseEasings[ name ] = function( p ) {
      -		return Math.pow( p, i + 2 );
      -	};
      -} );
      -
      -$.extend( baseEasings, {
      -	Sine: function( p ) {
      -		return 1 - Math.cos( p * Math.PI / 2 );
      -	},
      -	Circ: function( p ) {
      -		return 1 - Math.sqrt( 1 - p * p );
      -	},
      -	Elastic: function( p ) {
      -		return p === 0 || p === 1 ? p :
      -			-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );
      -	},
      -	Back: function( p ) {
      -		return p * p * ( 3 * p - 2 );
      -	},
      -	Bounce: function( p ) {
      -		var pow2,
      -			bounce = 4;
      -
      -		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
      -		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
      -	}
      -} );
      -
      -$.each( baseEasings, function( name, easeIn ) {
      -	$.easing[ "easeIn" + name ] = easeIn;
      -	$.easing[ "easeOut" + name ] = function( p ) {
      -		return 1 - easeIn( 1 - p );
      -	};
      -	$.easing[ "easeInOut" + name ] = function( p ) {
      -		return p < 0.5 ?
      -			easeIn( p * 2 ) / 2 :
      -			1 - easeIn( p * -2 + 2 ) / 2;
      -	};
      -} );
      -
      -} )();
      -
      -var effect = $.effects;
      -
      -
      -/*!
      - * jQuery UI Effects Blind 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Blind Effect
      -//>>group: Effects
      -//>>description: Blinds the element.
      -//>>docs: http://api.jqueryui.com/blind-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) {
      -	var map = {
      -			up: [ "bottom", "top" ],
      -			vertical: [ "bottom", "top" ],
      -			down: [ "top", "bottom" ],
      -			left: [ "right", "left" ],
      -			horizontal: [ "right", "left" ],
      -			right: [ "left", "right" ]
      -		},
      -		element = $( this ),
      -		direction = options.direction || "up",
      -		start = element.cssClip(),
      -		animate = { clip: $.extend( {}, start ) },
      -		placeholder = $.effects.createPlaceholder( element );
      -
      -	animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];
      -
      -	if ( options.mode === "show" ) {
      -		element.cssClip( animate.clip );
      -		if ( placeholder ) {
      -			placeholder.css( $.effects.clipToBox( animate ) );
      -		}
      -
      -		animate.clip = start;
      -	}
      -
      -	if ( placeholder ) {
      -		placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );
      -	}
      -
      -	element.animate( animate, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Bounce 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Bounce Effect
      -//>>group: Effects
      -//>>description: Bounces an element horizontally or vertically n times.
      -//>>docs: http://api.jqueryui.com/bounce-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) {
      -	var upAnim, downAnim, refValue,
      -		element = $( this ),
      -
      -		// Defaults:
      -		mode = options.mode,
      -		hide = mode === "hide",
      -		show = mode === "show",
      -		direction = options.direction || "up",
      -		distance = options.distance,
      -		times = options.times || 5,
      -
      -		// Number of internal animations
      -		anims = times * 2 + ( show || hide ? 1 : 0 ),
      -		speed = options.duration / anims,
      -		easing = options.easing,
      -
      -		// Utility:
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		motion = ( direction === "up" || direction === "left" ),
      -		i = 0,
      -
      -		queuelen = element.queue().length;
      -
      -	$.effects.createPlaceholder( element );
      -
      -	refValue = element.css( ref );
      -
      -	// Default distance for the BIGGEST bounce is the outer Distance / 3
      -	if ( !distance ) {
      -		distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
      -	}
      -
      -	if ( show ) {
      -		downAnim = { opacity: 1 };
      -		downAnim[ ref ] = refValue;
      -
      -		// If we are showing, force opacity 0 and set the initial position
      -		// then do the "first" animation
      -		element
      -			.css( "opacity", 0 )
      -			.css( ref, motion ? -distance * 2 : distance * 2 )
      -			.animate( downAnim, speed, easing );
      -	}
      -
      -	// Start at the smallest distance if we are hiding
      -	if ( hide ) {
      -		distance = distance / Math.pow( 2, times - 1 );
      -	}
      -
      -	downAnim = {};
      -	downAnim[ ref ] = refValue;
      -
      -	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
      -	for ( ; i < times; i++ ) {
      -		upAnim = {};
      -		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
      -
      -		element
      -			.animate( upAnim, speed, easing )
      -			.animate( downAnim, speed, easing );
      -
      -		distance = hide ? distance * 2 : distance / 2;
      -	}
      -
      -	// Last Bounce when Hiding
      -	if ( hide ) {
      -		upAnim = { opacity: 0 };
      -		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
      -
      -		element.animate( upAnim, speed, easing );
      -	}
      -
      -	element.queue( done );
      -
      -	$.effects.unshift( element, queuelen, anims + 1 );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Clip 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Clip Effect
      -//>>group: Effects
      -//>>description: Clips the element on and off like an old TV.
      -//>>docs: http://api.jqueryui.com/clip-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) {
      -	var start,
      -		animate = {},
      -		element = $( this ),
      -		direction = options.direction || "vertical",
      -		both = direction === "both",
      -		horizontal = both || direction === "horizontal",
      -		vertical = both || direction === "vertical";
      -
      -	start = element.cssClip();
      -	animate.clip = {
      -		top: vertical ? ( start.bottom - start.top ) / 2 : start.top,
      -		right: horizontal ? ( start.right - start.left ) / 2 : start.right,
      -		bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,
      -		left: horizontal ? ( start.right - start.left ) / 2 : start.left
      -	};
      -
      -	$.effects.createPlaceholder( element );
      -
      -	if ( options.mode === "show" ) {
      -		element.cssClip( animate.clip );
      -		animate.clip = start;
      -	}
      -
      -	element.animate( animate, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Drop 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Drop Effect
      -//>>group: Effects
      -//>>description: Moves an element in one direction and hides it at the same time.
      -//>>docs: http://api.jqueryui.com/drop-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) {
      -
      -	var distance,
      -		element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -		direction = options.direction || "left",
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=",
      -		oppositeMotion = ( motion === "+=" ) ? "-=" : "+=",
      -		animation = {
      -			opacity: 0
      -		};
      -
      -	$.effects.createPlaceholder( element );
      -
      -	distance = options.distance ||
      -		element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;
      -
      -	animation[ ref ] = motion + distance;
      -
      -	if ( show ) {
      -		element.css( animation );
      -
      -		animation[ ref ] = oppositeMotion + distance;
      -		animation.opacity = 1;
      -	}
      -
      -	// Animate
      -	element.animate( animation, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Explode 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Explode Effect
      -//>>group: Effects
      -// jscs:disable maximumLineLength
      -//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/explode-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) {
      -
      -	var i, j, left, top, mx, my,
      -		rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,
      -		cells = rows,
      -		element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -
      -		// Show and then visibility:hidden the element before calculating offset
      -		offset = element.show().css( "visibility", "hidden" ).offset(),
      -
      -		// Width and height of a piece
      -		width = Math.ceil( element.outerWidth() / cells ),
      -		height = Math.ceil( element.outerHeight() / rows ),
      -		pieces = [];
      -
      -	// Children animate complete:
      -	function childComplete() {
      -		pieces.push( this );
      -		if ( pieces.length === rows * cells ) {
      -			animComplete();
      -		}
      -	}
      -
      -	// Clone the element for each row and cell.
      -	for ( i = 0; i < rows; i++ ) { // ===>
      -		top = offset.top + i * height;
      -		my = i - ( rows - 1 ) / 2;
      -
      -		for ( j = 0; j < cells; j++ ) { // |||
      -			left = offset.left + j * width;
      -			mx = j - ( cells - 1 ) / 2;
      -
      -			// Create a clone of the now hidden main element that will be absolute positioned
      -			// within a wrapper div off the -left and -top equal to size of our pieces
      -			element
      -				.clone()
      -				.appendTo( "body" )
      -				.wrap( "<div></div>" )
      -				.css( {
      -					position: "absolute",
      -					visibility: "visible",
      -					left: -j * width,
      -					top: -i * height
      -				} )
      -
      -				// Select the wrapper - make it overflow: hidden and absolute positioned based on
      -				// where the original was located +left and +top equal to the size of pieces
      -				.parent()
      -					.addClass( "ui-effects-explode" )
      -					.css( {
      -						position: "absolute",
      -						overflow: "hidden",
      -						width: width,
      -						height: height,
      -						left: left + ( show ? mx * width : 0 ),
      -						top: top + ( show ? my * height : 0 ),
      -						opacity: show ? 0 : 1
      -					} )
      -					.animate( {
      -						left: left + ( show ? 0 : mx * width ),
      -						top: top + ( show ? 0 : my * height ),
      -						opacity: show ? 1 : 0
      -					}, options.duration || 500, options.easing, childComplete );
      -		}
      -	}
      -
      -	function animComplete() {
      -		element.css( {
      -			visibility: "visible"
      -		} );
      -		$( pieces ).remove();
      -		done();
      -	}
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Fade 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Fade Effect
      -//>>group: Effects
      -//>>description: Fades the element.
      -//>>docs: http://api.jqueryui.com/fade-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) {
      -	var show = options.mode === "show";
      -
      -	$( this )
      -		.css( "opacity", show ? 0 : 1 )
      -		.animate( {
      -			opacity: show ? 1 : 0
      -		}, {
      -			queue: false,
      -			duration: options.duration,
      -			easing: options.easing,
      -			complete: done
      -		} );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Fold 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Fold Effect
      -//>>group: Effects
      -//>>description: Folds an element first horizontally and then vertically.
      -//>>docs: http://api.jqueryui.com/fold-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) {
      -
      -	// Create element
      -	var element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -		hide = mode === "hide",
      -		size = options.size || 15,
      -		percent = /([0-9]+)%/.exec( size ),
      -		horizFirst = !!options.horizFirst,
      -		ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ],
      -		duration = options.duration / 2,
      -
      -		placeholder = $.effects.createPlaceholder( element ),
      -
      -		start = element.cssClip(),
      -		animation1 = { clip: $.extend( {}, start ) },
      -		animation2 = { clip: $.extend( {}, start ) },
      -
      -		distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],
      -
      -		queuelen = element.queue().length;
      -
      -	if ( percent ) {
      -		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
      -	}
      -	animation1.clip[ ref[ 0 ] ] = size;
      -	animation2.clip[ ref[ 0 ] ] = size;
      -	animation2.clip[ ref[ 1 ] ] = 0;
      -
      -	if ( show ) {
      -		element.cssClip( animation2.clip );
      -		if ( placeholder ) {
      -			placeholder.css( $.effects.clipToBox( animation2 ) );
      -		}
      -
      -		animation2.clip = start;
      -	}
      -
      -	// Animate
      -	element
      -		.queue( function( next ) {
      -			if ( placeholder ) {
      -				placeholder
      -					.animate( $.effects.clipToBox( animation1 ), duration, options.easing )
      -					.animate( $.effects.clipToBox( animation2 ), duration, options.easing );
      -			}
      -
      -			next();
      -		} )
      -		.animate( animation1, duration, options.easing )
      -		.animate( animation2, duration, options.easing )
      -		.queue( done );
      -
      -	$.effects.unshift( element, queuelen, 4 );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Highlight 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Highlight Effect
      -//>>group: Effects
      -//>>description: Highlights the background of an element in a defined color for a custom duration.
      -//>>docs: http://api.jqueryui.com/highlight-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) {
      -	var element = $( this ),
      -		animation = {
      -			backgroundColor: element.css( "backgroundColor" )
      -		};
      -
      -	if ( options.mode === "hide" ) {
      -		animation.opacity = 0;
      -	}
      -
      -	$.effects.saveStyle( element );
      -
      -	element
      -		.css( {
      -			backgroundImage: "none",
      -			backgroundColor: options.color || "#ffff99"
      -		} )
      -		.animate( animation, {
      -			queue: false,
      -			duration: options.duration,
      -			easing: options.easing,
      -			complete: done
      -		} );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Size 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Size Effect
      -//>>group: Effects
      -//>>description: Resize an element to a specified width and height.
      -//>>docs: http://api.jqueryui.com/size-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectSize = $.effects.define( "size", function( options, done ) {
      -
      -	// Create element
      -	var baseline, factor, temp,
      -		element = $( this ),
      -
      -		// Copy for children
      -		cProps = [ "fontSize" ],
      -		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
      -		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
      -
      -		// Set options
      -		mode = options.mode,
      -		restore = mode !== "effect",
      -		scale = options.scale || "both",
      -		origin = options.origin || [ "middle", "center" ],
      -		position = element.css( "position" ),
      -		pos = element.position(),
      -		original = $.effects.scaledDimensions( element ),
      -		from = options.from || original,
      -		to = options.to || $.effects.scaledDimensions( element, 0 );
      -
      -	$.effects.createPlaceholder( element );
      -
      -	if ( mode === "show" ) {
      -		temp = from;
      -		from = to;
      -		to = temp;
      -	}
      -
      -	// Set scaling factor
      -	factor = {
      -		from: {
      -			y: from.height / original.height,
      -			x: from.width / original.width
      -		},
      -		to: {
      -			y: to.height / original.height,
      -			x: to.width / original.width
      -		}
      -	};
      -
      -	// Scale the css box
      -	if ( scale === "box" || scale === "both" ) {
      -
      -		// Vertical props scaling
      -		if ( factor.from.y !== factor.to.y ) {
      -			from = $.effects.setTransition( element, vProps, factor.from.y, from );
      -			to = $.effects.setTransition( element, vProps, factor.to.y, to );
      -		}
      -
      -		// Horizontal props scaling
      -		if ( factor.from.x !== factor.to.x ) {
      -			from = $.effects.setTransition( element, hProps, factor.from.x, from );
      -			to = $.effects.setTransition( element, hProps, factor.to.x, to );
      -		}
      -	}
      -
      -	// Scale the content
      -	if ( scale === "content" || scale === "both" ) {
      -
      -		// Vertical props scaling
      -		if ( factor.from.y !== factor.to.y ) {
      -			from = $.effects.setTransition( element, cProps, factor.from.y, from );
      -			to = $.effects.setTransition( element, cProps, factor.to.y, to );
      -		}
      -	}
      -
      -	// Adjust the position properties based on the provided origin points
      -	if ( origin ) {
      -		baseline = $.effects.getBaseline( origin, original );
      -		from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;
      -		from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;
      -		to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
      -		to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
      -	}
      -	element.css( from );
      -
      -	// Animate the children if desired
      -	if ( scale === "content" || scale === "both" ) {
      -
      -		vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps );
      -		hProps = hProps.concat( [ "marginLeft", "marginRight" ] );
      -
      -		// Only animate children with width attributes specified
      -		// TODO: is this right? should we include anything with css width specified as well
      -		element.find( "*[width]" ).each( function() {
      -			var child = $( this ),
      -				childOriginal = $.effects.scaledDimensions( child ),
      -				childFrom = {
      -					height: childOriginal.height * factor.from.y,
      -					width: childOriginal.width * factor.from.x,
      -					outerHeight: childOriginal.outerHeight * factor.from.y,
      -					outerWidth: childOriginal.outerWidth * factor.from.x
      -				},
      -				childTo = {
      -					height: childOriginal.height * factor.to.y,
      -					width: childOriginal.width * factor.to.x,
      -					outerHeight: childOriginal.height * factor.to.y,
      -					outerWidth: childOriginal.width * factor.to.x
      -				};
      -
      -			// Vertical props scaling
      -			if ( factor.from.y !== factor.to.y ) {
      -				childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );
      -				childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );
      -			}
      -
      -			// Horizontal props scaling
      -			if ( factor.from.x !== factor.to.x ) {
      -				childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );
      -				childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );
      -			}
      -
      -			if ( restore ) {
      -				$.effects.saveStyle( child );
      -			}
      -
      -			// Animate children
      -			child.css( childFrom );
      -			child.animate( childTo, options.duration, options.easing, function() {
      -
      -				// Restore children
      -				if ( restore ) {
      -					$.effects.restoreStyle( child );
      -				}
      -			} );
      -		} );
      -	}
      -
      -	// Animate
      -	element.animate( to, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: function() {
      -
      -			var offset = element.offset();
      -
      -			if ( to.opacity === 0 ) {
      -				element.css( "opacity", from.opacity );
      -			}
      -
      -			if ( !restore ) {
      -				element
      -					.css( "position", position === "static" ? "relative" : position )
      -					.offset( offset );
      -
      -				// Need to save style here so that automatic style restoration
      -				// doesn't restore to the original styles from before the animation.
      -				$.effects.saveStyle( element );
      -			}
      -
      -			done();
      -		}
      -	} );
      -
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Scale 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Scale Effect
      -//>>group: Effects
      -//>>description: Grows or shrinks an element and its content.
      -//>>docs: http://api.jqueryui.com/scale-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectScale = $.effects.define( "scale", function( options, done ) {
      -
      -	// Create element
      -	var el = $( this ),
      -		mode = options.mode,
      -		percent = parseInt( options.percent, 10 ) ||
      -			( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ),
      -
      -		newOptions = $.extend( true, {
      -			from: $.effects.scaledDimensions( el ),
      -			to: $.effects.scaledDimensions( el, percent, options.direction || "both" ),
      -			origin: options.origin || [ "middle", "center" ]
      -		}, options );
      -
      -	// Fade option to support puff
      -	if ( options.fade ) {
      -		newOptions.from.opacity = 1;
      -		newOptions.to.opacity = 0;
      -	}
      -
      -	$.effects.effect.size.call( this, newOptions, done );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Puff 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Puff Effect
      -//>>group: Effects
      -//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.
      -//>>docs: http://api.jqueryui.com/puff-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) {
      -	var newOptions = $.extend( true, {}, options, {
      -		fade: true,
      -		percent: parseInt( options.percent, 10 ) || 150
      -	} );
      -
      -	$.effects.effect.scale.call( this, newOptions, done );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Pulsate 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Pulsate Effect
      -//>>group: Effects
      -//>>description: Pulsates an element n times by changing the opacity to zero and back.
      -//>>docs: http://api.jqueryui.com/pulsate-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) {
      -	var element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -		hide = mode === "hide",
      -		showhide = show || hide,
      -
      -		// Showing or hiding leaves off the "last" animation
      -		anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
      -		duration = options.duration / anims,
      -		animateTo = 0,
      -		i = 1,
      -		queuelen = element.queue().length;
      -
      -	if ( show || !element.is( ":visible" ) ) {
      -		element.css( "opacity", 0 ).show();
      -		animateTo = 1;
      -	}
      -
      -	// Anims - 1 opacity "toggles"
      -	for ( ; i < anims; i++ ) {
      -		element.animate( { opacity: animateTo }, duration, options.easing );
      -		animateTo = 1 - animateTo;
      -	}
      -
      -	element.animate( { opacity: animateTo }, duration, options.easing );
      -
      -	element.queue( done );
      -
      -	$.effects.unshift( element, queuelen, anims + 1 );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Shake 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Shake Effect
      -//>>group: Effects
      -//>>description: Shakes an element horizontally or vertically n times.
      -//>>docs: http://api.jqueryui.com/shake-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectShake = $.effects.define( "shake", function( options, done ) {
      -
      -	var i = 1,
      -		element = $( this ),
      -		direction = options.direction || "left",
      -		distance = options.distance || 20,
      -		times = options.times || 3,
      -		anims = times * 2 + 1,
      -		speed = Math.round( options.duration / anims ),
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		positiveMotion = ( direction === "up" || direction === "left" ),
      -		animation = {},
      -		animation1 = {},
      -		animation2 = {},
      -
      -		queuelen = element.queue().length;
      -
      -	$.effects.createPlaceholder( element );
      -
      -	// Animation
      -	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
      -	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
      -	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
      -
      -	// Animate
      -	element.animate( animation, speed, options.easing );
      -
      -	// Shakes
      -	for ( ; i < times; i++ ) {
      -		element
      -			.animate( animation1, speed, options.easing )
      -			.animate( animation2, speed, options.easing );
      -	}
      -
      -	element
      -		.animate( animation1, speed, options.easing )
      -		.animate( animation, speed / 2, options.easing )
      -		.queue( done );
      -
      -	$.effects.unshift( element, queuelen, anims + 1 );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Slide 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Slide Effect
      -//>>group: Effects
      -//>>description: Slides an element in and out of the viewport.
      -//>>docs: http://api.jqueryui.com/slide-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) {
      -	var startClip, startRef,
      -		element = $( this ),
      -		map = {
      -			up: [ "bottom", "top" ],
      -			down: [ "top", "bottom" ],
      -			left: [ "right", "left" ],
      -			right: [ "left", "right" ]
      -		},
      -		mode = options.mode,
      -		direction = options.direction || "left",
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		positiveMotion = ( direction === "up" || direction === "left" ),
      -		distance = options.distance ||
      -			element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ),
      -		animation = {};
      -
      -	$.effects.createPlaceholder( element );
      -
      -	startClip = element.cssClip();
      -	startRef = element.position()[ ref ];
      -
      -	// Define hide animation
      -	animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;
      -	animation.clip = element.cssClip();
      -	animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];
      -
      -	// Reverse the animation if we're showing
      -	if ( mode === "show" ) {
      -		element.cssClip( animation.clip );
      -		element.css( ref, animation[ ref ] );
      -		animation.clip = startClip;
      -		animation[ ref ] = startRef;
      -	}
      -
      -	// Actually animate
      -	element.animate( animation, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -} );
      -
      -
      -/*!
      - * jQuery UI Effects Transfer 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Transfer Effect
      -//>>group: Effects
      -//>>description: Displays a transfer effect from one element to another.
      -//>>docs: http://api.jqueryui.com/transfer-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -
      -
      -var effect;
      -if ( $.uiBackCompat !== false ) {
      -	effect = $.effects.define( "transfer", function( options, done ) {
      -		$( this ).transfer( options, done );
      -	} );
      -}
      -var effectsEffectTransfer = effect;
      -
      -
      -/*!
      - * jQuery UI Focusable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: :focusable Selector
      -//>>group: Core
      -//>>description: Selects elements which can be focused.
      -//>>docs: http://api.jqueryui.com/focusable-selector/
      -
      -
      -
      -// Selectors
      -$.ui.focusable = function( element, hasTabindex ) {
      -	var map, mapName, img, focusableIfVisible, fieldset,
      -		nodeName = element.nodeName.toLowerCase();
      -
      -	if ( "area" === nodeName ) {
      -		map = element.parentNode;
      -		mapName = map.name;
      -		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
      -			return false;
      -		}
      -		img = $( "img[usemap='#" + mapName + "']" );
      -		return img.length > 0 && img.is( ":visible" );
      -	}
      -
      -	if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {
      -		focusableIfVisible = !element.disabled;
      -
      -		if ( focusableIfVisible ) {
      -
      -			// Form controls within a disabled fieldset are disabled.
      -			// However, controls within the fieldset's legend do not get disabled.
      -			// Since controls generally aren't placed inside legends, we skip
      -			// this portion of the check.
      -			fieldset = $( element ).closest( "fieldset" )[ 0 ];
      -			if ( fieldset ) {
      -				focusableIfVisible = !fieldset.disabled;
      -			}
      -		}
      -	} else if ( "a" === nodeName ) {
      -		focusableIfVisible = element.href || hasTabindex;
      -	} else {
      -		focusableIfVisible = hasTabindex;
      -	}
      -
      -	return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
      -};
      -
      -// Support: IE 8 only
      -// IE 8 doesn't resolve inherit to visible/hidden for computed values
      -function visible( element ) {
      -	var visibility = element.css( "visibility" );
      -	while ( visibility === "inherit" ) {
      -		element = element.parent();
      -		visibility = element.css( "visibility" );
      -	}
      -	return visibility !== "hidden";
      -}
      -
      -$.extend( $.expr[ ":" ], {
      -	focusable: function( element ) {
      -		return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
      -	}
      -} );
      -
      -var focusable = $.ui.focusable;
      -
      -
      -
      -
      -// Support: IE8 Only
      -// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
      -// with a string, so we need to find the proper form.
      -var form = $.fn.form = function() {
      -	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
      -};
      -
      -
      -/*!
      - * jQuery UI Form Reset Mixin 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Form Reset Mixin
      -//>>group: Core
      -//>>description: Refresh input widgets when their form is reset
      -//>>docs: http://api.jqueryui.com/form-reset-mixin/
      -
      -
      -
      -var formResetMixin = $.ui.formResetMixin = {
      -	_formResetHandler: function() {
      -		var form = $( this );
      -
      -		// Wait for the form reset to actually happen before refreshing
      -		setTimeout( function() {
      -			var instances = form.data( "ui-form-reset-instances" );
      -			$.each( instances, function() {
      -				this.refresh();
      -			} );
      -		} );
      -	},
      -
      -	_bindFormResetHandler: function() {
      -		this.form = this.element.form();
      -		if ( !this.form.length ) {
      -			return;
      -		}
      -
      -		var instances = this.form.data( "ui-form-reset-instances" ) || [];
      -		if ( !instances.length ) {
      -
      -			// We don't use _on() here because we use a single event handler per form
      -			this.form.on( "reset.ui-form-reset", this._formResetHandler );
      -		}
      -		instances.push( this );
      -		this.form.data( "ui-form-reset-instances", instances );
      -	},
      -
      -	_unbindFormResetHandler: function() {
      -		if ( !this.form.length ) {
      -			return;
      -		}
      -
      -		var instances = this.form.data( "ui-form-reset-instances" );
      -		instances.splice( $.inArray( this, instances ), 1 );
      -		if ( instances.length ) {
      -			this.form.data( "ui-form-reset-instances", instances );
      -		} else {
      -			this.form
      -				.removeData( "ui-form-reset-instances" )
      -				.off( "reset.ui-form-reset" );
      -		}
      -	}
      -};
      -
      -
      -/*!
      - * jQuery UI Support for jQuery core 1.7.x 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - */
      -
      -//>>label: jQuery 1.7 Support
      -//>>group: Core
      -//>>description: Support version 1.7.x of jQuery core
      -
      -
      -
      -// Support: jQuery 1.7 only
      -// Not a great way to check versions, but since we only support 1.7+ and only
      -// need to detect <1.8, this is a simple check that should suffice. Checking
      -// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
      -// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
      -// 1.7 anymore). See #11197 for why we're not using feature detection.
      -if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {
      -
      -	// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
      -	// Unlike jQuery Core 1.8+, these only support numeric values to set the
      -	// dimensions in pixels
      -	$.each( [ "Width", "Height" ], function( i, name ) {
      -		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
      -			type = name.toLowerCase(),
      -			orig = {
      -				innerWidth: $.fn.innerWidth,
      -				innerHeight: $.fn.innerHeight,
      -				outerWidth: $.fn.outerWidth,
      -				outerHeight: $.fn.outerHeight
      -			};
      -
      -		function reduce( elem, size, border, margin ) {
      -			$.each( side, function() {
      -				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
      -				if ( border ) {
      -					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
      -				}
      -				if ( margin ) {
      -					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
      -				}
      -			} );
      -			return size;
      -		}
      -
      -		$.fn[ "inner" + name ] = function( size ) {
      -			if ( size === undefined ) {
      -				return orig[ "inner" + name ].call( this );
      -			}
      -
      -			return this.each( function() {
      -				$( this ).css( type, reduce( this, size ) + "px" );
      -			} );
      -		};
      -
      -		$.fn[ "outer" + name ] = function( size, margin ) {
      -			if ( typeof size !== "number" ) {
      -				return orig[ "outer" + name ].call( this, size );
      -			}
      -
      -			return this.each( function() {
      -				$( this ).css( type, reduce( this, size, true, margin ) + "px" );
      -			} );
      -		};
      -	} );
      -
      -	$.fn.addBack = function( selector ) {
      -		return this.add( selector == null ?
      -			this.prevObject : this.prevObject.filter( selector )
      -		);
      -	};
      -}
      -
      -;
      -/*!
      - * jQuery UI Keycode 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Keycode
      -//>>group: Core
      -//>>description: Provide keycodes as keynames
      -//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
      -
      -
      -var keycode = $.ui.keyCode = {
      -	BACKSPACE: 8,
      -	COMMA: 188,
      -	DELETE: 46,
      -	DOWN: 40,
      -	END: 35,
      -	ENTER: 13,
      -	ESCAPE: 27,
      -	HOME: 36,
      -	LEFT: 37,
      -	PAGE_DOWN: 34,
      -	PAGE_UP: 33,
      -	PERIOD: 190,
      -	RIGHT: 39,
      -	SPACE: 32,
      -	TAB: 9,
      -	UP: 38
      -};
      -
      -
      -
      -
      -// Internal use only
      -var escapeSelector = $.ui.escapeSelector = ( function() {
      -	var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
      -	return function( selector ) {
      -		return selector.replace( selectorEscape, "\\$1" );
      -	};
      -} )();
      -
      -
      -/*!
      - * jQuery UI Labels 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: labels
      -//>>group: Core
      -//>>description: Find all the labels associated with a given input
      -//>>docs: http://api.jqueryui.com/labels/
      -
      -
      -
      -var labels = $.fn.labels = function() {
      -	var ancestor, selector, id, labels, ancestors;
      -
      -	// Check control.labels first
      -	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
      -		return this.pushStack( this[ 0 ].labels );
      -	}
      -
      -	// Support: IE <= 11, FF <= 37, Android <= 2.3 only
      -	// Above browsers do not support control.labels. Everything below is to support them
      -	// as well as document fragments. control.labels does not work on document fragments
      -	labels = this.eq( 0 ).parents( "label" );
      -
      -	// Look for the label based on the id
      -	id = this.attr( "id" );
      -	if ( id ) {
      -
      -		// We don't search against the document in case the element
      -		// is disconnected from the DOM
      -		ancestor = this.eq( 0 ).parents().last();
      -
      -		// Get a full set of top level ancestors
      -		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
      -
      -		// Create a selector for the label based on the id
      -		selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
      -
      -		labels = labels.add( ancestors.find( selector ).addBack( selector ) );
      -
      -	}
      -
      -	// Return whatever we have found for labels
      -	return this.pushStack( labels );
      -};
      -
      -
      -/*!
      - * jQuery UI Scroll Parent 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: scrollParent
      -//>>group: Core
      -//>>description: Get the closest ancestor element that is scrollable.
      -//>>docs: http://api.jqueryui.com/scrollParent/
      -
      -
      -
      -var scrollParent = $.fn.scrollParent = function( includeHidden ) {
      -	var position = this.css( "position" ),
      -		excludeStaticParent = position === "absolute",
      -		overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
      -		scrollParent = this.parents().filter( function() {
      -			var parent = $( this );
      -			if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
      -				return false;
      -			}
      -			return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
      -				parent.css( "overflow-x" ) );
      -		} ).eq( 0 );
      -
      -	return position === "fixed" || !scrollParent.length ?
      -		$( this[ 0 ].ownerDocument || document ) :
      -		scrollParent;
      -};
      -
      -
      -/*!
      - * jQuery UI Tabbable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: :tabbable Selector
      -//>>group: Core
      -//>>description: Selects elements which can be tabbed to.
      -//>>docs: http://api.jqueryui.com/tabbable-selector/
      -
      -
      -
      -var tabbable = $.extend( $.expr[ ":" ], {
      -	tabbable: function( element ) {
      -		var tabIndex = $.attr( element, "tabindex" ),
      -			hasTabindex = tabIndex != null;
      -		return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
      -	}
      -} );
      -
      -
      -/*!
      - * jQuery UI Unique ID 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: uniqueId
      -//>>group: Core
      -//>>description: Functions to generate and remove uniqueId's
      -//>>docs: http://api.jqueryui.com/uniqueId/
      -
      -
      -
      -var uniqueId = $.fn.extend( {
      -	uniqueId: ( function() {
      -		var uuid = 0;
      -
      -		return function() {
      -			return this.each( function() {
      -				if ( !this.id ) {
      -					this.id = "ui-id-" + ( ++uuid );
      -				}
      -			} );
      -		};
      -	} )(),
      -
      -	removeUniqueId: function() {
      -		return this.each( function() {
      -			if ( /^ui-id-\d+$/.test( this.id ) ) {
      -				$( this ).removeAttr( "id" );
      -			}
      -		} );
      -	}
      -} );
      -
      -
      -/*!
      - * jQuery UI Accordion 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Accordion
      -//>>group: Widgets
      -// jscs:disable maximumLineLength
      -//>>description: Displays collapsible content panels for presenting information in a limited amount of space.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/accordion/
      -//>>demos: http://jqueryui.com/accordion/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/accordion.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -var widgetsAccordion = $.widget( "ui.accordion", {
      -	version: "1.12.1",
      -	options: {
      -		active: 0,
      -		animate: {},
      -		classes: {
      -			"ui-accordion-header": "ui-corner-top",
      -			"ui-accordion-header-collapsed": "ui-corner-all",
      -			"ui-accordion-content": "ui-corner-bottom"
      -		},
      -		collapsible: false,
      -		event: "click",
      -		header: "> li > :first-child, > :not(li):even",
      -		heightStyle: "auto",
      -		icons: {
      -			activeHeader: "ui-icon-triangle-1-s",
      -			header: "ui-icon-triangle-1-e"
      -		},
      -
      -		// Callbacks
      -		activate: null,
      -		beforeActivate: null
      -	},
      -
      -	hideProps: {
      -		borderTopWidth: "hide",
      -		borderBottomWidth: "hide",
      -		paddingTop: "hide",
      -		paddingBottom: "hide",
      -		height: "hide"
      -	},
      -
      -	showProps: {
      -		borderTopWidth: "show",
      -		borderBottomWidth: "show",
      -		paddingTop: "show",
      -		paddingBottom: "show",
      -		height: "show"
      -	},
      -
      -	_create: function() {
      -		var options = this.options;
      -
      -		this.prevShow = this.prevHide = $();
      -		this._addClass( "ui-accordion", "ui-widget ui-helper-reset" );
      -		this.element.attr( "role", "tablist" );
      -
      -		// Don't allow collapsible: false and active: false / null
      -		if ( !options.collapsible && ( options.active === false || options.active == null ) ) {
      -			options.active = 0;
      -		}
      -
      -		this._processPanels();
      -
      -		// handle negative values
      -		if ( options.active < 0 ) {
      -			options.active += this.headers.length;
      -		}
      -		this._refresh();
      -	},
      -
      -	_getCreateEventData: function() {
      -		return {
      -			header: this.active,
      -			panel: !this.active.length ? $() : this.active.next()
      -		};
      -	},
      -
      -	_createIcons: function() {
      -		var icon, children,
      -			icons = this.options.icons;
      -
      -		if ( icons ) {
      -			icon = $( "<span>" );
      -			this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header );
      -			icon.prependTo( this.headers );
      -			children = this.active.children( ".ui-accordion-header-icon" );
      -			this._removeClass( children, icons.header )
      -				._addClass( children, null, icons.activeHeader )
      -				._addClass( this.headers, "ui-accordion-icons" );
      -		}
      -	},
      -
      -	_destroyIcons: function() {
      -		this._removeClass( this.headers, "ui-accordion-icons" );
      -		this.headers.children( ".ui-accordion-header-icon" ).remove();
      -	},
      -
      -	_destroy: function() {
      -		var contents;
      -
      -		// Clean up main element
      -		this.element.removeAttr( "role" );
      -
      -		// Clean up headers
      -		this.headers
      -			.removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" )
      -			.removeUniqueId();
      -
      -		this._destroyIcons();
      -
      -		// Clean up content panels
      -		contents = this.headers.next()
      -			.css( "display", "" )
      -			.removeAttr( "role aria-hidden aria-labelledby" )
      -			.removeUniqueId();
      -
      -		if ( this.options.heightStyle !== "content" ) {
      -			contents.css( "height", "" );
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "active" ) {
      -
      -			// _activate() will handle invalid values and update this.options
      -			this._activate( value );
      -			return;
      -		}
      -
      -		if ( key === "event" ) {
      -			if ( this.options.event ) {
      -				this._off( this.headers, this.options.event );
      -			}
      -			this._setupEvents( value );
      -		}
      -
      -		this._super( key, value );
      -
      -		// Setting collapsible: false while collapsed; open first panel
      -		if ( key === "collapsible" && !value && this.options.active === false ) {
      -			this._activate( 0 );
      -		}
      -
      -		if ( key === "icons" ) {
      -			this._destroyIcons();
      -			if ( value ) {
      -				this._createIcons();
      -			}
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.element.attr( "aria-disabled", value );
      -
      -		// Support: IE8 Only
      -		// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
      -		// so we need to add the disabled class to the headers and panels
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -		this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled",
      -			!!value );
      -	},
      -
      -	_keydown: function( event ) {
      -		if ( event.altKey || event.ctrlKey ) {
      -			return;
      -		}
      -
      -		var keyCode = $.ui.keyCode,
      -			length = this.headers.length,
      -			currentIndex = this.headers.index( event.target ),
      -			toFocus = false;
      -
      -		switch ( event.keyCode ) {
      -		case keyCode.RIGHT:
      -		case keyCode.DOWN:
      -			toFocus = this.headers[ ( currentIndex + 1 ) % length ];
      -			break;
      -		case keyCode.LEFT:
      -		case keyCode.UP:
      -			toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
      -			break;
      -		case keyCode.SPACE:
      -		case keyCode.ENTER:
      -			this._eventHandler( event );
      -			break;
      -		case keyCode.HOME:
      -			toFocus = this.headers[ 0 ];
      -			break;
      -		case keyCode.END:
      -			toFocus = this.headers[ length - 1 ];
      -			break;
      -		}
      -
      -		if ( toFocus ) {
      -			$( event.target ).attr( "tabIndex", -1 );
      -			$( toFocus ).attr( "tabIndex", 0 );
      -			$( toFocus ).trigger( "focus" );
      -			event.preventDefault();
      -		}
      -	},
      -
      -	_panelKeyDown: function( event ) {
      -		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
      -			$( event.currentTarget ).prev().trigger( "focus" );
      -		}
      -	},
      -
      -	refresh: function() {
      -		var options = this.options;
      -		this._processPanels();
      -
      -		// Was collapsed or no panel
      -		if ( ( options.active === false && options.collapsible === true ) ||
      -				!this.headers.length ) {
      -			options.active = false;
      -			this.active = $();
      -
      -		// active false only when collapsible is true
      -		} else if ( options.active === false ) {
      -			this._activate( 0 );
      -
      -		// was active, but active panel is gone
      -		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
      -
      -			// all remaining panel are disabled
      -			if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) {
      -				options.active = false;
      -				this.active = $();
      -
      -			// activate previous panel
      -			} else {
      -				this._activate( Math.max( 0, options.active - 1 ) );
      -			}
      -
      -		// was active, active panel still exists
      -		} else {
      -
      -			// make sure active index is correct
      -			options.active = this.headers.index( this.active );
      -		}
      -
      -		this._destroyIcons();
      -
      -		this._refresh();
      -	},
      -
      -	_processPanels: function() {
      -		var prevHeaders = this.headers,
      -			prevPanels = this.panels;
      -
      -		this.headers = this.element.find( this.options.header );
      -		this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
      -			"ui-state-default" );
      -
      -		this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide();
      -		this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" );
      -
      -		// Avoid memory leaks (#10056)
      -		if ( prevPanels ) {
      -			this._off( prevHeaders.not( this.headers ) );
      -			this._off( prevPanels.not( this.panels ) );
      -		}
      -	},
      -
      -	_refresh: function() {
      -		var maxHeight,
      -			options = this.options,
      -			heightStyle = options.heightStyle,
      -			parent = this.element.parent();
      -
      -		this.active = this._findActive( options.active );
      -		this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" )
      -			._removeClass( this.active, "ui-accordion-header-collapsed" );
      -		this._addClass( this.active.next(), "ui-accordion-content-active" );
      -		this.active.next().show();
      -
      -		this.headers
      -			.attr( "role", "tab" )
      -			.each( function() {
      -				var header = $( this ),
      -					headerId = header.uniqueId().attr( "id" ),
      -					panel = header.next(),
      -					panelId = panel.uniqueId().attr( "id" );
      -				header.attr( "aria-controls", panelId );
      -				panel.attr( "aria-labelledby", headerId );
      -			} )
      -			.next()
      -				.attr( "role", "tabpanel" );
      -
      -		this.headers
      -			.not( this.active )
      -				.attr( {
      -					"aria-selected": "false",
      -					"aria-expanded": "false",
      -					tabIndex: -1
      -				} )
      -				.next()
      -					.attr( {
      -						"aria-hidden": "true"
      -					} )
      -					.hide();
      -
      -		// Make sure at least one header is in the tab order
      -		if ( !this.active.length ) {
      -			this.headers.eq( 0 ).attr( "tabIndex", 0 );
      -		} else {
      -			this.active.attr( {
      -				"aria-selected": "true",
      -				"aria-expanded": "true",
      -				tabIndex: 0
      -			} )
      -				.next()
      -					.attr( {
      -						"aria-hidden": "false"
      -					} );
      -		}
      -
      -		this._createIcons();
      -
      -		this._setupEvents( options.event );
      -
      -		if ( heightStyle === "fill" ) {
      -			maxHeight = parent.height();
      -			this.element.siblings( ":visible" ).each( function() {
      -				var elem = $( this ),
      -					position = elem.css( "position" );
      -
      -				if ( position === "absolute" || position === "fixed" ) {
      -					return;
      -				}
      -				maxHeight -= elem.outerHeight( true );
      -			} );
      -
      -			this.headers.each( function() {
      -				maxHeight -= $( this ).outerHeight( true );
      -			} );
      -
      -			this.headers.next()
      -				.each( function() {
      -					$( this ).height( Math.max( 0, maxHeight -
      -						$( this ).innerHeight() + $( this ).height() ) );
      -				} )
      -				.css( "overflow", "auto" );
      -		} else if ( heightStyle === "auto" ) {
      -			maxHeight = 0;
      -			this.headers.next()
      -				.each( function() {
      -					var isVisible = $( this ).is( ":visible" );
      -					if ( !isVisible ) {
      -						$( this ).show();
      -					}
      -					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
      -					if ( !isVisible ) {
      -						$( this ).hide();
      -					}
      -				} )
      -				.height( maxHeight );
      -		}
      -	},
      -
      -	_activate: function( index ) {
      -		var active = this._findActive( index )[ 0 ];
      -
      -		// Trying to activate the already active panel
      -		if ( active === this.active[ 0 ] ) {
      -			return;
      -		}
      -
      -		// Trying to collapse, simulate a click on the currently active header
      -		active = active || this.active[ 0 ];
      -
      -		this._eventHandler( {
      -			target: active,
      -			currentTarget: active,
      -			preventDefault: $.noop
      -		} );
      -	},
      -
      -	_findActive: function( selector ) {
      -		return typeof selector === "number" ? this.headers.eq( selector ) : $();
      -	},
      -
      -	_setupEvents: function( event ) {
      -		var events = {
      -			keydown: "_keydown"
      -		};
      -		if ( event ) {
      -			$.each( event.split( " " ), function( index, eventName ) {
      -				events[ eventName ] = "_eventHandler";
      -			} );
      -		}
      -
      -		this._off( this.headers.add( this.headers.next() ) );
      -		this._on( this.headers, events );
      -		this._on( this.headers.next(), { keydown: "_panelKeyDown" } );
      -		this._hoverable( this.headers );
      -		this._focusable( this.headers );
      -	},
      -
      -	_eventHandler: function( event ) {
      -		var activeChildren, clickedChildren,
      -			options = this.options,
      -			active = this.active,
      -			clicked = $( event.currentTarget ),
      -			clickedIsActive = clicked[ 0 ] === active[ 0 ],
      -			collapsing = clickedIsActive && options.collapsible,
      -			toShow = collapsing ? $() : clicked.next(),
      -			toHide = active.next(),
      -			eventData = {
      -				oldHeader: active,
      -				oldPanel: toHide,
      -				newHeader: collapsing ? $() : clicked,
      -				newPanel: toShow
      -			};
      -
      -		event.preventDefault();
      -
      -		if (
      -
      -				// click on active header, but not collapsible
      -				( clickedIsActive && !options.collapsible ) ||
      -
      -				// allow canceling activation
      -				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
      -			return;
      -		}
      -
      -		options.active = collapsing ? false : this.headers.index( clicked );
      -
      -		// When the call to ._toggle() comes after the class changes
      -		// it causes a very odd bug in IE 8 (see #6720)
      -		this.active = clickedIsActive ? $() : clicked;
      -		this._toggle( eventData );
      -
      -		// Switch classes
      -		// corner classes on the previously active header stay after the animation
      -		this._removeClass( active, "ui-accordion-header-active", "ui-state-active" );
      -		if ( options.icons ) {
      -			activeChildren = active.children( ".ui-accordion-header-icon" );
      -			this._removeClass( activeChildren, null, options.icons.activeHeader )
      -				._addClass( activeChildren, null, options.icons.header );
      -		}
      -
      -		if ( !clickedIsActive ) {
      -			this._removeClass( clicked, "ui-accordion-header-collapsed" )
      -				._addClass( clicked, "ui-accordion-header-active", "ui-state-active" );
      -			if ( options.icons ) {
      -				clickedChildren = clicked.children( ".ui-accordion-header-icon" );
      -				this._removeClass( clickedChildren, null, options.icons.header )
      -					._addClass( clickedChildren, null, options.icons.activeHeader );
      -			}
      -
      -			this._addClass( clicked.next(), "ui-accordion-content-active" );
      -		}
      -	},
      -
      -	_toggle: function( data ) {
      -		var toShow = data.newPanel,
      -			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
      -
      -		// Handle activating a panel during the animation for another activation
      -		this.prevShow.add( this.prevHide ).stop( true, true );
      -		this.prevShow = toShow;
      -		this.prevHide = toHide;
      -
      -		if ( this.options.animate ) {
      -			this._animate( toShow, toHide, data );
      -		} else {
      -			toHide.hide();
      -			toShow.show();
      -			this._toggleComplete( data );
      -		}
      -
      -		toHide.attr( {
      -			"aria-hidden": "true"
      -		} );
      -		toHide.prev().attr( {
      -			"aria-selected": "false",
      -			"aria-expanded": "false"
      -		} );
      -
      -		// if we're switching panels, remove the old header from the tab order
      -		// if we're opening from collapsed state, remove the previous header from the tab order
      -		// if we're collapsing, then keep the collapsing header in the tab order
      -		if ( toShow.length && toHide.length ) {
      -			toHide.prev().attr( {
      -				"tabIndex": -1,
      -				"aria-expanded": "false"
      -			} );
      -		} else if ( toShow.length ) {
      -			this.headers.filter( function() {
      -				return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
      -			} )
      -				.attr( "tabIndex", -1 );
      -		}
      -
      -		toShow
      -			.attr( "aria-hidden", "false" )
      -			.prev()
      -				.attr( {
      -					"aria-selected": "true",
      -					"aria-expanded": "true",
      -					tabIndex: 0
      -				} );
      -	},
      -
      -	_animate: function( toShow, toHide, data ) {
      -		var total, easing, duration,
      -			that = this,
      -			adjust = 0,
      -			boxSizing = toShow.css( "box-sizing" ),
      -			down = toShow.length &&
      -				( !toHide.length || ( toShow.index() < toHide.index() ) ),
      -			animate = this.options.animate || {},
      -			options = down && animate.down || animate,
      -			complete = function() {
      -				that._toggleComplete( data );
      -			};
      -
      -		if ( typeof options === "number" ) {
      -			duration = options;
      -		}
      -		if ( typeof options === "string" ) {
      -			easing = options;
      -		}
      -
      -		// fall back from options to animation in case of partial down settings
      -		easing = easing || options.easing || animate.easing;
      -		duration = duration || options.duration || animate.duration;
      -
      -		if ( !toHide.length ) {
      -			return toShow.animate( this.showProps, duration, easing, complete );
      -		}
      -		if ( !toShow.length ) {
      -			return toHide.animate( this.hideProps, duration, easing, complete );
      -		}
      -
      -		total = toShow.show().outerHeight();
      -		toHide.animate( this.hideProps, {
      -			duration: duration,
      -			easing: easing,
      -			step: function( now, fx ) {
      -				fx.now = Math.round( now );
      -			}
      -		} );
      -		toShow
      -			.hide()
      -			.animate( this.showProps, {
      -				duration: duration,
      -				easing: easing,
      -				complete: complete,
      -				step: function( now, fx ) {
      -					fx.now = Math.round( now );
      -					if ( fx.prop !== "height" ) {
      -						if ( boxSizing === "content-box" ) {
      -							adjust += fx.now;
      -						}
      -					} else if ( that.options.heightStyle !== "content" ) {
      -						fx.now = Math.round( total - toHide.outerHeight() - adjust );
      -						adjust = 0;
      -					}
      -				}
      -			} );
      -	},
      -
      -	_toggleComplete: function( data ) {
      -		var toHide = data.oldPanel,
      -			prev = toHide.prev();
      -
      -		this._removeClass( toHide, "ui-accordion-content-active" );
      -		this._removeClass( prev, "ui-accordion-header-active" )
      -			._addClass( prev, "ui-accordion-header-collapsed" );
      -
      -		// Work around for rendering bug in IE (#5421)
      -		if ( toHide.length ) {
      -			toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
      -		}
      -		this._trigger( "activate", null, data );
      -	}
      -} );
      -
      -
      -
      -var safeActiveElement = $.ui.safeActiveElement = function( document ) {
      -	var activeElement;
      -
      -	// Support: IE 9 only
      -	// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
      -	try {
      -		activeElement = document.activeElement;
      -	} catch ( error ) {
      -		activeElement = document.body;
      -	}
      -
      -	// Support: IE 9 - 11 only
      -	// IE may return null instead of an element
      -	// Interestingly, this only seems to occur when NOT in an iframe
      -	if ( !activeElement ) {
      -		activeElement = document.body;
      -	}
      -
      -	// Support: IE 11 only
      -	// IE11 returns a seemingly empty object in some cases when accessing
      -	// document.activeElement from an <iframe>
      -	if ( !activeElement.nodeName ) {
      -		activeElement = document.body;
      -	}
      -
      -	return activeElement;
      -};
      -
      -
      -/*!
      - * jQuery UI Menu 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Menu
      -//>>group: Widgets
      -//>>description: Creates nestable menus.
      -//>>docs: http://api.jqueryui.com/menu/
      -//>>demos: http://jqueryui.com/menu/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/menu.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -var widgetsMenu = $.widget( "ui.menu", {
      -	version: "1.12.1",
      -	defaultElement: "<ul>",
      -	delay: 300,
      -	options: {
      -		icons: {
      -			submenu: "ui-icon-caret-1-e"
      -		},
      -		items: "> *",
      -		menus: "ul",
      -		position: {
      -			my: "left top",
      -			at: "right top"
      -		},
      -		role: "menu",
      -
      -		// Callbacks
      -		blur: null,
      -		focus: null,
      -		select: null
      -	},
      -
      -	_create: function() {
      -		this.activeMenu = this.element;
      -
      -		// Flag used to prevent firing of the click handler
      -		// as the event bubbles up through nested menus
      -		this.mouseHandled = false;
      -		this.element
      -			.uniqueId()
      -			.attr( {
      -				role: this.options.role,
      -				tabIndex: 0
      -			} );
      -
      -		this._addClass( "ui-menu", "ui-widget ui-widget-content" );
      -		this._on( {
      -
      -			// Prevent focus from sticking to links inside menu after clicking
      -			// them (focus should always stay on UL during navigation).
      -			"mousedown .ui-menu-item": function( event ) {
      -				event.preventDefault();
      -			},
      -			"click .ui-menu-item": function( event ) {
      -				var target = $( event.target );
      -				var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
      -				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
      -					this.select( event );
      -
      -					// Only set the mouseHandled flag if the event will bubble, see #9469.
      -					if ( !event.isPropagationStopped() ) {
      -						this.mouseHandled = true;
      -					}
      -
      -					// Open submenu on click
      -					if ( target.has( ".ui-menu" ).length ) {
      -						this.expand( event );
      -					} else if ( !this.element.is( ":focus" ) &&
      -							active.closest( ".ui-menu" ).length ) {
      -
      -						// Redirect focus to the menu
      -						this.element.trigger( "focus", [ true ] );
      -
      -						// If the active item is on the top level, let it stay active.
      -						// Otherwise, blur the active item since it is no longer visible.
      -						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
      -							clearTimeout( this.timer );
      -						}
      -					}
      -				}
      -			},
      -			"mouseenter .ui-menu-item": function( event ) {
      -
      -				// Ignore mouse events while typeahead is active, see #10458.
      -				// Prevents focusing the wrong item when typeahead causes a scroll while the mouse
      -				// is over an item in the menu
      -				if ( this.previousFilter ) {
      -					return;
      -				}
      -
      -				var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
      -					target = $( event.currentTarget );
      -
      -				// Ignore bubbled events on parent items, see #11641
      -				if ( actualTarget[ 0 ] !== target[ 0 ] ) {
      -					return;
      -				}
      -
      -				// Remove ui-state-active class from siblings of the newly focused menu item
      -				// to avoid a jump caused by adjacent elements both having a class with a border
      -				this._removeClass( target.siblings().children( ".ui-state-active" ),
      -					null, "ui-state-active" );
      -				this.focus( event, target );
      -			},
      -			mouseleave: "collapseAll",
      -			"mouseleave .ui-menu": "collapseAll",
      -			focus: function( event, keepActiveItem ) {
      -
      -				// If there's already an active item, keep it active
      -				// If not, activate the first item
      -				var item = this.active || this.element.find( this.options.items ).eq( 0 );
      -
      -				if ( !keepActiveItem ) {
      -					this.focus( event, item );
      -				}
      -			},
      -			blur: function( event ) {
      -				this._delay( function() {
      -					var notContained = !$.contains(
      -						this.element[ 0 ],
      -						$.ui.safeActiveElement( this.document[ 0 ] )
      -					);
      -					if ( notContained ) {
      -						this.collapseAll( event );
      -					}
      -				} );
      -			},
      -			keydown: "_keydown"
      -		} );
      -
      -		this.refresh();
      -
      -		// Clicks outside of a menu collapse any open menus
      -		this._on( this.document, {
      -			click: function( event ) {
      -				if ( this._closeOnDocumentClick( event ) ) {
      -					this.collapseAll( event );
      -				}
      -
      -				// Reset the mouseHandled flag
      -				this.mouseHandled = false;
      -			}
      -		} );
      -	},
      -
      -	_destroy: function() {
      -		var items = this.element.find( ".ui-menu-item" )
      -				.removeAttr( "role aria-disabled" ),
      -			submenus = items.children( ".ui-menu-item-wrapper" )
      -				.removeUniqueId()
      -				.removeAttr( "tabIndex role aria-haspopup" );
      -
      -		// Destroy (sub)menus
      -		this.element
      -			.removeAttr( "aria-activedescendant" )
      -			.find( ".ui-menu" ).addBack()
      -				.removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
      -					"tabIndex" )
      -				.removeUniqueId()
      -				.show();
      -
      -		submenus.children().each( function() {
      -			var elem = $( this );
      -			if ( elem.data( "ui-menu-submenu-caret" ) ) {
      -				elem.remove();
      -			}
      -		} );
      -	},
      -
      -	_keydown: function( event ) {
      -		var match, prev, character, skip,
      -			preventDefault = true;
      -
      -		switch ( event.keyCode ) {
      -		case $.ui.keyCode.PAGE_UP:
      -			this.previousPage( event );
      -			break;
      -		case $.ui.keyCode.PAGE_DOWN:
      -			this.nextPage( event );
      -			break;
      -		case $.ui.keyCode.HOME:
      -			this._move( "first", "first", event );
      -			break;
      -		case $.ui.keyCode.END:
      -			this._move( "last", "last", event );
      -			break;
      -		case $.ui.keyCode.UP:
      -			this.previous( event );
      -			break;
      -		case $.ui.keyCode.DOWN:
      -			this.next( event );
      -			break;
      -		case $.ui.keyCode.LEFT:
      -			this.collapse( event );
      -			break;
      -		case $.ui.keyCode.RIGHT:
      -			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
      -				this.expand( event );
      -			}
      -			break;
      -		case $.ui.keyCode.ENTER:
      -		case $.ui.keyCode.SPACE:
      -			this._activate( event );
      -			break;
      -		case $.ui.keyCode.ESCAPE:
      -			this.collapse( event );
      -			break;
      -		default:
      -			preventDefault = false;
      -			prev = this.previousFilter || "";
      -			skip = false;
      -
      -			// Support number pad values
      -			character = event.keyCode >= 96 && event.keyCode <= 105 ?
      -				( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
      -
      -			clearTimeout( this.filterTimer );
      -
      -			if ( character === prev ) {
      -				skip = true;
      -			} else {
      -				character = prev + character;
      -			}
      -
      -			match = this._filterMenuItems( character );
      -			match = skip && match.index( this.active.next() ) !== -1 ?
      -				this.active.nextAll( ".ui-menu-item" ) :
      -				match;
      -
      -			// If no matches on the current filter, reset to the last character pressed
      -			// to move down the menu to the first item that starts with that character
      -			if ( !match.length ) {
      -				character = String.fromCharCode( event.keyCode );
      -				match = this._filterMenuItems( character );
      -			}
      -
      -			if ( match.length ) {
      -				this.focus( event, match );
      -				this.previousFilter = character;
      -				this.filterTimer = this._delay( function() {
      -					delete this.previousFilter;
      -				}, 1000 );
      -			} else {
      -				delete this.previousFilter;
      -			}
      -		}
      -
      -		if ( preventDefault ) {
      -			event.preventDefault();
      -		}
      -	},
      -
      -	_activate: function( event ) {
      -		if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
      -			if ( this.active.children( "[aria-haspopup='true']" ).length ) {
      -				this.expand( event );
      -			} else {
      -				this.select( event );
      -			}
      -		}
      -	},
      -
      -	refresh: function() {
      -		var menus, items, newSubmenus, newItems, newWrappers,
      -			that = this,
      -			icon = this.options.icons.submenu,
      -			submenus = this.element.find( this.options.menus );
      -
      -		this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
      -
      -		// Initialize nested menus
      -		newSubmenus = submenus.filter( ":not(.ui-menu)" )
      -			.hide()
      -			.attr( {
      -				role: this.options.role,
      -				"aria-hidden": "true",
      -				"aria-expanded": "false"
      -			} )
      -			.each( function() {
      -				var menu = $( this ),
      -					item = menu.prev(),
      -					submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
      -
      -				that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
      -				item
      -					.attr( "aria-haspopup", "true" )
      -					.prepend( submenuCaret );
      -				menu.attr( "aria-labelledby", item.attr( "id" ) );
      -			} );
      -
      -		this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
      -
      -		menus = submenus.add( this.element );
      -		items = menus.find( this.options.items );
      -
      -		// Initialize menu-items containing spaces and/or dashes only as dividers
      -		items.not( ".ui-menu-item" ).each( function() {
      -			var item = $( this );
      -			if ( that._isDivider( item ) ) {
      -				that._addClass( item, "ui-menu-divider", "ui-widget-content" );
      -			}
      -		} );
      -
      -		// Don't refresh list items that are already adapted
      -		newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
      -		newWrappers = newItems.children()
      -			.not( ".ui-menu" )
      -				.uniqueId()
      -				.attr( {
      -					tabIndex: -1,
      -					role: this._itemRole()
      -				} );
      -		this._addClass( newItems, "ui-menu-item" )
      -			._addClass( newWrappers, "ui-menu-item-wrapper" );
      -
      -		// Add aria-disabled attribute to any disabled menu item
      -		items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
      -
      -		// If the active item has been removed, blur the menu
      -		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
      -			this.blur();
      -		}
      -	},
      -
      -	_itemRole: function() {
      -		return {
      -			menu: "menuitem",
      -			listbox: "option"
      -		}[ this.options.role ];
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "icons" ) {
      -			var icons = this.element.find( ".ui-menu-icon" );
      -			this._removeClass( icons, null, this.options.icons.submenu )
      -				._addClass( icons, null, value.submenu );
      -		}
      -		this._super( key, value );
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.element.attr( "aria-disabled", String( value ) );
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -	},
      -
      -	focus: function( event, item ) {
      -		var nested, focused, activeParent;
      -		this.blur( event, event && event.type === "focus" );
      -
      -		this._scrollIntoView( item );
      -
      -		this.active = item.first();
      -
      -		focused = this.active.children( ".ui-menu-item-wrapper" );
      -		this._addClass( focused, null, "ui-state-active" );
      -
      -		// Only update aria-activedescendant if there's a role
      -		// otherwise we assume focus is managed elsewhere
      -		if ( this.options.role ) {
      -			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
      -		}
      -
      -		// Highlight active parent menu item, if any
      -		activeParent = this.active
      -			.parent()
      -				.closest( ".ui-menu-item" )
      -					.children( ".ui-menu-item-wrapper" );
      -		this._addClass( activeParent, null, "ui-state-active" );
      -
      -		if ( event && event.type === "keydown" ) {
      -			this._close();
      -		} else {
      -			this.timer = this._delay( function() {
      -				this._close();
      -			}, this.delay );
      -		}
      -
      -		nested = item.children( ".ui-menu" );
      -		if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
      -			this._startOpening( nested );
      -		}
      -		this.activeMenu = item.parent();
      -
      -		this._trigger( "focus", event, { item: item } );
      -	},
      -
      -	_scrollIntoView: function( item ) {
      -		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
      -		if ( this._hasScroll() ) {
      -			borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
      -			paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
      -			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
      -			scroll = this.activeMenu.scrollTop();
      -			elementHeight = this.activeMenu.height();
      -			itemHeight = item.outerHeight();
      -
      -			if ( offset < 0 ) {
      -				this.activeMenu.scrollTop( scroll + offset );
      -			} else if ( offset + itemHeight > elementHeight ) {
      -				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
      -			}
      -		}
      -	},
      -
      -	blur: function( event, fromFocus ) {
      -		if ( !fromFocus ) {
      -			clearTimeout( this.timer );
      -		}
      -
      -		if ( !this.active ) {
      -			return;
      -		}
      -
      -		this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
      -			null, "ui-state-active" );
      -
      -		this._trigger( "blur", event, { item: this.active } );
      -		this.active = null;
      -	},
      -
      -	_startOpening: function( submenu ) {
      -		clearTimeout( this.timer );
      -
      -		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
      -		// shift in the submenu position when mousing over the caret icon
      -		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
      -			return;
      -		}
      -
      -		this.timer = this._delay( function() {
      -			this._close();
      -			this._open( submenu );
      -		}, this.delay );
      -	},
      -
      -	_open: function( submenu ) {
      -		var position = $.extend( {
      -			of: this.active
      -		}, this.options.position );
      -
      -		clearTimeout( this.timer );
      -		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
      -			.hide()
      -			.attr( "aria-hidden", "true" );
      -
      -		submenu
      -			.show()
      -			.removeAttr( "aria-hidden" )
      -			.attr( "aria-expanded", "true" )
      -			.position( position );
      -	},
      -
      -	collapseAll: function( event, all ) {
      -		clearTimeout( this.timer );
      -		this.timer = this._delay( function() {
      -
      -			// If we were passed an event, look for the submenu that contains the event
      -			var currentMenu = all ? this.element :
      -				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
      -
      -			// If we found no valid submenu ancestor, use the main menu to close all
      -			// sub menus anyway
      -			if ( !currentMenu.length ) {
      -				currentMenu = this.element;
      -			}
      -
      -			this._close( currentMenu );
      -
      -			this.blur( event );
      -
      -			// Work around active item staying active after menu is blurred
      -			this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
      -
      -			this.activeMenu = currentMenu;
      -		}, this.delay );
      -	},
      -
      -	// With no arguments, closes the currently active menu - if nothing is active
      -	// it closes all menus.  If passed an argument, it will search for menus BELOW
      -	_close: function( startMenu ) {
      -		if ( !startMenu ) {
      -			startMenu = this.active ? this.active.parent() : this.element;
      -		}
      -
      -		startMenu.find( ".ui-menu" )
      -			.hide()
      -			.attr( "aria-hidden", "true" )
      -			.attr( "aria-expanded", "false" );
      -	},
      -
      -	_closeOnDocumentClick: function( event ) {
      -		return !$( event.target ).closest( ".ui-menu" ).length;
      -	},
      -
      -	_isDivider: function( item ) {
      -
      -		// Match hyphen, em dash, en dash
      -		return !/[^\-\u2014\u2013\s]/.test( item.text() );
      -	},
      -
      -	collapse: function( event ) {
      -		var newItem = this.active &&
      -			this.active.parent().closest( ".ui-menu-item", this.element );
      -		if ( newItem && newItem.length ) {
      -			this._close();
      -			this.focus( event, newItem );
      -		}
      -	},
      -
      -	expand: function( event ) {
      -		var newItem = this.active &&
      -			this.active
      -				.children( ".ui-menu " )
      -					.find( this.options.items )
      -						.first();
      -
      -		if ( newItem && newItem.length ) {
      -			this._open( newItem.parent() );
      -
      -			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
      -			this._delay( function() {
      -				this.focus( event, newItem );
      -			} );
      -		}
      -	},
      -
      -	next: function( event ) {
      -		this._move( "next", "first", event );
      -	},
      -
      -	previous: function( event ) {
      -		this._move( "prev", "last", event );
      -	},
      -
      -	isFirstItem: function() {
      -		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
      -	},
      -
      -	isLastItem: function() {
      -		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
      -	},
      -
      -	_move: function( direction, filter, event ) {
      -		var next;
      -		if ( this.active ) {
      -			if ( direction === "first" || direction === "last" ) {
      -				next = this.active
      -					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
      -					.eq( -1 );
      -			} else {
      -				next = this.active
      -					[ direction + "All" ]( ".ui-menu-item" )
      -					.eq( 0 );
      -			}
      -		}
      -		if ( !next || !next.length || !this.active ) {
      -			next = this.activeMenu.find( this.options.items )[ filter ]();
      -		}
      -
      -		this.focus( event, next );
      -	},
      -
      -	nextPage: function( event ) {
      -		var item, base, height;
      -
      -		if ( !this.active ) {
      -			this.next( event );
      -			return;
      -		}
      -		if ( this.isLastItem() ) {
      -			return;
      -		}
      -		if ( this._hasScroll() ) {
      -			base = this.active.offset().top;
      -			height = this.element.height();
      -			this.active.nextAll( ".ui-menu-item" ).each( function() {
      -				item = $( this );
      -				return item.offset().top - base - height < 0;
      -			} );
      -
      -			this.focus( event, item );
      -		} else {
      -			this.focus( event, this.activeMenu.find( this.options.items )
      -				[ !this.active ? "first" : "last" ]() );
      -		}
      -	},
      -
      -	previousPage: function( event ) {
      -		var item, base, height;
      -		if ( !this.active ) {
      -			this.next( event );
      -			return;
      -		}
      -		if ( this.isFirstItem() ) {
      -			return;
      -		}
      -		if ( this._hasScroll() ) {
      -			base = this.active.offset().top;
      -			height = this.element.height();
      -			this.active.prevAll( ".ui-menu-item" ).each( function() {
      -				item = $( this );
      -				return item.offset().top - base + height > 0;
      -			} );
      -
      -			this.focus( event, item );
      -		} else {
      -			this.focus( event, this.activeMenu.find( this.options.items ).first() );
      -		}
      -	},
      -
      -	_hasScroll: function() {
      -		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
      -	},
      -
      -	select: function( event ) {
      -
      -		// TODO: It should never be possible to not have an active item at this
      -		// point, but the tests don't trigger mouseenter before click.
      -		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
      -		var ui = { item: this.active };
      -		if ( !this.active.has( ".ui-menu" ).length ) {
      -			this.collapseAll( event, true );
      -		}
      -		this._trigger( "select", event, ui );
      -	},
      -
      -	_filterMenuItems: function( character ) {
      -		var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
      -			regex = new RegExp( "^" + escapedCharacter, "i" );
      -
      -		return this.activeMenu
      -			.find( this.options.items )
      -
      -				// Only match on items, not dividers or other content (#10571)
      -				.filter( ".ui-menu-item" )
      -					.filter( function() {
      -						return regex.test(
      -							$.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
      -					} );
      -	}
      -} );
      -
      -
      -/*!
      - * jQuery UI Autocomplete 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Autocomplete
      -//>>group: Widgets
      -//>>description: Lists suggested words as the user is typing.
      -//>>docs: http://api.jqueryui.com/autocomplete/
      -//>>demos: http://jqueryui.com/autocomplete/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/autocomplete.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.widget( "ui.autocomplete", {
      -	version: "1.12.1",
      -	defaultElement: "<input>",
      -	options: {
      -		appendTo: null,
      -		autoFocus: false,
      -		delay: 300,
      -		minLength: 1,
      -		position: {
      -			my: "left top",
      -			at: "left bottom",
      -			collision: "none"
      -		},
      -		source: null,
      -
      -		// Callbacks
      -		change: null,
      -		close: null,
      -		focus: null,
      -		open: null,
      -		response: null,
      -		search: null,
      -		select: null
      -	},
      -
      -	requestIndex: 0,
      -	pending: 0,
      -
      -	_create: function() {
      -
      -		// Some browsers only repeat keydown events, not keypress events,
      -		// so we use the suppressKeyPress flag to determine if we've already
      -		// handled the keydown event. #7269
      -		// Unfortunately the code for & in keypress is the same as the up arrow,
      -		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
      -		// events when we know the keydown event was used to modify the
      -		// search term. #7799
      -		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
      -			nodeName = this.element[ 0 ].nodeName.toLowerCase(),
      -			isTextarea = nodeName === "textarea",
      -			isInput = nodeName === "input";
      -
      -		// Textareas are always multi-line
      -		// Inputs are always single-line, even if inside a contentEditable element
      -		// IE also treats inputs as contentEditable
      -		// All other element types are determined by whether or not they're contentEditable
      -		this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );
      -
      -		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
      -		this.isNewMenu = true;
      -
      -		this._addClass( "ui-autocomplete-input" );
      -		this.element.attr( "autocomplete", "off" );
      -
      -		this._on( this.element, {
      -			keydown: function( event ) {
      -				if ( this.element.prop( "readOnly" ) ) {
      -					suppressKeyPress = true;
      -					suppressInput = true;
      -					suppressKeyPressRepeat = true;
      -					return;
      -				}
      -
      -				suppressKeyPress = false;
      -				suppressInput = false;
      -				suppressKeyPressRepeat = false;
      -				var keyCode = $.ui.keyCode;
      -				switch ( event.keyCode ) {
      -				case keyCode.PAGE_UP:
      -					suppressKeyPress = true;
      -					this._move( "previousPage", event );
      -					break;
      -				case keyCode.PAGE_DOWN:
      -					suppressKeyPress = true;
      -					this._move( "nextPage", event );
      -					break;
      -				case keyCode.UP:
      -					suppressKeyPress = true;
      -					this._keyEvent( "previous", event );
      -					break;
      -				case keyCode.DOWN:
      -					suppressKeyPress = true;
      -					this._keyEvent( "next", event );
      -					break;
      -				case keyCode.ENTER:
      -
      -					// when menu is open and has focus
      -					if ( this.menu.active ) {
      -
      -						// #6055 - Opera still allows the keypress to occur
      -						// which causes forms to submit
      -						suppressKeyPress = true;
      -						event.preventDefault();
      -						this.menu.select( event );
      -					}
      -					break;
      -				case keyCode.TAB:
      -					if ( this.menu.active ) {
      -						this.menu.select( event );
      -					}
      -					break;
      -				case keyCode.ESCAPE:
      -					if ( this.menu.element.is( ":visible" ) ) {
      -						if ( !this.isMultiLine ) {
      -							this._value( this.term );
      -						}
      -						this.close( event );
      -
      -						// Different browsers have different default behavior for escape
      -						// Single press can mean undo or clear
      -						// Double press in IE means clear the whole form
      -						event.preventDefault();
      -					}
      -					break;
      -				default:
      -					suppressKeyPressRepeat = true;
      -
      -					// search timeout should be triggered before the input value is changed
      -					this._searchTimeout( event );
      -					break;
      -				}
      -			},
      -			keypress: function( event ) {
      -				if ( suppressKeyPress ) {
      -					suppressKeyPress = false;
      -					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
      -						event.preventDefault();
      -					}
      -					return;
      -				}
      -				if ( suppressKeyPressRepeat ) {
      -					return;
      -				}
      -
      -				// Replicate some key handlers to allow them to repeat in Firefox and Opera
      -				var keyCode = $.ui.keyCode;
      -				switch ( event.keyCode ) {
      -				case keyCode.PAGE_UP:
      -					this._move( "previousPage", event );
      -					break;
      -				case keyCode.PAGE_DOWN:
      -					this._move( "nextPage", event );
      -					break;
      -				case keyCode.UP:
      -					this._keyEvent( "previous", event );
      -					break;
      -				case keyCode.DOWN:
      -					this._keyEvent( "next", event );
      -					break;
      -				}
      -			},
      -			input: function( event ) {
      -				if ( suppressInput ) {
      -					suppressInput = false;
      -					event.preventDefault();
      -					return;
      -				}
      -				this._searchTimeout( event );
      -			},
      -			focus: function() {
      -				this.selectedItem = null;
      -				this.previous = this._value();
      -			},
      -			blur: function( event ) {
      -				if ( this.cancelBlur ) {
      -					delete this.cancelBlur;
      -					return;
      -				}
      -
      -				clearTimeout( this.searching );
      -				this.close( event );
      -				this._change( event );
      -			}
      -		} );
      -
      -		this._initSource();
      -		this.menu = $( "<ul>" )
      -			.appendTo( this._appendTo() )
      -			.menu( {
      -
      -				// disable ARIA support, the live region takes care of that
      -				role: null
      -			} )
      -			.hide()
      -			.menu( "instance" );
      -
      -		this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
      -		this._on( this.menu.element, {
      -			mousedown: function( event ) {
      -
      -				// prevent moving focus out of the text field
      -				event.preventDefault();
      -
      -				// IE doesn't prevent moving focus even with event.preventDefault()
      -				// so we set a flag to know when we should ignore the blur event
      -				this.cancelBlur = true;
      -				this._delay( function() {
      -					delete this.cancelBlur;
      -
      -					// Support: IE 8 only
      -					// Right clicking a menu item or selecting text from the menu items will
      -					// result in focus moving out of the input. However, we've already received
      -					// and ignored the blur event because of the cancelBlur flag set above. So
      -					// we restore focus to ensure that the menu closes properly based on the user's
      -					// next actions.
      -					if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
      -						this.element.trigger( "focus" );
      -					}
      -				} );
      -			},
      -			menufocus: function( event, ui ) {
      -				var label, item;
      -
      -				// support: Firefox
      -				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
      -				if ( this.isNewMenu ) {
      -					this.isNewMenu = false;
      -					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
      -						this.menu.blur();
      -
      -						this.document.one( "mousemove", function() {
      -							$( event.target ).trigger( event.originalEvent );
      -						} );
      -
      -						return;
      -					}
      -				}
      -
      -				item = ui.item.data( "ui-autocomplete-item" );
      -				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
      -
      -					// use value to match what will end up in the input, if it was a key event
      -					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
      -						this._value( item.value );
      -					}
      -				}
      -
      -				// Announce the value in the liveRegion
      -				label = ui.item.attr( "aria-label" ) || item.value;
      -				if ( label && $.trim( label ).length ) {
      -					this.liveRegion.children().hide();
      -					$( "<div>" ).text( label ).appendTo( this.liveRegion );
      -				}
      -			},
      -			menuselect: function( event, ui ) {
      -				var item = ui.item.data( "ui-autocomplete-item" ),
      -					previous = this.previous;
      -
      -				// Only trigger when focus was lost (click on menu)
      -				if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
      -					this.element.trigger( "focus" );
      -					this.previous = previous;
      -
      -					// #6109 - IE triggers two focus events and the second
      -					// is asynchronous, so we need to reset the previous
      -					// term synchronously and asynchronously :-(
      -					this._delay( function() {
      -						this.previous = previous;
      -						this.selectedItem = item;
      -					} );
      -				}
      -
      -				if ( false !== this._trigger( "select", event, { item: item } ) ) {
      -					this._value( item.value );
      -				}
      -
      -				// reset the term after the select event
      -				// this allows custom select handling to work properly
      -				this.term = this._value();
      -
      -				this.close( event );
      -				this.selectedItem = item;
      -			}
      -		} );
      -
      -		this.liveRegion = $( "<div>", {
      -			role: "status",
      -			"aria-live": "assertive",
      -			"aria-relevant": "additions"
      -		} )
      -			.appendTo( this.document[ 0 ].body );
      -
      -		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
      -
      -		// Turning off autocomplete prevents the browser from remembering the
      -		// value when navigating through history, so we re-enable autocomplete
      -		// if the page is unloaded before the widget is destroyed. #7790
      -		this._on( this.window, {
      -			beforeunload: function() {
      -				this.element.removeAttr( "autocomplete" );
      -			}
      -		} );
      -	},
      -
      -	_destroy: function() {
      -		clearTimeout( this.searching );
      -		this.element.removeAttr( "autocomplete" );
      -		this.menu.element.remove();
      -		this.liveRegion.remove();
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -		if ( key === "source" ) {
      -			this._initSource();
      -		}
      -		if ( key === "appendTo" ) {
      -			this.menu.element.appendTo( this._appendTo() );
      -		}
      -		if ( key === "disabled" && value && this.xhr ) {
      -			this.xhr.abort();
      -		}
      -	},
      -
      -	_isEventTargetInWidget: function( event ) {
      -		var menuElement = this.menu.element[ 0 ];
      -
      -		return event.target === this.element[ 0 ] ||
      -			event.target === menuElement ||
      -			$.contains( menuElement, event.target );
      -	},
      -
      -	_closeOnClickOutside: function( event ) {
      -		if ( !this._isEventTargetInWidget( event ) ) {
      -			this.close();
      -		}
      -	},
      -
      -	_appendTo: function() {
      -		var element = this.options.appendTo;
      -
      -		if ( element ) {
      -			element = element.jquery || element.nodeType ?
      -				$( element ) :
      -				this.document.find( element ).eq( 0 );
      -		}
      -
      -		if ( !element || !element[ 0 ] ) {
      -			element = this.element.closest( ".ui-front, dialog" );
      -		}
      -
      -		if ( !element.length ) {
      -			element = this.document[ 0 ].body;
      -		}
      -
      -		return element;
      -	},
      -
      -	_initSource: function() {
      -		var array, url,
      -			that = this;
      -		if ( $.isArray( this.options.source ) ) {
      -			array = this.options.source;
      -			this.source = function( request, response ) {
      -				response( $.ui.autocomplete.filter( array, request.term ) );
      -			};
      -		} else if ( typeof this.options.source === "string" ) {
      -			url = this.options.source;
      -			this.source = function( request, response ) {
      -				if ( that.xhr ) {
      -					that.xhr.abort();
      -				}
      -				that.xhr = $.ajax( {
      -					url: url,
      -					data: request,
      -					dataType: "json",
      -					success: function( data ) {
      -						response( data );
      -					},
      -					error: function() {
      -						response( [] );
      -					}
      -				} );
      -			};
      -		} else {
      -			this.source = this.options.source;
      -		}
      -	},
      -
      -	_searchTimeout: function( event ) {
      -		clearTimeout( this.searching );
      -		this.searching = this._delay( function() {
      -
      -			// Search if the value has changed, or if the user retypes the same value (see #7434)
      -			var equalValues = this.term === this._value(),
      -				menuVisible = this.menu.element.is( ":visible" ),
      -				modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
      -
      -			if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
      -				this.selectedItem = null;
      -				this.search( null, event );
      -			}
      -		}, this.options.delay );
      -	},
      -
      -	search: function( value, event ) {
      -		value = value != null ? value : this._value();
      -
      -		// Always save the actual value, not the one passed as an argument
      -		this.term = this._value();
      -
      -		if ( value.length < this.options.minLength ) {
      -			return this.close( event );
      -		}
      -
      -		if ( this._trigger( "search", event ) === false ) {
      -			return;
      -		}
      -
      -		return this._search( value );
      -	},
      -
      -	_search: function( value ) {
      -		this.pending++;
      -		this._addClass( "ui-autocomplete-loading" );
      -		this.cancelSearch = false;
      -
      -		this.source( { term: value }, this._response() );
      -	},
      -
      -	_response: function() {
      -		var index = ++this.requestIndex;
      -
      -		return $.proxy( function( content ) {
      -			if ( index === this.requestIndex ) {
      -				this.__response( content );
      -			}
      -
      -			this.pending--;
      -			if ( !this.pending ) {
      -				this._removeClass( "ui-autocomplete-loading" );
      -			}
      -		}, this );
      -	},
      -
      -	__response: function( content ) {
      -		if ( content ) {
      -			content = this._normalize( content );
      -		}
      -		this._trigger( "response", null, { content: content } );
      -		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
      -			this._suggest( content );
      -			this._trigger( "open" );
      -		} else {
      -
      -			// use ._close() instead of .close() so we don't cancel future searches
      -			this._close();
      -		}
      -	},
      -
      -	close: function( event ) {
      -		this.cancelSearch = true;
      -		this._close( event );
      -	},
      -
      -	_close: function( event ) {
      -
      -		// Remove the handler that closes the menu on outside clicks
      -		this._off( this.document, "mousedown" );
      -
      -		if ( this.menu.element.is( ":visible" ) ) {
      -			this.menu.element.hide();
      -			this.menu.blur();
      -			this.isNewMenu = true;
      -			this._trigger( "close", event );
      -		}
      -	},
      -
      -	_change: function( event ) {
      -		if ( this.previous !== this._value() ) {
      -			this._trigger( "change", event, { item: this.selectedItem } );
      -		}
      -	},
      -
      -	_normalize: function( items ) {
      -
      -		// assume all items have the right format when the first item is complete
      -		if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
      -			return items;
      -		}
      -		return $.map( items, function( item ) {
      -			if ( typeof item === "string" ) {
      -				return {
      -					label: item,
      -					value: item
      -				};
      -			}
      -			return $.extend( {}, item, {
      -				label: item.label || item.value,
      -				value: item.value || item.label
      -			} );
      -		} );
      -	},
      -
      -	_suggest: function( items ) {
      -		var ul = this.menu.element.empty();
      -		this._renderMenu( ul, items );
      -		this.isNewMenu = true;
      -		this.menu.refresh();
      -
      -		// Size and position menu
      -		ul.show();
      -		this._resizeMenu();
      -		ul.position( $.extend( {
      -			of: this.element
      -		}, this.options.position ) );
      -
      -		if ( this.options.autoFocus ) {
      -			this.menu.next();
      -		}
      -
      -		// Listen for interactions outside of the widget (#6642)
      -		this._on( this.document, {
      -			mousedown: "_closeOnClickOutside"
      -		} );
      -	},
      -
      -	_resizeMenu: function() {
      -		var ul = this.menu.element;
      -		ul.outerWidth( Math.max(
      -
      -			// Firefox wraps long text (possibly a rounding bug)
      -			// so we add 1px to avoid the wrapping (#7513)
      -			ul.width( "" ).outerWidth() + 1,
      -			this.element.outerWidth()
      -		) );
      -	},
      -
      -	_renderMenu: function( ul, items ) {
      -		var that = this;
      -		$.each( items, function( index, item ) {
      -			that._renderItemData( ul, item );
      -		} );
      -	},
      -
      -	_renderItemData: function( ul, item ) {
      -		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
      -	},
      -
      -	_renderItem: function( ul, item ) {
      -		return $( "<li>" )
      -			.append( $( "<div>" ).text( item.label ) )
      -			.appendTo( ul );
      -	},
      -
      -	_move: function( direction, event ) {
      -		if ( !this.menu.element.is( ":visible" ) ) {
      -			this.search( null, event );
      -			return;
      -		}
      -		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
      -				this.menu.isLastItem() && /^next/.test( direction ) ) {
      -
      -			if ( !this.isMultiLine ) {
      -				this._value( this.term );
      -			}
      -
      -			this.menu.blur();
      -			return;
      -		}
      -		this.menu[ direction ]( event );
      -	},
      -
      -	widget: function() {
      -		return this.menu.element;
      -	},
      -
      -	_value: function() {
      -		return this.valueMethod.apply( this.element, arguments );
      -	},
      -
      -	_keyEvent: function( keyEvent, event ) {
      -		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
      -			this._move( keyEvent, event );
      -
      -			// Prevents moving cursor to beginning/end of the text field in some browsers
      -			event.preventDefault();
      -		}
      -	},
      -
      -	// Support: Chrome <=50
      -	// We should be able to just use this.element.prop( "isContentEditable" )
      -	// but hidden elements always report false in Chrome.
      -	// https://code.google.com/p/chromium/issues/detail?id=313082
      -	_isContentEditable: function( element ) {
      -		if ( !element.length ) {
      -			return false;
      -		}
      -
      -		var editable = element.prop( "contentEditable" );
      -
      -		if ( editable === "inherit" ) {
      -		  return this._isContentEditable( element.parent() );
      -		}
      -
      -		return editable === "true";
      -	}
      -} );
      -
      -$.extend( $.ui.autocomplete, {
      -	escapeRegex: function( value ) {
      -		return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
      -	},
      -	filter: function( array, term ) {
      -		var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
      -		return $.grep( array, function( value ) {
      -			return matcher.test( value.label || value.value || value );
      -		} );
      -	}
      -} );
      -
      -// Live region extension, adding a `messages` option
      -// NOTE: This is an experimental API. We are still investigating
      -// a full solution for string manipulation and internationalization.
      -$.widget( "ui.autocomplete", $.ui.autocomplete, {
      -	options: {
      -		messages: {
      -			noResults: "No search results.",
      -			results: function( amount ) {
      -				return amount + ( amount > 1 ? " results are" : " result is" ) +
      -					" available, use up and down arrow keys to navigate.";
      -			}
      -		}
      -	},
      -
      -	__response: function( content ) {
      -		var message;
      -		this._superApply( arguments );
      -		if ( this.options.disabled || this.cancelSearch ) {
      -			return;
      -		}
      -		if ( content && content.length ) {
      -			message = this.options.messages.results( content.length );
      -		} else {
      -			message = this.options.messages.noResults;
      -		}
      -		this.liveRegion.children().hide();
      -		$( "<div>" ).text( message ).appendTo( this.liveRegion );
      -	}
      -} );
      -
      -var widgetsAutocomplete = $.ui.autocomplete;
      -
      -
      -/*!
      - * jQuery UI Controlgroup 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Controlgroup
      -//>>group: Widgets
      -//>>description: Visually groups form control widgets
      -//>>docs: http://api.jqueryui.com/controlgroup/
      -//>>demos: http://jqueryui.com/controlgroup/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/controlgroup.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
      -
      -var widgetsControlgroup = $.widget( "ui.controlgroup", {
      -	version: "1.12.1",
      -	defaultElement: "<div>",
      -	options: {
      -		direction: "horizontal",
      -		disabled: null,
      -		onlyVisible: true,
      -		items: {
      -			"button": "input[type=button], input[type=submit], input[type=reset], button, a",
      -			"controlgroupLabel": ".ui-controlgroup-label",
      -			"checkboxradio": "input[type='checkbox'], input[type='radio']",
      -			"selectmenu": "select",
      -			"spinner": ".ui-spinner-input"
      -		}
      -	},
      -
      -	_create: function() {
      -		this._enhance();
      -	},
      -
      -	// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
      -	_enhance: function() {
      -		this.element.attr( "role", "toolbar" );
      -		this.refresh();
      -	},
      -
      -	_destroy: function() {
      -		this._callChildMethod( "destroy" );
      -		this.childWidgets.removeData( "ui-controlgroup-data" );
      -		this.element.removeAttr( "role" );
      -		if ( this.options.items.controlgroupLabel ) {
      -			this.element
      -				.find( this.options.items.controlgroupLabel )
      -				.find( ".ui-controlgroup-label-contents" )
      -				.contents().unwrap();
      -		}
      -	},
      -
      -	_initWidgets: function() {
      -		var that = this,
      -			childWidgets = [];
      -
      -		// First we iterate over each of the items options
      -		$.each( this.options.items, function( widget, selector ) {
      -			var labels;
      -			var options = {};
      -
      -			// Make sure the widget has a selector set
      -			if ( !selector ) {
      -				return;
      -			}
      -
      -			if ( widget === "controlgroupLabel" ) {
      -				labels = that.element.find( selector );
      -				labels.each( function() {
      -					var element = $( this );
      -
      -					if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
      -						return;
      -					}
      -					element.contents()
      -						.wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
      -				} );
      -				that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
      -				childWidgets = childWidgets.concat( labels.get() );
      -				return;
      -			}
      -
      -			// Make sure the widget actually exists
      -			if ( !$.fn[ widget ] ) {
      -				return;
      -			}
      -
      -			// We assume everything is in the middle to start because we can't determine
      -			// first / last elements until all enhancments are done.
      -			if ( that[ "_" + widget + "Options" ] ) {
      -				options = that[ "_" + widget + "Options" ]( "middle" );
      -			} else {
      -				options = { classes: {} };
      -			}
      -
      -			// Find instances of this widget inside controlgroup and init them
      -			that.element
      -				.find( selector )
      -				.each( function() {
      -					var element = $( this );
      -					var instance = element[ widget ]( "instance" );
      -
      -					// We need to clone the default options for this type of widget to avoid
      -					// polluting the variable options which has a wider scope than a single widget.
      -					var instanceOptions = $.widget.extend( {}, options );
      -
      -					// If the button is the child of a spinner ignore it
      -					// TODO: Find a more generic solution
      -					if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
      -						return;
      -					}
      -
      -					// Create the widget if it doesn't exist
      -					if ( !instance ) {
      -						instance = element[ widget ]()[ widget ]( "instance" );
      -					}
      -					if ( instance ) {
      -						instanceOptions.classes =
      -							that._resolveClassesValues( instanceOptions.classes, instance );
      -					}
      -					element[ widget ]( instanceOptions );
      -
      -					// Store an instance of the controlgroup to be able to reference
      -					// from the outermost element for changing options and refresh
      -					var widgetElement = element[ widget ]( "widget" );
      -					$.data( widgetElement[ 0 ], "ui-controlgroup-data",
      -						instance ? instance : element[ widget ]( "instance" ) );
      -
      -					childWidgets.push( widgetElement[ 0 ] );
      -				} );
      -		} );
      -
      -		this.childWidgets = $( $.unique( childWidgets ) );
      -		this._addClass( this.childWidgets, "ui-controlgroup-item" );
      -	},
      -
      -	_callChildMethod: function( method ) {
      -		this.childWidgets.each( function() {
      -			var element = $( this ),
      -				data = element.data( "ui-controlgroup-data" );
      -			if ( data && data[ method ] ) {
      -				data[ method ]();
      -			}
      -		} );
      -	},
      -
      -	_updateCornerClass: function( element, position ) {
      -		var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
      -		var add = this._buildSimpleOptions( position, "label" ).classes.label;
      -
      -		this._removeClass( element, null, remove );
      -		this._addClass( element, null, add );
      -	},
      -
      -	_buildSimpleOptions: function( position, key ) {
      -		var direction = this.options.direction === "vertical";
      -		var result = {
      -			classes: {}
      -		};
      -		result.classes[ key ] = {
      -			"middle": "",
      -			"first": "ui-corner-" + ( direction ? "top" : "left" ),
      -			"last": "ui-corner-" + ( direction ? "bottom" : "right" ),
      -			"only": "ui-corner-all"
      -		}[ position ];
      -
      -		return result;
      -	},
      -
      -	_spinnerOptions: function( position ) {
      -		var options = this._buildSimpleOptions( position, "ui-spinner" );
      -
      -		options.classes[ "ui-spinner-up" ] = "";
      -		options.classes[ "ui-spinner-down" ] = "";
      -
      -		return options;
      -	},
      -
      -	_buttonOptions: function( position ) {
      -		return this._buildSimpleOptions( position, "ui-button" );
      -	},
      -
      -	_checkboxradioOptions: function( position ) {
      -		return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
      -	},
      -
      -	_selectmenuOptions: function( position ) {
      -		var direction = this.options.direction === "vertical";
      -		return {
      -			width: direction ? "auto" : false,
      -			classes: {
      -				middle: {
      -					"ui-selectmenu-button-open": "",
      -					"ui-selectmenu-button-closed": ""
      -				},
      -				first: {
      -					"ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
      -					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
      -				},
      -				last: {
      -					"ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
      -					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
      -				},
      -				only: {
      -					"ui-selectmenu-button-open": "ui-corner-top",
      -					"ui-selectmenu-button-closed": "ui-corner-all"
      -				}
      -
      -			}[ position ]
      -		};
      -	},
      -
      -	_resolveClassesValues: function( classes, instance ) {
      -		var result = {};
      -		$.each( classes, function( key ) {
      -			var current = instance.options.classes[ key ] || "";
      -			current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
      -			result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
      -		} );
      -		return result;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "direction" ) {
      -			this._removeClass( "ui-controlgroup-" + this.options.direction );
      -		}
      -
      -		this._super( key, value );
      -		if ( key === "disabled" ) {
      -			this._callChildMethod( value ? "disable" : "enable" );
      -			return;
      -		}
      -
      -		this.refresh();
      -	},
      -
      -	refresh: function() {
      -		var children,
      -			that = this;
      -
      -		this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
      -
      -		if ( this.options.direction === "horizontal" ) {
      -			this._addClass( null, "ui-helper-clearfix" );
      -		}
      -		this._initWidgets();
      -
      -		children = this.childWidgets;
      -
      -		// We filter here because we need to track all childWidgets not just the visible ones
      -		if ( this.options.onlyVisible ) {
      -			children = children.filter( ":visible" );
      -		}
      -
      -		if ( children.length ) {
      -
      -			// We do this last because we need to make sure all enhancment is done
      -			// before determining first and last
      -			$.each( [ "first", "last" ], function( index, value ) {
      -				var instance = children[ value ]().data( "ui-controlgroup-data" );
      -
      -				if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
      -					var options = that[ "_" + instance.widgetName + "Options" ](
      -						children.length === 1 ? "only" : value
      -					);
      -					options.classes = that._resolveClassesValues( options.classes, instance );
      -					instance.element[ instance.widgetName ]( options );
      -				} else {
      -					that._updateCornerClass( children[ value ](), value );
      -				}
      -			} );
      -
      -			// Finally call the refresh method on each of the child widgets.
      -			this._callChildMethod( "refresh" );
      -		}
      -	}
      -} );
      -
      -/*!
      - * jQuery UI Checkboxradio 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Checkboxradio
      -//>>group: Widgets
      -//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
      -//>>docs: http://api.jqueryui.com/checkboxradio/
      -//>>demos: http://jqueryui.com/checkboxradio/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/button.css
      -//>>css.structure: ../../themes/base/checkboxradio.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
      -	version: "1.12.1",
      -	options: {
      -		disabled: null,
      -		label: null,
      -		icon: true,
      -		classes: {
      -			"ui-checkboxradio-label": "ui-corner-all",
      -			"ui-checkboxradio-icon": "ui-corner-all"
      -		}
      -	},
      -
      -	_getCreateOptions: function() {
      -		var disabled, labels;
      -		var that = this;
      -		var options = this._super() || {};
      -
      -		// We read the type here, because it makes more sense to throw a element type error first,
      -		// rather then the error for lack of a label. Often if its the wrong type, it
      -		// won't have a label (e.g. calling on a div, btn, etc)
      -		this._readType();
      -
      -		labels = this.element.labels();
      -
      -		// If there are multiple labels, use the last one
      -		this.label = $( labels[ labels.length - 1 ] );
      -		if ( !this.label.length ) {
      -			$.error( "No label found for checkboxradio widget" );
      -		}
      -
      -		this.originalLabel = "";
      -
      -		// We need to get the label text but this may also need to make sure it does not contain the
      -		// input itself.
      -		this.label.contents().not( this.element[ 0 ] ).each( function() {
      -
      -			// The label contents could be text, html, or a mix. We concat each element to get a
      -			// string representation of the label, without the input as part of it.
      -			that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;
      -		} );
      -
      -		// Set the label option if we found label text
      -		if ( this.originalLabel ) {
      -			options.label = this.originalLabel;
      -		}
      -
      -		disabled = this.element[ 0 ].disabled;
      -		if ( disabled != null ) {
      -			options.disabled = disabled;
      -		}
      -		return options;
      -	},
      -
      -	_create: function() {
      -		var checked = this.element[ 0 ].checked;
      -
      -		this._bindFormResetHandler();
      -
      -		if ( this.options.disabled == null ) {
      -			this.options.disabled = this.element[ 0 ].disabled;
      -		}
      -
      -		this._setOption( "disabled", this.options.disabled );
      -		this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
      -		this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
      -
      -		if ( this.type === "radio" ) {
      -			this._addClass( this.label, "ui-checkboxradio-radio-label" );
      -		}
      -
      -		if ( this.options.label && this.options.label !== this.originalLabel ) {
      -			this._updateLabel();
      -		} else if ( this.originalLabel ) {
      -			this.options.label = this.originalLabel;
      -		}
      -
      -		this._enhance();
      -
      -		if ( checked ) {
      -			this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
      -			if ( this.icon ) {
      -				this._addClass( this.icon, null, "ui-state-hover" );
      -			}
      -		}
      -
      -		this._on( {
      -			change: "_toggleClasses",
      -			focus: function() {
      -				this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
      -			},
      -			blur: function() {
      -				this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
      -			}
      -		} );
      -	},
      -
      -	_readType: function() {
      -		var nodeName = this.element[ 0 ].nodeName.toLowerCase();
      -		this.type = this.element[ 0 ].type;
      -		if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
      -			$.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
      -				" and element.type=" + this.type );
      -		}
      -	},
      -
      -	// Support jQuery Mobile enhanced option
      -	_enhance: function() {
      -		this._updateIcon( this.element[ 0 ].checked );
      -	},
      -
      -	widget: function() {
      -		return this.label;
      -	},
      -
      -	_getRadioGroup: function() {
      -		var group;
      -		var name = this.element[ 0 ].name;
      -		var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
      -
      -		if ( !name ) {
      -			return $( [] );
      -		}
      -
      -		if ( this.form.length ) {
      -			group = $( this.form[ 0 ].elements ).filter( nameSelector );
      -		} else {
      -
      -			// Not inside a form, check all inputs that also are not inside a form
      -			group = $( nameSelector ).filter( function() {
      -				return $( this ).form().length === 0;
      -			} );
      -		}
      -
      -		return group.not( this.element );
      -	},
      -
      -	_toggleClasses: function() {
      -		var checked = this.element[ 0 ].checked;
      -		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
      -
      -		if ( this.options.icon && this.type === "checkbox" ) {
      -			this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
      -				._toggleClass( this.icon, null, "ui-icon-blank", !checked );
      -		}
      -
      -		if ( this.type === "radio" ) {
      -			this._getRadioGroup()
      -				.each( function() {
      -					var instance = $( this ).checkboxradio( "instance" );
      -
      -					if ( instance ) {
      -						instance._removeClass( instance.label,
      -							"ui-checkboxradio-checked", "ui-state-active" );
      -					}
      -				} );
      -		}
      -	},
      -
      -	_destroy: function() {
      -		this._unbindFormResetHandler();
      -
      -		if ( this.icon ) {
      -			this.icon.remove();
      -			this.iconSpace.remove();
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -
      -		// We don't allow the value to be set to nothing
      -		if ( key === "label" && !value ) {
      -			return;
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "disabled" ) {
      -			this._toggleClass( this.label, null, "ui-state-disabled", value );
      -			this.element[ 0 ].disabled = value;
      -
      -			// Don't refresh when setting disabled
      -			return;
      -		}
      -		this.refresh();
      -	},
      -
      -	_updateIcon: function( checked ) {
      -		var toAdd = "ui-icon ui-icon-background ";
      -
      -		if ( this.options.icon ) {
      -			if ( !this.icon ) {
      -				this.icon = $( "<span>" );
      -				this.iconSpace = $( "<span> </span>" );
      -				this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
      -			}
      -
      -			if ( this.type === "checkbox" ) {
      -				toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
      -				this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
      -			} else {
      -				toAdd += "ui-icon-blank";
      -			}
      -			this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
      -			if ( !checked ) {
      -				this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
      -			}
      -			this.icon.prependTo( this.label ).after( this.iconSpace );
      -		} else if ( this.icon !== undefined ) {
      -			this.icon.remove();
      -			this.iconSpace.remove();
      -			delete this.icon;
      -		}
      -	},
      -
      -	_updateLabel: function() {
      -
      -		// Remove the contents of the label ( minus the icon, icon space, and input )
      -		var contents = this.label.contents().not( this.element[ 0 ] );
      -		if ( this.icon ) {
      -			contents = contents.not( this.icon[ 0 ] );
      -		}
      -		if ( this.iconSpace ) {
      -			contents = contents.not( this.iconSpace[ 0 ] );
      -		}
      -		contents.remove();
      -
      -		this.label.append( this.options.label );
      -	},
      -
      -	refresh: function() {
      -		var checked = this.element[ 0 ].checked,
      -			isDisabled = this.element[ 0 ].disabled;
      -
      -		this._updateIcon( checked );
      -		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
      -		if ( this.options.label !== null ) {
      -			this._updateLabel();
      -		}
      -
      -		if ( isDisabled !== this.options.disabled ) {
      -			this._setOptions( { "disabled": isDisabled } );
      -		}
      -	}
      -
      -} ] );
      -
      -var widgetsCheckboxradio = $.ui.checkboxradio;
      -
      -
      -/*!
      - * jQuery UI Button 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Button
      -//>>group: Widgets
      -//>>description: Enhances a form with themeable buttons.
      -//>>docs: http://api.jqueryui.com/button/
      -//>>demos: http://jqueryui.com/button/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/button.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.widget( "ui.button", {
      -	version: "1.12.1",
      -	defaultElement: "<button>",
      -	options: {
      -		classes: {
      -			"ui-button": "ui-corner-all"
      -		},
      -		disabled: null,
      -		icon: null,
      -		iconPosition: "beginning",
      -		label: null,
      -		showLabel: true
      -	},
      -
      -	_getCreateOptions: function() {
      -		var disabled,
      -
      -			// This is to support cases like in jQuery Mobile where the base widget does have
      -			// an implementation of _getCreateOptions
      -			options = this._super() || {};
      -
      -		this.isInput = this.element.is( "input" );
      -
      -		disabled = this.element[ 0 ].disabled;
      -		if ( disabled != null ) {
      -			options.disabled = disabled;
      -		}
      -
      -		this.originalLabel = this.isInput ? this.element.val() : this.element.html();
      -		if ( this.originalLabel ) {
      -			options.label = this.originalLabel;
      -		}
      -
      -		return options;
      -	},
      -
      -	_create: function() {
      -		if ( !this.option.showLabel & !this.options.icon ) {
      -			this.options.showLabel = true;
      -		}
      -
      -		// We have to check the option again here even though we did in _getCreateOptions,
      -		// because null may have been passed on init which would override what was set in
      -		// _getCreateOptions
      -		if ( this.options.disabled == null ) {
      -			this.options.disabled = this.element[ 0 ].disabled || false;
      -		}
      -
      -		this.hasTitle = !!this.element.attr( "title" );
      -
      -		// Check to see if the label needs to be set or if its already correct
      -		if ( this.options.label && this.options.label !== this.originalLabel ) {
      -			if ( this.isInput ) {
      -				this.element.val( this.options.label );
      -			} else {
      -				this.element.html( this.options.label );
      -			}
      -		}
      -		this._addClass( "ui-button", "ui-widget" );
      -		this._setOption( "disabled", this.options.disabled );
      -		this._enhance();
      -
      -		if ( this.element.is( "a" ) ) {
      -			this._on( {
      -				"keyup": function( event ) {
      -					if ( event.keyCode === $.ui.keyCode.SPACE ) {
      -						event.preventDefault();
      -
      -						// Support: PhantomJS <= 1.9, IE 8 Only
      -						// If a native click is available use it so we actually cause navigation
      -						// otherwise just trigger a click event
      -						if ( this.element[ 0 ].click ) {
      -							this.element[ 0 ].click();
      -						} else {
      -							this.element.trigger( "click" );
      -						}
      -					}
      -				}
      -			} );
      -		}
      -	},
      -
      -	_enhance: function() {
      -		if ( !this.element.is( "button" ) ) {
      -			this.element.attr( "role", "button" );
      -		}
      -
      -		if ( this.options.icon ) {
      -			this._updateIcon( "icon", this.options.icon );
      -			this._updateTooltip();
      -		}
      -	},
      -
      -	_updateTooltip: function() {
      -		this.title = this.element.attr( "title" );
      -
      -		if ( !this.options.showLabel && !this.title ) {
      -			this.element.attr( "title", this.options.label );
      -		}
      -	},
      -
      -	_updateIcon: function( option, value ) {
      -		var icon = option !== "iconPosition",
      -			position = icon ? this.options.iconPosition : value,
      -			displayBlock = position === "top" || position === "bottom";
      -
      -		// Create icon
      -		if ( !this.icon ) {
      -			this.icon = $( "<span>" );
      -
      -			this._addClass( this.icon, "ui-button-icon", "ui-icon" );
      -
      -			if ( !this.options.showLabel ) {
      -				this._addClass( "ui-button-icon-only" );
      -			}
      -		} else if ( icon ) {
      -
      -			// If we are updating the icon remove the old icon class
      -			this._removeClass( this.icon, null, this.options.icon );
      -		}
      -
      -		// If we are updating the icon add the new icon class
      -		if ( icon ) {
      -			this._addClass( this.icon, null, value );
      -		}
      -
      -		this._attachIcon( position );
      -
      -		// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
      -		// the iconSpace if there is one.
      -		if ( displayBlock ) {
      -			this._addClass( this.icon, null, "ui-widget-icon-block" );
      -			if ( this.iconSpace ) {
      -				this.iconSpace.remove();
      -			}
      -		} else {
      -
      -			// Position is beginning or end so remove the ui-widget-icon-block class and add the
      -			// space if it does not exist
      -			if ( !this.iconSpace ) {
      -				this.iconSpace = $( "<span> </span>" );
      -				this._addClass( this.iconSpace, "ui-button-icon-space" );
      -			}
      -			this._removeClass( this.icon, null, "ui-wiget-icon-block" );
      -			this._attachIconSpace( position );
      -		}
      -	},
      -
      -	_destroy: function() {
      -		this.element.removeAttr( "role" );
      -
      -		if ( this.icon ) {
      -			this.icon.remove();
      -		}
      -		if ( this.iconSpace ) {
      -			this.iconSpace.remove();
      -		}
      -		if ( !this.hasTitle ) {
      -			this.element.removeAttr( "title" );
      -		}
      -	},
      -
      -	_attachIconSpace: function( iconPosition ) {
      -		this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
      -	},
      -
      -	_attachIcon: function( iconPosition ) {
      -		this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
      -	},
      -
      -	_setOptions: function( options ) {
      -		var newShowLabel = options.showLabel === undefined ?
      -				this.options.showLabel :
      -				options.showLabel,
      -			newIcon = options.icon === undefined ? this.options.icon : options.icon;
      -
      -		if ( !newShowLabel && !newIcon ) {
      -			options.showLabel = true;
      -		}
      -		this._super( options );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "icon" ) {
      -			if ( value ) {
      -				this._updateIcon( key, value );
      -			} else if ( this.icon ) {
      -				this.icon.remove();
      -				if ( this.iconSpace ) {
      -					this.iconSpace.remove();
      -				}
      -			}
      -		}
      -
      -		if ( key === "iconPosition" ) {
      -			this._updateIcon( key, value );
      -		}
      -
      -		// Make sure we can't end up with a button that has neither text nor icon
      -		if ( key === "showLabel" ) {
      -				this._toggleClass( "ui-button-icon-only", null, !value );
      -				this._updateTooltip();
      -		}
      -
      -		if ( key === "label" ) {
      -			if ( this.isInput ) {
      -				this.element.val( value );
      -			} else {
      -
      -				// If there is an icon, append it, else nothing then append the value
      -				// this avoids removal of the icon when setting label text
      -				this.element.html( value );
      -				if ( this.icon ) {
      -					this._attachIcon( this.options.iconPosition );
      -					this._attachIconSpace( this.options.iconPosition );
      -				}
      -			}
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "disabled" ) {
      -			this._toggleClass( null, "ui-state-disabled", value );
      -			this.element[ 0 ].disabled = value;
      -			if ( value ) {
      -				this.element.blur();
      -			}
      -		}
      -	},
      -
      -	refresh: function() {
      -
      -		// Make sure to only check disabled if its an element that supports this otherwise
      -		// check for the disabled class to determine state
      -		var isDisabled = this.element.is( "input, button" ) ?
      -			this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );
      -
      -		if ( isDisabled !== this.options.disabled ) {
      -			this._setOptions( { disabled: isDisabled } );
      -		}
      -
      -		this._updateTooltip();
      -	}
      -} );
      -
      -// DEPRECATED
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Text and Icons options
      -	$.widget( "ui.button", $.ui.button, {
      -		options: {
      -			text: true,
      -			icons: {
      -				primary: null,
      -				secondary: null
      -			}
      -		},
      -
      -		_create: function() {
      -			if ( this.options.showLabel && !this.options.text ) {
      -				this.options.showLabel = this.options.text;
      -			}
      -			if ( !this.options.showLabel && this.options.text ) {
      -				this.options.text = this.options.showLabel;
      -			}
      -			if ( !this.options.icon && ( this.options.icons.primary ||
      -					this.options.icons.secondary ) ) {
      -				if ( this.options.icons.primary ) {
      -					this.options.icon = this.options.icons.primary;
      -				} else {
      -					this.options.icon = this.options.icons.secondary;
      -					this.options.iconPosition = "end";
      -				}
      -			} else if ( this.options.icon ) {
      -				this.options.icons.primary = this.options.icon;
      -			}
      -			this._super();
      -		},
      -
      -		_setOption: function( key, value ) {
      -			if ( key === "text" ) {
      -				this._super( "showLabel", value );
      -				return;
      -			}
      -			if ( key === "showLabel" ) {
      -				this.options.text = value;
      -			}
      -			if ( key === "icon" ) {
      -				this.options.icons.primary = value;
      -			}
      -			if ( key === "icons" ) {
      -				if ( value.primary ) {
      -					this._super( "icon", value.primary );
      -					this._super( "iconPosition", "beginning" );
      -				} else if ( value.secondary ) {
      -					this._super( "icon", value.secondary );
      -					this._super( "iconPosition", "end" );
      -				}
      -			}
      -			this._superApply( arguments );
      -		}
      -	} );
      -
      -	$.fn.button = ( function( orig ) {
      -		return function() {
      -			if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
      -					( this.length && this[ 0 ].tagName === "INPUT" && (
      -						this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
      -					) ) ) {
      -				return orig.apply( this, arguments );
      -			}
      -			if ( !$.ui.checkboxradio ) {
      -				$.error( "Checkboxradio widget missing" );
      -			}
      -			if ( arguments.length === 0 ) {
      -				return this.checkboxradio( {
      -					"icon": false
      -				} );
      -			}
      -			return this.checkboxradio.apply( this, arguments );
      -		};
      -	} )( $.fn.button );
      -
      -	$.fn.buttonset = function() {
      -		if ( !$.ui.controlgroup ) {
      -			$.error( "Controlgroup widget missing" );
      -		}
      -		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
      -			return this.controlgroup.apply( this,
      -				[ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
      -		}
      -		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
      -			return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
      -		}
      -		if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
      -			arguments[ 0 ].items = {
      -				button: arguments[ 0 ].items
      -			};
      -		}
      -		return this.controlgroup.apply( this, arguments );
      -	};
      -}
      -
      -var widgetsButton = $.ui.button;
      -
      -
      -// jscs:disable maximumLineLength
      -/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
      -/*!
      - * jQuery UI Datepicker 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Datepicker
      -//>>group: Widgets
      -//>>description: Displays a calendar from an input or inline for selecting dates.
      -//>>docs: http://api.jqueryui.com/datepicker/
      -//>>demos: http://jqueryui.com/datepicker/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/datepicker.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.extend( $.ui, { datepicker: { version: "1.12.1" } } );
      -
      -var datepicker_instActive;
      -
      -function datepicker_getZindex( elem ) {
      -	var position, value;
      -	while ( elem.length && elem[ 0 ] !== document ) {
      -
      -		// Ignore z-index if position is set to a value where z-index is ignored by the browser
      -		// This makes behavior of this function consistent across browsers
      -		// WebKit always returns auto if the element is positioned
      -		position = elem.css( "position" );
      -		if ( position === "absolute" || position === "relative" || position === "fixed" ) {
      -
      -			// IE returns 0 when zIndex is not specified
      -			// other browsers return a string
      -			// we ignore the case of nested elements with an explicit value of 0
      -			// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
      -			value = parseInt( elem.css( "zIndex" ), 10 );
      -			if ( !isNaN( value ) && value !== 0 ) {
      -				return value;
      -			}
      -		}
      -		elem = elem.parent();
      -	}
      -
      -	return 0;
      -}
      -/* Date picker manager.
      -   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
      -   Settings for (groups of) date pickers are maintained in an instance object,
      -   allowing multiple different settings on the same page. */
      -
      -function Datepicker() {
      -	this._curInst = null; // The current instance in use
      -	this._keyEvent = false; // If the last event was a key event
      -	this._disabledInputs = []; // List of date picker inputs that have been disabled
      -	this._datepickerShowing = false; // True if the popup picker is showing , false if not
      -	this._inDialog = false; // True if showing within a "dialog", false if not
      -	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
      -	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
      -	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
      -	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
      -	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
      -	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
      -	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
      -	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
      -	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
      -	this.regional = []; // Available regional settings, indexed by language code
      -	this.regional[ "" ] = { // Default regional settings
      -		closeText: "Done", // Display text for close link
      -		prevText: "Prev", // Display text for previous month link
      -		nextText: "Next", // Display text for next month link
      -		currentText: "Today", // Display text for current month link
      -		monthNames: [ "January","February","March","April","May","June",
      -			"July","August","September","October","November","December" ], // Names of months for drop-down and formatting
      -		monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
      -		dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
      -		dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
      -		dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
      -		weekHeader: "Wk", // Column header for week of the year
      -		dateFormat: "mm/dd/yy", // See format options on parseDate
      -		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
      -		isRTL: false, // True if right-to-left language, false if left-to-right
      -		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
      -		yearSuffix: "" // Additional text to append to the year in the month headers
      -	};
      -	this._defaults = { // Global defaults for all the date picker instances
      -		showOn: "focus", // "focus" for popup on focus,
      -			// "button" for trigger button, or "both" for either
      -		showAnim: "fadeIn", // Name of jQuery animation for popup
      -		showOptions: {}, // Options for enhanced animations
      -		defaultDate: null, // Used when field is blank: actual date,
      -			// +/-number for offset from today, null for today
      -		appendText: "", // Display text following the input box, e.g. showing the format
      -		buttonText: "...", // Text for trigger button
      -		buttonImage: "", // URL for trigger button image
      -		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
      -		hideIfNoPrevNext: false, // True to hide next/previous month links
      -			// if not applicable, false to just disable them
      -		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
      -		gotoCurrent: false, // True if today link goes back to current selection instead
      -		changeMonth: false, // True if month can be selected directly, false if only prev/next
      -		changeYear: false, // True if year can be selected directly, false if only prev/next
      -		yearRange: "c-10:c+10", // Range of years to display in drop-down,
      -			// either relative to today's year (-nn:+nn), relative to currently displayed year
      -			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
      -		showOtherMonths: false, // True to show dates in other months, false to leave blank
      -		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
      -		showWeek: false, // True to show week of the year, false to not show it
      -		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
      -			// takes a Date and returns the number of the week for it
      -		shortYearCutoff: "+10", // Short year values < this are in the current century,
      -			// > this are in the previous century,
      -			// string value starting with "+" for current year + value
      -		minDate: null, // The earliest selectable date, or null for no limit
      -		maxDate: null, // The latest selectable date, or null for no limit
      -		duration: "fast", // Duration of display/closure
      -		beforeShowDay: null, // Function that takes a date and returns an array with
      -			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
      -			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
      -		beforeShow: null, // Function that takes an input field and
      -			// returns a set of custom settings for the date picker
      -		onSelect: null, // Define a callback function when a date is selected
      -		onChangeMonthYear: null, // Define a callback function when the month or year is changed
      -		onClose: null, // Define a callback function when the datepicker is closed
      -		numberOfMonths: 1, // Number of months to show at a time
      -		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
      -		stepMonths: 1, // Number of months to step back/forward
      -		stepBigMonths: 12, // Number of months to step back/forward for the big links
      -		altField: "", // Selector for an alternate field to store selected dates into
      -		altFormat: "", // The date format to use for the alternate field
      -		constrainInput: true, // The input is constrained by the current date format
      -		showButtonPanel: false, // True to show button panel, false to not show it
      -		autoSize: false, // True to size the input for the date format, false to leave as is
      -		disabled: false // The initial disabled state
      -	};
      -	$.extend( this._defaults, this.regional[ "" ] );
      -	this.regional.en = $.extend( true, {}, this.regional[ "" ] );
      -	this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
      -	this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) );
      -}
      -
      -$.extend( Datepicker.prototype, {
      -	/* Class name added to elements to indicate already configured with a date picker. */
      -	markerClassName: "hasDatepicker",
      -
      -	//Keep track of the maximum number of rows displayed (see #7043)
      -	maxRows: 4,
      -
      -	// TODO rename to "widget" when switching to widget factory
      -	_widgetDatepicker: function() {
      -		return this.dpDiv;
      -	},
      -
      -	/* Override the default settings for all instances of the date picker.
      -	 * @param  settings  object - the new settings to use as defaults (anonymous object)
      -	 * @return the manager object
      -	 */
      -	setDefaults: function( settings ) {
      -		datepicker_extendRemove( this._defaults, settings || {} );
      -		return this;
      -	},
      -
      -	/* Attach the date picker to a jQuery selection.
      -	 * @param  target	element - the target input field or division or span
      -	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
      -	 */
      -	_attachDatepicker: function( target, settings ) {
      -		var nodeName, inline, inst;
      -		nodeName = target.nodeName.toLowerCase();
      -		inline = ( nodeName === "div" || nodeName === "span" );
      -		if ( !target.id ) {
      -			this.uuid += 1;
      -			target.id = "dp" + this.uuid;
      -		}
      -		inst = this._newInst( $( target ), inline );
      -		inst.settings = $.extend( {}, settings || {} );
      -		if ( nodeName === "input" ) {
      -			this._connectDatepicker( target, inst );
      -		} else if ( inline ) {
      -			this._inlineDatepicker( target, inst );
      -		}
      -	},
      -
      -	/* Create a new instance object. */
      -	_newInst: function( target, inline ) {
      -		var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars
      -		return { id: id, input: target, // associated target
      -			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
      -			drawMonth: 0, drawYear: 0, // month being drawn
      -			inline: inline, // is datepicker inline or not
      -			dpDiv: ( !inline ? this.dpDiv : // presentation div
      -			datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) };
      -	},
      -
      -	/* Attach the date picker to an input field. */
      -	_connectDatepicker: function( target, inst ) {
      -		var input = $( target );
      -		inst.append = $( [] );
      -		inst.trigger = $( [] );
      -		if ( input.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -		this._attachments( input, inst );
      -		input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ).
      -			on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp );
      -		this._autoSize( inst );
      -		$.data( target, "datepicker", inst );
      -
      -		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
      -		if ( inst.settings.disabled ) {
      -			this._disableDatepicker( target );
      -		}
      -	},
      -
      -	/* Make attachments based on settings. */
      -	_attachments: function( input, inst ) {
      -		var showOn, buttonText, buttonImage,
      -			appendText = this._get( inst, "appendText" ),
      -			isRTL = this._get( inst, "isRTL" );
      -
      -		if ( inst.append ) {
      -			inst.append.remove();
      -		}
      -		if ( appendText ) {
      -			inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
      -			input[ isRTL ? "before" : "after" ]( inst.append );
      -		}
      -
      -		input.off( "focus", this._showDatepicker );
      -
      -		if ( inst.trigger ) {
      -			inst.trigger.remove();
      -		}
      -
      -		showOn = this._get( inst, "showOn" );
      -		if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field
      -			input.on( "focus", this._showDatepicker );
      -		}
      -		if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
      -			buttonText = this._get( inst, "buttonText" );
      -			buttonImage = this._get( inst, "buttonImage" );
      -			inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
      -				$( "<img/>" ).addClass( this._triggerClass ).
      -					attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
      -				$( "<button type='button'></button>" ).addClass( this._triggerClass ).
      -					html( !buttonImage ? buttonText : $( "<img/>" ).attr(
      -					{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );
      -			input[ isRTL ? "before" : "after" ]( inst.trigger );
      -			inst.trigger.on( "click", function() {
      -				if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
      -					$.datepicker._hideDatepicker();
      -				} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {
      -					$.datepicker._hideDatepicker();
      -					$.datepicker._showDatepicker( input[ 0 ] );
      -				} else {
      -					$.datepicker._showDatepicker( input[ 0 ] );
      -				}
      -				return false;
      -			} );
      -		}
      -	},
      -
      -	/* Apply the maximum length for the date format. */
      -	_autoSize: function( inst ) {
      -		if ( this._get( inst, "autoSize" ) && !inst.inline ) {
      -			var findMax, max, maxI, i,
      -				date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits
      -				dateFormat = this._get( inst, "dateFormat" );
      -
      -			if ( dateFormat.match( /[DM]/ ) ) {
      -				findMax = function( names ) {
      -					max = 0;
      -					maxI = 0;
      -					for ( i = 0; i < names.length; i++ ) {
      -						if ( names[ i ].length > max ) {
      -							max = names[ i ].length;
      -							maxI = i;
      -						}
      -					}
      -					return maxI;
      -				};
      -				date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?
      -					"monthNames" : "monthNamesShort" ) ) ) );
      -				date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?
      -					"dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() );
      -			}
      -			inst.input.attr( "size", this._formatDate( inst, date ).length );
      -		}
      -	},
      -
      -	/* Attach an inline date picker to a div. */
      -	_inlineDatepicker: function( target, inst ) {
      -		var divSpan = $( target );
      -		if ( divSpan.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -		divSpan.addClass( this.markerClassName ).append( inst.dpDiv );
      -		$.data( target, "datepicker", inst );
      -		this._setDate( inst, this._getDefaultDate( inst ), true );
      -		this._updateDatepicker( inst );
      -		this._updateAlternate( inst );
      -
      -		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
      -		if ( inst.settings.disabled ) {
      -			this._disableDatepicker( target );
      -		}
      -
      -		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
      -		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
      -		inst.dpDiv.css( "display", "block" );
      -	},
      -
      -	/* Pop-up the date picker in a "dialog" box.
      -	 * @param  input element - ignored
      -	 * @param  date	string or Date - the initial date to display
      -	 * @param  onSelect  function - the function to call when a date is selected
      -	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
      -	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
      -	 *					event - with x/y coordinates or
      -	 *					leave empty for default (screen centre)
      -	 * @return the manager object
      -	 */
      -	_dialogDatepicker: function( input, date, onSelect, settings, pos ) {
      -		var id, browserWidth, browserHeight, scrollX, scrollY,
      -			inst = this._dialogInst; // internal instance
      -
      -		if ( !inst ) {
      -			this.uuid += 1;
      -			id = "dp" + this.uuid;
      -			this._dialogInput = $( "<input type='text' id='" + id +
      -				"' style='position: absolute; top: -100px; width: 0px;'/>" );
      -			this._dialogInput.on( "keydown", this._doKeyDown );
      -			$( "body" ).append( this._dialogInput );
      -			inst = this._dialogInst = this._newInst( this._dialogInput, false );
      -			inst.settings = {};
      -			$.data( this._dialogInput[ 0 ], "datepicker", inst );
      -		}
      -		datepicker_extendRemove( inst.settings, settings || {} );
      -		date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );
      -		this._dialogInput.val( date );
      -
      -		this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );
      -		if ( !this._pos ) {
      -			browserWidth = document.documentElement.clientWidth;
      -			browserHeight = document.documentElement.clientHeight;
      -			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
      -			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
      -			this._pos = // should use actual width/height below
      -				[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];
      -		}
      -
      -		// Move input on screen for focus, but hidden behind dialog
      -		this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" );
      -		inst.settings.onSelect = onSelect;
      -		this._inDialog = true;
      -		this.dpDiv.addClass( this._dialogClass );
      -		this._showDatepicker( this._dialogInput[ 0 ] );
      -		if ( $.blockUI ) {
      -			$.blockUI( this.dpDiv );
      -		}
      -		$.data( this._dialogInput[ 0 ], "datepicker", inst );
      -		return this;
      -	},
      -
      -	/* Detach a datepicker from its control.
      -	 * @param  target	element - the target input field or division or span
      -	 */
      -	_destroyDatepicker: function( target ) {
      -		var nodeName,
      -			$target = $( target ),
      -			inst = $.data( target, "datepicker" );
      -
      -		if ( !$target.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -
      -		nodeName = target.nodeName.toLowerCase();
      -		$.removeData( target, "datepicker" );
      -		if ( nodeName === "input" ) {
      -			inst.append.remove();
      -			inst.trigger.remove();
      -			$target.removeClass( this.markerClassName ).
      -				off( "focus", this._showDatepicker ).
      -				off( "keydown", this._doKeyDown ).
      -				off( "keypress", this._doKeyPress ).
      -				off( "keyup", this._doKeyUp );
      -		} else if ( nodeName === "div" || nodeName === "span" ) {
      -			$target.removeClass( this.markerClassName ).empty();
      -		}
      -
      -		if ( datepicker_instActive === inst ) {
      -			datepicker_instActive = null;
      -		}
      -	},
      -
      -	/* Enable the date picker to a jQuery selection.
      -	 * @param  target	element - the target input field or division or span
      -	 */
      -	_enableDatepicker: function( target ) {
      -		var nodeName, inline,
      -			$target = $( target ),
      -			inst = $.data( target, "datepicker" );
      -
      -		if ( !$target.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -
      -		nodeName = target.nodeName.toLowerCase();
      -		if ( nodeName === "input" ) {
      -			target.disabled = false;
      -			inst.trigger.filter( "button" ).
      -				each( function() { this.disabled = false; } ).end().
      -				filter( "img" ).css( { opacity: "1.0", cursor: "" } );
      -		} else if ( nodeName === "div" || nodeName === "span" ) {
      -			inline = $target.children( "." + this._inlineClass );
      -			inline.children().removeClass( "ui-state-disabled" );
      -			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
      -				prop( "disabled", false );
      -		}
      -		this._disabledInputs = $.map( this._disabledInputs,
      -			function( value ) { return ( value === target ? null : value ); } ); // delete entry
      -	},
      -
      -	/* Disable the date picker to a jQuery selection.
      -	 * @param  target	element - the target input field or division or span
      -	 */
      -	_disableDatepicker: function( target ) {
      -		var nodeName, inline,
      -			$target = $( target ),
      -			inst = $.data( target, "datepicker" );
      -
      -		if ( !$target.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -
      -		nodeName = target.nodeName.toLowerCase();
      -		if ( nodeName === "input" ) {
      -			target.disabled = true;
      -			inst.trigger.filter( "button" ).
      -				each( function() { this.disabled = true; } ).end().
      -				filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
      -		} else if ( nodeName === "div" || nodeName === "span" ) {
      -			inline = $target.children( "." + this._inlineClass );
      -			inline.children().addClass( "ui-state-disabled" );
      -			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
      -				prop( "disabled", true );
      -		}
      -		this._disabledInputs = $.map( this._disabledInputs,
      -			function( value ) { return ( value === target ? null : value ); } ); // delete entry
      -		this._disabledInputs[ this._disabledInputs.length ] = target;
      -	},
      -
      -	/* Is the first field in a jQuery collection disabled as a datepicker?
      -	 * @param  target	element - the target input field or division or span
      -	 * @return boolean - true if disabled, false if enabled
      -	 */
      -	_isDisabledDatepicker: function( target ) {
      -		if ( !target ) {
      -			return false;
      -		}
      -		for ( var i = 0; i < this._disabledInputs.length; i++ ) {
      -			if ( this._disabledInputs[ i ] === target ) {
      -				return true;
      -			}
      -		}
      -		return false;
      -	},
      -
      -	/* Retrieve the instance data for the target control.
      -	 * @param  target  element - the target input field or division or span
      -	 * @return  object - the associated instance data
      -	 * @throws  error if a jQuery problem getting data
      -	 */
      -	_getInst: function( target ) {
      -		try {
      -			return $.data( target, "datepicker" );
      -		}
      -		catch ( err ) {
      -			throw "Missing instance data for this datepicker";
      -		}
      -	},
      -
      -	/* Update or retrieve the settings for a date picker attached to an input field or division.
      -	 * @param  target  element - the target input field or division or span
      -	 * @param  name	object - the new settings to update or
      -	 *				string - the name of the setting to change or retrieve,
      -	 *				when retrieving also "all" for all instance settings or
      -	 *				"defaults" for all global defaults
      -	 * @param  value   any - the new value for the setting
      -	 *				(omit if above is an object or to retrieve a value)
      -	 */
      -	_optionDatepicker: function( target, name, value ) {
      -		var settings, date, minDate, maxDate,
      -			inst = this._getInst( target );
      -
      -		if ( arguments.length === 2 && typeof name === "string" ) {
      -			return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) :
      -				( inst ? ( name === "all" ? $.extend( {}, inst.settings ) :
      -				this._get( inst, name ) ) : null ) );
      -		}
      -
      -		settings = name || {};
      -		if ( typeof name === "string" ) {
      -			settings = {};
      -			settings[ name ] = value;
      -		}
      -
      -		if ( inst ) {
      -			if ( this._curInst === inst ) {
      -				this._hideDatepicker();
      -			}
      -
      -			date = this._getDateDatepicker( target, true );
      -			minDate = this._getMinMaxDate( inst, "min" );
      -			maxDate = this._getMinMaxDate( inst, "max" );
      -			datepicker_extendRemove( inst.settings, settings );
      -
      -			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
      -			if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {
      -				inst.settings.minDate = this._formatDate( inst, minDate );
      -			}
      -			if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {
      -				inst.settings.maxDate = this._formatDate( inst, maxDate );
      -			}
      -			if ( "disabled" in settings ) {
      -				if ( settings.disabled ) {
      -					this._disableDatepicker( target );
      -				} else {
      -					this._enableDatepicker( target );
      -				}
      -			}
      -			this._attachments( $( target ), inst );
      -			this._autoSize( inst );
      -			this._setDate( inst, date );
      -			this._updateAlternate( inst );
      -			this._updateDatepicker( inst );
      -		}
      -	},
      -
      -	// Change method deprecated
      -	_changeDatepicker: function( target, name, value ) {
      -		this._optionDatepicker( target, name, value );
      -	},
      -
      -	/* Redraw the date picker attached to an input field or division.
      -	 * @param  target  element - the target input field or division or span
      -	 */
      -	_refreshDatepicker: function( target ) {
      -		var inst = this._getInst( target );
      -		if ( inst ) {
      -			this._updateDatepicker( inst );
      -		}
      -	},
      -
      -	/* Set the dates for a jQuery selection.
      -	 * @param  target element - the target input field or division or span
      -	 * @param  date	Date - the new date
      -	 */
      -	_setDateDatepicker: function( target, date ) {
      -		var inst = this._getInst( target );
      -		if ( inst ) {
      -			this._setDate( inst, date );
      -			this._updateDatepicker( inst );
      -			this._updateAlternate( inst );
      -		}
      -	},
      -
      -	/* Get the date(s) for the first entry in a jQuery selection.
      -	 * @param  target element - the target input field or division or span
      -	 * @param  noDefault boolean - true if no default date is to be used
      -	 * @return Date - the current date
      -	 */
      -	_getDateDatepicker: function( target, noDefault ) {
      -		var inst = this._getInst( target );
      -		if ( inst && !inst.inline ) {
      -			this._setDateFromField( inst, noDefault );
      -		}
      -		return ( inst ? this._getDate( inst ) : null );
      -	},
      -
      -	/* Handle keystrokes. */
      -	_doKeyDown: function( event ) {
      -		var onSelect, dateStr, sel,
      -			inst = $.datepicker._getInst( event.target ),
      -			handled = true,
      -			isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" );
      -
      -		inst._keyEvent = true;
      -		if ( $.datepicker._datepickerShowing ) {
      -			switch ( event.keyCode ) {
      -				case 9: $.datepicker._hideDatepicker();
      -						handled = false;
      -						break; // hide on tab out
      -				case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." +
      -									$.datepicker._currentClass + ")", inst.dpDiv );
      -						if ( sel[ 0 ] ) {
      -							$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );
      -						}
      -
      -						onSelect = $.datepicker._get( inst, "onSelect" );
      -						if ( onSelect ) {
      -							dateStr = $.datepicker._formatDate( inst );
      -
      -							// Trigger custom callback
      -							onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );
      -						} else {
      -							$.datepicker._hideDatepicker();
      -						}
      -
      -						return false; // don't submit the form
      -				case 27: $.datepicker._hideDatepicker();
      -						break; // hide on escape
      -				case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -							-$.datepicker._get( inst, "stepBigMonths" ) :
      -							-$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						break; // previous month/year on page up/+ ctrl
      -				case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -							+$.datepicker._get( inst, "stepBigMonths" ) :
      -							+$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						break; // next month/year on page down/+ ctrl
      -				case 35: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._clearDate( event.target );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // clear on ctrl or command +end
      -				case 36: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._gotoToday( event.target );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // current on ctrl or command +home
      -				case 37: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -
      -						// -1 day on ctrl or command +left
      -						if ( event.originalEvent.altKey ) {
      -							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -								-$.datepicker._get( inst, "stepBigMonths" ) :
      -								-$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						}
      -
      -						// next month/year on alt +left on Mac
      -						break;
      -				case 38: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, -7, "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // -1 week on ctrl or command +up
      -				case 39: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -
      -						// +1 day on ctrl or command +right
      -						if ( event.originalEvent.altKey ) {
      -							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -								+$.datepicker._get( inst, "stepBigMonths" ) :
      -								+$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						}
      -
      -						// next month/year on alt +right
      -						break;
      -				case 40: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, +7, "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // +1 week on ctrl or command +down
      -				default: handled = false;
      -			}
      -		} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home
      -			$.datepicker._showDatepicker( this );
      -		} else {
      -			handled = false;
      -		}
      -
      -		if ( handled ) {
      -			event.preventDefault();
      -			event.stopPropagation();
      -		}
      -	},
      -
      -	/* Filter entered characters - based on date format. */
      -	_doKeyPress: function( event ) {
      -		var chars, chr,
      -			inst = $.datepicker._getInst( event.target );
      -
      -		if ( $.datepicker._get( inst, "constrainInput" ) ) {
      -			chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) );
      -			chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );
      -			return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 );
      -		}
      -	},
      -
      -	/* Synchronise manual entry and field/alternate field. */
      -	_doKeyUp: function( event ) {
      -		var date,
      -			inst = $.datepicker._getInst( event.target );
      -
      -		if ( inst.input.val() !== inst.lastVal ) {
      -			try {
      -				date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
      -					( inst.input ? inst.input.val() : null ),
      -					$.datepicker._getFormatConfig( inst ) );
      -
      -				if ( date ) { // only if valid
      -					$.datepicker._setDateFromField( inst );
      -					$.datepicker._updateAlternate( inst );
      -					$.datepicker._updateDatepicker( inst );
      -				}
      -			}
      -			catch ( err ) {
      -			}
      -		}
      -		return true;
      -	},
      -
      -	/* Pop-up the date picker for a given input field.
      -	 * If false returned from beforeShow event handler do not show.
      -	 * @param  input  element - the input field attached to the date picker or
      -	 *					event - if triggered by focus
      -	 */
      -	_showDatepicker: function( input ) {
      -		input = input.target || input;
      -		if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger
      -			input = $( "input", input.parentNode )[ 0 ];
      -		}
      -
      -		if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here
      -			return;
      -		}
      -
      -		var inst, beforeShow, beforeShowSettings, isFixed,
      -			offset, showAnim, duration;
      -
      -		inst = $.datepicker._getInst( input );
      -		if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {
      -			$.datepicker._curInst.dpDiv.stop( true, true );
      -			if ( inst && $.datepicker._datepickerShowing ) {
      -				$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );
      -			}
      -		}
      -
      -		beforeShow = $.datepicker._get( inst, "beforeShow" );
      -		beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};
      -		if ( beforeShowSettings === false ) {
      -			return;
      -		}
      -		datepicker_extendRemove( inst.settings, beforeShowSettings );
      -
      -		inst.lastVal = null;
      -		$.datepicker._lastInput = input;
      -		$.datepicker._setDateFromField( inst );
      -
      -		if ( $.datepicker._inDialog ) { // hide cursor
      -			input.value = "";
      -		}
      -		if ( !$.datepicker._pos ) { // position below input
      -			$.datepicker._pos = $.datepicker._findPos( input );
      -			$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height
      -		}
      -
      -		isFixed = false;
      -		$( input ).parents().each( function() {
      -			isFixed |= $( this ).css( "position" ) === "fixed";
      -			return !isFixed;
      -		} );
      -
      -		offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
      -		$.datepicker._pos = null;
      -
      -		//to avoid flashes on Firefox
      -		inst.dpDiv.empty();
      -
      -		// determine sizing offscreen
      -		inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } );
      -		$.datepicker._updateDatepicker( inst );
      -
      -		// fix width for dynamic number of date pickers
      -		// and adjust position before showing
      -		offset = $.datepicker._checkOffset( inst, offset, isFixed );
      -		inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?
      -			"static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none",
      -			left: offset.left + "px", top: offset.top + "px" } );
      -
      -		if ( !inst.inline ) {
      -			showAnim = $.datepicker._get( inst, "showAnim" );
      -			duration = $.datepicker._get( inst, "duration" );
      -			inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
      -			$.datepicker._datepickerShowing = true;
      -
      -			if ( $.effects && $.effects.effect[ showAnim ] ) {
      -				inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration );
      -			} else {
      -				inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null );
      -			}
      -
      -			if ( $.datepicker._shouldFocusInput( inst ) ) {
      -				inst.input.trigger( "focus" );
      -			}
      -
      -			$.datepicker._curInst = inst;
      -		}
      -	},
      -
      -	/* Generate the date picker content. */
      -	_updateDatepicker: function( inst ) {
      -		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
      -		datepicker_instActive = inst; // for delegate hover events
      -		inst.dpDiv.empty().append( this._generateHTML( inst ) );
      -		this._attachHandlers( inst );
      -
      -		var origyearshtml,
      -			numMonths = this._getNumberOfMonths( inst ),
      -			cols = numMonths[ 1 ],
      -			width = 17,
      -			activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
      -
      -		if ( activeCell.length > 0 ) {
      -			datepicker_handleMouseover.apply( activeCell.get( 0 ) );
      -		}
      -
      -		inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" );
      -		if ( cols > 1 ) {
      -			inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" );
      -		}
      -		inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) +
      -			"Class" ]( "ui-datepicker-multi" );
      -		inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) +
      -			"Class" ]( "ui-datepicker-rtl" );
      -
      -		if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
      -			inst.input.trigger( "focus" );
      -		}
      -
      -		// Deffered render of the years select (to avoid flashes on Firefox)
      -		if ( inst.yearshtml ) {
      -			origyearshtml = inst.yearshtml;
      -			setTimeout( function() {
      -
      -				//assure that inst.yearshtml didn't change.
      -				if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
      -					inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
      -				}
      -				origyearshtml = inst.yearshtml = null;
      -			}, 0 );
      -		}
      -	},
      -
      -	// #6694 - don't focus the input if it's already focused
      -	// this breaks the change event in IE
      -	// Support: IE and jQuery <1.9
      -	_shouldFocusInput: function( inst ) {
      -		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
      -	},
      -
      -	/* Check positioning to remain on screen. */
      -	_checkOffset: function( inst, offset, isFixed ) {
      -		var dpWidth = inst.dpDiv.outerWidth(),
      -			dpHeight = inst.dpDiv.outerHeight(),
      -			inputWidth = inst.input ? inst.input.outerWidth() : 0,
      -			inputHeight = inst.input ? inst.input.outerHeight() : 0,
      -			viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),
      -			viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );
      -
      -		offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 );
      -		offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;
      -		offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;
      -
      -		// Now check if datepicker is showing outside window viewport - move to a better place if so.
      -		offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?
      -			Math.abs( offset.left + dpWidth - viewWidth ) : 0 );
      -		offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?
      -			Math.abs( dpHeight + inputHeight ) : 0 );
      -
      -		return offset;
      -	},
      -
      -	/* Find an object's position on the screen. */
      -	_findPos: function( obj ) {
      -		var position,
      -			inst = this._getInst( obj ),
      -			isRTL = this._get( inst, "isRTL" );
      -
      -		while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
      -			obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
      -		}
      -
      -		position = $( obj ).offset();
      -		return [ position.left, position.top ];
      -	},
      -
      -	/* Hide the date picker from view.
      -	 * @param  input  element - the input field attached to the date picker
      -	 */
      -	_hideDatepicker: function( input ) {
      -		var showAnim, duration, postProcess, onClose,
      -			inst = this._curInst;
      -
      -		if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) {
      -			return;
      -		}
      -
      -		if ( this._datepickerShowing ) {
      -			showAnim = this._get( inst, "showAnim" );
      -			duration = this._get( inst, "duration" );
      -			postProcess = function() {
      -				$.datepicker._tidyDialog( inst );
      -			};
      -
      -			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
      -			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
      -				inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess );
      -			} else {
      -				inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" :
      -					( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess );
      -			}
      -
      -			if ( !showAnim ) {
      -				postProcess();
      -			}
      -			this._datepickerShowing = false;
      -
      -			onClose = this._get( inst, "onClose" );
      -			if ( onClose ) {
      -				onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] );
      -			}
      -
      -			this._lastInput = null;
      -			if ( this._inDialog ) {
      -				this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } );
      -				if ( $.blockUI ) {
      -					$.unblockUI();
      -					$( "body" ).append( this.dpDiv );
      -				}
      -			}
      -			this._inDialog = false;
      -		}
      -	},
      -
      -	/* Tidy up after a dialog display. */
      -	_tidyDialog: function( inst ) {
      -		inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" );
      -	},
      -
      -	/* Close date picker if clicked elsewhere. */
      -	_checkExternalClick: function( event ) {
      -		if ( !$.datepicker._curInst ) {
      -			return;
      -		}
      -
      -		var $target = $( event.target ),
      -			inst = $.datepicker._getInst( $target[ 0 ] );
      -
      -		if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&
      -				$target.parents( "#" + $.datepicker._mainDivId ).length === 0 &&
      -				!$target.hasClass( $.datepicker.markerClassName ) &&
      -				!$target.closest( "." + $.datepicker._triggerClass ).length &&
      -				$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||
      -			( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {
      -				$.datepicker._hideDatepicker();
      -		}
      -	},
      -
      -	/* Adjust one of the date sub-fields. */
      -	_adjustDate: function( id, offset, period ) {
      -		var target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
      -			return;
      -		}
      -		this._adjustInstDate( inst, offset +
      -			( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
      -			period );
      -		this._updateDatepicker( inst );
      -	},
      -
      -	/* Action for current link. */
      -	_gotoToday: function( id ) {
      -		var date,
      -			target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
      -			inst.selectedDay = inst.currentDay;
      -			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
      -			inst.drawYear = inst.selectedYear = inst.currentYear;
      -		} else {
      -			date = new Date();
      -			inst.selectedDay = date.getDate();
      -			inst.drawMonth = inst.selectedMonth = date.getMonth();
      -			inst.drawYear = inst.selectedYear = date.getFullYear();
      -		}
      -		this._notifyChange( inst );
      -		this._adjustDate( target );
      -	},
      -
      -	/* Action for selecting a new month/year. */
      -	_selectMonthYear: function( id, select, period ) {
      -		var target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] =
      -		inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] =
      -			parseInt( select.options[ select.selectedIndex ].value, 10 );
      -
      -		this._notifyChange( inst );
      -		this._adjustDate( target );
      -	},
      -
      -	/* Action for selecting a day. */
      -	_selectDay: function( id, month, year, td ) {
      -		var inst,
      -			target = $( id );
      -
      -		if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {
      -			return;
      -		}
      -
      -		inst = this._getInst( target[ 0 ] );
      -		inst.selectedDay = inst.currentDay = $( "a", td ).html();
      -		inst.selectedMonth = inst.currentMonth = month;
      -		inst.selectedYear = inst.currentYear = year;
      -		this._selectDate( id, this._formatDate( inst,
      -			inst.currentDay, inst.currentMonth, inst.currentYear ) );
      -	},
      -
      -	/* Erase the input field and hide the date picker. */
      -	_clearDate: function( id ) {
      -		var target = $( id );
      -		this._selectDate( target, "" );
      -	},
      -
      -	/* Update the input field with the selected date. */
      -	_selectDate: function( id, dateStr ) {
      -		var onSelect,
      -			target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );
      -		if ( inst.input ) {
      -			inst.input.val( dateStr );
      -		}
      -		this._updateAlternate( inst );
      -
      -		onSelect = this._get( inst, "onSelect" );
      -		if ( onSelect ) {
      -			onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback
      -		} else if ( inst.input ) {
      -			inst.input.trigger( "change" ); // fire the change event
      -		}
      -
      -		if ( inst.inline ) {
      -			this._updateDatepicker( inst );
      -		} else {
      -			this._hideDatepicker();
      -			this._lastInput = inst.input[ 0 ];
      -			if ( typeof( inst.input[ 0 ] ) !== "object" ) {
      -				inst.input.trigger( "focus" ); // restore focus
      -			}
      -			this._lastInput = null;
      -		}
      -	},
      -
      -	/* Update any alternate field to synchronise with the main field. */
      -	_updateAlternate: function( inst ) {
      -		var altFormat, date, dateStr,
      -			altField = this._get( inst, "altField" );
      -
      -		if ( altField ) { // update alternate field too
      -			altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
      -			date = this._getDate( inst );
      -			dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
      -			$( altField ).val( dateStr );
      -		}
      -	},
      -
      -	/* Set as beforeShowDay function to prevent selection of weekends.
      -	 * @param  date  Date - the date to customise
      -	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
      -	 */
      -	noWeekends: function( date ) {
      -		var day = date.getDay();
      -		return [ ( day > 0 && day < 6 ), "" ];
      -	},
      -
      -	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
      -	 * @param  date  Date - the date to get the week for
      -	 * @return  number - the number of the week within the year that contains this date
      -	 */
      -	iso8601Week: function( date ) {
      -		var time,
      -			checkDate = new Date( date.getTime() );
      -
      -		// Find Thursday of this week starting on Monday
      -		checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );
      -
      -		time = checkDate.getTime();
      -		checkDate.setMonth( 0 ); // Compare with Jan 1
      -		checkDate.setDate( 1 );
      -		return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;
      -	},
      -
      -	/* Parse a string value into a date object.
      -	 * See formatDate below for the possible formats.
      -	 *
      -	 * @param  format string - the expected format of the date
      -	 * @param  value string - the date in the above format
      -	 * @param  settings Object - attributes include:
      -	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
      -	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
      -	 *					dayNames		string[7] - names of the days from Sunday (optional)
      -	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
      -	 *					monthNames		string[12] - names of the months (optional)
      -	 * @return  Date - the extracted date value or null if value is blank
      -	 */
      -	parseDate: function( format, value, settings ) {
      -		if ( format == null || value == null ) {
      -			throw "Invalid arguments";
      -		}
      -
      -		value = ( typeof value === "object" ? value.toString() : value + "" );
      -		if ( value === "" ) {
      -			return null;
      -		}
      -
      -		var iFormat, dim, extra,
      -			iValue = 0,
      -			shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,
      -			shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
      -				new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),
      -			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
      -			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
      -			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
      -			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
      -			year = -1,
      -			month = -1,
      -			day = -1,
      -			doy = -1,
      -			literal = false,
      -			date,
      -
      -			// Check whether a format character is doubled
      -			lookAhead = function( match ) {
      -				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
      -				if ( matches ) {
      -					iFormat++;
      -				}
      -				return matches;
      -			},
      -
      -			// Extract a number from the string value
      -			getNumber = function( match ) {
      -				var isDoubled = lookAhead( match ),
      -					size = ( match === "@" ? 14 : ( match === "!" ? 20 :
      -					( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ),
      -					minSize = ( match === "y" ? size : 1 ),
      -					digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ),
      -					num = value.substring( iValue ).match( digits );
      -				if ( !num ) {
      -					throw "Missing number at position " + iValue;
      -				}
      -				iValue += num[ 0 ].length;
      -				return parseInt( num[ 0 ], 10 );
      -			},
      -
      -			// Extract a name from the string value and convert to an index
      -			getName = function( match, shortNames, longNames ) {
      -				var index = -1,
      -					names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {
      -						return [ [ k, v ] ];
      -					} ).sort( function( a, b ) {
      -						return -( a[ 1 ].length - b[ 1 ].length );
      -					} );
      -
      -				$.each( names, function( i, pair ) {
      -					var name = pair[ 1 ];
      -					if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {
      -						index = pair[ 0 ];
      -						iValue += name.length;
      -						return false;
      -					}
      -				} );
      -				if ( index !== -1 ) {
      -					return index + 1;
      -				} else {
      -					throw "Unknown name at position " + iValue;
      -				}
      -			},
      -
      -			// Confirm that a literal character matches the string value
      -			checkLiteral = function() {
      -				if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {
      -					throw "Unexpected literal at position " + iValue;
      -				}
      -				iValue++;
      -			};
      -
      -		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
      -			if ( literal ) {
      -				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
      -					literal = false;
      -				} else {
      -					checkLiteral();
      -				}
      -			} else {
      -				switch ( format.charAt( iFormat ) ) {
      -					case "d":
      -						day = getNumber( "d" );
      -						break;
      -					case "D":
      -						getName( "D", dayNamesShort, dayNames );
      -						break;
      -					case "o":
      -						doy = getNumber( "o" );
      -						break;
      -					case "m":
      -						month = getNumber( "m" );
      -						break;
      -					case "M":
      -						month = getName( "M", monthNamesShort, monthNames );
      -						break;
      -					case "y":
      -						year = getNumber( "y" );
      -						break;
      -					case "@":
      -						date = new Date( getNumber( "@" ) );
      -						year = date.getFullYear();
      -						month = date.getMonth() + 1;
      -						day = date.getDate();
      -						break;
      -					case "!":
      -						date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 );
      -						year = date.getFullYear();
      -						month = date.getMonth() + 1;
      -						day = date.getDate();
      -						break;
      -					case "'":
      -						if ( lookAhead( "'" ) ) {
      -							checkLiteral();
      -						} else {
      -							literal = true;
      -						}
      -						break;
      -					default:
      -						checkLiteral();
      -				}
      -			}
      -		}
      -
      -		if ( iValue < value.length ) {
      -			extra = value.substr( iValue );
      -			if ( !/^\s+/.test( extra ) ) {
      -				throw "Extra/unparsed characters found in date: " + extra;
      -			}
      -		}
      -
      -		if ( year === -1 ) {
      -			year = new Date().getFullYear();
      -		} else if ( year < 100 ) {
      -			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
      -				( year <= shortYearCutoff ? 0 : -100 );
      -		}
      -
      -		if ( doy > -1 ) {
      -			month = 1;
      -			day = doy;
      -			do {
      -				dim = this._getDaysInMonth( year, month - 1 );
      -				if ( day <= dim ) {
      -					break;
      -				}
      -				month++;
      -				day -= dim;
      -			} while ( true );
      -		}
      -
      -		date = this._daylightSavingAdjust( new Date( year, month - 1, day ) );
      -		if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {
      -			throw "Invalid date"; // E.g. 31/02/00
      -		}
      -		return date;
      -	},
      -
      -	/* Standard date formats. */
      -	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
      -	COOKIE: "D, dd M yy",
      -	ISO_8601: "yy-mm-dd",
      -	RFC_822: "D, d M y",
      -	RFC_850: "DD, dd-M-y",
      -	RFC_1036: "D, d M y",
      -	RFC_1123: "D, d M yy",
      -	RFC_2822: "D, d M yy",
      -	RSS: "D, d M y", // RFC 822
      -	TICKS: "!",
      -	TIMESTAMP: "@",
      -	W3C: "yy-mm-dd", // ISO 8601
      -
      -	_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +
      -		Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),
      -
      -	/* Format a date object into a string value.
      -	 * The format can be combinations of the following:
      -	 * d  - day of month (no leading zero)
      -	 * dd - day of month (two digit)
      -	 * o  - day of year (no leading zeros)
      -	 * oo - day of year (three digit)
      -	 * D  - day name short
      -	 * DD - day name long
      -	 * m  - month of year (no leading zero)
      -	 * mm - month of year (two digit)
      -	 * M  - month name short
      -	 * MM - month name long
      -	 * y  - year (two digit)
      -	 * yy - year (four digit)
      -	 * @ - Unix timestamp (ms since 01/01/1970)
      -	 * ! - Windows ticks (100ns since 01/01/0001)
      -	 * "..." - literal text
      -	 * '' - single quote
      -	 *
      -	 * @param  format string - the desired format of the date
      -	 * @param  date Date - the date value to format
      -	 * @param  settings Object - attributes include:
      -	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
      -	 *					dayNames		string[7] - names of the days from Sunday (optional)
      -	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
      -	 *					monthNames		string[12] - names of the months (optional)
      -	 * @return  string - the date in the above format
      -	 */
      -	formatDate: function( format, date, settings ) {
      -		if ( !date ) {
      -			return "";
      -		}
      -
      -		var iFormat,
      -			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
      -			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
      -			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
      -			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
      -
      -			// Check whether a format character is doubled
      -			lookAhead = function( match ) {
      -				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
      -				if ( matches ) {
      -					iFormat++;
      -				}
      -				return matches;
      -			},
      -
      -			// Format a number, with leading zero if necessary
      -			formatNumber = function( match, value, len ) {
      -				var num = "" + value;
      -				if ( lookAhead( match ) ) {
      -					while ( num.length < len ) {
      -						num = "0" + num;
      -					}
      -				}
      -				return num;
      -			},
      -
      -			// Format a name, short or long as requested
      -			formatName = function( match, value, shortNames, longNames ) {
      -				return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );
      -			},
      -			output = "",
      -			literal = false;
      -
      -		if ( date ) {
      -			for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
      -				if ( literal ) {
      -					if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
      -						literal = false;
      -					} else {
      -						output += format.charAt( iFormat );
      -					}
      -				} else {
      -					switch ( format.charAt( iFormat ) ) {
      -						case "d":
      -							output += formatNumber( "d", date.getDate(), 2 );
      -							break;
      -						case "D":
      -							output += formatName( "D", date.getDay(), dayNamesShort, dayNames );
      -							break;
      -						case "o":
      -							output += formatNumber( "o",
      -								Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );
      -							break;
      -						case "m":
      -							output += formatNumber( "m", date.getMonth() + 1, 2 );
      -							break;
      -						case "M":
      -							output += formatName( "M", date.getMonth(), monthNamesShort, monthNames );
      -							break;
      -						case "y":
      -							output += ( lookAhead( "y" ) ? date.getFullYear() :
      -								( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 );
      -							break;
      -						case "@":
      -							output += date.getTime();
      -							break;
      -						case "!":
      -							output += date.getTime() * 10000 + this._ticksTo1970;
      -							break;
      -						case "'":
      -							if ( lookAhead( "'" ) ) {
      -								output += "'";
      -							} else {
      -								literal = true;
      -							}
      -							break;
      -						default:
      -							output += format.charAt( iFormat );
      -					}
      -				}
      -			}
      -		}
      -		return output;
      -	},
      -
      -	/* Extract all possible characters from the date format. */
      -	_possibleChars: function( format ) {
      -		var iFormat,
      -			chars = "",
      -			literal = false,
      -
      -			// Check whether a format character is doubled
      -			lookAhead = function( match ) {
      -				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
      -				if ( matches ) {
      -					iFormat++;
      -				}
      -				return matches;
      -			};
      -
      -		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
      -			if ( literal ) {
      -				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
      -					literal = false;
      -				} else {
      -					chars += format.charAt( iFormat );
      -				}
      -			} else {
      -				switch ( format.charAt( iFormat ) ) {
      -					case "d": case "m": case "y": case "@":
      -						chars += "0123456789";
      -						break;
      -					case "D": case "M":
      -						return null; // Accept anything
      -					case "'":
      -						if ( lookAhead( "'" ) ) {
      -							chars += "'";
      -						} else {
      -							literal = true;
      -						}
      -						break;
      -					default:
      -						chars += format.charAt( iFormat );
      -				}
      -			}
      -		}
      -		return chars;
      -	},
      -
      -	/* Get a setting value, defaulting if necessary. */
      -	_get: function( inst, name ) {
      -		return inst.settings[ name ] !== undefined ?
      -			inst.settings[ name ] : this._defaults[ name ];
      -	},
      -
      -	/* Parse existing date and initialise date picker. */
      -	_setDateFromField: function( inst, noDefault ) {
      -		if ( inst.input.val() === inst.lastVal ) {
      -			return;
      -		}
      -
      -		var dateFormat = this._get( inst, "dateFormat" ),
      -			dates = inst.lastVal = inst.input ? inst.input.val() : null,
      -			defaultDate = this._getDefaultDate( inst ),
      -			date = defaultDate,
      -			settings = this._getFormatConfig( inst );
      -
      -		try {
      -			date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
      -		} catch ( event ) {
      -			dates = ( noDefault ? "" : dates );
      -		}
      -		inst.selectedDay = date.getDate();
      -		inst.drawMonth = inst.selectedMonth = date.getMonth();
      -		inst.drawYear = inst.selectedYear = date.getFullYear();
      -		inst.currentDay = ( dates ? date.getDate() : 0 );
      -		inst.currentMonth = ( dates ? date.getMonth() : 0 );
      -		inst.currentYear = ( dates ? date.getFullYear() : 0 );
      -		this._adjustInstDate( inst );
      -	},
      -
      -	/* Retrieve the default date shown on opening. */
      -	_getDefaultDate: function( inst ) {
      -		return this._restrictMinMax( inst,
      -			this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) );
      -	},
      -
      -	/* A date may be specified as an exact value or a relative one. */
      -	_determineDate: function( inst, date, defaultDate ) {
      -		var offsetNumeric = function( offset ) {
      -				var date = new Date();
      -				date.setDate( date.getDate() + offset );
      -				return date;
      -			},
      -			offsetString = function( offset ) {
      -				try {
      -					return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
      -						offset, $.datepicker._getFormatConfig( inst ) );
      -				}
      -				catch ( e ) {
      -
      -					// Ignore
      -				}
      -
      -				var date = ( offset.toLowerCase().match( /^c/ ) ?
      -					$.datepicker._getDate( inst ) : null ) || new Date(),
      -					year = date.getFullYear(),
      -					month = date.getMonth(),
      -					day = date.getDate(),
      -					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
      -					matches = pattern.exec( offset );
      -
      -				while ( matches ) {
      -					switch ( matches[ 2 ] || "d" ) {
      -						case "d" : case "D" :
      -							day += parseInt( matches[ 1 ], 10 ); break;
      -						case "w" : case "W" :
      -							day += parseInt( matches[ 1 ], 10 ) * 7; break;
      -						case "m" : case "M" :
      -							month += parseInt( matches[ 1 ], 10 );
      -							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
      -							break;
      -						case "y": case "Y" :
      -							year += parseInt( matches[ 1 ], 10 );
      -							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
      -							break;
      -					}
      -					matches = pattern.exec( offset );
      -				}
      -				return new Date( year, month, day );
      -			},
      -			newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) :
      -				( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );
      -
      -		newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate );
      -		if ( newDate ) {
      -			newDate.setHours( 0 );
      -			newDate.setMinutes( 0 );
      -			newDate.setSeconds( 0 );
      -			newDate.setMilliseconds( 0 );
      -		}
      -		return this._daylightSavingAdjust( newDate );
      -	},
      -
      -	/* Handle switch to/from daylight saving.
      -	 * Hours may be non-zero on daylight saving cut-over:
      -	 * > 12 when midnight changeover, but then cannot generate
      -	 * midnight datetime, so jump to 1AM, otherwise reset.
      -	 * @param  date  (Date) the date to check
      -	 * @return  (Date) the corrected date
      -	 */
      -	_daylightSavingAdjust: function( date ) {
      -		if ( !date ) {
      -			return null;
      -		}
      -		date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );
      -		return date;
      -	},
      -
      -	/* Set the date(s) directly. */
      -	_setDate: function( inst, date, noChange ) {
      -		var clear = !date,
      -			origMonth = inst.selectedMonth,
      -			origYear = inst.selectedYear,
      -			newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );
      -
      -		inst.selectedDay = inst.currentDay = newDate.getDate();
      -		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
      -		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
      -		if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {
      -			this._notifyChange( inst );
      -		}
      -		this._adjustInstDate( inst );
      -		if ( inst.input ) {
      -			inst.input.val( clear ? "" : this._formatDate( inst ) );
      -		}
      -	},
      -
      -	/* Retrieve the date(s) directly. */
      -	_getDate: function( inst ) {
      -		var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null :
      -			this._daylightSavingAdjust( new Date(
      -			inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
      -			return startDate;
      -	},
      -
      -	/* Attach the onxxx handlers.  These are declared statically so
      -	 * they work with static code transformers like Caja.
      -	 */
      -	_attachHandlers: function( inst ) {
      -		var stepMonths = this._get( inst, "stepMonths" ),
      -			id = "#" + inst.id.replace( /\\\\/g, "\\" );
      -		inst.dpDiv.find( "[data-handler]" ).map( function() {
      -			var handler = {
      -				prev: function() {
      -					$.datepicker._adjustDate( id, -stepMonths, "M" );
      -				},
      -				next: function() {
      -					$.datepicker._adjustDate( id, +stepMonths, "M" );
      -				},
      -				hide: function() {
      -					$.datepicker._hideDatepicker();
      -				},
      -				today: function() {
      -					$.datepicker._gotoToday( id );
      -				},
      -				selectDay: function() {
      -					$.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this );
      -					return false;
      -				},
      -				selectMonth: function() {
      -					$.datepicker._selectMonthYear( id, this, "M" );
      -					return false;
      -				},
      -				selectYear: function() {
      -					$.datepicker._selectMonthYear( id, this, "Y" );
      -					return false;
      -				}
      -			};
      -			$( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] );
      -		} );
      -	},
      -
      -	/* Generate the HTML for the current state of the date picker. */
      -	_generateHTML: function( inst ) {
      -		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
      -			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
      -			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
      -			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
      -			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
      -			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
      -			tempDate = new Date(),
      -			today = this._daylightSavingAdjust(
      -				new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time
      -			isRTL = this._get( inst, "isRTL" ),
      -			showButtonPanel = this._get( inst, "showButtonPanel" ),
      -			hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ),
      -			navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ),
      -			numMonths = this._getNumberOfMonths( inst ),
      -			showCurrentAtPos = this._get( inst, "showCurrentAtPos" ),
      -			stepMonths = this._get( inst, "stepMonths" ),
      -			isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),
      -			currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :
      -				new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),
      -			minDate = this._getMinMaxDate( inst, "min" ),
      -			maxDate = this._getMinMaxDate( inst, "max" ),
      -			drawMonth = inst.drawMonth - showCurrentAtPos,
      -			drawYear = inst.drawYear;
      -
      -		if ( drawMonth < 0 ) {
      -			drawMonth += 12;
      -			drawYear--;
      -		}
      -		if ( maxDate ) {
      -			maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),
      -				maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );
      -			maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );
      -			while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {
      -				drawMonth--;
      -				if ( drawMonth < 0 ) {
      -					drawMonth = 11;
      -					drawYear--;
      -				}
      -			}
      -		}
      -		inst.drawMonth = drawMonth;
      -		inst.drawYear = drawYear;
      -
      -		prevText = this._get( inst, "prevText" );
      -		prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,
      -			this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
      -			this._getFormatConfig( inst ) ) );
      -
      -		prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
      -			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
      -			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
      -			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );
      -
      -		nextText = this._get( inst, "nextText" );
      -		nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
      -			this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
      -			this._getFormatConfig( inst ) ) );
      -
      -		next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
      -			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
      -			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
      -			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );
      -
      -		currentText = this._get( inst, "currentText" );
      -		gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
      -		currentText = ( !navigationAsDateFormat ? currentText :
      -			this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
      -
      -		controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
      -			this._get( inst, "closeText" ) + "</button>" : "" );
      -
      -		buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
      -			( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
      -			">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";
      -
      -		firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
      -		firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
      -
      -		showWeek = this._get( inst, "showWeek" );
      -		dayNames = this._get( inst, "dayNames" );
      -		dayNamesMin = this._get( inst, "dayNamesMin" );
      -		monthNames = this._get( inst, "monthNames" );
      -		monthNamesShort = this._get( inst, "monthNamesShort" );
      -		beforeShowDay = this._get( inst, "beforeShowDay" );
      -		showOtherMonths = this._get( inst, "showOtherMonths" );
      -		selectOtherMonths = this._get( inst, "selectOtherMonths" );
      -		defaultDate = this._getDefaultDate( inst );
      -		html = "";
      -
      -		for ( row = 0; row < numMonths[ 0 ]; row++ ) {
      -			group = "";
      -			this.maxRows = 4;
      -			for ( col = 0; col < numMonths[ 1 ]; col++ ) {
      -				selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );
      -				cornerClass = " ui-corner-all";
      -				calender = "";
      -				if ( isMultiMonth ) {
      -					calender += "<div class='ui-datepicker-group";
      -					if ( numMonths[ 1 ] > 1 ) {
      -						switch ( col ) {
      -							case 0: calender += " ui-datepicker-group-first";
      -								cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break;
      -							case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last";
      -								cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break;
      -							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
      -						}
      -					}
      -					calender += "'>";
      -				}
      -				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
      -					( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) +
      -					( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) +
      -					this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,
      -					row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers
      -					"</div><table class='ui-datepicker-calendar'><thead>" +
      -					"<tr>";
      -				thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" );
      -				for ( dow = 0; dow < 7; dow++ ) { // days of the week
      -					day = ( dow + firstDay ) % 7;
      -					thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" +
      -						"<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
      -				}
      -				calender += thead + "</tr></thead><tbody>";
      -				daysInMonth = this._getDaysInMonth( drawYear, drawMonth );
      -				if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {
      -					inst.selectedDay = Math.min( inst.selectedDay, daysInMonth );
      -				}
      -				leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;
      -				curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate
      -				numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)
      -				this.maxRows = numRows;
      -				printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );
      -				for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows
      -					calender += "<tr>";
      -					tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
      -						this._get( inst, "calculateWeek" )( printDate ) + "</td>" );
      -					for ( dow = 0; dow < 7; dow++ ) { // create date picker days
      -						daySettings = ( beforeShowDay ?
      -							beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] );
      -						otherMonth = ( printDate.getMonth() !== drawMonth );
      -						unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||
      -							( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );
      -						tbody += "<td class='" +
      -							( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends
      -							( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months
      -							( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key
      -							( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?
      -
      -							// or defaultDate is current printedDate and defaultDate is selectedDate
      -							" " + this._dayOverClass : "" ) + // highlight selected day
      -							( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) +  // highlight unselectable days
      -							( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates
      -							( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day
      -							( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different)
      -							( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "&#39;" ) + "'" : "" ) + // cell title
      -							( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions
      -							( otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
      -							( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
      -							( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
      -							( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
      -							( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
      -							"' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
      -						printDate.setDate( printDate.getDate() + 1 );
      -						printDate = this._daylightSavingAdjust( printDate );
      -					}
      -					calender += tbody + "</tr>";
      -				}
      -				drawMonth++;
      -				if ( drawMonth > 11 ) {
      -					drawMonth = 0;
      -					drawYear++;
      -				}
      -				calender += "</tbody></table>" + ( isMultiMonth ? "</div>" +
      -							( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" );
      -				group += calender;
      -			}
      -			html += group;
      -		}
      -		html += buttonPanel;
      -		inst._keyEvent = false;
      -		return html;
      -	},
      -
      -	/* Generate the month and year header. */
      -	_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,
      -			secondary, monthNames, monthNamesShort ) {
      -
      -		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
      -			changeMonth = this._get( inst, "changeMonth" ),
      -			changeYear = this._get( inst, "changeYear" ),
      -			showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
      -			html = "<div class='ui-datepicker-title'>",
      -			monthHtml = "";
      -
      -		// Month selection
      -		if ( secondary || !changeMonth ) {
      -			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
      -		} else {
      -			inMinYear = ( minDate && minDate.getFullYear() === drawYear );
      -			inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
      -			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
      -			for ( month = 0; month < 12; month++ ) {
      -				if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
      -					monthHtml += "<option value='" + month + "'" +
      -						( month === drawMonth ? " selected='selected'" : "" ) +
      -						">" + monthNamesShort[ month ] + "</option>";
      -				}
      -			}
      -			monthHtml += "</select>";
      -		}
      -
      -		if ( !showMonthAfterYear ) {
      -			html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" );
      -		}
      -
      -		// Year selection
      -		if ( !inst.yearshtml ) {
      -			inst.yearshtml = "";
      -			if ( secondary || !changeYear ) {
      -				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
      -			} else {
      -
      -				// determine range of years to display
      -				years = this._get( inst, "yearRange" ).split( ":" );
      -				thisYear = new Date().getFullYear();
      -				determineYear = function( value ) {
      -					var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
      -						( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) :
      -						parseInt( value, 10 ) ) );
      -					return ( isNaN( year ) ? thisYear : year );
      -				};
      -				year = determineYear( years[ 0 ] );
      -				endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
      -				year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
      -				endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
      -				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
      -				for ( ; year <= endYear; year++ ) {
      -					inst.yearshtml += "<option value='" + year + "'" +
      -						( year === drawYear ? " selected='selected'" : "" ) +
      -						">" + year + "</option>";
      -				}
      -				inst.yearshtml += "</select>";
      -
      -				html += inst.yearshtml;
      -				inst.yearshtml = null;
      -			}
      -		}
      -
      -		html += this._get( inst, "yearSuffix" );
      -		if ( showMonthAfterYear ) {
      -			html += ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" ) + monthHtml;
      -		}
      -		html += "</div>"; // Close datepicker_header
      -		return html;
      -	},
      -
      -	/* Adjust one of the date sub-fields. */
      -	_adjustInstDate: function( inst, offset, period ) {
      -		var year = inst.selectedYear + ( period === "Y" ? offset : 0 ),
      -			month = inst.selectedMonth + ( period === "M" ? offset : 0 ),
      -			day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ),
      -			date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );
      -
      -		inst.selectedDay = date.getDate();
      -		inst.drawMonth = inst.selectedMonth = date.getMonth();
      -		inst.drawYear = inst.selectedYear = date.getFullYear();
      -		if ( period === "M" || period === "Y" ) {
      -			this._notifyChange( inst );
      -		}
      -	},
      -
      -	/* Ensure a date is within any min/max bounds. */
      -	_restrictMinMax: function( inst, date ) {
      -		var minDate = this._getMinMaxDate( inst, "min" ),
      -			maxDate = this._getMinMaxDate( inst, "max" ),
      -			newDate = ( minDate && date < minDate ? minDate : date );
      -		return ( maxDate && newDate > maxDate ? maxDate : newDate );
      -	},
      -
      -	/* Notify change of month/year. */
      -	_notifyChange: function( inst ) {
      -		var onChange = this._get( inst, "onChangeMonthYear" );
      -		if ( onChange ) {
      -			onChange.apply( ( inst.input ? inst.input[ 0 ] : null ),
      -				[ inst.selectedYear, inst.selectedMonth + 1, inst ] );
      -		}
      -	},
      -
      -	/* Determine the number of months to show. */
      -	_getNumberOfMonths: function( inst ) {
      -		var numMonths = this._get( inst, "numberOfMonths" );
      -		return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) );
      -	},
      -
      -	/* Determine the current maximum date - ensure no time components are set. */
      -	_getMinMaxDate: function( inst, minMax ) {
      -		return this._determineDate( inst, this._get( inst, minMax + "Date" ), null );
      -	},
      -
      -	/* Find the number of days in a given month. */
      -	_getDaysInMonth: function( year, month ) {
      -		return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();
      -	},
      -
      -	/* Find the day of the week of the first of a month. */
      -	_getFirstDayOfMonth: function( year, month ) {
      -		return new Date( year, month, 1 ).getDay();
      -	},
      -
      -	/* Determines if we should allow a "next/prev" month display change. */
      -	_canAdjustMonth: function( inst, offset, curYear, curMonth ) {
      -		var numMonths = this._getNumberOfMonths( inst ),
      -			date = this._daylightSavingAdjust( new Date( curYear,
      -			curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );
      -
      -		if ( offset < 0 ) {
      -			date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );
      -		}
      -		return this._isInRange( inst, date );
      -	},
      -
      -	/* Is the given date in the accepted range? */
      -	_isInRange: function( inst, date ) {
      -		var yearSplit, currentYear,
      -			minDate = this._getMinMaxDate( inst, "min" ),
      -			maxDate = this._getMinMaxDate( inst, "max" ),
      -			minYear = null,
      -			maxYear = null,
      -			years = this._get( inst, "yearRange" );
      -			if ( years ) {
      -				yearSplit = years.split( ":" );
      -				currentYear = new Date().getFullYear();
      -				minYear = parseInt( yearSplit[ 0 ], 10 );
      -				maxYear = parseInt( yearSplit[ 1 ], 10 );
      -				if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) {
      -					minYear += currentYear;
      -				}
      -				if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) {
      -					maxYear += currentYear;
      -				}
      -			}
      -
      -		return ( ( !minDate || date.getTime() >= minDate.getTime() ) &&
      -			( !maxDate || date.getTime() <= maxDate.getTime() ) &&
      -			( !minYear || date.getFullYear() >= minYear ) &&
      -			( !maxYear || date.getFullYear() <= maxYear ) );
      -	},
      -
      -	/* Provide the configuration settings for formatting/parsing. */
      -	_getFormatConfig: function( inst ) {
      -		var shortYearCutoff = this._get( inst, "shortYearCutoff" );
      -		shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff :
      -			new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );
      -		return { shortYearCutoff: shortYearCutoff,
      -			dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ),
      -			monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) };
      -	},
      -
      -	/* Format the given date for display. */
      -	_formatDate: function( inst, day, month, year ) {
      -		if ( !day ) {
      -			inst.currentDay = inst.selectedDay;
      -			inst.currentMonth = inst.selectedMonth;
      -			inst.currentYear = inst.selectedYear;
      -		}
      -		var date = ( day ? ( typeof day === "object" ? day :
      -			this._daylightSavingAdjust( new Date( year, month, day ) ) ) :
      -			this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
      -		return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) );
      -	}
      -} );
      -
      -/*
      - * Bind hover events for datepicker elements.
      - * Done via delegate so the binding only occurs once in the lifetime of the parent div.
      - * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
      - */
      -function datepicker_bindHover( dpDiv ) {
      -	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
      -	return dpDiv.on( "mouseout", selector, function() {
      -			$( this ).removeClass( "ui-state-hover" );
      -			if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
      -				$( this ).removeClass( "ui-datepicker-prev-hover" );
      -			}
      -			if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
      -				$( this ).removeClass( "ui-datepicker-next-hover" );
      -			}
      -		} )
      -		.on( "mouseover", selector, datepicker_handleMouseover );
      -}
      -
      -function datepicker_handleMouseover() {
      -	if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {
      -		$( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" );
      -		$( this ).addClass( "ui-state-hover" );
      -		if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
      -			$( this ).addClass( "ui-datepicker-prev-hover" );
      -		}
      -		if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
      -			$( this ).addClass( "ui-datepicker-next-hover" );
      -		}
      -	}
      -}
      -
      -/* jQuery extend now ignores nulls! */
      -function datepicker_extendRemove( target, props ) {
      -	$.extend( target, props );
      -	for ( var name in props ) {
      -		if ( props[ name ] == null ) {
      -			target[ name ] = props[ name ];
      -		}
      -	}
      -	return target;
      -}
      -
      -/* Invoke the datepicker functionality.
      -   @param  options  string - a command, optionally followed by additional parameters or
      -					Object - settings for attaching new datepicker functionality
      -   @return  jQuery object */
      -$.fn.datepicker = function( options ) {
      -
      -	/* Verify an empty collection wasn't passed - Fixes #6976 */
      -	if ( !this.length ) {
      -		return this;
      -	}
      -
      -	/* Initialise the date picker. */
      -	if ( !$.datepicker.initialized ) {
      -		$( document ).on( "mousedown", $.datepicker._checkExternalClick );
      -		$.datepicker.initialized = true;
      -	}
      -
      -	/* Append datepicker main container to body if not exist. */
      -	if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) {
      -		$( "body" ).append( $.datepicker.dpDiv );
      -	}
      -
      -	var otherArgs = Array.prototype.slice.call( arguments, 1 );
      -	if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) {
      -		return $.datepicker[ "_" + options + "Datepicker" ].
      -			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
      -	}
      -	if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) {
      -		return $.datepicker[ "_" + options + "Datepicker" ].
      -			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
      -	}
      -	return this.each( function() {
      -		typeof options === "string" ?
      -			$.datepicker[ "_" + options + "Datepicker" ].
      -				apply( $.datepicker, [ this ].concat( otherArgs ) ) :
      -			$.datepicker._attachDatepicker( this, options );
      -	} );
      -};
      -
      -$.datepicker = new Datepicker(); // singleton instance
      -$.datepicker.initialized = false;
      -$.datepicker.uuid = new Date().getTime();
      -$.datepicker.version = "1.12.1";
      -
      -var widgetsDatepicker = $.datepicker;
      -
      -
      -
      -
      -// This file is deprecated
      -var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
      -
      -/*!
      - * jQuery UI Mouse 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Mouse
      -//>>group: Widgets
      -//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.
      -//>>docs: http://api.jqueryui.com/mouse/
      -
      -
      -
      -var mouseHandled = false;
      -$( document ).on( "mouseup", function() {
      -	mouseHandled = false;
      -} );
      -
      -var widgetsMouse = $.widget( "ui.mouse", {
      -	version: "1.12.1",
      -	options: {
      -		cancel: "input, textarea, button, select, option",
      -		distance: 1,
      -		delay: 0
      -	},
      -	_mouseInit: function() {
      -		var that = this;
      -
      -		this.element
      -			.on( "mousedown." + this.widgetName, function( event ) {
      -				return that._mouseDown( event );
      -			} )
      -			.on( "click." + this.widgetName, function( event ) {
      -				if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) {
      -					$.removeData( event.target, that.widgetName + ".preventClickEvent" );
      -					event.stopImmediatePropagation();
      -					return false;
      -				}
      -			} );
      -
      -		this.started = false;
      -	},
      -
      -	// TODO: make sure destroying one instance of mouse doesn't mess with
      -	// other instances of mouse
      -	_mouseDestroy: function() {
      -		this.element.off( "." + this.widgetName );
      -		if ( this._mouseMoveDelegate ) {
      -			this.document
      -				.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
      -				.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
      -		}
      -	},
      -
      -	_mouseDown: function( event ) {
      -
      -		// don't let more than one widget handle mouseStart
      -		if ( mouseHandled ) {
      -			return;
      -		}
      -
      -		this._mouseMoved = false;
      -
      -		// We may have missed mouseup (out of window)
      -		( this._mouseStarted && this._mouseUp( event ) );
      -
      -		this._mouseDownEvent = event;
      -
      -		var that = this,
      -			btnIsLeft = ( event.which === 1 ),
      -
      -			// event.target.nodeName works around a bug in IE 8 with
      -			// disabled inputs (#7620)
      -			elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ?
      -				$( event.target ).closest( this.options.cancel ).length : false );
      -		if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {
      -			return true;
      -		}
      -
      -		this.mouseDelayMet = !this.options.delay;
      -		if ( !this.mouseDelayMet ) {
      -			this._mouseDelayTimer = setTimeout( function() {
      -				that.mouseDelayMet = true;
      -			}, this.options.delay );
      -		}
      -
      -		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
      -			this._mouseStarted = ( this._mouseStart( event ) !== false );
      -			if ( !this._mouseStarted ) {
      -				event.preventDefault();
      -				return true;
      -			}
      -		}
      -
      -		// Click event may never have fired (Gecko & Opera)
      -		if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) {
      -			$.removeData( event.target, this.widgetName + ".preventClickEvent" );
      -		}
      -
      -		// These delegates are required to keep context
      -		this._mouseMoveDelegate = function( event ) {
      -			return that._mouseMove( event );
      -		};
      -		this._mouseUpDelegate = function( event ) {
      -			return that._mouseUp( event );
      -		};
      -
      -		this.document
      -			.on( "mousemove." + this.widgetName, this._mouseMoveDelegate )
      -			.on( "mouseup." + this.widgetName, this._mouseUpDelegate );
      -
      -		event.preventDefault();
      -
      -		mouseHandled = true;
      -		return true;
      -	},
      -
      -	_mouseMove: function( event ) {
      -
      -		// Only check for mouseups outside the document if you've moved inside the document
      -		// at least once. This prevents the firing of mouseup in the case of IE<9, which will
      -		// fire a mousemove event if content is placed under the cursor. See #7778
      -		// Support: IE <9
      -		if ( this._mouseMoved ) {
      -
      -			// IE mouseup check - mouseup happened when mouse was out of window
      -			if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&
      -					!event.button ) {
      -				return this._mouseUp( event );
      -
      -			// Iframe mouseup check - mouseup occurred in another document
      -			} else if ( !event.which ) {
      -
      -				// Support: Safari <=8 - 9
      -				// Safari sets which to 0 if you press any of the following keys
      -				// during a drag (#14461)
      -				if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
      -						event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
      -					this.ignoreMissingWhich = true;
      -				} else if ( !this.ignoreMissingWhich ) {
      -					return this._mouseUp( event );
      -				}
      -			}
      -		}
      -
      -		if ( event.which || event.button ) {
      -			this._mouseMoved = true;
      -		}
      -
      -		if ( this._mouseStarted ) {
      -			this._mouseDrag( event );
      -			return event.preventDefault();
      -		}
      -
      -		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
      -			this._mouseStarted =
      -				( this._mouseStart( this._mouseDownEvent, event ) !== false );
      -			( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );
      -		}
      -
      -		return !this._mouseStarted;
      -	},
      -
      -	_mouseUp: function( event ) {
      -		this.document
      -			.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
      -			.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
      -
      -		if ( this._mouseStarted ) {
      -			this._mouseStarted = false;
      -
      -			if ( event.target === this._mouseDownEvent.target ) {
      -				$.data( event.target, this.widgetName + ".preventClickEvent", true );
      -			}
      -
      -			this._mouseStop( event );
      -		}
      -
      -		if ( this._mouseDelayTimer ) {
      -			clearTimeout( this._mouseDelayTimer );
      -			delete this._mouseDelayTimer;
      -		}
      -
      -		this.ignoreMissingWhich = false;
      -		mouseHandled = false;
      -		event.preventDefault();
      -	},
      -
      -	_mouseDistanceMet: function( event ) {
      -		return ( Math.max(
      -				Math.abs( this._mouseDownEvent.pageX - event.pageX ),
      -				Math.abs( this._mouseDownEvent.pageY - event.pageY )
      -			) >= this.options.distance
      -		);
      -	},
      -
      -	_mouseDelayMet: function( /* event */ ) {
      -		return this.mouseDelayMet;
      -	},
      -
      -	// These are placeholder methods, to be overriden by extending plugin
      -	_mouseStart: function( /* event */ ) {},
      -	_mouseDrag: function( /* event */ ) {},
      -	_mouseStop: function( /* event */ ) {},
      -	_mouseCapture: function( /* event */ ) { return true; }
      -} );
      -
      -
      -
      -
      -// $.ui.plugin is deprecated. Use $.widget() extensions instead.
      -var plugin = $.ui.plugin = {
      -	add: function( module, option, set ) {
      -		var i,
      -			proto = $.ui[ module ].prototype;
      -		for ( i in set ) {
      -			proto.plugins[ i ] = proto.plugins[ i ] || [];
      -			proto.plugins[ i ].push( [ option, set[ i ] ] );
      -		}
      -	},
      -	call: function( instance, name, args, allowDisconnected ) {
      -		var i,
      -			set = instance.plugins[ name ];
      -
      -		if ( !set ) {
      -			return;
      -		}
      -
      -		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
      -				instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
      -			return;
      -		}
      -
      -		for ( i = 0; i < set.length; i++ ) {
      -			if ( instance.options[ set[ i ][ 0 ] ] ) {
      -				set[ i ][ 1 ].apply( instance.element, args );
      -			}
      -		}
      -	}
      -};
      -
      -
      -
      -var safeBlur = $.ui.safeBlur = function( element ) {
      -
      -	// Support: IE9 - 10 only
      -	// If the <body> is blurred, IE will switch windows, see #9420
      -	if ( element && element.nodeName.toLowerCase() !== "body" ) {
      -		$( element ).trigger( "blur" );
      -	}
      -};
      -
      -
      -/*!
      - * jQuery UI Draggable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Draggable
      -//>>group: Interactions
      -//>>description: Enables dragging functionality for any element.
      -//>>docs: http://api.jqueryui.com/draggable/
      -//>>demos: http://jqueryui.com/draggable/
      -//>>css.structure: ../../themes/base/draggable.css
      -
      -
      -
      -$.widget( "ui.draggable", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "drag",
      -	options: {
      -		addClasses: true,
      -		appendTo: "parent",
      -		axis: false,
      -		connectToSortable: false,
      -		containment: false,
      -		cursor: "auto",
      -		cursorAt: false,
      -		grid: false,
      -		handle: false,
      -		helper: "original",
      -		iframeFix: false,
      -		opacity: false,
      -		refreshPositions: false,
      -		revert: false,
      -		revertDuration: 500,
      -		scope: "default",
      -		scroll: true,
      -		scrollSensitivity: 20,
      -		scrollSpeed: 20,
      -		snap: false,
      -		snapMode: "both",
      -		snapTolerance: 20,
      -		stack: false,
      -		zIndex: false,
      -
      -		// Callbacks
      -		drag: null,
      -		start: null,
      -		stop: null
      -	},
      -	_create: function() {
      -
      -		if ( this.options.helper === "original" ) {
      -			this._setPositionRelative();
      -		}
      -		if ( this.options.addClasses ) {
      -			this._addClass( "ui-draggable" );
      -		}
      -		this._setHandleClassName();
      -
      -		this._mouseInit();
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -		if ( key === "handle" ) {
      -			this._removeHandleClassName();
      -			this._setHandleClassName();
      -		}
      -	},
      -
      -	_destroy: function() {
      -		if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
      -			this.destroyOnClear = true;
      -			return;
      -		}
      -		this._removeHandleClassName();
      -		this._mouseDestroy();
      -	},
      -
      -	_mouseCapture: function( event ) {
      -		var o = this.options;
      -
      -		// Among others, prevent a drag on a resizable-handle
      -		if ( this.helper || o.disabled ||
      -				$( event.target ).closest( ".ui-resizable-handle" ).length > 0 ) {
      -			return false;
      -		}
      -
      -		//Quit if we're not on a valid handle
      -		this.handle = this._getHandle( event );
      -		if ( !this.handle ) {
      -			return false;
      -		}
      -
      -		this._blurActiveElement( event );
      -
      -		this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
      -
      -		return true;
      -
      -	},
      -
      -	_blockFrames: function( selector ) {
      -		this.iframeBlocks = this.document.find( selector ).map( function() {
      -			var iframe = $( this );
      -
      -			return $( "<div>" )
      -				.css( "position", "absolute" )
      -				.appendTo( iframe.parent() )
      -				.outerWidth( iframe.outerWidth() )
      -				.outerHeight( iframe.outerHeight() )
      -				.offset( iframe.offset() )[ 0 ];
      -		} );
      -	},
      -
      -	_unblockFrames: function() {
      -		if ( this.iframeBlocks ) {
      -			this.iframeBlocks.remove();
      -			delete this.iframeBlocks;
      -		}
      -	},
      -
      -	_blurActiveElement: function( event ) {
      -		var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
      -			target = $( event.target );
      -
      -		// Don't blur if the event occurred on an element that is within
      -		// the currently focused element
      -		// See #10527, #12472
      -		if ( target.closest( activeElement ).length ) {
      -			return;
      -		}
      -
      -		// Blur any element that currently has focus, see #4261
      -		$.ui.safeBlur( activeElement );
      -	},
      -
      -	_mouseStart: function( event ) {
      -
      -		var o = this.options;
      -
      -		//Create and append the visible helper
      -		this.helper = this._createHelper( event );
      -
      -		this._addClass( this.helper, "ui-draggable-dragging" );
      -
      -		//Cache the helper size
      -		this._cacheHelperProportions();
      -
      -		//If ddmanager is used for droppables, set the global draggable
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.current = this;
      -		}
      -
      -		/*
      -		 * - Position generation -
      -		 * This block generates everything position related - it's the core of draggables.
      -		 */
      -
      -		//Cache the margins of the original element
      -		this._cacheMargins();
      -
      -		//Store the helper's css position
      -		this.cssPosition = this.helper.css( "position" );
      -		this.scrollParent = this.helper.scrollParent( true );
      -		this.offsetParent = this.helper.offsetParent();
      -		this.hasFixedAncestor = this.helper.parents().filter( function() {
      -				return $( this ).css( "position" ) === "fixed";
      -			} ).length > 0;
      -
      -		//The element's absolute position on the page minus margins
      -		this.positionAbs = this.element.offset();
      -		this._refreshOffsets( event );
      -
      -		//Generate the original position
      -		this.originalPosition = this.position = this._generatePosition( event, false );
      -		this.originalPageX = event.pageX;
      -		this.originalPageY = event.pageY;
      -
      -		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
      -		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
      -
      -		//Set a containment if given in the options
      -		this._setContainment();
      -
      -		//Trigger event + callbacks
      -		if ( this._trigger( "start", event ) === false ) {
      -			this._clear();
      -			return false;
      -		}
      -
      -		//Recache the helper size
      -		this._cacheHelperProportions();
      -
      -		//Prepare the droppable offsets
      -		if ( $.ui.ddmanager && !o.dropBehaviour ) {
      -			$.ui.ddmanager.prepareOffsets( this, event );
      -		}
      -
      -		// Execute the drag once - this causes the helper not to be visible before getting its
      -		// correct position
      -		this._mouseDrag( event, true );
      -
      -		// If the ddmanager is used for droppables, inform the manager that dragging has started
      -		// (see #5003)
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.dragStart( this, event );
      -		}
      -
      -		return true;
      -	},
      -
      -	_refreshOffsets: function( event ) {
      -		this.offset = {
      -			top: this.positionAbs.top - this.margins.top,
      -			left: this.positionAbs.left - this.margins.left,
      -			scroll: false,
      -			parent: this._getParentOffset(),
      -			relative: this._getRelativeOffset()
      -		};
      -
      -		this.offset.click = {
      -			left: event.pageX - this.offset.left,
      -			top: event.pageY - this.offset.top
      -		};
      -	},
      -
      -	_mouseDrag: function( event, noPropagation ) {
      -
      -		// reset any necessary cached properties (see #5009)
      -		if ( this.hasFixedAncestor ) {
      -			this.offset.parent = this._getParentOffset();
      -		}
      -
      -		//Compute the helpers position
      -		this.position = this._generatePosition( event, true );
      -		this.positionAbs = this._convertPositionTo( "absolute" );
      -
      -		//Call plugins and callbacks and use the resulting position if something is returned
      -		if ( !noPropagation ) {
      -			var ui = this._uiHash();
      -			if ( this._trigger( "drag", event, ui ) === false ) {
      -				this._mouseUp( new $.Event( "mouseup", event ) );
      -				return false;
      -			}
      -			this.position = ui.position;
      -		}
      -
      -		this.helper[ 0 ].style.left = this.position.left + "px";
      -		this.helper[ 0 ].style.top = this.position.top + "px";
      -
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.drag( this, event );
      -		}
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -
      -		//If we are using droppables, inform the manager about the drop
      -		var that = this,
      -			dropped = false;
      -		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
      -			dropped = $.ui.ddmanager.drop( this, event );
      -		}
      -
      -		//if a drop comes from outside (a sortable)
      -		if ( this.dropped ) {
      -			dropped = this.dropped;
      -			this.dropped = false;
      -		}
      -
      -		if ( ( this.options.revert === "invalid" && !dropped ) ||
      -				( this.options.revert === "valid" && dropped ) ||
      -				this.options.revert === true || ( $.isFunction( this.options.revert ) &&
      -				this.options.revert.call( this.element, dropped ) )
      -		) {
      -			$( this.helper ).animate(
      -				this.originalPosition,
      -				parseInt( this.options.revertDuration, 10 ),
      -				function() {
      -					if ( that._trigger( "stop", event ) !== false ) {
      -						that._clear();
      -					}
      -				}
      -			);
      -		} else {
      -			if ( this._trigger( "stop", event ) !== false ) {
      -				this._clear();
      -			}
      -		}
      -
      -		return false;
      -	},
      -
      -	_mouseUp: function( event ) {
      -		this._unblockFrames();
      -
      -		// If the ddmanager is used for droppables, inform the manager that dragging has stopped
      -		// (see #5003)
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.dragStop( this, event );
      -		}
      -
      -		// Only need to focus if the event occurred on the draggable itself, see #10527
      -		if ( this.handleElement.is( event.target ) ) {
      -
      -			// The interaction is over; whether or not the click resulted in a drag,
      -			// focus the element
      -			this.element.trigger( "focus" );
      -		}
      -
      -		return $.ui.mouse.prototype._mouseUp.call( this, event );
      -	},
      -
      -	cancel: function() {
      -
      -		if ( this.helper.is( ".ui-draggable-dragging" ) ) {
      -			this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) );
      -		} else {
      -			this._clear();
      -		}
      -
      -		return this;
      -
      -	},
      -
      -	_getHandle: function( event ) {
      -		return this.options.handle ?
      -			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
      -			true;
      -	},
      -
      -	_setHandleClassName: function() {
      -		this.handleElement = this.options.handle ?
      -			this.element.find( this.options.handle ) : this.element;
      -		this._addClass( this.handleElement, "ui-draggable-handle" );
      -	},
      -
      -	_removeHandleClassName: function() {
      -		this._removeClass( this.handleElement, "ui-draggable-handle" );
      -	},
      -
      -	_createHelper: function( event ) {
      -
      -		var o = this.options,
      -			helperIsFunction = $.isFunction( o.helper ),
      -			helper = helperIsFunction ?
      -				$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
      -				( o.helper === "clone" ?
      -					this.element.clone().removeAttr( "id" ) :
      -					this.element );
      -
      -		if ( !helper.parents( "body" ).length ) {
      -			helper.appendTo( ( o.appendTo === "parent" ?
      -				this.element[ 0 ].parentNode :
      -				o.appendTo ) );
      -		}
      -
      -		// Http://bugs.jqueryui.com/ticket/9446
      -		// a helper function can return the original element
      -		// which wouldn't have been set to relative in _create
      -		if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
      -			this._setPositionRelative();
      -		}
      -
      -		if ( helper[ 0 ] !== this.element[ 0 ] &&
      -				!( /(fixed|absolute)/ ).test( helper.css( "position" ) ) ) {
      -			helper.css( "position", "absolute" );
      -		}
      -
      -		return helper;
      -
      -	},
      -
      -	_setPositionRelative: function() {
      -		if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
      -			this.element[ 0 ].style.position = "relative";
      -		}
      -	},
      -
      -	_adjustOffsetFromHelper: function( obj ) {
      -		if ( typeof obj === "string" ) {
      -			obj = obj.split( " " );
      -		}
      -		if ( $.isArray( obj ) ) {
      -			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
      -		}
      -		if ( "left" in obj ) {
      -			this.offset.click.left = obj.left + this.margins.left;
      -		}
      -		if ( "right" in obj ) {
      -			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
      -		}
      -		if ( "top" in obj ) {
      -			this.offset.click.top = obj.top + this.margins.top;
      -		}
      -		if ( "bottom" in obj ) {
      -			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
      -		}
      -	},
      -
      -	_isRootNode: function( element ) {
      -		return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
      -	},
      -
      -	_getParentOffset: function() {
      -
      -		//Get the offsetParent and cache its position
      -		var po = this.offsetParent.offset(),
      -			document = this.document[ 0 ];
      -
      -		// This is a special case where we need to modify a offset calculated on start, since the
      -		// following happened:
      -		// 1. The position of the helper is absolute, so it's position is calculated based on the
      -		// next positioned parent
      -		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
      -		// the document, which means that the scroll is included in the initial calculation of the
      -		// offset of the parent, and never recalculated upon drag
      -		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== document &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
      -			po.left += this.scrollParent.scrollLeft();
      -			po.top += this.scrollParent.scrollTop();
      -		}
      -
      -		if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
      -			po = { top: 0, left: 0 };
      -		}
      -
      -		return {
      -			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
      -			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
      -		};
      -
      -	},
      -
      -	_getRelativeOffset: function() {
      -		if ( this.cssPosition !== "relative" ) {
      -			return { top: 0, left: 0 };
      -		}
      -
      -		var p = this.element.position(),
      -			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
      -
      -		return {
      -			top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
      -				( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
      -			left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
      -				( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
      -		};
      -
      -	},
      -
      -	_cacheMargins: function() {
      -		this.margins = {
      -			left: ( parseInt( this.element.css( "marginLeft" ), 10 ) || 0 ),
      -			top: ( parseInt( this.element.css( "marginTop" ), 10 ) || 0 ),
      -			right: ( parseInt( this.element.css( "marginRight" ), 10 ) || 0 ),
      -			bottom: ( parseInt( this.element.css( "marginBottom" ), 10 ) || 0 )
      -		};
      -	},
      -
      -	_cacheHelperProportions: function() {
      -		this.helperProportions = {
      -			width: this.helper.outerWidth(),
      -			height: this.helper.outerHeight()
      -		};
      -	},
      -
      -	_setContainment: function() {
      -
      -		var isUserScrollable, c, ce,
      -			o = this.options,
      -			document = this.document[ 0 ];
      -
      -		this.relativeContainer = null;
      -
      -		if ( !o.containment ) {
      -			this.containment = null;
      -			return;
      -		}
      -
      -		if ( o.containment === "window" ) {
      -			this.containment = [
      -				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
      -				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
      -				$( window ).scrollLeft() + $( window ).width() -
      -					this.helperProportions.width - this.margins.left,
      -				$( window ).scrollTop() +
      -					( $( window ).height() || document.body.parentNode.scrollHeight ) -
      -					this.helperProportions.height - this.margins.top
      -			];
      -			return;
      -		}
      -
      -		if ( o.containment === "document" ) {
      -			this.containment = [
      -				0,
      -				0,
      -				$( document ).width() - this.helperProportions.width - this.margins.left,
      -				( $( document ).height() || document.body.parentNode.scrollHeight ) -
      -					this.helperProportions.height - this.margins.top
      -			];
      -			return;
      -		}
      -
      -		if ( o.containment.constructor === Array ) {
      -			this.containment = o.containment;
      -			return;
      -		}
      -
      -		if ( o.containment === "parent" ) {
      -			o.containment = this.helper[ 0 ].parentNode;
      -		}
      -
      -		c = $( o.containment );
      -		ce = c[ 0 ];
      -
      -		if ( !ce ) {
      -			return;
      -		}
      -
      -		isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
      -
      -		this.containment = [
      -			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) +
      -				( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
      -			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) +
      -				( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
      -			( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
      -				( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
      -				( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
      -				this.helperProportions.width -
      -				this.margins.left -
      -				this.margins.right,
      -			( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
      -				( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
      -				( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
      -				this.helperProportions.height -
      -				this.margins.top -
      -				this.margins.bottom
      -		];
      -		this.relativeContainer = c;
      -	},
      -
      -	_convertPositionTo: function( d, pos ) {
      -
      -		if ( !pos ) {
      -			pos = this.position;
      -		}
      -
      -		var mod = d === "absolute" ? 1 : -1,
      -			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pos.top	+
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top * mod -
      -				( ( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.top :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pos.left +
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left * mod	-
      -				( ( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.left :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )
      -			)
      -		};
      -
      -	},
      -
      -	_generatePosition: function( event, constrainPosition ) {
      -
      -		var containment, co, top, left,
      -			o = this.options,
      -			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
      -			pageX = event.pageX,
      -			pageY = event.pageY;
      -
      -		// Cache the scroll
      -		if ( !scrollIsRootNode || !this.offset.scroll ) {
      -			this.offset.scroll = {
      -				top: this.scrollParent.scrollTop(),
      -				left: this.scrollParent.scrollLeft()
      -			};
      -		}
      -
      -		/*
      -		 * - Position constraining -
      -		 * Constrain the position to a mix of grid, containment.
      -		 */
      -
      -		// If we are not dragging yet, we won't check for options
      -		if ( constrainPosition ) {
      -			if ( this.containment ) {
      -				if ( this.relativeContainer ) {
      -					co = this.relativeContainer.offset();
      -					containment = [
      -						this.containment[ 0 ] + co.left,
      -						this.containment[ 1 ] + co.top,
      -						this.containment[ 2 ] + co.left,
      -						this.containment[ 3 ] + co.top
      -					];
      -				} else {
      -					containment = this.containment;
      -				}
      -
      -				if ( event.pageX - this.offset.click.left < containment[ 0 ] ) {
      -					pageX = containment[ 0 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top < containment[ 1 ] ) {
      -					pageY = containment[ 1 ] + this.offset.click.top;
      -				}
      -				if ( event.pageX - this.offset.click.left > containment[ 2 ] ) {
      -					pageX = containment[ 2 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top > containment[ 3 ] ) {
      -					pageY = containment[ 3 ] + this.offset.click.top;
      -				}
      -			}
      -
      -			if ( o.grid ) {
      -
      -				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid
      -				// argument errors in IE (see ticket #6950)
      -				top = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -
      -					this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;
      -				pageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||
      -					top - this.offset.click.top > containment[ 3 ] ) ?
      -						top :
      -						( ( top - this.offset.click.top >= containment[ 1 ] ) ?
      -							top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;
      -
      -				left = o.grid[ 0 ] ? this.originalPageX +
      -					Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :
      -					this.originalPageX;
      -				pageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||
      -					left - this.offset.click.left > containment[ 2 ] ) ?
      -						left :
      -						( ( left - this.offset.click.left >= containment[ 0 ] ) ?
      -							left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;
      -			}
      -
      -			if ( o.axis === "y" ) {
      -				pageX = this.originalPageX;
      -			}
      -
      -			if ( o.axis === "x" ) {
      -				pageY = this.originalPageY;
      -			}
      -		}
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pageY -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.top -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top +
      -				( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.top :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pageX -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.left -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left +
      -				( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.left :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
      -			)
      -		};
      -
      -	},
      -
      -	_clear: function() {
      -		this._removeClass( this.helper, "ui-draggable-dragging" );
      -		if ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {
      -			this.helper.remove();
      -		}
      -		this.helper = null;
      -		this.cancelHelperRemoval = false;
      -		if ( this.destroyOnClear ) {
      -			this.destroy();
      -		}
      -	},
      -
      -	// From now on bulk stuff - mainly helpers
      -
      -	_trigger: function( type, event, ui ) {
      -		ui = ui || this._uiHash();
      -		$.ui.plugin.call( this, type, [ event, ui, this ], true );
      -
      -		// Absolute position and offset (see #6884 ) have to be recalculated after plugins
      -		if ( /^(drag|start|stop)/.test( type ) ) {
      -			this.positionAbs = this._convertPositionTo( "absolute" );
      -			ui.offset = this.positionAbs;
      -		}
      -		return $.Widget.prototype._trigger.call( this, type, event, ui );
      -	},
      -
      -	plugins: {},
      -
      -	_uiHash: function() {
      -		return {
      -			helper: this.helper,
      -			position: this.position,
      -			originalPosition: this.originalPosition,
      -			offset: this.positionAbs
      -		};
      -	}
      -
      -} );
      -
      -$.ui.plugin.add( "draggable", "connectToSortable", {
      -	start: function( event, ui, draggable ) {
      -		var uiSortable = $.extend( {}, ui, {
      -			item: draggable.element
      -		} );
      -
      -		draggable.sortables = [];
      -		$( draggable.options.connectToSortable ).each( function() {
      -			var sortable = $( this ).sortable( "instance" );
      -
      -			if ( sortable && !sortable.options.disabled ) {
      -				draggable.sortables.push( sortable );
      -
      -				// RefreshPositions is called at drag start to refresh the containerCache
      -				// which is used in drag. This ensures it's initialized and synchronized
      -				// with any changes that might have happened on the page since initialization.
      -				sortable.refreshPositions();
      -				sortable._trigger( "activate", event, uiSortable );
      -			}
      -		} );
      -	},
      -	stop: function( event, ui, draggable ) {
      -		var uiSortable = $.extend( {}, ui, {
      -			item: draggable.element
      -		} );
      -
      -		draggable.cancelHelperRemoval = false;
      -
      -		$.each( draggable.sortables, function() {
      -			var sortable = this;
      -
      -			if ( sortable.isOver ) {
      -				sortable.isOver = 0;
      -
      -				// Allow this sortable to handle removing the helper
      -				draggable.cancelHelperRemoval = true;
      -				sortable.cancelHelperRemoval = false;
      -
      -				// Use _storedCSS To restore properties in the sortable,
      -				// as this also handles revert (#9675) since the draggable
      -				// may have modified them in unexpected ways (#8809)
      -				sortable._storedCSS = {
      -					position: sortable.placeholder.css( "position" ),
      -					top: sortable.placeholder.css( "top" ),
      -					left: sortable.placeholder.css( "left" )
      -				};
      -
      -				sortable._mouseStop( event );
      -
      -				// Once drag has ended, the sortable should return to using
      -				// its original helper, not the shared helper from draggable
      -				sortable.options.helper = sortable.options._helper;
      -			} else {
      -
      -				// Prevent this Sortable from removing the helper.
      -				// However, don't set the draggable to remove the helper
      -				// either as another connected Sortable may yet handle the removal.
      -				sortable.cancelHelperRemoval = true;
      -
      -				sortable._trigger( "deactivate", event, uiSortable );
      -			}
      -		} );
      -	},
      -	drag: function( event, ui, draggable ) {
      -		$.each( draggable.sortables, function() {
      -			var innermostIntersecting = false,
      -				sortable = this;
      -
      -			// Copy over variables that sortable's _intersectsWith uses
      -			sortable.positionAbs = draggable.positionAbs;
      -			sortable.helperProportions = draggable.helperProportions;
      -			sortable.offset.click = draggable.offset.click;
      -
      -			if ( sortable._intersectsWith( sortable.containerCache ) ) {
      -				innermostIntersecting = true;
      -
      -				$.each( draggable.sortables, function() {
      -
      -					// Copy over variables that sortable's _intersectsWith uses
      -					this.positionAbs = draggable.positionAbs;
      -					this.helperProportions = draggable.helperProportions;
      -					this.offset.click = draggable.offset.click;
      -
      -					if ( this !== sortable &&
      -							this._intersectsWith( this.containerCache ) &&
      -							$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
      -						innermostIntersecting = false;
      -					}
      -
      -					return innermostIntersecting;
      -				} );
      -			}
      -
      -			if ( innermostIntersecting ) {
      -
      -				// If it intersects, we use a little isOver variable and set it once,
      -				// so that the move-in stuff gets fired only once.
      -				if ( !sortable.isOver ) {
      -					sortable.isOver = 1;
      -
      -					// Store draggable's parent in case we need to reappend to it later.
      -					draggable._parent = ui.helper.parent();
      -
      -					sortable.currentItem = ui.helper
      -						.appendTo( sortable.element )
      -						.data( "ui-sortable-item", true );
      -
      -					// Store helper option to later restore it
      -					sortable.options._helper = sortable.options.helper;
      -
      -					sortable.options.helper = function() {
      -						return ui.helper[ 0 ];
      -					};
      -
      -					// Fire the start events of the sortable with our passed browser event,
      -					// and our own helper (so it doesn't create a new one)
      -					event.target = sortable.currentItem[ 0 ];
      -					sortable._mouseCapture( event, true );
      -					sortable._mouseStart( event, true, true );
      -
      -					// Because the browser event is way off the new appended portlet,
      -					// modify necessary variables to reflect the changes
      -					sortable.offset.click.top = draggable.offset.click.top;
      -					sortable.offset.click.left = draggable.offset.click.left;
      -					sortable.offset.parent.left -= draggable.offset.parent.left -
      -						sortable.offset.parent.left;
      -					sortable.offset.parent.top -= draggable.offset.parent.top -
      -						sortable.offset.parent.top;
      -
      -					draggable._trigger( "toSortable", event );
      -
      -					// Inform draggable that the helper is in a valid drop zone,
      -					// used solely in the revert option to handle "valid/invalid".
      -					draggable.dropped = sortable.element;
      -
      -					// Need to refreshPositions of all sortables in the case that
      -					// adding to one sortable changes the location of the other sortables (#9675)
      -					$.each( draggable.sortables, function() {
      -						this.refreshPositions();
      -					} );
      -
      -					// Hack so receive/update callbacks work (mostly)
      -					draggable.currentItem = draggable.element;
      -					sortable.fromOutside = draggable;
      -				}
      -
      -				if ( sortable.currentItem ) {
      -					sortable._mouseDrag( event );
      -
      -					// Copy the sortable's position because the draggable's can potentially reflect
      -					// a relative position, while sortable is always absolute, which the dragged
      -					// element has now become. (#8809)
      -					ui.position = sortable.position;
      -				}
      -			} else {
      -
      -				// If it doesn't intersect with the sortable, and it intersected before,
      -				// we fake the drag stop of the sortable, but make sure it doesn't remove
      -				// the helper by using cancelHelperRemoval.
      -				if ( sortable.isOver ) {
      -
      -					sortable.isOver = 0;
      -					sortable.cancelHelperRemoval = true;
      -
      -					// Calling sortable's mouseStop would trigger a revert,
      -					// so revert must be temporarily false until after mouseStop is called.
      -					sortable.options._revert = sortable.options.revert;
      -					sortable.options.revert = false;
      -
      -					sortable._trigger( "out", event, sortable._uiHash( sortable ) );
      -					sortable._mouseStop( event, true );
      -
      -					// Restore sortable behaviors that were modfied
      -					// when the draggable entered the sortable area (#9481)
      -					sortable.options.revert = sortable.options._revert;
      -					sortable.options.helper = sortable.options._helper;
      -
      -					if ( sortable.placeholder ) {
      -						sortable.placeholder.remove();
      -					}
      -
      -					// Restore and recalculate the draggable's offset considering the sortable
      -					// may have modified them in unexpected ways. (#8809, #10669)
      -					ui.helper.appendTo( draggable._parent );
      -					draggable._refreshOffsets( event );
      -					ui.position = draggable._generatePosition( event, true );
      -
      -					draggable._trigger( "fromSortable", event );
      -
      -					// Inform draggable that the helper is no longer in a valid drop zone
      -					draggable.dropped = false;
      -
      -					// Need to refreshPositions of all sortables just in case removing
      -					// from one sortable changes the location of other sortables (#9675)
      -					$.each( draggable.sortables, function() {
      -						this.refreshPositions();
      -					} );
      -				}
      -			}
      -		} );
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "cursor", {
      -	start: function( event, ui, instance ) {
      -		var t = $( "body" ),
      -			o = instance.options;
      -
      -		if ( t.css( "cursor" ) ) {
      -			o._cursor = t.css( "cursor" );
      -		}
      -		t.css( "cursor", o.cursor );
      -	},
      -	stop: function( event, ui, instance ) {
      -		var o = instance.options;
      -		if ( o._cursor ) {
      -			$( "body" ).css( "cursor", o._cursor );
      -		}
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "opacity", {
      -	start: function( event, ui, instance ) {
      -		var t = $( ui.helper ),
      -			o = instance.options;
      -		if ( t.css( "opacity" ) ) {
      -			o._opacity = t.css( "opacity" );
      -		}
      -		t.css( "opacity", o.opacity );
      -	},
      -	stop: function( event, ui, instance ) {
      -		var o = instance.options;
      -		if ( o._opacity ) {
      -			$( ui.helper ).css( "opacity", o._opacity );
      -		}
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "scroll", {
      -	start: function( event, ui, i ) {
      -		if ( !i.scrollParentNotHidden ) {
      -			i.scrollParentNotHidden = i.helper.scrollParent( false );
      -		}
      -
      -		if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&
      -				i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
      -			i.overflowOffset = i.scrollParentNotHidden.offset();
      -		}
      -	},
      -	drag: function( event, ui, i  ) {
      -
      -		var o = i.options,
      -			scrolled = false,
      -			scrollParent = i.scrollParentNotHidden[ 0 ],
      -			document = i.document[ 0 ];
      -
      -		if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
      -			if ( !o.axis || o.axis !== "x" ) {
      -				if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <
      -						o.scrollSensitivity ) {
      -					scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
      -				} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
      -					scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
      -				}
      -			}
      -
      -			if ( !o.axis || o.axis !== "y" ) {
      -				if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <
      -						o.scrollSensitivity ) {
      -					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
      -				} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
      -					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
      -				}
      -			}
      -
      -		} else {
      -
      -			if ( !o.axis || o.axis !== "x" ) {
      -				if ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );
      -				} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );
      -				}
      -			}
      -
      -			if ( !o.axis || o.axis !== "y" ) {
      -				if ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollLeft(
      -						$( document ).scrollLeft() - o.scrollSpeed
      -					);
      -				} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollLeft(
      -						$( document ).scrollLeft() + o.scrollSpeed
      -					);
      -				}
      -			}
      -
      -		}
      -
      -		if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
      -			$.ui.ddmanager.prepareOffsets( i, event );
      -		}
      -
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "snap", {
      -	start: function( event, ui, i ) {
      -
      -		var o = i.options;
      -
      -		i.snapElements = [];
      -
      -		$( o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap )
      -			.each( function() {
      -				var $t = $( this ),
      -					$o = $t.offset();
      -				if ( this !== i.element[ 0 ] ) {
      -					i.snapElements.push( {
      -						item: this,
      -						width: $t.outerWidth(), height: $t.outerHeight(),
      -						top: $o.top, left: $o.left
      -					} );
      -				}
      -			} );
      -
      -	},
      -	drag: function( event, ui, inst ) {
      -
      -		var ts, bs, ls, rs, l, r, t, b, i, first,
      -			o = inst.options,
      -			d = o.snapTolerance,
      -			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
      -			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
      -
      -		for ( i = inst.snapElements.length - 1; i >= 0; i-- ) {
      -
      -			l = inst.snapElements[ i ].left - inst.margins.left;
      -			r = l + inst.snapElements[ i ].width;
      -			t = inst.snapElements[ i ].top - inst.margins.top;
      -			b = t + inst.snapElements[ i ].height;
      -
      -			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||
      -					!$.contains( inst.snapElements[ i ].item.ownerDocument,
      -					inst.snapElements[ i ].item ) ) {
      -				if ( inst.snapElements[ i ].snapping ) {
      -					( inst.options.snap.release &&
      -						inst.options.snap.release.call(
      -							inst.element,
      -							event,
      -							$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
      -						) );
      -				}
      -				inst.snapElements[ i ].snapping = false;
      -				continue;
      -			}
      -
      -			if ( o.snapMode !== "inner" ) {
      -				ts = Math.abs( t - y2 ) <= d;
      -				bs = Math.abs( b - y1 ) <= d;
      -				ls = Math.abs( l - x2 ) <= d;
      -				rs = Math.abs( r - x1 ) <= d;
      -				if ( ts ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: t - inst.helperProportions.height,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( bs ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: b,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( ls ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: l - inst.helperProportions.width
      -					} ).left;
      -				}
      -				if ( rs ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: r
      -					} ).left;
      -				}
      -			}
      -
      -			first = ( ts || bs || ls || rs );
      -
      -			if ( o.snapMode !== "outer" ) {
      -				ts = Math.abs( t - y1 ) <= d;
      -				bs = Math.abs( b - y2 ) <= d;
      -				ls = Math.abs( l - x1 ) <= d;
      -				rs = Math.abs( r - x2 ) <= d;
      -				if ( ts ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: t,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( bs ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: b - inst.helperProportions.height,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( ls ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: l
      -					} ).left;
      -				}
      -				if ( rs ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: r - inst.helperProportions.width
      -					} ).left;
      -				}
      -			}
      -
      -			if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
      -				( inst.options.snap.snap &&
      -					inst.options.snap.snap.call(
      -						inst.element,
      -						event,
      -						$.extend( inst._uiHash(), {
      -							snapItem: inst.snapElements[ i ].item
      -						} ) ) );
      -			}
      -			inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
      -
      -		}
      -
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "stack", {
      -	start: function( event, ui, instance ) {
      -		var min,
      -			o = instance.options,
      -			group = $.makeArray( $( o.stack ) ).sort( function( a, b ) {
      -				return ( parseInt( $( a ).css( "zIndex" ), 10 ) || 0 ) -
      -					( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
      -			} );
      -
      -		if ( !group.length ) { return; }
      -
      -		min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
      -		$( group ).each( function( i ) {
      -			$( this ).css( "zIndex", min + i );
      -		} );
      -		this.css( "zIndex", ( min + group.length ) );
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "zIndex", {
      -	start: function( event, ui, instance ) {
      -		var t = $( ui.helper ),
      -			o = instance.options;
      -
      -		if ( t.css( "zIndex" ) ) {
      -			o._zIndex = t.css( "zIndex" );
      -		}
      -		t.css( "zIndex", o.zIndex );
      -	},
      -	stop: function( event, ui, instance ) {
      -		var o = instance.options;
      -
      -		if ( o._zIndex ) {
      -			$( ui.helper ).css( "zIndex", o._zIndex );
      -		}
      -	}
      -} );
      -
      -var widgetsDraggable = $.ui.draggable;
      -
      -
      -/*!
      - * jQuery UI Resizable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Resizable
      -//>>group: Interactions
      -//>>description: Enables resize functionality for any element.
      -//>>docs: http://api.jqueryui.com/resizable/
      -//>>demos: http://jqueryui.com/resizable/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/resizable.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.widget( "ui.resizable", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "resize",
      -	options: {
      -		alsoResize: false,
      -		animate: false,
      -		animateDuration: "slow",
      -		animateEasing: "swing",
      -		aspectRatio: false,
      -		autoHide: false,
      -		classes: {
      -			"ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
      -		},
      -		containment: false,
      -		ghost: false,
      -		grid: false,
      -		handles: "e,s,se",
      -		helper: false,
      -		maxHeight: null,
      -		maxWidth: null,
      -		minHeight: 10,
      -		minWidth: 10,
      -
      -		// See #7960
      -		zIndex: 90,
      -
      -		// Callbacks
      -		resize: null,
      -		start: null,
      -		stop: null
      -	},
      -
      -	_num: function( value ) {
      -		return parseFloat( value ) || 0;
      -	},
      -
      -	_isNumber: function( value ) {
      -		return !isNaN( parseFloat( value ) );
      -	},
      -
      -	_hasScroll: function( el, a ) {
      -
      -		if ( $( el ).css( "overflow" ) === "hidden" ) {
      -			return false;
      -		}
      -
      -		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
      -			has = false;
      -
      -		if ( el[ scroll ] > 0 ) {
      -			return true;
      -		}
      -
      -		// TODO: determine which cases actually cause this to happen
      -		// if the element doesn't have the scroll set, see if it's possible to
      -		// set the scroll
      -		el[ scroll ] = 1;
      -		has = ( el[ scroll ] > 0 );
      -		el[ scroll ] = 0;
      -		return has;
      -	},
      -
      -	_create: function() {
      -
      -		var margins,
      -			o = this.options,
      -			that = this;
      -		this._addClass( "ui-resizable" );
      -
      -		$.extend( this, {
      -			_aspectRatio: !!( o.aspectRatio ),
      -			aspectRatio: o.aspectRatio,
      -			originalElement: this.element,
      -			_proportionallyResizeElements: [],
      -			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
      -		} );
      -
      -		// Wrap the element if it cannot hold child nodes
      -		if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
      -
      -			this.element.wrap(
      -				$( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( {
      -					position: this.element.css( "position" ),
      -					width: this.element.outerWidth(),
      -					height: this.element.outerHeight(),
      -					top: this.element.css( "top" ),
      -					left: this.element.css( "left" )
      -				} )
      -			);
      -
      -			this.element = this.element.parent().data(
      -				"ui-resizable", this.element.resizable( "instance" )
      -			);
      -
      -			this.elementIsWrapper = true;
      -
      -			margins = {
      -				marginTop: this.originalElement.css( "marginTop" ),
      -				marginRight: this.originalElement.css( "marginRight" ),
      -				marginBottom: this.originalElement.css( "marginBottom" ),
      -				marginLeft: this.originalElement.css( "marginLeft" )
      -			};
      -
      -			this.element.css( margins );
      -			this.originalElement.css( "margin", 0 );
      -
      -			// support: Safari
      -			// Prevent Safari textarea resize
      -			this.originalResizeStyle = this.originalElement.css( "resize" );
      -			this.originalElement.css( "resize", "none" );
      -
      -			this._proportionallyResizeElements.push( this.originalElement.css( {
      -				position: "static",
      -				zoom: 1,
      -				display: "block"
      -			} ) );
      -
      -			// Support: IE9
      -			// avoid IE jump (hard set the margin)
      -			this.originalElement.css( margins );
      -
      -			this._proportionallyResize();
      -		}
      -
      -		this._setupHandles();
      -
      -		if ( o.autoHide ) {
      -			$( this.element )
      -				.on( "mouseenter", function() {
      -					if ( o.disabled ) {
      -						return;
      -					}
      -					that._removeClass( "ui-resizable-autohide" );
      -					that._handles.show();
      -				} )
      -				.on( "mouseleave", function() {
      -					if ( o.disabled ) {
      -						return;
      -					}
      -					if ( !that.resizing ) {
      -						that._addClass( "ui-resizable-autohide" );
      -						that._handles.hide();
      -					}
      -				} );
      -		}
      -
      -		this._mouseInit();
      -	},
      -
      -	_destroy: function() {
      -
      -		this._mouseDestroy();
      -
      -		var wrapper,
      -			_destroy = function( exp ) {
      -				$( exp )
      -					.removeData( "resizable" )
      -					.removeData( "ui-resizable" )
      -					.off( ".resizable" )
      -					.find( ".ui-resizable-handle" )
      -						.remove();
      -			};
      -
      -		// TODO: Unwrap at same DOM position
      -		if ( this.elementIsWrapper ) {
      -			_destroy( this.element );
      -			wrapper = this.element;
      -			this.originalElement.css( {
      -				position: wrapper.css( "position" ),
      -				width: wrapper.outerWidth(),
      -				height: wrapper.outerHeight(),
      -				top: wrapper.css( "top" ),
      -				left: wrapper.css( "left" )
      -			} ).insertAfter( wrapper );
      -			wrapper.remove();
      -		}
      -
      -		this.originalElement.css( "resize", this.originalResizeStyle );
      -		_destroy( this.originalElement );
      -
      -		return this;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -
      -		switch ( key ) {
      -		case "handles":
      -			this._removeHandles();
      -			this._setupHandles();
      -			break;
      -		default:
      -			break;
      -		}
      -	},
      -
      -	_setupHandles: function() {
      -		var o = this.options, handle, i, n, hname, axis, that = this;
      -		this.handles = o.handles ||
      -			( !$( ".ui-resizable-handle", this.element ).length ?
      -				"e,s,se" : {
      -					n: ".ui-resizable-n",
      -					e: ".ui-resizable-e",
      -					s: ".ui-resizable-s",
      -					w: ".ui-resizable-w",
      -					se: ".ui-resizable-se",
      -					sw: ".ui-resizable-sw",
      -					ne: ".ui-resizable-ne",
      -					nw: ".ui-resizable-nw"
      -				} );
      -
      -		this._handles = $();
      -		if ( this.handles.constructor === String ) {
      -
      -			if ( this.handles === "all" ) {
      -				this.handles = "n,e,s,w,se,sw,ne,nw";
      -			}
      -
      -			n = this.handles.split( "," );
      -			this.handles = {};
      -
      -			for ( i = 0; i < n.length; i++ ) {
      -
      -				handle = $.trim( n[ i ] );
      -				hname = "ui-resizable-" + handle;
      -				axis = $( "<div>" );
      -				this._addClass( axis, "ui-resizable-handle " + hname );
      -
      -				axis.css( { zIndex: o.zIndex } );
      -
      -				this.handles[ handle ] = ".ui-resizable-" + handle;
      -				this.element.append( axis );
      -			}
      -
      -		}
      -
      -		this._renderAxis = function( target ) {
      -
      -			var i, axis, padPos, padWrapper;
      -
      -			target = target || this.element;
      -
      -			for ( i in this.handles ) {
      -
      -				if ( this.handles[ i ].constructor === String ) {
      -					this.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();
      -				} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {
      -					this.handles[ i ] = $( this.handles[ i ] );
      -					this._on( this.handles[ i ], { "mousedown": that._mouseDown } );
      -				}
      -
      -				if ( this.elementIsWrapper &&
      -						this.originalElement[ 0 ]
      -							.nodeName
      -							.match( /^(textarea|input|select|button)$/i ) ) {
      -					axis = $( this.handles[ i ], this.element );
      -
      -					padWrapper = /sw|ne|nw|se|n|s/.test( i ) ?
      -						axis.outerHeight() :
      -						axis.outerWidth();
      -
      -					padPos = [ "padding",
      -						/ne|nw|n/.test( i ) ? "Top" :
      -						/se|sw|s/.test( i ) ? "Bottom" :
      -						/^e$/.test( i ) ? "Right" : "Left" ].join( "" );
      -
      -					target.css( padPos, padWrapper );
      -
      -					this._proportionallyResize();
      -				}
      -
      -				this._handles = this._handles.add( this.handles[ i ] );
      -			}
      -		};
      -
      -		// TODO: make renderAxis a prototype function
      -		this._renderAxis( this.element );
      -
      -		this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) );
      -		this._handles.disableSelection();
      -
      -		this._handles.on( "mouseover", function() {
      -			if ( !that.resizing ) {
      -				if ( this.className ) {
      -					axis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );
      -				}
      -				that.axis = axis && axis[ 1 ] ? axis[ 1 ] : "se";
      -			}
      -		} );
      -
      -		if ( o.autoHide ) {
      -			this._handles.hide();
      -			this._addClass( "ui-resizable-autohide" );
      -		}
      -	},
      -
      -	_removeHandles: function() {
      -		this._handles.remove();
      -	},
      -
      -	_mouseCapture: function( event ) {
      -		var i, handle,
      -			capture = false;
      -
      -		for ( i in this.handles ) {
      -			handle = $( this.handles[ i ] )[ 0 ];
      -			if ( handle === event.target || $.contains( handle, event.target ) ) {
      -				capture = true;
      -			}
      -		}
      -
      -		return !this.options.disabled && capture;
      -	},
      -
      -	_mouseStart: function( event ) {
      -
      -		var curleft, curtop, cursor,
      -			o = this.options,
      -			el = this.element;
      -
      -		this.resizing = true;
      -
      -		this._renderProxy();
      -
      -		curleft = this._num( this.helper.css( "left" ) );
      -		curtop = this._num( this.helper.css( "top" ) );
      -
      -		if ( o.containment ) {
      -			curleft += $( o.containment ).scrollLeft() || 0;
      -			curtop += $( o.containment ).scrollTop() || 0;
      -		}
      -
      -		this.offset = this.helper.offset();
      -		this.position = { left: curleft, top: curtop };
      -
      -		this.size = this._helper ? {
      -				width: this.helper.width(),
      -				height: this.helper.height()
      -			} : {
      -				width: el.width(),
      -				height: el.height()
      -			};
      -
      -		this.originalSize = this._helper ? {
      -				width: el.outerWidth(),
      -				height: el.outerHeight()
      -			} : {
      -				width: el.width(),
      -				height: el.height()
      -			};
      -
      -		this.sizeDiff = {
      -			width: el.outerWidth() - el.width(),
      -			height: el.outerHeight() - el.height()
      -		};
      -
      -		this.originalPosition = { left: curleft, top: curtop };
      -		this.originalMousePosition = { left: event.pageX, top: event.pageY };
      -
      -		this.aspectRatio = ( typeof o.aspectRatio === "number" ) ?
      -			o.aspectRatio :
      -			( ( this.originalSize.width / this.originalSize.height ) || 1 );
      -
      -		cursor = $( ".ui-resizable-" + this.axis ).css( "cursor" );
      -		$( "body" ).css( "cursor", cursor === "auto" ? this.axis + "-resize" : cursor );
      -
      -		this._addClass( "ui-resizable-resizing" );
      -		this._propagate( "start", event );
      -		return true;
      -	},
      -
      -	_mouseDrag: function( event ) {
      -
      -		var data, props,
      -			smp = this.originalMousePosition,
      -			a = this.axis,
      -			dx = ( event.pageX - smp.left ) || 0,
      -			dy = ( event.pageY - smp.top ) || 0,
      -			trigger = this._change[ a ];
      -
      -		this._updatePrevProperties();
      -
      -		if ( !trigger ) {
      -			return false;
      -		}
      -
      -		data = trigger.apply( this, [ event, dx, dy ] );
      -
      -		this._updateVirtualBoundaries( event.shiftKey );
      -		if ( this._aspectRatio || event.shiftKey ) {
      -			data = this._updateRatio( data, event );
      -		}
      -
      -		data = this._respectSize( data, event );
      -
      -		this._updateCache( data );
      -
      -		this._propagate( "resize", event );
      -
      -		props = this._applyChanges();
      -
      -		if ( !this._helper && this._proportionallyResizeElements.length ) {
      -			this._proportionallyResize();
      -		}
      -
      -		if ( !$.isEmptyObject( props ) ) {
      -			this._updatePrevProperties();
      -			this._trigger( "resize", event, this.ui() );
      -			this._applyChanges();
      -		}
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -
      -		this.resizing = false;
      -		var pr, ista, soffseth, soffsetw, s, left, top,
      -			o = this.options, that = this;
      -
      -		if ( this._helper ) {
      -
      -			pr = this._proportionallyResizeElements;
      -			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );
      -			soffseth = ista && this._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height;
      -			soffsetw = ista ? 0 : that.sizeDiff.width;
      -
      -			s = {
      -				width: ( that.helper.width()  - soffsetw ),
      -				height: ( that.helper.height() - soffseth )
      -			};
      -			left = ( parseFloat( that.element.css( "left" ) ) +
      -				( that.position.left - that.originalPosition.left ) ) || null;
      -			top = ( parseFloat( that.element.css( "top" ) ) +
      -				( that.position.top - that.originalPosition.top ) ) || null;
      -
      -			if ( !o.animate ) {
      -				this.element.css( $.extend( s, { top: top, left: left } ) );
      -			}
      -
      -			that.helper.height( that.size.height );
      -			that.helper.width( that.size.width );
      -
      -			if ( this._helper && !o.animate ) {
      -				this._proportionallyResize();
      -			}
      -		}
      -
      -		$( "body" ).css( "cursor", "auto" );
      -
      -		this._removeClass( "ui-resizable-resizing" );
      -
      -		this._propagate( "stop", event );
      -
      -		if ( this._helper ) {
      -			this.helper.remove();
      -		}
      -
      -		return false;
      -
      -	},
      -
      -	_updatePrevProperties: function() {
      -		this.prevPosition = {
      -			top: this.position.top,
      -			left: this.position.left
      -		};
      -		this.prevSize = {
      -			width: this.size.width,
      -			height: this.size.height
      -		};
      -	},
      -
      -	_applyChanges: function() {
      -		var props = {};
      -
      -		if ( this.position.top !== this.prevPosition.top ) {
      -			props.top = this.position.top + "px";
      -		}
      -		if ( this.position.left !== this.prevPosition.left ) {
      -			props.left = this.position.left + "px";
      -		}
      -		if ( this.size.width !== this.prevSize.width ) {
      -			props.width = this.size.width + "px";
      -		}
      -		if ( this.size.height !== this.prevSize.height ) {
      -			props.height = this.size.height + "px";
      -		}
      -
      -		this.helper.css( props );
      -
      -		return props;
      -	},
      -
      -	_updateVirtualBoundaries: function( forceAspectRatio ) {
      -		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
      -			o = this.options;
      -
      -		b = {
      -			minWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,
      -			maxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,
      -			minHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,
      -			maxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity
      -		};
      -
      -		if ( this._aspectRatio || forceAspectRatio ) {
      -			pMinWidth = b.minHeight * this.aspectRatio;
      -			pMinHeight = b.minWidth / this.aspectRatio;
      -			pMaxWidth = b.maxHeight * this.aspectRatio;
      -			pMaxHeight = b.maxWidth / this.aspectRatio;
      -
      -			if ( pMinWidth > b.minWidth ) {
      -				b.minWidth = pMinWidth;
      -			}
      -			if ( pMinHeight > b.minHeight ) {
      -				b.minHeight = pMinHeight;
      -			}
      -			if ( pMaxWidth < b.maxWidth ) {
      -				b.maxWidth = pMaxWidth;
      -			}
      -			if ( pMaxHeight < b.maxHeight ) {
      -				b.maxHeight = pMaxHeight;
      -			}
      -		}
      -		this._vBoundaries = b;
      -	},
      -
      -	_updateCache: function( data ) {
      -		this.offset = this.helper.offset();
      -		if ( this._isNumber( data.left ) ) {
      -			this.position.left = data.left;
      -		}
      -		if ( this._isNumber( data.top ) ) {
      -			this.position.top = data.top;
      -		}
      -		if ( this._isNumber( data.height ) ) {
      -			this.size.height = data.height;
      -		}
      -		if ( this._isNumber( data.width ) ) {
      -			this.size.width = data.width;
      -		}
      -	},
      -
      -	_updateRatio: function( data ) {
      -
      -		var cpos = this.position,
      -			csize = this.size,
      -			a = this.axis;
      -
      -		if ( this._isNumber( data.height ) ) {
      -			data.width = ( data.height * this.aspectRatio );
      -		} else if ( this._isNumber( data.width ) ) {
      -			data.height = ( data.width / this.aspectRatio );
      -		}
      -
      -		if ( a === "sw" ) {
      -			data.left = cpos.left + ( csize.width - data.width );
      -			data.top = null;
      -		}
      -		if ( a === "nw" ) {
      -			data.top = cpos.top + ( csize.height - data.height );
      -			data.left = cpos.left + ( csize.width - data.width );
      -		}
      -
      -		return data;
      -	},
      -
      -	_respectSize: function( data ) {
      -
      -		var o = this._vBoundaries,
      -			a = this.axis,
      -			ismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),
      -			ismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),
      -			isminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),
      -			isminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),
      -			dw = this.originalPosition.left + this.originalSize.width,
      -			dh = this.originalPosition.top + this.originalSize.height,
      -			cw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );
      -		if ( isminw ) {
      -			data.width = o.minWidth;
      -		}
      -		if ( isminh ) {
      -			data.height = o.minHeight;
      -		}
      -		if ( ismaxw ) {
      -			data.width = o.maxWidth;
      -		}
      -		if ( ismaxh ) {
      -			data.height = o.maxHeight;
      -		}
      -
      -		if ( isminw && cw ) {
      -			data.left = dw - o.minWidth;
      -		}
      -		if ( ismaxw && cw ) {
      -			data.left = dw - o.maxWidth;
      -		}
      -		if ( isminh && ch ) {
      -			data.top = dh - o.minHeight;
      -		}
      -		if ( ismaxh && ch ) {
      -			data.top = dh - o.maxHeight;
      -		}
      -
      -		// Fixing jump error on top/left - bug #2330
      -		if ( !data.width && !data.height && !data.left && data.top ) {
      -			data.top = null;
      -		} else if ( !data.width && !data.height && !data.top && data.left ) {
      -			data.left = null;
      -		}
      -
      -		return data;
      -	},
      -
      -	_getPaddingPlusBorderDimensions: function( element ) {
      -		var i = 0,
      -			widths = [],
      -			borders = [
      -				element.css( "borderTopWidth" ),
      -				element.css( "borderRightWidth" ),
      -				element.css( "borderBottomWidth" ),
      -				element.css( "borderLeftWidth" )
      -			],
      -			paddings = [
      -				element.css( "paddingTop" ),
      -				element.css( "paddingRight" ),
      -				element.css( "paddingBottom" ),
      -				element.css( "paddingLeft" )
      -			];
      -
      -		for ( ; i < 4; i++ ) {
      -			widths[ i ] = ( parseFloat( borders[ i ] ) || 0 );
      -			widths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );
      -		}
      -
      -		return {
      -			height: widths[ 0 ] + widths[ 2 ],
      -			width: widths[ 1 ] + widths[ 3 ]
      -		};
      -	},
      -
      -	_proportionallyResize: function() {
      -
      -		if ( !this._proportionallyResizeElements.length ) {
      -			return;
      -		}
      -
      -		var prel,
      -			i = 0,
      -			element = this.helper || this.element;
      -
      -		for ( ; i < this._proportionallyResizeElements.length; i++ ) {
      -
      -			prel = this._proportionallyResizeElements[ i ];
      -
      -			// TODO: Seems like a bug to cache this.outerDimensions
      -			// considering that we are in a loop.
      -			if ( !this.outerDimensions ) {
      -				this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
      -			}
      -
      -			prel.css( {
      -				height: ( element.height() - this.outerDimensions.height ) || 0,
      -				width: ( element.width() - this.outerDimensions.width ) || 0
      -			} );
      -
      -		}
      -
      -	},
      -
      -	_renderProxy: function() {
      -
      -		var el = this.element, o = this.options;
      -		this.elementOffset = el.offset();
      -
      -		if ( this._helper ) {
      -
      -			this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" );
      -
      -			this._addClass( this.helper, this._helper );
      -			this.helper.css( {
      -				width: this.element.outerWidth(),
      -				height: this.element.outerHeight(),
      -				position: "absolute",
      -				left: this.elementOffset.left + "px",
      -				top: this.elementOffset.top + "px",
      -				zIndex: ++o.zIndex //TODO: Don't modify option
      -			} );
      -
      -			this.helper
      -				.appendTo( "body" )
      -				.disableSelection();
      -
      -		} else {
      -			this.helper = this.element;
      -		}
      -
      -	},
      -
      -	_change: {
      -		e: function( event, dx ) {
      -			return { width: this.originalSize.width + dx };
      -		},
      -		w: function( event, dx ) {
      -			var cs = this.originalSize, sp = this.originalPosition;
      -			return { left: sp.left + dx, width: cs.width - dx };
      -		},
      -		n: function( event, dx, dy ) {
      -			var cs = this.originalSize, sp = this.originalPosition;
      -			return { top: sp.top + dy, height: cs.height - dy };
      -		},
      -		s: function( event, dx, dy ) {
      -			return { height: this.originalSize.height + dy };
      -		},
      -		se: function( event, dx, dy ) {
      -			return $.extend( this._change.s.apply( this, arguments ),
      -				this._change.e.apply( this, [ event, dx, dy ] ) );
      -		},
      -		sw: function( event, dx, dy ) {
      -			return $.extend( this._change.s.apply( this, arguments ),
      -				this._change.w.apply( this, [ event, dx, dy ] ) );
      -		},
      -		ne: function( event, dx, dy ) {
      -			return $.extend( this._change.n.apply( this, arguments ),
      -				this._change.e.apply( this, [ event, dx, dy ] ) );
      -		},
      -		nw: function( event, dx, dy ) {
      -			return $.extend( this._change.n.apply( this, arguments ),
      -				this._change.w.apply( this, [ event, dx, dy ] ) );
      -		}
      -	},
      -
      -	_propagate: function( n, event ) {
      -		$.ui.plugin.call( this, n, [ event, this.ui() ] );
      -		( n !== "resize" && this._trigger( n, event, this.ui() ) );
      -	},
      -
      -	plugins: {},
      -
      -	ui: function() {
      -		return {
      -			originalElement: this.originalElement,
      -			element: this.element,
      -			helper: this.helper,
      -			position: this.position,
      -			size: this.size,
      -			originalSize: this.originalSize,
      -			originalPosition: this.originalPosition
      -		};
      -	}
      -
      -} );
      -
      -/*
      - * Resizable Extensions
      - */
      -
      -$.ui.plugin.add( "resizable", "animate", {
      -
      -	stop: function( event ) {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			pr = that._proportionallyResizeElements,
      -			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),
      -			soffseth = ista && that._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height,
      -			soffsetw = ista ? 0 : that.sizeDiff.width,
      -			style = {
      -				width: ( that.size.width - soffsetw ),
      -				height: ( that.size.height - soffseth )
      -			},
      -			left = ( parseFloat( that.element.css( "left" ) ) +
      -				( that.position.left - that.originalPosition.left ) ) || null,
      -			top = ( parseFloat( that.element.css( "top" ) ) +
      -				( that.position.top - that.originalPosition.top ) ) || null;
      -
      -		that.element.animate(
      -			$.extend( style, top && left ? { top: top, left: left } : {} ), {
      -				duration: o.animateDuration,
      -				easing: o.animateEasing,
      -				step: function() {
      -
      -					var data = {
      -						width: parseFloat( that.element.css( "width" ) ),
      -						height: parseFloat( that.element.css( "height" ) ),
      -						top: parseFloat( that.element.css( "top" ) ),
      -						left: parseFloat( that.element.css( "left" ) )
      -					};
      -
      -					if ( pr && pr.length ) {
      -						$( pr[ 0 ] ).css( { width: data.width, height: data.height } );
      -					}
      -
      -					// Propagating resize, and updating values for each animation step
      -					that._updateCache( data );
      -					that._propagate( "resize", event );
      -
      -				}
      -			}
      -		);
      -	}
      -
      -} );
      -
      -$.ui.plugin.add( "resizable", "containment", {
      -
      -	start: function() {
      -		var element, p, co, ch, cw, width, height,
      -			that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			el = that.element,
      -			oc = o.containment,
      -			ce = ( oc instanceof $ ) ?
      -				oc.get( 0 ) :
      -				( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
      -
      -		if ( !ce ) {
      -			return;
      -		}
      -
      -		that.containerElement = $( ce );
      -
      -		if ( /document/.test( oc ) || oc === document ) {
      -			that.containerOffset = {
      -				left: 0,
      -				top: 0
      -			};
      -			that.containerPosition = {
      -				left: 0,
      -				top: 0
      -			};
      -
      -			that.parentData = {
      -				element: $( document ),
      -				left: 0,
      -				top: 0,
      -				width: $( document ).width(),
      -				height: $( document ).height() || document.body.parentNode.scrollHeight
      -			};
      -		} else {
      -			element = $( ce );
      -			p = [];
      -			$( [ "Top", "Right", "Left", "Bottom" ] ).each( function( i, name ) {
      -				p[ i ] = that._num( element.css( "padding" + name ) );
      -			} );
      -
      -			that.containerOffset = element.offset();
      -			that.containerPosition = element.position();
      -			that.containerSize = {
      -				height: ( element.innerHeight() - p[ 3 ] ),
      -				width: ( element.innerWidth() - p[ 1 ] )
      -			};
      -
      -			co = that.containerOffset;
      -			ch = that.containerSize.height;
      -			cw = that.containerSize.width;
      -			width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
      -			height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
      -
      -			that.parentData = {
      -				element: ce,
      -				left: co.left,
      -				top: co.top,
      -				width: width,
      -				height: height
      -			};
      -		}
      -	},
      -
      -	resize: function( event ) {
      -		var woset, hoset, isParent, isOffsetRelative,
      -			that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			co = that.containerOffset,
      -			cp = that.position,
      -			pRatio = that._aspectRatio || event.shiftKey,
      -			cop = {
      -				top: 0,
      -				left: 0
      -			},
      -			ce = that.containerElement,
      -			continueResize = true;
      -
      -		if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
      -			cop = co;
      -		}
      -
      -		if ( cp.left < ( that._helper ? co.left : 0 ) ) {
      -			that.size.width = that.size.width +
      -				( that._helper ?
      -					( that.position.left - co.left ) :
      -					( that.position.left - cop.left ) );
      -
      -			if ( pRatio ) {
      -				that.size.height = that.size.width / that.aspectRatio;
      -				continueResize = false;
      -			}
      -			that.position.left = o.helper ? co.left : 0;
      -		}
      -
      -		if ( cp.top < ( that._helper ? co.top : 0 ) ) {
      -			that.size.height = that.size.height +
      -				( that._helper ?
      -					( that.position.top - co.top ) :
      -					that.position.top );
      -
      -			if ( pRatio ) {
      -				that.size.width = that.size.height * that.aspectRatio;
      -				continueResize = false;
      -			}
      -			that.position.top = that._helper ? co.top : 0;
      -		}
      -
      -		isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
      -		isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
      -
      -		if ( isParent && isOffsetRelative ) {
      -			that.offset.left = that.parentData.left + that.position.left;
      -			that.offset.top = that.parentData.top + that.position.top;
      -		} else {
      -			that.offset.left = that.element.offset().left;
      -			that.offset.top = that.element.offset().top;
      -		}
      -
      -		woset = Math.abs( that.sizeDiff.width +
      -			( that._helper ?
      -				that.offset.left - cop.left :
      -				( that.offset.left - co.left ) ) );
      -
      -		hoset = Math.abs( that.sizeDiff.height +
      -			( that._helper ?
      -				that.offset.top - cop.top :
      -				( that.offset.top - co.top ) ) );
      -
      -		if ( woset + that.size.width >= that.parentData.width ) {
      -			that.size.width = that.parentData.width - woset;
      -			if ( pRatio ) {
      -				that.size.height = that.size.width / that.aspectRatio;
      -				continueResize = false;
      -			}
      -		}
      -
      -		if ( hoset + that.size.height >= that.parentData.height ) {
      -			that.size.height = that.parentData.height - hoset;
      -			if ( pRatio ) {
      -				that.size.width = that.size.height * that.aspectRatio;
      -				continueResize = false;
      -			}
      -		}
      -
      -		if ( !continueResize ) {
      -			that.position.left = that.prevPosition.left;
      -			that.position.top = that.prevPosition.top;
      -			that.size.width = that.prevSize.width;
      -			that.size.height = that.prevSize.height;
      -		}
      -	},
      -
      -	stop: function() {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			co = that.containerOffset,
      -			cop = that.containerPosition,
      -			ce = that.containerElement,
      -			helper = $( that.helper ),
      -			ho = helper.offset(),
      -			w = helper.outerWidth() - that.sizeDiff.width,
      -			h = helper.outerHeight() - that.sizeDiff.height;
      -
      -		if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
      -			$( this ).css( {
      -				left: ho.left - cop.left - co.left,
      -				width: w,
      -				height: h
      -			} );
      -		}
      -
      -		if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
      -			$( this ).css( {
      -				left: ho.left - cop.left - co.left,
      -				width: w,
      -				height: h
      -			} );
      -		}
      -	}
      -} );
      -
      -$.ui.plugin.add( "resizable", "alsoResize", {
      -
      -	start: function() {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options;
      -
      -		$( o.alsoResize ).each( function() {
      -			var el = $( this );
      -			el.data( "ui-resizable-alsoresize", {
      -				width: parseFloat( el.width() ), height: parseFloat( el.height() ),
      -				left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) )
      -			} );
      -		} );
      -	},
      -
      -	resize: function( event, ui ) {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			os = that.originalSize,
      -			op = that.originalPosition,
      -			delta = {
      -				height: ( that.size.height - os.height ) || 0,
      -				width: ( that.size.width - os.width ) || 0,
      -				top: ( that.position.top - op.top ) || 0,
      -				left: ( that.position.left - op.left ) || 0
      -			};
      -
      -			$( o.alsoResize ).each( function() {
      -				var el = $( this ), start = $( this ).data( "ui-resizable-alsoresize" ), style = {},
      -					css = el.parents( ui.originalElement[ 0 ] ).length ?
      -							[ "width", "height" ] :
      -							[ "width", "height", "top", "left" ];
      -
      -				$.each( css, function( i, prop ) {
      -					var sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );
      -					if ( sum && sum >= 0 ) {
      -						style[ prop ] = sum || null;
      -					}
      -				} );
      -
      -				el.css( style );
      -			} );
      -	},
      -
      -	stop: function() {
      -		$( this ).removeData( "ui-resizable-alsoresize" );
      -	}
      -} );
      -
      -$.ui.plugin.add( "resizable", "ghost", {
      -
      -	start: function() {
      -
      -		var that = $( this ).resizable( "instance" ), cs = that.size;
      -
      -		that.ghost = that.originalElement.clone();
      -		that.ghost.css( {
      -			opacity: 0.25,
      -			display: "block",
      -			position: "relative",
      -			height: cs.height,
      -			width: cs.width,
      -			margin: 0,
      -			left: 0,
      -			top: 0
      -		} );
      -
      -		that._addClass( that.ghost, "ui-resizable-ghost" );
      -
      -		// DEPRECATED
      -		// TODO: remove after 1.12
      -		if ( $.uiBackCompat !== false && typeof that.options.ghost === "string" ) {
      -
      -			// Ghost option
      -			that.ghost.addClass( this.options.ghost );
      -		}
      -
      -		that.ghost.appendTo( that.helper );
      -
      -	},
      -
      -	resize: function() {
      -		var that = $( this ).resizable( "instance" );
      -		if ( that.ghost ) {
      -			that.ghost.css( {
      -				position: "relative",
      -				height: that.size.height,
      -				width: that.size.width
      -			} );
      -		}
      -	},
      -
      -	stop: function() {
      -		var that = $( this ).resizable( "instance" );
      -		if ( that.ghost && that.helper ) {
      -			that.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );
      -		}
      -	}
      -
      -} );
      -
      -$.ui.plugin.add( "resizable", "grid", {
      -
      -	resize: function() {
      -		var outerDimensions,
      -			that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			cs = that.size,
      -			os = that.originalSize,
      -			op = that.originalPosition,
      -			a = that.axis,
      -			grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
      -			gridX = ( grid[ 0 ] || 1 ),
      -			gridY = ( grid[ 1 ] || 1 ),
      -			ox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,
      -			oy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,
      -			newWidth = os.width + ox,
      -			newHeight = os.height + oy,
      -			isMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),
      -			isMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),
      -			isMinWidth = o.minWidth && ( o.minWidth > newWidth ),
      -			isMinHeight = o.minHeight && ( o.minHeight > newHeight );
      -
      -		o.grid = grid;
      -
      -		if ( isMinWidth ) {
      -			newWidth += gridX;
      -		}
      -		if ( isMinHeight ) {
      -			newHeight += gridY;
      -		}
      -		if ( isMaxWidth ) {
      -			newWidth -= gridX;
      -		}
      -		if ( isMaxHeight ) {
      -			newHeight -= gridY;
      -		}
      -
      -		if ( /^(se|s|e)$/.test( a ) ) {
      -			that.size.width = newWidth;
      -			that.size.height = newHeight;
      -		} else if ( /^(ne)$/.test( a ) ) {
      -			that.size.width = newWidth;
      -			that.size.height = newHeight;
      -			that.position.top = op.top - oy;
      -		} else if ( /^(sw)$/.test( a ) ) {
      -			that.size.width = newWidth;
      -			that.size.height = newHeight;
      -			that.position.left = op.left - ox;
      -		} else {
      -			if ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {
      -				outerDimensions = that._getPaddingPlusBorderDimensions( this );
      -			}
      -
      -			if ( newHeight - gridY > 0 ) {
      -				that.size.height = newHeight;
      -				that.position.top = op.top - oy;
      -			} else {
      -				newHeight = gridY - outerDimensions.height;
      -				that.size.height = newHeight;
      -				that.position.top = op.top + os.height - newHeight;
      -			}
      -			if ( newWidth - gridX > 0 ) {
      -				that.size.width = newWidth;
      -				that.position.left = op.left - ox;
      -			} else {
      -				newWidth = gridX - outerDimensions.width;
      -				that.size.width = newWidth;
      -				that.position.left = op.left + os.width - newWidth;
      -			}
      -		}
      -	}
      -
      -} );
      -
      -var widgetsResizable = $.ui.resizable;
      -
      -
      -/*!
      - * jQuery UI Dialog 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Dialog
      -//>>group: Widgets
      -//>>description: Displays customizable dialog windows.
      -//>>docs: http://api.jqueryui.com/dialog/
      -//>>demos: http://jqueryui.com/dialog/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/dialog.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.widget( "ui.dialog", {
      -	version: "1.12.1",
      -	options: {
      -		appendTo: "body",
      -		autoOpen: true,
      -		buttons: [],
      -		classes: {
      -			"ui-dialog": "ui-corner-all",
      -			"ui-dialog-titlebar": "ui-corner-all"
      -		},
      -		closeOnEscape: true,
      -		closeText: "Close",
      -		draggable: true,
      -		hide: null,
      -		height: "auto",
      -		maxHeight: null,
      -		maxWidth: null,
      -		minHeight: 150,
      -		minWidth: 150,
      -		modal: false,
      -		position: {
      -			my: "center",
      -			at: "center",
      -			of: window,
      -			collision: "fit",
      -
      -			// Ensure the titlebar is always visible
      -			using: function( pos ) {
      -				var topOffset = $( this ).css( pos ).offset().top;
      -				if ( topOffset < 0 ) {
      -					$( this ).css( "top", pos.top - topOffset );
      -				}
      -			}
      -		},
      -		resizable: true,
      -		show: null,
      -		title: null,
      -		width: 300,
      -
      -		// Callbacks
      -		beforeClose: null,
      -		close: null,
      -		drag: null,
      -		dragStart: null,
      -		dragStop: null,
      -		focus: null,
      -		open: null,
      -		resize: null,
      -		resizeStart: null,
      -		resizeStop: null
      -	},
      -
      -	sizeRelatedOptions: {
      -		buttons: true,
      -		height: true,
      -		maxHeight: true,
      -		maxWidth: true,
      -		minHeight: true,
      -		minWidth: true,
      -		width: true
      -	},
      -
      -	resizableRelatedOptions: {
      -		maxHeight: true,
      -		maxWidth: true,
      -		minHeight: true,
      -		minWidth: true
      -	},
      -
      -	_create: function() {
      -		this.originalCss = {
      -			display: this.element[ 0 ].style.display,
      -			width: this.element[ 0 ].style.width,
      -			minHeight: this.element[ 0 ].style.minHeight,
      -			maxHeight: this.element[ 0 ].style.maxHeight,
      -			height: this.element[ 0 ].style.height
      -		};
      -		this.originalPosition = {
      -			parent: this.element.parent(),
      -			index: this.element.parent().children().index( this.element )
      -		};
      -		this.originalTitle = this.element.attr( "title" );
      -		if ( this.options.title == null && this.originalTitle != null ) {
      -			this.options.title = this.originalTitle;
      -		}
      -
      -		// Dialogs can't be disabled
      -		if ( this.options.disabled ) {
      -			this.options.disabled = false;
      -		}
      -
      -		this._createWrapper();
      -
      -		this.element
      -			.show()
      -			.removeAttr( "title" )
      -			.appendTo( this.uiDialog );
      -
      -		this._addClass( "ui-dialog-content", "ui-widget-content" );
      -
      -		this._createTitlebar();
      -		this._createButtonPane();
      -
      -		if ( this.options.draggable && $.fn.draggable ) {
      -			this._makeDraggable();
      -		}
      -		if ( this.options.resizable && $.fn.resizable ) {
      -			this._makeResizable();
      -		}
      -
      -		this._isOpen = false;
      -
      -		this._trackFocus();
      -	},
      -
      -	_init: function() {
      -		if ( this.options.autoOpen ) {
      -			this.open();
      -		}
      -	},
      -
      -	_appendTo: function() {
      -		var element = this.options.appendTo;
      -		if ( element && ( element.jquery || element.nodeType ) ) {
      -			return $( element );
      -		}
      -		return this.document.find( element || "body" ).eq( 0 );
      -	},
      -
      -	_destroy: function() {
      -		var next,
      -			originalPosition = this.originalPosition;
      -
      -		this._untrackInstance();
      -		this._destroyOverlay();
      -
      -		this.element
      -			.removeUniqueId()
      -			.css( this.originalCss )
      -
      -			// Without detaching first, the following becomes really slow
      -			.detach();
      -
      -		this.uiDialog.remove();
      -
      -		if ( this.originalTitle ) {
      -			this.element.attr( "title", this.originalTitle );
      -		}
      -
      -		next = originalPosition.parent.children().eq( originalPosition.index );
      -
      -		// Don't try to place the dialog next to itself (#8613)
      -		if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
      -			next.before( this.element );
      -		} else {
      -			originalPosition.parent.append( this.element );
      -		}
      -	},
      -
      -	widget: function() {
      -		return this.uiDialog;
      -	},
      -
      -	disable: $.noop,
      -	enable: $.noop,
      -
      -	close: function( event ) {
      -		var that = this;
      -
      -		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
      -			return;
      -		}
      -
      -		this._isOpen = false;
      -		this._focusedElement = null;
      -		this._destroyOverlay();
      -		this._untrackInstance();
      -
      -		if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {
      -
      -			// Hiding a focused element doesn't trigger blur in WebKit
      -			// so in case we have nothing to focus on, explicitly blur the active element
      -			// https://bugs.webkit.org/show_bug.cgi?id=47182
      -			$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
      -		}
      -
      -		this._hide( this.uiDialog, this.options.hide, function() {
      -			that._trigger( "close", event );
      -		} );
      -	},
      -
      -	isOpen: function() {
      -		return this._isOpen;
      -	},
      -
      -	moveToTop: function() {
      -		this._moveToTop();
      -	},
      -
      -	_moveToTop: function( event, silent ) {
      -		var moved = false,
      -			zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
      -				return +$( this ).css( "z-index" );
      -			} ).get(),
      -			zIndexMax = Math.max.apply( null, zIndices );
      -
      -		if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
      -			this.uiDialog.css( "z-index", zIndexMax + 1 );
      -			moved = true;
      -		}
      -
      -		if ( moved && !silent ) {
      -			this._trigger( "focus", event );
      -		}
      -		return moved;
      -	},
      -
      -	open: function() {
      -		var that = this;
      -		if ( this._isOpen ) {
      -			if ( this._moveToTop() ) {
      -				this._focusTabbable();
      -			}
      -			return;
      -		}
      -
      -		this._isOpen = true;
      -		this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
      -
      -		this._size();
      -		this._position();
      -		this._createOverlay();
      -		this._moveToTop( null, true );
      -
      -		// Ensure the overlay is moved to the top with the dialog, but only when
      -		// opening. The overlay shouldn't move after the dialog is open so that
      -		// modeless dialogs opened after the modal dialog stack properly.
      -		if ( this.overlay ) {
      -			this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
      -		}
      -
      -		this._show( this.uiDialog, this.options.show, function() {
      -			that._focusTabbable();
      -			that._trigger( "focus" );
      -		} );
      -
      -		// Track the dialog immediately upon openening in case a focus event
      -		// somehow occurs outside of the dialog before an element inside the
      -		// dialog is focused (#10152)
      -		this._makeFocusTarget();
      -
      -		this._trigger( "open" );
      -	},
      -
      -	_focusTabbable: function() {
      -
      -		// Set focus to the first match:
      -		// 1. An element that was focused previously
      -		// 2. First element inside the dialog matching [autofocus]
      -		// 3. Tabbable element inside the content element
      -		// 4. Tabbable element inside the buttonpane
      -		// 5. The close button
      -		// 6. The dialog itself
      -		var hasFocus = this._focusedElement;
      -		if ( !hasFocus ) {
      -			hasFocus = this.element.find( "[autofocus]" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.element.find( ":tabbable" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.uiDialog;
      -		}
      -		hasFocus.eq( 0 ).trigger( "focus" );
      -	},
      -
      -	_keepFocus: function( event ) {
      -		function checkFocus() {
      -			var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
      -				isActive = this.uiDialog[ 0 ] === activeElement ||
      -					$.contains( this.uiDialog[ 0 ], activeElement );
      -			if ( !isActive ) {
      -				this._focusTabbable();
      -			}
      -		}
      -		event.preventDefault();
      -		checkFocus.call( this );
      -
      -		// support: IE
      -		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
      -		// so we check again later
      -		this._delay( checkFocus );
      -	},
      -
      -	_createWrapper: function() {
      -		this.uiDialog = $( "<div>" )
      -			.hide()
      -			.attr( {
      -
      -				// Setting tabIndex makes the div focusable
      -				tabIndex: -1,
      -				role: "dialog"
      -			} )
      -			.appendTo( this._appendTo() );
      -
      -		this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
      -		this._on( this.uiDialog, {
      -			keydown: function( event ) {
      -				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
      -						event.keyCode === $.ui.keyCode.ESCAPE ) {
      -					event.preventDefault();
      -					this.close( event );
      -					return;
      -				}
      -
      -				// Prevent tabbing out of dialogs
      -				if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
      -					return;
      -				}
      -				var tabbables = this.uiDialog.find( ":tabbable" ),
      -					first = tabbables.filter( ":first" ),
      -					last = tabbables.filter( ":last" );
      -
      -				if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
      -						!event.shiftKey ) {
      -					this._delay( function() {
      -						first.trigger( "focus" );
      -					} );
      -					event.preventDefault();
      -				} else if ( ( event.target === first[ 0 ] ||
      -						event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
      -					this._delay( function() {
      -						last.trigger( "focus" );
      -					} );
      -					event.preventDefault();
      -				}
      -			},
      -			mousedown: function( event ) {
      -				if ( this._moveToTop( event ) ) {
      -					this._focusTabbable();
      -				}
      -			}
      -		} );
      -
      -		// We assume that any existing aria-describedby attribute means
      -		// that the dialog content is marked up properly
      -		// otherwise we brute force the content as the description
      -		if ( !this.element.find( "[aria-describedby]" ).length ) {
      -			this.uiDialog.attr( {
      -				"aria-describedby": this.element.uniqueId().attr( "id" )
      -			} );
      -		}
      -	},
      -
      -	_createTitlebar: function() {
      -		var uiDialogTitle;
      -
      -		this.uiDialogTitlebar = $( "<div>" );
      -		this._addClass( this.uiDialogTitlebar,
      -			"ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
      -		this._on( this.uiDialogTitlebar, {
      -			mousedown: function( event ) {
      -
      -				// Don't prevent click on close button (#8838)
      -				// Focusing a dialog that is partially scrolled out of view
      -				// causes the browser to scroll it into view, preventing the click event
      -				if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
      -
      -					// Dialog isn't getting focus when dragging (#8063)
      -					this.uiDialog.trigger( "focus" );
      -				}
      -			}
      -		} );
      -
      -		// Support: IE
      -		// Use type="button" to prevent enter keypresses in textboxes from closing the
      -		// dialog in IE (#9312)
      -		this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
      -			.button( {
      -				label: $( "<a>" ).text( this.options.closeText ).html(),
      -				icon: "ui-icon-closethick",
      -				showLabel: false
      -			} )
      -			.appendTo( this.uiDialogTitlebar );
      -
      -		this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
      -		this._on( this.uiDialogTitlebarClose, {
      -			click: function( event ) {
      -				event.preventDefault();
      -				this.close( event );
      -			}
      -		} );
      -
      -		uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
      -		this._addClass( uiDialogTitle, "ui-dialog-title" );
      -		this._title( uiDialogTitle );
      -
      -		this.uiDialogTitlebar.prependTo( this.uiDialog );
      -
      -		this.uiDialog.attr( {
      -			"aria-labelledby": uiDialogTitle.attr( "id" )
      -		} );
      -	},
      -
      -	_title: function( title ) {
      -		if ( this.options.title ) {
      -			title.text( this.options.title );
      -		} else {
      -			title.html( "&#160;" );
      -		}
      -	},
      -
      -	_createButtonPane: function() {
      -		this.uiDialogButtonPane = $( "<div>" );
      -		this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
      -			"ui-widget-content ui-helper-clearfix" );
      -
      -		this.uiButtonSet = $( "<div>" )
      -			.appendTo( this.uiDialogButtonPane );
      -		this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );
      -
      -		this._createButtons();
      -	},
      -
      -	_createButtons: function() {
      -		var that = this,
      -			buttons = this.options.buttons;
      -
      -		// If we already have a button pane, remove it
      -		this.uiDialogButtonPane.remove();
      -		this.uiButtonSet.empty();
      -
      -		if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
      -			this._removeClass( this.uiDialog, "ui-dialog-buttons" );
      -			return;
      -		}
      -
      -		$.each( buttons, function( name, props ) {
      -			var click, buttonOptions;
      -			props = $.isFunction( props ) ?
      -				{ click: props, text: name } :
      -				props;
      -
      -			// Default to a non-submitting button
      -			props = $.extend( { type: "button" }, props );
      -
      -			// Change the context for the click callback to be the main element
      -			click = props.click;
      -			buttonOptions = {
      -				icon: props.icon,
      -				iconPosition: props.iconPosition,
      -				showLabel: props.showLabel,
      -
      -				// Deprecated options
      -				icons: props.icons,
      -				text: props.text
      -			};
      -
      -			delete props.click;
      -			delete props.icon;
      -			delete props.iconPosition;
      -			delete props.showLabel;
      -
      -			// Deprecated options
      -			delete props.icons;
      -			if ( typeof props.text === "boolean" ) {
      -				delete props.text;
      -			}
      -
      -			$( "<button></button>", props )
      -				.button( buttonOptions )
      -				.appendTo( that.uiButtonSet )
      -				.on( "click", function() {
      -					click.apply( that.element[ 0 ], arguments );
      -				} );
      -		} );
      -		this._addClass( this.uiDialog, "ui-dialog-buttons" );
      -		this.uiDialogButtonPane.appendTo( this.uiDialog );
      -	},
      -
      -	_makeDraggable: function() {
      -		var that = this,
      -			options = this.options;
      -
      -		function filteredUi( ui ) {
      -			return {
      -				position: ui.position,
      -				offset: ui.offset
      -			};
      -		}
      -
      -		this.uiDialog.draggable( {
      -			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
      -			handle: ".ui-dialog-titlebar",
      -			containment: "document",
      -			start: function( event, ui ) {
      -				that._addClass( $( this ), "ui-dialog-dragging" );
      -				that._blockFrames();
      -				that._trigger( "dragStart", event, filteredUi( ui ) );
      -			},
      -			drag: function( event, ui ) {
      -				that._trigger( "drag", event, filteredUi( ui ) );
      -			},
      -			stop: function( event, ui ) {
      -				var left = ui.offset.left - that.document.scrollLeft(),
      -					top = ui.offset.top - that.document.scrollTop();
      -
      -				options.position = {
      -					my: "left top",
      -					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
      -						"top" + ( top >= 0 ? "+" : "" ) + top,
      -					of: that.window
      -				};
      -				that._removeClass( $( this ), "ui-dialog-dragging" );
      -				that._unblockFrames();
      -				that._trigger( "dragStop", event, filteredUi( ui ) );
      -			}
      -		} );
      -	},
      -
      -	_makeResizable: function() {
      -		var that = this,
      -			options = this.options,
      -			handles = options.resizable,
      -
      -			// .ui-resizable has position: relative defined in the stylesheet
      -			// but dialogs have to use absolute or fixed positioning
      -			position = this.uiDialog.css( "position" ),
      -			resizeHandles = typeof handles === "string" ?
      -				handles :
      -				"n,e,s,w,se,sw,ne,nw";
      -
      -		function filteredUi( ui ) {
      -			return {
      -				originalPosition: ui.originalPosition,
      -				originalSize: ui.originalSize,
      -				position: ui.position,
      -				size: ui.size
      -			};
      -		}
      -
      -		this.uiDialog.resizable( {
      -			cancel: ".ui-dialog-content",
      -			containment: "document",
      -			alsoResize: this.element,
      -			maxWidth: options.maxWidth,
      -			maxHeight: options.maxHeight,
      -			minWidth: options.minWidth,
      -			minHeight: this._minHeight(),
      -			handles: resizeHandles,
      -			start: function( event, ui ) {
      -				that._addClass( $( this ), "ui-dialog-resizing" );
      -				that._blockFrames();
      -				that._trigger( "resizeStart", event, filteredUi( ui ) );
      -			},
      -			resize: function( event, ui ) {
      -				that._trigger( "resize", event, filteredUi( ui ) );
      -			},
      -			stop: function( event, ui ) {
      -				var offset = that.uiDialog.offset(),
      -					left = offset.left - that.document.scrollLeft(),
      -					top = offset.top - that.document.scrollTop();
      -
      -				options.height = that.uiDialog.height();
      -				options.width = that.uiDialog.width();
      -				options.position = {
      -					my: "left top",
      -					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
      -						"top" + ( top >= 0 ? "+" : "" ) + top,
      -					of: that.window
      -				};
      -				that._removeClass( $( this ), "ui-dialog-resizing" );
      -				that._unblockFrames();
      -				that._trigger( "resizeStop", event, filteredUi( ui ) );
      -			}
      -		} )
      -			.css( "position", position );
      -	},
      -
      -	_trackFocus: function() {
      -		this._on( this.widget(), {
      -			focusin: function( event ) {
      -				this._makeFocusTarget();
      -				this._focusedElement = $( event.target );
      -			}
      -		} );
      -	},
      -
      -	_makeFocusTarget: function() {
      -		this._untrackInstance();
      -		this._trackingInstances().unshift( this );
      -	},
      -
      -	_untrackInstance: function() {
      -		var instances = this._trackingInstances(),
      -			exists = $.inArray( this, instances );
      -		if ( exists !== -1 ) {
      -			instances.splice( exists, 1 );
      -		}
      -	},
      -
      -	_trackingInstances: function() {
      -		var instances = this.document.data( "ui-dialog-instances" );
      -		if ( !instances ) {
      -			instances = [];
      -			this.document.data( "ui-dialog-instances", instances );
      -		}
      -		return instances;
      -	},
      -
      -	_minHeight: function() {
      -		var options = this.options;
      -
      -		return options.height === "auto" ?
      -			options.minHeight :
      -			Math.min( options.minHeight, options.height );
      -	},
      -
      -	_position: function() {
      -
      -		// Need to show the dialog to get the actual offset in the position plugin
      -		var isVisible = this.uiDialog.is( ":visible" );
      -		if ( !isVisible ) {
      -			this.uiDialog.show();
      -		}
      -		this.uiDialog.position( this.options.position );
      -		if ( !isVisible ) {
      -			this.uiDialog.hide();
      -		}
      -	},
      -
      -	_setOptions: function( options ) {
      -		var that = this,
      -			resize = false,
      -			resizableOptions = {};
      -
      -		$.each( options, function( key, value ) {
      -			that._setOption( key, value );
      -
      -			if ( key in that.sizeRelatedOptions ) {
      -				resize = true;
      -			}
      -			if ( key in that.resizableRelatedOptions ) {
      -				resizableOptions[ key ] = value;
      -			}
      -		} );
      -
      -		if ( resize ) {
      -			this._size();
      -			this._position();
      -		}
      -		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
      -			this.uiDialog.resizable( "option", resizableOptions );
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var isDraggable, isResizable,
      -			uiDialog = this.uiDialog;
      -
      -		if ( key === "disabled" ) {
      -			return;
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "appendTo" ) {
      -			this.uiDialog.appendTo( this._appendTo() );
      -		}
      -
      -		if ( key === "buttons" ) {
      -			this._createButtons();
      -		}
      -
      -		if ( key === "closeText" ) {
      -			this.uiDialogTitlebarClose.button( {
      -
      -				// Ensure that we always pass a string
      -				label: $( "<a>" ).text( "" + this.options.closeText ).html()
      -			} );
      -		}
      -
      -		if ( key === "draggable" ) {
      -			isDraggable = uiDialog.is( ":data(ui-draggable)" );
      -			if ( isDraggable && !value ) {
      -				uiDialog.draggable( "destroy" );
      -			}
      -
      -			if ( !isDraggable && value ) {
      -				this._makeDraggable();
      -			}
      -		}
      -
      -		if ( key === "position" ) {
      -			this._position();
      -		}
      -
      -		if ( key === "resizable" ) {
      -
      -			// currently resizable, becoming non-resizable
      -			isResizable = uiDialog.is( ":data(ui-resizable)" );
      -			if ( isResizable && !value ) {
      -				uiDialog.resizable( "destroy" );
      -			}
      -
      -			// Currently resizable, changing handles
      -			if ( isResizable && typeof value === "string" ) {
      -				uiDialog.resizable( "option", "handles", value );
      -			}
      -
      -			// Currently non-resizable, becoming resizable
      -			if ( !isResizable && value !== false ) {
      -				this._makeResizable();
      -			}
      -		}
      -
      -		if ( key === "title" ) {
      -			this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
      -		}
      -	},
      -
      -	_size: function() {
      -
      -		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
      -		// divs will both have width and height set, so we need to reset them
      -		var nonContentHeight, minContentHeight, maxContentHeight,
      -			options = this.options;
      -
      -		// Reset content sizing
      -		this.element.show().css( {
      -			width: "auto",
      -			minHeight: 0,
      -			maxHeight: "none",
      -			height: 0
      -		} );
      -
      -		if ( options.minWidth > options.width ) {
      -			options.width = options.minWidth;
      -		}
      -
      -		// Reset wrapper sizing
      -		// determine the height of all the non-content elements
      -		nonContentHeight = this.uiDialog.css( {
      -			height: "auto",
      -			width: options.width
      -		} )
      -			.outerHeight();
      -		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
      -		maxContentHeight = typeof options.maxHeight === "number" ?
      -			Math.max( 0, options.maxHeight - nonContentHeight ) :
      -			"none";
      -
      -		if ( options.height === "auto" ) {
      -			this.element.css( {
      -				minHeight: minContentHeight,
      -				maxHeight: maxContentHeight,
      -				height: "auto"
      -			} );
      -		} else {
      -			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
      -		}
      -
      -		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
      -			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
      -		}
      -	},
      -
      -	_blockFrames: function() {
      -		this.iframeBlocks = this.document.find( "iframe" ).map( function() {
      -			var iframe = $( this );
      -
      -			return $( "<div>" )
      -				.css( {
      -					position: "absolute",
      -					width: iframe.outerWidth(),
      -					height: iframe.outerHeight()
      -				} )
      -				.appendTo( iframe.parent() )
      -				.offset( iframe.offset() )[ 0 ];
      -		} );
      -	},
      -
      -	_unblockFrames: function() {
      -		if ( this.iframeBlocks ) {
      -			this.iframeBlocks.remove();
      -			delete this.iframeBlocks;
      -		}
      -	},
      -
      -	_allowInteraction: function( event ) {
      -		if ( $( event.target ).closest( ".ui-dialog" ).length ) {
      -			return true;
      -		}
      -
      -		// TODO: Remove hack when datepicker implements
      -		// the .ui-front logic (#8989)
      -		return !!$( event.target ).closest( ".ui-datepicker" ).length;
      -	},
      -
      -	_createOverlay: function() {
      -		if ( !this.options.modal ) {
      -			return;
      -		}
      -
      -		// We use a delay in case the overlay is created from an
      -		// event that we're going to be cancelling (#2804)
      -		var isOpening = true;
      -		this._delay( function() {
      -			isOpening = false;
      -		} );
      -
      -		if ( !this.document.data( "ui-dialog-overlays" ) ) {
      -
      -			// Prevent use of anchors and inputs
      -			// Using _on() for an event handler shared across many instances is
      -			// safe because the dialogs stack and must be closed in reverse order
      -			this._on( this.document, {
      -				focusin: function( event ) {
      -					if ( isOpening ) {
      -						return;
      -					}
      -
      -					if ( !this._allowInteraction( event ) ) {
      -						event.preventDefault();
      -						this._trackingInstances()[ 0 ]._focusTabbable();
      -					}
      -				}
      -			} );
      -		}
      -
      -		this.overlay = $( "<div>" )
      -			.appendTo( this._appendTo() );
      -
      -		this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
      -		this._on( this.overlay, {
      -			mousedown: "_keepFocus"
      -		} );
      -		this.document.data( "ui-dialog-overlays",
      -			( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
      -	},
      -
      -	_destroyOverlay: function() {
      -		if ( !this.options.modal ) {
      -			return;
      -		}
      -
      -		if ( this.overlay ) {
      -			var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
      -
      -			if ( !overlays ) {
      -				this._off( this.document, "focusin" );
      -				this.document.removeData( "ui-dialog-overlays" );
      -			} else {
      -				this.document.data( "ui-dialog-overlays", overlays );
      -			}
      -
      -			this.overlay.remove();
      -			this.overlay = null;
      -		}
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for dialogClass option
      -	$.widget( "ui.dialog", $.ui.dialog, {
      -		options: {
      -			dialogClass: ""
      -		},
      -		_createWrapper: function() {
      -			this._super();
      -			this.uiDialog.addClass( this.options.dialogClass );
      -		},
      -		_setOption: function( key, value ) {
      -			if ( key === "dialogClass" ) {
      -				this.uiDialog
      -					.removeClass( this.options.dialogClass )
      -					.addClass( value );
      -			}
      -			this._superApply( arguments );
      -		}
      -	} );
      -}
      -
      -var widgetsDialog = $.ui.dialog;
      -
      -
      -/*!
      - * jQuery UI Droppable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Droppable
      -//>>group: Interactions
      -//>>description: Enables drop targets for draggable elements.
      -//>>docs: http://api.jqueryui.com/droppable/
      -//>>demos: http://jqueryui.com/droppable/
      -
      -
      -
      -$.widget( "ui.droppable", {
      -	version: "1.12.1",
      -	widgetEventPrefix: "drop",
      -	options: {
      -		accept: "*",
      -		addClasses: true,
      -		greedy: false,
      -		scope: "default",
      -		tolerance: "intersect",
      -
      -		// Callbacks
      -		activate: null,
      -		deactivate: null,
      -		drop: null,
      -		out: null,
      -		over: null
      -	},
      -	_create: function() {
      -
      -		var proportions,
      -			o = this.options,
      -			accept = o.accept;
      -
      -		this.isover = false;
      -		this.isout = true;
      -
      -		this.accept = $.isFunction( accept ) ? accept : function( d ) {
      -			return d.is( accept );
      -		};
      -
      -		this.proportions = function( /* valueToWrite */ ) {
      -			if ( arguments.length ) {
      -
      -				// Store the droppable's proportions
      -				proportions = arguments[ 0 ];
      -			} else {
      -
      -				// Retrieve or derive the droppable's proportions
      -				return proportions ?
      -					proportions :
      -					proportions = {
      -						width: this.element[ 0 ].offsetWidth,
      -						height: this.element[ 0 ].offsetHeight
      -					};
      -			}
      -		};
      -
      -		this._addToManager( o.scope );
      -
      -		o.addClasses && this._addClass( "ui-droppable" );
      -
      -	},
      -
      -	_addToManager: function( scope ) {
      -
      -		// Add the reference and positions to the manager
      -		$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
      -		$.ui.ddmanager.droppables[ scope ].push( this );
      -	},
      -
      -	_splice: function( drop ) {
      -		var i = 0;
      -		for ( ; i < drop.length; i++ ) {
      -			if ( drop[ i ] === this ) {
      -				drop.splice( i, 1 );
      -			}
      -		}
      -	},
      -
      -	_destroy: function() {
      -		var drop = $.ui.ddmanager.droppables[ this.options.scope ];
      -
      -		this._splice( drop );
      -	},
      -
      -	_setOption: function( key, value ) {
      -
      -		if ( key === "accept" ) {
      -			this.accept = $.isFunction( value ) ? value : function( d ) {
      -				return d.is( value );
      -			};
      -		} else if ( key === "scope" ) {
      -			var drop = $.ui.ddmanager.droppables[ this.options.scope ];
      -
      -			this._splice( drop );
      -			this._addToManager( value );
      -		}
      -
      -		this._super( key, value );
      -	},
      -
      -	_activate: function( event ) {
      -		var draggable = $.ui.ddmanager.current;
      -
      -		this._addActiveClass();
      -		if ( draggable ) {
      -			this._trigger( "activate", event, this.ui( draggable ) );
      -		}
      -	},
      -
      -	_deactivate: function( event ) {
      -		var draggable = $.ui.ddmanager.current;
      -
      -		this._removeActiveClass();
      -		if ( draggable ) {
      -			this._trigger( "deactivate", event, this.ui( draggable ) );
      -		}
      -	},
      -
      -	_over: function( event ) {
      -
      -		var draggable = $.ui.ddmanager.current;
      -
      -		// Bail if draggable and droppable are same element
      -		if ( !draggable || ( draggable.currentItem ||
      -				draggable.element )[ 0 ] === this.element[ 0 ] ) {
      -			return;
      -		}
      -
      -		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
      -				draggable.element ) ) ) {
      -			this._addHoverClass();
      -			this._trigger( "over", event, this.ui( draggable ) );
      -		}
      -
      -	},
      -
      -	_out: function( event ) {
      -
      -		var draggable = $.ui.ddmanager.current;
      -
      -		// Bail if draggable and droppable are same element
      -		if ( !draggable || ( draggable.currentItem ||
      -				draggable.element )[ 0 ] === this.element[ 0 ] ) {
      -			return;
      -		}
      -
      -		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
      -				draggable.element ) ) ) {
      -			this._removeHoverClass();
      -			this._trigger( "out", event, this.ui( draggable ) );
      -		}
      -
      -	},
      -
      -	_drop: function( event, custom ) {
      -
      -		var draggable = custom || $.ui.ddmanager.current,
      -			childrenIntersection = false;
      -
      -		// Bail if draggable and droppable are same element
      -		if ( !draggable || ( draggable.currentItem ||
      -				draggable.element )[ 0 ] === this.element[ 0 ] ) {
      -			return false;
      -		}
      -
      -		this.element
      -			.find( ":data(ui-droppable)" )
      -			.not( ".ui-draggable-dragging" )
      -			.each( function() {
      -				var inst = $( this ).droppable( "instance" );
      -				if (
      -					inst.options.greedy &&
      -					!inst.options.disabled &&
      -					inst.options.scope === draggable.options.scope &&
      -					inst.accept.call(
      -						inst.element[ 0 ], ( draggable.currentItem || draggable.element )
      -					) &&
      -					intersect(
      -						draggable,
      -						$.extend( inst, { offset: inst.element.offset() } ),
      -						inst.options.tolerance, event
      -					)
      -				) {
      -					childrenIntersection = true;
      -					return false; }
      -			} );
      -		if ( childrenIntersection ) {
      -			return false;
      -		}
      -
      -		if ( this.accept.call( this.element[ 0 ],
      -				( draggable.currentItem || draggable.element ) ) ) {
      -			this._removeActiveClass();
      -			this._removeHoverClass();
      -
      -			this._trigger( "drop", event, this.ui( draggable ) );
      -			return this.element;
      -		}
      -
      -		return false;
      -
      -	},
      -
      -	ui: function( c ) {
      -		return {
      -			draggable: ( c.currentItem || c.element ),
      -			helper: c.helper,
      -			position: c.position,
      -			offset: c.positionAbs
      -		};
      -	},
      -
      -	// Extension points just to make backcompat sane and avoid duplicating logic
      -	// TODO: Remove in 1.13 along with call to it below
      -	_addHoverClass: function() {
      -		this._addClass( "ui-droppable-hover" );
      -	},
      -
      -	_removeHoverClass: function() {
      -		this._removeClass( "ui-droppable-hover" );
      -	},
      -
      -	_addActiveClass: function() {
      -		this._addClass( "ui-droppable-active" );
      -	},
      -
      -	_removeActiveClass: function() {
      -		this._removeClass( "ui-droppable-active" );
      -	}
      -} );
      -
      -var intersect = $.ui.intersect = ( function() {
      -	function isOverAxis( x, reference, size ) {
      -		return ( x >= reference ) && ( x < ( reference + size ) );
      -	}
      -
      -	return function( draggable, droppable, toleranceMode, event ) {
      -
      -		if ( !droppable.offset ) {
      -			return false;
      -		}
      -
      -		var x1 = ( draggable.positionAbs ||
      -				draggable.position.absolute ).left + draggable.margins.left,
      -			y1 = ( draggable.positionAbs ||
      -				draggable.position.absolute ).top + draggable.margins.top,
      -			x2 = x1 + draggable.helperProportions.width,
      -			y2 = y1 + draggable.helperProportions.height,
      -			l = droppable.offset.left,
      -			t = droppable.offset.top,
      -			r = l + droppable.proportions().width,
      -			b = t + droppable.proportions().height;
      -
      -		switch ( toleranceMode ) {
      -		case "fit":
      -			return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
      -		case "intersect":
      -			return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
      -				x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
      -				t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
      -				y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
      -		case "pointer":
      -			return isOverAxis( event.pageY, t, droppable.proportions().height ) &&
      -				isOverAxis( event.pageX, l, droppable.proportions().width );
      -		case "touch":
      -			return (
      -				( y1 >= t && y1 <= b ) || // Top edge touching
      -				( y2 >= t && y2 <= b ) || // Bottom edge touching
      -				( y1 < t && y2 > b ) // Surrounded vertically
      -			) && (
      -				( x1 >= l && x1 <= r ) || // Left edge touching
      -				( x2 >= l && x2 <= r ) || // Right edge touching
      -				( x1 < l && x2 > r ) // Surrounded horizontally
      -			);
      -		default:
      -			return false;
      -		}
      -	};
      -} )();
      -
      -/*
      -	This manager tracks offsets of draggables and droppables
      -*/
      -$.ui.ddmanager = {
      -	current: null,
      -	droppables: { "default": [] },
      -	prepareOffsets: function( t, event ) {
      -
      -		var i, j,
      -			m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
      -			type = event ? event.type : null, // workaround for #2317
      -			list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
      -
      -		droppablesLoop: for ( i = 0; i < m.length; i++ ) {
      -
      -			// No disabled and non-accepted
      -			if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],
      -					( t.currentItem || t.element ) ) ) ) {
      -				continue;
      -			}
      -
      -			// Filter out elements in the current dragged item
      -			for ( j = 0; j < list.length; j++ ) {
      -				if ( list[ j ] === m[ i ].element[ 0 ] ) {
      -					m[ i ].proportions().height = 0;
      -					continue droppablesLoop;
      -				}
      -			}
      -
      -			m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
      -			if ( !m[ i ].visible ) {
      -				continue;
      -			}
      -
      -			// Activate the droppable if used directly from draggables
      -			if ( type === "mousedown" ) {
      -				m[ i ]._activate.call( m[ i ], event );
      -			}
      -
      -			m[ i ].offset = m[ i ].element.offset();
      -			m[ i ].proportions( {
      -				width: m[ i ].element[ 0 ].offsetWidth,
      -				height: m[ i ].element[ 0 ].offsetHeight
      -			} );
      -
      -		}
      -
      -	},
      -	drop: function( draggable, event ) {
      -
      -		var dropped = false;
      -
      -		// Create a copy of the droppables in case the list changes during the drop (#9116)
      -		$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
      -
      -			if ( !this.options ) {
      -				return;
      -			}
      -			if ( !this.options.disabled && this.visible &&
      -					intersect( draggable, this, this.options.tolerance, event ) ) {
      -				dropped = this._drop.call( this, event ) || dropped;
      -			}
      -
      -			if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],
      -					( draggable.currentItem || draggable.element ) ) ) {
      -				this.isout = true;
      -				this.isover = false;
      -				this._deactivate.call( this, event );
      -			}
      -
      -		} );
      -		return dropped;
      -
      -	},
      -	dragStart: function( draggable, event ) {
      -
      -		// Listen for scrolling so that if the dragging causes scrolling the position of the
      -		// droppables can be recalculated (see #5003)
      -		draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() {
      -			if ( !draggable.options.refreshPositions ) {
      -				$.ui.ddmanager.prepareOffsets( draggable, event );
      -			}
      -		} );
      -	},
      -	drag: function( draggable, event ) {
      -
      -		// If you have a highly dynamic page, you might try this option. It renders positions
      -		// every time you move the mouse.
      -		if ( draggable.options.refreshPositions ) {
      -			$.ui.ddmanager.prepareOffsets( draggable, event );
      -		}
      -
      -		// Run through all droppables and check their positions based on specific tolerance options
      -		$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
      -
      -			if ( this.options.disabled || this.greedyChild || !this.visible ) {
      -				return;
      -			}
      -
      -			var parentInstance, scope, parent,
      -				intersects = intersect( draggable, this, this.options.tolerance, event ),
      -				c = !intersects && this.isover ?
      -					"isout" :
      -					( intersects && !this.isover ? "isover" : null );
      -			if ( !c ) {
      -				return;
      -			}
      -
      -			if ( this.options.greedy ) {
      -
      -				// find droppable parents with same scope
      -				scope = this.options.scope;
      -				parent = this.element.parents( ":data(ui-droppable)" ).filter( function() {
      -					return $( this ).droppable( "instance" ).options.scope === scope;
      -				} );
      -
      -				if ( parent.length ) {
      -					parentInstance = $( parent[ 0 ] ).droppable( "instance" );
      -					parentInstance.greedyChild = ( c === "isover" );
      -				}
      -			}
      -
      -			// We just moved into a greedy child
      -			if ( parentInstance && c === "isover" ) {
      -				parentInstance.isover = false;
      -				parentInstance.isout = true;
      -				parentInstance._out.call( parentInstance, event );
      -			}
      -
      -			this[ c ] = true;
      -			this[ c === "isout" ? "isover" : "isout" ] = false;
      -			this[ c === "isover" ? "_over" : "_out" ].call( this, event );
      -
      -			// We just moved out of a greedy child
      -			if ( parentInstance && c === "isout" ) {
      -				parentInstance.isout = false;
      -				parentInstance.isover = true;
      -				parentInstance._over.call( parentInstance, event );
      -			}
      -		} );
      -
      -	},
      -	dragStop: function( draggable, event ) {
      -		draggable.element.parentsUntil( "body" ).off( "scroll.droppable" );
      -
      -		// Call prepareOffsets one final time since IE does not fire return scroll events when
      -		// overflow was caused by drag (see #5003)
      -		if ( !draggable.options.refreshPositions ) {
      -			$.ui.ddmanager.prepareOffsets( draggable, event );
      -		}
      -	}
      -};
      -
      -// DEPRECATED
      -// TODO: switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for activeClass and hoverClass options
      -	$.widget( "ui.droppable", $.ui.droppable, {
      -		options: {
      -			hoverClass: false,
      -			activeClass: false
      -		},
      -		_addActiveClass: function() {
      -			this._super();
      -			if ( this.options.activeClass ) {
      -				this.element.addClass( this.options.activeClass );
      -			}
      -		},
      -		_removeActiveClass: function() {
      -			this._super();
      -			if ( this.options.activeClass ) {
      -				this.element.removeClass( this.options.activeClass );
      -			}
      -		},
      -		_addHoverClass: function() {
      -			this._super();
      -			if ( this.options.hoverClass ) {
      -				this.element.addClass( this.options.hoverClass );
      -			}
      -		},
      -		_removeHoverClass: function() {
      -			this._super();
      -			if ( this.options.hoverClass ) {
      -				this.element.removeClass( this.options.hoverClass );
      -			}
      -		}
      -	} );
      -}
      -
      -var widgetsDroppable = $.ui.droppable;
      -
      -
      -/*!
      - * jQuery UI Progressbar 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Progressbar
      -//>>group: Widgets
      -// jscs:disable maximumLineLength
      -//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/progressbar/
      -//>>demos: http://jqueryui.com/progressbar/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/progressbar.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -var widgetsProgressbar = $.widget( "ui.progressbar", {
      -	version: "1.12.1",
      -	options: {
      -		classes: {
      -			"ui-progressbar": "ui-corner-all",
      -			"ui-progressbar-value": "ui-corner-left",
      -			"ui-progressbar-complete": "ui-corner-right"
      -		},
      -		max: 100,
      -		value: 0,
      -
      -		change: null,
      -		complete: null
      -	},
      -
      -	min: 0,
      -
      -	_create: function() {
      -
      -		// Constrain initial value
      -		this.oldValue = this.options.value = this._constrainedValue();
      -
      -		this.element.attr( {
      -
      -			// Only set static values; aria-valuenow and aria-valuemax are
      -			// set inside _refreshValue()
      -			role: "progressbar",
      -			"aria-valuemin": this.min
      -		} );
      -		this._addClass( "ui-progressbar", "ui-widget ui-widget-content" );
      -
      -		this.valueDiv = $( "<div>" ).appendTo( this.element );
      -		this._addClass( this.valueDiv, "ui-progressbar-value", "ui-widget-header" );
      -		this._refreshValue();
      -	},
      -
      -	_destroy: function() {
      -		this.element.removeAttr( "role aria-valuemin aria-valuemax aria-valuenow" );
      -
      -		this.valueDiv.remove();
      -	},
      -
      -	value: function( newValue ) {
      -		if ( newValue === undefined ) {
      -			return this.options.value;
      -		}
      -
      -		this.options.value = this._constrainedValue( newValue );
      -		this._refreshValue();
      -	},
      -
      -	_constrainedValue: function( newValue ) {
      -		if ( newValue === undefined ) {
      -			newValue = this.options.value;
      -		}
      -
      -		this.indeterminate = newValue === false;
      -
      -		// Sanitize value
      -		if ( typeof newValue !== "number" ) {
      -			newValue = 0;
      -		}
      -
      -		return this.indeterminate ? false :
      -			Math.min( this.options.max, Math.max( this.min, newValue ) );
      -	},
      -
      -	_setOptions: function( options ) {
      -
      -		// Ensure "value" option is set after other values (like max)
      -		var value = options.value;
      -		delete options.value;
      -
      -		this._super( options );
      -
      -		this.options.value = this._constrainedValue( value );
      -		this._refreshValue();
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "max" ) {
      -
      -			// Don't allow a max less than min
      -			value = Math.max( this.min, value );
      -		}
      -		this._super( key, value );
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.element.attr( "aria-disabled", value );
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -	},
      -
      -	_percentage: function() {
      -		return this.indeterminate ?
      -			100 :
      -			100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
      -	},
      -
      -	_refreshValue: function() {
      -		var value = this.options.value,
      -			percentage = this._percentage();
      -
      -		this.valueDiv
      -			.toggle( this.indeterminate || value > this.min )
      -			.width( percentage.toFixed( 0 ) + "%" );
      -
      -		this
      -			._toggleClass( this.valueDiv, "ui-progressbar-complete", null,
      -				value === this.options.max )
      -			._toggleClass( "ui-progressbar-indeterminate", null, this.indeterminate );
      -
      -		if ( this.indeterminate ) {
      -			this.element.removeAttr( "aria-valuenow" );
      -			if ( !this.overlayDiv ) {
      -				this.overlayDiv = $( "<div>" ).appendTo( this.valueDiv );
      -				this._addClass( this.overlayDiv, "ui-progressbar-overlay" );
      -			}
      -		} else {
      -			this.element.attr( {
      -				"aria-valuemax": this.options.max,
      -				"aria-valuenow": value
      -			} );
      -			if ( this.overlayDiv ) {
      -				this.overlayDiv.remove();
      -				this.overlayDiv = null;
      -			}
      -		}
      -
      -		if ( this.oldValue !== value ) {
      -			this.oldValue = value;
      -			this._trigger( "change" );
      -		}
      -		if ( value === this.options.max ) {
      -			this._trigger( "complete" );
      -		}
      -	}
      -} );
      -
      -
      -/*!
      - * jQuery UI Selectable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Selectable
      -//>>group: Interactions
      -//>>description: Allows groups of elements to be selected with the mouse.
      -//>>docs: http://api.jqueryui.com/selectable/
      -//>>demos: http://jqueryui.com/selectable/
      -//>>css.structure: ../../themes/base/selectable.css
      -
      -
      -
      -var widgetsSelectable = $.widget( "ui.selectable", $.ui.mouse, {
      -	version: "1.12.1",
      -	options: {
      -		appendTo: "body",
      -		autoRefresh: true,
      -		distance: 0,
      -		filter: "*",
      -		tolerance: "touch",
      -
      -		// Callbacks
      -		selected: null,
      -		selecting: null,
      -		start: null,
      -		stop: null,
      -		unselected: null,
      -		unselecting: null
      -	},
      -	_create: function() {
      -		var that = this;
      -
      -		this._addClass( "ui-selectable" );
      -
      -		this.dragged = false;
      -
      -		// Cache selectee children based on filter
      -		this.refresh = function() {
      -			that.elementPos = $( that.element[ 0 ] ).offset();
      -			that.selectees = $( that.options.filter, that.element[ 0 ] );
      -			that._addClass( that.selectees, "ui-selectee" );
      -			that.selectees.each( function() {
      -				var $this = $( this ),
      -					selecteeOffset = $this.offset(),
      -					pos = {
      -						left: selecteeOffset.left - that.elementPos.left,
      -						top: selecteeOffset.top - that.elementPos.top
      -					};
      -				$.data( this, "selectable-item", {
      -					element: this,
      -					$element: $this,
      -					left: pos.left,
      -					top: pos.top,
      -					right: pos.left + $this.outerWidth(),
      -					bottom: pos.top + $this.outerHeight(),
      -					startselected: false,
      -					selected: $this.hasClass( "ui-selected" ),
      -					selecting: $this.hasClass( "ui-selecting" ),
      -					unselecting: $this.hasClass( "ui-unselecting" )
      -				} );
      -			} );
      -		};
      -		this.refresh();
      -
      -		this._mouseInit();
      -
      -		this.helper = $( "<div>" );
      -		this._addClass( this.helper, "ui-selectable-helper" );
      -	},
      -
      -	_destroy: function() {
      -		this.selectees.removeData( "selectable-item" );
      -		this._mouseDestroy();
      -	},
      -
      -	_mouseStart: function( event ) {
      -		var that = this,
      -			options = this.options;
      -
      -		this.opos = [ event.pageX, event.pageY ];
      -		this.elementPos = $( this.element[ 0 ] ).offset();
      -
      -		if ( this.options.disabled ) {
      -			return;
      -		}
      -
      -		this.selectees = $( options.filter, this.element[ 0 ] );
      -
      -		this._trigger( "start", event );
      -
      -		$( options.appendTo ).append( this.helper );
      -
      -		// position helper (lasso)
      -		this.helper.css( {
      -			"left": event.pageX,
      -			"top": event.pageY,
      -			"width": 0,
      -			"height": 0
      -		} );
      -
      -		if ( options.autoRefresh ) {
      -			this.refresh();
      -		}
      -
      -		this.selectees.filter( ".ui-selected" ).each( function() {
      -			var selectee = $.data( this, "selectable-item" );
      -			selectee.startselected = true;
      -			if ( !event.metaKey && !event.ctrlKey ) {
      -				that._removeClass( selectee.$element, "ui-selected" );
      -				selectee.selected = false;
      -				that._addClass( selectee.$element, "ui-unselecting" );
      -				selectee.unselecting = true;
      -
      -				// selectable UNSELECTING callback
      -				that._trigger( "unselecting", event, {
      -					unselecting: selectee.element
      -				} );
      -			}
      -		} );
      -
      -		$( event.target ).parents().addBack().each( function() {
      -			var doSelect,
      -				selectee = $.data( this, "selectable-item" );
      -			if ( selectee ) {
      -				doSelect = ( !event.metaKey && !event.ctrlKey ) ||
      -					!selectee.$element.hasClass( "ui-selected" );
      -				that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" )
      -					._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" );
      -				selectee.unselecting = !doSelect;
      -				selectee.selecting = doSelect;
      -				selectee.selected = doSelect;
      -
      -				// selectable (UN)SELECTING callback
      -				if ( doSelect ) {
      -					that._trigger( "selecting", event, {
      -						selecting: selectee.element
      -					} );
      -				} else {
      -					that._trigger( "unselecting", event, {
      -						unselecting: selectee.element
      -					} );
      -				}
      -				return false;
      -			}
      -		} );
      -
      -	},
      -
      -	_mouseDrag: function( event ) {
      -
      -		this.dragged = true;
      -
      -		if ( this.options.disabled ) {
      -			return;
      -		}
      -
      -		var tmp,
      -			that = this,
      -			options = this.options,
      -			x1 = this.opos[ 0 ],
      -			y1 = this.opos[ 1 ],
      -			x2 = event.pageX,
      -			y2 = event.pageY;
      -
      -		if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }
      -		if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }
      -		this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
      -
      -		this.selectees.each( function() {
      -			var selectee = $.data( this, "selectable-item" ),
      -				hit = false,
      -				offset = {};
      -
      -			//prevent helper from being selected if appendTo: selectable
      -			if ( !selectee || selectee.element === that.element[ 0 ] ) {
      -				return;
      -			}
      -
      -			offset.left   = selectee.left   + that.elementPos.left;
      -			offset.right  = selectee.right  + that.elementPos.left;
      -			offset.top    = selectee.top    + that.elementPos.top;
      -			offset.bottom = selectee.bottom + that.elementPos.top;
      -
      -			if ( options.tolerance === "touch" ) {
      -				hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||
      -                    offset.bottom < y1 ) );
      -			} else if ( options.tolerance === "fit" ) {
      -				hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&
      -                    offset.bottom < y2 );
      -			}
      -
      -			if ( hit ) {
      -
      -				// SELECT
      -				if ( selectee.selected ) {
      -					that._removeClass( selectee.$element, "ui-selected" );
      -					selectee.selected = false;
      -				}
      -				if ( selectee.unselecting ) {
      -					that._removeClass( selectee.$element, "ui-unselecting" );
      -					selectee.unselecting = false;
      -				}
      -				if ( !selectee.selecting ) {
      -					that._addClass( selectee.$element, "ui-selecting" );
      -					selectee.selecting = true;
      -
      -					// selectable SELECTING callback
      -					that._trigger( "selecting", event, {
      -						selecting: selectee.element
      -					} );
      -				}
      -			} else {
      -
      -				// UNSELECT
      -				if ( selectee.selecting ) {
      -					if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {
      -						that._removeClass( selectee.$element, "ui-selecting" );
      -						selectee.selecting = false;
      -						that._addClass( selectee.$element, "ui-selected" );
      -						selectee.selected = true;
      -					} else {
      -						that._removeClass( selectee.$element, "ui-selecting" );
      -						selectee.selecting = false;
      -						if ( selectee.startselected ) {
      -							that._addClass( selectee.$element, "ui-unselecting" );
      -							selectee.unselecting = true;
      -						}
      -
      -						// selectable UNSELECTING callback
      -						that._trigger( "unselecting", event, {
      -							unselecting: selectee.element
      -						} );
      -					}
      -				}
      -				if ( selectee.selected ) {
      -					if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {
      -						that._removeClass( selectee.$element, "ui-selected" );
      -						selectee.selected = false;
      -
      -						that._addClass( selectee.$element, "ui-unselecting" );
      -						selectee.unselecting = true;
      -
      -						// selectable UNSELECTING callback
      -						that._trigger( "unselecting", event, {
      -							unselecting: selectee.element
      -						} );
      -					}
      -				}
      -			}
      -		} );
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -		var that = this;
      -
      -		this.dragged = false;
      -
      -		$( ".ui-unselecting", this.element[ 0 ] ).each( function() {
      -			var selectee = $.data( this, "selectable-item" );
      -			that._removeClass( selectee.$element, "ui-unselecting" );
      -			selectee.unselecting = false;
      -			selectee.startselected = false;
      -			that._trigger( "unselected", event, {
      -				unselected: selectee.element
      -			} );
      -		} );
      -		$( ".ui-selecting", this.element[ 0 ] ).each( function() {
      -			var selectee = $.data( this, "selectable-item" );
      -			that._removeClass( selectee.$element, "ui-selecting" )
      -				._addClass( selectee.$element, "ui-selected" );
      -			selectee.selecting = false;
      -			selectee.selected = true;
      -			selectee.startselected = true;
      -			that._trigger( "selected", event, {
      -				selected: selectee.element
      -			} );
      -		} );
      -		this._trigger( "stop", event );
      -
      -		this.helper.remove();
      -
      -		return false;
      -	}
      -
      -} );
      -
      -
      -/*!
      - * jQuery UI Selectmenu 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Selectmenu
      -//>>group: Widgets
      -// jscs:disable maximumLineLength
      -//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/selectmenu/
      -//>>demos: http://jqueryui.com/selectmenu/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -var widgetsSelectmenu = $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
      -	version: "1.12.1",
      -	defaultElement: "<select>",
      -	options: {
      -		appendTo: null,
      -		classes: {
      -			"ui-selectmenu-button-open": "ui-corner-top",
      -			"ui-selectmenu-button-closed": "ui-corner-all"
      -		},
      -		disabled: null,
      -		icons: {
      -			button: "ui-icon-triangle-1-s"
      -		},
      -		position: {
      -			my: "left top",
      -			at: "left bottom",
      -			collision: "none"
      -		},
      -		width: false,
      -
      -		// Callbacks
      -		change: null,
      -		close: null,
      -		focus: null,
      -		open: null,
      -		select: null
      -	},
      -
      -	_create: function() {
      -		var selectmenuId = this.element.uniqueId().attr( "id" );
      -		this.ids = {
      -			element: selectmenuId,
      -			button: selectmenuId + "-button",
      -			menu: selectmenuId + "-menu"
      -		};
      -
      -		this._drawButton();
      -		this._drawMenu();
      -		this._bindFormResetHandler();
      -
      -		this._rendered = false;
      -		this.menuItems = $();
      -	},
      -
      -	_drawButton: function() {
      -		var icon,
      -			that = this,
      -			item = this._parseOption(
      -				this.element.find( "option:selected" ),
      -				this.element[ 0 ].selectedIndex
      -			);
      -
      -		// Associate existing label with the new button
      -		this.labels = this.element.labels().attr( "for", this.ids.button );
      -		this._on( this.labels, {
      -			click: function( event ) {
      -				this.button.focus();
      -				event.preventDefault();
      -			}
      -		} );
      -
      -		// Hide original select element
      -		this.element.hide();
      -
      -		// Create button
      -		this.button = $( "<span>", {
      -			tabindex: this.options.disabled ? -1 : 0,
      -			id: this.ids.button,
      -			role: "combobox",
      -			"aria-expanded": "false",
      -			"aria-autocomplete": "list",
      -			"aria-owns": this.ids.menu,
      -			"aria-haspopup": "true",
      -			title: this.element.attr( "title" )
      -		} )
      -			.insertAfter( this.element );
      -
      -		this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed",
      -			"ui-button ui-widget" );
      -
      -		icon = $( "<span>" ).appendTo( this.button );
      -		this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
      -		this.buttonItem = this._renderButtonItem( item )
      -			.appendTo( this.button );
      -
      -		if ( this.options.width !== false ) {
      -			this._resizeButton();
      -		}
      -
      -		this._on( this.button, this._buttonEvents );
      -		this.button.one( "focusin", function() {
      -
      -			// Delay rendering the menu items until the button receives focus.
      -			// The menu may have already been rendered via a programmatic open.
      -			if ( !that._rendered ) {
      -				that._refreshMenu();
      -			}
      -		} );
      -	},
      -
      -	_drawMenu: function() {
      -		var that = this;
      -
      -		// Create menu
      -		this.menu = $( "<ul>", {
      -			"aria-hidden": "true",
      -			"aria-labelledby": this.ids.button,
      -			id: this.ids.menu
      -		} );
      -
      -		// Wrap menu
      -		this.menuWrap = $( "<div>" ).append( this.menu );
      -		this._addClass( this.menuWrap, "ui-selectmenu-menu", "ui-front" );
      -		this.menuWrap.appendTo( this._appendTo() );
      -
      -		// Initialize menu widget
      -		this.menuInstance = this.menu
      -			.menu( {
      -				classes: {
      -					"ui-menu": "ui-corner-bottom"
      -				},
      -				role: "listbox",
      -				select: function( event, ui ) {
      -					event.preventDefault();
      -
      -					// Support: IE8
      -					// If the item was selected via a click, the text selection
      -					// will be destroyed in IE
      -					that._setSelection();
      -
      -					that._select( ui.item.data( "ui-selectmenu-item" ), event );
      -				},
      -				focus: function( event, ui ) {
      -					var item = ui.item.data( "ui-selectmenu-item" );
      -
      -					// Prevent inital focus from firing and check if its a newly focused item
      -					if ( that.focusIndex != null && item.index !== that.focusIndex ) {
      -						that._trigger( "focus", event, { item: item } );
      -						if ( !that.isOpen ) {
      -							that._select( item, event );
      -						}
      -					}
      -					that.focusIndex = item.index;
      -
      -					that.button.attr( "aria-activedescendant",
      -						that.menuItems.eq( item.index ).attr( "id" ) );
      -				}
      -			} )
      -			.menu( "instance" );
      -
      -		// Don't close the menu on mouseleave
      -		this.menuInstance._off( this.menu, "mouseleave" );
      -
      -		// Cancel the menu's collapseAll on document click
      -		this.menuInstance._closeOnDocumentClick = function() {
      -			return false;
      -		};
      -
      -		// Selects often contain empty items, but never contain dividers
      -		this.menuInstance._isDivider = function() {
      -			return false;
      -		};
      -	},
      -
      -	refresh: function() {
      -		this._refreshMenu();
      -		this.buttonItem.replaceWith(
      -			this.buttonItem = this._renderButtonItem(
      -
      -				// Fall back to an empty object in case there are no options
      -				this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
      -			)
      -		);
      -		if ( this.options.width === null ) {
      -			this._resizeButton();
      -		}
      -	},
      -
      -	_refreshMenu: function() {
      -		var item,
      -			options = this.element.find( "option" );
      -
      -		this.menu.empty();
      -
      -		this._parseOptions( options );
      -		this._renderMenu( this.menu, this.items );
      -
      -		this.menuInstance.refresh();
      -		this.menuItems = this.menu.find( "li" )
      -			.not( ".ui-selectmenu-optgroup" )
      -				.find( ".ui-menu-item-wrapper" );
      -
      -		this._rendered = true;
      -
      -		if ( !options.length ) {
      -			return;
      -		}
      -
      -		item = this._getSelectedItem();
      -
      -		// Update the menu to have the correct item focused
      -		this.menuInstance.focus( null, item );
      -		this._setAria( item.data( "ui-selectmenu-item" ) );
      -
      -		// Set disabled state
      -		this._setOption( "disabled", this.element.prop( "disabled" ) );
      -	},
      -
      -	open: function( event ) {
      -		if ( this.options.disabled ) {
      -			return;
      -		}
      -
      -		// If this is the first time the menu is being opened, render the items
      -		if ( !this._rendered ) {
      -			this._refreshMenu();
      -		} else {
      -
      -			// Menu clears focus on close, reset focus to selected item
      -			this._removeClass( this.menu.find( ".ui-state-active" ), null, "ui-state-active" );
      -			this.menuInstance.focus( null, this._getSelectedItem() );
      -		}
      -
      -		// If there are no options, don't open the menu
      -		if ( !this.menuItems.length ) {
      -			return;
      -		}
      -
      -		this.isOpen = true;
      -		this._toggleAttr();
      -		this._resizeMenu();
      -		this._position();
      -
      -		this._on( this.document, this._documentClick );
      -
      -		this._trigger( "open", event );
      -	},
      -
      -	_position: function() {
      -		this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
      -	},
      -
      -	close: function( event ) {
      -		if ( !this.isOpen ) {
      -			return;
      -		}
      -
      -		this.isOpen = false;
      -		this._toggleAttr();
      -
      -		this.range = null;
      -		this._off( this.document );
      -
      -		this._trigger( "close", event );
      -	},
      -
      -	widget: function() {
      -		return this.button;
      -	},
      -
      -	menuWidget: function() {
      -		return this.menu;
      -	},
      -
      -	_renderButtonItem: function( item ) {
      -		var buttonItem = $( "<span>" );
      -
      -		this._setText( buttonItem, item.label );
      -		this._addClass( buttonItem, "ui-selectmenu-text" );
      -
      -		return buttonItem;
      -	},
      -
      -	_renderMenu: function( ul, items ) {
      -		var that = this,
      -			currentOptgroup = "";
      -
      -		$.each( items, function( index, item ) {
      -			var li;
      -
      -			if ( item.optgroup !== currentOptgroup ) {
      -				li = $( "<li>", {
      -					text: item.optgroup
      -				} );
      -				that._addClass( li, "ui-selectmenu-optgroup", "ui-menu-divider" +
      -					( item.element.parent( "optgroup" ).prop( "disabled" ) ?
      -						" ui-state-disabled" :
      -						"" ) );
      -
      -				li.appendTo( ul );
      -
      -				currentOptgroup = item.optgroup;
      -			}
      -
      -			that._renderItemData( ul, item );
      -		} );
      -	},
      -
      -	_renderItemData: function( ul, item ) {
      -		return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
      -	},
      -
      -	_renderItem: function( ul, item ) {
      -		var li = $( "<li>" ),
      -			wrapper = $( "<div>", {
      -				title: item.element.attr( "title" )
      -			} );
      -
      -		if ( item.disabled ) {
      -			this._addClass( li, null, "ui-state-disabled" );
      -		}
      -		this._setText( wrapper, item.label );
      -
      -		return li.append( wrapper ).appendTo( ul );
      -	},
      -
      -	_setText: function( element, value ) {
      -		if ( value ) {
      -			element.text( value );
      -		} else {
      -			element.html( "&#160;" );
      -		}
      -	},
      -
      -	_move: function( direction, event ) {
      -		var item, next,
      -			filter = ".ui-menu-item";
      -
      -		if ( this.isOpen ) {
      -			item = this.menuItems.eq( this.focusIndex ).parent( "li" );
      -		} else {
      -			item = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
      -			filter += ":not(.ui-state-disabled)";
      -		}
      -
      -		if ( direction === "first" || direction === "last" ) {
      -			next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
      -		} else {
      -			next = item[ direction + "All" ]( filter ).eq( 0 );
      -		}
      -
      -		if ( next.length ) {
      -			this.menuInstance.focus( event, next );
      -		}
      -	},
      -
      -	_getSelectedItem: function() {
      -		return this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
      -	},
      -
      -	_toggle: function( event ) {
      -		this[ this.isOpen ? "close" : "open" ]( event );
      -	},
      -
      -	_setSelection: function() {
      -		var selection;
      -
      -		if ( !this.range ) {
      -			return;
      -		}
      -
      -		if ( window.getSelection ) {
      -			selection = window.getSelection();
      -			selection.removeAllRanges();
      -			selection.addRange( this.range );
      -
      -		// Support: IE8
      -		} else {
      -			this.range.select();
      -		}
      -
      -		// Support: IE
      -		// Setting the text selection kills the button focus in IE, but
      -		// restoring the focus doesn't kill the selection.
      -		this.button.focus();
      -	},
      -
      -	_documentClick: {
      -		mousedown: function( event ) {
      -			if ( !this.isOpen ) {
      -				return;
      -			}
      -
      -			if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
      -					$.ui.escapeSelector( this.ids.button ) ).length ) {
      -				this.close( event );
      -			}
      -		}
      -	},
      -
      -	_buttonEvents: {
      -
      -		// Prevent text selection from being reset when interacting with the selectmenu (#10144)
      -		mousedown: function() {
      -			var selection;
      -
      -			if ( window.getSelection ) {
      -				selection = window.getSelection();
      -				if ( selection.rangeCount ) {
      -					this.range = selection.getRangeAt( 0 );
      -				}
      -
      -			// Support: IE8
      -			} else {
      -				this.range = document.selection.createRange();
      -			}
      -		},
      -
      -		click: function( event ) {
      -			this._setSelection();
      -			this._toggle( event );
      -		},
      -
      -		keydown: function( event ) {
      -			var preventDefault = true;
      -			switch ( event.keyCode ) {
      -			case $.ui.keyCode.TAB:
      -			case $.ui.keyCode.ESCAPE:
      -				this.close( event );
      -				preventDefault = false;
      -				break;
      -			case $.ui.keyCode.ENTER:
      -				if ( this.isOpen ) {
      -					this._selectFocusedItem( event );
      -				}
      -				break;
      -			case $.ui.keyCode.UP:
      -				if ( event.altKey ) {
      -					this._toggle( event );
      -				} else {
      -					this._move( "prev", event );
      -				}
      -				break;
      -			case $.ui.keyCode.DOWN:
      -				if ( event.altKey ) {
      -					this._toggle( event );
      -				} else {
      -					this._move( "next", event );
      -				}
      -				break;
      -			case $.ui.keyCode.SPACE:
      -				if ( this.isOpen ) {
      -					this._selectFocusedItem( event );
      -				} else {
      -					this._toggle( event );
      -				}
      -				break;
      -			case $.ui.keyCode.LEFT:
      -				this._move( "prev", event );
      -				break;
      -			case $.ui.keyCode.RIGHT:
      -				this._move( "next", event );
      -				break;
      -			case $.ui.keyCode.HOME:
      -			case $.ui.keyCode.PAGE_UP:
      -				this._move( "first", event );
      -				break;
      -			case $.ui.keyCode.END:
      -			case $.ui.keyCode.PAGE_DOWN:
      -				this._move( "last", event );
      -				break;
      -			default:
      -				this.menu.trigger( event );
      -				preventDefault = false;
      -			}
      -
      -			if ( preventDefault ) {
      -				event.preventDefault();
      -			}
      -		}
      -	},
      -
      -	_selectFocusedItem: function( event ) {
      -		var item = this.menuItems.eq( this.focusIndex ).parent( "li" );
      -		if ( !item.hasClass( "ui-state-disabled" ) ) {
      -			this._select( item.data( "ui-selectmenu-item" ), event );
      -		}
      -	},
      -
      -	_select: function( item, event ) {
      -		var oldIndex = this.element[ 0 ].selectedIndex;
      -
      -		// Change native select element
      -		this.element[ 0 ].selectedIndex = item.index;
      -		this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );
      -		this._setAria( item );
      -		this._trigger( "select", event, { item: item } );
      -
      -		if ( item.index !== oldIndex ) {
      -			this._trigger( "change", event, { item: item } );
      -		}
      -
      -		this.close( event );
      -	},
      -
      -	_setAria: function( item ) {
      -		var id = this.menuItems.eq( item.index ).attr( "id" );
      -
      -		this.button.attr( {
      -			"aria-labelledby": id,
      -			"aria-activedescendant": id
      -		} );
      -		this.menu.attr( "aria-activedescendant", id );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "icons" ) {
      -			var icon = this.button.find( "span.ui-icon" );
      -			this._removeClass( icon, null, this.options.icons.button )
      -				._addClass( icon, null, value.button );
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "appendTo" ) {
      -			this.menuWrap.appendTo( this._appendTo() );
      -		}
      -
      -		if ( key === "width" ) {
      -			this._resizeButton();
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.menuInstance.option( "disabled", value );
      -		this.button.attr( "aria-disabled", value );
      -		this._toggleClass( this.button, null, "ui-state-disabled", value );
      -
      -		this.element.prop( "disabled", value );
      -		if ( value ) {
      -			this.button.attr( "tabindex", -1 );
      -			this.close();
      -		} else {
      -			this.button.attr( "tabindex", 0 );
      -		}
      -	},
      -
      -	_appendTo: function() {
      -		var element = this.options.appendTo;
      -
      -		if ( element ) {
      -			element = element.jquery || element.nodeType ?
      -				$( element ) :
      -				this.document.find( element ).eq( 0 );
      -		}
      -
      -		if ( !element || !element[ 0 ] ) {
      -			element = this.element.closest( ".ui-front, dialog" );
      -		}
      -
      -		if ( !element.length ) {
      -			element = this.document[ 0 ].body;
      -		}
      -
      -		return element;
      -	},
      -
      -	_toggleAttr: function() {
      -		this.button.attr( "aria-expanded", this.isOpen );
      -
      -		// We can't use two _toggleClass() calls here, because we need to make sure
      -		// we always remove classes first and add them second, otherwise if both classes have the
      -		// same theme class, it will be removed after we add it.
      -		this._removeClass( this.button, "ui-selectmenu-button-" +
      -			( this.isOpen ? "closed" : "open" ) )
      -			._addClass( this.button, "ui-selectmenu-button-" +
      -				( this.isOpen ? "open" : "closed" ) )
      -			._toggleClass( this.menuWrap, "ui-selectmenu-open", null, this.isOpen );
      -
      -		this.menu.attr( "aria-hidden", !this.isOpen );
      -	},
      -
      -	_resizeButton: function() {
      -		var width = this.options.width;
      -
      -		// For `width: false`, just remove inline style and stop
      -		if ( width === false ) {
      -			this.button.css( "width", "" );
      -			return;
      -		}
      -
      -		// For `width: null`, match the width of the original element
      -		if ( width === null ) {
      -			width = this.element.show().outerWidth();
      -			this.element.hide();
      -		}
      -
      -		this.button.outerWidth( width );
      -	},
      -
      -	_resizeMenu: function() {
      -		this.menu.outerWidth( Math.max(
      -			this.button.outerWidth(),
      -
      -			// Support: IE10
      -			// IE10 wraps long text (possibly a rounding bug)
      -			// so we add 1px to avoid the wrapping
      -			this.menu.width( "" ).outerWidth() + 1
      -		) );
      -	},
      -
      -	_getCreateOptions: function() {
      -		var options = this._super();
      -
      -		options.disabled = this.element.prop( "disabled" );
      -
      -		return options;
      -	},
      -
      -	_parseOptions: function( options ) {
      -		var that = this,
      -			data = [];
      -		options.each( function( index, item ) {
      -			data.push( that._parseOption( $( item ), index ) );
      -		} );
      -		this.items = data;
      -	},
      -
      -	_parseOption: function( option, index ) {
      -		var optgroup = option.parent( "optgroup" );
      -
      -		return {
      -			element: option,
      -			index: index,
      -			value: option.val(),
      -			label: option.text(),
      -			optgroup: optgroup.attr( "label" ) || "",
      -			disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
      -		};
      -	},
      -
      -	_destroy: function() {
      -		this._unbindFormResetHandler();
      -		this.menuWrap.remove();
      -		this.button.remove();
      -		this.element.show();
      -		this.element.removeUniqueId();
      -		this.labels.attr( "for", this.ids.element );
      -	}
      -} ] );
      -
      -
      -/*!
      - * jQuery UI Slider 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Slider
      -//>>group: Widgets
      -//>>description: Displays a flexible slider with ranges and accessibility via keyboard.
      -//>>docs: http://api.jqueryui.com/slider/
      -//>>demos: http://jqueryui.com/slider/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/slider.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -var widgetsSlider = $.widget( "ui.slider", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "slide",
      -
      -	options: {
      -		animate: false,
      -		classes: {
      -			"ui-slider": "ui-corner-all",
      -			"ui-slider-handle": "ui-corner-all",
      -
      -			// Note: ui-widget-header isn't the most fittingly semantic framework class for this
      -			// element, but worked best visually with a variety of themes
      -			"ui-slider-range": "ui-corner-all ui-widget-header"
      -		},
      -		distance: 0,
      -		max: 100,
      -		min: 0,
      -		orientation: "horizontal",
      -		range: false,
      -		step: 1,
      -		value: 0,
      -		values: null,
      -
      -		// Callbacks
      -		change: null,
      -		slide: null,
      -		start: null,
      -		stop: null
      -	},
      -
      -	// Number of pages in a slider
      -	// (how many times can you page up/down to go through the whole range)
      -	numPages: 5,
      -
      -	_create: function() {
      -		this._keySliding = false;
      -		this._mouseSliding = false;
      -		this._animateOff = true;
      -		this._handleIndex = null;
      -		this._detectOrientation();
      -		this._mouseInit();
      -		this._calculateNewMax();
      -
      -		this._addClass( "ui-slider ui-slider-" + this.orientation,
      -			"ui-widget ui-widget-content" );
      -
      -		this._refresh();
      -
      -		this._animateOff = false;
      -	},
      -
      -	_refresh: function() {
      -		this._createRange();
      -		this._createHandles();
      -		this._setupEvents();
      -		this._refreshValue();
      -	},
      -
      -	_createHandles: function() {
      -		var i, handleCount,
      -			options = this.options,
      -			existingHandles = this.element.find( ".ui-slider-handle" ),
      -			handle = "<span tabindex='0'></span>",
      -			handles = [];
      -
      -		handleCount = ( options.values && options.values.length ) || 1;
      -
      -		if ( existingHandles.length > handleCount ) {
      -			existingHandles.slice( handleCount ).remove();
      -			existingHandles = existingHandles.slice( 0, handleCount );
      -		}
      -
      -		for ( i = existingHandles.length; i < handleCount; i++ ) {
      -			handles.push( handle );
      -		}
      -
      -		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
      -
      -		this._addClass( this.handles, "ui-slider-handle", "ui-state-default" );
      -
      -		this.handle = this.handles.eq( 0 );
      -
      -		this.handles.each( function( i ) {
      -			$( this )
      -				.data( "ui-slider-handle-index", i )
      -				.attr( "tabIndex", 0 );
      -		} );
      -	},
      -
      -	_createRange: function() {
      -		var options = this.options;
      -
      -		if ( options.range ) {
      -			if ( options.range === true ) {
      -				if ( !options.values ) {
      -					options.values = [ this._valueMin(), this._valueMin() ];
      -				} else if ( options.values.length && options.values.length !== 2 ) {
      -					options.values = [ options.values[ 0 ], options.values[ 0 ] ];
      -				} else if ( $.isArray( options.values ) ) {
      -					options.values = options.values.slice( 0 );
      -				}
      -			}
      -
      -			if ( !this.range || !this.range.length ) {
      -				this.range = $( "<div>" )
      -					.appendTo( this.element );
      -
      -				this._addClass( this.range, "ui-slider-range" );
      -			} else {
      -				this._removeClass( this.range, "ui-slider-range-min ui-slider-range-max" );
      -
      -				// Handle range switching from true to min/max
      -				this.range.css( {
      -					"left": "",
      -					"bottom": ""
      -				} );
      -			}
      -			if ( options.range === "min" || options.range === "max" ) {
      -				this._addClass( this.range, "ui-slider-range-" + options.range );
      -			}
      -		} else {
      -			if ( this.range ) {
      -				this.range.remove();
      -			}
      -			this.range = null;
      -		}
      -	},
      -
      -	_setupEvents: function() {
      -		this._off( this.handles );
      -		this._on( this.handles, this._handleEvents );
      -		this._hoverable( this.handles );
      -		this._focusable( this.handles );
      -	},
      -
      -	_destroy: function() {
      -		this.handles.remove();
      -		if ( this.range ) {
      -			this.range.remove();
      -		}
      -
      -		this._mouseDestroy();
      -	},
      -
      -	_mouseCapture: function( event ) {
      -		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
      -			that = this,
      -			o = this.options;
      -
      -		if ( o.disabled ) {
      -			return false;
      -		}
      -
      -		this.elementSize = {
      -			width: this.element.outerWidth(),
      -			height: this.element.outerHeight()
      -		};
      -		this.elementOffset = this.element.offset();
      -
      -		position = { x: event.pageX, y: event.pageY };
      -		normValue = this._normValueFromMouse( position );
      -		distance = this._valueMax() - this._valueMin() + 1;
      -		this.handles.each( function( i ) {
      -			var thisDistance = Math.abs( normValue - that.values( i ) );
      -			if ( ( distance > thisDistance ) ||
      -				( distance === thisDistance &&
      -					( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {
      -				distance = thisDistance;
      -				closestHandle = $( this );
      -				index = i;
      -			}
      -		} );
      -
      -		allowed = this._start( event, index );
      -		if ( allowed === false ) {
      -			return false;
      -		}
      -		this._mouseSliding = true;
      -
      -		this._handleIndex = index;
      -
      -		this._addClass( closestHandle, null, "ui-state-active" );
      -		closestHandle.trigger( "focus" );
      -
      -		offset = closestHandle.offset();
      -		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
      -		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
      -			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
      -			top: event.pageY - offset.top -
      -				( closestHandle.height() / 2 ) -
      -				( parseInt( closestHandle.css( "borderTopWidth" ), 10 ) || 0 ) -
      -				( parseInt( closestHandle.css( "borderBottomWidth" ), 10 ) || 0 ) +
      -				( parseInt( closestHandle.css( "marginTop" ), 10 ) || 0 )
      -		};
      -
      -		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
      -			this._slide( event, index, normValue );
      -		}
      -		this._animateOff = true;
      -		return true;
      -	},
      -
      -	_mouseStart: function() {
      -		return true;
      -	},
      -
      -	_mouseDrag: function( event ) {
      -		var position = { x: event.pageX, y: event.pageY },
      -			normValue = this._normValueFromMouse( position );
      -
      -		this._slide( event, this._handleIndex, normValue );
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -		this._removeClass( this.handles, null, "ui-state-active" );
      -		this._mouseSliding = false;
      -
      -		this._stop( event, this._handleIndex );
      -		this._change( event, this._handleIndex );
      -
      -		this._handleIndex = null;
      -		this._clickOffset = null;
      -		this._animateOff = false;
      -
      -		return false;
      -	},
      -
      -	_detectOrientation: function() {
      -		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
      -	},
      -
      -	_normValueFromMouse: function( position ) {
      -		var pixelTotal,
      -			pixelMouse,
      -			percentMouse,
      -			valueTotal,
      -			valueMouse;
      -
      -		if ( this.orientation === "horizontal" ) {
      -			pixelTotal = this.elementSize.width;
      -			pixelMouse = position.x - this.elementOffset.left -
      -				( this._clickOffset ? this._clickOffset.left : 0 );
      -		} else {
      -			pixelTotal = this.elementSize.height;
      -			pixelMouse = position.y - this.elementOffset.top -
      -				( this._clickOffset ? this._clickOffset.top : 0 );
      -		}
      -
      -		percentMouse = ( pixelMouse / pixelTotal );
      -		if ( percentMouse > 1 ) {
      -			percentMouse = 1;
      -		}
      -		if ( percentMouse < 0 ) {
      -			percentMouse = 0;
      -		}
      -		if ( this.orientation === "vertical" ) {
      -			percentMouse = 1 - percentMouse;
      -		}
      -
      -		valueTotal = this._valueMax() - this._valueMin();
      -		valueMouse = this._valueMin() + percentMouse * valueTotal;
      -
      -		return this._trimAlignValue( valueMouse );
      -	},
      -
      -	_uiHash: function( index, value, values ) {
      -		var uiHash = {
      -			handle: this.handles[ index ],
      -			handleIndex: index,
      -			value: value !== undefined ? value : this.value()
      -		};
      -
      -		if ( this._hasMultipleValues() ) {
      -			uiHash.value = value !== undefined ? value : this.values( index );
      -			uiHash.values = values || this.values();
      -		}
      -
      -		return uiHash;
      -	},
      -
      -	_hasMultipleValues: function() {
      -		return this.options.values && this.options.values.length;
      -	},
      -
      -	_start: function( event, index ) {
      -		return this._trigger( "start", event, this._uiHash( index ) );
      -	},
      -
      -	_slide: function( event, index, newVal ) {
      -		var allowed, otherVal,
      -			currentValue = this.value(),
      -			newValues = this.values();
      -
      -		if ( this._hasMultipleValues() ) {
      -			otherVal = this.values( index ? 0 : 1 );
      -			currentValue = this.values( index );
      -
      -			if ( this.options.values.length === 2 && this.options.range === true ) {
      -				newVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );
      -			}
      -
      -			newValues[ index ] = newVal;
      -		}
      -
      -		if ( newVal === currentValue ) {
      -			return;
      -		}
      -
      -		allowed = this._trigger( "slide", event, this._uiHash( index, newVal, newValues ) );
      -
      -		// A slide can be canceled by returning false from the slide callback
      -		if ( allowed === false ) {
      -			return;
      -		}
      -
      -		if ( this._hasMultipleValues() ) {
      -			this.values( index, newVal );
      -		} else {
      -			this.value( newVal );
      -		}
      -	},
      -
      -	_stop: function( event, index ) {
      -		this._trigger( "stop", event, this._uiHash( index ) );
      -	},
      -
      -	_change: function( event, index ) {
      -		if ( !this._keySliding && !this._mouseSliding ) {
      -
      -			//store the last changed value index for reference when handles overlap
      -			this._lastChangedValue = index;
      -			this._trigger( "change", event, this._uiHash( index ) );
      -		}
      -	},
      -
      -	value: function( newValue ) {
      -		if ( arguments.length ) {
      -			this.options.value = this._trimAlignValue( newValue );
      -			this._refreshValue();
      -			this._change( null, 0 );
      -			return;
      -		}
      -
      -		return this._value();
      -	},
      -
      -	values: function( index, newValue ) {
      -		var vals,
      -			newValues,
      -			i;
      -
      -		if ( arguments.length > 1 ) {
      -			this.options.values[ index ] = this._trimAlignValue( newValue );
      -			this._refreshValue();
      -			this._change( null, index );
      -			return;
      -		}
      -
      -		if ( arguments.length ) {
      -			if ( $.isArray( arguments[ 0 ] ) ) {
      -				vals = this.options.values;
      -				newValues = arguments[ 0 ];
      -				for ( i = 0; i < vals.length; i += 1 ) {
      -					vals[ i ] = this._trimAlignValue( newValues[ i ] );
      -					this._change( null, i );
      -				}
      -				this._refreshValue();
      -			} else {
      -				if ( this._hasMultipleValues() ) {
      -					return this._values( index );
      -				} else {
      -					return this.value();
      -				}
      -			}
      -		} else {
      -			return this._values();
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var i,
      -			valsLength = 0;
      -
      -		if ( key === "range" && this.options.range === true ) {
      -			if ( value === "min" ) {
      -				this.options.value = this._values( 0 );
      -				this.options.values = null;
      -			} else if ( value === "max" ) {
      -				this.options.value = this._values( this.options.values.length - 1 );
      -				this.options.values = null;
      -			}
      -		}
      -
      -		if ( $.isArray( this.options.values ) ) {
      -			valsLength = this.options.values.length;
      -		}
      -
      -		this._super( key, value );
      -
      -		switch ( key ) {
      -			case "orientation":
      -				this._detectOrientation();
      -				this._removeClass( "ui-slider-horizontal ui-slider-vertical" )
      -					._addClass( "ui-slider-" + this.orientation );
      -				this._refreshValue();
      -				if ( this.options.range ) {
      -					this._refreshRange( value );
      -				}
      -
      -				// Reset positioning from previous orientation
      -				this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
      -				break;
      -			case "value":
      -				this._animateOff = true;
      -				this._refreshValue();
      -				this._change( null, 0 );
      -				this._animateOff = false;
      -				break;
      -			case "values":
      -				this._animateOff = true;
      -				this._refreshValue();
      -
      -				// Start from the last handle to prevent unreachable handles (#9046)
      -				for ( i = valsLength - 1; i >= 0; i-- ) {
      -					this._change( null, i );
      -				}
      -				this._animateOff = false;
      -				break;
      -			case "step":
      -			case "min":
      -			case "max":
      -				this._animateOff = true;
      -				this._calculateNewMax();
      -				this._refreshValue();
      -				this._animateOff = false;
      -				break;
      -			case "range":
      -				this._animateOff = true;
      -				this._refresh();
      -				this._animateOff = false;
      -				break;
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -	},
      -
      -	//internal value getter
      -	// _value() returns value trimmed by min and max, aligned by step
      -	_value: function() {
      -		var val = this.options.value;
      -		val = this._trimAlignValue( val );
      -
      -		return val;
      -	},
      -
      -	//internal values getter
      -	// _values() returns array of values trimmed by min and max, aligned by step
      -	// _values( index ) returns single value trimmed by min and max, aligned by step
      -	_values: function( index ) {
      -		var val,
      -			vals,
      -			i;
      -
      -		if ( arguments.length ) {
      -			val = this.options.values[ index ];
      -			val = this._trimAlignValue( val );
      -
      -			return val;
      -		} else if ( this._hasMultipleValues() ) {
      -
      -			// .slice() creates a copy of the array
      -			// this copy gets trimmed by min and max and then returned
      -			vals = this.options.values.slice();
      -			for ( i = 0; i < vals.length; i += 1 ) {
      -				vals[ i ] = this._trimAlignValue( vals[ i ] );
      -			}
      -
      -			return vals;
      -		} else {
      -			return [];
      -		}
      -	},
      -
      -	// Returns the step-aligned value that val is closest to, between (inclusive) min and max
      -	_trimAlignValue: function( val ) {
      -		if ( val <= this._valueMin() ) {
      -			return this._valueMin();
      -		}
      -		if ( val >= this._valueMax() ) {
      -			return this._valueMax();
      -		}
      -		var step = ( this.options.step > 0 ) ? this.options.step : 1,
      -			valModStep = ( val - this._valueMin() ) % step,
      -			alignValue = val - valModStep;
      -
      -		if ( Math.abs( valModStep ) * 2 >= step ) {
      -			alignValue += ( valModStep > 0 ) ? step : ( -step );
      -		}
      -
      -		// Since JavaScript has problems with large floats, round
      -		// the final value to 5 digits after the decimal point (see #4124)
      -		return parseFloat( alignValue.toFixed( 5 ) );
      -	},
      -
      -	_calculateNewMax: function() {
      -		var max = this.options.max,
      -			min = this._valueMin(),
      -			step = this.options.step,
      -			aboveMin = Math.round( ( max - min ) / step ) * step;
      -		max = aboveMin + min;
      -		if ( max > this.options.max ) {
      -
      -			//If max is not divisible by step, rounding off may increase its value
      -			max -= step;
      -		}
      -		this.max = parseFloat( max.toFixed( this._precision() ) );
      -	},
      -
      -	_precision: function() {
      -		var precision = this._precisionOf( this.options.step );
      -		if ( this.options.min !== null ) {
      -			precision = Math.max( precision, this._precisionOf( this.options.min ) );
      -		}
      -		return precision;
      -	},
      -
      -	_precisionOf: function( num ) {
      -		var str = num.toString(),
      -			decimal = str.indexOf( "." );
      -		return decimal === -1 ? 0 : str.length - decimal - 1;
      -	},
      -
      -	_valueMin: function() {
      -		return this.options.min;
      -	},
      -
      -	_valueMax: function() {
      -		return this.max;
      -	},
      -
      -	_refreshRange: function( orientation ) {
      -		if ( orientation === "vertical" ) {
      -			this.range.css( { "width": "", "left": "" } );
      -		}
      -		if ( orientation === "horizontal" ) {
      -			this.range.css( { "height": "", "bottom": "" } );
      -		}
      -	},
      -
      -	_refreshValue: function() {
      -		var lastValPercent, valPercent, value, valueMin, valueMax,
      -			oRange = this.options.range,
      -			o = this.options,
      -			that = this,
      -			animate = ( !this._animateOff ) ? o.animate : false,
      -			_set = {};
      -
      -		if ( this._hasMultipleValues() ) {
      -			this.handles.each( function( i ) {
      -				valPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -
      -					that._valueMin() ) * 100;
      -				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
      -				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
      -				if ( that.options.range === true ) {
      -					if ( that.orientation === "horizontal" ) {
      -						if ( i === 0 ) {
      -							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -								left: valPercent + "%"
      -							}, o.animate );
      -						}
      -						if ( i === 1 ) {
      -							that.range[ animate ? "animate" : "css" ]( {
      -								width: ( valPercent - lastValPercent ) + "%"
      -							}, {
      -								queue: false,
      -								duration: o.animate
      -							} );
      -						}
      -					} else {
      -						if ( i === 0 ) {
      -							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -								bottom: ( valPercent ) + "%"
      -							}, o.animate );
      -						}
      -						if ( i === 1 ) {
      -							that.range[ animate ? "animate" : "css" ]( {
      -								height: ( valPercent - lastValPercent ) + "%"
      -							}, {
      -								queue: false,
      -								duration: o.animate
      -							} );
      -						}
      -					}
      -				}
      -				lastValPercent = valPercent;
      -			} );
      -		} else {
      -			value = this.value();
      -			valueMin = this._valueMin();
      -			valueMax = this._valueMax();
      -			valPercent = ( valueMax !== valueMin ) ?
      -					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
      -					0;
      -			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
      -			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
      -
      -			if ( oRange === "min" && this.orientation === "horizontal" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					width: valPercent + "%"
      -				}, o.animate );
      -			}
      -			if ( oRange === "max" && this.orientation === "horizontal" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					width: ( 100 - valPercent ) + "%"
      -				}, o.animate );
      -			}
      -			if ( oRange === "min" && this.orientation === "vertical" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					height: valPercent + "%"
      -				}, o.animate );
      -			}
      -			if ( oRange === "max" && this.orientation === "vertical" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					height: ( 100 - valPercent ) + "%"
      -				}, o.animate );
      -			}
      -		}
      -	},
      -
      -	_handleEvents: {
      -		keydown: function( event ) {
      -			var allowed, curVal, newVal, step,
      -				index = $( event.target ).data( "ui-slider-handle-index" );
      -
      -			switch ( event.keyCode ) {
      -				case $.ui.keyCode.HOME:
      -				case $.ui.keyCode.END:
      -				case $.ui.keyCode.PAGE_UP:
      -				case $.ui.keyCode.PAGE_DOWN:
      -				case $.ui.keyCode.UP:
      -				case $.ui.keyCode.RIGHT:
      -				case $.ui.keyCode.DOWN:
      -				case $.ui.keyCode.LEFT:
      -					event.preventDefault();
      -					if ( !this._keySliding ) {
      -						this._keySliding = true;
      -						this._addClass( $( event.target ), null, "ui-state-active" );
      -						allowed = this._start( event, index );
      -						if ( allowed === false ) {
      -							return;
      -						}
      -					}
      -					break;
      -			}
      -
      -			step = this.options.step;
      -			if ( this._hasMultipleValues() ) {
      -				curVal = newVal = this.values( index );
      -			} else {
      -				curVal = newVal = this.value();
      -			}
      -
      -			switch ( event.keyCode ) {
      -				case $.ui.keyCode.HOME:
      -					newVal = this._valueMin();
      -					break;
      -				case $.ui.keyCode.END:
      -					newVal = this._valueMax();
      -					break;
      -				case $.ui.keyCode.PAGE_UP:
      -					newVal = this._trimAlignValue(
      -						curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
      -					);
      -					break;
      -				case $.ui.keyCode.PAGE_DOWN:
      -					newVal = this._trimAlignValue(
      -						curVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );
      -					break;
      -				case $.ui.keyCode.UP:
      -				case $.ui.keyCode.RIGHT:
      -					if ( curVal === this._valueMax() ) {
      -						return;
      -					}
      -					newVal = this._trimAlignValue( curVal + step );
      -					break;
      -				case $.ui.keyCode.DOWN:
      -				case $.ui.keyCode.LEFT:
      -					if ( curVal === this._valueMin() ) {
      -						return;
      -					}
      -					newVal = this._trimAlignValue( curVal - step );
      -					break;
      -			}
      -
      -			this._slide( event, index, newVal );
      -		},
      -		keyup: function( event ) {
      -			var index = $( event.target ).data( "ui-slider-handle-index" );
      -
      -			if ( this._keySliding ) {
      -				this._keySliding = false;
      -				this._stop( event, index );
      -				this._change( event, index );
      -				this._removeClass( $( event.target ), null, "ui-state-active" );
      -			}
      -		}
      -	}
      -} );
      -
      -
      -/*!
      - * jQuery UI Sortable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Sortable
      -//>>group: Interactions
      -//>>description: Enables items in a list to be sorted using the mouse.
      -//>>docs: http://api.jqueryui.com/sortable/
      -//>>demos: http://jqueryui.com/sortable/
      -//>>css.structure: ../../themes/base/sortable.css
      -
      -
      -
      -var widgetsSortable = $.widget( "ui.sortable", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "sort",
      -	ready: false,
      -	options: {
      -		appendTo: "parent",
      -		axis: false,
      -		connectWith: false,
      -		containment: false,
      -		cursor: "auto",
      -		cursorAt: false,
      -		dropOnEmpty: true,
      -		forcePlaceholderSize: false,
      -		forceHelperSize: false,
      -		grid: false,
      -		handle: false,
      -		helper: "original",
      -		items: "> *",
      -		opacity: false,
      -		placeholder: false,
      -		revert: false,
      -		scroll: true,
      -		scrollSensitivity: 20,
      -		scrollSpeed: 20,
      -		scope: "default",
      -		tolerance: "intersect",
      -		zIndex: 1000,
      -
      -		// Callbacks
      -		activate: null,
      -		beforeStop: null,
      -		change: null,
      -		deactivate: null,
      -		out: null,
      -		over: null,
      -		receive: null,
      -		remove: null,
      -		sort: null,
      -		start: null,
      -		stop: null,
      -		update: null
      -	},
      -
      -	_isOverAxis: function( x, reference, size ) {
      -		return ( x >= reference ) && ( x < ( reference + size ) );
      -	},
      -
      -	_isFloating: function( item ) {
      -		return ( /left|right/ ).test( item.css( "float" ) ) ||
      -			( /inline|table-cell/ ).test( item.css( "display" ) );
      -	},
      -
      -	_create: function() {
      -		this.containerCache = {};
      -		this._addClass( "ui-sortable" );
      -
      -		//Get the items
      -		this.refresh();
      -
      -		//Let's determine the parent's offset
      -		this.offset = this.element.offset();
      -
      -		//Initialize mouse events for interaction
      -		this._mouseInit();
      -
      -		this._setHandleClassName();
      -
      -		//We're ready to go
      -		this.ready = true;
      -
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -
      -		if ( key === "handle" ) {
      -			this._setHandleClassName();
      -		}
      -	},
      -
      -	_setHandleClassName: function() {
      -		var that = this;
      -		this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" );
      -		$.each( this.items, function() {
      -			that._addClass(
      -				this.instance.options.handle ?
      -					this.item.find( this.instance.options.handle ) :
      -					this.item,
      -				"ui-sortable-handle"
      -			);
      -		} );
      -	},
      -
      -	_destroy: function() {
      -		this._mouseDestroy();
      -
      -		for ( var i = this.items.length - 1; i >= 0; i-- ) {
      -			this.items[ i ].item.removeData( this.widgetName + "-item" );
      -		}
      -
      -		return this;
      -	},
      -
      -	_mouseCapture: function( event, overrideHandle ) {
      -		var currentItem = null,
      -			validHandle = false,
      -			that = this;
      -
      -		if ( this.reverting ) {
      -			return false;
      -		}
      -
      -		if ( this.options.disabled || this.options.type === "static" ) {
      -			return false;
      -		}
      -
      -		//We have to refresh the items data once first
      -		this._refreshItems( event );
      -
      -		//Find out if the clicked node (or one of its parents) is a actual item in this.items
      -		$( event.target ).parents().each( function() {
      -			if ( $.data( this, that.widgetName + "-item" ) === that ) {
      -				currentItem = $( this );
      -				return false;
      -			}
      -		} );
      -		if ( $.data( event.target, that.widgetName + "-item" ) === that ) {
      -			currentItem = $( event.target );
      -		}
      -
      -		if ( !currentItem ) {
      -			return false;
      -		}
      -		if ( this.options.handle && !overrideHandle ) {
      -			$( this.options.handle, currentItem ).find( "*" ).addBack().each( function() {
      -				if ( this === event.target ) {
      -					validHandle = true;
      -				}
      -			} );
      -			if ( !validHandle ) {
      -				return false;
      -			}
      -		}
      -
      -		this.currentItem = currentItem;
      -		this._removeCurrentsFromItems();
      -		return true;
      -
      -	},
      -
      -	_mouseStart: function( event, overrideHandle, noActivation ) {
      -
      -		var i, body,
      -			o = this.options;
      -
      -		this.currentContainer = this;
      -
      -		//We only need to call refreshPositions, because the refreshItems call has been moved to
      -		// mouseCapture
      -		this.refreshPositions();
      -
      -		//Create and append the visible helper
      -		this.helper = this._createHelper( event );
      -
      -		//Cache the helper size
      -		this._cacheHelperProportions();
      -
      -		/*
      -		 * - Position generation -
      -		 * This block generates everything position related - it's the core of draggables.
      -		 */
      -
      -		//Cache the margins of the original element
      -		this._cacheMargins();
      -
      -		//Get the next scrolling parent
      -		this.scrollParent = this.helper.scrollParent();
      -
      -		//The element's absolute position on the page minus margins
      -		this.offset = this.currentItem.offset();
      -		this.offset = {
      -			top: this.offset.top - this.margins.top,
      -			left: this.offset.left - this.margins.left
      -		};
      -
      -		$.extend( this.offset, {
      -			click: { //Where the click happened, relative to the element
      -				left: event.pageX - this.offset.left,
      -				top: event.pageY - this.offset.top
      -			},
      -			parent: this._getParentOffset(),
      -
      -			// This is a relative to absolute position minus the actual position calculation -
      -			// only used for relative positioned helper
      -			relative: this._getRelativeOffset()
      -		} );
      -
      -		// Only after we got the offset, we can change the helper's position to absolute
      -		// TODO: Still need to figure out a way to make relative sorting possible
      -		this.helper.css( "position", "absolute" );
      -		this.cssPosition = this.helper.css( "position" );
      -
      -		//Generate the original position
      -		this.originalPosition = this._generatePosition( event );
      -		this.originalPageX = event.pageX;
      -		this.originalPageY = event.pageY;
      -
      -		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
      -		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
      -
      -		//Cache the former DOM position
      -		this.domPosition = {
      -			prev: this.currentItem.prev()[ 0 ],
      -			parent: this.currentItem.parent()[ 0 ]
      -		};
      -
      -		// If the helper is not the original, hide the original so it's not playing any role during
      -		// the drag, won't cause anything bad this way
      -		if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
      -			this.currentItem.hide();
      -		}
      -
      -		//Create the placeholder
      -		this._createPlaceholder();
      -
      -		//Set a containment if given in the options
      -		if ( o.containment ) {
      -			this._setContainment();
      -		}
      -
      -		if ( o.cursor && o.cursor !== "auto" ) { // cursor option
      -			body = this.document.find( "body" );
      -
      -			// Support: IE
      -			this.storedCursor = body.css( "cursor" );
      -			body.css( "cursor", o.cursor );
      -
      -			this.storedStylesheet =
      -				$( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
      -		}
      -
      -		if ( o.opacity ) { // opacity option
      -			if ( this.helper.css( "opacity" ) ) {
      -				this._storedOpacity = this.helper.css( "opacity" );
      -			}
      -			this.helper.css( "opacity", o.opacity );
      -		}
      -
      -		if ( o.zIndex ) { // zIndex option
      -			if ( this.helper.css( "zIndex" ) ) {
      -				this._storedZIndex = this.helper.css( "zIndex" );
      -			}
      -			this.helper.css( "zIndex", o.zIndex );
      -		}
      -
      -		//Prepare scrolling
      -		if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				this.scrollParent[ 0 ].tagName !== "HTML" ) {
      -			this.overflowOffset = this.scrollParent.offset();
      -		}
      -
      -		//Call callbacks
      -		this._trigger( "start", event, this._uiHash() );
      -
      -		//Recache the helper size
      -		if ( !this._preserveHelperProportions ) {
      -			this._cacheHelperProportions();
      -		}
      -
      -		//Post "activate" events to possible containers
      -		if ( !noActivation ) {
      -			for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
      -			}
      -		}
      -
      -		//Prepare possible droppables
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.current = this;
      -		}
      -
      -		if ( $.ui.ddmanager && !o.dropBehaviour ) {
      -			$.ui.ddmanager.prepareOffsets( this, event );
      -		}
      -
      -		this.dragging = true;
      -
      -		this._addClass( this.helper, "ui-sortable-helper" );
      -
      -		// Execute the drag once - this causes the helper not to be visiblebefore getting its
      -		// correct position
      -		this._mouseDrag( event );
      -		return true;
      -
      -	},
      -
      -	_mouseDrag: function( event ) {
      -		var i, item, itemElement, intersection,
      -			o = this.options,
      -			scrolled = false;
      -
      -		//Compute the helpers position
      -		this.position = this._generatePosition( event );
      -		this.positionAbs = this._convertPositionTo( "absolute" );
      -
      -		if ( !this.lastPositionAbs ) {
      -			this.lastPositionAbs = this.positionAbs;
      -		}
      -
      -		//Do scrolling
      -		if ( this.options.scroll ) {
      -			if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -					this.scrollParent[ 0 ].tagName !== "HTML" ) {
      -
      -				if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
      -						event.pageY < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollTop =
      -						scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
      -				} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollTop =
      -						scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
      -				}
      -
      -				if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
      -						event.pageX < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollLeft = scrolled =
      -						this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
      -				} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollLeft = scrolled =
      -						this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
      -				}
      -
      -			} else {
      -
      -				if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
      -					scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
      -				} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
      -				}
      -
      -				if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
      -					scrolled = this.document.scrollLeft(
      -						this.document.scrollLeft() - o.scrollSpeed
      -					);
      -				} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = this.document.scrollLeft(
      -						this.document.scrollLeft() + o.scrollSpeed
      -					);
      -				}
      -
      -			}
      -
      -			if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
      -				$.ui.ddmanager.prepareOffsets( this, event );
      -			}
      -		}
      -
      -		//Regenerate the absolute position used for position checks
      -		this.positionAbs = this._convertPositionTo( "absolute" );
      -
      -		//Set the helper position
      -		if ( !this.options.axis || this.options.axis !== "y" ) {
      -			this.helper[ 0 ].style.left = this.position.left + "px";
      -		}
      -		if ( !this.options.axis || this.options.axis !== "x" ) {
      -			this.helper[ 0 ].style.top = this.position.top + "px";
      -		}
      -
      -		//Rearrange
      -		for ( i = this.items.length - 1; i >= 0; i-- ) {
      -
      -			//Cache variables and intersection, continue if no intersection
      -			item = this.items[ i ];
      -			itemElement = item.item[ 0 ];
      -			intersection = this._intersectsWithPointer( item );
      -			if ( !intersection ) {
      -				continue;
      -			}
      -
      -			// Only put the placeholder inside the current Container, skip all
      -			// items from other containers. This works because when moving
      -			// an item from one container to another the
      -			// currentContainer is switched before the placeholder is moved.
      -			//
      -			// Without this, moving items in "sub-sortables" can cause
      -			// the placeholder to jitter between the outer and inner container.
      -			if ( item.instance !== this.currentContainer ) {
      -				continue;
      -			}
      -
      -			// Cannot intersect with itself
      -			// no useless actions that have been done before
      -			// no action if the item moved is the parent of the item checked
      -			if ( itemElement !== this.currentItem[ 0 ] &&
      -				this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement &&
      -				!$.contains( this.placeholder[ 0 ], itemElement ) &&
      -				( this.options.type === "semi-dynamic" ?
      -					!$.contains( this.element[ 0 ], itemElement ) :
      -					true
      -				)
      -			) {
      -
      -				this.direction = intersection === 1 ? "down" : "up";
      -
      -				if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) {
      -					this._rearrange( event, item );
      -				} else {
      -					break;
      -				}
      -
      -				this._trigger( "change", event, this._uiHash() );
      -				break;
      -			}
      -		}
      -
      -		//Post events to containers
      -		this._contactContainers( event );
      -
      -		//Interconnect with droppables
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.drag( this, event );
      -		}
      -
      -		//Call callbacks
      -		this._trigger( "sort", event, this._uiHash() );
      -
      -		this.lastPositionAbs = this.positionAbs;
      -		return false;
      -
      -	},
      -
      -	_mouseStop: function( event, noPropagation ) {
      -
      -		if ( !event ) {
      -			return;
      -		}
      -
      -		//If we are using droppables, inform the manager about the drop
      -		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
      -			$.ui.ddmanager.drop( this, event );
      -		}
      -
      -		if ( this.options.revert ) {
      -			var that = this,
      -				cur = this.placeholder.offset(),
      -				axis = this.options.axis,
      -				animation = {};
      -
      -			if ( !axis || axis === "x" ) {
      -				animation.left = cur.left - this.offset.parent.left - this.margins.left +
      -					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
      -						0 :
      -						this.offsetParent[ 0 ].scrollLeft
      -					);
      -			}
      -			if ( !axis || axis === "y" ) {
      -				animation.top = cur.top - this.offset.parent.top - this.margins.top +
      -					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
      -						0 :
      -						this.offsetParent[ 0 ].scrollTop
      -					);
      -			}
      -			this.reverting = true;
      -			$( this.helper ).animate(
      -				animation,
      -				parseInt( this.options.revert, 10 ) || 500,
      -				function() {
      -					that._clear( event );
      -				}
      -			);
      -		} else {
      -			this._clear( event, noPropagation );
      -		}
      -
      -		return false;
      -
      -	},
      -
      -	cancel: function() {
      -
      -		if ( this.dragging ) {
      -
      -			this._mouseUp( new $.Event( "mouseup", { target: null } ) );
      -
      -			if ( this.options.helper === "original" ) {
      -				this.currentItem.css( this._storedCSS );
      -				this._removeClass( this.currentItem, "ui-sortable-helper" );
      -			} else {
      -				this.currentItem.show();
      -			}
      -
      -			//Post deactivating events to containers
      -			for ( var i = this.containers.length - 1; i >= 0; i-- ) {
      -				this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) );
      -				if ( this.containers[ i ].containerCache.over ) {
      -					this.containers[ i ]._trigger( "out", null, this._uiHash( this ) );
      -					this.containers[ i ].containerCache.over = 0;
      -				}
      -			}
      -
      -		}
      -
      -		if ( this.placeholder ) {
      -
      -			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
      -			// it unbinds ALL events from the original node!
      -			if ( this.placeholder[ 0 ].parentNode ) {
      -				this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
      -			}
      -			if ( this.options.helper !== "original" && this.helper &&
      -					this.helper[ 0 ].parentNode ) {
      -				this.helper.remove();
      -			}
      -
      -			$.extend( this, {
      -				helper: null,
      -				dragging: false,
      -				reverting: false,
      -				_noFinalSort: null
      -			} );
      -
      -			if ( this.domPosition.prev ) {
      -				$( this.domPosition.prev ).after( this.currentItem );
      -			} else {
      -				$( this.domPosition.parent ).prepend( this.currentItem );
      -			}
      -		}
      -
      -		return this;
      -
      -	},
      -
      -	serialize: function( o ) {
      -
      -		var items = this._getItemsAsjQuery( o && o.connected ),
      -			str = [];
      -		o = o || {};
      -
      -		$( items ).each( function() {
      -			var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" )
      -				.match( o.expression || ( /(.+)[\-=_](.+)/ ) );
      -			if ( res ) {
      -				str.push(
      -					( o.key || res[ 1 ] + "[]" ) +
      -					"=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );
      -			}
      -		} );
      -
      -		if ( !str.length && o.key ) {
      -			str.push( o.key + "=" );
      -		}
      -
      -		return str.join( "&" );
      -
      -	},
      -
      -	toArray: function( o ) {
      -
      -		var items = this._getItemsAsjQuery( o && o.connected ),
      -			ret = [];
      -
      -		o = o || {};
      -
      -		items.each( function() {
      -			ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" );
      -		} );
      -		return ret;
      -
      -	},
      -
      -	/* Be careful with the following core functions */
      -	_intersectsWith: function( item ) {
      -
      -		var x1 = this.positionAbs.left,
      -			x2 = x1 + this.helperProportions.width,
      -			y1 = this.positionAbs.top,
      -			y2 = y1 + this.helperProportions.height,
      -			l = item.left,
      -			r = l + item.width,
      -			t = item.top,
      -			b = t + item.height,
      -			dyClick = this.offset.click.top,
      -			dxClick = this.offset.click.left,
      -			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t &&
      -				( y1 + dyClick ) < b ),
      -			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l &&
      -				( x1 + dxClick ) < r ),
      -			isOverElement = isOverElementHeight && isOverElementWidth;
      -
      -		if ( this.options.tolerance === "pointer" ||
      -			this.options.forcePointerForContainers ||
      -			( this.options.tolerance !== "pointer" &&
      -				this.helperProportions[ this.floating ? "width" : "height" ] >
      -				item[ this.floating ? "width" : "height" ] )
      -		) {
      -			return isOverElement;
      -		} else {
      -
      -			return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half
      -				x2 - ( this.helperProportions.width / 2 ) < r && // Left Half
      -				t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half
      -				y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half
      -
      -		}
      -	},
      -
      -	_intersectsWithPointer: function( item ) {
      -		var verticalDirection, horizontalDirection,
      -			isOverElementHeight = ( this.options.axis === "x" ) ||
      -				this._isOverAxis(
      -					this.positionAbs.top + this.offset.click.top, item.top, item.height ),
      -			isOverElementWidth = ( this.options.axis === "y" ) ||
      -				this._isOverAxis(
      -					this.positionAbs.left + this.offset.click.left, item.left, item.width ),
      -			isOverElement = isOverElementHeight && isOverElementWidth;
      -
      -		if ( !isOverElement ) {
      -			return false;
      -		}
      -
      -		verticalDirection = this._getDragVerticalDirection();
      -		horizontalDirection = this._getDragHorizontalDirection();
      -
      -		return this.floating ?
      -			( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )
      -			: ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
      -
      -	},
      -
      -	_intersectsWithSides: function( item ) {
      -
      -		var isOverBottomHalf = this._isOverAxis( this.positionAbs.top +
      -				this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
      -			isOverRightHalf = this._isOverAxis( this.positionAbs.left +
      -				this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
      -			verticalDirection = this._getDragVerticalDirection(),
      -			horizontalDirection = this._getDragHorizontalDirection();
      -
      -		if ( this.floating && horizontalDirection ) {
      -			return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
      -				( horizontalDirection === "left" && !isOverRightHalf ) );
      -		} else {
      -			return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) ||
      -				( verticalDirection === "up" && !isOverBottomHalf ) );
      -		}
      -
      -	},
      -
      -	_getDragVerticalDirection: function() {
      -		var delta = this.positionAbs.top - this.lastPositionAbs.top;
      -		return delta !== 0 && ( delta > 0 ? "down" : "up" );
      -	},
      -
      -	_getDragHorizontalDirection: function() {
      -		var delta = this.positionAbs.left - this.lastPositionAbs.left;
      -		return delta !== 0 && ( delta > 0 ? "right" : "left" );
      -	},
      -
      -	refresh: function( event ) {
      -		this._refreshItems( event );
      -		this._setHandleClassName();
      -		this.refreshPositions();
      -		return this;
      -	},
      -
      -	_connectWith: function() {
      -		var options = this.options;
      -		return options.connectWith.constructor === String ?
      -			[ options.connectWith ] :
      -			options.connectWith;
      -	},
      -
      -	_getItemsAsjQuery: function( connected ) {
      -
      -		var i, j, cur, inst,
      -			items = [],
      -			queries = [],
      -			connectWith = this._connectWith();
      -
      -		if ( connectWith && connected ) {
      -			for ( i = connectWith.length - 1; i >= 0; i-- ) {
      -				cur = $( connectWith[ i ], this.document[ 0 ] );
      -				for ( j = cur.length - 1; j >= 0; j-- ) {
      -					inst = $.data( cur[ j ], this.widgetFullName );
      -					if ( inst && inst !== this && !inst.options.disabled ) {
      -						queries.push( [ $.isFunction( inst.options.items ) ?
      -							inst.options.items.call( inst.element ) :
      -							$( inst.options.items, inst.element )
      -								.not( ".ui-sortable-helper" )
      -								.not( ".ui-sortable-placeholder" ), inst ] );
      -					}
      -				}
      -			}
      -		}
      -
      -		queries.push( [ $.isFunction( this.options.items ) ?
      -			this.options.items
      -				.call( this.element, null, { options: this.options, item: this.currentItem } ) :
      -			$( this.options.items, this.element )
      -				.not( ".ui-sortable-helper" )
      -				.not( ".ui-sortable-placeholder" ), this ] );
      -
      -		function addItems() {
      -			items.push( this );
      -		}
      -		for ( i = queries.length - 1; i >= 0; i-- ) {
      -			queries[ i ][ 0 ].each( addItems );
      -		}
      -
      -		return $( items );
      -
      -	},
      -
      -	_removeCurrentsFromItems: function() {
      -
      -		var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" );
      -
      -		this.items = $.grep( this.items, function( item ) {
      -			for ( var j = 0; j < list.length; j++ ) {
      -				if ( list[ j ] === item.item[ 0 ] ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		} );
      -
      -	},
      -
      -	_refreshItems: function( event ) {
      -
      -		this.items = [];
      -		this.containers = [ this ];
      -
      -		var i, j, cur, inst, targetData, _queries, item, queriesLength,
      -			items = this.items,
      -			queries = [ [ $.isFunction( this.options.items ) ?
      -				this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
      -				$( this.options.items, this.element ), this ] ],
      -			connectWith = this._connectWith();
      -
      -		//Shouldn't be run the first time through due to massive slow-down
      -		if ( connectWith && this.ready ) {
      -			for ( i = connectWith.length - 1; i >= 0; i-- ) {
      -				cur = $( connectWith[ i ], this.document[ 0 ] );
      -				for ( j = cur.length - 1; j >= 0; j-- ) {
      -					inst = $.data( cur[ j ], this.widgetFullName );
      -					if ( inst && inst !== this && !inst.options.disabled ) {
      -						queries.push( [ $.isFunction( inst.options.items ) ?
      -							inst.options.items
      -								.call( inst.element[ 0 ], event, { item: this.currentItem } ) :
      -							$( inst.options.items, inst.element ), inst ] );
      -						this.containers.push( inst );
      -					}
      -				}
      -			}
      -		}
      -
      -		for ( i = queries.length - 1; i >= 0; i-- ) {
      -			targetData = queries[ i ][ 1 ];
      -			_queries = queries[ i ][ 0 ];
      -
      -			for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {
      -				item = $( _queries[ j ] );
      -
      -				// Data for target checking (mouse manager)
      -				item.data( this.widgetName + "-item", targetData );
      -
      -				items.push( {
      -					item: item,
      -					instance: targetData,
      -					width: 0, height: 0,
      -					left: 0, top: 0
      -				} );
      -			}
      -		}
      -
      -	},
      -
      -	refreshPositions: function( fast ) {
      -
      -		// Determine whether items are being displayed horizontally
      -		this.floating = this.items.length ?
      -			this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
      -			false;
      -
      -		//This has to be redone because due to the item being moved out/into the offsetParent,
      -		// the offsetParent's position will change
      -		if ( this.offsetParent && this.helper ) {
      -			this.offset.parent = this._getParentOffset();
      -		}
      -
      -		var i, item, t, p;
      -
      -		for ( i = this.items.length - 1; i >= 0; i-- ) {
      -			item = this.items[ i ];
      -
      -			//We ignore calculating positions of all connected containers when we're not over them
      -			if ( item.instance !== this.currentContainer && this.currentContainer &&
      -					item.item[ 0 ] !== this.currentItem[ 0 ] ) {
      -				continue;
      -			}
      -
      -			t = this.options.toleranceElement ?
      -				$( this.options.toleranceElement, item.item ) :
      -				item.item;
      -
      -			if ( !fast ) {
      -				item.width = t.outerWidth();
      -				item.height = t.outerHeight();
      -			}
      -
      -			p = t.offset();
      -			item.left = p.left;
      -			item.top = p.top;
      -		}
      -
      -		if ( this.options.custom && this.options.custom.refreshContainers ) {
      -			this.options.custom.refreshContainers.call( this );
      -		} else {
      -			for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -				p = this.containers[ i ].element.offset();
      -				this.containers[ i ].containerCache.left = p.left;
      -				this.containers[ i ].containerCache.top = p.top;
      -				this.containers[ i ].containerCache.width =
      -					this.containers[ i ].element.outerWidth();
      -				this.containers[ i ].containerCache.height =
      -					this.containers[ i ].element.outerHeight();
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	_createPlaceholder: function( that ) {
      -		that = that || this;
      -		var className,
      -			o = that.options;
      -
      -		if ( !o.placeholder || o.placeholder.constructor === String ) {
      -			className = o.placeholder;
      -			o.placeholder = {
      -				element: function() {
      -
      -					var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),
      -						element = $( "<" + nodeName + ">", that.document[ 0 ] );
      -
      -						that._addClass( element, "ui-sortable-placeholder",
      -								className || that.currentItem[ 0 ].className )
      -							._removeClass( element, "ui-sortable-helper" );
      -
      -					if ( nodeName === "tbody" ) {
      -						that._createTrPlaceholder(
      -							that.currentItem.find( "tr" ).eq( 0 ),
      -							$( "<tr>", that.document[ 0 ] ).appendTo( element )
      -						);
      -					} else if ( nodeName === "tr" ) {
      -						that._createTrPlaceholder( that.currentItem, element );
      -					} else if ( nodeName === "img" ) {
      -						element.attr( "src", that.currentItem.attr( "src" ) );
      -					}
      -
      -					if ( !className ) {
      -						element.css( "visibility", "hidden" );
      -					}
      -
      -					return element;
      -				},
      -				update: function( container, p ) {
      -
      -					// 1. If a className is set as 'placeholder option, we don't force sizes -
      -					// the class is responsible for that
      -					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a
      -					// class name is specified
      -					if ( className && !o.forcePlaceholderSize ) {
      -						return;
      -					}
      -
      -					//If the element doesn't have a actual height by itself (without styles coming
      -					// from a stylesheet), it receives the inline height from the dragged item
      -					if ( !p.height() ) {
      -						p.height(
      -							that.currentItem.innerHeight() -
      -							parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
      -							parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) );
      -					}
      -					if ( !p.width() ) {
      -						p.width(
      -							that.currentItem.innerWidth() -
      -							parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) -
      -							parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) );
      -					}
      -				}
      -			};
      -		}
      -
      -		//Create the placeholder
      -		that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );
      -
      -		//Append it after the actual current item
      -		that.currentItem.after( that.placeholder );
      -
      -		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
      -		o.placeholder.update( that, that.placeholder );
      -
      -	},
      -
      -	_createTrPlaceholder: function( sourceTr, targetTr ) {
      -		var that = this;
      -
      -		sourceTr.children().each( function() {
      -			$( "<td>&#160;</td>", that.document[ 0 ] )
      -				.attr( "colspan", $( this ).attr( "colspan" ) || 1 )
      -				.appendTo( targetTr );
      -		} );
      -	},
      -
      -	_contactContainers: function( event ) {
      -		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,
      -			floating, axis,
      -			innermostContainer = null,
      -			innermostIndex = null;
      -
      -		// Get innermost container that intersects with item
      -		for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -
      -			// Never consider a container that's located within the item itself
      -			if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {
      -				continue;
      -			}
      -
      -			if ( this._intersectsWith( this.containers[ i ].containerCache ) ) {
      -
      -				// If we've already found a container and it's more "inner" than this, then continue
      -				if ( innermostContainer &&
      -						$.contains(
      -							this.containers[ i ].element[ 0 ],
      -							innermostContainer.element[ 0 ] ) ) {
      -					continue;
      -				}
      -
      -				innermostContainer = this.containers[ i ];
      -				innermostIndex = i;
      -
      -			} else {
      -
      -				// container doesn't intersect. trigger "out" event if necessary
      -				if ( this.containers[ i ].containerCache.over ) {
      -					this.containers[ i ]._trigger( "out", event, this._uiHash( this ) );
      -					this.containers[ i ].containerCache.over = 0;
      -				}
      -			}
      -
      -		}
      -
      -		// If no intersecting containers found, return
      -		if ( !innermostContainer ) {
      -			return;
      -		}
      -
      -		// Move the item into the container if it's not there already
      -		if ( this.containers.length === 1 ) {
      -			if ( !this.containers[ innermostIndex ].containerCache.over ) {
      -				this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
      -				this.containers[ innermostIndex ].containerCache.over = 1;
      -			}
      -		} else {
      -
      -			// When entering a new container, we will find the item with the least distance and
      -			// append our item near it
      -			dist = 10000;
      -			itemWithLeastDistance = null;
      -			floating = innermostContainer.floating || this._isFloating( this.currentItem );
      -			posProperty = floating ? "left" : "top";
      -			sizeProperty = floating ? "width" : "height";
      -			axis = floating ? "pageX" : "pageY";
      -
      -			for ( j = this.items.length - 1; j >= 0; j-- ) {
      -				if ( !$.contains(
      -						this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )
      -				) {
      -					continue;
      -				}
      -				if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {
      -					continue;
      -				}
      -
      -				cur = this.items[ j ].item.offset()[ posProperty ];
      -				nearBottom = false;
      -				if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
      -					nearBottom = true;
      -				}
      -
      -				if ( Math.abs( event[ axis ] - cur ) < dist ) {
      -					dist = Math.abs( event[ axis ] - cur );
      -					itemWithLeastDistance = this.items[ j ];
      -					this.direction = nearBottom ? "up" : "down";
      -				}
      -			}
      -
      -			//Check if dropOnEmpty is enabled
      -			if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {
      -				return;
      -			}
      -
      -			if ( this.currentContainer === this.containers[ innermostIndex ] ) {
      -				if ( !this.currentContainer.containerCache.over ) {
      -					this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
      -					this.currentContainer.containerCache.over = 1;
      -				}
      -				return;
      -			}
      -
      -			itemWithLeastDistance ?
      -				this._rearrange( event, itemWithLeastDistance, null, true ) :
      -				this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
      -			this._trigger( "change", event, this._uiHash() );
      -			this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
      -			this.currentContainer = this.containers[ innermostIndex ];
      -
      -			//Update the placeholder
      -			this.options.placeholder.update( this.currentContainer, this.placeholder );
      -
      -			this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
      -			this.containers[ innermostIndex ].containerCache.over = 1;
      -		}
      -
      -	},
      -
      -	_createHelper: function( event ) {
      -
      -		var o = this.options,
      -			helper = $.isFunction( o.helper ) ?
      -				$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
      -				( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
      -
      -		//Add the helper to the DOM if that didn't happen already
      -		if ( !helper.parents( "body" ).length ) {
      -			$( o.appendTo !== "parent" ?
      -				o.appendTo :
      -				this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );
      -		}
      -
      -		if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
      -			this._storedCSS = {
      -				width: this.currentItem[ 0 ].style.width,
      -				height: this.currentItem[ 0 ].style.height,
      -				position: this.currentItem.css( "position" ),
      -				top: this.currentItem.css( "top" ),
      -				left: this.currentItem.css( "left" )
      -			};
      -		}
      -
      -		if ( !helper[ 0 ].style.width || o.forceHelperSize ) {
      -			helper.width( this.currentItem.width() );
      -		}
      -		if ( !helper[ 0 ].style.height || o.forceHelperSize ) {
      -			helper.height( this.currentItem.height() );
      -		}
      -
      -		return helper;
      -
      -	},
      -
      -	_adjustOffsetFromHelper: function( obj ) {
      -		if ( typeof obj === "string" ) {
      -			obj = obj.split( " " );
      -		}
      -		if ( $.isArray( obj ) ) {
      -			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
      -		}
      -		if ( "left" in obj ) {
      -			this.offset.click.left = obj.left + this.margins.left;
      -		}
      -		if ( "right" in obj ) {
      -			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
      -		}
      -		if ( "top" in obj ) {
      -			this.offset.click.top = obj.top + this.margins.top;
      -		}
      -		if ( "bottom" in obj ) {
      -			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
      -		}
      -	},
      -
      -	_getParentOffset: function() {
      -
      -		//Get the offsetParent and cache its position
      -		this.offsetParent = this.helper.offsetParent();
      -		var po = this.offsetParent.offset();
      -
      -		// This is a special case where we need to modify a offset calculated on start, since the
      -		// following happened:
      -		// 1. The position of the helper is absolute, so it's position is calculated based on the
      -		// next positioned parent
      -		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
      -		// the document, which means that the scroll is included in the initial calculation of the
      -		// offset of the parent, and never recalculated upon drag
      -		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
      -			po.left += this.scrollParent.scrollLeft();
      -			po.top += this.scrollParent.scrollTop();
      -		}
      -
      -		// This needs to be actually done for all browsers, since pageX/pageY includes this
      -		// information with an ugly IE fix
      -		if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||
      -				( this.offsetParent[ 0 ].tagName &&
      -				this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) {
      -			po = { top: 0, left: 0 };
      -		}
      -
      -		return {
      -			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
      -			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
      -		};
      -
      -	},
      -
      -	_getRelativeOffset: function() {
      -
      -		if ( this.cssPosition === "relative" ) {
      -			var p = this.currentItem.position();
      -			return {
      -				top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
      -					this.scrollParent.scrollTop(),
      -				left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
      -					this.scrollParent.scrollLeft()
      -			};
      -		} else {
      -			return { top: 0, left: 0 };
      -		}
      -
      -	},
      -
      -	_cacheMargins: function() {
      -		this.margins = {
      -			left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ),
      -			top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 )
      -		};
      -	},
      -
      -	_cacheHelperProportions: function() {
      -		this.helperProportions = {
      -			width: this.helper.outerWidth(),
      -			height: this.helper.outerHeight()
      -		};
      -	},
      -
      -	_setContainment: function() {
      -
      -		var ce, co, over,
      -			o = this.options;
      -		if ( o.containment === "parent" ) {
      -			o.containment = this.helper[ 0 ].parentNode;
      -		}
      -		if ( o.containment === "document" || o.containment === "window" ) {
      -			this.containment = [
      -				0 - this.offset.relative.left - this.offset.parent.left,
      -				0 - this.offset.relative.top - this.offset.parent.top,
      -				o.containment === "document" ?
      -					this.document.width() :
      -					this.window.width() - this.helperProportions.width - this.margins.left,
      -				( o.containment === "document" ?
      -					( this.document.height() || document.body.parentNode.scrollHeight ) :
      -					this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight
      -				) - this.helperProportions.height - this.margins.top
      -			];
      -		}
      -
      -		if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {
      -			ce = $( o.containment )[ 0 ];
      -			co = $( o.containment ).offset();
      -			over = ( $( ce ).css( "overflow" ) !== "hidden" );
      -
      -			this.containment = [
      -				co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) +
      -					( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left,
      -				co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) +
      -					( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top,
      -				co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
      -					( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) -
      -					( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) -
      -					this.helperProportions.width - this.margins.left,
      -				co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
      -					( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) -
      -					( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) -
      -					this.helperProportions.height - this.margins.top
      -			];
      -		}
      -
      -	},
      -
      -	_convertPositionTo: function( d, pos ) {
      -
      -		if ( !pos ) {
      -			pos = this.position;
      -		}
      -		var mod = d === "absolute" ? 1 : -1,
      -			scroll = this.cssPosition === "absolute" &&
      -				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
      -					this.offsetParent :
      -					this.scrollParent,
      -			scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pos.top	+
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top * mod -
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollTop() :
      -					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pos.left +
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left * mod	-
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :
      -					scroll.scrollLeft() ) * mod )
      -			)
      -		};
      -
      -	},
      -
      -	_generatePosition: function( event ) {
      -
      -		var top, left,
      -			o = this.options,
      -			pageX = event.pageX,
      -			pageY = event.pageY,
      -			scroll = this.cssPosition === "absolute" &&
      -				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
      -					this.offsetParent :
      -					this.scrollParent,
      -				scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
      -
      -		// This is another very weird special case that only happens for relative elements:
      -		// 1. If the css position is relative
      -		// 2. and the scroll parent is the document or similar to the offset parent
      -		// we have to refresh the relative offset during the scroll so there are no jumps
      -		if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {
      -			this.offset.relative = this._getRelativeOffset();
      -		}
      -
      -		/*
      -		 * - Position constraining -
      -		 * Constrain the position to a mix of grid, containment.
      -		 */
      -
      -		if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options
      -
      -			if ( this.containment ) {
      -				if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {
      -					pageX = this.containment[ 0 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {
      -					pageY = this.containment[ 1 ] + this.offset.click.top;
      -				}
      -				if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {
      -					pageX = this.containment[ 2 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {
      -					pageY = this.containment[ 3 ] + this.offset.click.top;
      -				}
      -			}
      -
      -			if ( o.grid ) {
      -				top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /
      -					o.grid[ 1 ] ) * o.grid[ 1 ];
      -				pageY = this.containment ?
      -					( ( top - this.offset.click.top >= this.containment[ 1 ] &&
      -						top - this.offset.click.top <= this.containment[ 3 ] ) ?
      -							top :
      -							( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?
      -								top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :
      -								top;
      -
      -				left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /
      -					o.grid[ 0 ] ) * o.grid[ 0 ];
      -				pageX = this.containment ?
      -					( ( left - this.offset.click.left >= this.containment[ 0 ] &&
      -						left - this.offset.click.left <= this.containment[ 2 ] ) ?
      -							left :
      -							( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?
      -								left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :
      -								left;
      -			}
      -
      -		}
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pageY -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.top -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top +
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollTop() :
      -					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pageX -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.left -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left +
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollLeft() :
      -					scrollIsRootNode ? 0 : scroll.scrollLeft() ) )
      -			)
      -		};
      -
      -	},
      -
      -	_rearrange: function( event, i, a, hardRefresh ) {
      -
      -		a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :
      -			i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
      -				( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
      -
      -		//Various things done here to improve the performance:
      -		// 1. we create a setTimeout, that calls refreshPositions
      -		// 2. on the instance, we have a counter variable, that get's higher after every append
      -		// 3. on the local scope, we copy the counter variable, and check in the timeout,
      -		// if it's still the same
      -		// 4. this lets only the last addition to the timeout stack through
      -		this.counter = this.counter ? ++this.counter : 1;
      -		var counter = this.counter;
      -
      -		this._delay( function() {
      -			if ( counter === this.counter ) {
      -
      -				//Precompute after each DOM insertion, NOT on mousemove
      -				this.refreshPositions( !hardRefresh );
      -			}
      -		} );
      -
      -	},
      -
      -	_clear: function( event, noPropagation ) {
      -
      -		this.reverting = false;
      -
      -		// We delay all events that have to be triggered to after the point where the placeholder
      -		// has been removed and everything else normalized again
      -		var i,
      -			delayedTriggers = [];
      -
      -		// We first have to update the dom position of the actual currentItem
      -		// Note: don't do it if the current item is already removed (by a user), or it gets
      -		// reappended (see #4088)
      -		if ( !this._noFinalSort && this.currentItem.parent().length ) {
      -			this.placeholder.before( this.currentItem );
      -		}
      -		this._noFinalSort = null;
      -
      -		if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {
      -			for ( i in this._storedCSS ) {
      -				if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) {
      -					this._storedCSS[ i ] = "";
      -				}
      -			}
      -			this.currentItem.css( this._storedCSS );
      -			this._removeClass( this.currentItem, "ui-sortable-helper" );
      -		} else {
      -			this.currentItem.show();
      -		}
      -
      -		if ( this.fromOutside && !noPropagation ) {
      -			delayedTriggers.push( function( event ) {
      -				this._trigger( "receive", event, this._uiHash( this.fromOutside ) );
      -			} );
      -		}
      -		if ( ( this.fromOutside ||
      -				this.domPosition.prev !==
      -				this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] ||
      -				this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {
      -
      -			// Trigger update callback if the DOM position has changed
      -			delayedTriggers.push( function( event ) {
      -				this._trigger( "update", event, this._uiHash() );
      -			} );
      -		}
      -
      -		// Check if the items Container has Changed and trigger appropriate
      -		// events.
      -		if ( this !== this.currentContainer ) {
      -			if ( !noPropagation ) {
      -				delayedTriggers.push( function( event ) {
      -					this._trigger( "remove", event, this._uiHash() );
      -				} );
      -				delayedTriggers.push( ( function( c ) {
      -					return function( event ) {
      -						c._trigger( "receive", event, this._uiHash( this ) );
      -					};
      -				} ).call( this, this.currentContainer ) );
      -				delayedTriggers.push( ( function( c ) {
      -					return function( event ) {
      -						c._trigger( "update", event, this._uiHash( this ) );
      -					};
      -				} ).call( this, this.currentContainer ) );
      -			}
      -		}
      -
      -		//Post events to containers
      -		function delayEvent( type, instance, container ) {
      -			return function( event ) {
      -				container._trigger( type, event, instance._uiHash( instance ) );
      -			};
      -		}
      -		for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -			if ( !noPropagation ) {
      -				delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
      -			}
      -			if ( this.containers[ i ].containerCache.over ) {
      -				delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
      -				this.containers[ i ].containerCache.over = 0;
      -			}
      -		}
      -
      -		//Do what was originally in plugins
      -		if ( this.storedCursor ) {
      -			this.document.find( "body" ).css( "cursor", this.storedCursor );
      -			this.storedStylesheet.remove();
      -		}
      -		if ( this._storedOpacity ) {
      -			this.helper.css( "opacity", this._storedOpacity );
      -		}
      -		if ( this._storedZIndex ) {
      -			this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex );
      -		}
      -
      -		this.dragging = false;
      -
      -		if ( !noPropagation ) {
      -			this._trigger( "beforeStop", event, this._uiHash() );
      -		}
      -
      -		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
      -		// it unbinds ALL events from the original node!
      -		this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
      -
      -		if ( !this.cancelHelperRemoval ) {
      -			if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
      -				this.helper.remove();
      -			}
      -			this.helper = null;
      -		}
      -
      -		if ( !noPropagation ) {
      -			for ( i = 0; i < delayedTriggers.length; i++ ) {
      -
      -				// Trigger all delayed events
      -				delayedTriggers[ i ].call( this, event );
      -			}
      -			this._trigger( "stop", event, this._uiHash() );
      -		}
      -
      -		this.fromOutside = false;
      -		return !this.cancelHelperRemoval;
      -
      -	},
      -
      -	_trigger: function() {
      -		if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {
      -			this.cancel();
      -		}
      -	},
      -
      -	_uiHash: function( _inst ) {
      -		var inst = _inst || this;
      -		return {
      -			helper: inst.helper,
      -			placeholder: inst.placeholder || $( [] ),
      -			position: inst.position,
      -			originalPosition: inst.originalPosition,
      -			offset: inst.positionAbs,
      -			item: inst.currentItem,
      -			sender: _inst ? _inst.element : null
      -		};
      -	}
      -
      -} );
      -
      -
      -/*!
      - * jQuery UI Spinner 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Spinner
      -//>>group: Widgets
      -//>>description: Displays buttons to easily input numbers via the keyboard or mouse.
      -//>>docs: http://api.jqueryui.com/spinner/
      -//>>demos: http://jqueryui.com/spinner/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/spinner.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -function spinnerModifer( fn ) {
      -	return function() {
      -		var previous = this.element.val();
      -		fn.apply( this, arguments );
      -		this._refresh();
      -		if ( previous !== this.element.val() ) {
      -			this._trigger( "change" );
      -		}
      -	};
      -}
      -
      -$.widget( "ui.spinner", {
      -	version: "1.12.1",
      -	defaultElement: "<input>",
      -	widgetEventPrefix: "spin",
      -	options: {
      -		classes: {
      -			"ui-spinner": "ui-corner-all",
      -			"ui-spinner-down": "ui-corner-br",
      -			"ui-spinner-up": "ui-corner-tr"
      -		},
      -		culture: null,
      -		icons: {
      -			down: "ui-icon-triangle-1-s",
      -			up: "ui-icon-triangle-1-n"
      -		},
      -		incremental: true,
      -		max: null,
      -		min: null,
      -		numberFormat: null,
      -		page: 10,
      -		step: 1,
      -
      -		change: null,
      -		spin: null,
      -		start: null,
      -		stop: null
      -	},
      -
      -	_create: function() {
      -
      -		// handle string values that need to be parsed
      -		this._setOption( "max", this.options.max );
      -		this._setOption( "min", this.options.min );
      -		this._setOption( "step", this.options.step );
      -
      -		// Only format if there is a value, prevents the field from being marked
      -		// as invalid in Firefox, see #9573.
      -		if ( this.value() !== "" ) {
      -
      -			// Format the value, but don't constrain.
      -			this._value( this.element.val(), true );
      -		}
      -
      -		this._draw();
      -		this._on( this._events );
      -		this._refresh();
      -
      -		// Turning off autocomplete prevents the browser from remembering the
      -		// value when navigating through history, so we re-enable autocomplete
      -		// if the page is unloaded before the widget is destroyed. #7790
      -		this._on( this.window, {
      -			beforeunload: function() {
      -				this.element.removeAttr( "autocomplete" );
      -			}
      -		} );
      -	},
      -
      -	_getCreateOptions: function() {
      -		var options = this._super();
      -		var element = this.element;
      -
      -		$.each( [ "min", "max", "step" ], function( i, option ) {
      -			var value = element.attr( option );
      -			if ( value != null && value.length ) {
      -				options[ option ] = value;
      -			}
      -		} );
      -
      -		return options;
      -	},
      -
      -	_events: {
      -		keydown: function( event ) {
      -			if ( this._start( event ) && this._keydown( event ) ) {
      -				event.preventDefault();
      -			}
      -		},
      -		keyup: "_stop",
      -		focus: function() {
      -			this.previous = this.element.val();
      -		},
      -		blur: function( event ) {
      -			if ( this.cancelBlur ) {
      -				delete this.cancelBlur;
      -				return;
      -			}
      -
      -			this._stop();
      -			this._refresh();
      -			if ( this.previous !== this.element.val() ) {
      -				this._trigger( "change", event );
      -			}
      -		},
      -		mousewheel: function( event, delta ) {
      -			if ( !delta ) {
      -				return;
      -			}
      -			if ( !this.spinning && !this._start( event ) ) {
      -				return false;
      -			}
      -
      -			this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );
      -			clearTimeout( this.mousewheelTimer );
      -			this.mousewheelTimer = this._delay( function() {
      -				if ( this.spinning ) {
      -					this._stop( event );
      -				}
      -			}, 100 );
      -			event.preventDefault();
      -		},
      -		"mousedown .ui-spinner-button": function( event ) {
      -			var previous;
      -
      -			// We never want the buttons to have focus; whenever the user is
      -			// interacting with the spinner, the focus should be on the input.
      -			// If the input is focused then this.previous is properly set from
      -			// when the input first received focus. If the input is not focused
      -			// then we need to set this.previous based on the value before spinning.
      -			previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?
      -				this.previous : this.element.val();
      -			function checkFocus() {
      -				var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );
      -				if ( !isActive ) {
      -					this.element.trigger( "focus" );
      -					this.previous = previous;
      -
      -					// support: IE
      -					// IE sets focus asynchronously, so we need to check if focus
      -					// moved off of the input because the user clicked on the button.
      -					this._delay( function() {
      -						this.previous = previous;
      -					} );
      -				}
      -			}
      -
      -			// Ensure focus is on (or stays on) the text field
      -			event.preventDefault();
      -			checkFocus.call( this );
      -
      -			// Support: IE
      -			// IE doesn't prevent moving focus even with event.preventDefault()
      -			// so we set a flag to know when we should ignore the blur event
      -			// and check (again) if focus moved off of the input.
      -			this.cancelBlur = true;
      -			this._delay( function() {
      -				delete this.cancelBlur;
      -				checkFocus.call( this );
      -			} );
      -
      -			if ( this._start( event ) === false ) {
      -				return;
      -			}
      -
      -			this._repeat( null, $( event.currentTarget )
      -				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
      -		},
      -		"mouseup .ui-spinner-button": "_stop",
      -		"mouseenter .ui-spinner-button": function( event ) {
      -
      -			// button will add ui-state-active if mouse was down while mouseleave and kept down
      -			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
      -				return;
      -			}
      -
      -			if ( this._start( event ) === false ) {
      -				return false;
      -			}
      -			this._repeat( null, $( event.currentTarget )
      -				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
      -		},
      -
      -		// TODO: do we really want to consider this a stop?
      -		// shouldn't we just stop the repeater and wait until mouseup before
      -		// we trigger the stop event?
      -		"mouseleave .ui-spinner-button": "_stop"
      -	},
      -
      -	// Support mobile enhanced option and make backcompat more sane
      -	_enhance: function() {
      -		this.uiSpinner = this.element
      -			.attr( "autocomplete", "off" )
      -			.wrap( "<span>" )
      -			.parent()
      -
      -				// Add buttons
      -				.append(
      -					"<a></a><a></a>"
      -				);
      -	},
      -
      -	_draw: function() {
      -		this._enhance();
      -
      -		this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" );
      -		this._addClass( "ui-spinner-input" );
      -
      -		this.element.attr( "role", "spinbutton" );
      -
      -		// Button bindings
      -		this.buttons = this.uiSpinner.children( "a" )
      -			.attr( "tabIndex", -1 )
      -			.attr( "aria-hidden", true )
      -			.button( {
      -				classes: {
      -					"ui-button": ""
      -				}
      -			} );
      -
      -		// TODO: Right now button does not support classes this is already updated in button PR
      -		this._removeClass( this.buttons, "ui-corner-all" );
      -
      -		this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" );
      -		this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" );
      -		this.buttons.first().button( {
      -			"icon": this.options.icons.up,
      -			"showLabel": false
      -		} );
      -		this.buttons.last().button( {
      -			"icon": this.options.icons.down,
      -			"showLabel": false
      -		} );
      -
      -		// IE 6 doesn't understand height: 50% for the buttons
      -		// unless the wrapper has an explicit height
      -		if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&
      -				this.uiSpinner.height() > 0 ) {
      -			this.uiSpinner.height( this.uiSpinner.height() );
      -		}
      -	},
      -
      -	_keydown: function( event ) {
      -		var options = this.options,
      -			keyCode = $.ui.keyCode;
      -
      -		switch ( event.keyCode ) {
      -		case keyCode.UP:
      -			this._repeat( null, 1, event );
      -			return true;
      -		case keyCode.DOWN:
      -			this._repeat( null, -1, event );
      -			return true;
      -		case keyCode.PAGE_UP:
      -			this._repeat( null, options.page, event );
      -			return true;
      -		case keyCode.PAGE_DOWN:
      -			this._repeat( null, -options.page, event );
      -			return true;
      -		}
      -
      -		return false;
      -	},
      -
      -	_start: function( event ) {
      -		if ( !this.spinning && this._trigger( "start", event ) === false ) {
      -			return false;
      -		}
      -
      -		if ( !this.counter ) {
      -			this.counter = 1;
      -		}
      -		this.spinning = true;
      -		return true;
      -	},
      -
      -	_repeat: function( i, steps, event ) {
      -		i = i || 500;
      -
      -		clearTimeout( this.timer );
      -		this.timer = this._delay( function() {
      -			this._repeat( 40, steps, event );
      -		}, i );
      -
      -		this._spin( steps * this.options.step, event );
      -	},
      -
      -	_spin: function( step, event ) {
      -		var value = this.value() || 0;
      -
      -		if ( !this.counter ) {
      -			this.counter = 1;
      -		}
      -
      -		value = this._adjustValue( value + step * this._increment( this.counter ) );
      -
      -		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) {
      -			this._value( value );
      -			this.counter++;
      -		}
      -	},
      -
      -	_increment: function( i ) {
      -		var incremental = this.options.incremental;
      -
      -		if ( incremental ) {
      -			return $.isFunction( incremental ) ?
      -				incremental( i ) :
      -				Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
      -		}
      -
      -		return 1;
      -	},
      -
      -	_precision: function() {
      -		var precision = this._precisionOf( this.options.step );
      -		if ( this.options.min !== null ) {
      -			precision = Math.max( precision, this._precisionOf( this.options.min ) );
      -		}
      -		return precision;
      -	},
      -
      -	_precisionOf: function( num ) {
      -		var str = num.toString(),
      -			decimal = str.indexOf( "." );
      -		return decimal === -1 ? 0 : str.length - decimal - 1;
      -	},
      -
      -	_adjustValue: function( value ) {
      -		var base, aboveMin,
      -			options = this.options;
      -
      -		// Make sure we're at a valid step
      -		// - find out where we are relative to the base (min or 0)
      -		base = options.min !== null ? options.min : 0;
      -		aboveMin = value - base;
      -
      -		// - round to the nearest step
      -		aboveMin = Math.round( aboveMin / options.step ) * options.step;
      -
      -		// - rounding is based on 0, so adjust back to our base
      -		value = base + aboveMin;
      -
      -		// Fix precision from bad JS floating point math
      -		value = parseFloat( value.toFixed( this._precision() ) );
      -
      -		// Clamp the value
      -		if ( options.max !== null && value > options.max ) {
      -			return options.max;
      -		}
      -		if ( options.min !== null && value < options.min ) {
      -			return options.min;
      -		}
      -
      -		return value;
      -	},
      -
      -	_stop: function( event ) {
      -		if ( !this.spinning ) {
      -			return;
      -		}
      -
      -		clearTimeout( this.timer );
      -		clearTimeout( this.mousewheelTimer );
      -		this.counter = 0;
      -		this.spinning = false;
      -		this._trigger( "stop", event );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var prevValue, first, last;
      -
      -		if ( key === "culture" || key === "numberFormat" ) {
      -			prevValue = this._parse( this.element.val() );
      -			this.options[ key ] = value;
      -			this.element.val( this._format( prevValue ) );
      -			return;
      -		}
      -
      -		if ( key === "max" || key === "min" || key === "step" ) {
      -			if ( typeof value === "string" ) {
      -				value = this._parse( value );
      -			}
      -		}
      -		if ( key === "icons" ) {
      -			first = this.buttons.first().find( ".ui-icon" );
      -			this._removeClass( first, null, this.options.icons.up );
      -			this._addClass( first, null, value.up );
      -			last = this.buttons.last().find( ".ui-icon" );
      -			this._removeClass( last, null, this.options.icons.down );
      -			this._addClass( last, null, value.down );
      -		}
      -
      -		this._super( key, value );
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value );
      -		this.element.prop( "disabled", !!value );
      -		this.buttons.button( value ? "disable" : "enable" );
      -	},
      -
      -	_setOptions: spinnerModifer( function( options ) {
      -		this._super( options );
      -	} ),
      -
      -	_parse: function( val ) {
      -		if ( typeof val === "string" && val !== "" ) {
      -			val = window.Globalize && this.options.numberFormat ?
      -				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
      -		}
      -		return val === "" || isNaN( val ) ? null : val;
      -	},
      -
      -	_format: function( value ) {
      -		if ( value === "" ) {
      -			return "";
      -		}
      -		return window.Globalize && this.options.numberFormat ?
      -			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
      -			value;
      -	},
      -
      -	_refresh: function() {
      -		this.element.attr( {
      -			"aria-valuemin": this.options.min,
      -			"aria-valuemax": this.options.max,
      -
      -			// TODO: what should we do with values that can't be parsed?
      -			"aria-valuenow": this._parse( this.element.val() )
      -		} );
      -	},
      -
      -	isValid: function() {
      -		var value = this.value();
      -
      -		// Null is invalid
      -		if ( value === null ) {
      -			return false;
      -		}
      -
      -		// If value gets adjusted, it's invalid
      -		return value === this._adjustValue( value );
      -	},
      -
      -	// Update the value without triggering change
      -	_value: function( value, allowAny ) {
      -		var parsed;
      -		if ( value !== "" ) {
      -			parsed = this._parse( value );
      -			if ( parsed !== null ) {
      -				if ( !allowAny ) {
      -					parsed = this._adjustValue( parsed );
      -				}
      -				value = this._format( parsed );
      -			}
      -		}
      -		this.element.val( value );
      -		this._refresh();
      -	},
      -
      -	_destroy: function() {
      -		this.element
      -			.prop( "disabled", false )
      -			.removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" );
      -
      -		this.uiSpinner.replaceWith( this.element );
      -	},
      -
      -	stepUp: spinnerModifer( function( steps ) {
      -		this._stepUp( steps );
      -	} ),
      -	_stepUp: function( steps ) {
      -		if ( this._start() ) {
      -			this._spin( ( steps || 1 ) * this.options.step );
      -			this._stop();
      -		}
      -	},
      -
      -	stepDown: spinnerModifer( function( steps ) {
      -		this._stepDown( steps );
      -	} ),
      -	_stepDown: function( steps ) {
      -		if ( this._start() ) {
      -			this._spin( ( steps || 1 ) * -this.options.step );
      -			this._stop();
      -		}
      -	},
      -
      -	pageUp: spinnerModifer( function( pages ) {
      -		this._stepUp( ( pages || 1 ) * this.options.page );
      -	} ),
      -
      -	pageDown: spinnerModifer( function( pages ) {
      -		this._stepDown( ( pages || 1 ) * this.options.page );
      -	} ),
      -
      -	value: function( newVal ) {
      -		if ( !arguments.length ) {
      -			return this._parse( this.element.val() );
      -		}
      -		spinnerModifer( this._value ).call( this, newVal );
      -	},
      -
      -	widget: function() {
      -		return this.uiSpinner;
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for spinner html extension points
      -	$.widget( "ui.spinner", $.ui.spinner, {
      -		_enhance: function() {
      -			this.uiSpinner = this.element
      -				.attr( "autocomplete", "off" )
      -				.wrap( this._uiSpinnerHtml() )
      -				.parent()
      -
      -					// Add buttons
      -					.append( this._buttonHtml() );
      -		},
      -		_uiSpinnerHtml: function() {
      -			return "<span>";
      -		},
      -
      -		_buttonHtml: function() {
      -			return "<a></a><a></a>";
      -		}
      -	} );
      -}
      -
      -var widgetsSpinner = $.ui.spinner;
      -
      -
      -/*!
      - * jQuery UI Tabs 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Tabs
      -//>>group: Widgets
      -//>>description: Transforms a set of container elements into a tab structure.
      -//>>docs: http://api.jqueryui.com/tabs/
      -//>>demos: http://jqueryui.com/tabs/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/tabs.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.widget( "ui.tabs", {
      -	version: "1.12.1",
      -	delay: 300,
      -	options: {
      -		active: null,
      -		classes: {
      -			"ui-tabs": "ui-corner-all",
      -			"ui-tabs-nav": "ui-corner-all",
      -			"ui-tabs-panel": "ui-corner-bottom",
      -			"ui-tabs-tab": "ui-corner-top"
      -		},
      -		collapsible: false,
      -		event: "click",
      -		heightStyle: "content",
      -		hide: null,
      -		show: null,
      -
      -		// Callbacks
      -		activate: null,
      -		beforeActivate: null,
      -		beforeLoad: null,
      -		load: null
      -	},
      -
      -	_isLocal: ( function() {
      -		var rhash = /#.*$/;
      -
      -		return function( anchor ) {
      -			var anchorUrl, locationUrl;
      -
      -			anchorUrl = anchor.href.replace( rhash, "" );
      -			locationUrl = location.href.replace( rhash, "" );
      -
      -			// Decoding may throw an error if the URL isn't UTF-8 (#9518)
      -			try {
      -				anchorUrl = decodeURIComponent( anchorUrl );
      -			} catch ( error ) {}
      -			try {
      -				locationUrl = decodeURIComponent( locationUrl );
      -			} catch ( error ) {}
      -
      -			return anchor.hash.length > 1 && anchorUrl === locationUrl;
      -		};
      -	} )(),
      -
      -	_create: function() {
      -		var that = this,
      -			options = this.options;
      -
      -		this.running = false;
      -
      -		this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
      -		this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );
      -
      -		this._processTabs();
      -		options.active = this._initialActive();
      -
      -		// Take disabling tabs via class attribute from HTML
      -		// into account and update option properly.
      -		if ( $.isArray( options.disabled ) ) {
      -			options.disabled = $.unique( options.disabled.concat(
      -				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
      -					return that.tabs.index( li );
      -				} )
      -			) ).sort();
      -		}
      -
      -		// Check for length avoids error when initializing empty list
      -		if ( this.options.active !== false && this.anchors.length ) {
      -			this.active = this._findActive( options.active );
      -		} else {
      -			this.active = $();
      -		}
      -
      -		this._refresh();
      -
      -		if ( this.active.length ) {
      -			this.load( options.active );
      -		}
      -	},
      -
      -	_initialActive: function() {
      -		var active = this.options.active,
      -			collapsible = this.options.collapsible,
      -			locationHash = location.hash.substring( 1 );
      -
      -		if ( active === null ) {
      -
      -			// check the fragment identifier in the URL
      -			if ( locationHash ) {
      -				this.tabs.each( function( i, tab ) {
      -					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
      -						active = i;
      -						return false;
      -					}
      -				} );
      -			}
      -
      -			// Check for a tab marked active via a class
      -			if ( active === null ) {
      -				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
      -			}
      -
      -			// No active tab, set to false
      -			if ( active === null || active === -1 ) {
      -				active = this.tabs.length ? 0 : false;
      -			}
      -		}
      -
      -		// Handle numbers: negative, out of range
      -		if ( active !== false ) {
      -			active = this.tabs.index( this.tabs.eq( active ) );
      -			if ( active === -1 ) {
      -				active = collapsible ? false : 0;
      -			}
      -		}
      -
      -		// Don't allow collapsible: false and active: false
      -		if ( !collapsible && active === false && this.anchors.length ) {
      -			active = 0;
      -		}
      -
      -		return active;
      -	},
      -
      -	_getCreateEventData: function() {
      -		return {
      -			tab: this.active,
      -			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
      -		};
      -	},
      -
      -	_tabKeydown: function( event ) {
      -		var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
      -			selectedIndex = this.tabs.index( focusedTab ),
      -			goingForward = true;
      -
      -		if ( this._handlePageNav( event ) ) {
      -			return;
      -		}
      -
      -		switch ( event.keyCode ) {
      -		case $.ui.keyCode.RIGHT:
      -		case $.ui.keyCode.DOWN:
      -			selectedIndex++;
      -			break;
      -		case $.ui.keyCode.UP:
      -		case $.ui.keyCode.LEFT:
      -			goingForward = false;
      -			selectedIndex--;
      -			break;
      -		case $.ui.keyCode.END:
      -			selectedIndex = this.anchors.length - 1;
      -			break;
      -		case $.ui.keyCode.HOME:
      -			selectedIndex = 0;
      -			break;
      -		case $.ui.keyCode.SPACE:
      -
      -			// Activate only, no collapsing
      -			event.preventDefault();
      -			clearTimeout( this.activating );
      -			this._activate( selectedIndex );
      -			return;
      -		case $.ui.keyCode.ENTER:
      -
      -			// Toggle (cancel delayed activation, allow collapsing)
      -			event.preventDefault();
      -			clearTimeout( this.activating );
      -
      -			// Determine if we should collapse or activate
      -			this._activate( selectedIndex === this.options.active ? false : selectedIndex );
      -			return;
      -		default:
      -			return;
      -		}
      -
      -		// Focus the appropriate tab, based on which key was pressed
      -		event.preventDefault();
      -		clearTimeout( this.activating );
      -		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
      -
      -		// Navigating with control/command key will prevent automatic activation
      -		if ( !event.ctrlKey && !event.metaKey ) {
      -
      -			// Update aria-selected immediately so that AT think the tab is already selected.
      -			// Otherwise AT may confuse the user by stating that they need to activate the tab,
      -			// but the tab will already be activated by the time the announcement finishes.
      -			focusedTab.attr( "aria-selected", "false" );
      -			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
      -
      -			this.activating = this._delay( function() {
      -				this.option( "active", selectedIndex );
      -			}, this.delay );
      -		}
      -	},
      -
      -	_panelKeydown: function( event ) {
      -		if ( this._handlePageNav( event ) ) {
      -			return;
      -		}
      -
      -		// Ctrl+up moves focus to the current tab
      -		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
      -			event.preventDefault();
      -			this.active.trigger( "focus" );
      -		}
      -	},
      -
      -	// Alt+page up/down moves focus to the previous/next tab (and activates)
      -	_handlePageNav: function( event ) {
      -		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
      -			this._activate( this._focusNextTab( this.options.active - 1, false ) );
      -			return true;
      -		}
      -		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
      -			this._activate( this._focusNextTab( this.options.active + 1, true ) );
      -			return true;
      -		}
      -	},
      -
      -	_findNextTab: function( index, goingForward ) {
      -		var lastTabIndex = this.tabs.length - 1;
      -
      -		function constrain() {
      -			if ( index > lastTabIndex ) {
      -				index = 0;
      -			}
      -			if ( index < 0 ) {
      -				index = lastTabIndex;
      -			}
      -			return index;
      -		}
      -
      -		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
      -			index = goingForward ? index + 1 : index - 1;
      -		}
      -
      -		return index;
      -	},
      -
      -	_focusNextTab: function( index, goingForward ) {
      -		index = this._findNextTab( index, goingForward );
      -		this.tabs.eq( index ).trigger( "focus" );
      -		return index;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "active" ) {
      -
      -			// _activate() will handle invalid values and update this.options
      -			this._activate( value );
      -			return;
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "collapsible" ) {
      -			this._toggleClass( "ui-tabs-collapsible", null, value );
      -
      -			// Setting collapsible: false while collapsed; open first panel
      -			if ( !value && this.options.active === false ) {
      -				this._activate( 0 );
      -			}
      -		}
      -
      -		if ( key === "event" ) {
      -			this._setupEvents( value );
      -		}
      -
      -		if ( key === "heightStyle" ) {
      -			this._setupHeightStyle( value );
      -		}
      -	},
      -
      -	_sanitizeSelector: function( hash ) {
      -		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
      -	},
      -
      -	refresh: function() {
      -		var options = this.options,
      -			lis = this.tablist.children( ":has(a[href])" );
      -
      -		// Get disabled tabs from class attribute from HTML
      -		// this will get converted to a boolean if needed in _refresh()
      -		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
      -			return lis.index( tab );
      -		} );
      -
      -		this._processTabs();
      -
      -		// Was collapsed or no tabs
      -		if ( options.active === false || !this.anchors.length ) {
      -			options.active = false;
      -			this.active = $();
      -
      -		// was active, but active tab is gone
      -		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
      -
      -			// all remaining tabs are disabled
      -			if ( this.tabs.length === options.disabled.length ) {
      -				options.active = false;
      -				this.active = $();
      -
      -			// activate previous tab
      -			} else {
      -				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
      -			}
      -
      -		// was active, active tab still exists
      -		} else {
      -
      -			// make sure active index is correct
      -			options.active = this.tabs.index( this.active );
      -		}
      -
      -		this._refresh();
      -	},
      -
      -	_refresh: function() {
      -		this._setOptionDisabled( this.options.disabled );
      -		this._setupEvents( this.options.event );
      -		this._setupHeightStyle( this.options.heightStyle );
      -
      -		this.tabs.not( this.active ).attr( {
      -			"aria-selected": "false",
      -			"aria-expanded": "false",
      -			tabIndex: -1
      -		} );
      -		this.panels.not( this._getPanelForTab( this.active ) )
      -			.hide()
      -			.attr( {
      -				"aria-hidden": "true"
      -			} );
      -
      -		// Make sure one tab is in the tab order
      -		if ( !this.active.length ) {
      -			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
      -		} else {
      -			this.active
      -				.attr( {
      -					"aria-selected": "true",
      -					"aria-expanded": "true",
      -					tabIndex: 0
      -				} );
      -			this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
      -			this._getPanelForTab( this.active )
      -				.show()
      -				.attr( {
      -					"aria-hidden": "false"
      -				} );
      -		}
      -	},
      -
      -	_processTabs: function() {
      -		var that = this,
      -			prevTabs = this.tabs,
      -			prevAnchors = this.anchors,
      -			prevPanels = this.panels;
      -
      -		this.tablist = this._getList().attr( "role", "tablist" );
      -		this._addClass( this.tablist, "ui-tabs-nav",
      -			"ui-helper-reset ui-helper-clearfix ui-widget-header" );
      -
      -		// Prevent users from focusing disabled tabs via click
      -		this.tablist
      -			.on( "mousedown" + this.eventNamespace, "> li", function( event ) {
      -				if ( $( this ).is( ".ui-state-disabled" ) ) {
      -					event.preventDefault();
      -				}
      -			} )
      -
      -			// Support: IE <9
      -			// Preventing the default action in mousedown doesn't prevent IE
      -			// from focusing the element, so if the anchor gets focused, blur.
      -			// We don't have to worry about focusing the previously focused
      -			// element since clicking on a non-focusable element should focus
      -			// the body anyway.
      -			.on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
      -				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
      -					this.blur();
      -				}
      -			} );
      -
      -		this.tabs = this.tablist.find( "> li:has(a[href])" )
      -			.attr( {
      -				role: "tab",
      -				tabIndex: -1
      -			} );
      -		this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );
      -
      -		this.anchors = this.tabs.map( function() {
      -			return $( "a", this )[ 0 ];
      -		} )
      -			.attr( {
      -				role: "presentation",
      -				tabIndex: -1
      -			} );
      -		this._addClass( this.anchors, "ui-tabs-anchor" );
      -
      -		this.panels = $();
      -
      -		this.anchors.each( function( i, anchor ) {
      -			var selector, panel, panelId,
      -				anchorId = $( anchor ).uniqueId().attr( "id" ),
      -				tab = $( anchor ).closest( "li" ),
      -				originalAriaControls = tab.attr( "aria-controls" );
      -
      -			// Inline tab
      -			if ( that._isLocal( anchor ) ) {
      -				selector = anchor.hash;
      -				panelId = selector.substring( 1 );
      -				panel = that.element.find( that._sanitizeSelector( selector ) );
      -
      -			// remote tab
      -			} else {
      -
      -				// If the tab doesn't already have aria-controls,
      -				// generate an id by using a throw-away element
      -				panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
      -				selector = "#" + panelId;
      -				panel = that.element.find( selector );
      -				if ( !panel.length ) {
      -					panel = that._createPanel( panelId );
      -					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
      -				}
      -				panel.attr( "aria-live", "polite" );
      -			}
      -
      -			if ( panel.length ) {
      -				that.panels = that.panels.add( panel );
      -			}
      -			if ( originalAriaControls ) {
      -				tab.data( "ui-tabs-aria-controls", originalAriaControls );
      -			}
      -			tab.attr( {
      -				"aria-controls": panelId,
      -				"aria-labelledby": anchorId
      -			} );
      -			panel.attr( "aria-labelledby", anchorId );
      -		} );
      -
      -		this.panels.attr( "role", "tabpanel" );
      -		this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );
      -
      -		// Avoid memory leaks (#10056)
      -		if ( prevTabs ) {
      -			this._off( prevTabs.not( this.tabs ) );
      -			this._off( prevAnchors.not( this.anchors ) );
      -			this._off( prevPanels.not( this.panels ) );
      -		}
      -	},
      -
      -	// Allow overriding how to find the list for rare usage scenarios (#7715)
      -	_getList: function() {
      -		return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
      -	},
      -
      -	_createPanel: function( id ) {
      -		return $( "<div>" )
      -			.attr( "id", id )
      -			.data( "ui-tabs-destroy", true );
      -	},
      -
      -	_setOptionDisabled: function( disabled ) {
      -		var currentItem, li, i;
      -
      -		if ( $.isArray( disabled ) ) {
      -			if ( !disabled.length ) {
      -				disabled = false;
      -			} else if ( disabled.length === this.anchors.length ) {
      -				disabled = true;
      -			}
      -		}
      -
      -		// Disable tabs
      -		for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
      -			currentItem = $( li );
      -			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
      -				currentItem.attr( "aria-disabled", "true" );
      -				this._addClass( currentItem, null, "ui-state-disabled" );
      -			} else {
      -				currentItem.removeAttr( "aria-disabled" );
      -				this._removeClass( currentItem, null, "ui-state-disabled" );
      -			}
      -		}
      -
      -		this.options.disabled = disabled;
      -
      -		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
      -			disabled === true );
      -	},
      -
      -	_setupEvents: function( event ) {
      -		var events = {};
      -		if ( event ) {
      -			$.each( event.split( " " ), function( index, eventName ) {
      -				events[ eventName ] = "_eventHandler";
      -			} );
      -		}
      -
      -		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
      -
      -		// Always prevent the default action, even when disabled
      -		this._on( true, this.anchors, {
      -			click: function( event ) {
      -				event.preventDefault();
      -			}
      -		} );
      -		this._on( this.anchors, events );
      -		this._on( this.tabs, { keydown: "_tabKeydown" } );
      -		this._on( this.panels, { keydown: "_panelKeydown" } );
      -
      -		this._focusable( this.tabs );
      -		this._hoverable( this.tabs );
      -	},
      -
      -	_setupHeightStyle: function( heightStyle ) {
      -		var maxHeight,
      -			parent = this.element.parent();
      -
      -		if ( heightStyle === "fill" ) {
      -			maxHeight = parent.height();
      -			maxHeight -= this.element.outerHeight() - this.element.height();
      -
      -			this.element.siblings( ":visible" ).each( function() {
      -				var elem = $( this ),
      -					position = elem.css( "position" );
      -
      -				if ( position === "absolute" || position === "fixed" ) {
      -					return;
      -				}
      -				maxHeight -= elem.outerHeight( true );
      -			} );
      -
      -			this.element.children().not( this.panels ).each( function() {
      -				maxHeight -= $( this ).outerHeight( true );
      -			} );
      -
      -			this.panels.each( function() {
      -				$( this ).height( Math.max( 0, maxHeight -
      -					$( this ).innerHeight() + $( this ).height() ) );
      -			} )
      -				.css( "overflow", "auto" );
      -		} else if ( heightStyle === "auto" ) {
      -			maxHeight = 0;
      -			this.panels.each( function() {
      -				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
      -			} ).height( maxHeight );
      -		}
      -	},
      -
      -	_eventHandler: function( event ) {
      -		var options = this.options,
      -			active = this.active,
      -			anchor = $( event.currentTarget ),
      -			tab = anchor.closest( "li" ),
      -			clickedIsActive = tab[ 0 ] === active[ 0 ],
      -			collapsing = clickedIsActive && options.collapsible,
      -			toShow = collapsing ? $() : this._getPanelForTab( tab ),
      -			toHide = !active.length ? $() : this._getPanelForTab( active ),
      -			eventData = {
      -				oldTab: active,
      -				oldPanel: toHide,
      -				newTab: collapsing ? $() : tab,
      -				newPanel: toShow
      -			};
      -
      -		event.preventDefault();
      -
      -		if ( tab.hasClass( "ui-state-disabled" ) ||
      -
      -				// tab is already loading
      -				tab.hasClass( "ui-tabs-loading" ) ||
      -
      -				// can't switch durning an animation
      -				this.running ||
      -
      -				// click on active header, but not collapsible
      -				( clickedIsActive && !options.collapsible ) ||
      -
      -				// allow canceling activation
      -				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
      -			return;
      -		}
      -
      -		options.active = collapsing ? false : this.tabs.index( tab );
      -
      -		this.active = clickedIsActive ? $() : tab;
      -		if ( this.xhr ) {
      -			this.xhr.abort();
      -		}
      -
      -		if ( !toHide.length && !toShow.length ) {
      -			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
      -		}
      -
      -		if ( toShow.length ) {
      -			this.load( this.tabs.index( tab ), event );
      -		}
      -		this._toggle( event, eventData );
      -	},
      -
      -	// Handles show/hide for selecting tabs
      -	_toggle: function( event, eventData ) {
      -		var that = this,
      -			toShow = eventData.newPanel,
      -			toHide = eventData.oldPanel;
      -
      -		this.running = true;
      -
      -		function complete() {
      -			that.running = false;
      -			that._trigger( "activate", event, eventData );
      -		}
      -
      -		function show() {
      -			that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );
      -
      -			if ( toShow.length && that.options.show ) {
      -				that._show( toShow, that.options.show, complete );
      -			} else {
      -				toShow.show();
      -				complete();
      -			}
      -		}
      -
      -		// Start out by hiding, then showing, then completing
      -		if ( toHide.length && this.options.hide ) {
      -			this._hide( toHide, this.options.hide, function() {
      -				that._removeClass( eventData.oldTab.closest( "li" ),
      -					"ui-tabs-active", "ui-state-active" );
      -				show();
      -			} );
      -		} else {
      -			this._removeClass( eventData.oldTab.closest( "li" ),
      -				"ui-tabs-active", "ui-state-active" );
      -			toHide.hide();
      -			show();
      -		}
      -
      -		toHide.attr( "aria-hidden", "true" );
      -		eventData.oldTab.attr( {
      -			"aria-selected": "false",
      -			"aria-expanded": "false"
      -		} );
      -
      -		// If we're switching tabs, remove the old tab from the tab order.
      -		// If we're opening from collapsed state, remove the previous tab from the tab order.
      -		// If we're collapsing, then keep the collapsing tab in the tab order.
      -		if ( toShow.length && toHide.length ) {
      -			eventData.oldTab.attr( "tabIndex", -1 );
      -		} else if ( toShow.length ) {
      -			this.tabs.filter( function() {
      -				return $( this ).attr( "tabIndex" ) === 0;
      -			} )
      -				.attr( "tabIndex", -1 );
      -		}
      -
      -		toShow.attr( "aria-hidden", "false" );
      -		eventData.newTab.attr( {
      -			"aria-selected": "true",
      -			"aria-expanded": "true",
      -			tabIndex: 0
      -		} );
      -	},
      -
      -	_activate: function( index ) {
      -		var anchor,
      -			active = this._findActive( index );
      -
      -		// Trying to activate the already active panel
      -		if ( active[ 0 ] === this.active[ 0 ] ) {
      -			return;
      -		}
      -
      -		// Trying to collapse, simulate a click on the current active header
      -		if ( !active.length ) {
      -			active = this.active;
      -		}
      -
      -		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
      -		this._eventHandler( {
      -			target: anchor,
      -			currentTarget: anchor,
      -			preventDefault: $.noop
      -		} );
      -	},
      -
      -	_findActive: function( index ) {
      -		return index === false ? $() : this.tabs.eq( index );
      -	},
      -
      -	_getIndex: function( index ) {
      -
      -		// meta-function to give users option to provide a href string instead of a numerical index.
      -		if ( typeof index === "string" ) {
      -			index = this.anchors.index( this.anchors.filter( "[href$='" +
      -				$.ui.escapeSelector( index ) + "']" ) );
      -		}
      -
      -		return index;
      -	},
      -
      -	_destroy: function() {
      -		if ( this.xhr ) {
      -			this.xhr.abort();
      -		}
      -
      -		this.tablist
      -			.removeAttr( "role" )
      -			.off( this.eventNamespace );
      -
      -		this.anchors
      -			.removeAttr( "role tabIndex" )
      -			.removeUniqueId();
      -
      -		this.tabs.add( this.panels ).each( function() {
      -			if ( $.data( this, "ui-tabs-destroy" ) ) {
      -				$( this ).remove();
      -			} else {
      -				$( this ).removeAttr( "role tabIndex " +
      -					"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
      -			}
      -		} );
      -
      -		this.tabs.each( function() {
      -			var li = $( this ),
      -				prev = li.data( "ui-tabs-aria-controls" );
      -			if ( prev ) {
      -				li
      -					.attr( "aria-controls", prev )
      -					.removeData( "ui-tabs-aria-controls" );
      -			} else {
      -				li.removeAttr( "aria-controls" );
      -			}
      -		} );
      -
      -		this.panels.show();
      -
      -		if ( this.options.heightStyle !== "content" ) {
      -			this.panels.css( "height", "" );
      -		}
      -	},
      -
      -	enable: function( index ) {
      -		var disabled = this.options.disabled;
      -		if ( disabled === false ) {
      -			return;
      -		}
      -
      -		if ( index === undefined ) {
      -			disabled = false;
      -		} else {
      -			index = this._getIndex( index );
      -			if ( $.isArray( disabled ) ) {
      -				disabled = $.map( disabled, function( num ) {
      -					return num !== index ? num : null;
      -				} );
      -			} else {
      -				disabled = $.map( this.tabs, function( li, num ) {
      -					return num !== index ? num : null;
      -				} );
      -			}
      -		}
      -		this._setOptionDisabled( disabled );
      -	},
      -
      -	disable: function( index ) {
      -		var disabled = this.options.disabled;
      -		if ( disabled === true ) {
      -			return;
      -		}
      -
      -		if ( index === undefined ) {
      -			disabled = true;
      -		} else {
      -			index = this._getIndex( index );
      -			if ( $.inArray( index, disabled ) !== -1 ) {
      -				return;
      -			}
      -			if ( $.isArray( disabled ) ) {
      -				disabled = $.merge( [ index ], disabled ).sort();
      -			} else {
      -				disabled = [ index ];
      -			}
      -		}
      -		this._setOptionDisabled( disabled );
      -	},
      -
      -	load: function( index, event ) {
      -		index = this._getIndex( index );
      -		var that = this,
      -			tab = this.tabs.eq( index ),
      -			anchor = tab.find( ".ui-tabs-anchor" ),
      -			panel = this._getPanelForTab( tab ),
      -			eventData = {
      -				tab: tab,
      -				panel: panel
      -			},
      -			complete = function( jqXHR, status ) {
      -				if ( status === "abort" ) {
      -					that.panels.stop( false, true );
      -				}
      -
      -				that._removeClass( tab, "ui-tabs-loading" );
      -				panel.removeAttr( "aria-busy" );
      -
      -				if ( jqXHR === that.xhr ) {
      -					delete that.xhr;
      -				}
      -			};
      -
      -		// Not remote
      -		if ( this._isLocal( anchor[ 0 ] ) ) {
      -			return;
      -		}
      -
      -		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
      -
      -		// Support: jQuery <1.8
      -		// jQuery <1.8 returns false if the request is canceled in beforeSend,
      -		// but as of 1.8, $.ajax() always returns a jqXHR object.
      -		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
      -			this._addClass( tab, "ui-tabs-loading" );
      -			panel.attr( "aria-busy", "true" );
      -
      -			this.xhr
      -				.done( function( response, status, jqXHR ) {
      -
      -					// support: jQuery <1.8
      -					// http://bugs.jquery.com/ticket/11778
      -					setTimeout( function() {
      -						panel.html( response );
      -						that._trigger( "load", event, eventData );
      -
      -						complete( jqXHR, status );
      -					}, 1 );
      -				} )
      -				.fail( function( jqXHR, status ) {
      -
      -					// support: jQuery <1.8
      -					// http://bugs.jquery.com/ticket/11778
      -					setTimeout( function() {
      -						complete( jqXHR, status );
      -					}, 1 );
      -				} );
      -		}
      -	},
      -
      -	_ajaxSettings: function( anchor, event, eventData ) {
      -		var that = this;
      -		return {
      -
      -			// Support: IE <11 only
      -			// Strip any hash that exists to prevent errors with the Ajax request
      -			url: anchor.attr( "href" ).replace( /#.*$/, "" ),
      -			beforeSend: function( jqXHR, settings ) {
      -				return that._trigger( "beforeLoad", event,
      -					$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
      -			}
      -		};
      -	},
      -
      -	_getPanelForTab: function( tab ) {
      -		var id = $( tab ).attr( "aria-controls" );
      -		return this.element.find( this._sanitizeSelector( "#" + id ) );
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: Switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for ui-tab class (now ui-tabs-tab)
      -	$.widget( "ui.tabs", $.ui.tabs, {
      -		_processTabs: function() {
      -			this._superApply( arguments );
      -			this._addClass( this.tabs, "ui-tab" );
      -		}
      -	} );
      -}
      -
      -var widgetsTabs = $.ui.tabs;
      -
      -
      -/*!
      - * jQuery UI Tooltip 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Tooltip
      -//>>group: Widgets
      -//>>description: Shows additional information for any element on hover or focus.
      -//>>docs: http://api.jqueryui.com/tooltip/
      -//>>demos: http://jqueryui.com/tooltip/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/tooltip.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -
      -
      -$.widget( "ui.tooltip", {
      -	version: "1.12.1",
      -	options: {
      -		classes: {
      -			"ui-tooltip": "ui-corner-all ui-widget-shadow"
      -		},
      -		content: function() {
      -
      -			// support: IE<9, Opera in jQuery <1.7
      -			// .text() can't accept undefined, so coerce to a string
      -			var title = $( this ).attr( "title" ) || "";
      -
      -			// Escape title, since we're going from an attribute to raw HTML
      -			return $( "<a>" ).text( title ).html();
      -		},
      -		hide: true,
      -
      -		// Disabled elements have inconsistent behavior across browsers (#8661)
      -		items: "[title]:not([disabled])",
      -		position: {
      -			my: "left top+15",
      -			at: "left bottom",
      -			collision: "flipfit flip"
      -		},
      -		show: true,
      -		track: false,
      -
      -		// Callbacks
      -		close: null,
      -		open: null
      -	},
      -
      -	_addDescribedBy: function( elem, id ) {
      -		var describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ );
      -		describedby.push( id );
      -		elem
      -			.data( "ui-tooltip-id", id )
      -			.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
      -	},
      -
      -	_removeDescribedBy: function( elem ) {
      -		var id = elem.data( "ui-tooltip-id" ),
      -			describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ),
      -			index = $.inArray( id, describedby );
      -
      -		if ( index !== -1 ) {
      -			describedby.splice( index, 1 );
      -		}
      -
      -		elem.removeData( "ui-tooltip-id" );
      -		describedby = $.trim( describedby.join( " " ) );
      -		if ( describedby ) {
      -			elem.attr( "aria-describedby", describedby );
      -		} else {
      -			elem.removeAttr( "aria-describedby" );
      -		}
      -	},
      -
      -	_create: function() {
      -		this._on( {
      -			mouseover: "open",
      -			focusin: "open"
      -		} );
      -
      -		// IDs of generated tooltips, needed for destroy
      -		this.tooltips = {};
      -
      -		// IDs of parent tooltips where we removed the title attribute
      -		this.parents = {};
      -
      -		// Append the aria-live region so tooltips announce correctly
      -		this.liveRegion = $( "<div>" )
      -			.attr( {
      -				role: "log",
      -				"aria-live": "assertive",
      -				"aria-relevant": "additions"
      -			} )
      -			.appendTo( this.document[ 0 ].body );
      -		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
      -
      -		this.disabledTitles = $( [] );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var that = this;
      -
      -		this._super( key, value );
      -
      -		if ( key === "content" ) {
      -			$.each( this.tooltips, function( id, tooltipData ) {
      -				that._updateContent( tooltipData.element );
      -			} );
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this[ value ? "_disable" : "_enable" ]();
      -	},
      -
      -	_disable: function() {
      -		var that = this;
      -
      -		// Close open tooltips
      -		$.each( this.tooltips, function( id, tooltipData ) {
      -			var event = $.Event( "blur" );
      -			event.target = event.currentTarget = tooltipData.element[ 0 ];
      -			that.close( event, true );
      -		} );
      -
      -		// Remove title attributes to prevent native tooltips
      -		this.disabledTitles = this.disabledTitles.add(
      -			this.element.find( this.options.items ).addBack()
      -				.filter( function() {
      -					var element = $( this );
      -					if ( element.is( "[title]" ) ) {
      -						return element
      -							.data( "ui-tooltip-title", element.attr( "title" ) )
      -							.removeAttr( "title" );
      -					}
      -				} )
      -		);
      -	},
      -
      -	_enable: function() {
      -
      -		// restore title attributes
      -		this.disabledTitles.each( function() {
      -			var element = $( this );
      -			if ( element.data( "ui-tooltip-title" ) ) {
      -				element.attr( "title", element.data( "ui-tooltip-title" ) );
      -			}
      -		} );
      -		this.disabledTitles = $( [] );
      -	},
      -
      -	open: function( event ) {
      -		var that = this,
      -			target = $( event ? event.target : this.element )
      -
      -				// we need closest here due to mouseover bubbling,
      -				// but always pointing at the same event target
      -				.closest( this.options.items );
      -
      -		// No element to show a tooltip for or the tooltip is already open
      -		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
      -			return;
      -		}
      -
      -		if ( target.attr( "title" ) ) {
      -			target.data( "ui-tooltip-title", target.attr( "title" ) );
      -		}
      -
      -		target.data( "ui-tooltip-open", true );
      -
      -		// Kill parent tooltips, custom or native, for hover
      -		if ( event && event.type === "mouseover" ) {
      -			target.parents().each( function() {
      -				var parent = $( this ),
      -					blurEvent;
      -				if ( parent.data( "ui-tooltip-open" ) ) {
      -					blurEvent = $.Event( "blur" );
      -					blurEvent.target = blurEvent.currentTarget = this;
      -					that.close( blurEvent, true );
      -				}
      -				if ( parent.attr( "title" ) ) {
      -					parent.uniqueId();
      -					that.parents[ this.id ] = {
      -						element: this,
      -						title: parent.attr( "title" )
      -					};
      -					parent.attr( "title", "" );
      -				}
      -			} );
      -		}
      -
      -		this._registerCloseHandlers( event, target );
      -		this._updateContent( target, event );
      -	},
      -
      -	_updateContent: function( target, event ) {
      -		var content,
      -			contentOption = this.options.content,
      -			that = this,
      -			eventType = event ? event.type : null;
      -
      -		if ( typeof contentOption === "string" || contentOption.nodeType ||
      -				contentOption.jquery ) {
      -			return this._open( event, target, contentOption );
      -		}
      -
      -		content = contentOption.call( target[ 0 ], function( response ) {
      -
      -			// IE may instantly serve a cached response for ajax requests
      -			// delay this call to _open so the other call to _open runs first
      -			that._delay( function() {
      -
      -				// Ignore async response if tooltip was closed already
      -				if ( !target.data( "ui-tooltip-open" ) ) {
      -					return;
      -				}
      -
      -				// JQuery creates a special event for focusin when it doesn't
      -				// exist natively. To improve performance, the native event
      -				// object is reused and the type is changed. Therefore, we can't
      -				// rely on the type being correct after the event finished
      -				// bubbling, so we set it back to the previous value. (#8740)
      -				if ( event ) {
      -					event.type = eventType;
      -				}
      -				this._open( event, target, response );
      -			} );
      -		} );
      -		if ( content ) {
      -			this._open( event, target, content );
      -		}
      -	},
      -
      -	_open: function( event, target, content ) {
      -		var tooltipData, tooltip, delayedShow, a11yContent,
      -			positionOption = $.extend( {}, this.options.position );
      -
      -		if ( !content ) {
      -			return;
      -		}
      -
      -		// Content can be updated multiple times. If the tooltip already
      -		// exists, then just update the content and bail.
      -		tooltipData = this._find( target );
      -		if ( tooltipData ) {
      -			tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
      -			return;
      -		}
      -
      -		// If we have a title, clear it to prevent the native tooltip
      -		// we have to check first to avoid defining a title if none exists
      -		// (we don't want to cause an element to start matching [title])
      -		//
      -		// We use removeAttr only for key events, to allow IE to export the correct
      -		// accessible attributes. For mouse events, set to empty string to avoid
      -		// native tooltip showing up (happens only when removing inside mouseover).
      -		if ( target.is( "[title]" ) ) {
      -			if ( event && event.type === "mouseover" ) {
      -				target.attr( "title", "" );
      -			} else {
      -				target.removeAttr( "title" );
      -			}
      -		}
      -
      -		tooltipData = this._tooltip( target );
      -		tooltip = tooltipData.tooltip;
      -		this._addDescribedBy( target, tooltip.attr( "id" ) );
      -		tooltip.find( ".ui-tooltip-content" ).html( content );
      -
      -		// Support: Voiceover on OS X, JAWS on IE <= 9
      -		// JAWS announces deletions even when aria-relevant="additions"
      -		// Voiceover will sometimes re-read the entire log region's contents from the beginning
      -		this.liveRegion.children().hide();
      -		a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() );
      -		a11yContent.removeAttr( "name" ).find( "[name]" ).removeAttr( "name" );
      -		a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
      -		a11yContent.appendTo( this.liveRegion );
      -
      -		function position( event ) {
      -			positionOption.of = event;
      -			if ( tooltip.is( ":hidden" ) ) {
      -				return;
      -			}
      -			tooltip.position( positionOption );
      -		}
      -		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
      -			this._on( this.document, {
      -				mousemove: position
      -			} );
      -
      -			// trigger once to override element-relative positioning
      -			position( event );
      -		} else {
      -			tooltip.position( $.extend( {
      -				of: target
      -			}, this.options.position ) );
      -		}
      -
      -		tooltip.hide();
      -
      -		this._show( tooltip, this.options.show );
      -
      -		// Handle tracking tooltips that are shown with a delay (#8644). As soon
      -		// as the tooltip is visible, position the tooltip using the most recent
      -		// event.
      -		// Adds the check to add the timers only when both delay and track options are set (#14682)
      -		if ( this.options.track && this.options.show && this.options.show.delay ) {
      -			delayedShow = this.delayedShow = setInterval( function() {
      -				if ( tooltip.is( ":visible" ) ) {
      -					position( positionOption.of );
      -					clearInterval( delayedShow );
      -				}
      -			}, $.fx.interval );
      -		}
      -
      -		this._trigger( "open", event, { tooltip: tooltip } );
      -	},
      -
      -	_registerCloseHandlers: function( event, target ) {
      -		var events = {
      -			keyup: function( event ) {
      -				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
      -					var fakeEvent = $.Event( event );
      -					fakeEvent.currentTarget = target[ 0 ];
      -					this.close( fakeEvent, true );
      -				}
      -			}
      -		};
      -
      -		// Only bind remove handler for delegated targets. Non-delegated
      -		// tooltips will handle this in destroy.
      -		if ( target[ 0 ] !== this.element[ 0 ] ) {
      -			events.remove = function() {
      -				this._removeTooltip( this._find( target ).tooltip );
      -			};
      -		}
      -
      -		if ( !event || event.type === "mouseover" ) {
      -			events.mouseleave = "close";
      -		}
      -		if ( !event || event.type === "focusin" ) {
      -			events.focusout = "close";
      -		}
      -		this._on( true, target, events );
      -	},
      -
      -	close: function( event ) {
      -		var tooltip,
      -			that = this,
      -			target = $( event ? event.currentTarget : this.element ),
      -			tooltipData = this._find( target );
      -
      -		// The tooltip may already be closed
      -		if ( !tooltipData ) {
      -
      -			// We set ui-tooltip-open immediately upon open (in open()), but only set the
      -			// additional data once there's actually content to show (in _open()). So even if the
      -			// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in
      -			// the period between open() and _open().
      -			target.removeData( "ui-tooltip-open" );
      -			return;
      -		}
      -
      -		tooltip = tooltipData.tooltip;
      -
      -		// Disabling closes the tooltip, so we need to track when we're closing
      -		// to avoid an infinite loop in case the tooltip becomes disabled on close
      -		if ( tooltipData.closing ) {
      -			return;
      -		}
      -
      -		// Clear the interval for delayed tracking tooltips
      -		clearInterval( this.delayedShow );
      -
      -		// Only set title if we had one before (see comment in _open())
      -		// If the title attribute has changed since open(), don't restore
      -		if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
      -			target.attr( "title", target.data( "ui-tooltip-title" ) );
      -		}
      -
      -		this._removeDescribedBy( target );
      -
      -		tooltipData.hiding = true;
      -		tooltip.stop( true );
      -		this._hide( tooltip, this.options.hide, function() {
      -			that._removeTooltip( $( this ) );
      -		} );
      -
      -		target.removeData( "ui-tooltip-open" );
      -		this._off( target, "mouseleave focusout keyup" );
      -
      -		// Remove 'remove' binding only on delegated targets
      -		if ( target[ 0 ] !== this.element[ 0 ] ) {
      -			this._off( target, "remove" );
      -		}
      -		this._off( this.document, "mousemove" );
      -
      -		if ( event && event.type === "mouseleave" ) {
      -			$.each( this.parents, function( id, parent ) {
      -				$( parent.element ).attr( "title", parent.title );
      -				delete that.parents[ id ];
      -			} );
      -		}
      -
      -		tooltipData.closing = true;
      -		this._trigger( "close", event, { tooltip: tooltip } );
      -		if ( !tooltipData.hiding ) {
      -			tooltipData.closing = false;
      -		}
      -	},
      -
      -	_tooltip: function( element ) {
      -		var tooltip = $( "<div>" ).attr( "role", "tooltip" ),
      -			content = $( "<div>" ).appendTo( tooltip ),
      -			id = tooltip.uniqueId().attr( "id" );
      -
      -		this._addClass( content, "ui-tooltip-content" );
      -		this._addClass( tooltip, "ui-tooltip", "ui-widget ui-widget-content" );
      -
      -		tooltip.appendTo( this._appendTo( element ) );
      -
      -		return this.tooltips[ id ] = {
      -			element: element,
      -			tooltip: tooltip
      -		};
      -	},
      -
      -	_find: function( target ) {
      -		var id = target.data( "ui-tooltip-id" );
      -		return id ? this.tooltips[ id ] : null;
      -	},
      -
      -	_removeTooltip: function( tooltip ) {
      -		tooltip.remove();
      -		delete this.tooltips[ tooltip.attr( "id" ) ];
      -	},
      -
      -	_appendTo: function( target ) {
      -		var element = target.closest( ".ui-front, dialog" );
      -
      -		if ( !element.length ) {
      -			element = this.document[ 0 ].body;
      -		}
      -
      -		return element;
      -	},
      -
      -	_destroy: function() {
      -		var that = this;
      -
      -		// Close open tooltips
      -		$.each( this.tooltips, function( id, tooltipData ) {
      -
      -			// Delegate to close method to handle common cleanup
      -			var event = $.Event( "blur" ),
      -				element = tooltipData.element;
      -			event.target = event.currentTarget = element[ 0 ];
      -			that.close( event, true );
      -
      -			// Remove immediately; destroying an open tooltip doesn't use the
      -			// hide animation
      -			$( "#" + id ).remove();
      -
      -			// Restore the title
      -			if ( element.data( "ui-tooltip-title" ) ) {
      -
      -				// If the title attribute has changed since open(), don't restore
      -				if ( !element.attr( "title" ) ) {
      -					element.attr( "title", element.data( "ui-tooltip-title" ) );
      -				}
      -				element.removeData( "ui-tooltip-title" );
      -			}
      -		} );
      -		this.liveRegion.remove();
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: Switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for tooltipClass option
      -	$.widget( "ui.tooltip", $.ui.tooltip, {
      -		options: {
      -			tooltipClass: null
      -		},
      -		_tooltip: function() {
      -			var tooltipData = this._superApply( arguments );
      -			if ( this.options.tooltipClass ) {
      -				tooltipData.tooltip.addClass( this.options.tooltipClass );
      -			}
      -			return tooltipData;
      -		}
      -	} );
      -}
      -
      -var widgetsTooltip = $.ui.tooltip;
      -
      -
      -
      -
      -}));
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/jquery-ui.min.js b/bower_components/jquery-ui/jquery-ui.min.js
      deleted file mode 100644
      index 25398a1674..0000000000
      --- a/bower_components/jquery-ui/jquery-ui.min.js
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n)
      -}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;
      -this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s))
      -}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"&#39;")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?"&#xa0;":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":"&#xa0;")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":"&#xa0;")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}
      -},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog
      -},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html("&#160;")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html("&#160;")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1
      -},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td>&#160;</td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;
      -this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/package.json b/bower_components/jquery-ui/package.json
      deleted file mode 100644
      index 3f4c8ae779..0000000000
      --- a/bower_components/jquery-ui/package.json
      +++ /dev/null
      @@ -1,16 +0,0 @@
      -{
      -    "name": "components-jqueryui",
      -    "description": "A curated set of user interface interactions, effects, widgets, and themes built on top of the jQuery JavaScript Library.",
      -    "version": "1.12.1",
      -    "homepage": "http://jqueryui.com",
      -    "author": {
      -        "name": "jQuery Foundation and other contributors",
      -        "url": "https://github.com/jquery/jquery-ui/blob/master/AUTHORS.txt"
      -    },
      -    "repository": {
      -        "type": "git",
      -        "url": "git://github.com/components/jqueryui.git"
      -    },
      -    "main": "jquery-ui.js",
      -    "license": "MIT"
      -}
      diff --git a/bower_components/jquery-ui/themes/base/accordion.css b/bower_components/jquery-ui/themes/base/accordion.css
      deleted file mode 100644
      index e096c8c541..0000000000
      --- a/bower_components/jquery-ui/themes/base/accordion.css
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -/*!
      - * jQuery UI Accordion 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/accordion/#theming
      - */
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/all.css b/bower_components/jquery-ui/themes/base/all.css
      deleted file mode 100644
      index 0898cbc8ab..0000000000
      --- a/bower_components/jquery-ui/themes/base/all.css
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - */
      -@import "base.css";
      -@import "theme.css";
      diff --git a/bower_components/jquery-ui/themes/base/autocomplete.css b/bower_components/jquery-ui/themes/base/autocomplete.css
      deleted file mode 100644
      index afdc3a4e74..0000000000
      --- a/bower_components/jquery-ui/themes/base/autocomplete.css
      +++ /dev/null
      @@ -1,16 +0,0 @@
      -/*!
      - * jQuery UI Autocomplete 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/autocomplete/#theming
      - */
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/base.css b/bower_components/jquery-ui/themes/base/base.css
      deleted file mode 100644
      index f109655a54..0000000000
      --- a/bower_components/jquery-ui/themes/base/base.css
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - */
      -@import url("core.css");
      -
      -@import url("accordion.css");
      -@import url("autocomplete.css");
      -@import url("button.css");
      -@import url("checkboxradio.css");
      -@import url("controlgroup.css");
      -@import url("datepicker.css");
      -@import url("dialog.css");
      -@import url("draggable.css");
      -@import url("menu.css");
      -@import url("progressbar.css");
      -@import url("resizable.css");
      -@import url("selectable.css");
      -@import url("selectmenu.css");
      -@import url("sortable.css");
      -@import url("slider.css");
      -@import url("spinner.css");
      -@import url("tabs.css");
      -@import url("tooltip.css");
      diff --git a/bower_components/jquery-ui/themes/base/button.css b/bower_components/jquery-ui/themes/base/button.css
      deleted file mode 100644
      index 45915b616b..0000000000
      --- a/bower_components/jquery-ui/themes/base/button.css
      +++ /dev/null
      @@ -1,82 +0,0 @@
      -/*!
      - * jQuery UI Button 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/button/#theming
      - */
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/checkboxradio.css b/bower_components/jquery-ui/themes/base/checkboxradio.css
      deleted file mode 100644
      index 2bfdd29abc..0000000000
      --- a/bower_components/jquery-ui/themes/base/checkboxradio.css
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -/*!
      - * jQuery UI Checkboxradio 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/checkboxradio/#theming
      - */
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/controlgroup.css b/bower_components/jquery-ui/themes/base/controlgroup.css
      deleted file mode 100644
      index 86f3306d27..0000000000
      --- a/bower_components/jquery-ui/themes/base/controlgroup.css
      +++ /dev/null
      @@ -1,65 +0,0 @@
      -/*!
      - * jQuery UI Controlgroup 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/controlgroup/#theming
      - */
      -
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      diff --git a/bower_components/jquery-ui/themes/base/core.css b/bower_components/jquery-ui/themes/base/core.css
      deleted file mode 100644
      index a4c1b2de87..0000000000
      --- a/bower_components/jquery-ui/themes/base/core.css
      +++ /dev/null
      @@ -1,97 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/datepicker.css b/bower_components/jquery-ui/themes/base/datepicker.css
      deleted file mode 100644
      index c82ae33fba..0000000000
      --- a/bower_components/jquery-ui/themes/base/datepicker.css
      +++ /dev/null
      @@ -1,185 +0,0 @@
      -/*!
      - * jQuery UI Datepicker 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/datepicker/#theming
      - */
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/dialog.css b/bower_components/jquery-ui/themes/base/dialog.css
      deleted file mode 100644
      index 993f7975ca..0000000000
      --- a/bower_components/jquery-ui/themes/base/dialog.css
      +++ /dev/null
      @@ -1,101 +0,0 @@
      -/*!
      - * jQuery UI Dialog 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/dialog/#theming
      - */
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/draggable.css b/bower_components/jquery-ui/themes/base/draggable.css
      deleted file mode 100644
      index 3f71945369..0000000000
      --- a/bower_components/jquery-ui/themes/base/draggable.css
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -/*!
      - * jQuery UI Draggable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png b/bower_components/jquery-ui/themes/base/images/ui-bg_flat_0_aaaaaa_40x100.png
      deleted file mode 100644
      index a2e6bfc085f51b392569e58b72d454586b900f61..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 86
      zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq?iMILR?p^S|wQb`zMgg=jq}Y
      hQo)$KfKh^VF#`ir1OsEt!yO=<44$rjF6*2UngAlC6uAHZ
      
      diff --git a/bower_components/jquery-ui/themes/base/images/ui-icons_444444_256x240.png b/bower_components/jquery-ui/themes/base/images/ui-icons_444444_256x240.png
      deleted file mode 100644
      index 618770efd1c3d44e21a3dc6fa2340aba7b8724c9..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7090
      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
      
      diff --git a/bower_components/jquery-ui/themes/base/images/ui-icons_555555_256x240.png b/bower_components/jquery-ui/themes/base/images/ui-icons_555555_256x240.png
      deleted file mode 100644
      index fce0540199879facfe3601fe3c1aa65cfefe4273..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7074
      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
      ZhEMFBLVUhI`KNIPXsGI{lquOo{y$4zbbbH;
      
      diff --git a/bower_components/jquery-ui/themes/base/images/ui-icons_777620_256x240.png b/bower_components/jquery-ui/themes/base/images/ui-icons_777620_256x240.png
      deleted file mode 100644
      index c896b8d1f8e175673342575b86cbc1d0e6d3dcd6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pg$_FYzZ?Z)v;Y7A
      
      diff --git a/bower_components/jquery-ui/themes/base/images/ui-icons_777777_256x240.png b/bower_components/jquery-ui/themes/base/images/ui-icons_777777_256x240.png
      deleted file mode 100644
      index 36e7a1ca0e390ce80df6fec42fa41d4d2a945142..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7111
      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
      Mf~I_>tVQ_$0Z7+DFaQ7m
      
      diff --git a/bower_components/jquery-ui/themes/base/images/ui-icons_cc0000_256x240.png b/bower_components/jquery-ui/themes/base/images/ui-icons_cc0000_256x240.png
      deleted file mode 100644
      index 5bd316c59d3138bf7580745b799ac6cebd61af37..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M>znIU=%C~O3r$x_1ONa4
      
      diff --git a/bower_components/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/base/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      zcmZu$XH-*R(!L3y1eB^2L7D;r27>e=y-E`VK{V1qM0$`SgixeOM?iY-y(0)j=|wss
      zC?rxthX7KA4|n%FXLry3xpU{<^W1ml&YYQfpEvBGj@ni78{_~0T-8ul)&~I4<t?y7
      z2D!YdWVp&-3W%+OwgLcDM^l`c6JP4=mg@T20N~9H0O%k9IJta;#sh#m901nL06^*k
      z05CYGHS5V-z5rWjswo2(A<={Fml`QjLtBLuO9CS2x*l`PqXGboQX0w%2A(sU2!{wn
      z&l6M>9WUSK&pscyU25X|L_i#xZJM{Q1zBCownss(Ct&Jt$==9yFBvN#>vb$^k^7SJ
      zdOJW-pTQ0x86zj&V#1K$Bxn36)u2F#eyf5gUn2kIOubU$vaa2E4Ck*TwiSEXxnqfy
      zpDl-5Lo&IuZ??T`mj?$=(<E)@JZy9nL&=z0R1xUVQBGQRXJv3N9zDY3&e1>{3vfyq
      zgR8F55|e17M@{8!PWV=6Px@WsCSR0{Zi@<pgk>u!-wfb*j~3PG;SAyO&1kTUu#^)o
      zvzryI%50Zet5^^t_rCr$VUI(;XIf@?-^;{}QUKgEwDpL{V`xjtG52Bqap|4x=iY4O
      zUt&GtYfhIpO8x;!y+b{;K2=Cs>_>dM4>)qU!Kme_aLj9RL=)TSKW@%)M3~rbd2>Jp
      zh=fKJE0RtEsl^6J5rb3_J)q#*C*a%2s-RqBR(GKW%2>evmI;_h?Y2BF6hg-GSN(^V
      zkSKLDhGvDR$W9G$ULI_-f%F>hwR31>e(<%xgvsYh5=}#&50E5yPw+JA9<h-VAP)K|
      z+2q=IOy>}Z-Q`0doUEV!zPWbARopLuyCP}E=|T7p#IvM~-|}G4>)uy@yDYl0r|mgi
      z%PAH17`SOay*8Hx-Ugj172439jtsC~ehk0rMg;xMWJYbiA32Vc#S{&+cX2ca5~+zm
      zi2q?7lv;ul1pYVE7q;{m%r@lJRXw*@4h9}ppLvLD%Dz`+w1)OR2{6!b@5k#%2BZu$
      z0s*~>739gF=_g-b#+4Mkp)@*vG|BVr+0VtI)R{^W*=oMLSuPc4L%H1|w50F+sJyHp
      z+%#LZHKd#}jPPWW<zwe8`1g$&sB+W<dYv<|UvLiWQ>sf6))E^BLhgtWH*M!=Kaf{h
      z3rYyLT^WiqeZG7zM#XWsr7Zo=J!;Klz>p2xx3K2YMKHH*wg0L6F-&bsjQDu*X(REg
      zq%7UJEwPbB!(e}Fh84PZNz*Oz;(?o9P0hyb0yFN!ABVQ~sGl%6hPN!~Lk&Ef@ww<t
      z-}4(Cy%KDf$*F1fzoK~gpOnE!dBy|6i==YrrX4#FTl9-o<h*xeb5X`)lj{q$o;6zp
      zf%a=C$*HHO3yo!ijl@U$UJ+3qB_-~7<ENN5xQ>8zKYh8^&n{$_oxX3Tu_N&WtWlTZ
      zgGFd5tt9PnT{-so=4G0VeAD^naK6T@da9Qt`{(D=rqd#fAe9bCYJb^jjHpjCUYJA|
      zfJJRkus8Yo0^3M~?fV*U>rh;GRyaSL?N;pl7;72Yeo&5m^EDsob@uDM>*~1C901>V
      zT{g6&jxNbX*MQbM%V;^MWIf_!9abs>YknTE)@<0yrD*Iisj2ZdD(E+r(gjW=3Rk6R
      zyh=rs=9eKUid@;YCwe;$sF%n6n>B5Rdgk7q%zoZ$+DcDcn+w>W^8a1u$~(?qKEL`$
      zXK{w}OGPJlajA%kDELH1;b^>40OaFZ@m?*Bik;KX<(ZGEyz-sU0vv|szq2o}Ta5W}
      z@gC?|mDiwe$z0#nhnC^X`L*RbH+q`+U&C8wdu{mls%4i};L{sEut;r~OGR37ut7uD
      zq^4ZJ!y5t0HYu;n#rzVQM8*>5mc#a3_P*bDtza2rwAz`Nrf&*gsV}UIKkdcH5#42y
      z@@i=>`6POG@`G`rzyQ)cuHpWb-XBv*1`_@0Nz(0atoMv_HbDB)p3^}MhDT{-`>M8*
      zM(U}We-h<e7@VfCieCy;ji`QQ);dI^VXD(acPUWIQYufyPKx(PoV`wGPi?=)lHDi6
      zD)nYQi}?Jk>nGFVoTb);AQqhXPSNG2=geoiS9G+m;_0LAVfR(R8&j1xHT1x!2X9+f
      z2U26aJYr>R^!50<i=?w{B#L&@98$|TdTLvR@}^N|vTcqfyn9}<JUw?TsD()yM3g<M
      zBC1zY8p;3Go|J(9E=3V+pqZ<i{xk_$w3y)}2e;{%q={>}k&`f{uxM|#plXHs&3WI3
      zcpc|F1+T}k@p%rBMjitvwC*yA($x1r8;@VM)JwOQ{4loWjWOMWcIJn1ja6Kz(^yW%
      z$X+~ldgNYx_(U<NP9f+7YXxik>S0HxmwI%t=Q`BcKhC0M&2A5!KG;^lzaTi+)U#Cx
      zVw~Jt(lu6}rQT{XOGx$kU4d=LZB~xt8G7Bj&OC8Lp01PE9EubzhU;4Iq*9w_7!=U<
      zif{!AX4{`al5x;GC2}gqU&yNaw8#Z`RF6Ns_75C({H^8;%Db<&SQ~bPI9?(geG=mY
      z%h&4x&|Co39q9nz<JfrfN&(tU)i^TS71qa_dtsgFLOBHDqjtDr#`UKtHjzPHny(|D
      z^$l91TvDmvcMsGU;f|2d?-mi6g6tNW|CXxXH6VEU#Ne%m1Ud9$ddi6A5+aDd{JUf~
      zt3Z1Dmg@qd$Qo)yJd5aT_-f10#B7RW;V;0yAT0ES)TuQ;$S<l`OUhaz<jK|ps8lKB
      zl!+X+6zP}YJ;5KERZ=bE$gTeI#J8)trdK(xE$2&{N~<?r%c3h3q1_?s{;nXbNCn23
      zQjnNWeB_3&s*h<`j;NkT^l+-aBxSz~0Oty8ECOV+oea)Im}s1`%LX_1`-<C*v>8M@
      zx7YiV@3vJ6ZKYJ=R)VmV^Sm15w<R9;PPlgmJsE_y+X~q}Yqxi`(SFcAN!w5rtg%75
      zQ+xDC%Obsx<1;saD}3nmR?mdr@oN1O&Ta{#I%$t{-n3YhrW4h$VS9;c@8yc_K2()Y
      z!m<6bnIhdy!*M5uKV!(U=C3Fl5t#hLd38X<#5OJuast1jmxDi1RWe}x!eAY!Pi)Yw
      z`uBuG*uBYHeFMh~4|%i%ChsJcUJUQ5&Hox>Zd&WbNwpPr#lG92OBRg&a4f@%`Wbg2
      z<kRJSK5z%oZR`Bxmb`}llQavr7yOyttEgF%F{U$^>{Z;t2lH`1225knwv>&K(U}9x
      z^`JfCu<u&a4`CvmKYXYwKox~YgwSsQ7^=BvL>2Q0kO&;;mVlbE5XqGIlr&NKCHTHc
      ziIqjOqP+lN{4eMxeU`WWx`43zb{sBzmmFmzomg_gGDnKb1!89RTcMZ(>X*ca5_?D4
      z^FQ*q-3|bZzt(P&3*aP75SZ)cL=WI^oB+}&MmE8=V!Ro6Md&RP;NcGsd;_C<VB->Q
      zI2N>Ht4JZxWN}8Rgr<`q!fB)pWaQGr)5*`ES&A!%twSQ2L$W+f$)%*~2^so02b<e-
      z35(AJt4xm<Q^-Cjc&86Eet-@V9lhFpGv~~#E;N<(&eWbUFmrtO341QUUc}Y~ui9i(
      z{TKpIx_zAAzwm0368_!XOjeywPCFl8lj}e^8T`@F3v2u)lhNYp@!6h&nXZhK>=sS{
      zok@?v7EMNq6N4l;o~;HB-|u=+P@wfI0(o$2h?I;~x{rZckLW)ppY*p=#D2jHR^U1X
      zXV{=vAi0|Ac(w||&%CH7=0{Sc8Vm{M+c})3dW-ynUWJh33F<{)hfD2rf24HQF{IW^
      zjm>xeovC7KU09JO;=$Bmzj>fZGSe?k?Qu?fl8=c@oR9G-oQ-d4CP%CnhRHKtappYv
      zMjc0bzx78<e0Ore>Z|!4+>%$?L{aVo@3#sS<tg^}HmS?0Yi8<`KRMCRjKb{Km%H<1
      zZ}NmzMmg9%hFkE;e;MHP*)TgJIOnwYoewcH7iq3S-dAw=jSm<h$hpCPc>Epd@Hg+l
      z;F&|W$LS@@2ptnS9VA|JXTEDjj-Ofh%Y0NcTfb!Z#fF|t2*AQ}q$ND`hs+zkslw)6
      zb>`fTc#g!xoNuNYcX)hfL=2kCWqg)asv<&B94@4Of9Et0^7+BYU!Om0ycFZRMmyKl
      zJc<|}ekRmoyh>9%sdZYmQwu|lEsz0c<mlNW2SA>g;o&|oRVV2_#dio;klL<+hUi9#
      zIla?c6`PeeCgqA)aaid7Rq!AF`VV`4gQG-?uEtBttXYByI<3U}LHdPw!xC%~*K|@c
      zy^K!JL2YRv-bQ&O)sGtDnIWrHIU+o5di`Lac3umje#m2Id#Gu6F3Ne*xUn6~J-lw)
      z9Fjzcr<BZW`*c|FD>)qUaMt}q7_BYM`6qATCCPl@UHehaY}~`>FmoRCR%K}ps^0rG
      zc!yB9%Dm4plSMV^H^Ou6Sg0KNh$taxEkvl7&++LJ_iFiu!o!3^-u6SM2`+$z1AD7z
      zlPS}v%B%l(*%;>Moh*bwI!|aan)iG}ubJCbVq$y2b(j|u2|Uk|o({y4&t@|)g3}7y
      zGQJ(|JHG87&OQ?^au};Y{NW?E5iPbiX+-E)`6Z}4^1>FQrr=e1@;_plpHVnJ)^ynL
      z_nG}Xesz$J#&CqlD*6vPCIywDPt|jL*-%fw|2`n!k^$#AS~_Zt^LMMV?e*G<zj<FZ
      zn^E#s=oeB*HRE-JF`_%7xi~dQjHcWcI~AF`^iJjGWGo?*W|T=vi7h*tdX%T`z1@1+
      zFlv)t(R=Z>Z*XWv;Yt`@7^$ymYN9A<AMy#Fsg4M(96$)|zdb8USF6C0z{WURZL`su
      ztsS@J<@l#W><u)kGm0|>RU9cLhf<nRZDevvX)t6ueJ$-i6Zyvt&yPtt+Mk#PQF&Uk
      zVvF%JH(HX#Lw-aewDcrOJIR>4CigP*!g6oRI}Xeb$CkF9O}I6^(4!fBKBL=WC%#$O
      zTBb-3Ri5DYIcZpb$Ak8wqRFX?#?w2L(E($3$<qP53jVj+iMKFLqt$n<Tz8pp+d$a@
      zb;Ux$%pvWcH%robGzNLHCzfA4XkgDs0TwXu%+`nCAma$@xWJtP=<S8Th<$P$G=Oxz
      zviAErFZWxF<<QQ3*aZt(vJM`m@mf`ZSr;&dIH!G`ZJYH7FdQ_K<KAIs?F>9N_i}kr
      za-JxbNlBd~I{Aaw*zm;xl;=Ln;KT*rDfQHsX2U<FW6fv8D(9k~p57(9AINWVVk%FC
      zsr4lLbmD)y<G3W1;F)zKLxnR+X7szlj;QknW295k9*#X|_h|;&h;SFq48IrRo8Gh1
      zV;Odce#VQ=lCZjNG*J~k^JA00&g&6uH^_jsWh6hNprprQc_k_34dn_kc4q}U>w>#A
      zOB*bo$I6Ay8Gs#u7UCfqyNraBfOpvVD7xp57YRPu>z+Ev^$Cu@GIbKuEgSZD(jZkJ
      z_5%v5F#`Q%BiJE26Q-~B5BVU_@bg7F))gVs-=+TEEXmdO!|;0}6hmyOTr15+4@@Ja
      z)DNT<Q#Iv8mD!Pf7r#cj>~hl-aE4+yY(m&^;B!{fFOEMubb3<UUsY9;zHz31vy(gR
      zCrv5TGxiS8P8rai#qG?%4flrvJPAMCcdhU@NTN>f;OLj!EI+E{Wh`7-uT$jTK=N4?
      zhj}Ltyhg;Q`W34c)-hI?vyZyKc5=}PuPWhxIGn4=l!sSyfp+)<@OP!ue&}eUdOZ<-
      zcy@VgZ%J2;VOuYi5XRI}U#Gb*<9@eX8IsZ;a3eP%5<GUXCWd@!Mj8s*hamDx_k$E>
      z3ipW1XX;Y3KR7Uw5vCuw4k)EjQA>Q;BUV=b*REQL3&Uwo3_*{3)_S^n(iN&9c0xbP
      zqsV+HsECfFSV!ku3#NPIqD`6If89z^+5kQO(gC1DcH?N*k=f^CiiZjf4BsKv(l%~K
      z+hwFKx<YI{8u-*Nc)MD!*Op*&ts{E9Wm}Xc6Rbib_XmspVAGf*Sxt1@z=&n}>#Zfj
      z3Pu6RQ5zvy?5l_84%hlC1vSV~eGgrdsyk+79Bd<elJm6uZBAb-6BvqB1aG+Ql+IFe
      zVV)|hP-XoFxpp~xtx_zoHqSW`XVj=XTAbK^OnI-XQJB-2z)<TXXyW?)N<461pMwvR
      z3HYqQR*<R5l}Uxd#n>buKR+XWh5og#2b$Ifj0}4bFJ>3t-5nz>0d^*@Py&p46Y@&s
      z3|ln*EQ}DnB45GY-iTo5&-z5%`?9H@7RMK#T}lckt|pxyk3MI@Xn%HKY${nz@bOP*
      z!&u>8veZtzJ{TZpoxQ^zDeRhmH3LX33+UoD9?R2I6>ZJ{Y1K5h_IwMzsS5ac?8u;K
      zqOGx&IJR=9!S8)Vrvh0*Dt}{?BM!ghbpFY9{Qr&)9nM<RfMiy@4VZTb(FDSaj1(it
      zr<}j?ZU35{8QX+*Jy5GNukH?;0}SH|?U~*1qpHhfYoozjq|`M_+BH5Z{l!r&4J&Z5
      zLmB-Q82nsJvl1hosqt0}9J;!1vvu80f9azuoDTDTE(8!Oo*m8A^a$1XZlHlO33&$;
      zlMi5Pt_3N2Rj_D5;DsJ^Sta3L^&NMY#IBwx;k57K#9#i@b+iD{sWb2hl8Nm>D5giD
      zcX0)3l-x~YPFG*YiOX9a>!3)S-{LYsVl0#Q=**-c1a|dGf8^6({8fX|j@m?lIf2>W
      zzlk|Y%lKauiV_z96{L?Q1GqplM>2q!V1{aHWU2|Jz>PebAGDI78Dm%jn=fN&S)6SZ
      zn%|S9ly$rQ(N_xoaL`NZcS|(fR<H&g<qKu@96|jPS4jMBl{WJtsxWl@Ywl0famV`}
      zGqR8RVUBcU`zmWRc(LR;omQP5Uibcn$Yg@_WCI>vUvm*sPduX>5>~@#hg-5rXbf-v
      zrc*mj#h<rL;du>X1OnQx07rbRJ-JO;NP1z3P)i94GxE}-BJRco8sLx!_-)Sc+m7IS
      zDcN3wnmQtMwuaAHLCzt4er#weD*{#LXr!RNsXTM(k>ICx32){%E<uLQ%%x3X(91Tk
      zel7b|p|@}2iChfo;&SAFN%7Yw#AlL(cLk@NPV;fiiVR_R3D^zW*_}q<cy|88C)a$y
      z5*~D>c~XJ?fsA#eV`3$A_EFyt29#~Uo$!KeB&qH~$F!`!X^(02lB_R{lKkJin;&=m
      zcdF(+#JQC!tJsIt=^8=&!{PbWr?ML-ktWX>o@7+UhEL_~T0Ht_pZd{!AOz8_H((#K
      zzaZiwfl#*R^KcN6e05y4F8<OhFlG+S$}a`kO(>5R!YUULmgXmG2D<mdxLW!BL_^H;
      zJSMS*s5d9u4+OhJ^BeoR^mpnjLMNyVOaf^)lkTpNbGGUFKrwo&y*R?5#`chDgr2DH
      zmqlVtl+VdM1_X){*vYH@L&zQe70)=xX$W?aKI>OITRiq{{KQu3s*f`InmK$mqkZ-`
      zUi4yllW4OxMaFMo+ij4^KDdPxlTGUpbm88FU!&QePRgC?<DijU&*O=%YtDVvy>hoE
      z{^*+Q+p{$`Y7$=xJdr2)ffML!i>KT1KFgZ>uZA;+CI0KW^^3g3$_G>%^f+%ed0vL>
      z{-iq|OoF_wyZMi}zA;KlE)~U|^QC5#W|p2?9G4a(ISEcK9c#-ciL(+vi#>{2Am7st
      z;@f7&DwSDk=_c-1oK3O>$Ico0867*ULS1zY4JqZ<&W=rtRJw!G9YdMwIbMDz%w(TQ
      z={j9YZdcednJ6HP@7r+r#S2+n`B!{|JE0u@x4en|o3*$sDU_p3dD1tnBU)r~NUWT2
      zR=W<7k+TM@La#?IT{CE09?YIjNEI34Pz-ngB!Q=@Y!Y-WwDF|KrfYX}!sg{gegDvq
      z6hS^f%E;3?^9<X9HTV_CenaW<jytWIxDAvIf>0D6%3|N8&15Lmu1~3Cg@#k7E99cW
      zqjS+T?0+r#-!$ouBq03-^$my>SfsI*rkNcX@_dUj(HV)ig#!0LQ8s?L!Ru=}lb7_g
      z#TKL&V%&eON-;Hgb5c(J=r<4)_1oy`V99OzV(+gagOhBTAQG^b>IiLOb?5V^P_*?@
      z<qexwi={QWmkEMBwrGEa<~!2UnXI8wGi+>?nrG`KNW4qunfdz;*K@`j<yZ5%=>*7X
      zKUkW6%Zk1-A+a>s-kGS-cCsLhF~dz09g(<E;o=+mC!N9>l=8DmvQ|r3Q>ZcY5(ho0
      z7z}je6Di~4-pO)Q_Xxa`Nx|Rp^aRXF5^zDv)aSFgJl7(2d9c8RR53<cnIo;GEM2WH
      z1#k~8BnE>^!h}Q&goLGp?@0+u!r&rOaJY94ZP9-K9GtA|Y`p#gL}BntjF5p4TuNA6
      z>YmU)0e2J}KV1Tt{;u%I$p-0R?rIGvSUFi(vuik*+gj^en_GFg^jZHs?Eo}Xbd)O;
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/base/jquery-ui.css b/bower_components/jquery-ui/themes/base/jquery-ui.css
      deleted file mode 100644
      index a22ecb05ca..0000000000
      --- a/bower_components/jquery-ui/themes/base/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Arial,Helvetica,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Arial,Helvetica,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #c5c5c5;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #ffffff;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #dddddd;
      -	background: #e9e9e9;
      -	color: #333333;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #333333;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #c5c5c5;
      -	background: #f6f6f6;
      -	font-weight: normal;
      -	color: #454545;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #454545;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #cccccc;
      -	background: #ededed;
      -	font-weight: normal;
      -	color: #2b2b2b;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #2b2b2b;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #003eff;
      -	background: #007fff;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #003eff;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #dad55e;
      -	background: #fffa90;
      -	color: #777620;
      -}
      -.ui-state-checked {
      -	border: 1px solid #dad55e;
      -	background: #fffa90;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #777620;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #f1a899;
      -	background: #fddfdf;
      -	color: #5f3f3f;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #5f3f3f;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #5f3f3f;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_444444_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_444444_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_555555_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_777620_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_777777_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 3px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 0px 0px 5px #666666;
      -	box-shadow: 0px 0px 5px #666666;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/jquery-ui.min.css b/bower_components/jquery-ui/themes/base/jquery-ui.min.css
      deleted file mode 100644
      index 121f222ff1..0000000000
      --- a/bower_components/jquery-ui/themes/base/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/base/menu.css b/bower_components/jquery-ui/themes/base/menu.css
      deleted file mode 100644
      index 60373e88c7..0000000000
      --- a/bower_components/jquery-ui/themes/base/menu.css
      +++ /dev/null
      @@ -1,64 +0,0 @@
      -/*!
      - * jQuery UI Menu 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/menu/#theming
      - */
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/progressbar.css b/bower_components/jquery-ui/themes/base/progressbar.css
      deleted file mode 100644
      index a0ac4a3c2c..0000000000
      --- a/bower_components/jquery-ui/themes/base/progressbar.css
      +++ /dev/null
      @@ -1,28 +0,0 @@
      -/*!
      - * jQuery UI Progressbar 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/progressbar/#theming
      - */
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/resizable.css b/bower_components/jquery-ui/themes/base/resizable.css
      deleted file mode 100644
      index 2ee40cf3a9..0000000000
      --- a/bower_components/jquery-ui/themes/base/resizable.css
      +++ /dev/null
      @@ -1,78 +0,0 @@
      -/*!
      - * jQuery UI Resizable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/selectable.css b/bower_components/jquery-ui/themes/base/selectable.css
      deleted file mode 100644
      index 5d615b4516..0000000000
      --- a/bower_components/jquery-ui/themes/base/selectable.css
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -/*!
      - * jQuery UI Selectable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/selectmenu.css b/bower_components/jquery-ui/themes/base/selectmenu.css
      deleted file mode 100644
      index bf813dc315..0000000000
      --- a/bower_components/jquery-ui/themes/base/selectmenu.css
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -/*!
      - * jQuery UI Selectmenu 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/selectmenu/#theming
      - */
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/slider.css b/bower_components/jquery-ui/themes/base/slider.css
      deleted file mode 100644
      index e1f5030eea..0000000000
      --- a/bower_components/jquery-ui/themes/base/slider.css
      +++ /dev/null
      @@ -1,75 +0,0 @@
      -/*!
      - * jQuery UI Slider 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/slider/#theming
      - */
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/sortable.css b/bower_components/jquery-ui/themes/base/sortable.css
      deleted file mode 100644
      index a1da55379b..0000000000
      --- a/bower_components/jquery-ui/themes/base/sortable.css
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -/*!
      - * jQuery UI Sortable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/spinner.css b/bower_components/jquery-ui/themes/base/spinner.css
      deleted file mode 100644
      index 14db10bfd1..0000000000
      --- a/bower_components/jquery-ui/themes/base/spinner.css
      +++ /dev/null
      @@ -1,52 +0,0 @@
      -/*!
      - * jQuery UI Spinner 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/spinner/#theming
      - */
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/tabs.css b/bower_components/jquery-ui/themes/base/tabs.css
      deleted file mode 100644
      index f81c11a958..0000000000
      --- a/bower_components/jquery-ui/themes/base/tabs.css
      +++ /dev/null
      @@ -1,51 +0,0 @@
      -/*!
      - * jQuery UI Tabs 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/tabs/#theming
      - */
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/theme.css b/bower_components/jquery-ui/themes/base/theme.css
      deleted file mode 100644
      index 23374a6f87..0000000000
      --- a/bower_components/jquery-ui/themes/base/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Arial,Helvetica,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Arial,Helvetica,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #c5c5c5;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #ffffff;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #dddddd;
      -	background: #e9e9e9;
      -	color: #333333;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #333333;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #c5c5c5;
      -	background: #f6f6f6;
      -	font-weight: normal;
      -	color: #454545;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #454545;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #cccccc;
      -	background: #ededed;
      -	font-weight: normal;
      -	color: #2b2b2b;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #2b2b2b;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #003eff;
      -	background: #007fff;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #003eff;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #dad55e;
      -	background: #fffa90;
      -	color: #777620;
      -}
      -.ui-state-checked {
      -	border: 1px solid #dad55e;
      -	background: #fffa90;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #777620;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #f1a899;
      -	background: #fddfdf;
      -	color: #5f3f3f;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #5f3f3f;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #5f3f3f;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_444444_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_444444_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_555555_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_777620_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_777777_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 3px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 0px 0px 5px #666666;
      -	box-shadow: 0px 0px 5px #666666;
      -}
      diff --git a/bower_components/jquery-ui/themes/base/tooltip.css b/bower_components/jquery-ui/themes/base/tooltip.css
      deleted file mode 100644
      index fba6402a1d..0000000000
      --- a/bower_components/jquery-ui/themes/base/tooltip.css
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -/*!
      - * jQuery UI Tooltip 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/tooltip/#theming
      - */
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_diagonals-thick_8_333333_40x40.png
      deleted file mode 100644
      index c9e5cfa41fe34f3cf06531e551615a333ce455d8..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 383
      zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
      z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp^nu
      ziKnkC`vXosUL~%I2QzqqLhYU|jv*e$-(EH3YB1nweV86o#q?e&?qu~huUMApL0Otg
      zPvm7jJ^LV-aWc9u*i<#!<Cf{k-*Yy`Fl(-Bl2MmD?fJTFV$639p72c@?`&8&zq*0t
      zdLz$uhpyEM$32e~P1<<pN%HR<Tcl6>nthqamAsQtg>UA@n3Asf-F}@w_|r^$?x(|k
      zI~j}O=P#UWx-|>vB-Ikvh?11Vl2ohYqEsNoU}RuurfXoSYiJT;Xl!L{Vr6KcYhYq!
      lV6cEu0T?hy8glbfGSez?Yq%IQ<1bJHgQu&X%Q~loCIBRQewzRQ
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_glass_40_111111_1x400.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_glass_40_111111_1x400.png
      deleted file mode 100644
      index 4fbef58243126bc5e332fff1cf8d137d49a7f93b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 323
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)@OiT^vI!PA40DPfSXXa9!N7tHUv1f@6kK^9y#hY0N%4
      zpM2JQpBW)<u<@3$#7BdTHVH|4&mW08e`L{tBQocYyg6`Wg24kmIag;UMutr<dAPIl
      zbwHj_Epd$~Nl7e8wMs5Z1yT$~28L$329~;pCLxB#R>me)h6cI@CRPRp3m6rEo<q`*
      co1c=IR*74~#h4j?ff^V*UHx3vIVCg!0I*J92LJ#7
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_glass_55_1c1c1c_1x400.png
      deleted file mode 100644
      index 71345c04f759a63f226acafea52492453fbc7b46..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 323
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)@OiT^vI!PA7lZoSu{*;kvkESBIlpTjxt_VQ)R**V=4z
      zy?KtM`Q&K&yy2gDL*8)XQiF}l4K~`QCY?=5I+>XC@63@1^9Ou#uFg!13|}wvzM20Z
      z;uX+X)e_f;l9a@fRIB8oR3OD*WMF8fYhbBsXcA&*Y-Ma>WoV#lU}9xpuz*nk=s6?}
      cx%nxXX_dG&T#T9V7pQ^3)78&qol`;+0B7f3-~a#s
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_100_f9f9f9_1x100.png
      deleted file mode 100644
      index e15d49f44f73e22b913165cbf184c665cbdbced2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 315
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)?DCT^vIsE+0L&khj4=#Npud=YpcKb2S5IB)#(Bu-?GB
      zYQJh?kDB>`k82OvDE8m!3GaH-(^_}J?fendP(P)Mx2~uk;^+M&^y~TUnq@%aR7+eV
      zN>UO_QmvAUQh^kMk%6I^u7Rblp-G6Lv6Zojm7#&Ifr*uY!2(7Fpr?>D<mRVjrd8tB
      Ua4}}aU!VpCPgg&ebxsLQ0E;ePH2?qr
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-hard_40_aaaaaa_1x100.png
      deleted file mode 100644
      index ffd3a3a8ae07748e6cf95a0a72dab4015a52c27b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 316
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)<>WT^vIsE+^kuf9l8qgMt@wm+O_6{ZF6qZ>#Z}n!{i2
      z&wM#w__Dq0vU)C`|8r*kvo`#jo&Ib8q?i9Cm;Har{K}6_jg5_A!y&O4Ki-p5f##`}
      zxJHzuB$lLFB^RXvDF!10Lo;0iOI<^g5JO`tV-qVw16>0XD+7ZCj0!+sA!*3XPsvQH
      W#I50C%#6Q44Gf;HelF{r5}E+&ePfUS
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_highlight-soft_50_aaaaaa_1x100.png
      deleted file mode 100644
      index 7314b4aa93ff7f60af24f4dd5941af503fb523f2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 327
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)_lNT^vIsF7NGIDA?d2aHLF0faBML*9%y0HCDwb2~>FP
      z$bT-z%=gz=P*CvVUWL+y51Z0sHWWT+YhJVC)vP#6_oBlKlNBCobDKqdy!ZNBJG=CJ
      zmGHvmsds=ztCqM%l%yn<q*^5xr2;7iBLhP-T?0#9Lz56gV=H45D?<Za0~0F)g9VHV
      gKo25m$jwj5OsmAL;bP2;zd#KPp00i_>zopr0BH4NWdHyG
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_45_cd0a0a_1x100.png
      deleted file mode 100644
      index 58671a918c6c7ba58e74cfc84b5b0a3ab74c0f6d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 382
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7bw)^>EaloaX#6idRjLSbT)!O;uNK}B#Y$-YkPi62p^W5
      zCa$9|aV}mwQ8+O<>Cefco~IJRi>+=8ZByl${xrlT)Mchb?#-5)Ei)zF-f+3$GDG5O
      z#Pm&ity+mmA_=Ccrm0DPj#kb2Y9XwAWW#MeyEArYe0U!5u=21rAKKnLoryv6n6$tA
      z?~|TD*Ql1bMwFx^mZVxG7o`Fz1|tJQGhG8qT|<))Lt`sr6DvalT>}#<1A_&O3czqd
      e(vX{<l9^VCTf@be8GnHq7(8A5T-G@yGywn}rF$v>
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png b/bower_components/jquery-ui/themes/black-tie/images/ui-bg_inset-hard_55_ffeb80_1x100.png
      deleted file mode 100644
      index 05d8d313dd4ad173f07aa275c977432ac0bbc529..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 367
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7bsNh>EaloasKW3jl72pBwQYTpRXIZ!7(j?YgWk3L$+I2
      z-dWP`!YL$MoWeU<@Xm(D;0KH^oF=}SJg?+vV78_vCqr4?5x;Ak9C}<kGQ@6Nm1Xhy
      zr?%nP-Bd>Y|9KOm>`xnW=X_~ycz>>GQN!jqroJz;@BhgUyZ%#r#<fiSk3j2HOI#yL
      zQW8s2t&)pUffR$0fuWhMfu*jYNr<7bm9dGHp@FV}iIsuD0!9U3Kp<(z%}>cptHiD0
      TV$6)cKn)C@u6{1-oD!M<pObmH
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-icons_222222_256x240.png b/bower_components/jquery-ui/themes/black-tie/images/ui-icons_222222_256x240.png
      deleted file mode 100644
      index f184400db5da441a76667625c74567d220208e3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      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
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-icons_4ca300_256x240.png b/bower_components/jquery-ui/themes/black-tie/images/ui-icons_4ca300_256x240.png
      deleted file mode 100644
      index b9665b6293d66aba1e1c64e7c3adcd0c81efc659..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FGQzT%K!iX
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-icons_bbbbbb_256x240.png b/bower_components/jquery-ui/themes/black-tie/images/ui-icons_bbbbbb_256x240.png
      deleted file mode 100644
      index ae2987873cc6b1597a354238e6d98dd195f4953e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7092
      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
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-icons_ededed_256x240.png b/bower_components/jquery-ui/themes/black-tie/images/ui-icons_ededed_256x240.png
      deleted file mode 100644
      index 5ea9b348304464d02eb44ccdb7fab895c5a88a0a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7011
      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
      b4sd<AjlKWNKKMU3UjPji9ayE3_3QrwIDaS@
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-icons_ffcf29_256x240.png b/bower_components/jquery-ui/themes/black-tie/images/ui-icons_ffcf29_256x240.png
      deleted file mode 100644
      index 9fb8bd5c0df2dd8f3925d77465ee4844d0e436d9..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      LH`lAsK_~ndWwgGV
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/black-tie/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/black-tie/jquery-ui.css b/bower_components/jquery-ui/themes/black-tie/jquery-ui.css
      deleted file mode 100644
      index 98863d7ae5..0000000000
      --- a/bower_components/jquery-ui/themes/black-tie/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=333333&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=8&borderColorHeader=a3a3a3&fcHeader=eeeeee&iconColorHeader=bbbbbb&bgColorContent=f9f9f9&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=222222&iconColorContent=222222&bgColorDefault=111111&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=777777&fcDefault=e3e3e3&iconColorDefault=ededed&bgColorHover=1c1c1c&bgTextureHover=glass&bgImgOpacityHover=55&borderColorHover=000000&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=cccccc&fcActive=222222&iconColorActive=222222&bgColorHighlight=ffeb80&bgTextureHighlight=inset_hard&bgImgOpacityHighlight=55&borderColorHighlight=ffde2e&fcHighlight=363636&iconColorHighlight=4ca300&bgColorError=cd0a0a&bgTextureError=inset_hard&bgImgOpacityError=45&borderColorError=9e0505&fcError=ffffff&iconColorError=ffcf29&bgColorOverlay=aaaaaa&bgTextureOverlay=highlight_hard&bgImgOpacityOverlay=40&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=highlight_soft&bgImgOpacityShadow=50&opacityShadow=20&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #777777;
      -}
      -.ui-widget-content {
      -	border: 1px solid #cccccc;
      -	background: #f9f9f9 url("images/ui-bg_highlight-hard_100_f9f9f9_1x100.png") 50% top repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #a3a3a3;
      -	background: #333333 url("images/ui-bg_diagonals-thick_8_333333_40x40.png") 50% 50% repeat;
      -	color: #eeeeee;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #eeeeee;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #777777;
      -	background: #111111 url("images/ui-bg_glass_40_111111_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #e3e3e3;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #e3e3e3;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #000000;
      -	background: #1c1c1c url("images/ui-bg_glass_55_1c1c1c_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #cccccc;
      -	background: #ffffff;
      -	font-weight: normal;
      -	color: #222222;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #cccccc;
      -	background-color: #222222;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #222222;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffde2e;
      -	background: #ffeb80 url("images/ui-bg_inset-hard_55_ffeb80_1x100.png") 50% bottom repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffde2e;
      -	background: #ffeb80;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #9e0505;
      -	background: #cd0a0a url("images/ui-bg_inset-hard_45_cd0a0a_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_bbbbbb_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4ca300_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffcf29_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ededed_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/black-tie/jquery-ui.min.css b/bower_components/jquery-ui/themes/black-tie/jquery-ui.min.css
      deleted file mode 100644
      index 193627b4d7..0000000000
      --- a/bower_components/jquery-ui/themes/black-tie/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=333333&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=8&borderColorHeader=a3a3a3&fcHeader=eeeeee&iconColorHeader=bbbbbb&bgColorContent=f9f9f9&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=222222&iconColorContent=222222&bgColorDefault=111111&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=777777&fcDefault=e3e3e3&iconColorDefault=ededed&bgColorHover=1c1c1c&bgTextureHover=glass&bgImgOpacityHover=55&borderColorHover=000000&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=cccccc&fcActive=222222&iconColorActive=222222&bgColorHighlight=ffeb80&bgTextureHighlight=inset_hard&bgImgOpacityHighlight=55&borderColorHighlight=ffde2e&fcHighlight=363636&iconColorHighlight=4ca300&bgColorError=cd0a0a&bgTextureError=inset_hard&bgImgOpacityError=45&borderColorError=9e0505&fcError=ffffff&iconColorError=ffcf29&bgColorOverlay=aaaaaa&bgTextureOverlay=highlight_hard&bgImgOpacityOverlay=40&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=highlight_soft&bgImgOpacityShadow=50&opacityShadow=20&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #777}.ui-widget-content{border:1px solid #ccc;background:#f9f9f9 url("images/ui-bg_highlight-hard_100_f9f9f9_1x100.png") 50% top repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #a3a3a3;background:#333 url("images/ui-bg_diagonals-thick_8_333333_40x40.png") 50% 50% repeat;color:#eee;font-weight:bold}.ui-widget-header a{color:#eee}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #777;background:#111 url("images/ui-bg_glass_40_111111_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#e3e3e3}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#e3e3e3;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #000;background:#1c1c1c url("images/ui-bg_glass_55_1c1c1c_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #ccc;background:#fff;font-weight:normal;color:#222}.ui-icon-background,.ui-state-active .ui-icon-background{border:#ccc;background-color:#222}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#222;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #ffde2e;background:#ffeb80 url("images/ui-bg_inset-hard_55_ffeb80_1x100.png") 50% bottom repeat-x;color:#363636}.ui-state-checked{border:1px solid #ffde2e;background:#ffeb80}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #9e0505;background:#cd0a0a url("images/ui-bg_inset-hard_45_cd0a0a_1x100.png") 50% bottom repeat-x;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_bbbbbb_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_4ca300_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffcf29_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_ededed_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/black-tie/theme.css b/bower_components/jquery-ui/themes/black-tie/theme.css
      deleted file mode 100644
      index 4953b23747..0000000000
      --- a/bower_components/jquery-ui/themes/black-tie/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=333333&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=8&borderColorHeader=a3a3a3&fcHeader=eeeeee&iconColorHeader=bbbbbb&bgColorContent=f9f9f9&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=cccccc&fcContent=222222&iconColorContent=222222&bgColorDefault=111111&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=777777&fcDefault=e3e3e3&iconColorDefault=ededed&bgColorHover=1c1c1c&bgTextureHover=glass&bgImgOpacityHover=55&borderColorHover=000000&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=cccccc&fcActive=222222&iconColorActive=222222&bgColorHighlight=ffeb80&bgTextureHighlight=inset_hard&bgImgOpacityHighlight=55&borderColorHighlight=ffde2e&fcHighlight=363636&iconColorHighlight=4ca300&bgColorError=cd0a0a&bgTextureError=inset_hard&bgImgOpacityError=45&borderColorError=9e0505&fcError=ffffff&iconColorError=ffcf29&bgColorOverlay=aaaaaa&bgTextureOverlay=highlight_hard&bgImgOpacityOverlay=40&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=highlight_soft&bgImgOpacityShadow=50&opacityShadow=20&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #777777;
      -}
      -.ui-widget-content {
      -	border: 1px solid #cccccc;
      -	background: #f9f9f9 url("images/ui-bg_highlight-hard_100_f9f9f9_1x100.png") 50% top repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #a3a3a3;
      -	background: #333333 url("images/ui-bg_diagonals-thick_8_333333_40x40.png") 50% 50% repeat;
      -	color: #eeeeee;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #eeeeee;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #777777;
      -	background: #111111 url("images/ui-bg_glass_40_111111_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #e3e3e3;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #e3e3e3;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #000000;
      -	background: #1c1c1c url("images/ui-bg_glass_55_1c1c1c_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #cccccc;
      -	background: #ffffff;
      -	font-weight: normal;
      -	color: #222222;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #cccccc;
      -	background-color: #222222;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #222222;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffde2e;
      -	background: #ffeb80 url("images/ui-bg_inset-hard_55_ffeb80_1x100.png") 50% bottom repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffde2e;
      -	background: #ffeb80;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #9e0505;
      -	background: #cd0a0a url("images/ui-bg_inset-hard_45_cd0a0a_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_bbbbbb_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4ca300_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffcf29_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ededed_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa url("images/ui-bg_highlight-hard_40_aaaaaa_1x100.png") 50% top repeat-x;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png b/bower_components/jquery-ui/themes/blitzer/images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png
      deleted file mode 100644
      index 53b267c990f530bca5f348fe534c2366dca4954f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 471
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjXe0g#^Q0TU&i(^Q}y|*_u@-`a?v?e+%O4Dfbn#^j%@OVSJ`2sf+
      zkIbMs(%#$NEbb`z|1<RZoO%1c^?v_-qc2zE$#1Lc#j;ao+MnL{=GOZEU;OG;xEf5I
      z#khGT=MCmiqquMm#fk-9YHyokSAEesaBXFgd86bNHG|G5#?MF!O`HA(DBs`@t&(rj
      z4SE{Z{5I%n!s`&$8IHM3lUIlu^hdD-uaq>HJ*&YsK(+SrqoCi*T$h_QdS2n0;jY`X
      z@(RxkU*7|AD+J%POC79RQG0n&FjV{0KMd!Xo-aJ|hW7{1o2n(Q5hW>!C8<`)MX5lF
      z!N|bSOxM6t*U%)y(Adh@#0tnZ0FnkjjZ=A0H00)|WTsW(*3gl6cLPuZgQu&X%Q~lo
      FCIC5st=j+q
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-bg_dots-small_65_a6a6a6_2x2.png b/bower_components/jquery-ui/themes/blitzer/images/ui-bg_dots-small_65_a6a6a6_2x2.png
      deleted file mode 100644
      index c4642193af767b143b95451cf6d639aee6bf3313..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 266
      zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BpBFz`*s5<mUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6a&zUu3o6Ss;(S
      z#M9T6{Q)N*uM+3OmnXLag@im^978y+C&z5-X>9ClbPSVa;BIA{ax>>|9#B@b#5JNM
      zC9x#cD!C{XNHG{07@FxCSn3*@gcurI8Jk!E*#<z;;HPma4~mA|{FKbJO57Sc^6qW`
      PYGCkm^>bP0l+XkKttmyv
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-bg_glass_55_fbf8ee_1x400.png b/bower_components/jquery-ui/themes/blitzer/images/ui-bg_glass_55_fbf8ee_1x400.png
      deleted file mode 100644
      index 0f12fd64361385f06af006d4c11f6799aeb609c2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 398
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8=fjsLw*!SHdAc};cpQIwek1202a$${|K&7YwoF`L*1o9qXerwf
      zRh`SXb~R^ic2E<PIpC`kqu{j8Q%}5r>*Ax(_`ibl7v|(KF?21`IJJG@``g>rb$Xgt
      zEq6NA7Bge>V;!BsXG#&@M4D8M!xK~arW|p%F!kGzB67s+&fi&yVsZPD3jQ7`cRF?L
      z$)PE%?v5T3|6QX3MV_|TFceg2=s(hWcMIq`)e_f;l9a@fRIB8oR3OD*WMF8fYhbBs
      wXcA&*Y-Ma>1!NllNrRupsXQnea`RI%(<*Um=*YXf0jPn&)78&qol`;+0GY6e*Z=?k
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_eeeeee_1x100.png b/bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_eeeeee_1x100.png
      deleted file mode 100644
      index b02e9019924e3f3c3968dccf5abd4a42f0537556..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 316
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4is|nba4!kxSafB<=G<#3<_S@9_~NOW3Mvv-)@7y=1ITS
      zpZF5r`EozQ<$A_8|3g0ir_T6iZM?_+^oM&h9^T!}SgOt}%*@QNyHupUv2s4h3e^(V
      zh?11Vl2ohYqEsNoU}RuurfXoSYiJT;Xl!L{Vg+Oy07-+N#;H6g8glbfGSez?Yv{<k
      Ry8)<y!PC{xWt~$(697;WWF7zj
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_f6f6f6_1x100.png b/bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-hard_100_f6f6f6_1x100.png
      deleted file mode 100644
      index 5147687ace6e74681a6ca58dd55c378bd7832ed0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 316
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4is|nba4!kxSafB@{uD43<_RYAC^~byDvUd;+espw1i*x
      zkACoOdH6h}ZGIAuy_mtD3rRof=5!`%9xm5x%fHWdWiF2o4-W(1GLfr|+4XaP=Bbvr
      zMwFx^mZVxG7o`Fz1|tJQGhG8qT|<))Lt`sr6DuIw07x4AG*0C~(U6;;l9^VCTSG_Q
      R-3>qu44$rjF6*2UngIMFVZQ(X
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-soft_15_cc0000_1x100.png b/bower_components/jquery-ui/themes/blitzer/images/ui-bg_highlight-soft_15_cc0000_1x100.png
      deleted file mode 100644
      index 2b6ab6b036d2d18c1db38f97a10299b7a925903c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 385
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!wJr;B5V#`&ictht&U7+lhq3+m)FZ$H8N&1B-7%Oy8W
      zCzRZJ%GD(xP@~!OK(Hl*zwPIN7nQbCmtUHs@|V|+hbL_PiVR+tMK3#DUc36{-j$Rr
      zpE1M7TPf1q=w{aSEo!S(C!bZD<WUvVwKQUzh5hNUZSeu+e8n@aT81n%%9oOQTGKL}
      zuTTH%goK6b?Yqr^4pJ>~jVMV;EJ?LWE=mPb3`PcqX1WHJx`rkphQ?OLCRRYU0gyEK
      iX`IS~q9HdwB{QuOw}y_qyBmNS7(8A5T-G@yGywqUynko_
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-icons_004276_256x240.png b/bower_components/jquery-ui/themes/blitzer/images/ui-icons_004276_256x240.png
      deleted file mode 100644
      index 6646b8e8fbef474f862ea35bb46f43ec7d1cbb50..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M);HIy&_T!l7l=JVUjP6A
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-icons_cc0000_256x240.png b/bower_components/jquery-ui/themes/blitzer/images/ui-icons_cc0000_256x240.png
      deleted file mode 100644
      index 5bd316c59d3138bf7580745b799ac6cebd61af37..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M>znIU=%C~O3r$x_1ONa4
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/blitzer/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/blitzer/jquery-ui.css b/bower_components/jquery-ui/themes/blitzer/jquery-ui.css
      deleted file mode 100644
      index 09ced4bb47..0000000000
      --- a/bower_components/jquery-ui/themes/blitzer/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cc0000&bgTextureHeader=highlight_soft&bgImgOpacityHeader=15&borderColorHeader=e3a1a1&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=eeeeee&fcContent=333333&iconColorContent=cc0000&bgColorDefault=eeeeee&bgTextureDefault=highlight_hard&bgImgOpacityDefault=100&borderColorDefault=d8dcdf&fcDefault=004276&iconColorDefault=cc0000&bgColorHover=f6f6f6&bgTextureHover=highlight_hard&bgImgOpacityHover=100&borderColorHover=cdd5da&fcHover=111111&iconColorHover=cc0000&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=eeeeee&fcActive=cc0000&iconColorActive=cc0000&bgColorHighlight=fbf8ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcd3a1&fcHighlight=444444&iconColorHighlight=004276&bgColorError=f3d8d8&bgTextureError=diagonals_thick&bgImgOpacityError=75&borderColorError=cc0000&fcError=2e2e2e&iconColorError=cc0000&bgColorOverlay=a6a6a6&bgTextureOverlay=dots_small&bgImgOpacityOverlay=65&opacityOverlay=40&bgColorShadow=333333&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=10&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #d8dcdf;
      -}
      -.ui-widget-content {
      -	border: 1px solid #eeeeee;
      -	background: #ffffff;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #e3a1a1;
      -	background: #cc0000 url("images/ui-bg_highlight-soft_15_cc0000_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #d8dcdf;
      -	background: #eeeeee url("images/ui-bg_highlight-hard_100_eeeeee_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #004276;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #004276;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #cdd5da;
      -	background: #f6f6f6 url("images/ui-bg_highlight-hard_100_f6f6f6_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #111111;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #111111;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #eeeeee;
      -	background: #ffffff;
      -	font-weight: bold;
      -	color: #cc0000;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #eeeeee;
      -	background-color: #cc0000;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #cc0000;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fcd3a1;
      -	background: #fbf8ee url("images/ui-bg_glass_55_fbf8ee_1x400.png") 50% 50% repeat-x;
      -	color: #444444;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fcd3a1;
      -	background: #fbf8ee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #444444;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cc0000;
      -	background: #f3d8d8 url("images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png") 50% 50% repeat;
      -	color: #2e2e2e;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #2e2e2e;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #2e2e2e;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_004276_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat;
      -	opacity: .4;
      -	filter: Alpha(Opacity=40); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #333333;
      -	box-shadow: -8px -8px 8px #333333;
      -}
      diff --git a/bower_components/jquery-ui/themes/blitzer/jquery-ui.min.css b/bower_components/jquery-ui/themes/blitzer/jquery-ui.min.css
      deleted file mode 100644
      index 1f52c67849..0000000000
      --- a/bower_components/jquery-ui/themes/blitzer/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cc0000&bgTextureHeader=highlight_soft&bgImgOpacityHeader=15&borderColorHeader=e3a1a1&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=eeeeee&fcContent=333333&iconColorContent=cc0000&bgColorDefault=eeeeee&bgTextureDefault=highlight_hard&bgImgOpacityDefault=100&borderColorDefault=d8dcdf&fcDefault=004276&iconColorDefault=cc0000&bgColorHover=f6f6f6&bgTextureHover=highlight_hard&bgImgOpacityHover=100&borderColorHover=cdd5da&fcHover=111111&iconColorHover=cc0000&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=eeeeee&fcActive=cc0000&iconColorActive=cc0000&bgColorHighlight=fbf8ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcd3a1&fcHighlight=444444&iconColorHighlight=004276&bgColorError=f3d8d8&bgTextureError=diagonals_thick&bgImgOpacityError=75&borderColorError=cc0000&fcError=2e2e2e&iconColorError=cc0000&bgColorOverlay=a6a6a6&bgTextureOverlay=dots_small&bgImgOpacityOverlay=65&opacityOverlay=40&bgColorShadow=333333&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=10&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d8dcdf}.ui-widget-content{border:1px solid #eee;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e3a1a1;background:#c00 url("images/ui-bg_highlight-soft_15_cc0000_1x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d8dcdf;background:#eee url("images/ui-bg_highlight-hard_100_eeeeee_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#004276}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#004276;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #cdd5da;background:#f6f6f6 url("images/ui-bg_highlight-hard_100_f6f6f6_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#111}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#111;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #eee;background:#fff;font-weight:bold;color:#c00}.ui-icon-background,.ui-state-active .ui-icon-background{border:#eee;background-color:#c00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#c00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcd3a1;background:#fbf8ee url("images/ui-bg_glass_55_fbf8ee_1x400.png") 50% 50% repeat-x;color:#444}.ui-state-checked{border:1px solid #fcd3a1;background:#fbf8ee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#444}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #c00;background:#f3d8d8 url("images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png") 50% 50% repeat;color:#2e2e2e}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#2e2e2e}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#2e2e2e}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_004276_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat;opacity:.4;filter:Alpha(Opacity=40)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #333;box-shadow:-8px -8px 8px #333}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/blitzer/theme.css b/bower_components/jquery-ui/themes/blitzer/theme.css
      deleted file mode 100644
      index 29b2edf957..0000000000
      --- a/bower_components/jquery-ui/themes/blitzer/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cc0000&bgTextureHeader=highlight_soft&bgImgOpacityHeader=15&borderColorHeader=e3a1a1&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=eeeeee&fcContent=333333&iconColorContent=cc0000&bgColorDefault=eeeeee&bgTextureDefault=highlight_hard&bgImgOpacityDefault=100&borderColorDefault=d8dcdf&fcDefault=004276&iconColorDefault=cc0000&bgColorHover=f6f6f6&bgTextureHover=highlight_hard&bgImgOpacityHover=100&borderColorHover=cdd5da&fcHover=111111&iconColorHover=cc0000&bgColorActive=ffffff&bgTextureActive=flat&bgImgOpacityActive=65&borderColorActive=eeeeee&fcActive=cc0000&iconColorActive=cc0000&bgColorHighlight=fbf8ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcd3a1&fcHighlight=444444&iconColorHighlight=004276&bgColorError=f3d8d8&bgTextureError=diagonals_thick&bgImgOpacityError=75&borderColorError=cc0000&fcError=2e2e2e&iconColorError=cc0000&bgColorOverlay=a6a6a6&bgTextureOverlay=dots_small&bgImgOpacityOverlay=65&opacityOverlay=40&bgColorShadow=333333&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=10&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #d8dcdf;
      -}
      -.ui-widget-content {
      -	border: 1px solid #eeeeee;
      -	background: #ffffff;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #e3a1a1;
      -	background: #cc0000 url("images/ui-bg_highlight-soft_15_cc0000_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #d8dcdf;
      -	background: #eeeeee url("images/ui-bg_highlight-hard_100_eeeeee_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #004276;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #004276;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #cdd5da;
      -	background: #f6f6f6 url("images/ui-bg_highlight-hard_100_f6f6f6_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #111111;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #111111;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #eeeeee;
      -	background: #ffffff;
      -	font-weight: bold;
      -	color: #cc0000;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #eeeeee;
      -	background-color: #cc0000;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #cc0000;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fcd3a1;
      -	background: #fbf8ee url("images/ui-bg_glass_55_fbf8ee_1x400.png") 50% 50% repeat-x;
      -	color: #444444;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fcd3a1;
      -	background: #fbf8ee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #444444;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cc0000;
      -	background: #f3d8d8 url("images/ui-bg_diagonals-thick_75_f3d8d8_40x40.png") 50% 50% repeat;
      -	color: #2e2e2e;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #2e2e2e;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #2e2e2e;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_004276_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_cc0000_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #a6a6a6 url("images/ui-bg_dots-small_65_a6a6a6_2x2.png") 50% 50% repeat;
      -	opacity: .4;
      -	filter: Alpha(Opacity=40); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #333333;
      -	box-shadow: -8px -8px 8px #333333;
      -}
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_diagonals-thick_90_eeeeee_40x40.png
      deleted file mode 100644
      index 2f3c69b520998462513ce68fadca920e0c88a595..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 380
      zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
      z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp^nu
      ziKnkC`vXosUM0?lFHdd<3blB;IEHu}e|y!C>wp4J>%(-l^Uo}++vHAfv?vqYsI+uK
      z{fi0a?fngtrmu6hU7O))xAo-jIUDaVXs&CPQI|aJxiW0hY`NBlQHIl^&At@#Pk5j<
      z;USwxq3jcjlM#MK({9(~$WQlA-g&m|UT~t$_J$*h#?!j}J{Dip1i|~y76sSc&@``j
      zvsgwV`cMeaJ*p+H5hW>!C8<`)MX5lF!N|bSOxM6t*U%)y(Adh@#0tnZ0FnkjjZ=A0
      dH00)|WTsW(*3gl6cLPuZgQu&X%Q~loCIC~Ge=7h0
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_100_e4f1fb_1x400.png
      deleted file mode 100644
      index 0cef1efede6cc410bd4614d75e9916387d6324d8..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 408
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8=fjsLw*!Udc)B=-cpQIwel6Fb1c|nX&nqvgbOdhLWw32W%EcrD
      zy)|4_O7j|L=yY3mh)zEGAkkuSeNFS<1K%1CCJXT9@4Cfn9@n0g{+)@TVUb4Hr`!pt
      z$4q$FCBEBco7l*E>=5Jjf>ybtABRkXS$3T5j{JS#Z$#PJ=I2{%ZZ9o3D#F-vMY!5&
      z-wOS0LRCF4>y!En5?dA~wAfkI8?FT!=6uhyS^x3Uq<u|5cdC}SMwFx^mZVxG7o`Fz
      z1|tJQGhG8qT|<))Lt`sr6DuIw07x4AG*0C~(U6;;l9^VCTSG_Q-3>qu44$rjF6*2U
      FngC4rk?;Tj
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_50_3baae3_1x400.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_50_3baae3_1x400.png
      deleted file mode 100644
      index c2f2bbce8f56c988bf3adb48f4902f7a0b928aae..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 394
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8=fjsLw*!UxJY5_^JdP)O%-U7`{j{1I8wj)oW=)Y=>b5el>)DmF
      zsqgRq_ex26lNNI}<KU5?lQ)h8oIg_3p2?dmFWfDAxwP%3&l(+{T|KuIukfi|D|yDz
      zw%8}<rO(5j;}@Pph#46gu1QJSn!M|r#q5PU{%<()`n!)$V^2@dLZ6<KJhyminh#%I
      zd_}|5t2c<*osq%lkzz<l%LI0y%T!BTBT7;dOH!?pi&B9UgOP!unXZAQuAxbYp|O>*
      pi4~A-03;258mIE0Xvob^$xN%nt)V0D?gpR+22WQ%mvv4FO#q!WiXH#}
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_glass_80_d7ebf9_1x400.png
      deleted file mode 100644
      index 1b1bd3b3ab96309550befef0abd0d13b37653469..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 404
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8=fjsLw*!S{c)B=-cpQIwUXibfL4x(c_j_r@m$M3zrA#GEgr5lH
      zsO=SGH?Z(?FtWB`WHmQ@A;Tu)DCF@$#P9I@eSaRx?fp}($H2gI*q|rB*+jQ%*RhlJ
      zezVtEI5n)?@r2Jf#qVbJwjD>FZaukV0%z>Y6WTV0&v@sF7&Ug+#PLS4_t%!@g<onD
      z6niv-QSA_8HjgWNZOK2ST#2@i&UQ}5dVUA~_?!Z|QMJT1q9i4;B-JXpC>2OC7#SFv
      z=^9w-8k&R{8e18gSOM7vK+@o+aVigrhTQy=%(P0}8andsZUAav@O1TaS?83{1OW8z
      BgQ5Tc
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_100_f2f5f7_1x100.png
      deleted file mode 100644
      index afaf4fe33e837eeab032d65433a0beab804db8cb..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 390
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!v~r;B5V#`(AB7xEr*5NUX5&)dcsz{{297^3*PaK)m?
      zMplWYM~;dNR~b1H8C)iBEB}6PubKhltO*P3{tBK?`)kVBU_U?OqsO6n!lJKq-lxA%
      zvRmt>w{ZjSq^w-wLtfKAcG#a#PW#b#=4;z&=cTN7^-`>sNdMkF<z)8RX_Lxc1xsEu
      zIoJB(?KA(6Y>zKHf79{x{swfFYKdz^NlIc#s#S7PDv)9@GB7mLHL%n*Gzl>@wlX%c
      o0<sN&q`^<)R2~!!x%nxXX_dG&bmZOL0Mx+X>FVdQ&MBb@0Guv{U;qFB
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-hard_70_000000_1x100.png
      deleted file mode 100644
      index 4d8dfcc279f1804d6e130924ff9f29a740baadee..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 310
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ivKUba4!kxSV_<FEuGa!r;sO_Lt{5m&Iq#tlMG4a>A%~
      z_vtTx^)8p|F3X?A)Ah#Z{yRgC48y;FP97*}Oawae&NZPK3l`e615Hvbag8WRNi0dV
      zN-jzTQVd20hGx13mb!)}A%@0Q#wJ!kwgHed_-UNVgQ6ifKP5A*61Rqqyt^BK8W=oX
      L{an^LB{Ts5M7dv`
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_100_deedf7_1x100.png
      deleted file mode 100644
      index 7758a1d76d914615e450c3965f458ba97bf0f3ea..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 445
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(HfPZ!4!jq^_@*k&DKkZ_Qf-%+C3G{Nufg9iaJttD>-
      zcd35ivvoeV;0s$?QTY{DpXFtmXQw#0az9(1>oIu-$Nc8@fEQn;vGdE_Tod&so`vBb
      zFO!f~p!9V9gVzlAtvD(%|9z<C4e2GNhPh6c$`Z}ityst>_wj4|`j^6`pPpMKR!`ji
      zsxxDu|Cyg!n?h?(tDTc8oA_e4osp<%!H2$6J?Fok_x-9p!|IXm7q0fDD@xbgH+(Yn
      zgWcP(=`4<uraWD#Ki87)vwmF4#n(@hfu2z<ag8WRNi0dVN-jzTQVd20hGx13mb!)}
      vA%@0Q#wJ!kwgHed_-UNVgQ6ifKP5A*61Rqqyt^BK8W=oX{an^LB{Ts5o};6u
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png b/bower_components/jquery-ui/themes/cupertino/images/ui-bg_highlight-soft_25_ffef8f_1x100.png
      deleted file mode 100644
      index db227a6d38204ffdfed2d754698734f1618c1efd..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 367
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!wPr;B5V#`&ic&T=*<2(Y$?pO|j9rT>Up(I$cD4|(2=
      z9905e6doCVuvw$n#Hupkvcc~g@?zDRuXZy$=>M=t*kGrKK~UWpW^=~9n;rBPaA(hD
      z5@*!)Jn%Wzhw1&z!&cwl9%fs|F8#P8;`Pm`4O5@}j{lXJBXrdCpnl+6GobaVC9V-A
      zDTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%GksT$Tk3y20x8cc~CUu=BH$)RpQprk#~0k
      PPy>UftDnm{r-UW|q}zE=
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-icons_2694e8_256x240.png b/bower_components/jquery-ui/themes/cupertino/images/ui-icons_2694e8_256x240.png
      deleted file mode 100644
      index 8aab51b00ce0d8d415a324079a8d73379bd806a1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NV|{bI3LSL(e*w_-pC$kR
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-icons_2e83ff_256x240.png b/bower_components/jquery-ui/themes/cupertino/images/ui-icons_2e83ff_256x240.png
      deleted file mode 100644
      index 264b221358985bc548f331520991a6e7a159f812..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!QrKte|l1W|e~(o1Ne7ij`Yc?Cl6MF=fY0!R@QcmzSD1w;`=nhGer
      z35rq`A~k^Yt~4phi$3Se`F4K5xz?=NvuCYq_L{wB&+I*S%}w>`s5z(s0H8B8(6Imj
      z@N5Wd!=YzA!O-aUnSgm{nrH$*O*+kq6UCX%?P6eI0svS+0KnY=fTOc1+%f=!NCChq
      z8UT=w0Dvtp|NS-9v&F>CjjePg<H`Tu{*N9I`Hl=bbEpf(!qgJ5(U0Vnc{JPH7v`Q{
      zd-ugtJ5%fu3gzaWV414-PnL^|lL_9_51SYKv^A=&Y5vv1%8%GI`<W@?yU~f^u5Vw*
      zoW}!6bp5$rhf1QXoZS&a^JTF%y_tiAs_icsWy#fzJuiFOv)9hdfzDU;b%11wO9p2O
      z6~@p+muiL*q!u`z@mok202pEobu_KQ$2aV0TrPGqO*f|Ui}whz^Ls)ODeWTsA$E#}
      zj#*k9yaqJVUU`g<A6YDt$w`~jJ{}(X#q+K!zFSLO`;+QRjo+Jdr_^kd&v2PL)^)<3
      zP)iyNrbLEa0b5B3ca+<-I8PTuvz;He-(z51j%b0jaR6q}(#V}PJ(D;)ZXxdCQ|aNA
      zORliNxh61M`8zkXf*g8YbtPX@Gw9f--p#Zrca++_y(x8<GMHv(+Q}a*r1zbMtd~|x
      z9>LL1V{?<sLY?FCil8@$^TtIG4BU?-QXO(LR9~3)FG_lpg3SW^qRl%><njHtwXP1X
      z>*0#3DI?cFUrmG2mTN}hm(Z|kTDeAcNx=%x2q*O3>TQ6`1?SWH145>+?KMNyZe28j
      zks6{<$Jr)fL+~9<9=&11VDNc7lFxgB6|FnBa_e9ZP}izMQr)>VR0LuAA53T~_Gm0W
      zrd-?N498RehoPcxdZ*sSoG1Zn=6Ho|$Jy0?T#2@y=ZHqH6^R=-fp0S{uPC`R#S5-~
      zkRyHp4PpAuUxZ(#vjEm})EmD7*|lKX6x`cBjFOulokeXH1buF}huRhAX!y`qAtI<U
      zs%_y;lNOT!C9|yK&)GQVvt@ONW(;2q{Hb6826&KhRAH)oBAPn?*6(c>nSXsVS6gyi
      z^EJ(1&sq8YX65i=5@r1h$d~%HHY2*j`G~rD?-js^Ej-wpqRP}Qlu8IaHN8~edj0)G
      zeOJ8|=s1OLE>Gr)trv<2kVu+hz5>R+p6&2<SEp<`5y)OBZ2K9{)IT~K7!|uwz)a&j
      zTP?uhQRSO_9*H)4D`V_kwjiNEl<bG2)reEFBP)zF%;+uLFV@Pe&k%P-aI`t3MSH6W
      z^o3{eoa2P-Un^7!mP%|+f`(sCjYYhMw1+N3VHt)QrL|rnZ{oBk>L>YPYMa^UA=Zd#
      zC~KSS!EH74#8!{aU+i*t9J4H?QAb=KwQz1u(``U{<}^PgwN(+92kaoP>xQG1haS08
      zmi2~)o?LX?0N39%tf*w)&Md6&gjTi)K&28An4+)<@OFVcBCvJFo<BmJtF5lkY18^O
      z=_oG#y?8@PRRIn;iDAmH>2R73F;ndx@oOAGS+p0ij~Zw?ukg@>fqBB=J=ISY-gD2X
      zy>=GB(cgWW6o$31Oht$zWoNePOPSjh)}?vw6#+av9gUqghn$8)B3$?xn-l55gi)@O
      zHGMWlHv85;ah9BVe>Y#FSKOcKu<qq^#gpLOt&tnJki72QmSLhlcWJ3bm9S2gf;M5u
      zEq3nwQ*UY!>cr27k_p2QOtjM!!~?ePMgY<smUpn_txN^%FqB~&(|`rjS{|wuUhUf&
      z9B0963E4Jtx;r)awv^pDiX9?m1M~$H5`+;!Hh@}{`N-78)7&&)dT!+kF}d=(b4V&1
      z`rh3SCm}_&2y&qDZ{ZkkYq)r;i0}4mng2+&t$2oIF3S!kl_tS3x))FR{+vBYHkkz>
      z*OyDJG8qlE<<oR-OM2RlX^N1-i|bjH53Y9K6ZD8yuS}M1v$@H09)GUUV)8tFu3*Z`
      z^9HeY0))O_JVE;@Gjv+i^`0GO8e?;Bh6BBqCw3ow^7ZhkH>$d=cA*mu%*PIa?Qsa~
      z=%{EGn_wMl9=F86uQxCrS64>d1;DKYIyIN3iL1ammfU(;TnCIrhuIcX1_JSlGm$h>
      z;Op<7$&`t0uw(#iq>RN|>9g_kAOuU-@rH+yr2WXvTHpfYsF<U25kOs%!>V3M8IT79
      zT7IQEa=>mjhTgxF9@h5*B7j;UOA5BhiDVq*DNt@bU8Ru^H);0*kBveuY_5giDyqqe
      zz;z8fXR((f=RffTo+2+pWO)K&Po`OVQ>uy#al_=*`(aZs{vUBo5BQG})K0|H?hZAo
      zwiZ{^YC1xgBoAZB<mM$l6OH=i9yN>4hcP50p94a;<`Nz_$VJ?{`*HWhNns-#PuGz|
      zVIH59l!Q0QvPIQtaDEEF!dYtbaGmGACAiXV-Rr4G-<x65(l&57yuOpLcgY+=c?XaZ
      zN0;m!Fb-NBTmzkh;u8UH@OyOZ5vw%&S56g}i*Z`d7fbZbdW}#!K!{ro7Kl}*S~OWq
      z#C`UyDzDsy66t1v8sLb~XLFkQ^D<FX=5(2|G7vp{+`y>8nnsg_i;KNk!C<Q(G1xKY
      z!uh!Js*=hZyUJpM{Y%o{J5;S_V}i8H(zG@X)ICXu<<f_3v80!)ytSd2FuA8z{=?9+
      z4r3B(ot<zfzhbr-Rr%4=$5irTkHV-%pB$8LLHF|gq;ZDt|JWC<%cbQ%OfhzBwR|@x
      z53Q|+eD{)3%c}{Zu+Hu~9`ei(^N{o_+$f(5joVtW$2IE2EHp^GA$?K|C~?Fh^OfBp
      z(R{7@fk`qEMY35lgo~v$35TzgSX(=HHf*R}v{|2>>=XU?Uy{tqD(STr)~$p50(<9N
      zJ<7Z`-i?Z}nqayS!q!xb;DP^iOyInrox-QmD31mW2S_wSOon4j7q#eEQLoZrM$HcJ
      z)a(oWjs8gQfUQu8k_a^Hw&h1nk#(znY~4IB{xL-c#d>=Yv2HWtE0@Ig1PS869P<ua
      zb1B9^oS0$LR$PmFmtCf}&ZCb~Hk99y@Y))&IC`^!X8P;{6^4AJUAZVooc_X~p5+*N
      zDrR<xIYX;v)v7NhVc^Hu(sI`w=?^r&C3v6gI-eLtE_374HZ7iLcSXYzmHRr;!mN5t
      z2Jl{Zrw(~h=Z+!pfGax453>=FE*jBV=^rK^;XSR^o`@1~+1a$05Ss`XRe1%2Ln1U^
      zF}zP7%+TFbxt_FViMk|xu9BxXQKh{93QdUy1JSagwSk<FPZD&T41j0MYwTrtq?i);
      zy(MdFb))B~2HgU9C)B|YLT2TpU1{M@+V;qI1g3_^iVLyd&}i{~o}a8>%Pds)&n52*
      zYBx!}x~Z(>8gY5eap2I?spkA_)RAV+<<jb`nViF+NLcT;NVb-fpD(M3OsoBc!>zcJ
      zg;BbOFb4n07bATHx?o#p16OP@V*2@vT;fpRVHdiMJnPJ3>}K!6;uq(NHf-KW*l!|L
      zZZmA8NG8?BiO~2z#_%b)U9q)pf7#Dx-(yUvf(@=V9&CRYbT4PSE68r&;~f5`gq7Bc
      z!-*mtig|laF`X;s*W1kjbCmkGO%5UaJ-yX}XU@{pm%<Hn-&y_R?Wkh8CY_9<@~)y+
      zY_O_03)@)%>zvY@#@pj1*$EYUW?xRs2}k~xC*{T*JYnZ4f1na=TL@IT>?n#tnL=g)
      zM36bsAu2Mcq~ody?yDnSK<bkc9qT%;^v*N#TRQI3J{6k*u&BKfrs^m2<K4B(i_sAJ
      zA5~PVjs+F8zHk~>kRKbhjV8AvIOWf)Uu(YjD*Y_rXIOvATE@I0hTEc@SjX;Y9!*E8
      zE5e^|`u=vQv1uX))`T0-tBMx{w|%_J0fe86l;KPpRYE*aCQf+MKfhppw4|qmy}B1x
      zoO<Pe2$#l-B2gm_l!72vl+`I8<y<~A@%zV*h<r5VvP<BUS**t#dm7nmxh~&$H|}9R
      zxX@}P3w%gF8k;(TMA3?-3eP@*qMzds)l;34FvimE=9nADV76@BBCXh~1;ZEapL#-8
      zHOPAbzg+Bfq<yT0xh=0^ZKKdnnz^c@I8|e!aa}8gbD~j`QhF-Bs+518BBV>QnSSe`
      zsfqMVGa<B0Avp)Qa&h(;J9-*DF*SanQY@s(x+C@H-6t(R7az6LvK^*(=Q6FSL@0<I
      z7KK!KUT?Ajt^6QWa$wbC&Mv>|-%RhG-SJZ!q_IlO#XcKo+AHFz%%OJFzi&AfzbEvR
      zEy#~$VNt>&!{JfKTDwnhShjq<A>;=wUTZl=Z{D3tFx;i$t7E{G#b>0tCygVRl)c*$
      zt<4HDpX&@z4l`SmCMeTH)wWwHBh@4Yh()JsO8g>}FJA%Pi&n_<>mT_>-H0H%Wsoew
      zTrAdo!Mp+(4OH0iu?Qx-5)qyzvp}K_#4ahLUk`B<>~8w(sQ2qoGf~n;BQ+@Q5Qr>F
      zBh)!+O0T*tEBFea)mc^K-QPFj_qe{+imRSF<wY%zc>fJGoi27hs-o~w9Mdh=8(8fU
      zn$XbaBqGy5A;8UY0mkAb(w~uTvG=7HueE4bn3X#@>t`CdlrNxNqg|&7F{U<#e0uY2
      zpnKz=)gf9+P^o|!6|dWJ0e$(y6dXL1k`ln%ke(xLPcF==TeC}ne5s~R_vvmG#Au)e
      zAPSzK7*n+q4Pl)VRkNpz?lc2irfU|;Pz=@f8r*;Kin*Xp^5yTk`bUnShPsZ2;?tZU
      z%w2UM>t=mwjm71t#9O4VKOwpsd4mHQo?-{|R}YK$QTUOMDG!-ka4ohk2G;5`j}uwa
      z5)P%=dJg^87PR!<EFQnL`=>pUn=Ic`@8n<TVJ-9MCn|~#yE^Uu?cHy_sH6{;=4BfP
      zoG=!y``PPbMO9P?{=4tZ`;J$y#*hk)a;zVm7M?S=!F5Tu%zHc7aFk^-f$2tag3}h8
      zm-M=215^5&deInoYH>V{MiG$)rlqItym6G&U(R3|Jz<kPPTaW~5#vzUSHJi-b3(?q
      za4|ku;dxOPG_n8w6VKoQR7*xpZ|sKugoCwmIJvkz^|~uIqxRKgU2|m+<L)WW`hA?8
      z`t_DsFM%9=uhiY8`?OZ9{kzu4(}%C4z-dfKNoFa{cued}*fxlP4)%r!l#J7<t93Va
      z7N4jVER6l<M;)f=wmTW27t>{?amxRh1iw`~N8-STVK3EkG?$fjHfW2tqN#uXVur+>
      zGVR4AMOv)3szaVF%Pxz<2+?)dgb6L(T9K@Qyhf+ig50XGuVn#mrFRAyV;N(oc?1li
      zMXyqtK0eVr+lhFlof=}*@Sdp!%I%=kyMW*881q1W#3%Y@EeG^IXV)_>7kjQJehX3x
      z8@-s2((zADzT*!!R*mW({`Cznuj+HoB-zZ{3_lN`oj)n~ffE>uqmAaQ5Nc2ZO9;r~
      zGK62wWrXc1<`|Ps>}QxHh{FS5&Z!9Fza?9ZKmSq>GrTbFPQ|I_*qxIoygDCKY)d5y
      zXr5UzB!}1l-wtlB1lXZ&H8mdwF%GUb=N@rzz8Gc;rSJ8AbTqHxuo@HXi+@Rx^?RU-
      zWG_LST$|YwAr6u|`a#h1bReA$CV{8Rn%*NPCl}6>t$xM{KH`a$Jgd(IFuFDvS0{`c
      z(k004OaL-c(h3q%$`aCYR?@OaSsA3PvV@czQc4P2a_;&6BKQTkdbvmZA;?QeopGeC
      zq@|Fuibxshe+j~x{!M2D_CFRZ1KcrTPC;&frfYz+8@HjKlZTsyo0DtAt&eVJUpoL`
      MsB5ZIsfCXFFKV5l(*OVf
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-icons_3d80b3_256x240.png b/bower_components/jquery-ui/themes/cupertino/images/ui-icons_3d80b3_256x240.png
      deleted file mode 100644
      index 2877b23d891d9d84c881408a0360b8c4115ada03..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M>YD0QXrbf&3jn!_@&Et;
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-icons_72a7cf_256x240.png b/bower_components/jquery-ui/themes/cupertino/images/ui-icons_72a7cf_256x240.png
      deleted file mode 100644
      index fadbb6cc0e1c764e1adcea6446b70847f740d002..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      L-(0Uk2Oa-kuyMG+
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/cupertino/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/cupertino/jquery-ui.css b/bower_components/jquery-ui/themes/cupertino/jquery-ui.css
      deleted file mode 100644
      index f8a439b09c..0000000000
      --- a/bower_components/jquery-ui/themes/cupertino/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=glass&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=glass&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=flat&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=highlight_hard&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #aed0ea;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #f2f5f7 url("images/ui-bg_highlight-hard_100_f2f5f7_1x100.png") 50% top repeat-x;
      -	color: #362b36;
      -}
      -.ui-widget-content a {
      -	color: #362b36;
      -}
      -.ui-widget-header {
      -	border: 1px solid #aed0ea;
      -	background: #deedf7 url("images/ui-bg_highlight-soft_100_deedf7_1x100.png") 50% 50% repeat-x;
      -	color: #222222;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #222222;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #aed0ea;
      -	background: #d7ebf9 url("images/ui-bg_glass_80_d7ebf9_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #2779aa;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #2779aa;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #74b2e2;
      -	background: #e4f1fb url("images/ui-bg_glass_100_e4f1fb_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #0070a3;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #0070a3;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #2694e8;
      -	background: #3baae3 url("images/ui-bg_glass_50_3baae3_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #2694e8;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #f9dd34;
      -	background: #ffef8f url("images/ui-bg_highlight-soft_25_ffef8f_1x100.png") 50% top repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #f9dd34;
      -	background: #ffef8f;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #cd0a0a;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_72a7cf_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_72a7cf_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_2694e8_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_2e83ff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_3d80b3_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee url("images/ui-bg_diagonals-thick_90_eeeeee_40x40.png") 50% 50% repeat;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #000000;
      -	box-shadow: -7px -7px 7px #000000;
      -}
      diff --git a/bower_components/jquery-ui/themes/cupertino/jquery-ui.min.css b/bower_components/jquery-ui/themes/cupertino/jquery-ui.min.css
      deleted file mode 100644
      index ef73f044ee..0000000000
      --- a/bower_components/jquery-ui/themes/cupertino/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=glass&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=glass&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=flat&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=highlight_hard&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #aed0ea}.ui-widget-content{border:1px solid #ddd;background:#f2f5f7 url("images/ui-bg_highlight-hard_100_f2f5f7_1x100.png") 50% top repeat-x;color:#362b36}.ui-widget-content a{color:#362b36}.ui-widget-header{border:1px solid #aed0ea;background:#deedf7 url("images/ui-bg_highlight-soft_100_deedf7_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #aed0ea;background:#d7ebf9 url("images/ui-bg_glass_80_d7ebf9_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#2779aa}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#2779aa;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #74b2e2;background:#e4f1fb url("images/ui-bg_glass_100_e4f1fb_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#0070a3}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#0070a3;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #2694e8;background:#3baae3 url("images/ui-bg_glass_50_3baae3_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#2694e8;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #f9dd34;background:#ffef8f url("images/ui-bg_highlight-soft_25_ffef8f_1x100.png") 50% top repeat-x;color:#363636}.ui-state-checked{border:1px solid #f9dd34;background:#ffef8f}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#cd0a0a;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_72a7cf_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_72a7cf_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_2694e8_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_3d80b3_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#eee url("images/ui-bg_diagonals-thick_90_eeeeee_40x40.png") 50% 50% repeat;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-7px -7px 7px #000;box-shadow:-7px -7px 7px #000}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/cupertino/theme.css b/bower_components/jquery-ui/themes/cupertino/theme.css
      deleted file mode 100644
      index 1ab56fdb5c..0000000000
      --- a/bower_components/jquery-ui/themes/cupertino/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=deedf7&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=aed0ea&fcHeader=222222&iconColorHeader=72a7cf&bgColorContent=f2f5f7&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=362b36&iconColorContent=72a7cf&bgColorDefault=d7ebf9&bgTextureDefault=glass&bgImgOpacityDefault=80&borderColorDefault=aed0ea&fcDefault=2779aa&iconColorDefault=3d80b3&bgColorHover=e4f1fb&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=74b2e2&fcHover=0070a3&iconColorHover=2694e8&bgColorActive=3baae3&bgTextureActive=glass&bgImgOpacityActive=50&borderColorActive=2694e8&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffef8f&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=25&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=cd0a0a&bgTextureError=flat&bgImgOpacityError=15&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=eeeeee&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=90&opacityOverlay=80&bgColorShadow=000000&bgTextureShadow=highlight_hard&bgImgOpacityShadow=70&opacityShadow=30&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #aed0ea;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #f2f5f7 url("images/ui-bg_highlight-hard_100_f2f5f7_1x100.png") 50% top repeat-x;
      -	color: #362b36;
      -}
      -.ui-widget-content a {
      -	color: #362b36;
      -}
      -.ui-widget-header {
      -	border: 1px solid #aed0ea;
      -	background: #deedf7 url("images/ui-bg_highlight-soft_100_deedf7_1x100.png") 50% 50% repeat-x;
      -	color: #222222;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #222222;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #aed0ea;
      -	background: #d7ebf9 url("images/ui-bg_glass_80_d7ebf9_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #2779aa;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #2779aa;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #74b2e2;
      -	background: #e4f1fb url("images/ui-bg_glass_100_e4f1fb_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #0070a3;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #0070a3;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #2694e8;
      -	background: #3baae3 url("images/ui-bg_glass_50_3baae3_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #2694e8;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #f9dd34;
      -	background: #ffef8f url("images/ui-bg_highlight-soft_25_ffef8f_1x100.png") 50% top repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #f9dd34;
      -	background: #ffef8f;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #cd0a0a;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_72a7cf_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_72a7cf_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_2694e8_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_2e83ff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_3d80b3_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee url("images/ui-bg_diagonals-thick_90_eeeeee_40x40.png") 50% 50% repeat;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #000000;
      -	box-shadow: -7px -7px 7px #000000;
      -}
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_glass_40_ffc73d_1x400.png
      deleted file mode 100644
      index f528008685ff2e21bce9a91f25fa6a689f143a90..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 374
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8=fjsLw*!T$JY5_^JdVFTzfkayg9Pit+V_0ieS8bp(-s|E%Aj`R
      z%A}|aCJ{9@R;x@VKi0!MvI3u1`>%;w_OdQJirGPc#qk4soYXuv*{#MGmale9j*<!q
      zO1_{b-n@OMM99;<j#nRj$o{o0)JpoxIrZkMc%D~(3^pvA_t%W0DIv{{=eFeBen-he
      zKv$@ixJHzuB$lLFB^RXvDF!10Lo;0iOI<^g5JO`tV-qVN+W<%!{4`GGLD7(#pOTqY
      WiCaTQ-rWsA4Gf;HelF{r5}E)U)_8dU
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-hard_20_0972a5_1x100.png
      deleted file mode 100644
      index 342a7e2d7a035600b5599274934ebd7e80474a93..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 381
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!wBr;B5V#`(AB7xEqoU|_lMI@jS-<U(VHbwU?*Y+_op
      z&GlhDZ!`mEpP<9lM-E%23I3B6Uckxu>Sg<%9k=IfXJL47UfqhP;$r#wJ<GY$HC8TP
      zKQBmKeva|gEZG&uE;eSaJCzc(!)T@3+T%W3m6^VNI4hjB<evAcf@h|N&PSf!K0E&r
      zuUVfB`(`=KDxhOjOI#yLQW8s2t&)pUffR$0fuWhMfu*jYNr<7bm9dExkZk}Y4SpJ@
      f@}OwQ%}>cptHiCLBk%48paup{S3j3^P6<r_w1|Rg
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_33_003147_1x100.png
      deleted file mode 100644
      index 3b559813cfda046424d0a71eea2bc9f57b70bab2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 401
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(HyPZ!4!jq^_@Y~*c95NV0;yAhfEd$I*%@D1;e-u_RG
      zf-IRc4&1vmPwp^J-iLQO9ac?hVe$JOy_>Z8PtdyW<uhi^{LAaN>lSZMmWe~)S~i1C
      z7a7!6MKsGA=RLG-=Gu^)z^HF&$XY&U#<^`x=Z{@d-+NZv<`+lVnJ*{L>iR^iZ2Qio
      zv*5%x(`ttEH5r`EPq+R2=561n{^UdI_6%+fexL(YOI#yLQW8s2t&)pUffR$0fuWhM
      zfu*jYNr<7bm9dExkZk}Y4SpJ@@}OwQ%}>cptHiCLBk%48paup{S3j3^P6<r_!2yh?
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_35_222222_1x100.png
      deleted file mode 100644
      index 68970d0403d20b6864fb6f7c3ac4054882c1b2e3..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 342
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4it*>ba4!kxSY&!<K&S84&qxn55AYY{9lXheYDU2(i#8m
      zrT;4Le|g__S-tSge|`zS%o`7WGQ7N>lV{l(pZd8o|J_agW!?Dle(kb)E1&=G3|Dj-
      z|Gk_V@GS9{zMKB_Bu567D+;HruWkoAjX|}<HKHUXu_V<hxhNG#F&G&bn&}!?>KdAa
      u7#dp{n^*za20+r_r*SF|iiX_$l+3hB+!{La?rs2TVDNPHb6Mw<&;$UcxpY_n
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_44_444444_1x100.png
      deleted file mode 100644
      index 3f19c178ffddf81f73c704949982a14c9f50c96c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 328
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ipOTba4!kxV-n=Lcs<D0oIGNO?P;79cC@nY}hnGV_lDl
      z6XW;hLko>RKk3@KIN9uIr`F;{vZ5j{)R--A1}NX%#%{TDk%H{e@URdG@#LAMzaO)<
      z$S51RFmu@h%~maOjVMV;EJ?LWE=mPb3`PcqX1WHJx`rkphQ?OLCRRYU0gyEKX`IS~
      eq9HdwB{QuOw}y_qyBmNS7(8A5T-G@yGywobd0~P8
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
      deleted file mode 100644
      index 6a501884e188f6cc600891d2b140328acace05ec..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 335
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ipOaba4!kxV-nAp<sgoL)*po|AhGX$_yGMw=%FzV6xb?
      z>&8J*5teXni{kH0HuwAjT$j8#)HzkARq?w`yM(8!&ys071lZsCo{3p+a7f7SVT-Cs
      zMSS+}$IQBhvcJOL+ydFETH+c}l9E`GYL#4+3Zxi}3=GY54J>sHO+pNft&B~qfNTRG
      kY4FoHl?O#bZhlH;S|x4`9eH;*05vdpy85}Sb4q9e0A6%ulK=n!
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_loop_25_000000_21x21.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-bg_loop_25_000000_21x21.png
      deleted file mode 100644
      index 3c22784693a2afc3fb06e418f2699306c04a2746..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 378
      zcmeAS@N?(olHy`uVBq!ia0vp^q97~)BpB|zQR4(sEa{HEjtmSN`?>!lvI6-E$sR$z
      z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp^nu
      ziKnkC`vXosUM0?lFHdd<3N?AUIEHAPKRbCL-vI?47k(Y7_`UuQn}3R!)JfT2+*rtL
      z^sLPD=vEb(ei5Y|PbT{tt0y&7Sv<e>=I%?^8m5{{&+bGr+%VU@dM46$X{d4E+?SsM
      z!e)KYp2=`|V@Aj#?(M}3kCfeFd7$lH_>cLu>1&zu!m<aGY<k|^&i~7B?UUG=_tzNN
      zrk0*{cq0k&vTBKIL`h0wNvc(HQ7VvPFfuSS(>1WvH8cq^G`2D}u>!IUfTY1s<5V6L
      d4Y~O#nQ4`{HFV_N-2l|U;OXk;vd$@?2>?UKeh~lw
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_222222_256x240.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_222222_256x240.png
      deleted file mode 100644
      index f184400db5da441a76667625c74567d220208e3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      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
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_4b8e0b_256x240.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_4b8e0b_256x240.png
      deleted file mode 100644
      index 4faad3e924c7686416456fb21529597f301570ac..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!QrKte|l1d-mG^b%U=y$C4f6$rf-A+$&dC`C}<Q3R0|5JePeDxmZx
      zC`wg`)Bw`E(xfCW`kXK4+xY?KTC--)p0%#oYxbHwv-jMwG&i85=AZ@ufX>KJ*9ri@
      zvmvkzho1EWBjev^0_LS<rUd{s88jy@6lXe*o1v8%0APgx0CyVzj?SiV%K#824FIcX
      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
      Mdgi*7+USJ;0*^OS9RL6T
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_a83300_256x240.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_a83300_256x240.png
      deleted file mode 100644
      index 51581b3e40b7329ba54afaf204fe5c234b081f7f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MP}fwaLJJ-DUxhwU<NyEw
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_cccccc_256x240.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_cccccc_256x240.png
      deleted file mode 100644
      index 4184f21a6be78600ab6584aa1649313f4f266813..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7034
      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
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/dark-hive/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/dark-hive/jquery-ui.css b/bower_components/jquery-ui/themes/dark-hive/jquery-ui.css
      deleted file mode 100644
      index 76154ac0a9..0000000000
      --- a/bower_components/jquery-ui/themes/dark-hive/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=444444&bgTextureHeader=highlight_soft&bgImgOpacityHeader=44&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=loop&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=highlight_soft&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=003147&bgTextureHover=highlight_soft&bgImgOpacityHover=33&borderColorHover=0b93d5&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=0972a5&bgTextureActive=highlight_hard&bgImgOpacityActive=20&borderColorActive=26b3f7&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=glass&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #444444;
      -}
      -.ui-widget-content {
      -	border: 1px solid #555555;
      -	background: #000000 url("images/ui-bg_loop_25_000000_21x21.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #333333;
      -	background: #444444 url("images/ui-bg_highlight-soft_44_444444_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #444444;
      -	background: #222222 url("images/ui-bg_highlight-soft_35_222222_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #eeeeee;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #eeeeee;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #0b93d5;
      -	background: #003147 url("images/ui-bg_highlight-soft_33_003147_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #26b3f7;
      -	background: #0972a5 url("images/ui-bg_highlight-hard_20_0972a5_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #26b3f7;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee url("images/ui-bg_highlight-soft_80_eeeeee_1x100.png") 50% top repeat-x;
      -	color: #2e7db2;
      -}
      -.ui-state-checked {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #2e7db2;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ffb73d;
      -	background: #ffc73d url("images/ui-bg_glass_40_ffc73d_1x400.png") 50% 50% repeat-x;
      -	color: #111111;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #111111;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #111111;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4b8e0b_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_a83300_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #5c5c5c;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #cccccc;
      -	box-shadow: -7px -7px 7px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/dark-hive/jquery-ui.min.css b/bower_components/jquery-ui/themes/dark-hive/jquery-ui.min.css
      deleted file mode 100644
      index a3cbf771d9..0000000000
      --- a/bower_components/jquery-ui/themes/dark-hive/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=444444&bgTextureHeader=highlight_soft&bgImgOpacityHeader=44&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=loop&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=highlight_soft&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=003147&bgTextureHover=highlight_soft&bgImgOpacityHover=33&borderColorHover=0b93d5&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=0972a5&bgTextureActive=highlight_hard&bgImgOpacityActive=20&borderColorActive=26b3f7&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=glass&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #444}.ui-widget-content{border:1px solid #555;background:#000 url("images/ui-bg_loop_25_000000_21x21.png") 50% 50% repeat;color:#fff}.ui-widget-content a{color:#fff}.ui-widget-header{border:1px solid #333;background:#444 url("images/ui-bg_highlight-soft_44_444444_1x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #444;background:#222 url("images/ui-bg_highlight-soft_35_222222_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#eee}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#eee;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #0b93d5;background:#003147 url("images/ui-bg_highlight-soft_33_003147_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #26b3f7;background:#0972a5 url("images/ui-bg_highlight-hard_20_0972a5_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#26b3f7;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #ccc;background:#eee url("images/ui-bg_highlight-soft_80_eeeeee_1x100.png") 50% top repeat-x;color:#2e7db2}.ui-state-checked{border:1px solid #ccc;background:#eee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#2e7db2}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #ffb73d;background:#ffc73d url("images/ui-bg_glass_40_ffc73d_1x400.png") 50% 50% repeat-x;color:#111}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#111}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#111}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_cccccc_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_4b8e0b_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_a83300_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_cccccc_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#5c5c5c;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-7px -7px 7px #ccc;box-shadow:-7px -7px 7px #ccc}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/dark-hive/theme.css b/bower_components/jquery-ui/themes/dark-hive/theme.css
      deleted file mode 100644
      index 19c62c7c2f..0000000000
      --- a/bower_components/jquery-ui/themes/dark-hive/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=444444&bgTextureHeader=highlight_soft&bgImgOpacityHeader=44&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=loop&bgImgOpacityContent=25&borderColorContent=555555&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=222222&bgTextureDefault=highlight_soft&bgImgOpacityDefault=35&borderColorDefault=444444&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=003147&bgTextureHover=highlight_soft&bgImgOpacityHover=33&borderColorHover=0b93d5&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=0972a5&bgTextureActive=highlight_hard&bgImgOpacityActive=20&borderColorActive=26b3f7&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=glass&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #444444;
      -}
      -.ui-widget-content {
      -	border: 1px solid #555555;
      -	background: #000000 url("images/ui-bg_loop_25_000000_21x21.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #333333;
      -	background: #444444 url("images/ui-bg_highlight-soft_44_444444_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #444444;
      -	background: #222222 url("images/ui-bg_highlight-soft_35_222222_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #eeeeee;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #eeeeee;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #0b93d5;
      -	background: #003147 url("images/ui-bg_highlight-soft_33_003147_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #26b3f7;
      -	background: #0972a5 url("images/ui-bg_highlight-hard_20_0972a5_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #26b3f7;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee url("images/ui-bg_highlight-soft_80_eeeeee_1x100.png") 50% top repeat-x;
      -	color: #2e7db2;
      -}
      -.ui-state-checked {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #2e7db2;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ffb73d;
      -	background: #ffc73d url("images/ui-bg_glass_40_ffc73d_1x400.png") 50% 50% repeat-x;
      -	color: #111111;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #111111;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #111111;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4b8e0b_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_a83300_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #5c5c5c;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #cccccc;
      -	box-shadow: -7px -7px 7px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png
      deleted file mode 100644
      index 7fcdd6975a572d8fc2a4479bc7889597a367bf3d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 482
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6nf_A;uw-~@9m9+yiAS)tq&jjO;QM$v6y4lfdmca>PanP
      z8$w!}*)$j&n^YXn%<?VUY|Sz0XZn08<I10JX7?_?`*+8Cqsn>l?ca9=r&;RieQy8u
      z+J5g|`7AM?rD_LqvRJ-3Oy!yX`qj3ZRSUeT-Zsas`l5B<+RCEvM#(E$2Axq1pI1a0
      zOr6EBd8ObDX48hh0n9h}L#ygpqL-Xn%XWL|s)N^7av3y7v8n}fC&-y{FAEY*Ff(PU
      zUf^|W+0muje7pVDGEH8=YS2H6HFzbb!EC8UTaXDLgKjT#T@KZ*^^+-A{9)lSu2e;!
      zk5x-tBT7;dOH!?pi&B9UgOP!unXZAQuAxbYp|O>*iIt&&u7Qb_fx!Ys1z^}CX~@k_
      Z$xN%nt>I$KjK4q)44$rjF6*2UngC9yt0w>e
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-medium_30_0b58a2_4x4.png
      deleted file mode 100644
      index 64ea097baee38f0de8c03fda5aee4876023a0458..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 295
      zcmeAS@N?(olHy`uVBq!ia0vp^EFdhv1SHFtuV#Tb>5jgR3=A9lx&I`x0{IHb9znhg
      z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?(!cDI3vE_0gAAf
      zc>21sKj7r!RpP36FoPE;r0wbA7{YNq`N^}sj)*NCjLZg(8dHx?`d0HtK**Izc!R?V
      z>rLnR>wb0UFfttN<ebp7faNbxn`((`L`h0wNvc(HQ7VvPFfuSS(>1WvH8cq^G`2D}
      su`)E!H88O<Fj&B-0Q3NohTQy=%(P0}8ZO4n0NKFc>FVdQ&MBb@00QPz5C8xG
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_20_333333_2x2.png
      deleted file mode 100644
      index b8aae959c8facb1bcf488d569a843be0f34cba68..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 266
      zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BpBFz`*s5<mUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6a&zUu3o6Ss;(S
      z#M9T6{Q)N*uM$_qgBiR)At6r}#}JO|$tGrL2?<FF0x#JaSS%QMQxjeW0A*E6Tq8<S
      z5=&C8l8aJ-6oZk0p_#6MrLLh#h@r8Sv5A$Tfv$mxm4U$mMg^c7ku>Dyr(~v8;?{66
      SX2xHj1_n=8KbLh*2~7Z&6+w0Y
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_30_a32d00_2x2.png
      deleted file mode 100644
      index be4135db126c31b5a7040f9556b5c86e674df15d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 276
      zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BG<aO82~AkbVpxD28NCO+<y{TfqaEzk04(L
      zhAK4%hK3dfhF?ITh8GMBr9ic>5*Qe)W-u^_7tGleXakgBOY(Mi`40x15#R3sMc7L`
      zeO=ifaPsjgaaBB+!3z|U@N{tu;kce0vnL{aIwRK%1(EySKmTU!WzfINqQki^N))I@
      zwZt`|BqgyV)hf9t6-Y4{85o-B8d&NYnuHh{TN#^J85-ysm{=JYEMQasx)w=8ZhlH;
      YS|x4`7h`7p1!`dMboFyt=akR{0G;1T0{{R3
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_dots-small_40_00498f_2x2.png
      deleted file mode 100644
      index 256939535079e91be6b19605ed68110aa19ccdde..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 282
      zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BG<aO82~AkbVpxD28NCO+<y{TfqaEzk04(L
      zhAK4%hK3dfhF?ITh8GMBr9ic>5*Qe)W-u^_7tGleXakgBOY(Mi`40x15#R3sMc7L`
      zeO=ifaPsjgaaBB+!3z|U^K@|x;kcfhlJMcnoA>DnV9*qBEK}?CQFUeptr^Ux^jyx=
      z168V)xJHzuB$lLFB^RXvDF!10Lo;0iOI<^g5JO`tV-qVw16>0XD+7ZCj0!+EBWcLZ
      aPsvQH#I50C%#6Q44Gf;HelF{r5}E+&woax1
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-bg_gloss-wave_20_111111_500x100.png
      deleted file mode 100644
      index 99975d849c7ff0a433246dc2fbc0f1782863810b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 3990
      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
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_00498f_256x240.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_00498f_256x240.png
      deleted file mode 100644
      index 6ec4b3959099ed1f2fa9e80ef26b1f079ee2c311..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MeRI7E9d!JE0l~mc%>V!Z
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_98d2fb_256x240.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_98d2fb_256x240.png
      deleted file mode 100644
      index fccf8937d4aafc323cb4afdb01f53b4a73a20b7c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M)HT(q)I!Jo7eATmK>z>%
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_9ccdfc_256x240.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_9ccdfc_256x240.png
      deleted file mode 100644
      index 12255132444c9bd3147e8dcf6e65999442b9bb85..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pr4Bmbzwv46EdT%j
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/dot-luv/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/dot-luv/jquery-ui.css b/bower_components/jquery-ui/themes/dot-luv/jquery-ui.css
      deleted file mode 100644
      index bdd1439ef3..0000000000
      --- a/bower_components/jquery-ui/themes/dot-luv/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2Csans-serif&fwDefault=bold&fsDefault=1.3em&cornerRadius=4px&bgColorHeader=0b3e6f&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=15&borderColorHeader=0b3e6f&fcHeader=f6f6f6&iconColorHeader=98d2fb&bgColorContent=111111&bgTextureContent=gloss_wave&bgImgOpacityContent=20&borderColorContent=000000&fcContent=d9d9d9&iconColorContent=9ccdfc&bgColorDefault=333333&bgTextureDefault=dots_small&bgImgOpacityDefault=20&borderColorDefault=333333&fcDefault=ffffff&iconColorDefault=9ccdfc&bgColorHover=00498f&bgTextureHover=dots_small&bgImgOpacityHover=40&borderColorHover=222222&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=292929&bgTextureActive=flat&bgImgOpacityActive=40&borderColorActive=096ac8&fcActive=75abff&iconColorActive=00498f&bgColorHighlight=0b58a2&bgTextureHighlight=dots_medium&bgImgOpacityHighlight=30&borderColorHighlight=052f57&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=a32d00&bgTextureError=dots_small&bgImgOpacityError=30&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Arial,sans-serif;
      -	font-size: 1.3em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #333333;
      -}
      -.ui-widget-content {
      -	border: 1px solid #000000;
      -	background: #111111 url("images/ui-bg_gloss-wave_20_111111_500x100.png") 50% top repeat-x;
      -	color: #d9d9d9;
      -}
      -.ui-widget-content a {
      -	color: #d9d9d9;
      -}
      -.ui-widget-header {
      -	border: 1px solid #0b3e6f;
      -	background: #0b3e6f url("images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png") 50% 50% repeat;
      -	color: #f6f6f6;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #f6f6f6;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #333333;
      -	background: #333333 url("images/ui-bg_dots-small_20_333333_2x2.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #222222;
      -	background: #00498f url("images/ui-bg_dots-small_40_00498f_2x2.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #096ac8;
      -	background: #292929;
      -	font-weight: bold;
      -	color: #75abff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #096ac8;
      -	background-color: #75abff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #75abff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #052f57;
      -	background: #0b58a2 url("images/ui-bg_dots-medium_30_0b58a2_4x4.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-checked {
      -	border: 1px solid #052f57;
      -	background: #0b58a2;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #ffffff;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #a32d00 url("images/ui-bg_dots-small_30_a32d00_2x2.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_9ccdfc_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_98d2fb_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_00498f_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_9ccdfc_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/dot-luv/jquery-ui.min.css b/bower_components/jquery-ui/themes/dot-luv/jquery-ui.min.css
      deleted file mode 100644
      index 0e1ae2c59e..0000000000
      --- a/bower_components/jquery-ui/themes/dot-luv/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2Csans-serif&fwDefault=bold&fsDefault=1.3em&cornerRadius=4px&bgColorHeader=0b3e6f&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=15&borderColorHeader=0b3e6f&fcHeader=f6f6f6&iconColorHeader=98d2fb&bgColorContent=111111&bgTextureContent=gloss_wave&bgImgOpacityContent=20&borderColorContent=000000&fcContent=d9d9d9&iconColorContent=9ccdfc&bgColorDefault=333333&bgTextureDefault=dots_small&bgImgOpacityDefault=20&borderColorDefault=333333&fcDefault=ffffff&iconColorDefault=9ccdfc&bgColorHover=00498f&bgTextureHover=dots_small&bgImgOpacityHover=40&borderColorHover=222222&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=292929&bgTextureActive=flat&bgImgOpacityActive=40&borderColorActive=096ac8&fcActive=75abff&iconColorActive=00498f&bgColorHighlight=0b58a2&bgTextureHighlight=dots_medium&bgImgOpacityHighlight=30&borderColorHighlight=052f57&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=a32d00&bgTextureError=dots_small&bgImgOpacityError=30&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,sans-serif;font-size:1.3em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #333}.ui-widget-content{border:1px solid #000;background:#111 url("images/ui-bg_gloss-wave_20_111111_500x100.png") 50% top repeat-x;color:#d9d9d9}.ui-widget-content a{color:#d9d9d9}.ui-widget-header{border:1px solid #0b3e6f;background:#0b3e6f url("images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png") 50% 50% repeat;color:#f6f6f6;font-weight:bold}.ui-widget-header a{color:#f6f6f6}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #333;background:#333 url("images/ui-bg_dots-small_20_333333_2x2.png") 50% 50% repeat;font-weight:bold;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #222;background:#00498f url("images/ui-bg_dots-small_40_00498f_2x2.png") 50% 50% repeat;font-weight:bold;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #096ac8;background:#292929;font-weight:bold;color:#75abff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#096ac8;background-color:#75abff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#75abff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #052f57;background:#0b58a2 url("images/ui-bg_dots-medium_30_0b58a2_4x4.png") 50% 50% repeat;color:#fff}.ui-state-checked{border:1px solid #052f57;background:#0b58a2}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#fff}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#a32d00 url("images/ui-bg_dots-small_30_a32d00_2x2.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_9ccdfc_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_98d2fb_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_00498f_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_9ccdfc_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/dot-luv/theme.css b/bower_components/jquery-ui/themes/dot-luv/theme.css
      deleted file mode 100644
      index bb92a6c786..0000000000
      --- a/bower_components/jquery-ui/themes/dot-luv/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2Csans-serif&fwDefault=bold&fsDefault=1.3em&cornerRadius=4px&bgColorHeader=0b3e6f&bgTextureHeader=diagonals_thick&bgImgOpacityHeader=15&borderColorHeader=0b3e6f&fcHeader=f6f6f6&iconColorHeader=98d2fb&bgColorContent=111111&bgTextureContent=gloss_wave&bgImgOpacityContent=20&borderColorContent=000000&fcContent=d9d9d9&iconColorContent=9ccdfc&bgColorDefault=333333&bgTextureDefault=dots_small&bgImgOpacityDefault=20&borderColorDefault=333333&fcDefault=ffffff&iconColorDefault=9ccdfc&bgColorHover=00498f&bgTextureHover=dots_small&bgImgOpacityHover=40&borderColorHover=222222&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=292929&bgTextureActive=flat&bgImgOpacityActive=40&borderColorActive=096ac8&fcActive=75abff&iconColorActive=00498f&bgColorHighlight=0b58a2&bgTextureHighlight=dots_medium&bgImgOpacityHighlight=30&borderColorHighlight=052f57&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=a32d00&bgTextureError=dots_small&bgImgOpacityError=30&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Arial,sans-serif;
      -	font-size: 1.3em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #333333;
      -}
      -.ui-widget-content {
      -	border: 1px solid #000000;
      -	background: #111111 url("images/ui-bg_gloss-wave_20_111111_500x100.png") 50% top repeat-x;
      -	color: #d9d9d9;
      -}
      -.ui-widget-content a {
      -	color: #d9d9d9;
      -}
      -.ui-widget-header {
      -	border: 1px solid #0b3e6f;
      -	background: #0b3e6f url("images/ui-bg_diagonals-thick_15_0b3e6f_40x40.png") 50% 50% repeat;
      -	color: #f6f6f6;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #f6f6f6;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #333333;
      -	background: #333333 url("images/ui-bg_dots-small_20_333333_2x2.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #222222;
      -	background: #00498f url("images/ui-bg_dots-small_40_00498f_2x2.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #096ac8;
      -	background: #292929;
      -	font-weight: bold;
      -	color: #75abff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #096ac8;
      -	background-color: #75abff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #75abff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #052f57;
      -	background: #0b58a2 url("images/ui-bg_dots-medium_30_0b58a2_4x4.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-checked {
      -	border: 1px solid #052f57;
      -	background: #0b58a2;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #ffffff;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #a32d00 url("images/ui-bg_dots-small_30_a32d00_2x2.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_9ccdfc_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_98d2fb_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_00498f_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_9ccdfc_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png b/bower_components/jquery-ui/themes/eggplant/images/ui-bg_gloss-wave_30_3d3644_500x100.png
      deleted file mode 100644
      index 341976f75706b764f255281d82e1c40160ef2531..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5999
      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
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png b/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_dcd9de_1x100.png
      deleted file mode 100644
      index a015034c568d5f1c8f53ebdf0e6ccb63684bf196..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 400
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(G{PZ!4!jq^_@SaTh6kZ5V&-!0z3vd58c!Q7~b$R$^W
      zt2j4qFq`Y4(m6G=RCUeWIx)^B^?(gh&kpkR%-NkUZ#`M%W&VPog;9AW);pI^%v`l~
      zqG59C5*44Gj%hbKGDK%viAnKQEatSlmvQ3bv901Ko6Ucnu*<R77yawRf@ICkV{^^_
      z%n99Up|4*&H8t?c*X{AY3M&|=`sP?&6cXP9bf0R8YeY#(Vo9o1a#1RfVlXl=G}AS(
      y)HO5-F*LR^Hn9S-4S=M<PvcY`6b-rgDVb@NxHWX--Q57xz~JfX=d#Wzp$P!WCWv|f
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png b/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_100_eae6ea_1x100.png
      deleted file mode 100644
      index 46eedf8f17983c85d16ea60405c4fc31596669c2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 431
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(H^PZ!4!jq^_@DDpKWNVMIrZFERjysMIdgN@mYNnOD)
      zu=(Tx)g6rG1_kWg>>q^GF8p_QdC-2~M*1P`7im@B>~2TP@pJ|`J25c);Z@=C;8}Ky
      zU+veH-QP5;wp)ME3%M2-!j`(7J5|{IO>s+K-1EK;=Q0Zwz6S*jZq@Ik-YPraE9i)-
      zUvRC{Hg1#oeQoDCTFG%wEACHIR!ou?d{Pp9vQyx*py86xHA`6)KgD$9hyN<v!<ZDA
      zz@>QBIvnVH)e_f;l9a@fRIB8oR3OD*WMF8fYhbBsXcA&*Y-Ma>1!NllNrRupsXQne
      ca`RI%(<*Um=*YXf0jPn&)78&qol`;+0G|$!FaQ7m
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png b/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_25_30273a_1x100.png
      deleted file mode 100644
      index 7b1e0948d0fc9eb7376f101b5d48b6e1ef51a5c7..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 420
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(G-PZ!4!jq^_@Y~(zYAks2_y@B5Y4z^1Y8@SnASagN9
      zZWi3!{GX$+xt{g%tu8$QmV<h|YkTJ|71*)appcbyb^mVdcNQ~skMBO}>+0h2k1gHu
      zq-*4-gV&_})=v0*z$tTMqT1wV2WH+E71K19wEcZ_%R(QC!x~{72~#+eq+C<gI(CFr
      zWF)WH;<0nBanzDCQ!M*+mXv=zRq$Uj@M_u3M1_6tcR7A|JH1XuKlNA2v!zwmu0S`d
      zmbgZgq$HN4S|t~y0x1R~14A=i14~^)lMq8=D`OKYAlm>)8vHa)<w4Pqo1c=IR*73f
      TN8a5HKn)C@u6{1-oD!M<@7<F0
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png b/bower_components/jquery-ui/themes/eggplant/images/ui-bg_highlight-soft_45_5f5964_1x100.png
      deleted file mode 100644
      index 3bd2540a45eecc8bc9700234d9898ca563db754c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 405
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(HqPZ!4!jq^_@EaYW!6mh9nb7x;Z(ZXtn(1FR>4NNZ>
      z%{cB<`E3wY;HaLmA^k(d7tsyI9lio444ki2C!gGtl2d<s9bfj0nKS?L>XmKNe)950
      zW1OG+iQ?saF`E*(!(<}s7o{gKCG*KlsAl6!c%rGkK|fJvs&C$AX6?RJ2Tx28w$Rk(
      zHmj0;@-$*g*24C8RZhmfrvJZr+xLn8ipu>zQ|P-7(2=Sot`Q|Ei6yC4$wjF^iowXh
      z&`j6BQrFNV#L(Ev*u)CRHUN?aKaEp)P&DM`r(~v8;?~fScXtC&1B0ilpUXO@geCxx
      C_k`sD
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-icons_454545_256x240.png b/bower_components/jquery-ui/themes/eggplant/images/ui-icons_454545_256x240.png
      deleted file mode 100644
      index e6e41cd07813ccd9c797d487fd183d318827c5b1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7090
      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
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-icons_734d99_256x240.png b/bower_components/jquery-ui/themes/eggplant/images/ui-icons_734d99_256x240.png
      deleted file mode 100644
      index 6f8938e416b90fa18055b72227f96d9d34270d05..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MsB5ZIsfCXFFBxuuaR2}S
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-icons_8d78a5_256x240.png b/bower_components/jquery-ui/themes/eggplant/images/ui-icons_8d78a5_256x240.png
      deleted file mode 100644
      index 4d0a1f11de249797646eb99289a54c9825a5bada..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      Mp{}V;r4~BwzdV(pGynhq
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-icons_a8a3ae_256x240.png b/bower_components/jquery-ui/themes/eggplant/images/ui-icons_a8a3ae_256x240.png
      deleted file mode 100644
      index 54613679c186ebe36c1edb7c60280d7ecaa70710..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      N80wnp5VX*7{{@pnz@-2H
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-icons_ebccce_256x240.png b/bower_components/jquery-ui/themes/eggplant/images/ui-icons_ebccce_256x240.png
      deleted file mode 100644
      index 539dbc1accba85ba734fc8268b0b631647b3c0d6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MsB5ZIsfCXFFWmC={r~^~
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/eggplant/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      zcmZu$XH-*R(!L3y1eB^2L7D;r27>e=y-E`VK{V1qM0$`SgixeOM?iY-y(0)j=|wss
      zC?rxthX7KA4|n%FXLry3xpU{<^W1ml&YYQfpEvBGj@ni78{_~0T-8ul)&~I4<t?y7
      z2D!YdWVp&-3W%+OwgLcDM^l`c6JP4=mg@T20N~9H0O%k9IJta;#sh#m901nL06^*k
      z05CYGHS5V-z5rWjswo2(A<={Fml`QjLtBLuO9CS2x*l`PqXGboQX0w%2A(sU2!{wn
      z&l6M>9WUSK&pscyU25X|L_i#xZJM{Q1zBCownss(Ct&Jt$==9yFBvN#>vb$^k^7SJ
      zdOJW-pTQ0x86zj&V#1K$Bxn36)u2F#eyf5gUn2kIOubU$vaa2E4Ck*TwiSEXxnqfy
      zpDl-5Lo&IuZ??T`mj?$=(<E)@JZy9nL&=z0R1xUVQBGQRXJv3N9zDY3&e1>{3vfyq
      zgR8F55|e17M@{8!PWV=6Px@WsCSR0{Zi@<pgk>u!-wfb*j~3PG;SAyO&1kTUu#^)o
      zvzryI%50Zet5^^t_rCr$VUI(;XIf@?-^;{}QUKgEwDpL{V`xjtG52Bqap|4x=iY4O
      zUt&GtYfhIpO8x;!y+b{;K2=Cs>_>dM4>)qU!Kme_aLj9RL=)TSKW@%)M3~rbd2>Jp
      zh=fKJE0RtEsl^6J5rb3_J)q#*C*a%2s-RqBR(GKW%2>evmI;_h?Y2BF6hg-GSN(^V
      zkSKLDhGvDR$W9G$ULI_-f%F>hwR31>e(<%xgvsYh5=}#&50E5yPw+JA9<h-VAP)K|
      z+2q=IOy>}Z-Q`0doUEV!zPWbARopLuyCP}E=|T7p#IvM~-|}G4>)uy@yDYl0r|mgi
      z%PAH17`SOay*8Hx-Ugj172439jtsC~ehk0rMg;xMWJYbiA32Vc#S{&+cX2ca5~+zm
      zi2q?7lv;ul1pYVE7q;{m%r@lJRXw*@4h9}ppLvLD%Dz`+w1)OR2{6!b@5k#%2BZu$
      z0s*~>739gF=_g-b#+4Mkp)@*vG|BVr+0VtI)R{^W*=oMLSuPc4L%H1|w50F+sJyHp
      z+%#LZHKd#}jPPWW<zwe8`1g$&sB+W<dYv<|UvLiWQ>sf6))E^BLhgtWH*M!=Kaf{h
      z3rYyLT^WiqeZG7zM#XWsr7Zo=J!;Klz>p2xx3K2YMKHH*wg0L6F-&bsjQDu*X(REg
      zq%7UJEwPbB!(e}Fh84PZNz*Oz;(?o9P0hyb0yFN!ABVQ~sGl%6hPN!~Lk&Ef@ww<t
      z-}4(Cy%KDf$*F1fzoK~gpOnE!dBy|6i==YrrX4#FTl9-o<h*xeb5X`)lj{q$o;6zp
      zf%a=C$*HHO3yo!ijl@U$UJ+3qB_-~7<ENN5xQ>8zKYh8^&n{$_oxX3Tu_N&WtWlTZ
      zgGFd5tt9PnT{-so=4G0VeAD^naK6T@da9Qt`{(D=rqd#fAe9bCYJb^jjHpjCUYJA|
      zfJJRkus8Yo0^3M~?fV*U>rh;GRyaSL?N;pl7;72Yeo&5m^EDsob@uDM>*~1C901>V
      zT{g6&jxNbX*MQbM%V;^MWIf_!9abs>YknTE)@<0yrD*Iisj2ZdD(E+r(gjW=3Rk6R
      zyh=rs=9eKUid@;YCwe;$sF%n6n>B5Rdgk7q%zoZ$+DcDcn+w>W^8a1u$~(?qKEL`$
      zXK{w}OGPJlajA%kDELH1;b^>40OaFZ@m?*Bik;KX<(ZGEyz-sU0vv|szq2o}Ta5W}
      z@gC?|mDiwe$z0#nhnC^X`L*RbH+q`+U&C8wdu{mls%4i};L{sEut;r~OGR37ut7uD
      zq^4ZJ!y5t0HYu;n#rzVQM8*>5mc#a3_P*bDtza2rwAz`Nrf&*gsV}UIKkdcH5#42y
      z@@i=>`6POG@`G`rzyQ)cuHpWb-XBv*1`_@0Nz(0atoMv_HbDB)p3^}MhDT{-`>M8*
      zM(U}We-h<e7@VfCieCy;ji`QQ);dI^VXD(acPUWIQYufyPKx(PoV`wGPi?=)lHDi6
      zD)nYQi}?Jk>nGFVoTb);AQqhXPSNG2=geoiS9G+m;_0LAVfR(R8&j1xHT1x!2X9+f
      z2U26aJYr>R^!50<i=?w{B#L&@98$|TdTLvR@}^N|vTcqfyn9}<JUw?TsD()yM3g<M
      zBC1zY8p;3Go|J(9E=3V+pqZ<i{xk_$w3y)}2e;{%q={>}k&`f{uxM|#plXHs&3WI3
      zcpc|F1+T}k@p%rBMjitvwC*yA($x1r8;@VM)JwOQ{4loWjWOMWcIJn1ja6Kz(^yW%
      z$X+~ldgNYx_(U<NP9f+7YXxik>S0HxmwI%t=Q`BcKhC0M&2A5!KG;^lzaTi+)U#Cx
      zVw~Jt(lu6}rQT{XOGx$kU4d=LZB~xt8G7Bj&OC8Lp01PE9EubzhU;4Iq*9w_7!=U<
      zif{!AX4{`al5x;GC2}gqU&yNaw8#Z`RF6Ns_75C({H^8;%Db<&SQ~bPI9?(geG=mY
      z%h&4x&|Co39q9nz<JfrfN&(tU)i^TS71qa_dtsgFLOBHDqjtDr#`UKtHjzPHny(|D
      z^$l91TvDmvcMsGU;f|2d?-mi6g6tNW|CXxXH6VEU#Ne%m1Ud9$ddi6A5+aDd{JUf~
      zt3Z1Dmg@qd$Qo)yJd5aT_-f10#B7RW;V;0yAT0ES)TuQ;$S<l`OUhaz<jK|ps8lKB
      zl!+X+6zP}YJ;5KERZ=bE$gTeI#J8)trdK(xE$2&{N~<?r%c3h3q1_?s{;nXbNCn23
      zQjnNWeB_3&s*h<`j;NkT^l+-aBxSz~0Oty8ECOV+oea)Im}s1`%LX_1`-<C*v>8M@
      zx7YiV@3vJ6ZKYJ=R)VmV^Sm15w<R9;PPlgmJsE_y+X~q}Yqxi`(SFcAN!w5rtg%75
      zQ+xDC%Obsx<1;saD}3nmR?mdr@oN1O&Ta{#I%$t{-n3YhrW4h$VS9;c@8yc_K2()Y
      z!m<6bnIhdy!*M5uKV!(U=C3Fl5t#hLd38X<#5OJuast1jmxDi1RWe}x!eAY!Pi)Yw
      z`uBuG*uBYHeFMh~4|%i%ChsJcUJUQ5&Hox>Zd&WbNwpPr#lG92OBRg&a4f@%`Wbg2
      z<kRJSK5z%oZR`Bxmb`}llQavr7yOyttEgF%F{U$^>{Z;t2lH`1225knwv>&K(U}9x
      z^`JfCu<u&a4`CvmKYXYwKox~YgwSsQ7^=BvL>2Q0kO&;;mVlbE5XqGIlr&NKCHTHc
      ziIqjOqP+lN{4eMxeU`WWx`43zb{sBzmmFmzomg_gGDnKb1!89RTcMZ(>X*ca5_?D4
      z^FQ*q-3|bZzt(P&3*aP75SZ)cL=WI^oB+}&MmE8=V!Ro6Md&RP;NcGsd;_C<VB->Q
      zI2N>Ht4JZxWN}8Rgr<`q!fB)pWaQGr)5*`ES&A!%twSQ2L$W+f$)%*~2^so02b<e-
      z35(AJt4xm<Q^-Cjc&86Eet-@V9lhFpGv~~#E;N<(&eWbUFmrtO341QUUc}Y~ui9i(
      z{TKpIx_zAAzwm0368_!XOjeywPCFl8lj}e^8T`@F3v2u)lhNYp@!6h&nXZhK>=sS{
      zok@?v7EMNq6N4l;o~;HB-|u=+P@wfI0(o$2h?I;~x{rZckLW)ppY*p=#D2jHR^U1X
      zXV{=vAi0|Ac(w||&%CH7=0{Sc8Vm{M+c})3dW-ynUWJh33F<{)hfD2rf24HQF{IW^
      zjm>xeovC7KU09JO;=$Bmzj>fZGSe?k?Qu?fl8=c@oR9G-oQ-d4CP%CnhRHKtappYv
      zMjc0bzx78<e0Ore>Z|!4+>%$?L{aVo@3#sS<tg^}HmS?0Yi8<`KRMCRjKb{Km%H<1
      zZ}NmzMmg9%hFkE;e;MHP*)TgJIOnwYoewcH7iq3S-dAw=jSm<h$hpCPc>Epd@Hg+l
      z;F&|W$LS@@2ptnS9VA|JXTEDjj-Ofh%Y0NcTfb!Z#fF|t2*AQ}q$ND`hs+zkslw)6
      zb>`fTc#g!xoNuNYcX)hfL=2kCWqg)asv<&B94@4Of9Et0^7+BYU!Om0ycFZRMmyKl
      zJc<|}ekRmoyh>9%sdZYmQwu|lEsz0c<mlNW2SA>g;o&|oRVV2_#dio;klL<+hUi9#
      zIla?c6`PeeCgqA)aaid7Rq!AF`VV`4gQG-?uEtBttXYByI<3U}LHdPw!xC%~*K|@c
      zy^K!JL2YRv-bQ&O)sGtDnIWrHIU+o5di`Lac3umje#m2Id#Gu6F3Ne*xUn6~J-lw)
      z9Fjzcr<BZW`*c|FD>)qUaMt}q7_BYM`6qATCCPl@UHehaY}~`>FmoRCR%K}ps^0rG
      zc!yB9%Dm4plSMV^H^Ou6Sg0KNh$taxEkvl7&++LJ_iFiu!o!3^-u6SM2`+$z1AD7z
      zlPS}v%B%l(*%;>Moh*bwI!|aan)iG}ubJCbVq$y2b(j|u2|Uk|o({y4&t@|)g3}7y
      zGQJ(|JHG87&OQ?^au};Y{NW?E5iPbiX+-E)`6Z}4^1>FQrr=e1@;_plpHVnJ)^ynL
      z_nG}Xesz$J#&CqlD*6vPCIywDPt|jL*-%fw|2`n!k^$#AS~_Zt^LMMV?e*G<zj<FZ
      zn^E#s=oeB*HRE-JF`_%7xi~dQjHcWcI~AF`^iJjGWGo?*W|T=vi7h*tdX%T`z1@1+
      zFlv)t(R=Z>Z*XWv;Yt`@7^$ymYN9A<AMy#Fsg4M(96$)|zdb8USF6C0z{WURZL`su
      ztsS@J<@l#W><u)kGm0|>RU9cLhf<nRZDevvX)t6ueJ$-i6Zyvt&yPtt+Mk#PQF&Uk
      zVvF%JH(HX#Lw-aewDcrOJIR>4CigP*!g6oRI}Xeb$CkF9O}I6^(4!fBKBL=WC%#$O
      zTBb-3Ri5DYIcZpb$Ak8wqRFX?#?w2L(E($3$<qP53jVj+iMKFLqt$n<Tz8pp+d$a@
      zb;Ux$%pvWcH%robGzNLHCzfA4XkgDs0TwXu%+`nCAma$@xWJtP=<S8Th<$P$G=Oxz
      zviAErFZWxF<<QQ3*aZt(vJM`m@mf`ZSr;&dIH!G`ZJYH7FdQ_K<KAIs?F>9N_i}kr
      za-JxbNlBd~I{Aaw*zm;xl;=Ln;KT*rDfQHsX2U<FW6fv8D(9k~p57(9AINWVVk%FC
      zsr4lLbmD)y<G3W1;F)zKLxnR+X7szlj;QknW295k9*#X|_h|;&h;SFq48IrRo8Gh1
      zV;Odce#VQ=lCZjNG*J~k^JA00&g&6uH^_jsWh6hNprprQc_k_34dn_kc4q}U>w>#A
      zOB*bo$I6Ay8Gs#u7UCfqyNraBfOpvVD7xp57YRPu>z+Ev^$Cu@GIbKuEgSZD(jZkJ
      z_5%v5F#`Q%BiJE26Q-~B5BVU_@bg7F))gVs-=+TEEXmdO!|;0}6hmyOTr15+4@@Ja
      z)DNT<Q#Iv8mD!Pf7r#cj>~hl-aE4+yY(m&^;B!{fFOEMubb3<UUsY9;zHz31vy(gR
      zCrv5TGxiS8P8rai#qG?%4flrvJPAMCcdhU@NTN>f;OLj!EI+E{Wh`7-uT$jTK=N4?
      zhj}Ltyhg;Q`W34c)-hI?vyZyKc5=}PuPWhxIGn4=l!sSyfp+)<@OP!ue&}eUdOZ<-
      zcy@VgZ%J2;VOuYi5XRI}U#Gb*<9@eX8IsZ;a3eP%5<GUXCWd@!Mj8s*hamDx_k$E>
      z3ipW1XX;Y3KR7Uw5vCuw4k)EjQA>Q;BUV=b*REQL3&Uwo3_*{3)_S^n(iN&9c0xbP
      zqsV+HsECfFSV!ku3#NPIqD`6If89z^+5kQO(gC1DcH?N*k=f^CiiZjf4BsKv(l%~K
      z+hwFKx<YI{8u-*Nc)MD!*Op*&ts{E9Wm}Xc6Rbib_XmspVAGf*Sxt1@z=&n}>#Zfj
      z3Pu6RQ5zvy?5l_84%hlC1vSV~eGgrdsyk+79Bd<elJm6uZBAb-6BvqB1aG+Ql+IFe
      zVV)|hP-XoFxpp~xtx_zoHqSW`XVj=XTAbK^OnI-XQJB-2z)<TXXyW?)N<461pMwvR
      z3HYqQR*<R5l}Uxd#n>buKR+XWh5og#2b$Ifj0}4bFJ>3t-5nz>0d^*@Py&p46Y@&s
      z3|ln*EQ}DnB45GY-iTo5&-z5%`?9H@7RMK#T}lckt|pxyk3MI@Xn%HKY${nz@bOP*
      z!&u>8veZtzJ{TZpoxQ^zDeRhmH3LX33+UoD9?R2I6>ZJ{Y1K5h_IwMzsS5ac?8u;K
      zqOGx&IJR=9!S8)Vrvh0*Dt}{?BM!ghbpFY9{Qr&)9nM<RfMiy@4VZTb(FDSaj1(it
      zr<}j?ZU35{8QX+*Jy5GNukH?;0}SH|?U~*1qpHhfYoozjq|`M_+BH5Z{l!r&4J&Z5
      zLmB-Q82nsJvl1hosqt0}9J;!1vvu80f9azuoDTDTE(8!Oo*m8A^a$1XZlHlO33&$;
      zlMi5Pt_3N2Rj_D5;DsJ^Sta3L^&NMY#IBwx;k57K#9#i@b+iD{sWb2hl8Nm>D5giD
      zcX0)3l-x~YPFG*YiOX9a>!3)S-{LYsVl0#Q=**-c1a|dGf8^6({8fX|j@m?lIf2>W
      zzlk|Y%lKauiV_z96{L?Q1GqplM>2q!V1{aHWU2|Jz>PebAGDI78Dm%jn=fN&S)6SZ
      zn%|S9ly$rQ(N_xoaL`NZcS|(fR<H&g<qKu@96|jPS4jMBl{WJtsxWl@Ywl0famV`}
      zGqR8RVUBcU`zmWRc(LR;omQP5Uibcn$Yg@_WCI>vUvm*sPduX>5>~@#hg-5rXbf-v
      zrc*mj#h<rL;du>X1OnQx07rbRJ-JO;NP1z3P)i94GxE}-BJRco8sLx!_-)Sc+m7IS
      zDcN3wnmQtMwuaAHLCzt4er#weD*{#LXr!RNsXTM(k>ICx32){%E<uLQ%%x3X(91Tk
      zel7b|p|@}2iChfo;&SAFN%7Yw#AlL(cLk@NPV;fiiVR_R3D^zW*_}q<cy|88C)a$y
      z5*~D>c~XJ?fsA#eV`3$A_EFyt29#~Uo$!KeB&qH~$F!`!X^(02lB_R{lKkJin;&=m
      zcdF(+#JQC!tJsIt=^8=&!{PbWr?ML-ktWX>o@7+UhEL_~T0Ht_pZd{!AOz8_H((#K
      zzaZiwfl#*R^KcN6e05y4F8<OhFlG+S$}a`kO(>5R!YUULmgXmG2D<mdxLW!BL_^H;
      zJSMS*s5d9u4+OhJ^BeoR^mpnjLMNyVOaf^)lkTpNbGGUFKrwo&y*R?5#`chDgr2DH
      zmqlVtl+VdM1_X){*vYH@L&zQe70)=xX$W?aKI>OITRiq{{KQu3s*f`InmK$mqkZ-`
      zUi4yllW4OxMaFMo+ij4^KDdPxlTGUpbm88FU!&QePRgC?<DijU&*O=%YtDVvy>hoE
      z{^*+Q+p{$`Y7$=xJdr2)ffML!i>KT1KFgZ>uZA;+CI0KW^^3g3$_G>%^f+%ed0vL>
      z{-iq|OoF_wyZMi}zA;KlE)~U|^QC5#W|p2?9G4a(ISEcK9c#-ciL(+vi#>{2Am7st
      z;@f7&DwSDk=_c-1oK3O>$Ico0867*ULS1zY4JqZ<&W=rtRJw!G9YdMwIbMDz%w(TQ
      z={j9YZdcednJ6HP@7r+r#S2+n`B!{|JE0u@x4en|o3*$sDU_p3dD1tnBU)r~NUWT2
      zR=W<7k+TM@La#?IT{CE09?YIjNEI34Pz-ngB!Q=@Y!Y-WwDF|KrfYX}!sg{gegDvq
      z6hS^f%E;3?^9<X9HTV_CenaW<jytWIxDAvIf>0D6%3|N8&15Lmu1~3Cg@#k7E99cW
      zqjS+T?0+r#-!$ouBq03-^$my>SfsI*rkNcX@_dUj(HV)ig#!0LQ8s?L!Ru=}lb7_g
      z#TKL&V%&eON-;Hgb5c(J=r<4)_1oy`V99OzV(+gagOhBTAQG^b>IiLOb?5V^P_*?@
      z<qexwi={QWmkEMBwrGEa<~!2UnXI8wGi+>?nrG`KNW4qunfdz;*K@`j<yZ5%=>*7X
      zKUkW6%Zk1-A+a>s-kGS-cCsLhF~dz09g(<E;o=+mC!N9>l=8DmvQ|r3Q>ZcY5(ho0
      z7z}je6Di~4-pO)Q_Xxa`Nx|Rp^aRXF5^zDv)aSFgJl7(2d9c8RR53<cnIo;GEM2WH
      z1#k~8BnE>^!h}Q&goLGp?@0+u!r&rOaJY94ZP9-K9GtA|Y`p#gL}BntjF5p4TuNA6
      z>YmU)0e2J}KV1Tt{;u%I$p-0R?rIGvSUFi(vuik*+gj^en_GFg^jZHs?Eo}Xbd)O;
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/eggplant/jquery-ui.css b/bower_components/jquery-ui/themes/eggplant/jquery-ui.css
      deleted file mode 100644
      index 03546dae28..0000000000
      --- a/bower_components/jquery-ui/themes/eggplant/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=30273a&bgTextureHeader=highlight_soft&bgImgOpacityHeader=25&borderColorHeader=231d2b&fcHeader=ffffff&iconColorHeader=a8a3ae&bgColorContent=3d3644&bgTextureContent=gloss_wave&bgImgOpacityContent=30&borderColorContent=7e7783&fcContent=ffffff&iconColorContent=ffffff&bgColorDefault=dcd9de&bgTextureDefault=highlight_soft&bgImgOpacityDefault=100&borderColorDefault=dcd9de&fcDefault=665874&iconColorDefault=8d78a5&bgColorHover=eae6ea&bgTextureHover=highlight_soft&bgImgOpacityHover=100&borderColorHover=d1c5d8&fcHover=734d99&iconColorHover=734d99&bgColorActive=5f5964&bgTextureActive=highlight_soft&bgImgOpacityActive=45&borderColorActive=7e7783&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=fafafa&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=ffdb1f&fcHighlight=333333&iconColorHighlight=8d78a5&bgColorError=994d53&bgTextureError=flat&bgImgOpacityError=55&borderColorError=994d53&fcError=ffffff&iconColorError=ebccce&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #dcd9de;
      -}
      -.ui-widget-content {
      -	border: 1px solid #7e7783;
      -	background: #3d3644 url("images/ui-bg_gloss-wave_30_3d3644_500x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #231d2b;
      -	background: #30273a url("images/ui-bg_highlight-soft_25_30273a_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #dcd9de;
      -	background: #dcd9de url("images/ui-bg_highlight-soft_100_dcd9de_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #665874;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #665874;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #d1c5d8;
      -	background: #eae6ea url("images/ui-bg_highlight-soft_100_eae6ea_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #734d99;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #734d99;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #7e7783;
      -	background: #5f5964 url("images/ui-bg_highlight-soft_45_5f5964_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #7e7783;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffdb1f;
      -	background: #fafafa;
      -	color: #333333;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffdb1f;
      -	background: #fafafa;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #333333;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #994d53;
      -	background: #994d53;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_a8a3ae_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_734d99_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_8d78a5_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ebccce_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_8d78a5_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -4px -4px 4px #aaaaaa;
      -	box-shadow: -4px -4px 4px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/eggplant/jquery-ui.min.css b/bower_components/jquery-ui/themes/eggplant/jquery-ui.min.css
      deleted file mode 100644
      index 200c493e44..0000000000
      --- a/bower_components/jquery-ui/themes/eggplant/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=30273a&bgTextureHeader=highlight_soft&bgImgOpacityHeader=25&borderColorHeader=231d2b&fcHeader=ffffff&iconColorHeader=a8a3ae&bgColorContent=3d3644&bgTextureContent=gloss_wave&bgImgOpacityContent=30&borderColorContent=7e7783&fcContent=ffffff&iconColorContent=ffffff&bgColorDefault=dcd9de&bgTextureDefault=highlight_soft&bgImgOpacityDefault=100&borderColorDefault=dcd9de&fcDefault=665874&iconColorDefault=8d78a5&bgColorHover=eae6ea&bgTextureHover=highlight_soft&bgImgOpacityHover=100&borderColorHover=d1c5d8&fcHover=734d99&iconColorHover=734d99&bgColorActive=5f5964&bgTextureActive=highlight_soft&bgImgOpacityActive=45&borderColorActive=7e7783&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=fafafa&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=ffdb1f&fcHighlight=333333&iconColorHighlight=8d78a5&bgColorError=994d53&bgTextureError=flat&bgImgOpacityError=55&borderColorError=994d53&fcError=ffffff&iconColorError=ebccce&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #dcd9de}.ui-widget-content{border:1px solid #7e7783;background:#3d3644 url("images/ui-bg_gloss-wave_30_3d3644_500x100.png") 50% top repeat-x;color:#fff}.ui-widget-content a{color:#fff}.ui-widget-header{border:1px solid #231d2b;background:#30273a url("images/ui-bg_highlight-soft_25_30273a_1x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #dcd9de;background:#dcd9de url("images/ui-bg_highlight-soft_100_dcd9de_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#665874}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#665874;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #d1c5d8;background:#eae6ea url("images/ui-bg_highlight-soft_100_eae6ea_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#734d99}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#734d99;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #7e7783;background:#5f5964 url("images/ui-bg_highlight-soft_45_5f5964_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#7e7783;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #ffdb1f;background:#fafafa;color:#333}.ui-state-checked{border:1px solid #ffdb1f;background:#fafafa}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#333}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #994d53;background:#994d53;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_a8a3ae_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_734d99_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_8d78a5_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ebccce_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_8d78a5_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#eee;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-4px -4px 4px #aaa;box-shadow:-4px -4px 4px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/eggplant/theme.css b/bower_components/jquery-ui/themes/eggplant/theme.css
      deleted file mode 100644
      index 64e63d591e..0000000000
      --- a/bower_components/jquery-ui/themes/eggplant/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=30273a&bgTextureHeader=highlight_soft&bgImgOpacityHeader=25&borderColorHeader=231d2b&fcHeader=ffffff&iconColorHeader=a8a3ae&bgColorContent=3d3644&bgTextureContent=gloss_wave&bgImgOpacityContent=30&borderColorContent=7e7783&fcContent=ffffff&iconColorContent=ffffff&bgColorDefault=dcd9de&bgTextureDefault=highlight_soft&bgImgOpacityDefault=100&borderColorDefault=dcd9de&fcDefault=665874&iconColorDefault=8d78a5&bgColorHover=eae6ea&bgTextureHover=highlight_soft&bgImgOpacityHover=100&borderColorHover=d1c5d8&fcHover=734d99&iconColorHover=734d99&bgColorActive=5f5964&bgTextureActive=highlight_soft&bgImgOpacityActive=45&borderColorActive=7e7783&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=fafafa&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=ffdb1f&fcHighlight=333333&iconColorHighlight=8d78a5&bgColorError=994d53&bgTextureError=flat&bgImgOpacityError=55&borderColorError=994d53&fcError=ffffff&iconColorError=ebccce&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #dcd9de;
      -}
      -.ui-widget-content {
      -	border: 1px solid #7e7783;
      -	background: #3d3644 url("images/ui-bg_gloss-wave_30_3d3644_500x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #231d2b;
      -	background: #30273a url("images/ui-bg_highlight-soft_25_30273a_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #dcd9de;
      -	background: #dcd9de url("images/ui-bg_highlight-soft_100_dcd9de_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #665874;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #665874;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #d1c5d8;
      -	background: #eae6ea url("images/ui-bg_highlight-soft_100_eae6ea_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #734d99;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #734d99;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #7e7783;
      -	background: #5f5964 url("images/ui-bg_highlight-soft_45_5f5964_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #7e7783;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffdb1f;
      -	background: #fafafa;
      -	color: #333333;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffdb1f;
      -	background: #fafafa;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #333333;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #994d53;
      -	background: #994d53;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_a8a3ae_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_734d99_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_8d78a5_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ebccce_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_8d78a5_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -4px -4px 4px #aaaaaa;
      -	box-shadow: -4px -4px 4px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-small_25_c5ddfc_40x40.png
      deleted file mode 100644
      index 9d264232e8554047760a20fa5da4f6bdcca3beed..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 400
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6q@4c;uw-~@9pJ<ybT5nE`hgNS{P?E#s>H_Bp9VR7&@vd
      zUol|iR8818<8<qv$;<auDlVPly)rJlZ5RLLjdNbx{(s+Zr#Z|1*OH8X8@5)L_woTb
      z2{-fv4@(>~Xfu2>VbM>+H`6;3d6Fd#OO$zB{3G$r`v_2?Cy~c`Nk$#dZ`CBA1W>7L
      zkcoZUUm?Suhx-4SWuz*1wX^vi1iDYP#5JNMC9x#cD!C{XNHG{07@FxCSn3*@gcurI
      v8Jk!c8t59BSQ!{BU{nBx6q1JA{FKbJO57SQ#?1H&)WG2B>gTe~DWM4f+NXse
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_20_e69700_40x40.png
      deleted file mode 100644
      index 9f11531529678f1c2cb340239f60ff248c6b016c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 475
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6uR%};uw-~@9m9^yoU?~+#Xs?DJkJOs?syT%6LgSYZ+G(
      zgO^Iz{!LE~+o^O_e_MUWV)^=RecSchFaNZY+&lgHuN^+;_+A%o+<)`Z|7Yj^2KX9G
      zjbhlmQgR3TDzD%Ba{pxuuFU!t*WrCNhTXy{^tqZr^DP#&K<xy%t1Q7QSq)~-YOG$c
      z>dW7)E{n9j_q)fediIZ_&*SP%-ahZr=EcFX32a+AeHMisuvx{qEQmY7%#``NLum5y
      zqf7hdip|Ah(#Fe=f{y!j`$08_)-s6NJvz<1;m#YNS5-?~BT7;dOH!?pi&B9UgOP!u
      znXZAQuAxbYp|O>*iIt&&u7Qb_fx!Ys1z?~fX~@k_$xN%nt>I$KjK4q)44$rjF6*2U
      FngFsMtUmw%
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_22_1484e6_40x40.png
      deleted file mode 100644
      index 95bc7e9ed4ebae604bea13d46b98bec03abbb1f0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 467
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6uR!|;uw-~@9m9+yiAS)tq+<1h&CK~pwSSQ(IvLwilgTA
      zg!7XX($1*uzA4Lc^3VHuRcW6--Mks=_x<y4OVdqjUcW7#+hlp}^WzU)aevdx*E{Dn
      zt-QiD!&mnJR|xy-0NFLpTkkShSYQ1mFvC%nY4QqLgZ^7A!7D`#W=A!MuHd`2&?=%m
      zYqx!qanRcKgOw{23(B$>&Me?-^t{41!yUt{yLC||uLNeeyltqwqBg^8ZNtqgOlurU
      zH}G9OXm#c7a@XZ;2XC%qG-%HH$)v>o=x@u*Tq~d#RZCnWN>UO_QmvAUQh^kMk%6I^
      zu7Rblp-G6Lv6Zojm7#&Ifr*uY!2(7FU|=I@$jwj5OsmAL;bP2;zd#KPp00i_>zopr
      E0EX<WZU6uP
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_diagonals-thick_26_2293f7_40x40.png
      deleted file mode 100644
      index 0eecd2e49fe937e110bc5c6c2bd3524a17f45a81..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 464
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6uRQ+;uw-~@9hmmJ|;&2my4+r1$4Mhn_6fef1nkSw}G)y
      zu_M#?WJ#Ko<E8!ELT36sy?HOD@A~a(Ys<<v(|$j<WG$|eJ@?tJ>g)Wwk?pUVR$gJ7
      z;k)(#R|xa#0Nypuy1N+*%CcTMC$N=r_$(?rV6%#QS&(#s*;XcPkhJLrzO8Tmah&te
      zwdFbI&D*>=m>IXq(!ZG(S2`yMZDoEI7;7-~7Q^P1q7jW*39_piOIN)1@AiZ0-};2x
      zsQWSZXJy_eK>w+hxJHzuB$lLFB^RXvDF!10Lo;0iOI<^g5JO`tV-qVw16>0XD+7ZC
      jj0(VzM$(X*pOTqYiCe?Pm>GY88W=oX{an^LB{Ts567rp~
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_highlight-soft_100_f9f9f9_1x100.png
      deleted file mode 100644
      index 4aebfd3d49ddebfc6f932a6de3d1872ad49cc95e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 325
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)>1%T^vIsF7G{O$md|d;BfK%dbYyKa-*%@x+;shjkjpU
      z9MGv`uedY$L$_AsCYd|RZ>P9Ua^c)^PTgyQhVgZWyQ(MEx>F)o+AjUG_3sC!<7cHS
      zJQqH31{$nd;u=wsl30>zm0Xkxq!^4049#>6EOiY{LJW<qj7_Wz4Rj4mtPBhmFe(7O
      fhom7lKP5A*61RqnF*E)GH86O(`njxgN@xNACe30d
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-bg_inset-hard_100_eeeeee_1x100.png
      deleted file mode 100644
      index ee0c7bdc96a0ffa85be1bd273fcf7fe667c773ca..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 314
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)?DBT^vIsE+<!f@9S(#Ob|R=o!s_4eWpaXag9mp50x_?
      zUJ468W>-7L@6+>rhQxbg!+FU+6i<FgHa_gHsm6AYu|%C=-y)$JSxJ}OK+{x9Tq8<S
      z5=&C8l8aJ-6oZk0p_#6MrLLh#h@r8Sv5A$Tfv$mxm4U$mMg^dskTm4xr(~v8;?{66
      SX2xHj1_n=8KbLh*2~7aGUt3uK
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_0a82eb_256x240.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_0a82eb_256x240.png
      deleted file mode 100644
      index 243d857227c1b439edffecebb7cdb8972b802695..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      Lo|$fiHYWbR$;gbA
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_0b54d5_256x240.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_0b54d5_256x240.png
      deleted file mode 100644
      index 37c7143a0972d7bbecb2682a35cb9b89f9f89882..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pg$_FYzw`of2mk;8
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_5fa5e3_256x240.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_5fa5e3_256x240.png
      deleted file mode 100644
      index 690a3b5a322b49cfe957843e2932a4046d6c27ed..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MP}fwaQVSjTUrpb+SO5S3
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_fcdd4a_256x240.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_fcdd4a_256x240.png
      deleted file mode 100644
      index bcc357ee9c8aba46c1525ceb8556b1f9ef1b4dc8..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYse?}VFYT+({{R30
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/excite-bike/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/excite-bike/jquery-ui.css b/bower_components/jquery-ui/themes/excite-bike/jquery-ui.css
      deleted file mode 100644
      index edd1b91afe..0000000000
      --- a/bower_components/jquery-ui/themes/excite-bike/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=diagonals_thick&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=diagonals_thick&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=diagonals_thick&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=diagonals_small&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=diagonals_thick&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #ffffff;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #eeeeee url("images/ui-bg_inset-hard_100_eeeeee_1x100.png") 50% bottom repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #cccccc;
      -	background: #f9f9f9 url("images/ui-bg_highlight-soft_100_f9f9f9_1x100.png") 50% 50% repeat-x;
      -	color: #e69700;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #e69700;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #ffffff;
      -	background: #1484e6 url("images/ui-bg_diagonals-thick_22_1484e6_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #2293f7;
      -	background: #2293f7 url("images/ui-bg_diagonals-thick_26_2293f7_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #e69700;
      -	background: #e69700 url("images/ui-bg_diagonals-thick_20_e69700_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #e69700;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffffff;
      -	background: #c5ddfc url("images/ui-bg_diagonals-small_25_c5ddfc_40x40.png") 50% 50% repeat;
      -	color: #333333;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffffff;
      -	background: #c5ddfc;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #333333;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #e69700;
      -	background: #e69700 url("images/ui-bg_diagonals-thick_20_e69700_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_0a82eb_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_5fa5e3_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_0b54d5_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_fcdd4a_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 3px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #e6b900;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 6px 6px 0px #e69700;
      -	box-shadow: 6px 6px 0px #e69700;
      -}
      diff --git a/bower_components/jquery-ui/themes/excite-bike/jquery-ui.min.css b/bower_components/jquery-ui/themes/excite-bike/jquery-ui.min.css
      deleted file mode 100644
      index dea16e15b6..0000000000
      --- a/bower_components/jquery-ui/themes/excite-bike/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=diagonals_thick&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=diagonals_thick&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=diagonals_thick&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=diagonals_small&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=diagonals_thick&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:segoe ui,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:segoe ui,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #fff}.ui-widget-content{border:1px solid #aaa;background:#eee url("images/ui-bg_inset-hard_100_eeeeee_1x100.png") 50% bottom repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #ccc;background:#f9f9f9 url("images/ui-bg_highlight-soft_100_f9f9f9_1x100.png") 50% 50% repeat-x;color:#e69700;font-weight:bold}.ui-widget-header a{color:#e69700}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #fff;background:#1484e6 url("images/ui-bg_diagonals-thick_22_1484e6_40x40.png") 50% 50% repeat;font-weight:bold;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #2293f7;background:#2293f7 url("images/ui-bg_diagonals-thick_26_2293f7_40x40.png") 50% 50% repeat;font-weight:bold;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #e69700;background:#e69700 url("images/ui-bg_diagonals-thick_20_e69700_40x40.png") 50% 50% repeat;font-weight:bold;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#e69700;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fff;background:#c5ddfc url("images/ui-bg_diagonals-small_25_c5ddfc_40x40.png") 50% 50% repeat;color:#333}.ui-state-checked{border:1px solid #fff;background:#c5ddfc}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#333}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #e69700;background:#e69700 url("images/ui-bg_diagonals-thick_20_e69700_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_0a82eb_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_5fa5e3_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_0b54d5_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_fcdd4a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#e6b900;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:6px 6px 0 #e69700;box-shadow:6px 6px 0 #e69700}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/excite-bike/theme.css b/bower_components/jquery-ui/themes/excite-bike/theme.css
      deleted file mode 100644
      index 948f54b8f9..0000000000
      --- a/bower_components/jquery-ui/themes/excite-bike/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=f9f9f9&bgTextureHeader=highlight_soft&bgImgOpacityHeader=100&borderColorHeader=cccccc&fcHeader=e69700&iconColorHeader=5fa5e3&bgColorContent=eeeeee&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=0a82eb&bgColorDefault=1484e6&bgTextureDefault=diagonals_thick&bgImgOpacityDefault=22&borderColorDefault=ffffff&fcDefault=ffffff&iconColorDefault=fcdd4a&bgColorHover=2293f7&bgTextureHover=diagonals_thick&bgImgOpacityHover=26&borderColorHover=2293f7&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=e69700&bgTextureActive=diagonals_thick&bgImgOpacityActive=20&borderColorActive=e69700&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=c5ddfc&bgTextureHighlight=diagonals_small&bgImgOpacityHighlight=25&borderColorHighlight=ffffff&fcHighlight=333333&iconColorHighlight=0b54d5&bgColorError=e69700&bgTextureError=diagonals_thick&bgImgOpacityError=20&borderColorError=e69700&fcError=ffffff&iconColorError=ffffff&bgColorOverlay=e6b900&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=e69700&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=20&thicknessShadow=0px&offsetTopShadow=6px&offsetLeftShadow=6px&cornerRadiusShadow=3px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #ffffff;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #eeeeee url("images/ui-bg_inset-hard_100_eeeeee_1x100.png") 50% bottom repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #cccccc;
      -	background: #f9f9f9 url("images/ui-bg_highlight-soft_100_f9f9f9_1x100.png") 50% 50% repeat-x;
      -	color: #e69700;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #e69700;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #ffffff;
      -	background: #1484e6 url("images/ui-bg_diagonals-thick_22_1484e6_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #2293f7;
      -	background: #2293f7 url("images/ui-bg_diagonals-thick_26_2293f7_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #e69700;
      -	background: #e69700 url("images/ui-bg_diagonals-thick_20_e69700_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #e69700;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffffff;
      -	background: #c5ddfc url("images/ui-bg_diagonals-small_25_c5ddfc_40x40.png") 50% 50% repeat;
      -	color: #333333;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffffff;
      -	background: #c5ddfc;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #333333;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #e69700;
      -	background: #e69700 url("images/ui-bg_diagonals-thick_20_e69700_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_0a82eb_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_5fa5e3_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_0b54d5_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_fcdd4a_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 3px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 3px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #e6b900;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 6px 6px 0px #e69700;
      -	box-shadow: 6px 6px 0px #e69700;
      -}
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-bg_glass_65_ffffff_1x400.png b/bower_components/jquery-ui/themes/flick/images/ui-bg_glass_65_ffffff_1x400.png
      deleted file mode 100644
      index 520d5047fbad15364515ab429a9159786548d642..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 265
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?O(Kg=CK)
      zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadQ&
      zFY)wsWq-iQ$E(Eo@a4(vKp{a-7sn8d^T`<r60M61L>@ITOwBmKc-drQCQwqf#5JNM
      zC9x#cD!C{XNHG{07@FxCSn3*@gcurI8Jk!E*#<z;;HPma4~mA|{FKbJO57Sc^6qW`
      PYGCkm^>bP0l+XkKUO_|M
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png b/bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_100_f6f6f6_1x100.png
      deleted file mode 100644
      index a0d8f0eb22e2e553892d61548499e9f6675ad54c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 330
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ipOVba4!kxV-n=M$QHU3D$>?brr7ZJ&4hpxxZ)WS}~!5
      zJ{7e^V%x4YuD7*V=Xt?JNc*eU?1&>ivKs9LhcqrFA1ds75?hh@q)(*fzfh2W&)U5D
      zJu%WUEiLt8uYsnkmbgZgq$HN4S|t~y0x1R~14A=i14~^)lMq8=D`OKYAlm>)8vHa)
      f<w4Pqo1c=IR*73fN8a5HKn)C@u6{1-oD!M<p_FBZ
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png b/bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_25_0073ea_1x100.png
      deleted file mode 100644
      index ba2ede19a0a7ea4138e4d72b912a4b6472057ff3..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 393
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!wNr;B5V#`&ic47m;kFgQDJv#MrWK5yZFj&CAy2V$?!
      zJ8=63SKNW6v35?=|G8?M<Lhh=tzu?f?(XEF5RtnoD@KT+VgEtSaGMp!vekDvb~dhy
      zRSK+r{^I2!NhMRoJqqe2Q|8<`cg0|4hNkAi#eH^<omkWR=6gJ3RoYwJ_wVjYsn3zs
      zucZYG4*b2X|JPz(foVcxf$8&EK!>T8xJHzuB$lLFB^RXvDF!10Lo;0iOI<^g5JO`t
      qV-qVN+W<%!{4`GGLD7(#pOTqYiCaTQ-rWsA4Gf;HelF{r5}E)IS%vff
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png b/bower_components/jquery-ui/themes/flick/images/ui-bg_highlight-soft_50_dddddd_1x100.png
      deleted file mode 100644
      index 8a528ef84082cb5498e16ac490569df7a2882304..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 339
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4it*^ba4!kxV-n=US5X)iMEUC>)kvT8a7HCbZ|?Uwwp<`
      zI^v+{e_6F3It!-FVdP8K`f*e>+x4*EDVgeX*EWl;k<C_H9U&BXR_27)GWRP#qAhB4
      zvRjjTQVz%8=GUKjU2e_ZoyJ~3Yg9{IBT7;dOH!?pi&B9UgOP!unXZAQuAxbYp|O>*
      pi4~A-03;258mIE0Xvob^$xN%nt)V0D?gpR+22WQ%mvv4FO#mr0XmkJo
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-icons_0073ea_256x240.png b/bower_components/jquery-ui/themes/flick/images/ui-icons_0073ea_256x240.png
      deleted file mode 100644
      index 375b0e3178ce3a4b2b33b0920afafa31f9b52190..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M);HIy&_T!l7g0@v{r~^~
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-icons_454545_256x240.png b/bower_components/jquery-ui/themes/flick/images/ui-icons_454545_256x240.png
      deleted file mode 100644
      index e6e41cd07813ccd9c797d487fd183d318827c5b1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7090
      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
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-icons_666666_256x240.png b/bower_components/jquery-ui/themes/flick/images/ui-icons_666666_256x240.png
      deleted file mode 100644
      index 4bdf1575e3bb0cbe593c8f3bdf278efcc8dc2770..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7111
      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
      G!~P$>Wmhu*
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-icons_ff0084_256x240.png b/bower_components/jquery-ui/themes/flick/images/ui-icons_ff0084_256x240.png
      deleted file mode 100644
      index d79c1ee521a1b0fa1fdadd0c6a290e17a336b593..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M);HIy&_T!l7Z9$HrvLx|
      
      diff --git a/bower_components/jquery-ui/themes/flick/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/flick/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/flick/jquery-ui.css b/bower_components/jquery-ui/themes/flick/jquery-ui.css
      deleted file mode 100644
      index 91a513e934..0000000000
      --- a/bower_components/jquery-ui/themes/flick/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=2px&bgColorHeader=dddddd&bgTextureHeader=highlight_soft&bgImgOpacityHeader=50&borderColorHeader=dddddd&fcHeader=444444&iconColorHeader=0073ea&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=dddddd&fcContent=444444&iconColorContent=ff0084&bgColorDefault=f6f6f6&bgTextureDefault=highlight_soft&bgImgOpacityDefault=100&borderColorDefault=dddddd&fcDefault=0073ea&iconColorDefault=666666&bgColorHover=0073ea&bgTextureHover=highlight_soft&bgImgOpacityHover=25&borderColorHover=0073ea&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=dddddd&fcActive=ff0084&iconColorActive=454545&bgColorHighlight=ffffff&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=cccccc&fcHighlight=444444&iconColorHighlight=0073ea&bgColorError=ffffff&bgTextureError=flat&bgImgOpacityError=55&borderColorError=ff0084&fcError=222222&iconColorError=ff0084&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #dddddd;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #ffffff;
      -	color: #444444;
      -}
      -.ui-widget-content a {
      -	color: #444444;
      -}
      -.ui-widget-header {
      -	border: 1px solid #dddddd;
      -	background: #dddddd url("images/ui-bg_highlight-soft_50_dddddd_1x100.png") 50% 50% repeat-x;
      -	color: #444444;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #444444;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #dddddd;
      -	background: #f6f6f6 url("images/ui-bg_highlight-soft_100_f6f6f6_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #0073ea;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #0073ea;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #0073ea;
      -	background: #0073ea url("images/ui-bg_highlight-soft_25_0073ea_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #dddddd;
      -	background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ff0084;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #dddddd;
      -	background-color: #ff0084;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ff0084;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #cccccc;
      -	background: #ffffff;
      -	color: #444444;
      -}
      -.ui-state-checked {
      -	border: 1px solid #cccccc;
      -	background: #ffffff;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #444444;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ff0084;
      -	background: #ffffff;
      -	color: #222222;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #222222;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #222222;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_ff0084_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_0073ea_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_0073ea_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ff0084_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_666666_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 2px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 2px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 2px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 2px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -4px -4px 4px #aaaaaa;
      -	box-shadow: -4px -4px 4px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/flick/jquery-ui.min.css b/bower_components/jquery-ui/themes/flick/jquery-ui.min.css
      deleted file mode 100644
      index 93fbdfb48b..0000000000
      --- a/bower_components/jquery-ui/themes/flick/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=2px&bgColorHeader=dddddd&bgTextureHeader=highlight_soft&bgImgOpacityHeader=50&borderColorHeader=dddddd&fcHeader=444444&iconColorHeader=0073ea&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=dddddd&fcContent=444444&iconColorContent=ff0084&bgColorDefault=f6f6f6&bgTextureDefault=highlight_soft&bgImgOpacityDefault=100&borderColorDefault=dddddd&fcDefault=0073ea&iconColorDefault=666666&bgColorHover=0073ea&bgTextureHover=highlight_soft&bgImgOpacityHover=25&borderColorHover=0073ea&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=dddddd&fcActive=ff0084&iconColorActive=454545&bgColorHighlight=ffffff&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=cccccc&fcHighlight=444444&iconColorHighlight=0073ea&bgColorError=ffffff&bgTextureError=flat&bgImgOpacityError=55&borderColorError=ff0084&fcError=222222&iconColorError=ff0084&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Helvetica,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Helvetica,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #ddd}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#444}.ui-widget-content a{color:#444}.ui-widget-header{border:1px solid #ddd;background:#ddd url("images/ui-bg_highlight-soft_50_dddddd_1x100.png") 50% 50% repeat-x;color:#444;font-weight:bold}.ui-widget-header a{color:#444}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #ddd;background:#f6f6f6 url("images/ui-bg_highlight-soft_100_f6f6f6_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#0073ea}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#0073ea;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #0073ea;background:#0073ea url("images/ui-bg_highlight-soft_25_0073ea_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #ddd;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#ff0084}.ui-icon-background,.ui-state-active .ui-icon-background{border:#ddd;background-color:#ff0084}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#ff0084;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #ccc;background:#fff;color:#444}.ui-state-checked{border:1px solid #ccc;background:#fff}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#444}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #ff0084;background:#fff;color:#222}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#222}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#222}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_ff0084_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_0073ea_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_0073ea_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ff0084_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_666666_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:2px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:2px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:2px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:2px}.ui-widget-overlay{background:#eee;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-4px -4px 4px #aaa;box-shadow:-4px -4px 4px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/flick/theme.css b/bower_components/jquery-ui/themes/flick/theme.css
      deleted file mode 100644
      index 7801798707..0000000000
      --- a/bower_components/jquery-ui/themes/flick/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=2px&bgColorHeader=dddddd&bgTextureHeader=highlight_soft&bgImgOpacityHeader=50&borderColorHeader=dddddd&fcHeader=444444&iconColorHeader=0073ea&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=dddddd&fcContent=444444&iconColorContent=ff0084&bgColorDefault=f6f6f6&bgTextureDefault=highlight_soft&bgImgOpacityDefault=100&borderColorDefault=dddddd&fcDefault=0073ea&iconColorDefault=666666&bgColorHover=0073ea&bgTextureHover=highlight_soft&bgImgOpacityHover=25&borderColorHover=0073ea&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=dddddd&fcActive=ff0084&iconColorActive=454545&bgColorHighlight=ffffff&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=cccccc&fcHighlight=444444&iconColorHighlight=0073ea&bgColorError=ffffff&bgTextureError=flat&bgImgOpacityError=55&borderColorError=ff0084&fcError=222222&iconColorError=ff0084&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #dddddd;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #ffffff;
      -	color: #444444;
      -}
      -.ui-widget-content a {
      -	color: #444444;
      -}
      -.ui-widget-header {
      -	border: 1px solid #dddddd;
      -	background: #dddddd url("images/ui-bg_highlight-soft_50_dddddd_1x100.png") 50% 50% repeat-x;
      -	color: #444444;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #444444;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #dddddd;
      -	background: #f6f6f6 url("images/ui-bg_highlight-soft_100_f6f6f6_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #0073ea;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #0073ea;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #0073ea;
      -	background: #0073ea url("images/ui-bg_highlight-soft_25_0073ea_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #dddddd;
      -	background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ff0084;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #dddddd;
      -	background-color: #ff0084;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ff0084;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #cccccc;
      -	background: #ffffff;
      -	color: #444444;
      -}
      -.ui-state-checked {
      -	border: 1px solid #cccccc;
      -	background: #ffffff;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #444444;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ff0084;
      -	background: #ffffff;
      -	color: #222222;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #222222;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #222222;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_ff0084_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_0073ea_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_0073ea_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ff0084_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_666666_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 2px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 2px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 2px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 2px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -4px -4px 4px #aaaaaa;
      -	box-shadow: -4px -4px 4px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_40_db4865_40x40.png
      deleted file mode 100644
      index ffda594b2ef4c907321869f2678ea247410710bc..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 390
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6zcMHaSX}0_xAEa-UbH&m%s>DCtem;<rUdaZY`M@+9IXr
      zIM23shR+Fk%U83_)29W!Hp#K<PmjN^y?yuJ_x$rk&dS?q&a$rwGO7QuBthb^#J>;8
      zH}nM$OB^$3Gkh~)(NDuS(>oG*l7TX19vA;eeDgj6l;}z1v0jo<$Mah?2`B+nDht%l
      zuKhhe`Nzb_ZlJ4FOI#yLQW8s2t&)pUffR$0fuWhMfu*jYNr<7bm9dGHp@FV}iIsuD
      j0!9U3_#kP>%}>cptHiD0V$6)cKn)C@u6{1-oD!M<CA@$C
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_93c3cd_40x40.png
      deleted file mode 100644
      index b89b76ce323b5bfeb8fc23ddb58f0ff74fd8e228..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 391
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6zcYLaSX}0_xAEe&ISh&mcYL|BN`GUx1~6WN1jhTWU3g^
      zaHC=6#)Ih-ZWb)|jEnbLyS8+_?`aGE+dJcr@BR0l-_Pru{G2Is>@74c>kEQR)+F-Q
      z|1dq{ePu(NDUdB3R8+_NSqQ|;jyT*hWlsFzJuV=o)HMS|)#uj@^aFuRpjsb~lRxFp
      zy-sl4YseM{be3v~YeY#(Vo9o1a#1RfVlXl=G}AS()HO5-F*LR^HnB1^&^0izGB8-c
      ir~nKgBn`RwDVb@NxHVjinei8>fx*+&&t;ucLK6Uh2ZCq-
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_50_ff3853_40x40.png
      deleted file mode 100644
      index 1a7669045261bf926d2bb10b36fb743e6f58e9c1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 388
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6zcGFaSX}0_xAEa!3F~Xmy3_HIu9?r<enC!a`ZvL7oidx
      z9qTjpJD=^VJT0+xo7m;t)VG4iOW*y!eOcXg^YVXBw^#pKlJV_}=fMx!)@^@<=HE4Z
      zGrc2`Ct2dKM489MHxl2xj~KKW_9XIHFUct5`K_7+lsIP4CL3e|QVx;;D&^Ch^_Oi<
      zq{CFNzln>1Zc;6AjVMV;EJ?LWE=mPb3`PcqX1WHJx`rkphQ?OLCRT<9x&|gz1_lcl
      i6@a0Gq#-vyB{QuOw}y)`GyVcKFnGH9xvX<aXaWHLErsC#
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_diagonals-small_75_ccd232_40x40.png
      deleted file mode 100644
      index a20fea2946e1e78263d0be60cca751c38abdd244..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 391
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjuJea`?6zcYLaSX}0_x7?OZ-avfOW-?e1;>+}3l0k~8Mw5!t@dN*
      z<m1rQJ$t_8%(Q6V&tBPkuUqXgJDaTYx-#bbzQ6DJ{k+b}&zUmE-a^x|{-S|i;9;q2
      z8`?~LJWl>JJ>z`^$Xt`iD;!i*$NO0b#LSL3+%jcO{NX(=Ag0tc14Y&6*A4W6+WvjA
      zU(FIK_C=!qBG6f?C9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkup&_LI~#LB>6
      j0iyyifRHrg=BH$)RpQogF=obJpaup{S3j3^P6<r_dSHNQ
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-medium_80_ffff38_4x4.png
      deleted file mode 100644
      index db7dfc1e4a851ed67b8ee43bfeead8650bd638b1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 283
      zcmeAS@N?(olHy`uVBq!ia0vp^EFdhv1SHFtuV#Tb>5jgR3=A9lx&I`x0{IHb9znhg
      z3{`3j3=J&|48MRv4KElNN(~qoUL`OvSj}Ky5HFasE6@fg!ItFh?(!cDI3vE_0gAAf
      zc>21sKj7r!RpP36FoPE;B=70s7{YNq`43QCJvTQS&w-W%wg@E;5zdeU9j7%If-Z7?
      zoG7Pb4^*mJ;u=wsl30>zm0Xkxq!^4049#>6EOiY{LJW<qj7_Wz4Rj4mtPBhmFe(5Y
      fjiezrKP5A*61RqnF*E)GH86O(`njxgN@xNArWH+a
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_dots-small_35_35414f_2x2.png
      deleted file mode 100644
      index 632692dd2144bc591414f6a8c259a6763f45bd11..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 281
      zcmeAS@N?(olHy`uVBq!ia0vp^Odu=(BG<aO82~AkbVpxD28NCO+<y{TfqaEzk04(L
      zhAK4%hK3dfhF?ITh8GMBr9ic>5*Qe)W-u^_7tGleXakgBOY(Mi`40x15#R3sMc7L`
      zeO=ifaPsjgaaBB+!3z|U^>lFz;kce`Vp>}A<$HPp7&HZ(;uf9#bSI<66=nrCpM~{6
      zg{md45hW>!C8<`)MX5lF!N|bSOxM6t*U%)y(Adh@#LCb>*TBTez+eHR0?^4w8glbf
      ZGSez?Yq%IQ<1bJHgQu&X%Q~loCIGL2OqBot
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-bg_white-lines_85_f7f7ba_40x100.png
      deleted file mode 100644
      index 9ea5ce72d8ae486d6f425c13188756d306c99be1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 422
      zcmeAS@N?(olHy`uVBq!ia0vp^8bF*Pzyu_<r&;C!DVB6cUq=Rpjs4tz5?O(Kg=CK)
      zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*Lm4+fkO-|qlL
      z*h@TpUD+RS^6@HhRXmu%3lv)A>EaktaqI0RL*53UA&y>JEdQ02<1Snj6`x>J&Q<qg
      z<F%;kTmK&WS9;*~Gn?m?cjD9cq(@ktyHq-D-R6?HOJD26roXiEz8<-Yrb2)7Ub4q-
      zVpZHSb%ia^)v6_~5hW>!C8<`)MX5lF!N|bSOxM6t*U%)y(Adh@#LCb>*TBTez+eHR
      h0x<lLH00)|WTsW()^IUq#$TWY22WQ%mvv4FO#lyNpJ@O9
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_454545_256x240.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_454545_256x240.png
      deleted file mode 100644
      index e6e41cd07813ccd9c797d487fd183d318827c5b1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7090
      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
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_88a206_256x240.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_88a206_256x240.png
      deleted file mode 100644
      index 1760af0a0e5d8b89f8dbc143fcd3a8c27de3f669..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!QrgoKVD2%_{}q?gb_FVX~*@(P6Bix66*1e78u@F;>v3y30$G!;;K
      z6BMN?L}~!(U1?I17k$o`^X>eAbFEpkXU|&K>@|DMp4ofuSeO~m({R!N06=eKsA~xT
      z;OP+9LO@S@qLK0MQvvhTGSvcr>U7#;XR1@3$JNl%6aa8S0D!*@0Eeej_$2@cl?H$n
      z3;>`W0RVeY-uo+Rr;ABgm{{v27sLO*{U1GGS5-B2>QGm#rI{6AYY@dJ`)H=AH{2ty
      z=FW?!_GY+6G}_%G!75e%pG;R*XH$ZgKQ1@qX-jl#<J_zH<sWfr4%3sQcO&CNo!`EW
      zx{L*p>HBiL50u5&xVj<-=St&jdmaoBE4RL6lqOd-bieFw%UV4(2fAD~&;^pIE*PFF
      z)L0`^J?d#VNF#VQ<F~LL05HZG>1tU=jIBG+x}NW1o@z)HkmwfX5b%N`Q`$rYLhY4|
      zoHDgJ`3z}gymOfzKeAk)P?9#Ld_6t)issyw{Wcdn_a-zJ8@@N?Osd-@pW-4<oZGkq
      zv4%Vl0!M{k0$a#P548J~1aBuqt4#pE*KKH1hHQqkasuYilBn%febab*9$}uM6Pcmq
      z3vRH1*+wu+<vS0woDz0cZ8=X%EBMH_&fTmrXN1P1tub{69zwf4<s1MOF!)VD)=H|R
      z4iT8AaXHDQVJ`8xh0trHIg>&N7U548tqQ#!W+1}%7scJmA?887F&6E`3WUC!+Ls5`
      z^znsN@TgVLPs?zm`HHc`1q`f;PQHOdN~jz(#tXl<ej6xz&gG<TpZLJf?uwCGmmUVm
      zL<3Q*<!Y6*CHjpdk6g25H2gdk#qTrDhS8f{zOlaxXlU1>sBhmGEQB!s55{$rx;2*`
      z!&f)CBCzGaL73Q^p2>Hy$I8H}1wnDkX=ddgH<I1wS(5Q<CDJ-x@Y{6rD>%27ME=ze
      z@}w`I5zN5li^$7#R={SKX8l(Xhc;}Bif7B0NowPxi<s@aknc5*F#DoxO<#seWF&P)
      zl^w!)!g3<8c!q84IXl-}mYgohobjt+05vSokN`4`C{C7*$I#^6_`T&S`>$_iYl@Gm
      zzorG~yQtjTs2EyEg4ex(e5qS)HKsq9i>$5lSq6;RBSL(rD$U%(sD&|;Q;Yd-SKp7<
      zb=FyfPLr6XvSjYKI^oDb$)rh^OJLmVnRXu!4S3_RVAgy=>(5)veIqkL(Q)hfEVM2&
      zRf3$Jm43-*Q5f^LvL-&I^OA}rsXhcooir&oyv#()g4x9XVynpf4DnC`N18&Lbv7G8
      zKST!a87|1)l>+4u>BOcaXvD?TIOJ<cTi6m5mSL1pQsXW9CSGT}Zh}9yriq;aVuPH5
      zvbD<X-&DtpZ+7ec#SW+E5$j?aP2|-POP8iJy?T^acGFXGYb9x^-yZV1b|^+=@R0|+
      zv?na=_`K6Pxb~)gSvBkCgMzvaXhpLiR5~GnIU0uqZ{|B7gIcB?1R^!KTWbrPH*8*$
      z594pWm#9yv%*Uf9u*?~@?aou7=4xHT{td%u%eF#}5koDPWnS8FFjpj^yXvXpd!AYK
      z*Div1hC6SQ!f}>XsYnTw-1KH$2}_&enhfvVLV%aIy`kg!p!1+;q^kf^Qz8SHFv5Mj
      zYQWCK?$Gil&XQB_?c{0pNCZ$H)V_SKbR4p?IeZNtn%lM0JVXlMDJik66w$3z)FBSK
      z$IYI7>O&(+llb{SDq#qMjd7lYc*6GFi9ovJ(l)NFg*l%ChBk_4?zd!K%|*8$s{C3)
      z;w|~CAY10ncP0nkmT<U4b3nvxf!@FZq6jkB7ErIW7@j<Tl9T4gz@t(wE?-uA21RYl
      z(6jU5IJA%sNeMFfEfVWvgOF$u_1k(a`yc7nWv}oDOL7BAB}p)>-uV;$KW9&hU3OmB
      z?d4*NY({-e*%ZC|qP~t(ni8bo{90zk{mWf<g*;<4Dw1VdZLjm5C7fxnoH)ynBb4&;
      ztYMtJAhGusZ}48qG`%)WomacL=IHF3p&*~7@tsGX{5*Z@j4N-dpX<N?b8&-UTRajs
      zG9s4AE>z2w%OlzU>kW+8&5a3v4sb7qPR^!j;mdJO#W$W7)dHh2;dc2ILBK7g=_p!h
      z@b&l46nJ7QEExbB;Bf?N19kykq)^Ek!RR20yce}m1Dt~#7I9WA0O$+yIJHYD{R&`U
      z^RHAVPT2K^uzMHM!+U=~1kuYBDWO(*(Tu}fMfm2^6<UP|(>8DL$T;-e#%d_Oyo!<t
      zT-CI95q~*+_7iW=3F;z5jyEvwc#5?rrLxcnKSWu%7d{CS_z~ZDU*HHy<4ii~YFDRj
      zZFWPiq$5Sh3NY3OJba{QV$r`mqGt$sFveumb3hp1RLqM2xk<ZsKJL6YE@(gy=-ZR1
      zEN&$wB@s+B?a;NFT%Q7Q2-cche8-t@32t<ocf0E_cc+=PbqpO3u5KsnUa)|`Zv)a2
      znBv`irUC2yE1*m8twg{F{2mi`$R@+_l}i=oYLeFd#R_x1PBY9N5ayAG1>sbv7fcrt
      z@t^%F%PMxDB>EYk8aO2O+MYc4d66V0d$I(t2*L~<)iY_brO{^M<KwQEGukOi4z!QD
      zay_oNtgQORzM_ce@RI!Z4pr}7A1CjyHm;5VwNKJvISk>Otm$Q{Z*8f@P4B9g{V=ks
      z#hQlMWF;IZESqmcSA6vHHIw?-tvI6DD-Y$L*SmNxX^ipvKMn<J@@aVwQ%sy%tlrHk
      zKx?WX-@RqkbE|`?Y_fWf2E8)GJ*E5$*2`wY;y0Ha@C~}L^YxN%$e)w~i=A+&JQWW}
      z41ddBP?Bt9p<L!P@q9^j!oe$Lww8|Vbz2%&9kyr3dnA8>mt^zO3I^@@HJf1npq^Pb
      z&r<L8cO&9#rr0i|hz&IpxF0YT8#E_mulT7X+OuBM5fZ}~o8c7ONh3B|*rR-qQN0a3
      zHUGkJtuM+aa5GG@I1&T9Y4uS{bj`XCS3Ac?cubW+wboWhs@=%=$}RalL6X!z%d*Yh
      zRDv~>AZ6IL7S-V2WtHl$@fx62j1;ydy*Gy~58o_fm_PeMMIc}4md^{3roJ$0WIBbN
      zh?`$v$<VG|vF?pc=>IXgxYT)D<^%0-NxmmLF2}}EOFV?M4a+AwoiVUPmEI1F2%CPR
      zA)*J-p-WlNy=?^C=Z*>X$F2vai$%6n1cWO@`b?>}C87mgw>KOl#m56jRA0dmkVvgp
      zjPKJ2GW0f7uO{tUp)bgsso*V2R4wbfL|d%MNU|z#si!35k%gQl0udQ=n!A~vDP}|g
      zAE}xey_i|*0rx<@aSiZ;uz4AIM@Hn6jsxl)k-7e{(tO-E3`U}l_a__JJOkDHbIJRG
      zI*rn=uB#}!MP6KW>Ob&uu0A^xeW;avv7{<<I{RQS3fA*2ioN;x=gUeG^GaXAPz(Ne
      zeuTb0oH1bH#c(f?KE%$&&<$6FoO(VjpEwwF(1~fK%((EHxI4JA`p3IrjGDF+_8Q3*
      zTa4=|Qb{%OqO<{zvHXhem+WlXUiR@jbeq6caUoSE18on3?`Cgx2HWp>o*`V9wANmB
      zJXWGdvuy1urE|yrdb`nYf!6r8!6{6*tG|-}%teOgLWH5-JL`XZoK&q=Ws>pKK9vkg
      z_15L5VLKyelU<VCaC59UE1`VX{L8Tg@i4&ZxXgr;H~cL82RhNNnMke2fu<^uEnp!+
      zgjk{+qoab0+b^5qzd8{Fr9Uatv#s&TY(JyCrRO>6RkiI03)?DSYW}i6-d(x45CdWO
      zQAxexlwVHghoE%>1#r<@7)l$GOW~}>m8SEr(oX|^n(e2YRqQKLgdN72ZS=O*;Z&4{
      z65{!W-*4Ay+eS)Ib%Y^<nnZp`>&H8sK*X6SS+2AZW#oMo(zp-9^K%x5i~7pA%e&!4
      zsh9Ri2pNJH3O(!y7XrDXtxx#jvw6_O?;k%R^Dyuw*Pu!BIL}#*G>Z39ZJx<a{KGtO
      zzQtM&_>g`$I(Z0*rV~pQnRx`oJjWxeCOf2HOeI}SvDc2kEV=jvI`LQYMlU=*b%(BK
      zQg#D>xjN{|_*xI~SY5{1MPr^caaToisl~?NJC_S)#iA#q^;P}U;D4SXlxwoNLCb-e
      zsmyc}F|1TEIUBfie&z@_auPE>Id-l>JhalLJ@x0EC(XX+AGOi3AEbBXFt4gcDvBQz
      zhE{rAZL|ih{UMd|VC7@3PXDUk%<rDv_E#UEwNA{zJ?n4WE#$4prg1X3XEl0jSNJJ=
      zus`ekf}~}J<D>S~Hs6r&EQLBF$PYS#_ENU~oCmj1glqX%r@%`K&&ah;8iuhcyEi3U
      zniOR}*BYW7r#B}|(PoKitv6DJtH_EF%MQ1cTMJPBJVitgMlsjFZ}=Nc1Cr#PLADHc
      zwOsQ9bMs-eP!XrcqS%NEWJH?mJeej4x2S@7J;<5Av*Ej~(Wgtp45y1hX;R%Ll3108
      zX|mOoUv*iP^XEgWGAk)Nzpvfe<^EbDp?2b&8@)8_^EcFVJ308N3nNDG%s1Sw;dF{=
      z!@{1ENzDBP01xXq7^}BvUq-s+?w1~d_JVyuX3oTnzgg5`o}f;(POTQigvJE&>CLnL
      zuJwOb2I=6Say|?CmR|EY%*79r2=G8!T99B%evYy`J~yLb!yygwr<yt6qrZ_KtBDbW
      zD0+e7%vH{`#5FE-^{xu0!yIg$s-7=JGgdih^8CpwW`jE@7r*Nn96EuT8oHiJPqTxu
      zcQk};nha<(7nY(EZ;-$Kgy^m34)kk!iSIL9J}4AG6NW#gJY;soH`~4FU#)v^l*pQv
      za3I6pec-=3udV-P;pnaXKW$Mw6ou|O=YRrF8`(!c(b4p{l_`&J?|$<~Cw;K8C|%#@
      zg0XVn%UT;PtfWQ?+<9-&d$e*nmRw+*ZFB#m;EaVWzEh@o&d1S~v-ANom~JdDG-bJQ
      zLBC5bD5bBl2ZKeV7Tv<rDk0OrwDh#?H%?LpOBt*q$Lvx^iQAVWV;u{6>lXfIPN-YW
      z+)VeEd0*59kMF(z#5=GL)s|J)AH5bZ?r5VDK`ClWz3PU`sChL}+f)(Ev~z;Dc^_}D
      zakY8ITQJ+eJ9TIA9-TE?-;NFH<l*aRa0(k*{Gfz(EH-XBd<(=v2YNyUi^u3S)Vmrw
      zijLLt=STnZqZZqE(}RN4kL@(qJQ4UzM%<{GC36zOaTjVhn@USM>UAVqFf_k^u|VQa
      zn0I57qAXWhG$7BG<d!60#F*MEBE;q{?I^Y&KI0P`As#i@*V4eZGTQ@8aZGVjyn==?
      zVwd4&kB_xZcOvn?ULCn&bl1!h?Y>{)lP}<XguSmY>>G2vh7)>^tMeJRs{{8F|9NS}
      z^&V_!$=D}nzp;nwE5>yX|N4fHPwhEZlH7xvj6e6G9Y3iAfMXb|ldaZ_FnT}}M-0s5
      zHbPv?VS?={Wt)(X9j2KjNkjc$_K7Idza?9BfWTrm3!)(YcKM0c=<VZZf(AcxTyq5)
      zXqsL$qJ-K4-}bLB2il`=G&UUsGYzaY<s5Qyy%=H-W9adDbU3H#xDp%VM|eq<`MbZ8
      z>>x>+Se@P#B@Iy8`#{j^q(7Y=CP|>roZ6)%Cl}07tbfJ}J>rd%I<3zIv3j;xH)pIn
      z$~D;iQ~<KlGK!MYDv~nt)-rM^Ia!pPilnqWN?ICMeCGN8BKQZod3!|uAt*>npK@fZ
      zWu#GZN+?;Ge+eR50ga~wjz1Qx0zI(d&cW`0mRq2UJCBjSv!}bIyR%#5jgRi9UpoL`
      Mq-UmEp^b_EFF(F<w*UYD
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_c02669_256x240.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_c02669_256x240.png
      deleted file mode 100644
      index 8d0692aa4c20799ad1655f634fa34fef1ab56e9f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MSl?W)LI)lHUxzGxX8-^I
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_e1e463_256x240.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_e1e463_256x240.png
      deleted file mode 100644
      index 468aae80232371f8cd24e330afb057d93cb661ee..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MV|{Zyf(|<2zuP_11^@s6
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_ffeb33_256x240.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_ffeb33_256x240.png
      deleted file mode 100644
      index e4a0c7f335395ab288c0082f60ac113a0b900b29..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!QrKte|l1W|e~(o1Ne7ij`Yc?Cl6MF=fY5|kn+@F;>v3y30$G!;;K
      z6BMN?L}~!(U1?I17k$o`^X>eAbFEpkXU|&K>@|DMp4ofuSehF$&~niN0Ki~uq-O;H
      z;OP+9f<sSxqOr;EQvvhRHq!=x>U6qe7pha8*UiYv3;?jg0D!v<0EeejxFrAxlL3Gg
      zGyotU0RTsE-uo-+r;ABin%d}7R^|V{{U1H>;>X&lF9A1<mAN%wXBf>d_h_c6H^MWo
      z=FW?!4(8ZJ6w1Rh!8+C8pG-G57c+u)05&)DX-iCN<J_zH<sbMo$LUGZyOHss&Tn5w
      zUB`mS41GC12P)$1++9(FbESB@o(BWO%B?RMrO8zd-7mY_vQ|&cfv%Sg^?+om3r433
      z4aV3^pJtjGq!l`w@moY60GRN`dfGOTW9yD|Zs)sLrW#TOCA&p91-+q&lr}NJFb8F0
      z=S&?gej_?rpIqk0kE|9bl%$O*KQFJnqB-|v|INkDy$Q|5hVM-|lN$EPr?|+AcOQ2o
      z){qB6sgV(vz!oyX6Xh`_$=3<dZWF}qbsO21A(|nrT!00%Bzk+*z%1T@SA@6dM0RNT
      zf;((rwh_!y{mu(5r-YwXU(VCk4mt9x^DuAB8KL!TYfRmt4yD_katQ<r82zUpYb90E
      zhj8>$d`@y{xNCfFA@mw)&a@DMfd`Pqs=}^^8;bJ(MRB)Es6}vZtYv$#BBAf5&gFqM
      z16*Mhb@VFeuWdBae8oia0vc9Duh76LEnE(o;6&crybY2&=Xz4NPki8Sf5lk6OCOD3
      zriCcga<@v^5&cJ!N3Pj18GRm$7VsTsN9)fn-`L*;G<9l`G`DXI7D8D52jjZR-C9eJ
      zsaH3-BQfQ`LAdyvp2>G{$11?8B|&M+d1mDwcar_*S(3?XWzsrM=-YJjD{3BX$^5Gy
      z6i8n{W0;}q7txpLY=G@7?fS1^P94}574McGv-HMCS8=;}VZUph;SNRFT7Ha`h$xzj
      zDtoxggw;e)@eKRea}MsgEO|YW1=ClfKpI$(5dmZ#QJO3pkEPAK@q5cn?qA=`))XIA
      ze@zQCa8<pxQ8BcTL|yj+@}+LI)r8?-E~>W9cNs9@hz#|msx<cqrx8I<PA%rUUwuDb
      z*I8!+I!~gT%945Tbs|wgQc07nmq7gMnRZ`KP3p#Dp{)6W)}Oan`bK7gWAN+wtaPq3
      zRYF`|mHx?Rk!Xvza;Cne^HNGA={`7GgET2Wyv$6;ir&QiVz0>j4DnP3N1DQ#bvGM9
      ze|QGp8E(kll>(JenZ%|fXynCIJmNK^Eqn<I%P`I;sqqne6R$g7Hz5#L)5O6Du|-Tl
      z*<0oJZ)%{&H@o%zVu#D?h;1>AHtOn#m1|R)em&AVyXh&pwUV^d?*MsSI~1!r_{fvG
      zv?o0L_`LHvxb~)gSuN}4gMzvaXhpLSR3;&TB?gNCZ{|B9f?K8?1*0^1T5AhjHf&#$
      z594pWm#j~z%*P=oFf18%?JiSc7V2HY0S&__tF}VU5hHEaWj?wHFjq9PyXvXZd)`@%
      z*RDc1#yfA5BCuB0sR&7={PbpB32U3unk?VlLV%C2y`kg!pv$0Gl$#)PQz9dnFv4@Z
      zYRJLN;n?yg&XQB_?c{0oNCwgz)V_SKd>p#7IeZNlmfN+{JVXlQEh(|86xFL#(j^Xh
      z;AhW1^`#Y~P5gWyoiGH!#JWsEykL7CL?GR1X&YPC!jjJkLm9`j^jop4=Av5QRsJoZ
      z@mBoSkSz<BJCg%%OE_I)I3W^tKyOe1Q4|qk2WV7U4o{vx$w~8P<W((~P$;WCgQT%z
      z?AiHn99Bq=pah%#7LD_@g-f=G`ER|J`;ScPvUkLTCHaA*k|Y>L|NM!-pR*^;AvZ7L
      z{&KNJE~CDtY>L5S(LmQZO&L;fel4@&{^hQ_!d|hO70I%#cGvmN63#SOO`K)S5l(q|
      z)(Gz)MC|>=7qXW!&7ebD=iP3hH9GrdDA;#teCN?8e=ol}lggVK=Q_~99DWdNi$`Eb
      zM#M8YglpMzd8PV)y@Bz$yEEg?0UpKB$=Nh*TshXc_{P(sT3|Fb!alzu7`UZ89Ze?#
      zzW)B1LY>$OO9sFOYCOTlkVB9UAzZRXFg}PT??rFa0OufwMO+mN0P2DQR{c^+zakja
      z{43R&3wFIB{N9E1h~6I%A=ENOTDVm~EaNa&iF)(t3Y}u4S(^`dWD<66V>Jv{UPVa+
      zu4*~BO1vCC`-w031bGo6&liM0o?`1ssVp?c4N+F^MNGm3f5bQ57d%4Hx{yw~+BIle
      zo83_>=?GD>B8=?;FF)y-c+4-)m>EJIj42uU91y`Z74yMC9@6fek2^1p3mV`AhV~>X
      z%UelFNd&V@dsM9!_opB%oUJAo*Ky`sf;;`@-R?T{-DwsbT_dN1tJ?{?7c3#vw*eVR
      zbn)&!^MK9%70@;0RwCdFevic;vdeOQ<yM2anWlAru|{97(+YP0M0gco!B|zA1+#@j
      z+-LvFvWgujiD3q)1`dh6b|(*hUL=Xjoh(sT1fz$J>Y26J)95mB@%ZcIO!i7r1MQ=3
      z+>a|RtEjzks3;;jz9j#>Lp8eB$H_ZvjjLlo?UQs^4r9b7TY8z=TRW<8v%4B)Ka8zw
      zF=pYmSqTS<%N83k6(7C*%%wkeD~)LNDnJG1^)KE_8e{tYk7L1_LR#L#6jSFG>vyw?
      z(3&d9cON;8-0Bc2+pONBLGKI+FX@1S^|IOU_|0WUT!UWRe7)2g@+ak>VrMKePt_9=
      zE6}nRoFo@jD4#h^JYQ0saPUfny`^J&-Hz5xm;KrC9w|WZCE231f>CFF%{C+;xM$Yg
      ztJG)x-G~Ic8Kw&%YD>cm?gviA1<wgPD19o4@v7Hyg2Xb#WjM!m(u$83_NW|WRBr=M
      zExs^b>x=dc+6<Q}jzYt3T7T3QTeIoI*3R)09#dsdt+f@BYBw^z@<@G8kRtWZvTk!U
      zm0*k{Nf~ynMK!p0S)~SRe1<4hW5sPLpUq*b!#B%lmd}1rQOH;N<@3U%sV_{Lna<%S
      z5*8O&Gjys~Y<lAo`hScrE_L3P{Xq9yivP)u>#<4n5-%Zb!|I7{XDlpHwYLK;%5KnT
      z1n+@&=usB*ZW{yld16BXFzZ3-;!!OXff0&PzEc`)i6|kr?F~mMiSeKjwO24WBue`g
      z)BE&+4E+tYt4X`os0*@ZD)@>L)yn!V(G_bkk*v#G>M03%WMSutAb7@{)^4U(iaAlx
      zSGuM~KX#U8z$1u%Toe2tVo^rkkrn-<>xg_uWT}6wJdgi|Moaeb{bUE5XQ29jE_r`Y
      zw^8QRbyXGjsEe!4{RiGI)n{j74z;r{mQ-a<XCDkk!+O3&b2K0Sd|63iS?MbnYQY`P
      zk1*6nFa=J$815x9gxb3rxnqkEQ_rUr5(k41I?=6^8CO124@Wn)fOvPbanp9fUL(0;
      zi)lSYI;kdJj4tpoMnK8qlD%!)%RT|eZc}PCY-p9~K-<HRyV+ZvAr5<9X9(A&Y;=~L
      zj+GfutXsRv={#}2-fr|;qBOs4aETD^8m#0$bCspN5NV|U&gLIqXEp0p*<>7zZzZF0
      zy-oRP*v<&qW|w3)+#D;;N+{p8_;PGXJPfoxE;Hrgi#SXD1C?msOr+80L{SyU6|fQ^
      z!mQCwG0`E#?U&7PU!4g;GM`i!*w^@Fx1UkoGVq@Cs@e5}g>4lu^#Hja@2*^2h=nlz
      zsH9nO&M&9;hts)(g4mcXG^Gu}t$0@RO4IpQ>8Ald&Hhu~I_?!I(jM)?K6+dGa4K3;
      z8UB33|F>JUT_Yv9I?{+yT{1tk_2V5bAo5JK9CzA?3gW&hY226b`8mtOMFSP=<=u#)
      z)Jyv$xGX^&i5hmI76y4@Y)%BIXY-(m-#>mt<e{mT+=3@9@Lsc=X%wHO+C0;p_=kDm
      ze2a}d@FD$hbn*}qLoc2xI`asMevU&_O?F7bm`l2v;;tQmS@Q7<^b)V;jbC_v>JD4c
      zqU;9!a&y#^^|Kk`wZ4qCk3m0a;;D+^R*#FtbuJgoipNaI7^wNHQ~!C2kZ#EqhAju?
      zX0p>w#PCw3<ZR&5`I#f^$Vu$@<k-0iiLgrB_SBzuo;3TNf7C|Lagg4X!?LOtr6h4s
      z7*^?hwb2H&34l~8fR&HAI|HhIv%GtDJ3wQA&L%Mj`>ellw~((Qo7UOzp7rRhU6H38
      zApvaj3sP1YPLJAG+x$W!vJ~r#AwTE|I!oCGbDliHk#6N*or5kdJR{dWX&A<&?B0}W
      zX;PB=Tx*1Kn%<l+LzyS4x86t@t|BWztUBCNZY@9s@|55`Xr<hMzTt1Q4G5A)2H7gY
      z&1%gb%*}_<K}DS(i(w)w5Rqwe^JLm!?4m0A^&nUN&W7K%W}hA{3pIT#Qj6*~k;JAl
      zOq;Et@~X?aTp%A>m03yI`F-uyF3;B*N%a$#+?b_d-@l=z*U2eBQy4jdW4Yme4XayB
      z7asncOk(LT0C?HX!PtDn`ZCh3cE9uxbQT;6GIJ(o0?eZq^MrJ(b!)XDrnIJzPj8;}
      zcdh@kGDuGis^qhxZs|9lLtp$b2?q~kWP}KI<mX8H<8w2bwwyAcK&rXRJ%$_kaaw30
      zh>|xb!BXWyM_l7ZRqv{zJ1oHFsp|Ps6jPO>7Vn?DVm73Ma`C&q;h{6ArK#to{4_fR
      zb4OFew#krIYhfuS@do+pPl*0{?m)kmx5Pf<<%2>&6k+&d%0m`6T(kX){?)n%M~Q4{
      z2?w$q-3I}y^Ew7^7LMLJ{L>cAOHu5ua|tZ)vXy)E6BWaNU77Oy_U^YpOwtEy%hL6I
      zZWtTSy{xs-!b%#1;GOrDy+<pT<H!Xj*|zsj3eH&C;W}lT=X{;)xJn<efaxX*!c$fo
      z7Yw@OgH!q%d(aqoYSAqmoiZW~OiNGOe&Z}{xRk**a?Bxpl(>C4D$c2(w{GEY=7hY}
      z%)@+tneRny$oSs-PkaOWP#rl9gVAe&<4(4!k(8pg)T{2;jG9*ywM`Wv%sVGI+xPJf
      znpc}=e1x(MeNuN8@6p?^_wCpsPaeLG0jDrw#Scp8#^UhP5nCVzI?xj)R6NF@snONY
      zQFN@HKR^1PAGMgqo1PSeL0qSW)`{R}GW<r(ESZZCfxS?})l^#2QLii6f~Nibixm=o
      z!m=Be6m7NAq6vAnB)=pHBgWQV5hXTv=|r;!^P8O53iGPNzLo~PmE9g-#xvum_=JpN
      z#V=EvKR(tz-HGG_2MxrE@m+H(l*fLFZ@!?<5$3+)uwU%;8ZPKP?#^dCZjL-p0_J6u
      z)_X8vC1aml{Kp=yub9+5{OcQje)Z?vN%9YFGX30#cKoCg1dd^B&UV@}BB%i^EHNmP
      z#~6MwhZ(l3oNY=zcARFBA`SI}*(YMm|CVgkfr5+Otnh;P+vO+PqqmP^2$}*c_~r@}
      z&@{bhObN3CzU^OM4st-<XlyzNVIEj($~olXelf%m&e-Go=x|QWX(cY!pYW0@^LKwG
      z*-?r#u{ymgMjD{B_kp1INq;&6Op3seIkihkPA-_E*!+wae#D2DKCRD%F#2{FcNdHY
      z(k;Z}Q~+`^vPx1is#3BFHnQ?ac{!xKs+5cZQbq<_eCGN8A_N4v`*=qEAt*}8oN{Ds
      zWMz=@%1Alce+i=6fsLmG&Oa8cgFG=2E+HO(wtJAP2d{B}i<gI$hl_jEjgKCuUpoL`
      MtZ%MYp@WY9FJRrz761SM
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/hot-sneaks/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.css b/bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.css
      deleted file mode 100644
      index 7b2b56f227..0000000000
      --- a/bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Gill%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=4px&bgColorHeader=35414f&bgTextureHeader=dots_small&bgImgOpacityHeader=35&borderColorHeader=2c4359&fcHeader=e1e463&iconColorHeader=e1e463&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=2c4359&iconColorContent=c02669&bgColorDefault=93c3cd&bgTextureDefault=diagonals_small&bgImgOpacityDefault=50&borderColorDefault=93c3cd&fcDefault=333333&iconColorDefault=ffffff&bgColorHover=ccd232&bgTextureHover=diagonals_small&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=db4865&bgTextureActive=diagonals_small&bgImgOpacityActive=40&borderColorActive=ff6b7f&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffff38&bgTextureHighlight=dots_medium&bgImgOpacityHighlight=80&borderColorHighlight=b4d100&fcHighlight=363636&iconColorHighlight=88a206&bgColorError=ff3853&bgTextureError=diagonals_small&bgImgOpacityError=50&borderColorError=ff6b7f&fcError=ffffff&iconColorError=ffeb33&bgColorOverlay=f7f7ba&bgTextureOverlay=white_lines&bgImgOpacityOverlay=85&opacityOverlay=80&bgColorShadow=ba9217&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=20&thicknessShadow=10px&offsetTopShadow=8px&offsetLeftShadow=8px&cornerRadiusShadow=5px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Gill Sans,Arial,sans-serif;
      -	font-size: 1.2em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Gill Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #93c3cd;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #ffffff;
      -	color: #2c4359;
      -}
      -.ui-widget-content a {
      -	color: #2c4359;
      -}
      -.ui-widget-header {
      -	border: 1px solid #2c4359;
      -	background: #35414f url("images/ui-bg_dots-small_35_35414f_2x2.png") 50% 50% repeat;
      -	color: #e1e463;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #e1e463;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #93c3cd;
      -	background: #93c3cd url("images/ui-bg_diagonals-small_50_93c3cd_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #333333;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #333333;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #999999;
      -	background: #ccd232 url("images/ui-bg_diagonals-small_75_ccd232_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #212121;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #212121;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #ff6b7f;
      -	background: #db4865 url("images/ui-bg_diagonals-small_40_db4865_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #ff6b7f;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #b4d100;
      -	background: #ffff38 url("images/ui-bg_dots-medium_80_ffff38_4x4.png") 50% 50% repeat;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #b4d100;
      -	background: #ffff38;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ff6b7f;
      -	background: #ff3853 url("images/ui-bg_diagonals-small_50_ff3853_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_c02669_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_e1e463_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_88a206_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffeb33_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #f7f7ba url("images/ui-bg_white-lines_85_f7f7ba_40x100.png") 50% 50% repeat;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 8px 8px 10px #ba9217;
      -	box-shadow: 8px 8px 10px #ba9217;
      -}
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.min.css b/bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.min.css
      deleted file mode 100644
      index 6b99239df4..0000000000
      --- a/bower_components/jquery-ui/themes/hot-sneaks/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Gill%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=4px&bgColorHeader=35414f&bgTextureHeader=dots_small&bgImgOpacityHeader=35&borderColorHeader=2c4359&fcHeader=e1e463&iconColorHeader=e1e463&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=2c4359&iconColorContent=c02669&bgColorDefault=93c3cd&bgTextureDefault=diagonals_small&bgImgOpacityDefault=50&borderColorDefault=93c3cd&fcDefault=333333&iconColorDefault=ffffff&bgColorHover=ccd232&bgTextureHover=diagonals_small&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=db4865&bgTextureActive=diagonals_small&bgImgOpacityActive=40&borderColorActive=ff6b7f&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffff38&bgTextureHighlight=dots_medium&bgImgOpacityHighlight=80&borderColorHighlight=b4d100&fcHighlight=363636&iconColorHighlight=88a206&bgColorError=ff3853&bgTextureError=diagonals_small&bgImgOpacityError=50&borderColorError=ff6b7f&fcError=ffffff&iconColorError=ffeb33&bgColorOverlay=f7f7ba&bgTextureOverlay=white_lines&bgImgOpacityOverlay=85&opacityOverlay=80&bgColorShadow=ba9217&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=20&thicknessShadow=10px&offsetTopShadow=8px&offsetLeftShadow=8px&cornerRadiusShadow=5px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Gill Sans,Arial,sans-serif;font-size:1.2em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Gill Sans,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #93c3cd}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#2c4359}.ui-widget-content a{color:#2c4359}.ui-widget-header{border:1px solid #2c4359;background:#35414f url("images/ui-bg_dots-small_35_35414f_2x2.png") 50% 50% repeat;color:#e1e463;font-weight:bold}.ui-widget-header a{color:#e1e463}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #93c3cd;background:#93c3cd url("images/ui-bg_diagonals-small_50_93c3cd_40x40.png") 50% 50% repeat;font-weight:bold;color:#333}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#333;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #999;background:#ccd232 url("images/ui-bg_diagonals-small_75_ccd232_40x40.png") 50% 50% repeat;font-weight:bold;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#212121;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #ff6b7f;background:#db4865 url("images/ui-bg_diagonals-small_40_db4865_40x40.png") 50% 50% repeat;font-weight:bold;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#ff6b7f;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #b4d100;background:#ffff38 url("images/ui-bg_dots-medium_80_ffff38_4x4.png") 50% 50% repeat;color:#363636}.ui-state-checked{border:1px solid #b4d100;background:#ffff38}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #ff6b7f;background:#ff3853 url("images/ui-bg_diagonals-small_50_ff3853_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_c02669_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_e1e463_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_88a206_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffeb33_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#f7f7ba url("images/ui-bg_white-lines_85_f7f7ba_40x100.png") 50% 50% repeat;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:8px 8px 10px #ba9217;box-shadow:8px 8px 10px #ba9217}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/hot-sneaks/theme.css b/bower_components/jquery-ui/themes/hot-sneaks/theme.css
      deleted file mode 100644
      index 921bf6f217..0000000000
      --- a/bower_components/jquery-ui/themes/hot-sneaks/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Gill%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=4px&bgColorHeader=35414f&bgTextureHeader=dots_small&bgImgOpacityHeader=35&borderColorHeader=2c4359&fcHeader=e1e463&iconColorHeader=e1e463&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=2c4359&iconColorContent=c02669&bgColorDefault=93c3cd&bgTextureDefault=diagonals_small&bgImgOpacityDefault=50&borderColorDefault=93c3cd&fcDefault=333333&iconColorDefault=ffffff&bgColorHover=ccd232&bgTextureHover=diagonals_small&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=db4865&bgTextureActive=diagonals_small&bgImgOpacityActive=40&borderColorActive=ff6b7f&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=ffff38&bgTextureHighlight=dots_medium&bgImgOpacityHighlight=80&borderColorHighlight=b4d100&fcHighlight=363636&iconColorHighlight=88a206&bgColorError=ff3853&bgTextureError=diagonals_small&bgImgOpacityError=50&borderColorError=ff6b7f&fcError=ffffff&iconColorError=ffeb33&bgColorOverlay=f7f7ba&bgTextureOverlay=white_lines&bgImgOpacityOverlay=85&opacityOverlay=80&bgColorShadow=ba9217&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=20&thicknessShadow=10px&offsetTopShadow=8px&offsetLeftShadow=8px&cornerRadiusShadow=5px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Gill Sans,Arial,sans-serif;
      -	font-size: 1.2em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Gill Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #93c3cd;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #ffffff;
      -	color: #2c4359;
      -}
      -.ui-widget-content a {
      -	color: #2c4359;
      -}
      -.ui-widget-header {
      -	border: 1px solid #2c4359;
      -	background: #35414f url("images/ui-bg_dots-small_35_35414f_2x2.png") 50% 50% repeat;
      -	color: #e1e463;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #e1e463;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #93c3cd;
      -	background: #93c3cd url("images/ui-bg_diagonals-small_50_93c3cd_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #333333;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #333333;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #999999;
      -	background: #ccd232 url("images/ui-bg_diagonals-small_75_ccd232_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #212121;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #212121;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #ff6b7f;
      -	background: #db4865 url("images/ui-bg_diagonals-small_40_db4865_40x40.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #ff6b7f;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #b4d100;
      -	background: #ffff38 url("images/ui-bg_dots-medium_80_ffff38_4x4.png") 50% 50% repeat;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #b4d100;
      -	background: #ffff38;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ff6b7f;
      -	background: #ff3853 url("images/ui-bg_diagonals-small_50_ff3853_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_c02669_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_e1e463_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_88a206_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffeb33_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #f7f7ba url("images/ui-bg_white-lines_85_f7f7ba_40x100.png") 50% 50% repeat;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 8px 8px 10px #ba9217;
      -	box-shadow: 8px 8px 10px #ba9217;
      -}
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png b/bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_100_f5f0e5_1x400.png
      deleted file mode 100644
      index d20d8d98d77ae2ac48ec50047306a42ba6a1436f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 412
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8SH*)Fyg;D^o-U3d9>?FFH{@e<6k&Vt-`6qYi%{<^K^aF67m?Kq
      zFKCJiEo~Ei<9UR&gv&i(ZSUQKZ`RD5yRkQz<LK&rznZ^aTeT7BhD3?BpJoPbD>a&O
      zQ|D&KCp5`=Hd?lZI9|N`%gnX#9REqVydP1grS2T%d8hrOHP=4r$MW9L@C$8yCWov`
      zjcc7Ge`L+$V!1KNW#-Q#I;^iU7W@>?Y)hOW|A{esqr(TG%#!~=x2l%7MwFx^mZVxG
      z7o`Fz1|tJQGhG8qT|<))Lt`sr6DvalT>}#<1A_&O3cyf9(vX{<l9^VCTf@be8GnHq
      O7(8A5T-G@yGywqOaE^BX
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_25_cb842e_1x400.png b/bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_25_cb842e_1x400.png
      deleted file mode 100644
      index 9084a2228a9d2a6ebc5d470994f11f635ea65485..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 393
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8SH*)Fyg;E|PZ!4!kK=F8EAkz35MjA6^XI{9VT(RC99nz)tJ)IB
      z2Rjb5UCo#@&D2!DuR(Q(T1S=+*HKN5j`j2Ec0|^+bTTj$$Q&=+ckcHuD;xJiQ>5=5
      zouyixczP$7;igRr+q_OW9iE%|am_ilk4w(6Eldm&i&nMns$Q3)>k`V9bT(-3h9j-q
      z3m-^q{_kPk_xMjA|CSSq>QjmZLx2ubEpd$~Nl7e8wMs5Z1yT$~28L$329~;pCLxB#
      wR>me)h6cI@CRPRp3m6rEL4>3sH$NpatrE9}i!n3)0yQvry85}Sb4q9e0N*!=D*ylh
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_70_ede4d4_1x400.png b/bower_components/jquery-ui/themes/humanity/images/ui-bg_glass_70_ede4d4_1x400.png
      deleted file mode 100644
      index 528c8a5df2fafddc1100aca8a0a4810616db1fa6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 409
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8SH*)Fyg;G3o-U3d9>?FF-^j(tD8u&Q{cpFRB|S;gg5nNV`9I)X
      zBi4MdZqG5^Qz@G@<Qz{X1n!#bUG84KGwFj!(hvXrKiiN0HnVGGVmM&HbNGkV`f585
      zXBXc6o6B1i#nyBPue&LjcITp?t(~cB(avxEojXzjiwjRSJ!?8XXWa|K>D^mozn+U;
      zvU<m}=@Yj;^1a|<=C$jfqsGFnU-e6P4;$1SXV1HCte$l*{0q>bswJ)wB`Jv|saDBF
      zsX&Us$iUD{*T7QO&?Lmr*vi<%%Fsa9z{JYHU;(27FvyTJ<mRVjrd8tBa4}}aU!VpC
      MPgg&ebxsLQ03vmfW&i*H
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png b/bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_100_f4f0ec_1x100.png
      deleted file mode 100644
      index b5fea91f2bb58037a05f7d2179c78b95f1d24ff7..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 385
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7bw)~>EaloasKUjMZQB0608qT=6~bUuwnJ@QdgYA(8v_u
      zuNuMQ{($QatA9c6<<`4XmOfIvkm1zy>&S|Q)=R!bNHP5R>2f6aqVMH>wx9Q?T<7bV
      zD<(D5Y}U$jky$5Zaur!7FJ0J_xz^|4mpqYEPdmQf-eV`U{a;9IXYKsZWT%W-oBn)z
      z=KqoDakib$QH95eKnJOoxJHzuB$lLFB^RXvDF!10Lo;0iOI<^g5JO`tV-qVw16>0X
      nD+7ZCj0(V@LDG<$pOTqYiCe?Pm>GY88W=oX{an^LB{Ts5iGzc&
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png b/bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_65_fee4bd_1x100.png
      deleted file mode 100644
      index 182fb24842b4cde3ba869d0bb7143e54b11b1f35..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 372
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7bsNW>EaloasKW3g}h9T5-ty?2Zl381bivbb#P*J7v#ub
      zmTJ(-cqFs1r})mhw!iF*V!j>$^DC0s^4s3NRbcq>d1mA4iXShuxMJV9l)c{R5qCw$
      z&3}>j$;&T}&Q&{?R1)m3wD(r^q`Sv_MD&wYx#oT^`g-*B`}=<s=Q*9WVhyM%iv_wt
      zwZt`|BqgyV)hf9t6-Y4{85o-B8d&NYnuHh{TN#^J85-ysm{=JYEMQash6a*`-29Zx
      Yv`X9>F2>CG3)H~i>FVdQ&MBb@0LE*2K>z>%
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png b/bower_components/jquery-ui/themes/humanity/images/ui-bg_highlight-hard_75_f5f5b5_1x100.png
      deleted file mode 100644
      index dc1a0ef8f386ba1d08ed03d2cb1455352fa09ee0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 381
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7bw)|>EaloasKW3ja*F$5^fI<TVIW3*;NsFx6NFM&&ukh
      zfW@r{7TreY><ZRxe`+}P$2%7nv-qAbd$8e&cbz{AL%m(%jQArbUa%V)tdXvK{Whwr
      zP3_&ro6lZHUb$j;ILO<dzw)7LO;?vzT8qFTLqXYC9asPT_wH?6Tl48;`Tcu;G~*5*
      zvX<TTK{*=e7}XNjh?11Vl2ohYqEsNoU}RuurfXoSYiJT;Xl!L{Vr6KcYhYq!V6cEu
      h0T?Vu8glbfGSez?Yq%IQ<1bJHgQu&X%Q~loCIB#=f8PKA
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png b/bower_components/jquery-ui/themes/humanity/images/ui-bg_inset-soft_100_f4f0ec_1x100.png
      deleted file mode 100644
      index a0d0d2e1fc5390f3b96e643e94a0da11dfe94ed0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 461
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7btYm)5S4F<NVtT3%!{GWe$9NZ(E|&w(xMq9F9$_r&V1A
      zZbyn-7U0hj`_FXyP{I%Ph?Lx?JxWcUCO^e>_$P0_`}S`2{_^)}ALI?X4}N(m-*fV_
      zNhrgI^XC(;r%O*>w&<vy`;B*R5<fN8Ui0Cfm|AOD>#p>7+FQl#uGZDAC5C6t7yM2$
      zmDkpL!OHpW^tzY2r-E-^*PrrzQ$WcF)17)e|6-2Zc_4px>fI$#CCak{=1yVX<ZP-T
      zT)9Z<x9aw_O%pn1{M@*|cz)LejSf-mE17>f*Tg@T{#6}4<)XT^7tnL6C9V-ADTyVi
      zR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkup&_LI~#LB>60iyyin2|K(=BH$)RpQogF=obJ
      Ppaup{S3j3^P6<r_azLz?
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-icons_c47a23_256x240.png b/bower_components/jquery-ui/themes/humanity/images/ui-icons_c47a23_256x240.png
      deleted file mode 100644
      index 10597bccb6553fad08920c4041f4df0b72a85b16..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M);HIy&_T!l7jJ8WeE<Le
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-icons_cb672b_256x240.png b/bower_components/jquery-ui/themes/humanity/images/ui-icons_cb672b_256x240.png
      deleted file mode 100644
      index d46354b864fe539ade2c0f1f9ffdacc4835f93cd..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MSl?W)LI)lHU#$y*O#lD@
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-icons_f08000_256x240.png b/bower_components/jquery-ui/themes/humanity/images/ui-icons_f08000_256x240.png
      deleted file mode 100644
      index b3f11e3e82894ff53564674d32928f4e3d45b646..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pr4BmbzsP5aX8-^I
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-icons_f35f07_256x240.png b/bower_components/jquery-ui/themes/humanity/images/ui-icons_f35f07_256x240.png
      deleted file mode 100644
      index 08e52032ed7010441eea525aab3b5b7096e6235d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NV|{bI3LSL(e*x$=fb9SP
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-icons_ff7519_256x240.png b/bower_components/jquery-ui/themes/humanity/images/ui-icons_ff7519_256x240.png
      deleted file mode 100644
      index d52a40921e763c97a1a346224a0d7e702834eb18..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FU#eXH~;_u
      
      diff --git a/bower_components/jquery-ui/themes/humanity/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/humanity/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/humanity/jquery-ui.css b/bower_components/jquery-ui/themes/humanity/jquery-ui.css
      deleted file mode 100644
      index f48d68686b..0000000000
      --- a/bower_components/jquery-ui/themes/humanity/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cb842e&bgTextureHeader=glass&bgImgOpacityHeader=25&borderColorHeader=d49768&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=f4f0ec&bgTextureContent=inset_soft&bgImgOpacityContent=100&borderColorContent=e0cfc2&fcContent=1e1b1d&iconColorContent=c47a23&bgColorDefault=ede4d4&bgTextureDefault=glass&bgImgOpacityDefault=70&borderColorDefault=cdc3b7&fcDefault=3f3731&iconColorDefault=f08000&bgColorHover=f5f0e5&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=f5ad66&fcHover=a46313&iconColorHover=f08000&bgColorActive=f4f0ec&bgTextureActive=highlight_hard&bgImgOpacityActive=100&borderColorActive=e0cfc2&fcActive=b85700&iconColorActive=f35f07&bgColorHighlight=f5f5b5&bgTextureHighlight=highlight_hard&bgImgOpacityHighlight=75&borderColorHighlight=d9bb73&fcHighlight=060200&iconColorHighlight=cb672b&bgColorError=fee4bd&bgTextureError=highlight_hard&bgImgOpacityError=65&borderColorError=f8893f&fcError=592003&iconColorError=ff7519&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cdc3b7;
      -}
      -.ui-widget-content {
      -	border: 1px solid #e0cfc2;
      -	background: #f4f0ec url("images/ui-bg_inset-soft_100_f4f0ec_1x100.png") 50% bottom repeat-x;
      -	color: #1e1b1d;
      -}
      -.ui-widget-content a {
      -	color: #1e1b1d;
      -}
      -.ui-widget-header {
      -	border: 1px solid #d49768;
      -	background: #cb842e url("images/ui-bg_glass_25_cb842e_1x400.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cdc3b7;
      -	background: #ede4d4 url("images/ui-bg_glass_70_ede4d4_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #3f3731;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #3f3731;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #f5ad66;
      -	background: #f5f0e5 url("images/ui-bg_glass_100_f5f0e5_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #a46313;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #a46313;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #e0cfc2;
      -	background: #f4f0ec url("images/ui-bg_highlight-hard_100_f4f0ec_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #b85700;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #e0cfc2;
      -	background-color: #b85700;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #b85700;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #d9bb73;
      -	background: #f5f5b5 url("images/ui-bg_highlight-hard_75_f5f5b5_1x100.png") 50% top repeat-x;
      -	color: #060200;
      -}
      -.ui-state-checked {
      -	border: 1px solid #d9bb73;
      -	background: #f5f5b5;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #060200;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #f8893f;
      -	background: #fee4bd url("images/ui-bg_highlight-hard_65_fee4bd_1x100.png") 50% top repeat-x;
      -	color: #592003;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #592003;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #592003;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_c47a23_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_f08000_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f35f07_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_cb672b_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ff7519_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_f08000_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/humanity/jquery-ui.min.css b/bower_components/jquery-ui/themes/humanity/jquery-ui.min.css
      deleted file mode 100644
      index 7f8e186810..0000000000
      --- a/bower_components/jquery-ui/themes/humanity/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cb842e&bgTextureHeader=glass&bgImgOpacityHeader=25&borderColorHeader=d49768&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=f4f0ec&bgTextureContent=inset_soft&bgImgOpacityContent=100&borderColorContent=e0cfc2&fcContent=1e1b1d&iconColorContent=c47a23&bgColorDefault=ede4d4&bgTextureDefault=glass&bgImgOpacityDefault=70&borderColorDefault=cdc3b7&fcDefault=3f3731&iconColorDefault=f08000&bgColorHover=f5f0e5&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=f5ad66&fcHover=a46313&iconColorHover=f08000&bgColorActive=f4f0ec&bgTextureActive=highlight_hard&bgImgOpacityActive=100&borderColorActive=e0cfc2&fcActive=b85700&iconColorActive=f35f07&bgColorHighlight=f5f5b5&bgTextureHighlight=highlight_hard&bgImgOpacityHighlight=75&borderColorHighlight=d9bb73&fcHighlight=060200&iconColorHighlight=cb672b&bgColorError=fee4bd&bgTextureError=highlight_hard&bgImgOpacityError=65&borderColorError=f8893f&fcError=592003&iconColorError=ff7519&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Helvetica,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Helvetica,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #cdc3b7}.ui-widget-content{border:1px solid #e0cfc2;background:#f4f0ec url("images/ui-bg_inset-soft_100_f4f0ec_1x100.png") 50% bottom repeat-x;color:#1e1b1d}.ui-widget-content a{color:#1e1b1d}.ui-widget-header{border:1px solid #d49768;background:#cb842e url("images/ui-bg_glass_25_cb842e_1x400.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #cdc3b7;background:#ede4d4 url("images/ui-bg_glass_70_ede4d4_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#3f3731}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#3f3731;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #f5ad66;background:#f5f0e5 url("images/ui-bg_glass_100_f5f0e5_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#a46313}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#a46313;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #e0cfc2;background:#f4f0ec url("images/ui-bg_highlight-hard_100_f4f0ec_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#b85700}.ui-icon-background,.ui-state-active .ui-icon-background{border:#e0cfc2;background-color:#b85700}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#b85700;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #d9bb73;background:#f5f5b5 url("images/ui-bg_highlight-hard_75_f5f5b5_1x100.png") 50% top repeat-x;color:#060200}.ui-state-checked{border:1px solid #d9bb73;background:#f5f5b5}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#060200}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f8893f;background:#fee4bd url("images/ui-bg_highlight-hard_65_fee4bd_1x100.png") 50% top repeat-x;color:#592003}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#592003}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#592003}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_c47a23_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_f08000_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f35f07_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_cb672b_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ff7519_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_f08000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/humanity/theme.css b/bower_components/jquery-ui/themes/humanity/theme.css
      deleted file mode 100644
      index efe59d9d07..0000000000
      --- a/bower_components/jquery-ui/themes/humanity/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=cb842e&bgTextureHeader=glass&bgImgOpacityHeader=25&borderColorHeader=d49768&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=f4f0ec&bgTextureContent=inset_soft&bgImgOpacityContent=100&borderColorContent=e0cfc2&fcContent=1e1b1d&iconColorContent=c47a23&bgColorDefault=ede4d4&bgTextureDefault=glass&bgImgOpacityDefault=70&borderColorDefault=cdc3b7&fcDefault=3f3731&iconColorDefault=f08000&bgColorHover=f5f0e5&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=f5ad66&fcHover=a46313&iconColorHover=f08000&bgColorActive=f4f0ec&bgTextureActive=highlight_hard&bgImgOpacityActive=100&borderColorActive=e0cfc2&fcActive=b85700&iconColorActive=f35f07&bgColorHighlight=f5f5b5&bgTextureHighlight=highlight_hard&bgImgOpacityHighlight=75&borderColorHighlight=d9bb73&fcHighlight=060200&iconColorHighlight=cb672b&bgColorError=fee4bd&bgTextureError=highlight_hard&bgImgOpacityError=65&borderColorError=f8893f&fcError=592003&iconColorError=ff7519&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cdc3b7;
      -}
      -.ui-widget-content {
      -	border: 1px solid #e0cfc2;
      -	background: #f4f0ec url("images/ui-bg_inset-soft_100_f4f0ec_1x100.png") 50% bottom repeat-x;
      -	color: #1e1b1d;
      -}
      -.ui-widget-content a {
      -	color: #1e1b1d;
      -}
      -.ui-widget-header {
      -	border: 1px solid #d49768;
      -	background: #cb842e url("images/ui-bg_glass_25_cb842e_1x400.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cdc3b7;
      -	background: #ede4d4 url("images/ui-bg_glass_70_ede4d4_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #3f3731;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #3f3731;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #f5ad66;
      -	background: #f5f0e5 url("images/ui-bg_glass_100_f5f0e5_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #a46313;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #a46313;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #e0cfc2;
      -	background: #f4f0ec url("images/ui-bg_highlight-hard_100_f4f0ec_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #b85700;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #e0cfc2;
      -	background-color: #b85700;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #b85700;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #d9bb73;
      -	background: #f5f5b5 url("images/ui-bg_highlight-hard_75_f5f5b5_1x100.png") 50% top repeat-x;
      -	color: #060200;
      -}
      -.ui-state-checked {
      -	border: 1px solid #d9bb73;
      -	background: #f5f5b5;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #060200;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #f8893f;
      -	background: #fee4bd url("images/ui-bg_highlight-hard_65_fee4bd_1x100.png") 50% top repeat-x;
      -	color: #592003;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #592003;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #592003;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_c47a23_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_f08000_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f35f07_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_cb672b_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ff7519_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_f08000_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-small_0_aaaaaa_40x40.png
      deleted file mode 100644
      index 4e2b1f679823063261452d52c5096d0543c2e6f8..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 265
      zcmeAS@N?(olHy`uVBq!ia0vp^8X(LBBp4p6{ucmJEa{HEjtmSN`?>!lvI6-E$sR$z
      z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e4<BY}``R0pzil
      zc>21sKj7r!RpNa3^5k})kf5iFV~E7%<Oo)Fp2cSt9%f+(nZmhY;Tx|VKuOgS*NBpo
      z#FA92<f2p{#b9J$Xr^mmscUEwVrXn-Y+?mu8vsdzpT?;?C>nC}Q!>*kack(vySo9X
      Ofx*+&&t;ucLK6UwEJMct
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_15_444444_40x40.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_15_444444_40x40.png
      deleted file mode 100644
      index 3b915e2373f6095e2291a02c479d8f387c29ba27..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 383
      zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
      z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp^nu
      ziKnkC`vXosUM0?lFHdd<3blK>IEHu}e|y!CtHFS$^<nxQ?sI*6Cr<xxWv`3>gP<kT
      zl$`z@RLtj-Z=AO0sm0Zx?zSasJnud4d73xjk<^L8NgL;Ec_)3cwEs}SR*BQR(!X}H
      zdlbl?C@}XZ<b7gsGQ!Vj+U%Mf`RSWB-brzOztUiuw8NtblBZpl|JeCr3JB&GU(~dJ
      zGlg4p$=suwbMIRLoupdg8c~vxSdwa$T$Bo=7>o=I&2$Ycbq!5I42`XfO{{=y10ZSe
      i(>Rp}MMG|WN@iLmZVerIcQ*hvFnGH9xvX<aXaWEze1<sy
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png
      deleted file mode 100644
      index c32c7081b0877c333d083e5bc9d9d9e488b4cdde..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 469
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjXe0g#^Q0S(oi(^Q}y|*_uavnAiXidD$EU~FWog-zY&l4+2wd#u2
      zgcD3&g$tZCCi%HO_;-2rI!n3u-_Hc@o&Rg~_e^DVjasSR`roVm|8jr-s6C3ocx9x)
      z%vlXTLr%&ZD$JS9zAEM7{)nYs>$!4fYlSP%aL8pTUJ+{0i%@ul<C{}&f_})$w`{i;
      zpSsGp&Fd}0?PaSDuw*IEa9-P#d4*|)=h>!{S6I$0_d2%h=+ZvlZa-XxT-lg;aiwg+
      z?GVu!4pVCw)tcSodp_930X?Z&;u=wsl30>zm0Xkxq!^4049#>6EOiY{LJW<qj7_Y7
      nYy%)^@Y6Vz2Sr0}eoAIqC2kEJd3QGeH86O(`njxgN@xNAnr5un
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_glass_55_fbf5d0_1x400.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_glass_55_fbf5d0_1x400.png
      deleted file mode 100644
      index d82638d37b437a523fa24f159a35d4f1b59e6290..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 394
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8=fjsLw*!UxJY5_^JdVFTugllOAaVTR{onFx>B)5)6lc#qs^-co
      zCd}47=dg68*lgLw$#WWdHaUI}@jE<w-k%HMZ&$@|Gsqk-oRjZ--PAYm0{i-h$=Xgq
      ztB=m;WlcJDPe`zM%jOQ<%`qx-N*3<lyZZUueL2&gx*SQFc3O#Vo3QaWGx3E>!@32z
      zcXJsk{OaEF*y0@jPlhS86rP2P9?t-}Otr){q9i4;B-JXpC>2OC7#SFv=^9w-8k&R{
      t8e18gSOM7vK+@o+aVigrhTQy=%(P0}8andsZUAav@O1TaS?83{1OWCLhYkP$
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-hard_30_285c00_1x100.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-hard_30_285c00_1x100.png
      deleted file mode 100644
      index 248dfdb38e0e6a3e19ba6b12f6deb377b4e976f0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 382
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!v`r;B5V#`(AB7jhjc5IOqrbS3Luxx)%G)<j3nc>h2;
      zLn5QF-{eQT>*}Tlk2al8*z-K5IbpN5PVI+g;lA7g39;fCGiUnND4r|pZ?QPGLiNV#
      z5Z1L{KJeA7dMq~YMirmhT$}dy5x-gQZ2tCIU2WUE#`klj&U&oqcM?66EW7=F#c%aJ
      z3=aid&o`J~R|dL9wZt`|BqgyV)hf9t6-Y4{85o-B8d&NYnuHh{TN#^J0oevX(%`3Y
      gDi4Z=-29Zxv`X9>I`Zyr0BT_HboFyt=akR{05Xz>iU0rr
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_33_3a8104_1x100.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_33_3a8104_1x100.png
      deleted file mode 100644
      index 05d228ffe9c94e99e2f39ae789b8f41602c6c9d4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 403
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(I7PZ!4!jq^_@81gX&inzw-UGPa(4T(=yl~USg>a#xZ
      zW`nIqnnq1;s>T_%FLkPw-?dVX@Ogx&KQ~j~X%?Sj{*cYsc=P^)H}$qLPiC9rsLpHJ
      z8h0!xRxIJdRQHS}ZJaz=HjR;@$}=LXSvF_wdmy-H^QTnnUyj-DogI0FZ8m?pam)SS
      z<=t_s4l~tc9J0;H(SBX~d#U_!;j5psUH`N6u>hT@TH+c}l9E`GYL#4+3Zxi}3=GY5
      z4J>sHO+pNft&B~qfNTRGY4FoHl?O#bZhlH;S|x4`9eH;*05vdpy85}Sb4q9e0B&rB
      A7XSbN
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_50_4eb305_1x100.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_50_4eb305_1x100.png
      deleted file mode 100644
      index 1daea7a196a39ceb945104625f0a66d392ab1d32..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 409
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(H)PZ!4!jq^_@7;+tQ5OJ{&j?`F_%QtC@TAaf64{}^$
      zjOGWAxn<jSZ+NNuX6yZ;|MK0g>lY+^m6(y(Hu3Dss*LE4j*dUP=ZYRnUE8pY?^?k^
      z*&80YvR@85E#J@>SbgKb44W<KA^dA~RM@pG)!5e>d9`hy<?PLU(((PCC4bfD>6#g=
      zYPXGi!E?)4jX(OC;Ld68kvCa-?iBuhJH1Xu|FBZ#<!dvXje!nTEpd$~Nl7e8wMs5Z
      z1yT$~28L$329~;pCLxB#R>me)K(+ypH27(p%7daIH$NpatrE9}j=Z}YfEpM)UHx3v
      IIVCg!07hJmGynhq
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_60_4ca20b_1x100.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_highlight-soft_60_4ca20b_1x100.png
      deleted file mode 100644
      index 6c8ff05d25724a6c171da5e7492ba5f901479014..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 417
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(HwPZ!4!jq^_@=<*$M5NU~bQ;2GG+%E2*DCq6fwC)K*
      zY-b)nqtIS1UQV%YhaxtuZych(>jYHyGO4W4zuz%4<%L3dxW1!{%NKKtONYxY_${7t
      zVY;j4g1N4`3Tx+9@}J!DP;OG>X<HR}of+P8LRU7jvzM-HV~GXQzkvdKE_hb;={jrd
      zG`-_2wfn>lpgzqNQS+Z&mfW%_Xx)a{xw)U;POp>6U;QI<LTSg3V4#ClOI#yLQW8s2
      zt&)pUffR$0fuWhMfu*jYNr<7bm9dExkZk}Y4SpJ@@}OwQ%}>cptHiCLBk%48paup{
      LS3j3^P6<r_0Vj(D
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-bg_inset-soft_10_285c00_1x100.png b/bower_components/jquery-ui/themes/le-frog/images/ui-bg_inset-soft_10_285c00_1x100.png
      deleted file mode 100644
      index d88bfcc90f49c326f0adc5e38bbdc31b564c21c8..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 424
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(H2PZ!4!jq`6WC~_TQkZJw+{x7RIPn6D~T~aLUatBIz
      z#RNlG9J_PH1GX!3@V(!#w6yu?Bff+URlLos!*rL)>(_qBFk2pM&|p9R<>l0bo{y22
      zKc&xWJJu#>9qhB9=Ub_r=FVlxj59Sum&`6y2}s-ZVuAYHUyt5dxGkD+XNu6vG%pb?
      z^GV;mM755u){~#QSx`G5Or&S;v^hS~ZnwlrtDa7c{@QD0Dz(4v<?cNUfAiJ<b8oH6
      z1G-za#5JNMC9x#cD!C{XNHG{07@FxCSn3*@gcurI8Jk!E*#<z;;HPma4~mA|{FKbJ
      XO57Sc^6qW`YGCkm^>bP0l+XkKP;-%<
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-icons_4eb305_256x240.png b/bower_components/jquery-ui/themes/le-frog/images/ui-icons_4eb305_256x240.png
      deleted file mode 100644
      index e18f39632ed51f3e5f4a0564d85026d1ccf20ac7..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pg$_FYzZ?Q#3;+NC
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-icons_72b42d_256x240.png b/bower_components/jquery-ui/themes/le-frog/images/ui-icons_72b42d_256x240.png
      deleted file mode 100644
      index d89bf40d82fcdecddf8ad236cc08bd9a9b563be0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      Mp{}V;g%&#Qzf017)c^nh
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-icons_cd0a0a_256x240.png b/bower_components/jquery-ui/themes/le-frog/images/ui-icons_cd0a0a_256x240.png
      deleted file mode 100644
      index ed1b23a81c2b1389423565a29deb53e883311bc2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!Qrl!Pt_f+)Qg=_Rz#i!=eHyaJ*3B7_zx2}%(ZcoadT1w;`=nhGer
      z35rq`A~k^Yt~4phi$3Se`F4K5xz?=NvuCYq_L{wB&+I*SEX@rW5L^fV02qvo^sE2?
      zJRJgCw9wO@Xl(NPRKUEn&9niaI-Ty=h3Zu2bu+Ru0|2Zr0N`!|z~Si>ZV3RwWB_0V
      z4FJeT0KgHP_x_6d>0*+WrZ)Ot5QzV8|3?p;!<*!tI@AqgWo`}F8AkKVJ(_9ijquE?
      zx%1+wgE@8)h4S!Buue7jC)3T%#f;z`fXxkk+7i>+IQMFP`3FADae9*UZe)C@^V`=^
      z*RfzSLtl>1fr>agcURQlTq)kJ=fME6a_dV*X>wIV_sj0KtkqL<pzCErJs_Ftg3+l$
      zgE2PKr<tY(5khA(ev9Y>02AI=PunJPY~7L0?R*!@R70wuWVZ;Xpf?nr(k3Pt=Adls
      zoT<abZ$u~Slgs@0k<|i)lC&}9=jF9mH0QqTzq#1CH=()M@VzN#Qo}y^6c>5%?&FTc
      z8uCCWH8SE7*g}STqCBP~`8pxmZGyPHZX??=cr&Dx3$TEeL~pMen8iEritrYl$PO)E
      zaEA@dHiB8I-+7_sl<>3a%X!+`AxD079_EcXBM8s7#?&3^P`d3Ymq4(9(SHiER#GK>
      zNQ-`o&q*!~ca6_2gkB@fnHEAYv;kzXs<7+fhNAp`QQWN(Y7yKUYuR3`Na(w%b9rFR
      z09RN=9lZ+rYa5L;UonxqfQD7kD>QIQ3zvf?IFa`@Z-eB{xt`SR6Ce27Uolqi(nrIY
      z5fG(X?p7%~qW?(p$Td4Aqt9c}0>0zyX#Lsc8~eL}rcN!A=Jt)jLI}(MU|d(ZTWjet
      z_39>fB&HlV2p50TGx;v=SOr+MBq(h;&#e68PO|?zOEP(_Oj^eYeVcB6Ma`ovnSb?z
      z0_h8A3^R27BKk6&4X~X>tp5t;)PZeL@oxDsOK*I16}Oug_Pgd8?ogDi<;PeFkD|$_
      zvZr;Ku$l-eo?#z*&cQvGC9g-aVESqlNCOKpB7n>zN|R;dv534Izqj1v{`JjlP4Q9n
      z*R((bSJitP6+;V2)O9Z)U+Pv{O&AX5qH61WmjM%w$WULZN^_5J8WHs5)MCE-)%W9d
      zopm;#^CY^dESU#iClVDTl{CqE3B<piY4`Qiq;5PG%9<}|{dtR}Z)7Go2EU%qO6NLL
      zCB)@b>7RTSiMDtvXX;xzFQr71?xRI(kS67amzn8U(VMtm>=l`xA)d<MNK;s|?q(zC
      zPn*Gah8wbXr9dTACb20A8hJ4l4}T453txi5GK@1yYJ9}r#OsdNO$fx*G;uIOY~fQ-
      z_E!1*n;Pix&2GKF*x~XzVp~i@L|q-Ra&1b}uSa@kH$5e{R+5(b9U!l3hhkL+A9+%j
      z_JoHYpLbpd*WT1Gt7YAMP*B$at!Ng4$|NMP#9-mz&3s3AaLcr#V3a0LYi)tchV5(e
      zVf?N4lJzN-`8ebRh9$$U-DN7wLcMD^pkWwg)mF$kVx;Z5%tsdi=88skS3OmF&pWH}
      z+Eob0c;{_W1lGzr6)uUCpWdu1VQo`dljXZx2=MW>H*{PdbQu(jauZ~3N@N5RMtF`_
      z4LO)O99#axS#s*Vojk1`$v~Qe+LzCjk3)Ahhp*wna=Uh#he(0EB_&psqI#7|y2L>b
      z{OsAMz6dcy;^zbDgdqqf)@2gn1>5r=0_jdm+t{)emV8ba$~c~---=~57u7;r<=+w-
      zZ^ds7*|KoCGdb|Kgwr*K6Cz;;^ad3WMd2ZKfJUX|@Z|ZEoHTz%Ue$65g|gZ+NE$oF
      zo}CZJVTJT?O0el~(KugQTFDkM|E<?@|B-23_KtY4BtMW;k_5x(pFa`!bM~Y;<mN@(
      zUoN)DWz^S{O)+>Z8t6KwDMJd*uVq%;zua|K*eh1EB3ZW8?mFLD!kGrEiL;D3!YMD$
      z8sQy;h`qn~LiSRo8FUbJ-t87zqqA>@f_<09cOHH6_wuVVsl2Iit^*Cs;RnICcsO=s
      zL_Cv2xRyPaSE~Ql8yKIvJ2UPa;86^noK4flm1CWYZ#*rk1x8~d?DH#vfm_Pc(R4E4
      z>+hc_)QPRIWB_cS#uID|IRyFO!X;}2<AZ4OUi3x{a1L@<#8t5Xpe`t2)i0&=D}q7I
      zzfzsKVAmVM?_Efb==}i^LM>CIg<BQGG7fW<s5hUk&?!cmwfTTYCSm6`R>N@RRg^^F
      zs+NPR#LMBcpZJ1LkQX8Hd_nl*DYl-J%0gq@5M||F#3W4cM||Ub!6P`rg>=%@u0hk<
      z?2cMVhl`RGVQde0`AN^jV}5zY%n<TmOv%XSfC#Rsn2#3ZA?@Dzxbxz;pn;aa(4ItP
      zc`GR?iC~s#kE+$;{uG3zWvj`>b)5N@;7-4Jx4RB~cbY{<*U0JM>UP5J1xpC^Z9qm6
      zUA()`JYchb1#}I$l?eEP-(&HI?6RC+xz%89rfJ<@tkKu&w89+#5ncsYFjkdj!E7NB
      z_u0R)tYQaBVweG{fkR@i-N}QW7fIrBCri{7!RVo*dS)&5G`dV&JpOt)lf9DEK>Mg0
      z_v4DoDr#>WDvF4XFUf!JP>t^Oaq<pZ<LVet`y?Hf!x*v2mR_dz){bi2?5;-H4`b_E
      zj9IvCR>Fbevc*PB#Yb;HbLo%WN+Vjm3Q&Q0{fqaK#+bhU<5;k!ke2r_#nidQ`rWJ|
      zw5AI3-A7I%w>pH%Hmmn&&^trIOFE!ny=*o-eskFo*Ps_SUoZ8B{7E^e*cpq=Q}u+z
      z3bgD6C&@(>%4bd!&zDpu9K2FtZ|T@xw?nw;vOhcCBLxV)BwLhLFzU>&*@grJ_sqI`
      zmHMo|8<Ai)!*sz#ZE2Xn{lKZX;5lIjrB5X>UiDf|kXWX;4ClB`g!pJ-kIF$t^)~R-
      z;tS)ozG&Z|&2XvWC^YP*^+#>7HJd(c?HoVhF;xcDT3aEhb|d2}kJR@BDN_F|>o!MI
      z3C2j0lwsFeRD*k$Rcf%tXNXcYR@|2I*&Mbye6x&Z`RoT3g?y!7J}*p~`og4{=^TC{
      zVR3;qL#KMhrZ+C3|HtU!Qs-^i4|Kn!_@C^!9-Blj@e<NDte)t0#=;U+dpppg>;{cS
      zv^}&PdXxpd+s43sp4gB8%z99|cvMS8V1#0n@03PcB1*_@d&5ymVmxR>?G=m`5~cl$
      z>3#Y@hW>`y)udf()CJiy6?{dBYGr+w=!&(NNY>>o^^}A>vas_+5N*bs)^4U(iaAlx
      zSGuM~KX#U8z$1u%Toe2tVo^rkkrn-<>xg_uWT}6wJdgi|Moaeb{bUE5XQ29jE_r`Y
      zw^8QRbyXGjsEe!4{RiGI)n{j74z;r{mQ-a<XCDkk!+O3&b2K0Sd|63iS?MbnYQY`P
      zk1*6nFa=J$815x9gxb3rxnqmqQ_rUr5(k41I?=6^8CO124@Wn)fOvPbanp9fUL(0;
      zi)lSYI;kdJj4tpoMnK8qlD%!)%RT|eZc}PCY-p9~K-<HRyV+ZvAr5<9X9(A&Y;=~L
      zj+GfutXsRv={#}2-fr|;qBOs4aETD^8m#0$bCpG0h&0lFXY-G*vzqm)Y%-3<w~|r0
      z-lqICY-faQvrDoYZjKdaC6w=4d^xrx9tK(;mzi?$MVzJnfl9P*CerA0qNobw3RsB{
      zVb*A;nCOt=_RD6tug(M^nNKPV>}&k8+s`O(8F){6)$IDg!nO*SdVt)IcULYh#6lQ<
      zRMM<C=a<v_)6%(vg4mcXG^GvBt$0@RO4IpQ>8Ald&Hhu~I_?!I(jM)?K6+dGa4K3;
      znfCdH|8KWyyGBZIb)*rax@3N6>&H7>K;)TdIqtL(75IHs(zq|<^K+Jmiv}v#%exUp
      zsh9Riw6X+oBx=}+S{USsu{jZ-p3Q?Me*gFpo`<Ghatofcz<bSdrcr#BYV%BY;veRL
      z^DQ>=z=!n1(aA$d483@&=*%N1`Z*3>HQ6BzV=n1xio13MX357d&`Z3UH-6#ysXJ^%
      zi?SQ^%gs?w*3V{$*ZMNnJ_h}yiKi-tTRkoo*STCUD;_f;W1!}*PW|U8Lb@ee7`7ak
      zo5@Z$5yMNBlCyzJ=Vy+vBPX%rlVj&9B*H3f+f#qudD856{!tq}$3c2m4$G=ql#;|j
      zVOXX2)kYi8CIC{Y09HQc?hL5<&GPQq?EsAdI-A5C?6dyH-9o;KY=pDnJ?qh1yCP3H
      zLIT+47o@B*oF28Ww)urdWGU7eLw?W`be6IW<~(_XBi+isItN`^ct);$(lCrk*}W;%
      z(xfE!xz-5fG`%@thB8l7Z@rN+Tt!xbSarCk+**JN<SEhipp|k1`i8$D8sH?446;>(
      zo7I{>n41rygNiyo7Q;kVz$4S-=E;a)?4m0A^&nUN&W7K%W}hB{g_=GVsYP|0NMchN
      zMr3QKyy~(p7s!WJWmZyleqXz_%k#BHQvJjwH)d(r_iw1_b#e;O6h@BVSZ=sq!|E2(
      zg@->UlUVu-0A99pFg72tzKnFM-7h@^odt)2%$$jt0Q2a@JR#j`-CAvkDZ&);>CLnL
      zuJwOb2I;9mm3&szE&b+m=!+jFX~6>-86kol`8m@5_}q-9EvF19kZSI7kKsmsoEBOL
      zqT~%quvEFw5!bj;)w`<b4hyh(s(QW@#Z={}#rr3(m<{QmT>P$Yc<2mjY3g|?Kg|xo
      z+|d-VZ8Ah?EiA<(-XMSd3DIBA9q8Bcme^;!d{8KeA`E{_dC201Yqo#UzgqX;D3L8K
      z;Xsz7`ygO-UdQ0g!qHoYf7+sXDT>{7E`bGJwsMbtqGA}ZD^s4|-u)JcN%~-IS-QT@
      z4P)cEm$f!pSV;pHyz}0&_h{vE9J#<G+xGrR!5K?CT&HaFoUfA|SLp*5Fx^B!c*<(y
      zf<c#ja7tfe4;n+8T67CXrwmU6)6&zn-#AMfE@iNd9CJt?C2n7iigPOHty}n;IU#Q~
      z^Dy6E=6g{aGQRiz6W_o-R7Xz3VDwtxxRb4FB&Db=^{P8Iqvq8_ZBs=E^Uev*_I<pA
      z=GEpIAE9hRpVXbjd-OK!eLJ?ulZUTkz$r{v@q-e&u{iv6#1@Ew4)lZx6^}7!YIHSp
      z6dkMQ&yW7+M=hrDrY8k%5Z7s;bt3qgOnakdmdr(nz+R}~YAP-1sMnQjK_h<uVui$?
      zu<XVqMO&@3XhNPX$uCL5h_SU-M2XE^I??RG{3a*1!o2FRucbk6Ww!^I@yz%sJ|Ux6
      z@ypcakB_xacOv<~K?A;GeAnCx<*{Gln=j~dgt@Oc>=%2zh6{R+yYm^3n<LMYfO#3E
      z^&U)E$=D|s|FMVbD<*Xh|N4fXU;R0ElKg|4Oh5Ob9Y3iAfnyk(vz_*g2x>qJOAN~7
      zF{Ztk!wlP1&Nd|<J5IAmk%s!g>=QBOe@nLNK*7asR@#F2+vO+PqqmP^2$}*c_~r@}
      z&@{bhObN3CzU^OM4st-<XlyzNVIEj($~olXelf%m&e-Go=x|QWX(cY!pYW0@^LKwG
      z*-?r#u{ymgMjD{B_kp1INq;&6Op3seIkihkPA-_E*!+wae#D2DKCRD%F#2{FcNdHY
      z(k;Z}Q~+`^vPx1is#3BFHnQ?ac{!xKs+5cZQbq<_eCGN8A_N4v`*=qEAt*}8oN{Ds
      zWMz=@%1Alce+i=6fsLmG&Oa8cgFG=2E+HO(wtJAP2d{B}i<gI$hl_jEjgKCuUpoL`
      MtZ%MYp@WY9FMgR(!vFvP
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/le-frog/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/le-frog/jquery-ui.css b/bower_components/jquery-ui/themes/le-frog/jquery-ui.css
      deleted file mode 100644
      index 56f6af0c73..0000000000
      --- a/bower_components/jquery-ui/themes/le-frog/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=10px&bgColorHeader=3a8104&bgTextureHeader=highlight_soft&bgImgOpacityHeader=33&borderColorHeader=3f7506&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=285c00&bgTextureContent=inset_soft&bgImgOpacityContent=10&borderColorContent=72b42d&fcContent=ffffff&iconColorContent=72b42d&bgColorDefault=4ca20b&bgTextureDefault=highlight_soft&bgImgOpacityDefault=60&borderColorDefault=45930b&fcDefault=ffffff&iconColorDefault=ffffff&bgColorHover=4eb305&bgTextureHover=highlight_soft&bgImgOpacityHover=50&borderColorHover=8bd83b&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=285c00&bgTextureActive=highlight_hard&bgImgOpacityActive=30&borderColorActive=72b42d&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fbf5d0&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=4eb305&bgColorError=ffdc2e&bgTextureError=diagonals_thick&bgImgOpacityError=95&borderColorError=fad000&fcError=2b2b2b&iconColorError=cd0a0a&bgColorOverlay=444444&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=15&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=diagonals_small&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=0px&offsetTopShadow=4px&offsetLeftShadow=4px&cornerRadiusShadow=4px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #45930b;
      -}
      -.ui-widget-content {
      -	border: 1px solid #72b42d;
      -	background: #285c00 url("images/ui-bg_inset-soft_10_285c00_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #3f7506;
      -	background: #3a8104 url("images/ui-bg_highlight-soft_33_3a8104_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #45930b;
      -	background: #4ca20b url("images/ui-bg_highlight-soft_60_4ca20b_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #8bd83b;
      -	background: #4eb305 url("images/ui-bg_highlight-soft_50_4eb305_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #72b42d;
      -	background: #285c00 url("images/ui-bg_highlight-hard_30_285c00_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #72b42d;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #f9dd34;
      -	background: #fbf5d0 url("images/ui-bg_glass_55_fbf5d0_1x400.png") 50% 50% repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #f9dd34;
      -	background: #fbf5d0;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #fad000;
      -	background: #ffdc2e url("images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png") 50% 50% repeat;
      -	color: #2b2b2b;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #2b2b2b;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #2b2b2b;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_72b42d_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4eb305_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 10px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 10px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 10px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 10px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #444444 url("images/ui-bg_diagonals-thick_15_444444_40x40.png") 50% 50% repeat;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 4px 4px 0px #aaaaaa;
      -	box-shadow: 4px 4px 0px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/le-frog/jquery-ui.min.css b/bower_components/jquery-ui/themes/le-frog/jquery-ui.min.css
      deleted file mode 100644
      index 7687e39701..0000000000
      --- a/bower_components/jquery-ui/themes/le-frog/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=10px&bgColorHeader=3a8104&bgTextureHeader=highlight_soft&bgImgOpacityHeader=33&borderColorHeader=3f7506&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=285c00&bgTextureContent=inset_soft&bgImgOpacityContent=10&borderColorContent=72b42d&fcContent=ffffff&iconColorContent=72b42d&bgColorDefault=4ca20b&bgTextureDefault=highlight_soft&bgImgOpacityDefault=60&borderColorDefault=45930b&fcDefault=ffffff&iconColorDefault=ffffff&bgColorHover=4eb305&bgTextureHover=highlight_soft&bgImgOpacityHover=50&borderColorHover=8bd83b&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=285c00&bgTextureActive=highlight_hard&bgImgOpacityActive=30&borderColorActive=72b42d&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fbf5d0&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=4eb305&bgColorError=ffdc2e&bgTextureError=diagonals_thick&bgImgOpacityError=95&borderColorError=fad000&fcError=2b2b2b&iconColorError=cd0a0a&bgColorOverlay=444444&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=15&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=diagonals_small&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=0px&offsetTopShadow=4px&offsetLeftShadow=4px&cornerRadiusShadow=4px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #45930b}.ui-widget-content{border:1px solid #72b42d;background:#285c00 url("images/ui-bg_inset-soft_10_285c00_1x100.png") 50% bottom repeat-x;color:#fff}.ui-widget-content a{color:#fff}.ui-widget-header{border:1px solid #3f7506;background:#3a8104 url("images/ui-bg_highlight-soft_33_3a8104_1x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #45930b;background:#4ca20b url("images/ui-bg_highlight-soft_60_4ca20b_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #8bd83b;background:#4eb305 url("images/ui-bg_highlight-soft_50_4eb305_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #72b42d;background:#285c00 url("images/ui-bg_highlight-hard_30_285c00_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#72b42d;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #f9dd34;background:#fbf5d0 url("images/ui-bg_glass_55_fbf5d0_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #f9dd34;background:#fbf5d0}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #fad000;background:#ffdc2e url("images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png") 50% 50% repeat;color:#2b2b2b}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#2b2b2b}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#2b2b2b}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_72b42d_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_4eb305_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:10px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:10px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:10px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:10px}.ui-widget-overlay{background:#444 url("images/ui-bg_diagonals-thick_15_444444_40x40.png") 50% 50% repeat;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:4px 4px 0 #aaa;box-shadow:4px 4px 0 #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/le-frog/theme.css b/bower_components/jquery-ui/themes/le-frog/theme.css
      deleted file mode 100644
      index c8d2804998..0000000000
      --- a/bower_components/jquery-ui/themes/le-frog/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=10px&bgColorHeader=3a8104&bgTextureHeader=highlight_soft&bgImgOpacityHeader=33&borderColorHeader=3f7506&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=285c00&bgTextureContent=inset_soft&bgImgOpacityContent=10&borderColorContent=72b42d&fcContent=ffffff&iconColorContent=72b42d&bgColorDefault=4ca20b&bgTextureDefault=highlight_soft&bgImgOpacityDefault=60&borderColorDefault=45930b&fcDefault=ffffff&iconColorDefault=ffffff&bgColorHover=4eb305&bgTextureHover=highlight_soft&bgImgOpacityHover=50&borderColorHover=8bd83b&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=285c00&bgTextureActive=highlight_hard&bgImgOpacityActive=30&borderColorActive=72b42d&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fbf5d0&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=f9dd34&fcHighlight=363636&iconColorHighlight=4eb305&bgColorError=ffdc2e&bgTextureError=diagonals_thick&bgImgOpacityError=95&borderColorError=fad000&fcError=2b2b2b&iconColorError=cd0a0a&bgColorOverlay=444444&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=15&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=diagonals_small&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=0px&offsetTopShadow=4px&offsetLeftShadow=4px&cornerRadiusShadow=4px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #45930b;
      -}
      -.ui-widget-content {
      -	border: 1px solid #72b42d;
      -	background: #285c00 url("images/ui-bg_inset-soft_10_285c00_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #3f7506;
      -	background: #3a8104 url("images/ui-bg_highlight-soft_33_3a8104_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #45930b;
      -	background: #4ca20b url("images/ui-bg_highlight-soft_60_4ca20b_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #8bd83b;
      -	background: #4eb305 url("images/ui-bg_highlight-soft_50_4eb305_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #72b42d;
      -	background: #285c00 url("images/ui-bg_highlight-hard_30_285c00_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #72b42d;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #f9dd34;
      -	background: #fbf5d0 url("images/ui-bg_glass_55_fbf5d0_1x400.png") 50% 50% repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #f9dd34;
      -	background: #fbf5d0;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #fad000;
      -	background: #ffdc2e url("images/ui-bg_diagonals-thick_95_ffdc2e_40x40.png") 50% 50% repeat;
      -	color: #2b2b2b;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #2b2b2b;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #2b2b2b;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_72b42d_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4eb305_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 10px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 10px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 10px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 10px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #444444 url("images/ui-bg_diagonals-thick_15_444444_40x40.png") 50% 50% repeat;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 4px 4px 0px #aaaaaa;
      -	box-shadow: 4px 4px 0px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_glass_15_5f391b_1x400.png
      deleted file mode 100644
      index e6b136f36eebef1bdb6c4571ca70630ab17be8ed..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 393
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8SH*)Fyg;E|PZ!4!kK=F8D{?U<O0+zjX|6XzN9}YIN7>;h(~P?*
      z1~<O29eSqg#-DIgyQ1Mgo7=`$ydh`UK5{I2=*_<;F=0#ErPuQ(sAzIDDg3ZHe{^xJ
      z{Nkl%w;pYdmU}dt{Y>GpGoo@k)f^pt4=t5mw`0ji*8R$@*+S>`CiNRHTW6Pi>*WLG
      zS36e!vG-$l6!_C8uD4lc4NGja7tmp<C9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z
      v%Gkup&_LI~#LB>60iyyih>$eo=BH$)RpQogF=obJpaup{S3j3^P6<r_Ek%V(
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_20_1c160d_500x100.png
      deleted file mode 100644
      index 1091f625da84bf88933c51dc196698d418f62d91..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5851
      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
      bp>KL4BL43MJuX@6TU%Z=vo$4Nali9V)!Dts
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_25_453326_500x100.png
      deleted file mode 100644
      index 7538ca3cf10e116568a476948d0306287c22f1db..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5910
      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
      H<=_7cdlANh
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_gloss-wave_30_44372c_500x100.png
      deleted file mode 100644
      index 3585beaa577a1e192361bde7bf958de0d230f920..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5972
      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
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_201913_1x100.png
      deleted file mode 100644
      index 17dd59fee6cf960ae9fb40c284eb06fb337b4f38..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 433
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7bvvV)5S4F<NVVL8~F|<NVGnjd|pA!+4YjtmZnKlOa!?X
      zA52N!UMwoKx^bm=;_u^Sx#|;FSSJ`8b^Vv<h*mJPJ!w7X;e!7!-u-Q5VEAAzGx3o^
      zNya6C8zz|?_hTv_MwT4v@RBgT0>q1))Su_xS@WVndvDAA{JhnbTQ0k;-{h7Z=08Vi
      zk56t4pUe5LA^t6#%33?Df5)w=JC?WSgG!HN5NB?bN!&*rnZgr{GRHS@wdU{t^4Nya
      zh9z=sx>DOppa)b-Tq8<S5=&C8l8aJ-6oZk0p_#6MrLLh#h@r8Sv5A$Tfv$mxm4U$m
      iMg?F{B5BCYPsvQH#I50C%#6Q44Gf;HelF{r5}E+f{FXBS
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_highlight-soft_20_619226_1x100.png
      deleted file mode 100644
      index 95bb11d988631013d017245faaa38fc87d427195..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 401
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7brB<)5S4F<NVVJYk3a^Ftn`S?&&JY<f{8>Bcp`J1(r}2
      z?J0~3{D&Db%ra!<bfg<9<eTPiU{qP5KYz#WCnmGkec!uJ)$^D1oRW(ddqRREoU^*7
      z2L=@y?>x3eE!`>msnqggDJ<KLu`D_%u_VLDR#%{xQ`2hh)zm!OM=32L_vgxU_eySD
      zlst9Sj#;YKY}ee_b@%<f)c=@o8CUqv^II1B10ASZ;u=wsl30>zm0Xkxq!^4049#>6
      zEOiY{LJW<qj7_Wz4Rj4mtPBhmFe(6p3Q0q5eoAIqC2kEDV`lsXYGCkm^>bP0l+XkK
      DJcEL<
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-bg_inset-soft_10_201913_1x100.png
      deleted file mode 100644
      index fae58c013b9346e2f6f5c03a23787d4d6423e457..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 438
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1s(3Ji7bvvL)5S4F<NVtT`}qzg$h1BzuA3}-F>J}&AI2As@=BOI
      zm2yccV-E{YR0`^hYdC+w%Wm-z1+~s2I(iJ77jB+<^b1dZQ5*Ad!?QVI3=BU$ck(fn
      zu-5Vzw7iaXT*qFXth#e<!7)|kDf&mN|0&KfOi>BxSs8e9dLCN~`@8}%Eww95M`uK>
      zm{6b|(zCEN`&g#;iq_(mj!PRwrMgd@&RZP0-tUd_tjn)1e|(slrJT;4AG3Rxt|KE`
      zPyGHbvG<l9)UQ1k-p&s6g=&dwL`h0wNvc(HQ7VvPFfuSS(>1WvH8cq^G`2D}u`)E!
      pH88O<Fj&B-01Qtg4Y~O#nQ4`{HC&9D@fWCp!PC{xWt~$(69DLrm=gd1
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_222222_256x240.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_222222_256x240.png
      deleted file mode 100644
      index f184400db5da441a76667625c74567d220208e3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      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
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_9bcc60_256x240.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_9bcc60_256x240.png
      deleted file mode 100644
      index c221b4c7842d03be1793ee14a0e00455551c4222..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MT~nP(Ep+^U0b~HIO#lD@
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_add978_256x240.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_add978_256x240.png
      deleted file mode 100644
      index 7a1cd35e54618e7d11559293bc58367d137196dd..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M)HT(q)I!Jo7gS2YbN~PV
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_e3ddc9_256x240.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_e3ddc9_256x240.png
      deleted file mode 100644
      index 74374fcf4ab821d6672e1f363f22ba5d0fefb1da..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MSl?W)LI)lHU-3QobpQYW
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_f1fd86_256x240.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_f1fd86_256x240.png
      deleted file mode 100644
      index 9742fcbfc8815e699c18ef6b84b1d4807ff0f9f2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MNY6~SLK_qRUxyFxod5s;
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/mint-choc/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/mint-choc/jquery-ui.css b/bower_components/jquery-ui/themes/mint-choc/jquery-ui.css
      deleted file mode 100644
      index c8a3aba4f2..0000000000
      --- a/bower_components/jquery-ui/themes/mint-choc/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=453326&bgTextureHeader=gloss_wave&bgImgOpacityHeader=25&borderColorHeader=695649&fcHeader=e3ddc9&iconColorHeader=e3ddc9&bgColorContent=201913&bgTextureContent=inset_soft&bgImgOpacityContent=10&borderColorContent=9c947c&fcContent=ffffff&iconColorContent=222222&bgColorDefault=1c160d&bgTextureDefault=gloss_wave&bgImgOpacityDefault=20&borderColorDefault=695444&fcDefault=9bcc60&iconColorDefault=9bcc60&bgColorHover=44372c&bgTextureHover=gloss_wave&bgImgOpacityHover=30&borderColorHover=9c947c&fcHover=baec7e&iconColorHover=add978&bgColorActive=201913&bgTextureActive=highlight_soft&bgImgOpacityActive=20&borderColorActive=9c947c&fcActive=e3ddc9&iconColorActive=e3ddc9&bgColorHighlight=619226&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=20&borderColorHighlight=add978&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=5f391b&bgTextureError=glass&bgImgOpacityError=15&borderColorError=5f391b&fcError=ffffff&iconColorError=f1fd86&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #695444;
      -}
      -.ui-widget-content {
      -	border: 1px solid #9c947c;
      -	background: #201913 url("images/ui-bg_inset-soft_10_201913_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #695649;
      -	background: #453326 url("images/ui-bg_gloss-wave_25_453326_500x100.png") 50% 50% repeat-x;
      -	color: #e3ddc9;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #e3ddc9;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #695444;
      -	background: #1c160d url("images/ui-bg_gloss-wave_20_1c160d_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #9bcc60;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #9bcc60;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #9c947c;
      -	background: #44372c url("images/ui-bg_gloss-wave_30_44372c_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #baec7e;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #baec7e;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #9c947c;
      -	background: #201913 url("images/ui-bg_highlight-soft_20_201913_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #e3ddc9;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #9c947c;
      -	background-color: #e3ddc9;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #e3ddc9;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #add978;
      -	background: #619226 url("images/ui-bg_highlight-soft_20_619226_1x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-checked {
      -	border: 1px solid #add978;
      -	background: #619226;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #ffffff;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #5f391b;
      -	background: #5f391b url("images/ui-bg_glass_15_5f391b_1x400.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_e3ddc9_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_add978_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_e3ddc9_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_f1fd86_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_9bcc60_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/mint-choc/jquery-ui.min.css b/bower_components/jquery-ui/themes/mint-choc/jquery-ui.min.css
      deleted file mode 100644
      index d0f48324e4..0000000000
      --- a/bower_components/jquery-ui/themes/mint-choc/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=453326&bgTextureHeader=gloss_wave&bgImgOpacityHeader=25&borderColorHeader=695649&fcHeader=e3ddc9&iconColorHeader=e3ddc9&bgColorContent=201913&bgTextureContent=inset_soft&bgImgOpacityContent=10&borderColorContent=9c947c&fcContent=ffffff&iconColorContent=222222&bgColorDefault=1c160d&bgTextureDefault=gloss_wave&bgImgOpacityDefault=20&borderColorDefault=695444&fcDefault=9bcc60&iconColorDefault=9bcc60&bgColorHover=44372c&bgTextureHover=gloss_wave&bgImgOpacityHover=30&borderColorHover=9c947c&fcHover=baec7e&iconColorHover=add978&bgColorActive=201913&bgTextureActive=highlight_soft&bgImgOpacityActive=20&borderColorActive=9c947c&fcActive=e3ddc9&iconColorActive=e3ddc9&bgColorHighlight=619226&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=20&borderColorHighlight=add978&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=5f391b&bgTextureError=glass&bgImgOpacityError=15&borderColorError=5f391b&fcError=ffffff&iconColorError=f1fd86&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Segoe UI,Helvetica,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Segoe UI,Helvetica,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #695444}.ui-widget-content{border:1px solid #9c947c;background:#201913 url("images/ui-bg_inset-soft_10_201913_1x100.png") 50% bottom repeat-x;color:#fff}.ui-widget-content a{color:#fff}.ui-widget-header{border:1px solid #695649;background:#453326 url("images/ui-bg_gloss-wave_25_453326_500x100.png") 50% 50% repeat-x;color:#e3ddc9;font-weight:bold}.ui-widget-header a{color:#e3ddc9}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #695444;background:#1c160d url("images/ui-bg_gloss-wave_20_1c160d_500x100.png") 50% 50% repeat-x;font-weight:bold;color:#9bcc60}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#9bcc60;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #9c947c;background:#44372c url("images/ui-bg_gloss-wave_30_44372c_500x100.png") 50% 50% repeat-x;font-weight:bold;color:#baec7e}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#baec7e;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #9c947c;background:#201913 url("images/ui-bg_highlight-soft_20_201913_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#e3ddc9}.ui-icon-background,.ui-state-active .ui-icon-background{border:#9c947c;background-color:#e3ddc9}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#e3ddc9;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #add978;background:#619226 url("images/ui-bg_highlight-soft_20_619226_1x100.png") 50% top repeat-x;color:#fff}.ui-state-checked{border:1px solid #add978;background:#619226}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#fff}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #5f391b;background:#5f391b url("images/ui-bg_glass_15_5f391b_1x400.png") 50% 50% repeat-x;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_e3ddc9_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_add978_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_e3ddc9_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_f1fd86_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_9bcc60_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/mint-choc/theme.css b/bower_components/jquery-ui/themes/mint-choc/theme.css
      deleted file mode 100644
      index 874799d897..0000000000
      --- a/bower_components/jquery-ui/themes/mint-choc/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=453326&bgTextureHeader=gloss_wave&bgImgOpacityHeader=25&borderColorHeader=695649&fcHeader=e3ddc9&iconColorHeader=e3ddc9&bgColorContent=201913&bgTextureContent=inset_soft&bgImgOpacityContent=10&borderColorContent=9c947c&fcContent=ffffff&iconColorContent=222222&bgColorDefault=1c160d&bgTextureDefault=gloss_wave&bgImgOpacityDefault=20&borderColorDefault=695444&fcDefault=9bcc60&iconColorDefault=9bcc60&bgColorHover=44372c&bgTextureHover=gloss_wave&bgImgOpacityHover=30&borderColorHover=9c947c&fcHover=baec7e&iconColorHover=add978&bgColorActive=201913&bgTextureActive=highlight_soft&bgImgOpacityActive=20&borderColorActive=9c947c&fcActive=e3ddc9&iconColorActive=e3ddc9&bgColorHighlight=619226&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=20&borderColorHighlight=add978&fcHighlight=ffffff&iconColorHighlight=ffffff&bgColorError=5f391b&bgTextureError=glass&bgImgOpacityError=15&borderColorError=5f391b&fcError=ffffff&iconColorError=f1fd86&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #695444;
      -}
      -.ui-widget-content {
      -	border: 1px solid #9c947c;
      -	background: #201913 url("images/ui-bg_inset-soft_10_201913_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #695649;
      -	background: #453326 url("images/ui-bg_gloss-wave_25_453326_500x100.png") 50% 50% repeat-x;
      -	color: #e3ddc9;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #e3ddc9;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #695444;
      -	background: #1c160d url("images/ui-bg_gloss-wave_20_1c160d_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #9bcc60;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #9bcc60;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #9c947c;
      -	background: #44372c url("images/ui-bg_gloss-wave_30_44372c_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #baec7e;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #baec7e;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #9c947c;
      -	background: #201913 url("images/ui-bg_highlight-soft_20_201913_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #e3ddc9;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #9c947c;
      -	background-color: #e3ddc9;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #e3ddc9;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #add978;
      -	background: #619226 url("images/ui-bg_highlight-soft_20_619226_1x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-checked {
      -	border: 1px solid #add978;
      -	background: #619226;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #ffffff;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #5f391b;
      -	background: #5f391b url("images/ui-bg_glass_15_5f391b_1x400.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_e3ddc9_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_add978_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_e3ddc9_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_f1fd86_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_9bcc60_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png b/bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_100_f8f8f8_1x400.png
      deleted file mode 100644
      index a531a9a170e7fc115f4566fb86369f1b07761862..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 324
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ixh7ba4!^IGy~XwyCo*QKVPtl~S9$y+mD?fuV(g;SR$;
      zH3vVOZtYZ@_0U{c*xBgt`(~c{lo=9ElK<YM|M=Yha6Owa^X~@h3K3pT7KX5EqNWxX
      z(#`|TRV{IiC`m~yNwrEYN(E93Mh1pvx(1fIh9)6~##Y8ARzS7^kTm#doXUfuAvZrI
      ZGp!Q0hK{_u8-N-ZJYD@<);T3K0RVXmU#b8A
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_35_dddddd_1x400.png b/bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_35_dddddd_1x400.png
      deleted file mode 100644
      index a70e0eb10ef046f879c5a21affec05fe1a573a62..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 323
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ixhCba4!^IGtRvrKPhmQKVN%Yw`VQJl`v3N)$=Ft4&GD
      zNvu#fam1j#vyk=hVSAsRVhOp~1~ztwJ{)O&cv7rQy?%y7CELA&i!(G77%Ck_CkB;o
      zz5p~<wZt`|BqgyV)hf9t6-Y4{85o-B8d&NYnuHh{TN#^J0oevX(%`3YDi4Z=-29Zx
      Yv`X9>I`Zyr0BT_HboFyt=akR{0HD@jR{#J2
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_60_eeeeee_1x400.png b/bower_components/jquery-ui/themes/overcast/images/ui-bg_glass_60_eeeeee_1x400.png
      deleted file mode 100644
      index 223433fc3bf26ba8c24e90970d38d9c72d2d4282..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 323
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ixhCba4!^IGz0C%(){647%I|r(S&joag<~nG#8o_wFbC
      zcyRc`L#4yV3)=e6&y-L%sQGpH$c<wke(DP+D;}PHnJ3<Iro;}mdj}V1Xecn`MvKQk
      zW!^X$Xsl|9YeY#(Vo9o1a#1RfVlXl=G}AS()HO5-F*LR^Hn9S-4S=M<PvcY`6b-rg
      aDVb@NxHWX--Q57xz~JfX=d#Wzp$PyM-e)ub
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-bg_inset-hard_75_999999_1x100.png b/bower_components/jquery-ui/themes/overcast/images/ui-bg_inset-hard_75_999999_1x100.png
      deleted file mode 100644
      index b99cf5705553236e16ce8f3a610438a69aadb0c6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 310
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ivKUba4!kxP0_nAnySM0hfc1-(C~sG`+}D{U?OYNT6tj
      z1KUZC84}GMr@dT-IZO8xK05aKkxOU&m5VK|HRAKxtID{n?{LTF0ZmdZag8WRNi0dV
      zN-jzTQVd20hGx13mb!)}A%@0Q#wJ!kwgHed_-UNVgQ6ifKP5A*61Rqqyt^BK8W=oX
      L{an^LB{Ts5y7*fh
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png b/bower_components/jquery-ui/themes/overcast/images/ui-bg_inset-soft_50_c9c9c9_1x100.png
      deleted file mode 100644
      index e7a6c1363e60e5397273dbcc52568401ee5a050f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 329
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4ipOXba4!kxP0{7Lf!@g3D$?-^VmbeQzpD)EdFy<^`KDH
      zaSo2AqXx_>>UNc@L|?AoqGIw$GF2vuU1Z1O1LE&?EdF+gS3K8Tui{eOgEeK3zMOr_
      ztT{pKi;ZB*1)$-oC9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%GksT$Tk3y20x8c
      fc~CUu=BH$)RpQprk#~0kPy>UftDnm{r-UW|DMe**
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-icons_3383bb_256x240.png b/bower_components/jquery-ui/themes/overcast/images/ui-icons_3383bb_256x240.png
      deleted file mode 100644
      index 45d36133f144cae908d1558f67fd196595e0709c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NLtRsyN-cEUe*xw6irxSK
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-icons_454545_256x240.png b/bower_components/jquery-ui/themes/overcast/images/ui-icons_454545_256x240.png
      deleted file mode 100644
      index e6e41cd07813ccd9c797d487fd183d318827c5b1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7090
      zcmZvBWmH_v((ayt!5JjL03k>S7J|dz&fpe2!3pk8unA6r69^805Zv9v1a}A$+=3Gz
      zI0U`C>wN3pbIy1F?CR>?&+64xUEN(zeNb1G!^fe-0RRABL0(1!06-5-;1CP_;fu&}
      zm3R>7R+1``08kZ+dt(ZD&}rYuYp4K#4<i5sgaE+RLs!5y0C;c$z^(}Z2&Di3%sHd^
      zrO3ko*i1=I20)YwC$T+fnC=QH2+U;+5Do)r++QXH08oBXkdf4SJGY-{7sVjw(fiIp
      zxC-lNj;_mS@2uRJ*q)ekmO`H>R$i~KDM3CRI2Q84gkT8>LqiJsMplL{gRQvS!n-a5
      za}5U>`^H78e*;x{m(U*a)JpKs-f@&PvAw0sOeg`}3!0~xt0UpNx*pRdEq^k7w>)p<
      zyd0Osw5PN^R7IOdiZs91z2&8_!WTlL4i1F{gmvNuM8WCyC9TYORw1;Ja8{IJf=u=_
      znDg>{g0Ym!4Kfq1ivBAR)3}FPiVSeWBxiibI5QV3h9nnlE5m=|>p9eA%Rsni94&)N
      zJjOaBdIj1>U^Z6B;<zj{K1q_xY$PPC#3>~vB-bd{?8%XiD@E%<M9l|6=}3y1aN||g
      zS&$0@?xPK&!lkKR(}@li3sUmF57TVpXg;nbp!v1KNS3BqG!0jgR)=r++z!RjF}D$0
      zJ0kMoDLS@O^>5U^FTjVr`7Z)(2I`TPN;$1S3K6u`cCJ*5jPrz$q(J17`<$?iETAj~
      z&YIh0B-{${QXv^CR}aBs&Tm210{`en040<Izz_e&8uMuDYfz#4^eFCgz>y3Dw@{w9
      zCNMz;Wr}+2f%bNt<1gZgKe|4QQF6MG?o!mMx$URbN8i>@>bfppP0IC9W?K``W*g(j
      zN~fMW_%yTCM~Vipcx@KUucZ^o+Vn2dgJ!8EJlNh$6~WZQs~Xf`zJTVn+hDqppHxYm
      zWGa&bw$@9GRFd*eM*<UKcK!QD$qOaH_~d>YlXaNn?sxnYMo$);FGI5*{3g-43d#QO
      zg~YgFWCrF)3!t>`uI%#iPTr}uZTlC6NN&>BZe}+>@1u4D7?Q&S2&0;juzSE1qWDV7
      zKaA}@=q!+nw8dE~dS3^etj_Q&ivdzeD(=i2AckB~mt;p^;SW$J-#{?ZZVV47xVnwd
      zHi^?9%(Yz@`t(W1pPzsYA}eZsR_SVt1w+MnZJ#>iT4z#)DC|in42v0_B{q8RoDfoO
      zZ`MwXr>0B7lR=4@=wZ;ZUa|p%P)VH&|0V{sD4l%$qvI4MC!b_;?Y@V4cCt6Va*IH+
      zx@}q$Zmm+KAih5A_fN$9>$v?L_JqFT%E-n{_Kj?1f|Z{hKhrlbV%n73kIBh}^%~sK
      z!a21~sq=@?vbhfg(<FjBv)w8`eKw{mH^#RAU;h3dE5`AM_l#&@Vz!7MB0KUh40yjx
      z{hB?OZ4t{O(Ez>Ymu+hFt<V9rN!Qid3wo7+5=v&Z9#6AB(cflS6ZfZ>`(#Huv_Y)y
      z1m$yDb^l@AKziZB1a7WfFp%Cp`J;o@Y*p(vZ#SQ3R=`ksCUI7u4})(H=yw_{6wTM0
      z{D!}8el<ShmaWu#(6N~1#vgua8!Z`MCmG{7ub0IwS0~Pur~zk<^1%6>O`cy0H0nyI
      zKP}gX4ry;6`&};~Z%-Vm9Ka?OXgp~9U=uRhXduxSSDrOHV&G}t*Bn*R#BVC26+yhq
      z+FOMA1%Dz7kFd(mX-#~PRGOlgm3bLgj-2~WBU{y9MFWb!>)266mzzVW5!Q<I`n)Z(
      z$q^7w5bq}wzAXu}I(HmL&MGfH!Sf!r<isc7g`py;l1Qu*W<92Q{j=i1RXD~pzYR~G
      z=B@hUYbpusKQy$F^=DmQ<AeW+D-H<%f5h3p>^@EYRj37gd=9`<PPN$)PScZK7mv@}
      zV0vUN;iY>BU*M54rCYLghu)ipQPbceY7c(h)P``(pZgV_7{7m|YtRsmhi2Q??=2xC
      zBco@_;-^&aJq@if5_(3+gvY`Lm!@olRnq08nTmZC_#wN30VCU}(h9}!u;;S4Up8ij
      z^H0U_qzpX#B|o$jZxv@bEzgQ1_I-xM>6p$wYCMsaSAXiL>@g2^SZ+033=R1ZT~FO1
      zYLO5dpdvemW=<NaU2Q3>fGW2y6BfcqrIuNg?prP<Y_sVuX6kF}jjJ@K2J0j!7YRB4
      z_>Sww!KV{_4zSN5TYRy2H1vTwh0vzm2}$`shR>iBiC-<HwfG8ma3|+b>hpmu%t{^!
      zC?jV5#Zs~oRbE5J_yB}Ncvutr;jRgV^aP(1*^Od$R9MwAuEg4Z9|4_AK-ubeQnb)9
      zcqM-jUSu!DRLm|Dd63^4fj>vkF_xXt@)qVb4tm6QJi$QrF^S7SJNb-7b{qXrC=P;Z
      zRdg`gkJ0ytEZ0EqFwfCy^HOuaeWdWdoDu1#JzV5df8io*i|mTW3D`Smd#^=P?v_eT
      zD6?m*DK@xJ7g_!;8oP68_Ht);Ymf}`S8HKGju%>0u~IuQL|x&KR+@4<)qBLpq&p(y
      z&^Gdvwq8emhu$6C?}@oeN6^AM($joAM+_pL-0BqS3mTyWJP)YD!K3w`;%0KFX~|tS
      z5q%3EO!{+84ujZFV?RQ%LPEV|O0jf&H<C{#SR0P<B~lv#Y9l=0-u3jU%BLSf<{&{G
      zB2W874EYFC_dl3l5K&{VpMdR?Y#D0?o0(pfGT5}V%3{P^n3evrx>dwWmy|E`4?o<-
      z4clK=Ulw)Z4pW1zR2BXEJ(2qisOeYiv^O4akE+`KQ!NRr^CAR0GZ#1FL$y_RUPk6G
      zhs7~HvkR<N&ae<`%F^x0Dr2BdJ|dZ}9ub;8PSilRENfb(d3j-%l~XWp*3s4^e)5Qz
      z{ewq9T=-jJfzL(CE2p3K)Lrj6`E5U{!al@QPgm9yrZl67)hzX}23r-17ycSt3PO{z
      z2L-h@9L2-)mNggXZ>iT_laXWoOkE|4v9pu7#e-RmUnPh;gquYY+6>PRq`dgs4X(sO
      zZGBy_OYMpTyM8oG+ZDx8B*LOlE1xDs+&tH{Kn{Xwc|i%-Z0(2_=BmVjf}3^MULFIb
      zE<0Xg;crTLMxZMee(znPfei2pg4ByVv`c9&kcZ)M#|yxlh=A4*E8^AiFy{NiXU;)1
      zCoIzEy<h&c%@NMyRV90C5C@1rmFC+Cl>A9ilJYVpF~LpLbY&9$2*<Um^(#sXYENe(
      z&?x`<F$X@c8-cY>FJ^?+zz4mdyY^MI+4&tslj)BrY@`7ez13=HJUfTh%n8;_G2N}g
      zH(S5EwXe_DIz@~K1GLa1GTS9sFARqkJ$f=m4%HU0Thl2lZYEF@slT6Yrl^UfN2c6f
      z9ErR_H%JcB-Wy$m02$qGbA&L!nvuDlnwAVCFtj$u39@GL*4_GcGSkzWThhQ%m^=m|
      z3!o6%W5EM?tJqFC<a=^p*AsqTDGT)tx|Q>$K2!~`9^=TtWv&)CM&Xv)+-SJ+8D-D<
      z0F5uqZq^KXG;yw8sJURh&3L6kW75NMa<Kk97T)qU?sf>Udc@s%f{(%AMy17Vqq~{g
      zNe-WpYDLfinp7C)uDoe-Y}{;EQ=cRef05t#Mlyd~GzMAz2BA-cVig*7S~4^j!)D^I
      zb+n0wXy=+ly7tUK+<zdrX{Hh;-(+F!Mm!;N`D@hgWdQCyer%M%X7kJr$?U!0o$Qr%
      zNRtxp1>hDj-OBC$KD_W$*cfpE(6yudR!P<0%iO6l=?cw1BXI2Vi_lYDay4l(!xA+k
      ziklHvJ_l-0N<8hKODChJ5m-3q7u+6!-wWF=-1IE(Ik5wJB{&tEfmob>4;dps7B|-7
      zltMKQlD$#MrB9HYz`w{@GFdok;Xd2la3dWuZoE{zDj$QCIa(;K_j^aP4Sa5xRAXxR
      zrjAh&eK(|M_95?5?wqd@kt}FpWSZXo{qYylLOJgc7*C$ome{b-3Ny!MaYi-S!m|IH
      z#cx!|82v9TPwUc2ufFB>SG0v*mS4TC>S!2)`A{(eNzXj^CBo5^#~_T`o6FNSKOix#
      zqH;611GkTstuPPqk|}MySY9i?-gH|?CI!ADb5vL(B>Kc6`JLxq=gg>GDlGLedD9bA
      z$!SW~P^}YcLNbkf){CzWwUgK8?<18i>0n2A!o2BfR@;QcoWns$Q1Wf#O}zO_Lk7|E
      zI}4L)bNrsk+z-v7O5z&o9W)z0-6sTG-P{)w(fe%GyDM)6J+hh<V_sM5H&3Q@>R(bn
      z&R8M&eIr3(mgMc}Oh0;R`sC1teY3@&&#NiqkB#()x>E}JC$9?FSMhr5cGDWqRGt?-
      z(kR=3_Z5|~A%|C?C>mhv$P##6ng>1%sZA3brBbt=$`>j%b=&mgA*c!;J-qhIntmQN
      zXqmdjsp)Sj-kS1mqv4VOnc#G&6RNmjC}IDCuk1a|1PIOl@f*s{WQGq%f9r0bm>*BO
      z$z~B7nv;!T?^dT$myNYjYFnSoVDHhraU#V<O?CB<{JJ(V)^o;PUTgnLTyRPJ7-Bng
      zC%9H49W3Ve)I}|KH}KoA(qFRn?+usx?!<}N!<k)IcQ&ENOnIM&NAXYHp|tc*d?DY|
      zs}C4mEe0+KE8=Z8_~y2@D6Kt-$s3I7ROSS(o8lYfHmMLhczKQ8MD^D76eQb>=Uavn
      zg*|<Gz|X|fh7(E4#^{R^)4P~h#nb*E`M&2l&8LaCe~XMGbR4ntc*Z;?tq6AyMEpPW
      zTknm|x;Enmq$l5z9jU8(Lg~m$oo<ixCGe*7Q8K^2$g<ILNBm)-S#gSPDv>6@ir#Bb
      z%he=OZv!p#_<9HY4x~5e-ETGi!p_w%eUsSlx6qnUcxw3VMGP_Vc%BmZD~#Wfg-VN)
      ze@ETiHm8R}@62(29C_t(E3<6pFITD!e!DugV7(5FPuiYgl2@*OR>}oR!#@>YTl>*^
      z?;|!cN<w$e+3zY=ULy3ix#u`Uj>0{=Ykl;I+56}3vl}oUvKaRNOaz7>0XcA;wh4D)
      z?SmGoaX~e2ukD!d20B(?LII-n4!`JtCY$|rNWW*<+Ut_AQQ1HDm^e=liJ;B|7l+WL
      z@0qO)gqo8h!9OZa0#3e&2c}<=(=|Bb($TEtOZnAYN3`-uFJ<M(H-s|#_{8lHjZdR&
      z$OQU3QTl@XFMY`#Rb^J=-&Xq=n|-7ZQm)C?(;`w6`%d0FTh@<grS(O-&@f=}vvBnf
      zb7K7|rFKY~pOW(^kDeoZerok-*I&0t9$wK_ykO<&Mi<njZfUf7%wzua5&cW6g58x+
      z>ra;gTgUdM%Y&RI#Cj`=jDh_@K!yo_rLgHeHUbBRSl-<)Qag&gK^ORZuQ}e{5v_a_
      zBvWAg?Q^Tp>vp`CWj-U^pZA_?@#XMQ59z%m@fDy8(zPs)ywpTOQ5S2EXX#c<R|HxF
      zzcVSqhHvF5H0>>zK1poPGV)BnibA}Ioi(29Z+M%@MQ}f;23%rS=&HwZA+T!c&tb_P
      zy*%%1hwRD`cUytpJ>*sfHZRA_2%NEUX4pFR4urD@@q}l(^9<7F@cMnxAlJQ#SwS5O
      z+I$wVERk^cFFy$e2kvZMOk8R2{ZWJy{H;58a${V>+R~%DE7<`sXFjMFG(_{{4JQ8j
      zxPC3U5=%mNheIe7#S*flCM*A3r+bqJ_XfBWw5kc#_tsh%$$}le*pk(5_&$QeXiP5M
      zNFkD%6*o0rvdL^5+bqsJ*WJIT%jKLV-hb1aevPN5i=E;eO@|T7qX-jtG+vlVv*r|c
      z5Wb+Bf@c1yo9WVIM-Zh#_{#J}UR^pA#FH^t;}<GzU#a<{J3r><6#I0Imo{C{!spat
      zpAM<6)>EN}tJaKmCO*bh!uGJf4?VE@*7I$^;t%8a+e#ERHJBPP#2cZv#^aZDBA{y%
      z!)N7E=>mc|bHEN+f4t-IWIgD13t)Z8Uuc*y%<fr*+sFcqhk`opL$}eb!klrK;c}y6
      ztB+qiNZfPrPCfI-=@($y8K<<y#Q~2SCg-Z4TOgKGrB8?^XV9^1V_7<FlE5-Uc8_CE
      zT#U-0T<xA_By=WzUd!mzHLfmELtlkOgg$W!1A5Fi7DcxBb?shE*!8vBS*w1gug6{Y
      z&97H?DRq6EZyt*ecN=ajdw<k+U<*a>M+SC6ILzPm`I&#@?-k#=N|DC7hRj+Ri^=@R
      z`8@tEP#4pxD!d&-?5j<;QbzA$yk4C^PYKS`q)<hm+S0|-Wr5@$_93kR_b_hdf3o;>
      z$V%K#<4Z$7wpU+oDZTK8)~MS8TS;!544|z^tT?M;3}vzHLAsT}{CGkq)MxSgpo0}x
      zfPE{*ps<DbynxlcLiZe8fJGlW`}{_2GI%CAHOz%>S4;M#M={d1Gq4n>4Zvn(E~Yfj
      ziz;bu5xpvOL7w`fK9<CEn4l$n889C2sR^z8A+5@=Nr@n9mv?K+dwAzt-`kbG+(R2j
      zjFzVTJeY#V2B20A)T`9s9N?YJ9tC_f2fCz`b!bnMbUN7HN{pDejXaiQJd~E}PK_3>
      z=P#Fr*+<Q;a>pK9sk@dYA@Sl%mR6(Efz0pIBlylubK4@39o7psaVJX+il^%_eUraE
      zmvU8B-8-(hnSAVDb%{zaQQo)2kL(^t<Q`6Z6+6-128(N4j(!mKe{yZ;B5t?fls&M_
      zVxX*N890%#$$Pq^R}7*(09D(@eNpUc!>p9tTOD?CRGuxjx?k}P&`dR5JuMsp%MirX
      zpX*qHQ<iS4xyyGQd%1fFNH9A)-OWG0vArEkv-^ASY_SVhE&h($(JE@*JNEnZxhK;=
      z-w@$1>0I8)?Q8f_K{k@N0aH{(VVP%ps{eds`M~@;S%)lv;P7I6(m`T=w5}+&xjY^E
      zN}|S>n#Bd2eJYPn{t*ICpya(y38H~)2hJwXASej#jnVPuyC@EFwIOl~UL8P0me}a=
      z%>Rd(5)qQkl;|zynlbCck?0FUKqg!0=`cc>-ge0UA$K4Z(oqUy!)(Hw=?9e%7RKYK
      zDWyw=N6Sx)ndZ_;RbM`NITkC=QY53^UMCXcMXF0Nur-2&mE^MpwpN$~CX_x;Ha}Ym
      zk!CTHN2(ZW83FFrHJT#xaUDeGWZNAh5-?--z`I)L6Kzjfhk}^Ci0s#Zg#WJ)6@V6g
      z9`{LVry}~jx1Porc7WKo3|S7n(t@yv{b_xYU4<0|GJG9TpA2&@(|fc0ATU{OON-w6
      zS7{ufnO{y&*`PBp0z~+NxgsHQt!~Do%6YSg7ZhnfX7+kerh!RKmkgZn2PA38+cT^o
      zEj_~q@x~g9zO})+{Q&MHaAV?#8_^!nY<O1vSb7hFn;{LQH*gh=?zdi4Ui^5tyAsw}
      zfe!y~&LJKKOf2cg63ILV*u?Nrp{*)wcE;PYVkJ2~_6l9#u`lV3G;JB>ANzS;xJFI?
      z@X%u(VKt9k7YU@9HE#~bIFcH3@jPKLQs}d4N>bl}zRK<v-K!N!U~7Ipa-Z~s;XM5y
      zCy+3J%n;dyK+#iKrO~+Nm=QQ(Wvn<Jya~=sLsLcwe5%+z>dU->k5rbes0puAQm>^&
      zb$amKR&~MJBg960P9;|>=A}V7xQ&#TjKCM^OU8<|U2w2f<41)9$oa%Z=4+7p8qSIt
      zQ16yx#_`3Oy(Y6JV2i|w2`2ZM^`WujglR<l!}!;-qrt=W!(Q1)ZQ+PL=-&n|CN?ZR
      zU4ldhPERd~VT$cyl-~7fRhbtSU0>we<1P?1ntnu<EkOr4G9s8WCRWupJ|7hF9>H?Z
      z#kxrNo%u9hzndwhTfy?pTlV(NMNWwFzK2L;gdfp=>mO_)Jo^AD;zK=kmhc|Y7I=-J
      znH#%T<?@c~FZLDmo%nNj1vUJw?*k1qn)LYpQmqdZ(8B?<FA~sv3i*~Y)?O%ZQL%iA
      zOm-SOjd;Hd7Sk5sxR@CC20V7){BF1T7cG9l`MN!`?NDc!6T5o(N~j2x;dI_|&u7>+
      z$J&id`k0eX`yjuy5B_^P+OwO_i}17O-P&Z{SGKOTd&O|1$$KXy@y}A?zvc&=2HOSi
      zY;4}7v48uJH5}SJ$q?^FTH=Y};Kq=CaAycQ&sln6!0(@Yd48&WP-(b^S;(If%76?{
      z)rvUH1@@+X8v9)YFDR;cS{K!aZA7LP<mQC`Xw;{QJ=qCKyWTwAhs5~O>hDRgy0RDj
      zKHmC>d_P-*^5~&j=qjT)zd+xbRC^k{#eF|WUwe*ac^dZp3d3ZyU9?<9<vbwJ^AXKv
      z=ff+tjRu?)!2i-8t8lsd_ld4@&TE*X;&Nj9ufMn(+fwM&dw;$Y(lQ3tp8yNntf*%R
      zKeUswM6rdn7DTgh=C;Xqn0H+7Iy)9Qlt>=8+1_?-;Id9QeVVC2+A3gy1Q;!7d$|5F
      zj*oB=sveHC{tw%*AeX$gUkTBA-0f;4hv;GIt>G9Y<(68io);;-OIc>2lKpG5RBiJw
      zS5Xpzf&0D_fk>s?mR`M0j<3!hJNGDDLH?@0*Fps5Gc^?d`fuP6gAPA@8smS3<Ub5n
      z-}7Mmf)l9lVlLR+VdbrBT{)g%@&T7SGZb{D*Wjp<V>F0wTd+b$#{s}G%4;0I_8w5U
      zS8}Ou4GPQZy`27&BWVQmeD6cK^hCR_=19j9)_f1yLBT2?YrRdBals<5h>M__&yZ?6
      zw|hhz`*Dnhg2%7M@1AT7Gf|MkWM+q&bOjdl|7rmL#;n^Lf~>D0IYts>0aw56>1slT
      z&PA6Ube>@nQj^l*qP}hOSkJs}FuC8&t`WqEgP4TAHD0DQwOh=(6%DZ?ARK4+8=!k}
      zQ$#mY0_#k<MMB3O^^r-kmR5hU*9TRmT_*;oU!SMkUPqm3i(_t+nu9pcfNSEPU7ua0
      zIE@=MMaJ_o6^uVM4<W^|PJ!bk)K$!q^k#}~*0iP{PhWU{wecs+(K|6z9cCfHHIeGZ
      z%<|8W6XsA;A6zWGXfZ_L%%3elG(ZHs_Enx}Vx}Fr$JJk_*tEkt5M@kR3GU%G_8m>I
      zc7a~{66eK3&5FStq33RH>TV(Q#?|6M0Nk8ha5hdsHZEQ*E*>EsZXq5)Hcnn4PEMaM
      z#D)I>aBwoWvGo22z{ke<fZ@{O;uPZH7vkpn7l2vPvGoB!@y`sJPL}Rormhx%q`8xs
      g1+9XEsg;F>g{ir>OTWcGg)~3`p(;}@WfJs%0CiDF4FCWD
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-icons_70b2e1_256x240.png b/bower_components/jquery-ui/themes/overcast/images/ui-icons_70b2e1_256x240.png
      deleted file mode 100644
      index 0d823681ee7fae107edc9d703eb4997b602363de..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NFxEHMBj}(L{tLqY!=wNJ
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-icons_999999_256x240.png b/bower_components/jquery-ui/themes/overcast/images/ui-icons_999999_256x240.png
      deleted file mode 100644
      index 4ae5228b798cf2bfe378a6dbe34343c6f058e7a7..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7111
      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
      EKd(Mu3IG5A
      
      diff --git a/bower_components/jquery-ui/themes/overcast/images/ui-icons_fbc856_256x240.png b/bower_components/jquery-ui/themes/overcast/images/ui-icons_fbc856_256x240.png
      deleted file mode 100644
      index f696b3d1c17bf2051da6f36972edf7f463774495..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NFxEHMtI|Oy{1<cq%)tNv
      
      diff --git a/bower_components/jquery-ui/themes/overcast/jquery-ui.css b/bower_components/jquery-ui/themes/overcast/jquery-ui.css
      deleted file mode 100644
      index 895a66dd51..0000000000
      --- a/bower_components/jquery-ui/themes/overcast/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=dddddd&bgTextureHeader=glass&bgImgOpacityHeader=35&borderColorHeader=bbbbbb&fcHeader=444444&iconColorHeader=999999&bgColorContent=c9c9c9&bgTextureContent=inset_soft&bgImgOpacityContent=50&borderColorContent=aaaaaa&fcContent=333333&iconColorContent=999999&bgColorDefault=eeeeee&bgTextureDefault=glass&bgImgOpacityDefault=60&borderColorDefault=cccccc&fcDefault=3383bb&iconColorDefault=70b2e1&bgColorHover=f8f8f8&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=bbbbbb&fcHover=599fcf&iconColorHover=3383bb&bgColorActive=999999&bgTextureActive=inset_hard&bgImgOpacityActive=75&borderColorActive=999999&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=eeeeee&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=ffffff&fcHighlight=444444&iconColorHighlight=3383bb&bgColorError=c0402a&bgTextureError=flat&bgImgOpacityError=55&borderColorError=c0402a&fcError=ffffff&iconColorError=fbc856&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Trebuchet MS,Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Trebuchet MS,Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cccccc;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #c9c9c9 url("images/ui-bg_inset-soft_50_c9c9c9_1x100.png") 50% bottom repeat-x;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #bbbbbb;
      -	background: #dddddd url("images/ui-bg_glass_35_dddddd_1x400.png") 50% 50% repeat-x;
      -	color: #444444;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #444444;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee url("images/ui-bg_glass_60_eeeeee_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #3383bb;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #3383bb;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #bbbbbb;
      -	background: #f8f8f8 url("images/ui-bg_glass_100_f8f8f8_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #599fcf;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #599fcf;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #999999;
      -	background: #999999 url("images/ui-bg_inset-hard_75_999999_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #999999;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffffff;
      -	background: #eeeeee;
      -	color: #444444;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffffff;
      -	background: #eeeeee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #444444;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #c0402a;
      -	background: #c0402a;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_999999_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_999999_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_3383bb_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_3383bb_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_fbc856_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_70b2e1_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -4px -4px 4px #aaaaaa;
      -	box-shadow: -4px -4px 4px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/overcast/jquery-ui.min.css b/bower_components/jquery-ui/themes/overcast/jquery-ui.min.css
      deleted file mode 100644
      index cdbeaee138..0000000000
      --- a/bower_components/jquery-ui/themes/overcast/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=dddddd&bgTextureHeader=glass&bgImgOpacityHeader=35&borderColorHeader=bbbbbb&fcHeader=444444&iconColorHeader=999999&bgColorContent=c9c9c9&bgTextureContent=inset_soft&bgImgOpacityContent=50&borderColorContent=aaaaaa&fcContent=333333&iconColorContent=999999&bgColorDefault=eeeeee&bgTextureDefault=glass&bgImgOpacityDefault=60&borderColorDefault=cccccc&fcDefault=3383bb&iconColorDefault=70b2e1&bgColorHover=f8f8f8&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=bbbbbb&fcHover=599fcf&iconColorHover=3383bb&bgColorActive=999999&bgTextureActive=inset_hard&bgImgOpacityActive=75&borderColorActive=999999&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=eeeeee&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=ffffff&fcHighlight=444444&iconColorHighlight=3383bb&bgColorError=c0402a&bgTextureError=flat&bgImgOpacityError=55&borderColorError=c0402a&fcError=ffffff&iconColorError=fbc856&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Helvetica,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Helvetica,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #ccc}.ui-widget-content{border:1px solid #aaa;background:#c9c9c9 url("images/ui-bg_inset-soft_50_c9c9c9_1x100.png") 50% bottom repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #bbb;background:#ddd url("images/ui-bg_glass_35_dddddd_1x400.png") 50% 50% repeat-x;color:#444;font-weight:bold}.ui-widget-header a{color:#444}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #ccc;background:#eee url("images/ui-bg_glass_60_eeeeee_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#3383bb}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#3383bb;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #bbb;background:#f8f8f8 url("images/ui-bg_glass_100_f8f8f8_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#599fcf}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#599fcf;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #999;background:#999 url("images/ui-bg_inset-hard_75_999999_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#999;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fff;background:#eee;color:#444}.ui-state-checked{border:1px solid #fff;background:#eee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#444}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #c0402a;background:#c0402a;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_999999_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_999999_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_3383bb_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_3383bb_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_fbc856_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_70b2e1_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#eee;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-4px -4px 4px #aaa;box-shadow:-4px -4px 4px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/overcast/theme.css b/bower_components/jquery-ui/themes/overcast/theme.css
      deleted file mode 100644
      index e86b290ead..0000000000
      --- a/bower_components/jquery-ui/themes/overcast/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=dddddd&bgTextureHeader=glass&bgImgOpacityHeader=35&borderColorHeader=bbbbbb&fcHeader=444444&iconColorHeader=999999&bgColorContent=c9c9c9&bgTextureContent=inset_soft&bgImgOpacityContent=50&borderColorContent=aaaaaa&fcContent=333333&iconColorContent=999999&bgColorDefault=eeeeee&bgTextureDefault=glass&bgImgOpacityDefault=60&borderColorDefault=cccccc&fcDefault=3383bb&iconColorDefault=70b2e1&bgColorHover=f8f8f8&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=bbbbbb&fcHover=599fcf&iconColorHover=3383bb&bgColorActive=999999&bgTextureActive=inset_hard&bgImgOpacityActive=75&borderColorActive=999999&fcActive=ffffff&iconColorActive=454545&bgColorHighlight=eeeeee&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=ffffff&fcHighlight=444444&iconColorHighlight=3383bb&bgColorError=c0402a&bgTextureError=flat&bgImgOpacityError=55&borderColorError=c0402a&fcError=ffffff&iconColorError=fbc856&bgColorOverlay=eeeeee&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Trebuchet MS,Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Trebuchet MS,Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cccccc;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #c9c9c9 url("images/ui-bg_inset-soft_50_c9c9c9_1x100.png") 50% bottom repeat-x;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #bbbbbb;
      -	background: #dddddd url("images/ui-bg_glass_35_dddddd_1x400.png") 50% 50% repeat-x;
      -	color: #444444;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #444444;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee url("images/ui-bg_glass_60_eeeeee_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #3383bb;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #3383bb;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #bbbbbb;
      -	background: #f8f8f8 url("images/ui-bg_glass_100_f8f8f8_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #599fcf;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #599fcf;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #999999;
      -	background: #999999 url("images/ui-bg_inset-hard_75_999999_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #999999;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #ffffff;
      -	background: #eeeeee;
      -	color: #444444;
      -}
      -.ui-state-checked {
      -	border: 1px solid #ffffff;
      -	background: #eeeeee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #444444;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #c0402a;
      -	background: #c0402a;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_999999_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_999999_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_3383bb_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_3383bb_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_fbc856_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_70b2e1_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #eeeeee;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -4px -4px 4px #aaaaaa;
      -	box-shadow: -4px -4px 4px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png
      deleted file mode 100644
      index 8dc3b2a2eb6b06b950bfcfa8a4c55f73c5be1338..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 354
      zcmeAS@N?(olHy`uVBq!ia0vp^AU2l(6Oar#(6SOpv7|ftIx;Y9?C1WI$O_~uBzpw;
      zGB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpaffzx4X-KFyM^%eg`PR
      zUgGKN%Km_pk5`HF;mecTfkJ7XE{-7@=abKz{``IV#KZ&;cragkOZc0I$Dfp+TmM9I
      z0>d&3mzGYOTmeC~6uy?;HImcKIyi)l*ryBbc$1!ZfMJH)gA%h%0?dL8M{oXUW|{83
      z;fG}SjASWCg;fQuHs@9-nVw_R`ndSSwA_Q@KpRy{Tq8<S5=&C8l8aJ-6oZk0p_#6M
      yrLLh#h@r8Sv56IsZ2%+<ej2CpplHa=PsvQH#I2zt@9qYm1_n=8KbLh*2~7a9`*KDA
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_diagonal-maze_40_000000_10x10.png
      deleted file mode 100644
      index 82fbe8afbeabe169ba01fb08f62bfd83ce85479d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 301
      zcmeAS@N?(olHy`uVBq!ia0vp^AU2l(kYM<6(nkqMv7|ftIx;Y9?C1WI$O_~uBzpw;
      zGB8xBF)%c=FfjZA3N^f7U???UV0e|lz+g3lfkC`r&aOZkpafHrx4X;#|01gm&jNYu
      zC7!;n><>8kc$GLGzC5`dC}isC;uyklJvjjg4E&N494;Ko+|inF=!8y4=n0`?nH-90
      zCb~T7=?|}U<Oxoi93a!?+QG<>yh})p(Q*2IpaH5St`Q|Ei6yC4$wjF^iowXh&`j6B
      yQrFNV#L(Ev*u)CRHUN?aKaEp)P&DM`r(~v8;?~fScXtC&1B0ilpUXO@geCxe*i(1_
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_eceadf_60x60.png
      deleted file mode 100644
      index 4e689189913aebc3fb980ebd46b6f4593334d334..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10817
      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
      Gfd2uOtH}fa
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_10_f8f7f6_60x60.png
      deleted file mode 100644
      index 2e5afe1c5f6c6cf917f18f3f51c5be607a5b8ebe..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 9962
      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
      We+P)|O4Vxzz!ynHi3%};fd2vgj%RiN
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_eceadf_60x60.png
      deleted file mode 100644
      index 9d5371dd4238bc47e6d84e18bc538c817e97b40f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10587
      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
      T*l&XV4FJeUD2msJ8VCIkhbdOq
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_f7f3de_60x60.png
      deleted file mode 100644
      index 65509a644cf321c9003c797d2e012a25731cc3d8..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10949
      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
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_15_ffffff_60x60.png
      deleted file mode 100644
      index adb029d5fedfdeca6c8bcdb5c741908a82abc616..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4262
      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%0Dx<ISqA6n=fgjUyC}rl>JY6}K
      zn}S?qU=zY1P9IWUp^2m`R3#@@n8?93l#!QQ9Nr~RzR8JH=M~n9OwBz;zqMFX2B*^D
      zO|l6eabJ*MDVUhS&x*|InEO{pE-=xYlpYZf5RI8ja%>Zq3lm9MwC=i+6{~?CCc)g4
      z)A7(E?}?nqvD{&t{y)d-tl59&M~+3y-rl_gh1WMcBMlI*4=DRDoo~wEzra1EhN%@c
      z&$BA(-HDjm?Y^!-Ge_Y6y~A4O<wH%KLw&A=UPpNcUuP*mT@7(bSxs9RanTW>fzr5$
      pV%cgeskX0i{n-Bj_y_vjx)JgJ10DrT*RueCrKzn+t&!)0{{f>6FkS!v
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_65_654b24_60x60.png
      deleted file mode 100644
      index 516f8ee1e0f01de4dc6849c4347021ac98d53c13..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 14498
      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
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-bg_fine-grain_68_b83400_60x60.png
      deleted file mode 100644
      index 7a85373ef2d3a47a1701aba9252a95e9d761c18b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 11935
      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
      B$in~t
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_222222_256x240.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_222222_256x240.png
      deleted file mode 100644
      index f184400db5da441a76667625c74567d220208e3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      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
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_3572ac_256x240.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_3572ac_256x240.png
      deleted file mode 100644
      index 921d320c9ec302720bc7a2e9c5a23e29eee42ba4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MP}fwaQVSjTU-Jci)Bpeg
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_8c291d_256x240.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_8c291d_256x240.png
      deleted file mode 100644
      index f353bcab5db761b1631b436d1038d6f469573abe..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NMtWwtmD=d|{{r)uOpX8m
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_b83400_256x240.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_b83400_256x240.png
      deleted file mode 100644
      index a502853281e4ab4c14a56e3550c00de8136cb2e1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M>znIU=wRai3m;Qfy#N3J
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_fbdb93_256x240.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_fbdb93_256x240.png
      deleted file mode 100644
      index 76eb080bf9404405a52850c7c66573d8ac4e53ee..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NLtRsyN-cEUe*ykX>-GQu
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/pepper-grinder/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.css b/bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.css
      deleted file mode 100644
      index 11b31ee51c..0000000000
      --- a/bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ffffff&bgTextureHeader=fine_grain&bgImgOpacityHeader=15&borderColorHeader=d4d1bf&fcHeader=453821&iconColorHeader=b83400&bgColorContent=eceadf&bgTextureContent=fine_grain&bgImgOpacityContent=10&borderColorContent=d9d6c4&fcContent=1f1f1f&iconColorContent=222222&bgColorDefault=f8f7f6&bgTextureDefault=fine_grain&bgImgOpacityDefault=10&borderColorDefault=cbc7bd&fcDefault=654b24&iconColorDefault=b83400&bgColorHover=654b24&bgTextureHover=fine_grain&bgImgOpacityHover=65&borderColorHover=654b24&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=eceadf&bgTextureActive=fine_grain&bgImgOpacityActive=15&borderColorActive=d9d6c4&fcActive=140f06&iconColorActive=8c291d&bgColorHighlight=f7f3de&bgTextureHighlight=fine_grain&bgImgOpacityHighlight=15&borderColorHighlight=b2a266&fcHighlight=3a3427&iconColorHighlight=3572ac&bgColorError=b83400&bgTextureError=fine_grain&bgImgOpacityError=68&borderColorError=681818&fcError=ffffff&iconColorError=fbdb93&bgColorOverlay=6e4f1c&bgTextureOverlay=diagonal_maze&bgImgOpacityOverlay=20&opacityOverlay=60&bgColorShadow=000000&bgTextureShadow=diagonal_maze&bgImgOpacityShadow=40&opacityShadow=60&thicknessShadow=5px&offsetTopShadow=0&offsetLeftShadow=-10px&cornerRadiusShadow=18px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cbc7bd;
      -}
      -.ui-widget-content {
      -	border: 1px solid #d9d6c4;
      -	background: #eceadf url("images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat;
      -	color: #1f1f1f;
      -}
      -.ui-widget-content a {
      -	color: #1f1f1f;
      -}
      -.ui-widget-header {
      -	border: 1px solid #d4d1bf;
      -	background: #ffffff url("images/ui-bg_fine-grain_15_ffffff_60x60.png") 50% 50% repeat;
      -	color: #453821;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #453821;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cbc7bd;
      -	background: #f8f7f6 url("images/ui-bg_fine-grain_10_f8f7f6_60x60.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #654b24;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #654b24;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #654b24;
      -	background: #654b24 url("images/ui-bg_fine-grain_65_654b24_60x60.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #d9d6c4;
      -	background: #eceadf url("images/ui-bg_fine-grain_15_eceadf_60x60.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #140f06;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #d9d6c4;
      -	background-color: #140f06;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #140f06;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #b2a266;
      -	background: #f7f3de url("images/ui-bg_fine-grain_15_f7f3de_60x60.png") 50% 50% repeat;
      -	color: #3a3427;
      -}
      -.ui-state-checked {
      -	border: 1px solid #b2a266;
      -	background: #f7f3de;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #3a3427;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #681818;
      -	background: #b83400 url("images/ui-bg_fine-grain_68_b83400_60x60.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_b83400_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_8c291d_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_3572ac_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_fbdb93_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_b83400_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #6e4f1c url("images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png") 50% 50% repeat;
      -	opacity: .6;
      -	filter: Alpha(Opacity=60); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -10px 0 5px #000000;
      -	box-shadow: -10px 0 5px #000000;
      -}
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.min.css b/bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.min.css
      deleted file mode 100644
      index 02f157e996..0000000000
      --- a/bower_components/jquery-ui/themes/pepper-grinder/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ffffff&bgTextureHeader=fine_grain&bgImgOpacityHeader=15&borderColorHeader=d4d1bf&fcHeader=453821&iconColorHeader=b83400&bgColorContent=eceadf&bgTextureContent=fine_grain&bgImgOpacityContent=10&borderColorContent=d9d6c4&fcContent=1f1f1f&iconColorContent=222222&bgColorDefault=f8f7f6&bgTextureDefault=fine_grain&bgImgOpacityDefault=10&borderColorDefault=cbc7bd&fcDefault=654b24&iconColorDefault=b83400&bgColorHover=654b24&bgTextureHover=fine_grain&bgImgOpacityHover=65&borderColorHover=654b24&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=eceadf&bgTextureActive=fine_grain&bgImgOpacityActive=15&borderColorActive=d9d6c4&fcActive=140f06&iconColorActive=8c291d&bgColorHighlight=f7f3de&bgTextureHighlight=fine_grain&bgImgOpacityHighlight=15&borderColorHighlight=b2a266&fcHighlight=3a3427&iconColorHighlight=3572ac&bgColorError=b83400&bgTextureError=fine_grain&bgImgOpacityError=68&borderColorError=681818&fcError=ffffff&iconColorError=fbdb93&bgColorOverlay=6e4f1c&bgTextureOverlay=diagonal_maze&bgImgOpacityOverlay=20&opacityOverlay=60&bgColorShadow=000000&bgTextureShadow=diagonal_maze&bgImgOpacityShadow=40&opacityShadow=60&thicknessShadow=5px&offsetTopShadow=0&offsetLeftShadow=-10px&cornerRadiusShadow=18px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #cbc7bd}.ui-widget-content{border:1px solid #d9d6c4;background:#eceadf url("images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat;color:#1f1f1f}.ui-widget-content a{color:#1f1f1f}.ui-widget-header{border:1px solid #d4d1bf;background:#fff url("images/ui-bg_fine-grain_15_ffffff_60x60.png") 50% 50% repeat;color:#453821;font-weight:bold}.ui-widget-header a{color:#453821}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #cbc7bd;background:#f8f7f6 url("images/ui-bg_fine-grain_10_f8f7f6_60x60.png") 50% 50% repeat;font-weight:bold;color:#654b24}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#654b24;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #654b24;background:#654b24 url("images/ui-bg_fine-grain_65_654b24_60x60.png") 50% 50% repeat;font-weight:bold;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #d9d6c4;background:#eceadf url("images/ui-bg_fine-grain_15_eceadf_60x60.png") 50% 50% repeat;font-weight:bold;color:#140f06}.ui-icon-background,.ui-state-active .ui-icon-background{border:#d9d6c4;background-color:#140f06}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#140f06;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #b2a266;background:#f7f3de url("images/ui-bg_fine-grain_15_f7f3de_60x60.png") 50% 50% repeat;color:#3a3427}.ui-state-checked{border:1px solid #b2a266;background:#f7f3de}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#3a3427}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #681818;background:#b83400 url("images/ui-bg_fine-grain_68_b83400_60x60.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_b83400_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_8c291d_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_3572ac_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_fbdb93_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_b83400_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#6e4f1c url("images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png") 50% 50% repeat;opacity:.6;filter:Alpha(Opacity=60)}.ui-widget-shadow{-webkit-box-shadow:-10px 0 5px #000;box-shadow:-10px 0 5px #000}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/pepper-grinder/theme.css b/bower_components/jquery-ui/themes/pepper-grinder/theme.css
      deleted file mode 100644
      index 7449d7745c..0000000000
      --- a/bower_components/jquery-ui/themes/pepper-grinder/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ffffff&bgTextureHeader=fine_grain&bgImgOpacityHeader=15&borderColorHeader=d4d1bf&fcHeader=453821&iconColorHeader=b83400&bgColorContent=eceadf&bgTextureContent=fine_grain&bgImgOpacityContent=10&borderColorContent=d9d6c4&fcContent=1f1f1f&iconColorContent=222222&bgColorDefault=f8f7f6&bgTextureDefault=fine_grain&bgImgOpacityDefault=10&borderColorDefault=cbc7bd&fcDefault=654b24&iconColorDefault=b83400&bgColorHover=654b24&bgTextureHover=fine_grain&bgImgOpacityHover=65&borderColorHover=654b24&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=eceadf&bgTextureActive=fine_grain&bgImgOpacityActive=15&borderColorActive=d9d6c4&fcActive=140f06&iconColorActive=8c291d&bgColorHighlight=f7f3de&bgTextureHighlight=fine_grain&bgImgOpacityHighlight=15&borderColorHighlight=b2a266&fcHighlight=3a3427&iconColorHighlight=3572ac&bgColorError=b83400&bgTextureError=fine_grain&bgImgOpacityError=68&borderColorError=681818&fcError=ffffff&iconColorError=fbdb93&bgColorOverlay=6e4f1c&bgTextureOverlay=diagonal_maze&bgImgOpacityOverlay=20&opacityOverlay=60&bgColorShadow=000000&bgTextureShadow=diagonal_maze&bgImgOpacityShadow=40&opacityShadow=60&thicknessShadow=5px&offsetTopShadow=0&offsetLeftShadow=-10px&cornerRadiusShadow=18px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cbc7bd;
      -}
      -.ui-widget-content {
      -	border: 1px solid #d9d6c4;
      -	background: #eceadf url("images/ui-bg_fine-grain_10_eceadf_60x60.png") 50% 50% repeat;
      -	color: #1f1f1f;
      -}
      -.ui-widget-content a {
      -	color: #1f1f1f;
      -}
      -.ui-widget-header {
      -	border: 1px solid #d4d1bf;
      -	background: #ffffff url("images/ui-bg_fine-grain_15_ffffff_60x60.png") 50% 50% repeat;
      -	color: #453821;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #453821;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cbc7bd;
      -	background: #f8f7f6 url("images/ui-bg_fine-grain_10_f8f7f6_60x60.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #654b24;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #654b24;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #654b24;
      -	background: #654b24 url("images/ui-bg_fine-grain_65_654b24_60x60.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #d9d6c4;
      -	background: #eceadf url("images/ui-bg_fine-grain_15_eceadf_60x60.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #140f06;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #d9d6c4;
      -	background-color: #140f06;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #140f06;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #b2a266;
      -	background: #f7f3de url("images/ui-bg_fine-grain_15_f7f3de_60x60.png") 50% 50% repeat;
      -	color: #3a3427;
      -}
      -.ui-state-checked {
      -	border: 1px solid #b2a266;
      -	background: #f7f3de;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #3a3427;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #681818;
      -	background: #b83400 url("images/ui-bg_fine-grain_68_b83400_60x60.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_b83400_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_8c291d_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_3572ac_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_fbdb93_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_b83400_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #6e4f1c url("images/ui-bg_diagonal-maze_20_6e4f1c_10x10.png") 50% 50% repeat;
      -	opacity: .6;
      -	filter: Alpha(Opacity=60); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -10px 0 5px #000000;
      -	box-shadow: -10px 0 5px #000000;
      -}
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png b/bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_75_d0e5f5_1x400.png
      deleted file mode 100644
      index c252ff4c284d07a30a1b39c63f4f02f6d9fff8f3..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 394
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fy1o-U3d9>?FFU&zPED0BSd`}fnoOlI*key?yLr%7#B
      ziQED03^|ucrC+;l>S-?9X!)}2cJBkpo)7->KlsL<yILC`%GRL3(e&W8P4}w%CfD48
      zOV=t|yOphC7S3MVG;=Pu?wc6>pxq&h&gf0uu%+nWa?P#VcNsn}s!7?pLoIc=+-zZO
      zwy=J)wf|@EH7Wd%&3~{(y@X$TA<!!fswJ)wB`Jv|saDBFsX&Us$iUD{*T7QO&?Lmr
      t*vi<%%D_U`07x3dyX5Ua(U6;;l9^VCTZ5kDH5Q--22WQ%mvv4FO#nYQhUNeO
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_85_dfeffc_1x400.png b/bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_85_dfeffc_1x400.png
      deleted file mode 100644
      index 0892e8651e2ffb55078b2aa328f54544fde045d9..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 399
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fyNJzX3_JdVG;qR4fKLBjpx_rJ{t6`GnBFwgApeV@1?
      zVo!s0>%ljiWsGl=Om2SVi*k`T#B%eJS<bx!Po~$sJ?dU`Zjl!g!|_6y=hqANF3Suo
      zn7!96)py$FMatPX+t%gy_$Wl*YHSp_**M|&(^~!hOSk-ZJipys)Rb<$K73)$scHLi
      zk_-=;Z`*9?dvS3i|GmOF`=2v!?N@)>o3mIM=seXD*NBpo#FA92<f2p{#b9J$Xr^mm
      zscUEwVrXn-Y+_|#p=$sn4dPw$cA#j;%}>cptHiBAPx2ZIPy>UftDnm{r-UW|ZlsQK
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_95_fef1ec_1x400.png b/bower_components/jquery-ui/themes/redmond/images/ui-bg_glass_95_fef1ec_1x400.png
      deleted file mode 100644
      index 892e9dbf92b453bf4fe6fdb0b570a9d3312e190e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 390
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fxso-U3d9>?FF-^k0DDAE4$`F}B?=P`<50=?Jxyp$sj
      zFig8}q1&ZaSfYVfFYSljN!iYKcB~s41NK~9U$LrvOU0RY!pscE3uT_)zOb!Smg(fI
      z!a0*RrHN}_`e3$eU9Vj9+}@a_huWJKPr7)0cKG5DlcKjfC1#pgNydg*Nyt9a;nk4%
      zb9BpNi*x*yOzyfGDYNEtdH`LeTH+c}l9E`GYL#4+3Zxi}3=GY54J>sHO+pNft&B~q
      p3@mgFfTTgZOWqC?4Y~O#nQ4`{HRwrRV*zSl@O1TaS?83{1OTLbf;0dC
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png b/bower_components/jquery-ui/themes/redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png
      deleted file mode 100644
      index e9d904ed23c9466086f682f9d73d8304583e3776..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5882
      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
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png b/bower_components/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png
      deleted file mode 100644
      index 07b965bae7c20fae7cf99186b4d633491241749e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 391
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1nD*|cB2cK?)5S4F<NVw6iu{a)5(ggM-`jXr?M8-)r+KTd!O3OT
      zUvG)-Ysy#Vp5?iyf59!5gXix4uD@>_@3=?7_NU_ME~ik22j}%ayvwxS(lSF+Suye4
      zjGBet3l#Ua%`8>9CAfLXj+r+EeRV&o{o1m5J!ka$U-LeE=-t0z>ikoRWgq-!a!t-~
      zh|dUE9@d##`jhE<zM1U-OUEBTXQ`IBMwFx^mZVxG7o`Fz1|tJQGhG8qT|<))Lt`sr
      r6DtD?T>~I#5bu(=14Tn_eoAIqC2kFRlGj*(8W=oX{an^LB{Ts5{051E
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/bower_components/jquery-ui/themes/redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
      deleted file mode 100644
      index 537f408366aa8f020fe1363515fc44e47552ace5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 350
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1nD*|cB2XyF)5S4F<NVw6hFlE>A}kkAb|p;oa&6}9P|&FQfBWZA
      zCy(5jhhB*?bDu7qIg^v2ZeN3GdF^$jOP9K4&WqFO=}AgXIyFaS(j7;o&R!3Z-?zh<
      z9Ch*voaJ7Bs0dUHIdZ$GlELLN?=6pNEkmGfswJ)wB`Jv|saDBFsX&Us$iUD{*T7QO
      x&?Lmr*vi<%%D_U`07x3dyX5Ua(U6;;l9^VCTZ5kDH5Q--22WQ%mvv4FO#oJgZV3PY
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-icons_217bc0_256x240.png b/bower_components/jquery-ui/themes/redmond/images/ui-icons_217bc0_256x240.png
      deleted file mode 100644
      index 0ac61c0d0dd01088f30b2a684473aed5027cdd87..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      Mk)D}ug*GPszg_c!L;wH)
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-icons_2e83ff_256x240.png b/bower_components/jquery-ui/themes/redmond/images/ui-icons_2e83ff_256x240.png
      deleted file mode 100644
      index 264b221358985bc548f331520991a6e7a159f812..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MsB5ZIsfCXFFKV5l(*OVf
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-icons_469bdd_256x240.png b/bower_components/jquery-ui/themes/redmond/images/ui-icons_469bdd_256x240.png
      deleted file mode 100644
      index 3ad9bd2095ee1a467a1c3b662256c25f09aaff78..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pg$_FYzoRUuzW@LL
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-icons_6da8d5_256x240.png b/bower_components/jquery-ui/themes/redmond/images/ui-icons_6da8d5_256x240.png
      deleted file mode 100644
      index b58412256a012b6c12e398ad0ca63bd7ead31e67..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      Mp{}V;r4~Bwzu7&y4FCWD
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-icons_cd0a0a_256x240.png b/bower_components/jquery-ui/themes/redmond/images/ui-icons_cd0a0a_256x240.png
      deleted file mode 100644
      index ed1b23a81c2b1389423565a29deb53e883311bc2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FMgR(!vFvP
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-icons_d8e7f3_256x240.png b/bower_components/jquery-ui/themes/redmond/images/ui-icons_d8e7f3_256x240.png
      deleted file mode 100644
      index 421a8d72b3d5855e4fff49ecb3cc2247c451abb2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NV|{bI3LSL(e*wAF2w4CC
      
      diff --git a/bower_components/jquery-ui/themes/redmond/images/ui-icons_f9bd01_256x240.png b/bower_components/jquery-ui/themes/redmond/images/ui-icons_f9bd01_256x240.png
      deleted file mode 100644
      index f0fdc614309ba1c2b9245d6a3d0b8c36e5f3de04..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M>YD15YoX)*3q=m5p#T5?
      
      diff --git a/bower_components/jquery-ui/themes/redmond/jquery-ui.css b/bower_components/jquery-ui/themes/redmond/jquery-ui.css
      deleted file mode 100644
      index 409dac0804..0000000000
      --- a/bower_components/jquery-ui/themes/redmond/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=gloss_wave&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=glass&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=inset_hard&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #c5dbec;
      -}
      -.ui-widget-content {
      -	border: 1px solid #a6c9e2;
      -	background: #fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #4297d7;
      -	background: #5c9ccc url("images/ui-bg_gloss-wave_55_5c9ccc_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #c5dbec;
      -	background: #dfeffc url("images/ui-bg_glass_85_dfeffc_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #2e6e9e;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #2e6e9e;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #79b7e7;
      -	background: #d0e5f5 url("images/ui-bg_glass_75_d0e5f5_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #1d5987;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #1d5987;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #79b7e7;
      -	background: #f5f8f9 url("images/ui-bg_inset-hard_100_f5f8f9_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #e17009;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #79b7e7;
      -	background-color: #e17009;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #e17009;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fad42e;
      -	background: #fbec88;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fad42e;
      -	background: #fbec88;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
      -	color: #cd0a0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd0a0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd0a0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_469bdd_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_d8e7f3_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_217bc0_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f9bd01_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_2e83ff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_6da8d5_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/redmond/jquery-ui.min.css b/bower_components/jquery-ui/themes/redmond/jquery-ui.min.css
      deleted file mode 100644
      index e9c8ee05d7..0000000000
      --- a/bower_components/jquery-ui/themes/redmond/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=gloss_wave&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=glass&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=inset_hard&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Lucida Grande,Lucida Sans,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5dbec}.ui-widget-content{border:1px solid #a6c9e2;background:#fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #4297d7;background:#5c9ccc url("images/ui-bg_gloss-wave_55_5c9ccc_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5dbec;background:#dfeffc url("images/ui-bg_glass_85_dfeffc_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#2e6e9e}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#2e6e9e;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #79b7e7;background:#d0e5f5 url("images/ui-bg_glass_75_d0e5f5_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1d5987}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#1d5987;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #79b7e7;background:#f5f8f9 url("images/ui-bg_inset-hard_100_f5f8f9_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#e17009}.ui-icon-background,.ui-state-active .ui-icon-background{border:#79b7e7;background-color:#e17009}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#e17009;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fad42e;background:#fbec88;color:#363636}.ui-state-checked{border:1px solid #fad42e;background:#fbec88}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_469bdd_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_d8e7f3_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_217bc0_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f9bd01_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_6da8d5_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/redmond/theme.css b/bower_components/jquery-ui/themes/redmond/theme.css
      deleted file mode 100644
      index 64912a5dac..0000000000
      --- a/bower_components/jquery-ui/themes/redmond/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Lucida%20Grande%2CLucida%20Sans%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=5c9ccc&bgTextureHeader=gloss_wave&bgImgOpacityHeader=55&borderColorHeader=4297d7&fcHeader=ffffff&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=469bdd&bgColorDefault=dfeffc&bgTextureDefault=glass&bgImgOpacityDefault=85&borderColorDefault=c5dbec&fcDefault=2e6e9e&iconColorDefault=6da8d5&bgColorHover=d0e5f5&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=79b7e7&fcHover=1d5987&iconColorHover=217bc0&bgColorActive=f5f8f9&bgTextureActive=inset_hard&bgImgOpacityActive=100&borderColorActive=79b7e7&fcActive=e17009&iconColorActive=f9bd01&bgColorHighlight=fbec88&bgTextureHighlight=flat&bgImgOpacityHighlight=55&borderColorHighlight=fad42e&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Lucida Grande,Lucida Sans,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #c5dbec;
      -}
      -.ui-widget-content {
      -	border: 1px solid #a6c9e2;
      -	background: #fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #4297d7;
      -	background: #5c9ccc url("images/ui-bg_gloss-wave_55_5c9ccc_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #c5dbec;
      -	background: #dfeffc url("images/ui-bg_glass_85_dfeffc_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #2e6e9e;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #2e6e9e;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #79b7e7;
      -	background: #d0e5f5 url("images/ui-bg_glass_75_d0e5f5_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #1d5987;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #1d5987;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #79b7e7;
      -	background: #f5f8f9 url("images/ui-bg_inset-hard_100_f5f8f9_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #e17009;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #79b7e7;
      -	background-color: #e17009;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #e17009;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fad42e;
      -	background: #fbec88;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fad42e;
      -	background: #fbec88;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
      -	color: #cd0a0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd0a0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd0a0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_469bdd_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_d8e7f3_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_217bc0_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f9bd01_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_2e83ff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_6da8d5_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
      deleted file mode 100644
      index 4ca55a9b6901446dfc10d1e5d90a19ab4eb55fd9..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 393
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fy%o-U3d9>?FFSL9-H6lr)^KQBojr@3RpVm3z!!)lJ#
      zVXGqzGVlJbU_RJf(JETj{aE_oBT<*b-tj*!`|o?X%#xcyqAgM4KHJqPuV&q;{q`>I
      z1B+MUiJr9vN$<*>9G|F&=-dsQv0;%?yot%j%P074w*(g^i@m9I-Mh{614}p;vrV?+
      ziwpm|GY=c|$bVw9NmL2$cvGndbeL+1YeY#(Vo9o1a#1RfVlXl=G}AS()HO5-F*LR^
      rHnB3W&@}*(2JtR=J5V&_=BH$)RpQp5CwYwpsDZ)L)z4*}Q$iB}W7vc>
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
      deleted file mode 100644
      index 3d53f770291589ff8937caf932f10777f9943adc..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 265
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?O(Kg=CK)
      zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadQ&
      zFY)wsWq-iQ$E(CK?cGmBppc-ai(`n!`Q(fQiPpshB99svre>UAylk>D6DX-#;u=ws
      zl30>zm0Xkxq!^4049#>6EOiY{LJW<qj7_WzEOZTkq(Qt(-VPKEx%nxXX_dG&=t*8<
      Q0cv3IboFyt=akR{0Q1;E_y7O^
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_75_dadada_1x400.png
      deleted file mode 100644
      index c1ac3b9383140839b712832227bc499671155608..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 323
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451PXb3x;TbdoKCLzHNUelQKVN%Yw`N+l6lpJhW`?iMADN?
      z5_kM>@6>F6c#&OgSy|iie#v>i4Gq~03}+b_{!2@WIe0|D_yeDut1}}bgUmZ&g?PLC
      zdZ4kYC9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkupz(UsmNE*bu<n2Jwkei>9
      YnO2EggP!Cy7N7<OPgg&ebxsLQ0K3dvoB#j-
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png b/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
      deleted file mode 100644
      index 568c2e51e0038cf55a7411536ee5001bd8166e6b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 324
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451Pb|hx;TbdoKCKoe*DM*gDyA0Qo+NU(|OMKO3b^Tm~`j#
      zk&4F7kJ`eI&DGra)ZF~kj^+FG#LtwFH?B!ZONu!9!LzT^vEqQNO;;NW6T=k)A**{I
      z6ixumRV{IiC`m~yNwrEYN(E93Mh1pvx(1fIh9)6~##Y8ARt6Tj20+pv-X(7biiX_$
      al+3hB+#2*Gudx6%FnGH9xvX<aXaWE@TwWLe
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png b/bower_components/jquery-ui/themes/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
      deleted file mode 100644
      index 892e9dbf92b453bf4fe6fdb0b570a9d3312e190e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 390
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fxso-U3d9>?FF-^k0DDAE4$`F}B?=P`<50=?Jxyp$sj
      zFig8}q1&ZaSfYVfFYSljN!iYKcB~s41NK~9U$LrvOU0RY!pscE3uT_)zOb!Smg(fI
      z!a0*RrHN}_`e3$eU9Vj9+}@a_huWJKPr7)0cKG5DlcKjfC1#pgNydg*Nyt9a;nk4%
      zb9BpNi*x*yOzyfGDYNEtdH`LeTH+c}l9E`GYL#4+3Zxi}3=GY54J>sHO+pNft&B~q
      p3@mgFfTTgZOWqC?4Y~O#nQ4`{HRwrRV*zSl@O1TaS?83{1OTLbf;0dC
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/bower_components/jquery-ui/themes/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
      deleted file mode 100644
      index 2241416fd07d6b0fbcc51c3343741bc1ad04baef..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 325
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451Pb|jx;TbNT;6+bA#a0&0PDs1FCVSCnfIb6E6?<iiipFe
      z1wS=peoaz$@9E>s>{|HOrIFb@X2*xt-N$;Z{pRfWyk<wiqhF^E@amqLQ~LWctK1&7
      zzuO-2cK{7mEpd$~Nl7e8wMs5Z1yT$~28L$329~;pCLxB#R>me)1{S&oK++)IC2t3c
      dhTQy=%(P0}8uTQuu>dtNc)I$ztaD0e0sss9XHftE
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png b/bower_components/jquery-ui/themes/smoothness/images/ui-icons_222222_256x240.png
      deleted file mode 100644
      index f184400db5da441a76667625c74567d220208e3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      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
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png b/bower_components/jquery-ui/themes/smoothness/images/ui-icons_2e83ff_256x240.png
      deleted file mode 100644
      index 264b221358985bc548f331520991a6e7a159f812..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MsB5ZIsfCXFFKV5l(*OVf
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png b/bower_components/jquery-ui/themes/smoothness/images/ui-icons_454545_256x240.png
      deleted file mode 100644
      index e6e41cd07813ccd9c797d487fd183d318827c5b1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7090
      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
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.png b/bower_components/jquery-ui/themes/smoothness/images/ui-icons_888888_256x240.png
      deleted file mode 100644
      index 2f1cf26a504536126844b4a6bc64beaa83aae2a0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7111
      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
      Gfd2uk^IpCH
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png b/bower_components/jquery-ui/themes/smoothness/images/ui-icons_cd0a0a_256x240.png
      deleted file mode 100644
      index ed1b23a81c2b1389423565a29deb53e883311bc2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FMgR(!vFvP
      
      diff --git a/bower_components/jquery-ui/themes/smoothness/jquery-ui.css b/bower_components/jquery-ui/themes/smoothness/jquery-ui.css
      deleted file mode 100644
      index 294452f154..0000000000
      --- a/bower_components/jquery-ui/themes/smoothness/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #d3d3d3;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #ffffff;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #aaaaaa;
      -	background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;
      -	color: #222222;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #222222;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #d3d3d3;
      -	background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #555555;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #555555;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #999999;
      -	background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #212121;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #212121;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #aaaaaa;
      -	background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #212121;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #aaaaaa;
      -	background-color: #212121;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #212121;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fcefa1;
      -	background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fcefa1;
      -	background: #fbf9ee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
      -	color: #cd0a0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd0a0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd0a0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_2e83ff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_888888_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/smoothness/jquery-ui.min.css b/bower_components/jquery-ui/themes/smoothness/jquery-ui.min.css
      deleted file mode 100644
      index dbd7235360..0000000000
      --- a/bower_components/jquery-ui/themes/smoothness/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d3d3d3}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#212121;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-icon-background,.ui-state-active .ui-icon-background{border:#aaa;background-color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #fcefa1;background:#fbf9ee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/smoothness/theme.css b/bower_components/jquery-ui/themes/smoothness/theme.css
      deleted file mode 100644
      index af8904f6bf..0000000000
      --- a/bower_components/jquery-ui/themes/smoothness/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #d3d3d3;
      -}
      -.ui-widget-content {
      -	border: 1px solid #aaaaaa;
      -	background: #ffffff;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #aaaaaa;
      -	background: #cccccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;
      -	color: #222222;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #222222;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #d3d3d3;
      -	background: #e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #555555;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #555555;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #999999;
      -	background: #dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #212121;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #212121;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #aaaaaa;
      -	background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #212121;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #aaaaaa;
      -	background-color: #212121;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #212121;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fcefa1;
      -	background: #fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fcefa1;
      -	background: #fbf9ee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
      -	color: #cd0a0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd0a0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd0a0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_454545_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_2e83ff_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_888888_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_glass_55_fcf0ba_1x400.png
      deleted file mode 100644
      index dc35db0f69f55f32a6970d5eacc959ea9c9fbc68..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 391
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8=fjsLw*!T`JzX3_JdVFTzmV%tf<)`X@7Ast7j(Sa9#zKJbT@Ac
      zN7!R|(`wnchTR>ap9S{td^Te_&9?1sW5$n5!f_S_8Jn-~s^DgjIbJv?-}&;C)On|?
      zwr%K^*tl`7#OA9r%R>3{`3;p<iE#!_<tPggXq@~^Y2%7j*}>K?^wi#zzCFgK^H#IR
      z?q&R(GMVE)73B*U<)&<^amWHXOSQx`q9i4;B-JXpC>2OC7#SFv=^9w-8k&R{8e18g
      pSOM7vK+@o+aVigrhTQy=%(P0}8andsZUAav@O1TaS?83{1OV<ag^&OM
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_gloss-wave_100_ece8da_500x100.png
      deleted file mode 100644
      index 664df97270f2e5f1ff5acc1496f09983ed60d9c9..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5817
      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
      R<Gu~IEN!nh{CxNKe*=&}mk0m=
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_f5f3e5_1x100.png
      deleted file mode 100644
      index 23a0ed4beafe8416af4dc5acd225d3ccffb069bd..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 394
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!w7r;B5V#`)wQe}8X(cim2n4FuW(xx~NrKIA@Z+;%^@
      z?(UzWxt)oUhoAgc;@Kbfzvkad6Jcj-=YRhf^Vr}2f8*!DwukBG_+OTvm#n+<Kkm!6
      zribnqwolHtklZ)_|FXYX+QQCn|3CS^T5{jrzo&j4YV1t>_W#@e{Sy05)&<r*JO1J8
      z>*weF=kskbZx>-@kaTi7aWsEc0nlZtC9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z
      r%GksT$Tk3y20x8cc~CUu=BH$)RpQprk#~0kPy>UftDnm{r-UW|R`Hcs
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_100_fafaf4_1x100.png
      deleted file mode 100644
      index 7b5e9468663640eb26dab7fd6939f7e4a34f520b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 379
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA!wbr;B5V#`(ABH}W<G2sAvjH)k*oFk))9U}834o!i>E
      zH2Xrpo>R|EMS2{3A{c5uz0<R3+-kV-*DL<=^1WOPe}1+s$~kn#M?h`aV>K5g*|_Sx
      z_8U?%?GyKYUBBDF;6lRG(3d@WyKG`PSfUh#`u!v%cP?lZi}pNcx&HO`+4e`JC%v_n
      zDh#Qa4s?oYiEBhjN@7W>RdP`(kYX@0Ff`LOu+%j)2{AObGB&XSvJHTw!B68<9uy6^
      b`6-!cmAEx@<lWr>)WG2B>gTe~DWM4fYP5Tk
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_15_459e00_1x100.png
      deleted file mode 100644
      index a939422c8ed97cdecce64d3ed7ab24683cf2ed5a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 380
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@c93pQ7sn8d^KZ{D<UJH1(Ry)q_v^_VGn)MZ)Epc|RX9|H
      zd=B$GF?43`(+s%F5Zjd2_&=G+MrFm~{%40jSA|4OT4FE1;ClD&tq%^};JI>PR$u6q
      zzSU_yKFhkEoCpb=VVi0rV?FiaY~fIq$ur%GN^};R`R6`P@Nv$TExr8AdYk<rX;*2h
      z-u$WVfk3yYmbgZgq$HN4S|t~y0x1R~14A=i14~^)lMq8=D`OKYAlm>)8vHa)<w4Pq
      bo1c=IR*73fN8a5HKn)C@u6{1-oD!M<iUob(
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-hard_95_cccccc_1x100.png
      deleted file mode 100644
      index 709df129ceb4f866f898a2e21aea46c53412bfaa..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 317
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s7W4_}_#4is|rba4!kxSU+^b9QHA;)4s7%l>bdoVPdm*Y`Ou@0+!;
      zGx^j<OXlrO`6Yg;;H$ymRQ_f4=V$)&H2C{D;a9%(f_EtiNkBX2tdYo<-hUcoplXS0
      zL`h0wNvc(HQ7VvPFfuSS(>1WvH8cq^G`2D}u>!IUfTY1s<5V6L4Y~O#nQ4`{HFV_N
      R-2l|U;OXk;vd$@?2>|m^Wf1@X
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_25_67b021_1x100.png
      deleted file mode 100644
      index fc065b1e229db842127dd018f4637e1d1d007a19..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 411
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(IFPZ!4!jq^_@C<Yx4kYL;YGiJTO)x}Q|C2LX_?Qk%f
      zEMX$(BdYiD#4%;<EUELnL4n`D?C<!-XArz~bJE#YZ-4&&oSE-ANsi5a*Q=CCZehVj
      zMTVZjt3wTryg8Be!e?3Uxs<J6p81F_ja;ET)3tQUGaug~omKC|PS$)BnjL-p?yi(g
      zw_f-hJa90@^oyF|(JZdL#<RoIwq0xQyY=_$()zymyL^e}+z!m~K&PsfxJHzuB$lLF
      zB^RXvDF!10Lo;0iOI<^g5JO`tV-qVN+W<%!{4`GGLD7(#pOTqYiCaTQ-rWsA4Gf;H
      KelF{r5}E*-50m8p
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_highlight-soft_95_ffedad_1x100.png
      deleted file mode 100644
      index 0cc1385ff29489296c99d673062c1a93c396a862..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 409
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@cA(H)PZ!4!jq^_@81fw~kZ_N;>pYvbX|lu-y+Y~qjH+g@
      z9S-Ty+oP-^S_BqNb`5&hFzw2t|C?{fG#vRdY5SfhindkDFEBjlFG%YOdAGThabnGq
      zO{E>YBD=ORHlF4Y*|C_>dAj1=vX^%m&i792N(pw>vRW;mIbUbCM`f~{bjF7_%CW0A
      zuWht3ciI&)>0P>F(LTm}%geVMR=&Ew|I6hH#*oh;n`X=wXahP_wZt`|BqgyV)hf9t
      z6-Y4{85o-B8d&NYnuHh{TN#^J0oevX(%`3YDi4Z=-29Zxv`X9>I`Zyr0BT_HboFyt
      I=akR{0AIk6BLDyZ
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png b/bower_components/jquery-ui/themes/south-street/images/ui-bg_inset-soft_15_2b2922_1x100.png
      deleted file mode 100644
      index d5fe532f9bc781692cf05105a20f2100102600cf..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 380
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1eE9O@c93pQ7sn8d^KU2a6>JJ%X#U*#$&kgV)nLj!ONk46EHAKa
      zuShyBBEm6OIAiMRr|UarEn9c`(j=9?52a&DuKMO$v}<j5vo)F7H!njdU(C4Zd8X=F
      z9k&#g&$qTTbzM6lxsy?tk2~cF`|aZB)61<4-*ZpCYN#>GkNM)4FI`~^h3(58b3OX5
      zTx4=2T>|J9)e_f;l9a@fRIB8oR3OD*WMF8fYhbBsXcA&*Y-Ma>1!NllNrRupsXQne
      ca`RI%(<*Um=*YXf0jPn&)78&qol`;+0L2!6jsO4v
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-icons_808080_256x240.png b/bower_components/jquery-ui/themes/south-street/images/ui-icons_808080_256x240.png
      deleted file mode 100644
      index 54650300df8ddd21a0a3670ba332258c0c67620d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7117
      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
      ay^g)Lov-_#{Xc(ffQr&{#VUEL(EkC~GEyf1
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-icons_847e71_256x240.png b/bower_components/jquery-ui/themes/south-street/images/ui-icons_847e71_256x240.png
      deleted file mode 100644
      index f32c2d49a81dee3f39add117e413557aee9ff763..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M^vrZCwJ{0*1+V{$EC2ui
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-icons_8DC262_256x240.png b/bower_components/jquery-ui/themes/south-street/images/ui-icons_8DC262_256x240.png
      deleted file mode 100644
      index 00801a32cb87f6d57cd4d295ee188080d1646ddb..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pg$_FYzc2Zt+5i9m
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-icons_cd0a0a_256x240.png b/bower_components/jquery-ui/themes/south-street/images/ui-icons_cd0a0a_256x240.png
      deleted file mode 100644
      index ed1b23a81c2b1389423565a29deb53e883311bc2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FMgR(!vFvP
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-icons_eeeeee_256x240.png b/bower_components/jquery-ui/themes/south-street/images/ui-icons_eeeeee_256x240.png
      deleted file mode 100644
      index 3021e35acc4b30f8e060dfd90479d5fb40945a13..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7010
      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
      SIsNnT1<+K}Q>{_93;Pe7<v;QO
      
      diff --git a/bower_components/jquery-ui/themes/south-street/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/south-street/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/south-street/jquery-ui.css b/bower_components/jquery-ui/themes/south-street/jquery-ui.css
      deleted file mode 100644
      index ab6e8efc44..0000000000
      --- a/bower_components/jquery-ui/themes/south-street/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ece8da&bgTextureHeader=gloss_wave&bgImgOpacityHeader=100&borderColorHeader=d4ccb0&fcHeader=433f38&iconColorHeader=847e71&bgColorContent=f5f3e5&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dfd9c3&fcContent=312e25&iconColorContent=808080&bgColorDefault=459e00&bgTextureDefault=highlight_hard&bgImgOpacityDefault=15&borderColorDefault=327E04&fcDefault=ffffff&iconColorDefault=eeeeee&bgColorHover=67b021&bgTextureHover=highlight_soft&bgImgOpacityHover=25&borderColorHover=327E04&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=fafaf4&bgTextureActive=highlight_hard&bgImgOpacityActive=100&borderColorActive=d4ccb0&fcActive=459e00&iconColorActive=8DC262&bgColorHighlight=fcf0ba&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=e8e1b5&fcHighlight=363636&iconColorHighlight=8DC262&bgColorError=ffedad&bgTextureError=highlight_soft&bgImgOpacityError=95&borderColorError=e3a345&fcError=cd5c0a&iconColorError=cd0a0a&bgColorOverlay=2b2922&bgTextureOverlay=inset_soft&bgImgOpacityOverlay=15&opacityOverlay=90&bgColorShadow=cccccc&bgTextureShadow=highlight_hard&bgImgOpacityShadow=95&opacityShadow=20&thicknessShadow=12px&offsetTopShadow=-12px&offsetLeftShadow=-12px&cornerRadiusShadow=10px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #327E04;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dfd9c3;
      -	background: #f5f3e5 url("images/ui-bg_highlight-hard_100_f5f3e5_1x100.png") 50% top repeat-x;
      -	color: #312e25;
      -}
      -.ui-widget-content a {
      -	color: #312e25;
      -}
      -.ui-widget-header {
      -	border: 1px solid #d4ccb0;
      -	background: #ece8da url("images/ui-bg_gloss-wave_100_ece8da_500x100.png") 50% 50% repeat-x;
      -	color: #433f38;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #433f38;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #327E04;
      -	background: #459e00 url("images/ui-bg_highlight-hard_15_459e00_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #327E04;
      -	background: #67b021 url("images/ui-bg_highlight-soft_25_67b021_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #d4ccb0;
      -	background: #fafaf4 url("images/ui-bg_highlight-hard_100_fafaf4_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #459e00;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #d4ccb0;
      -	background-color: #459e00;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #459e00;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #e8e1b5;
      -	background: #fcf0ba url("images/ui-bg_glass_55_fcf0ba_1x400.png") 50% 50% repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #e8e1b5;
      -	background: #fcf0ba;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #e3a345;
      -	background: #ffedad url("images/ui-bg_highlight-soft_95_ffedad_1x100.png") 50% top repeat-x;
      -	color: #cd5c0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd5c0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd5c0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_808080_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_847e71_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_8DC262_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_8DC262_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_eeeeee_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #2b2922 url("images/ui-bg_inset-soft_15_2b2922_1x100.png") 50% bottom repeat-x;
      -	opacity: .9;
      -	filter: Alpha(Opacity=90); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -12px -12px 12px #cccccc;
      -	box-shadow: -12px -12px 12px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/south-street/jquery-ui.min.css b/bower_components/jquery-ui/themes/south-street/jquery-ui.min.css
      deleted file mode 100644
      index bc4714179c..0000000000
      --- a/bower_components/jquery-ui/themes/south-street/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ece8da&bgTextureHeader=gloss_wave&bgImgOpacityHeader=100&borderColorHeader=d4ccb0&fcHeader=433f38&iconColorHeader=847e71&bgColorContent=f5f3e5&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dfd9c3&fcContent=312e25&iconColorContent=808080&bgColorDefault=459e00&bgTextureDefault=highlight_hard&bgImgOpacityDefault=15&borderColorDefault=327E04&fcDefault=ffffff&iconColorDefault=eeeeee&bgColorHover=67b021&bgTextureHover=highlight_soft&bgImgOpacityHover=25&borderColorHover=327E04&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=fafaf4&bgTextureActive=highlight_hard&bgImgOpacityActive=100&borderColorActive=d4ccb0&fcActive=459e00&iconColorActive=8DC262&bgColorHighlight=fcf0ba&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=e8e1b5&fcHighlight=363636&iconColorHighlight=8DC262&bgColorError=ffedad&bgTextureError=highlight_soft&bgImgOpacityError=95&borderColorError=e3a345&fcError=cd5c0a&iconColorError=cd0a0a&bgColorOverlay=2b2922&bgTextureOverlay=inset_soft&bgImgOpacityOverlay=15&opacityOverlay=90&bgColorShadow=cccccc&bgTextureShadow=highlight_hard&bgImgOpacityShadow=95&opacityShadow=20&thicknessShadow=12px&offsetTopShadow=-12px&offsetLeftShadow=-12px&cornerRadiusShadow=10px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:segoe ui,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:segoe ui,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #327E04}.ui-widget-content{border:1px solid #dfd9c3;background:#f5f3e5 url("images/ui-bg_highlight-hard_100_f5f3e5_1x100.png") 50% top repeat-x;color:#312e25}.ui-widget-content a{color:#312e25}.ui-widget-header{border:1px solid #d4ccb0;background:#ece8da url("images/ui-bg_gloss-wave_100_ece8da_500x100.png") 50% 50% repeat-x;color:#433f38;font-weight:bold}.ui-widget-header a{color:#433f38}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #327E04;background:#459e00 url("images/ui-bg_highlight-hard_15_459e00_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #327E04;background:#67b021 url("images/ui-bg_highlight-soft_25_67b021_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #d4ccb0;background:#fafaf4 url("images/ui-bg_highlight-hard_100_fafaf4_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#459e00}.ui-icon-background,.ui-state-active .ui-icon-background{border:#d4ccb0;background-color:#459e00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#459e00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #e8e1b5;background:#fcf0ba url("images/ui-bg_glass_55_fcf0ba_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #e8e1b5;background:#fcf0ba}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #e3a345;background:#ffedad url("images/ui-bg_highlight-soft_95_ffedad_1x100.png") 50% top repeat-x;color:#cd5c0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd5c0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd5c0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_808080_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_847e71_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_8DC262_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_8DC262_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_eeeeee_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#2b2922 url("images/ui-bg_inset-soft_15_2b2922_1x100.png") 50% bottom repeat-x;opacity:.9;filter:Alpha(Opacity=90)}.ui-widget-shadow{-webkit-box-shadow:-12px -12px 12px #ccc;box-shadow:-12px -12px 12px #ccc}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/south-street/theme.css b/bower_components/jquery-ui/themes/south-street/theme.css
      deleted file mode 100644
      index f6c88b43ea..0000000000
      --- a/bower_components/jquery-ui/themes/south-street/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=segoe%20ui%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=ece8da&bgTextureHeader=gloss_wave&bgImgOpacityHeader=100&borderColorHeader=d4ccb0&fcHeader=433f38&iconColorHeader=847e71&bgColorContent=f5f3e5&bgTextureContent=highlight_hard&bgImgOpacityContent=100&borderColorContent=dfd9c3&fcContent=312e25&iconColorContent=808080&bgColorDefault=459e00&bgTextureDefault=highlight_hard&bgImgOpacityDefault=15&borderColorDefault=327E04&fcDefault=ffffff&iconColorDefault=eeeeee&bgColorHover=67b021&bgTextureHover=highlight_soft&bgImgOpacityHover=25&borderColorHover=327E04&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=fafaf4&bgTextureActive=highlight_hard&bgImgOpacityActive=100&borderColorActive=d4ccb0&fcActive=459e00&iconColorActive=8DC262&bgColorHighlight=fcf0ba&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=e8e1b5&fcHighlight=363636&iconColorHighlight=8DC262&bgColorError=ffedad&bgTextureError=highlight_soft&bgImgOpacityError=95&borderColorError=e3a345&fcError=cd5c0a&iconColorError=cd0a0a&bgColorOverlay=2b2922&bgTextureOverlay=inset_soft&bgImgOpacityOverlay=15&opacityOverlay=90&bgColorShadow=cccccc&bgTextureShadow=highlight_hard&bgImgOpacityShadow=95&opacityShadow=20&thicknessShadow=12px&offsetTopShadow=-12px&offsetLeftShadow=-12px&cornerRadiusShadow=10px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: segoe ui,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #327E04;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dfd9c3;
      -	background: #f5f3e5 url("images/ui-bg_highlight-hard_100_f5f3e5_1x100.png") 50% top repeat-x;
      -	color: #312e25;
      -}
      -.ui-widget-content a {
      -	color: #312e25;
      -}
      -.ui-widget-header {
      -	border: 1px solid #d4ccb0;
      -	background: #ece8da url("images/ui-bg_gloss-wave_100_ece8da_500x100.png") 50% 50% repeat-x;
      -	color: #433f38;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #433f38;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #327E04;
      -	background: #459e00 url("images/ui-bg_highlight-hard_15_459e00_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #327E04;
      -	background: #67b021 url("images/ui-bg_highlight-soft_25_67b021_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #d4ccb0;
      -	background: #fafaf4 url("images/ui-bg_highlight-hard_100_fafaf4_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #459e00;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #d4ccb0;
      -	background-color: #459e00;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #459e00;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #e8e1b5;
      -	background: #fcf0ba url("images/ui-bg_glass_55_fcf0ba_1x400.png") 50% 50% repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #e8e1b5;
      -	background: #fcf0ba;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #e3a345;
      -	background: #ffedad url("images/ui-bg_highlight-soft_95_ffedad_1x100.png") 50% top repeat-x;
      -	color: #cd5c0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd5c0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd5c0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_808080_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_847e71_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_8DC262_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_8DC262_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_eeeeee_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #2b2922 url("images/ui-bg_inset-soft_15_2b2922_1x100.png") 50% bottom repeat-x;
      -	opacity: .9;
      -	filter: Alpha(Opacity=90); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -12px -12px 12px #cccccc;
      -	box-shadow: -12px -12px 12px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-bg_glass_45_0078ae_1x400.png b/bower_components/jquery-ui/themes/start/images/ui-bg_glass_45_0078ae_1x400.png
      deleted file mode 100644
      index 5890f6f01e775afb3caf19870788701f768d647a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 403
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fz2JzX3_JdP({5T033p06Ox3<8HWOuc%87GKeDEq--r
      zw)kfIV@8Ja(*K;YnAz#t;5ql=>_+XS-;N)<@3Y2!hPa_`Vp8=1ox>&lop0?n^IVQq
      z+m<lRLro1xJ@ZgY>$nr!amQBen#{A`J=QZL>J9W$W*s`BbYjW57e|lm={21HQBOG8
      zaItLjs|O#xK<zyc$nZ}@`S6=ZXWjvws9NG0QIe8al4_M)lnSI6j0_CTbPX(Z4NXD}
      ujjfDLtPCu44S=LUyi48=6b-rgDVb@NxHafWUSk1jVDNPHb6Mw<&;$UcWsFw<
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-bg_glass_55_f8da4e_1x400.png b/bower_components/jquery-ui/themes/start/images/ui-bg_glass_55_f8da4e_1x400.png
      deleted file mode 100644
      index adcc7bd90b5969ead943c33870d3605184c882b1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 403
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fz2JzX3_JdVFTZ^(BrL4xhU_u9|@dtc}rQ{!p#QppYC
      zQ!Hd+YvvA7U+ukvvwef7uwh~$laq8ISK^Ol>2)8X;+vCzrtlm#=vn_c&W`W6^t|5S
      z`XDaZH!*r&c9bs_`242L>ClC6r&AZMCmlQC-`W#sARJ^?tE$2itIJdIUE1*3(cTul
      z?Rw(3Vls6swix{H-;yYC?EMdh`z`Wvs&{Tl1D&W^;u=wsl30>zm0Xkxq!^4049#>6
      zEOiY{LJW<qj7_WzEOZTkq(Qt(-VPKEx%nxXX_dG&=t*8<0cv3IboFyt=akR{0JpA$
      ACIA2c
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-bg_glass_75_79c9ec_1x400.png b/bower_components/jquery-ui/themes/start/images/ui-bg_glass_75_79c9ec_1x400.png
      deleted file mode 100644
      index bc0d22bf7250172f8de0b7ae2a4af92c5fcef873..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 406
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fytJY5_^JdVFTzmV%tf<)`X;=bS0T~g9!bH_EUxM^*m
      z6Zs~txzM#cL8?P%Ru139qovI^)`&U&=sx+tw4+Vm_QN*u*`K%mJHyJ*kSNjiu~hHp
      z;~!F<+IcsFb5BY><JxmAM#CdSDOf@~N%4AMcWcZlM(x&>zg9eX<liIuQK9^jtTk(=
      zSK1B!eBb-i)V@e`2bWy@(VuzPpy&QaHvRWX$8Rj0s||FeYKdz^NlIc#s#S7PDv)9@
      zGB7mLHL%n*Gzl>@wlX%cGO*A!0FnmrE_pjpH00)|WTsW()}SYOjRmNI!PC{xWt~$(
      F695ahjjsRz
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png b/bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_45_e14f1c_500x100.png
      deleted file mode 100644
      index 313210b5fddb45f9d6eac34b1a8d35fbe3d2cfe7..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5922
      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
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png b/bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_50_6eac2c_500x100.png
      deleted file mode 100644
      index baad868369cfa04fbacf28b7c87f74ca3b309385..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5964
      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
      Re%yGYt@X7_#TRe>@n43y7eoL6
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png b/bower_components/jquery-ui/themes/start/images/ui-bg_gloss-wave_75_2191c0_500x100.png
      deleted file mode 100644
      index 2b354f0b61837006ae2544b2a87238dc34cc4418..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6035
      zcmb_gX;@R&x=!t}v|7cZf?!qZfFg*92q;r(6)B-IHUSa_B@B`XQAogmAykV9f>dP^
      zgeaqs$v{FR1fn8X#xO`26RHRSLZFZd5&}2iIX(B@=ehrGe(d$GwV%E7ed`<6`|cEX
      zSEntTc5eaz09%}YI`0Vpd?D4~;B6Z;SE^-7xMuiA*x8F`0RURY=H<&9HS_P`KY3mR
      z0OAe<0Exc=07}hL;v@ioIROAnUjhJZashx{*PgIE>@+vN3UYBezq<bW#z!%tS<yl}
      zUv$*^^P8<(4t$+GyR;tw(9Ll^fA*IfL*fEAQg9O{StLga5`zyMe6;br{6Nr-Jt2kG
      zr&IUrII?~0&{qd!$KnpB0z%9;=o_Zp`t7P={$-t`Y1><FdmOSjZ!Z04AKv`*bQ*m7
      zis6HFl63&!ENOc<>8BINe!qI7QPld;!8Z1}w<X65%v4$39NoYaK?-byv95ilH<&2v
      zK%i`d&@d0y(pU)qd>Kl=`WgM%dhOae^7-QQ%P-gNkpO!}zE}egz}DHd5nuw)id`EM
      zbrNseu7OvZUcKJC1}<&<^Utko;Khdjr`Py>_;a>AvMr(<CYAdTq%(%uy<+ptwC9Zu
      z=Gr<cEaFo~VR<e%nV$4;1}1?O)t&?e?wWc@;z`?~W8jlSqq4Wp!@Mf!?7m-I1;#I+
      z_x%}=1_uc3QhI3ygWB#%$pUj9GM>&^fdWYJcZ*&K0yA6*rOSvGdz#;`+wCRBBXQK0
      zYN}Ia4az<vi&**Avuf2xHECfLShqNGWOVVzfah!O0$%7H%V^y*4~vYSBb<9mIbx2S
      z^35jR>9a01WZV44HapxOzVQtW5|UXswa4`Eu5q~vW(nCsjyA38MD|@yVeFsuY6}ez
      zNJ7ngRfc&&@dpg%kKy7VOTStCkSl+A+SJhGRK|)NZ107QB|hxCoNk1(W<vjvyhWV3
      zf@+AFRE^@tcIX7JB{CpUpr@)BUJ&Mpzgn9DO8z9DTnGP&+oh3)xU$E!DZ`Tick3UP
      zi3j)gi3b@wL_3C@>-6#+Q63ILtWK|SSy)_*f0)0sp;KJ#q|&I`#NjP_i>#Y`6jQW#
      zskB4@Iwob_Qg&7a1^OPG@=&s|mCeiDk}G@+a;oeX$M(D`E#p4V0Do+4n+WCK{lN!$
      z9xJ=V7fDtA0)8(mLv|hS_j5M+Q^8A?uGGu@DyOyWo}~?v`>@*2IaCsqcC_MC5Wz#6
      zzhq{n?hmZ>wYaXO7%EF>E6Av!6V9>Jb!b(r>7+$jMDsD2>2Dry?J_#@dHd~Ac|Pb=
      zAwxOYS`z*2O6l{Gw?#(!`Q8<)>=_eK8Sb8Arra*nspUac9=d7g=2Qoq4^Q+Cdc>S6
      z-E$NHLtdaZ)4d@(H<A?JI}+&*N>F#0o5EwFQip*Vb&dD2mfPVoEt~}iPo;_CrO$g7
      z13fE!<knK_n$j7k-D5$SDFq371yF80uevC}#hh=my!^Q)G*vcJ9vS`pT*!KXC4PPL
      zjLuqI{#((c@gF$ewAj5KEs!RP!W^&l()(&_M(g?_2{7gmkY#Wm0qn<-aRxEElEzJ#
      zu&KH7yi6i)SuYh_3I$eX3CnwWm2i73G3o)345lPH#PfCh73Fo)l?94(R=BxCj4H2%
      zbEXXRa~T|ASa?iy+~PM|Qs0jPw+tB>Cg9eadP`W@yL^SMT#Rg&V{Jh|0!jRu$cgP0
      z9dUWGo>hqr`mw7S1f^+g!(+=Gv0XxSb9r=UEoCE-@dDqwBsL;?W2?)BAg6Lz*Fj_M
      zT`(=u#k!|UNJp9DTH!6##TlOHulwAC+%iC_ir{A{%RJ~P5=8x-euu|D=bOQZvGU(S
      zWb#_u?-fyMFqnINFRJ1vMF*^`tWbi6eyvs(<QGp~nWqkKQ1#cLh*}<qCU5t8RaqTm
      z3gNOAu)00jS$BH|>4i2*$~N`BOy29K;=mEy?6N2pR`A&Y$2b4lTu36#TQKH;$>%I;
      z%PeAVaDW5;&+yDrmwxE56U{*0Z=WXn8TOM?30LnR*^^XG2_SJECgpZQMi<`S3)gG&
      zXxD0T4TvzZfmQ2DEVz%*Uu7ZOoWjVzqTP^k8C#T9MkLRCr}Qa>O4*;rkBjk81Dwz;
      zqqWU3<xSi%tmyazxDW-x_|houIB#w*go-!ZeA$ne=WzgR{F>$DYf=+@#6$WsG9>*u
      zyQt?e!&n#Ei##d@o07{SdkawaM^!UOY5^*=qh#=INQav`do)so2AZhJ-at_1`Q7*T
      z-ipL6ZmX`KGYP};T*$dDvNo>AUNT({Aw0WGrZuUm^|X_JuX9wMptBYKZ2P?eqviJr
      zSDxL$9_pnUD_%dNji_7-$Jr{>=ymbl5z(f9tfwMIpMiQXvtnWY{Y-_=-Sn!2`~DsI
      zhN1f>@Nok4dq|SYP4|h5@kK`A9gIR-A}AH;dYJ4JkR;N7UmdvKFo=e84IM-i$FTZT
      zl5fpyymE%cgk&uoU?>UuLiiPEgUkU8p)Gbo3WU>4VlsVqaxp;JF&|Tr;wW;9u<s$|
      za$EqBkh&Wy2KixGQy%^Hrf;u8EuO!FMLE#!cMRk6v<mU^5B-HNXO!<FY9)~qhm+ho
      z88Ofvp0p5mV_@i;h-P-G?7ccgX4bub4>J9@I7>hY1c#b&N#Jw1UviHc-lpldi9p_m
      zC$IrqOyEdI?*I&rI^K}=?YkNunfFj#wnYBuI8R+(vXV7Oj?a5&CUS+Ds6bnM;N4C~
      zt8->3aS=u;m_VR2?YBLiRSG#yI+D8bV)n>*^f>t=`$;x62tL#CrL~=^w*S8Ow$1DN
      z8h5+@?0O&9)cTSy{(V7YXyivLP$8@@T!;WBTV%)gI2|+3=f~g#xf?FW*Iu-zT%*_-
      z>W~rRrG89$avYggInBx|2UnJ|w^J=CcAE`tM1wQu42T`MC|;_6dm#aGVbuSeZJhnv
      zn3S&jp5Ng_kg8otVo=&t436^9k`mm3IKw5*ra=sXs*^4Kh(%~^kznIO=aIM>LvPW;
      zfDChc7s&ac1W6c2$>l6fug>^Cu62&?y2#JgE}TTzxCM#h8N&iGVV_Q2<>HR-N)^t<
      zT*_oNq!Dq(3gQjx2D-H@wBLbaP%cG3DOx0F{DGR|SDrN)R9ylr@9WZ;eJHT*@i0;S
      zY~utWOMQE~o6t1@ef2%wxHurw_{n`2?yXyvp2Uuoo0IX@HI%9-a_bz&5ZcGeFdF<N
      z=0{Ov1xX<Vk2iQB-`!2`8*cQG+CE?ylVXGUuI&VL1L=W{(BbB1nv;0;q}+>Bn+D8!
      z6Ez<;;-Prkxw-D$#F1=Ki<Y93yHp-KH}9r0GlgZnVu~jEm8*q;W7;n_;(m=+zZrsc
      zOjM1n;J4aU$!&|R{Xd=ESTO&rdurn2(6fp8iH}uqO&oo|c`E!epM#Tq2&wDdC5d0Q
      zSaA{0yG-GylKAkIx6265Y=;)3VAsUE<!}0zwpbJ>GUitDIW2Df%>xBvbzD`x(p~$~
      zX%et11}O<;aVP6T%g@xVG<Cx}0t222$BL<^xar!K<@vEa_Ecrd5UjYPyP(5smf}O0
      zw=Is%=cesLHS{ctsxTV>i5Vw5)Yf>#J?g&u{tf8S*)yxsWd!~eaGPk1%Q`rl;=&DF
      z;_z#nVEASOSvedx(Z7g^^{a{*TaE+H`)Y*%5*xztf5xfbOp-%Q*sPc<Xjbj%gfMBO
      zWUB3g+Cvf?9lJ<1DDEvD&KEZC%GdlmdYBrA7S~M3ySaIa{6}r~^)xKHbg3~gVPVpw
      zI;2i>zFF2zzZn`X?)Xdm53PN^br@+`zGbo^Lfc1sXqW>e1^UDz>0Hk50KiSV!P@Hz
      z<x+40&)|BF`o&b|JYOhO+3C+G3^>U0BW<suMvbGVn)z-W+Sd4MtB<q-uvZ3OZvebP
      z^o~pwM#Yj>KQ(G8CpssbWBZll;&&HvR=0cz>$q=wCP8Ckx7YxIA1z={cXvk=+Xh9G
      z_afx#_>F*@H(yGZmj{;5t4c21VBnyidT^5H72E6UiE{JW`^drC%NnaL<3BZ0(Ie})
      z1Sbfd_ps)yE-(q$@wR&ejn_|sLv#D+8Hbvbei#HA7X5Cr{{8I>qFp>eq*eao{8Qi2
      z9JC_!SNW4Wz7lFmek(=ec-;r8?hB(b4FR4Td8s;z_c5TWW|sHi`C9!QRM{QtZL{nX
      zKr7$}?&8~Sc~8A0S~Ay8o!1(1(1xpsY8L*IP?KZ{Ez~Z(-5ogw%W^aIU-;sju*jaP
      zC7e?gQs1cGoA%w&Wtq~5V&OFbG_?<$@Br)Q&rP1ma6mb82L=XG-IY0u`Y_}<;-<Zh
      z5{IY)Yb$O-u4QQ`NIFv^HFq(+h-PSyRE4U%leVt;vM<8Y!uq;a$L%o9dGts8mfMkG
      z>Id@;+L5J8KP*B5%;+@w`2$1s?||Y2#cfSRbt<sn3l`DI`CEXPd|hyC<Vd~1ZCO9|
      zJ&=|g$LkL#gS$o%yLaF5S9fKs%*O-mm{*h6Innn`1Ey0)sO$KLu$l7v2A9^`rrv2d
      zPzIY_uHvt^)5M){rl<DYx|F$Tr_bdoi@oEtLoASoBOBe+W`%c9upw?l{D2d!cw1*_
      zMpb7B`1?>!JcDw?kS6l*856rLv3)_yX8p$Op@ie}<){eNb0M^kv8c1NQ;<Mm6p3cF
      zv9`hZ=+ffe`n^MiJCvj8MG##?QxEfS>Q;#5G==0-S5@Rv<=c>78pfR6*BUo7NAipk
      zlH*5xON6+|n8&+0iY5GwzqA5P37;9e60UJ4?6d0ns&l~29+kE3rrznlDWjh1pq=r$
      zQzy{PEA3gMpC^E}Qgzg{{6D?}W%+hv>yqrm)#kt7sr@&dgzsAVl{c$xu^u!yF34Ml
      zr2B?&uQlI4<+%9SM{KPF<GIKg`iNeMEkrwI1(%=<Wvr^sD`2n(=}-?;SJ??|0nHuE
      zhY%VEW%e&9E91nvjI8e@AnIxq6~u!=`=Ua6tjN_Sw)mXwGU@b1?v?sjBb|_r;y%L4
      ziwikSlZo&?!fxK)rx~hne?tDKjf!lx9M(I!rpy5V_s)U6^RU8y??uOe8~-r(vo8Ji
      zyM`xgQeLAq>4C1}9{OuI@vKE50pp~elCPd}t97ovZ22MMr75Stnuoaf*hNuJ5n}Wc
      zcJi@sLJko;;IL;@cgoGwV5m?WhTAfc-UHJlwUQ^h_Q1EgvsAQn{pleu!>n-G3tJa{
      zoli>S<(VmY6hWpF5#go^Yzu9#0w+8CK|Iw|2BvKfxpULFw^%ecLkkmT2QH}yD=Le&
      zt?NbsJpW4jmrm|#0N?qyGZ&@*BA}N}r!|@dteFpZ)pdn%UHG>zF<#8^8ufcrt)zqW
      z_~mVWTZ1H9AxDtHzD2G|jSScrhY2v#FvgNzoRRM9Lfk2TUkrKgp4qK)cd%UoGRQB_
      zFLWwBENLzSgM*w!?$*=nA$KER8SO4hJf+(taev&ES9o2N@SHn7K00`}DF|Gr8=llg
      z9<T5gb(T`gawp6e<c9vGT{|2f`B=eqrF#XejH%)vds#blZiAt4n?KBimzNS=8V2&P
      zox8us7@qzI!UDDGjqaM;t6E&DO*XKVEYJvnF|f$Gb-CFPQ8v6iVfMaQ&bj$fTj5P9
      zb4s#rl+%SDj6x{VnedC5cR}onBKM+*p<A=C=WaHe9GUbGq#+E`1@4I!|AVBKd4$VI
      zN>Rg9Tnr4fvrE?R4T;lrG-xt0++-NbTA*R;<ZX&C>K)+KpB%|1JDT&E+A!55k~dw=
      zXzr1dmwMpc^`<RPqXK(zFDN0%3p?#Gd(lY7EFZE_Sv-==iv2`qgpPH*TlqB34dlhV
      zjbKG6GHuyLEvZ-PBb-$uVto-R-JZ(%7}4I)cWX96Q7Q0x?81CfL#3NUAKjh3SRpi@
      z2qRnOQn18AWf~Ula_rMM3sS<9FEDscNhQd0^FV56uZCFdX$yrC7N8*5Y+OizON!CN
      zZO;$kDjtG9aR5c3uQKFIcIYhSz&E>UkL1h=A^gnx17#6pkWq`b;8?SM{%yRZ10Odf
      zYd`flbAHrgu1dOB^veba_1|{{p%2=gn<&oPi}X`A?r#jk*c<F_{W9IqN;S#Rqh?#W
      z_yc!wJR!IX^6aLr<z^IK^2p47XT8AT@{Y3oyhuZOFRrXSB14wq51!~5Ypph@8*)?t
      z%>)nqCIgaaZ;QO7M=MSl#y(5t`DW_(PSQ$L@91PO4YHRdxU*7%`Gfdq;22hQhcN*k
      z^oU~q!S=~&uYS^*R1`+GzsMyq_JJ09MxicTu*-*q0z3Y@-8p?sHX~5c35$Bz9jlTG
      zV6pbuga**8s#VQAl-l4{%hR{*)~F8|YGrndOTyUcJF<vx#!(?h@$o;~2-tIDqEXIq
      zJTqkl_ZOROV)O2%7rk%vby0u*K5EdBIkla+l-8;Og9MH4NCuR1ouF7rwHue!n~2Fl
      zrqnnIWqQSAC6nXUqNIE)ig(fQMGB(D*ww^+;j3>&6rZZ%Y|fxFCnrnzM!B`r&VW?s
      z1?|gCP9^XZtjR225#Nbc$n$a<66OkdJ_tS;)cGjYJKmI&FyE~TV7*>%-men%>olKb
      z<OY}WG-UZi^wn>$65c|LuSb6oa5cH&=XPREeJPNDxk#EW9h<h@jBEGY-hB;$`dYB{
      zY&ul7+zqc)P@gpoh<&%i@wVbh_kG?=dH(IV%k%oA@pCt(jk?%NGfda|#gDZ$^^Yx+
      z`F9A)i%fn(<S^Xy**GOB^4`hH;hq8y1D)?++r5t!<t8iHsT1LDJA;bR5xo!Yw3eH`
      zRhFyWM4>X@3~2WWy4T6N?Ztv3QUm=6R`tUWbSP@nrrZ<;r$Y+1yPT#r#E>e>h9%9-
      z%WiY+u1|xL(~c54Z=KAkvMv*sL{~n4!1Gg_L7|Sd{3PgmxPrC4z)Hw8l7b&GFCfTO
      z==aL{3yS^JhrQ89ANRz%AYFUajruYl`4DPlssf0gr;?}EWoDw|$+affS@$^q<?VO^
      z26Tb(8(eag$9OtCQzMcz@BDhWEn@n5Qgk0V)nUPt0vkG44?%)4coTE#j|&r~)YAW@
      zf5dQmXjXS@|F-&lL3QV^I8~%KU`z(@y@@ewM%Oubx9s+=3S~SIf@3cbwP}NmyD4A~
      zRx)O816KIx_uM49+Hv;MluYklQLy77v9<N+_32)-6`JNd2$SEwd+D8jgxck5jW~Wb
      zhSEHw)5fP^b%Ss_kvtFnVB-pHQgghz?Zl(`Z{)d5<*})kL7Pgl(tK+WKAz!mY2jI|
      z-dC{i)l0>}fgZMIw!AD)VjL!m^v^8hm2{7}YCVLwDD`kSSOTg4NVYtPwf%w2@GZI%
      zRDOuVLTPviN+)MTD~qP)Z)TZd6(dk$b7f46I%rNpwO>j%U@s2ZEv<KoOXg{#Dy7yc
      zO_jb*zcq_TSG2Eo-Yh_3AGl~{hG<70bns<#hz&d{L^A+Ro-nsEJ#og={M0Yz7B&{A
      rY)+guJ)yat2s|J8@_#%KfeH=}#s1$99M|Wqht=89^*rUrOSk?DEuSQy
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png b/bower_components/jquery-ui/themes/start/images/ui-bg_inset-hard_100_fcfdfd_1x100.png
      deleted file mode 100644
      index 537f408366aa8f020fe1363515fc44e47552ace5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 350
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1nD*|cB2XyF)5S4F<NVw6hFlE>A}kkAb|p;oa&6}9P|&FQfBWZA
      zCy(5jhhB*?bDu7qIg^v2ZeN3GdF^$jOP9K4&WqFO=}AgXIyFaS(j7;o&R!3Z-?zh<
      z9Ch*voaJ7Bs0dUHIdZ$GlELLN?=6pNEkmGfswJ)wB`Jv|saDBFsX&Us$iUD{*T7QO
      x&?Lmr*vi<%%D_U`07x3dyX5Ua(U6;;l9^VCTZ5kDH5Q--22WQ%mvv4FO#oJgZV3PY
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-icons_0078ae_256x240.png b/bower_components/jquery-ui/themes/start/images/ui-icons_0078ae_256x240.png
      deleted file mode 100644
      index 9db37d4d0125a003e5d948d93822373fdd9aa0a4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M);HH9>R{sk3)9_e-T(jq
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-icons_056b93_256x240.png b/bower_components/jquery-ui/themes/start/images/ui-icons_056b93_256x240.png
      deleted file mode 100644
      index 1eac73b43eacca7980bac5c586e5ba09770c03d6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M)HT(q)I!Jo7kZvx<NyEw
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-icons_d8e7f3_256x240.png b/bower_components/jquery-ui/themes/start/images/ui-icons_d8e7f3_256x240.png
      deleted file mode 100644
      index 421a8d72b3d5855e4fff49ecb3cc2247c451abb2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NV|{bI3LSL(e*wAF2w4CC
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-icons_e0fdff_256x240.png b/bower_components/jquery-ui/themes/start/images/ui-icons_e0fdff_256x240.png
      deleted file mode 100644
      index 2b2e131c7080519a317a75da7c773dc397943aa3..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      L%ycWY(Fy+rqf;0h
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-icons_f5e175_256x240.png b/bower_components/jquery-ui/themes/start/images/ui-icons_f5e175_256x240.png
      deleted file mode 100644
      index b253a33b79c7a8528dd94b645bbc62a16308d9d8..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MP}fwaQVSjTUqgT3Y5)KL
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-icons_f7a50d_256x240.png b/bower_components/jquery-ui/themes/start/images/ui-icons_f7a50d_256x240.png
      deleted file mode 100644
      index 4b1c9f9a884c6051a57f7b0c3407963362e63ed0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MsB5ZIsfCXFFRuZhLjV8(
      
      diff --git a/bower_components/jquery-ui/themes/start/images/ui-icons_fcd113_256x240.png b/bower_components/jquery-ui/themes/start/images/ui-icons_fcd113_256x240.png
      deleted file mode 100644
      index e1a6e49052fe87a5755f1d3aaa9ad07a6722a8ba..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pr4BmbzZt2uz5oCK
      
      diff --git a/bower_components/jquery-ui/themes/start/jquery-ui.css b/bower_components/jquery-ui/themes/start/jquery-ui.css
      deleted file mode 100644
      index b1370f270b..0000000000
      --- a/bower_components/jquery-ui/themes/start/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=2191c0&bgTextureHeader=gloss_wave&bgImgOpacityHeader=75&borderColorHeader=4297d7&fcHeader=eaf5f7&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=0078ae&bgColorDefault=0078ae&bgTextureDefault=glass&bgImgOpacityDefault=45&borderColorDefault=77d5f7&fcDefault=ffffff&iconColorDefault=e0fdff&bgColorHover=79c9ec&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=448dae&fcHover=026890&iconColorHover=056b93&bgColorActive=6eac2c&bgTextureActive=gloss_wave&bgImgOpacityActive=50&borderColorActive=acdd4a&fcActive=ffffff&iconColorActive=f5e175&bgColorHighlight=f8da4e&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcd113&fcHighlight=915608&iconColorHighlight=f7a50d&bgColorError=e14f1c&bgTextureError=gloss_wave&bgImgOpacityError=45&borderColorError=cd0a0a&fcError=ffffff&iconColorError=fcd113&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=999999&bgTextureShadow=flat&bgImgOpacityShadow=55&opacityShadow=45&thicknessShadow=0px&offsetTopShadow=5px&offsetLeftShadow=5px&cornerRadiusShadow=5px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #77d5f7;
      -}
      -.ui-widget-content {
      -	border: 1px solid #a6c9e2;
      -	background: #fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #4297d7;
      -	background: #2191c0 url("images/ui-bg_gloss-wave_75_2191c0_500x100.png") 50% 50% repeat-x;
      -	color: #eaf5f7;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #eaf5f7;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #77d5f7;
      -	background: #0078ae url("images/ui-bg_glass_45_0078ae_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #448dae;
      -	background: #79c9ec url("images/ui-bg_glass_75_79c9ec_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #026890;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #026890;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #acdd4a;
      -	background: #6eac2c url("images/ui-bg_gloss-wave_50_6eac2c_500x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #acdd4a;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fcd113;
      -	background: #f8da4e url("images/ui-bg_glass_55_f8da4e_1x400.png") 50% 50% repeat-x;
      -	color: #915608;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fcd113;
      -	background: #f8da4e;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #915608;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #e14f1c url("images/ui-bg_gloss-wave_45_e14f1c_500x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_0078ae_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_d8e7f3_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_056b93_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f5e175_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_f7a50d_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_fcd113_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_e0fdff_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 5px 5px 0px #999999;
      -	box-shadow: 5px 5px 0px #999999;
      -}
      diff --git a/bower_components/jquery-ui/themes/start/jquery-ui.min.css b/bower_components/jquery-ui/themes/start/jquery-ui.min.css
      deleted file mode 100644
      index 8bafaa698f..0000000000
      --- a/bower_components/jquery-ui/themes/start/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=2191c0&bgTextureHeader=gloss_wave&bgImgOpacityHeader=75&borderColorHeader=4297d7&fcHeader=eaf5f7&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=0078ae&bgColorDefault=0078ae&bgTextureDefault=glass&bgImgOpacityDefault=45&borderColorDefault=77d5f7&fcDefault=ffffff&iconColorDefault=e0fdff&bgColorHover=79c9ec&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=448dae&fcHover=026890&iconColorHover=056b93&bgColorActive=6eac2c&bgTextureActive=gloss_wave&bgImgOpacityActive=50&borderColorActive=acdd4a&fcActive=ffffff&iconColorActive=f5e175&bgColorHighlight=f8da4e&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcd113&fcHighlight=915608&iconColorHighlight=f7a50d&bgColorError=e14f1c&bgTextureError=gloss_wave&bgImgOpacityError=45&borderColorError=cd0a0a&fcError=ffffff&iconColorError=fcd113&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=999999&bgTextureShadow=flat&bgImgOpacityShadow=55&opacityShadow=45&thicknessShadow=0px&offsetTopShadow=5px&offsetLeftShadow=5px&cornerRadiusShadow=5px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #77d5f7}.ui-widget-content{border:1px solid #a6c9e2;background:#fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #4297d7;background:#2191c0 url("images/ui-bg_gloss-wave_75_2191c0_500x100.png") 50% 50% repeat-x;color:#eaf5f7;font-weight:bold}.ui-widget-header a{color:#eaf5f7}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #77d5f7;background:#0078ae url("images/ui-bg_glass_45_0078ae_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #448dae;background:#79c9ec url("images/ui-bg_glass_75_79c9ec_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#026890}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#026890;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #acdd4a;background:#6eac2c url("images/ui-bg_gloss-wave_50_6eac2c_500x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#acdd4a;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcd113;background:#f8da4e url("images/ui-bg_glass_55_f8da4e_1x400.png") 50% 50% repeat-x;color:#915608}.ui-state-checked{border:1px solid #fcd113;background:#f8da4e}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#915608}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#e14f1c url("images/ui-bg_gloss-wave_45_e14f1c_500x100.png") 50% top repeat-x;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_0078ae_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_d8e7f3_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_056b93_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f5e175_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_f7a50d_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_fcd113_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_e0fdff_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:5px 5px 0 #999;box-shadow:5px 5px 0 #999}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/start/theme.css b/bower_components/jquery-ui/themes/start/theme.css
      deleted file mode 100644
      index 23e149f89c..0000000000
      --- a/bower_components/jquery-ui/themes/start/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=2191c0&bgTextureHeader=gloss_wave&bgImgOpacityHeader=75&borderColorHeader=4297d7&fcHeader=eaf5f7&iconColorHeader=d8e7f3&bgColorContent=fcfdfd&bgTextureContent=inset_hard&bgImgOpacityContent=100&borderColorContent=a6c9e2&fcContent=222222&iconColorContent=0078ae&bgColorDefault=0078ae&bgTextureDefault=glass&bgImgOpacityDefault=45&borderColorDefault=77d5f7&fcDefault=ffffff&iconColorDefault=e0fdff&bgColorHover=79c9ec&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=448dae&fcHover=026890&iconColorHover=056b93&bgColorActive=6eac2c&bgTextureActive=gloss_wave&bgImgOpacityActive=50&borderColorActive=acdd4a&fcActive=ffffff&iconColorActive=f5e175&bgColorHighlight=f8da4e&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcd113&fcHighlight=915608&iconColorHighlight=f7a50d&bgColorError=e14f1c&bgTextureError=gloss_wave&bgImgOpacityError=45&borderColorError=cd0a0a&fcError=ffffff&iconColorError=fcd113&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=75&opacityOverlay=30&bgColorShadow=999999&bgTextureShadow=flat&bgImgOpacityShadow=55&opacityShadow=45&thicknessShadow=0px&offsetTopShadow=5px&offsetLeftShadow=5px&cornerRadiusShadow=5px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #77d5f7;
      -}
      -.ui-widget-content {
      -	border: 1px solid #a6c9e2;
      -	background: #fcfdfd url("images/ui-bg_inset-hard_100_fcfdfd_1x100.png") 50% bottom repeat-x;
      -	color: #222222;
      -}
      -.ui-widget-content a {
      -	color: #222222;
      -}
      -.ui-widget-header {
      -	border: 1px solid #4297d7;
      -	background: #2191c0 url("images/ui-bg_gloss-wave_75_2191c0_500x100.png") 50% 50% repeat-x;
      -	color: #eaf5f7;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #eaf5f7;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #77d5f7;
      -	background: #0078ae url("images/ui-bg_glass_45_0078ae_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #448dae;
      -	background: #79c9ec url("images/ui-bg_glass_75_79c9ec_1x400.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #026890;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #026890;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #acdd4a;
      -	background: #6eac2c url("images/ui-bg_gloss-wave_50_6eac2c_500x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #acdd4a;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fcd113;
      -	background: #f8da4e url("images/ui-bg_glass_55_f8da4e_1x400.png") 50% 50% repeat-x;
      -	color: #915608;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fcd113;
      -	background: #f8da4e;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #915608;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #e14f1c url("images/ui-bg_gloss-wave_45_e14f1c_500x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_0078ae_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_d8e7f3_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_056b93_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f5e175_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_f7a50d_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_fcd113_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_e0fdff_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: 5px 5px 0px #999999;
      -	box-shadow: 5px 5px 0px #999999;
      -}
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png b/bower_components/jquery-ui/themes/sunny/images/ui-bg_diagonals-medium_20_d34d17_40x40.png
      deleted file mode 100644
      index 1100d9842c4ea48e388fea2a27f84d69b058e200..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 440
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjld-qcjD744Z#W5t~-rK1gIS)Gsu-s?w<Mq1I>Q%77jVJHG#!~^z
      ztGsnB3@yqQU0IOxus?bRcYor{9KGLvcKCb$-hKbq&b`~qcD>I2(Rcpy{qBA%Ez6oK
      zfhQj>?(^c4|GO;v)5ZK<YVxHaML$+7o^;rK|I1l6vfl!)S6IDS?AQL%KsK-BhG*>K
      zmmB(b9lM+;U)sC;u-z*u|MuD|rt|oIugHcgUiY!&hC7DBdImAoO|J~Clb!(mp<3b^
      zQIe8al4_M)lnSI6j0_CTbPX(Z4NXD}jjfDLtPCu44S=LUyi48=6b-rgDVb@NxHafW
      SUSk1jVDNPHb6Mw<&;$UrI;K(p
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png b/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_45_817865_500x100.png
      deleted file mode 100644
      index 4f0295526253e2c539a9eff3cd6a10b4434f7f1e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5939
      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
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png b/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_60_fece2f_500x100.png
      deleted file mode 100644
      index 3048f1b78be9e8bf9865f9c8b5e0470ebb5613d6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5908
      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
      JbvEGF{{s12=a&Eg
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png b/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_70_ffdd57_500x100.png
      deleted file mode 100644
      index c8d7a6d7e4abf83635ae6fed4318f4f7e8bc8987..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5601
      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
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png b/bower_components/jquery-ui/themes/sunny/images/ui-bg_gloss-wave_90_fff9e5_500x100.png
      deleted file mode 100644
      index 609a3581ebe9899939c7f8982c4896f1309ebf68..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5447
      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
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png b/bower_components/jquery-ui/themes/sunny/images/ui-bg_highlight-soft_100_feeebd_1x100.png
      deleted file mode 100644
      index 81c0aa701ed898e1880df8f55b788adbe177e08b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 401
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1nD*|cB2Z|mr;B5V#`&ic4EdS@L|BfO^ZO?-tySN&eBwE&d<FLa
      zuNOXV*7O|TFzLtz4*4hRkA|;b(0Mgw^Gsc_+&gbJ88Q5j?vQ3r4tVIDoUmMLfl1X<
      zJ42alc}c&SNrxx?Jn>@6uUjuTE_|B1&TV<gnqIS#wPJPBdwx7!m}zV|uP1Kjr1Q@f
      zI8D7c`S+2E4cG6Qyjt^fd;G6L8^#0gV>q^-Te}wMK-Ci0h?11Vl2ohYqEsNoU}Ruu
      zrfXoSYiJT;Xl!L{Vr5{VYXBq-;$8A~plHa=PsvQH#H~S3@)`?J1B0ilpUXO@geCy{
      Cfse5O
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png b/bower_components/jquery-ui/themes/sunny/images/ui-bg_inset-soft_30_ffffff_1x100.png
      deleted file mode 100644
      index adbfc818e68afd2b83c8379068fa417bb3b1f3c9..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 261
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?MA{g?+)6W7amUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweBoc6VW5yxS$b1ju7A
      z@$_|Nf56GdtHd$w-A_fJ5U;0;V+hCf<ctIfF#(3or$&rfHdP?oRZCnWN>UO_QmvAU
      zQh^kMk%6I^u7Rblp-G6Lv6Zojm4St>0gyC^cgfp<q9HdwB{QuOw+21QYb-zw44$rj
      JF6*2UngAz5K7{}P
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-icons_3d3d3d_256x240.png b/bower_components/jquery-ui/themes/sunny/images/ui-icons_3d3d3d_256x240.png
      deleted file mode 100644
      index 5eb8c240685e8eb69bec3915e7eccb1f7fe89858..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7074
      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
      aTn}zzALR7|{!il!P*;8Ws6yE~{Qm(C=0Vv2
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-icons_bd7b00_256x240.png b/bower_components/jquery-ui/themes/sunny/images/ui-icons_bd7b00_256x240.png
      deleted file mode 100644
      index 70755d2fc4dbd70fb71f388631b3173ccf5a648a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pr4BmbzmpqvHUIzs
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-icons_d19405_256x240.png b/bower_components/jquery-ui/themes/sunny/images/ui-icons_d19405_256x240.png
      deleted file mode 100644
      index 9ca88345eb57f551d3052aac2548190d902c61ef..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MT~nP(Ep+^U0ZH<Q=Kufz
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-icons_eb990f_256x240.png b/bower_components/jquery-ui/themes/sunny/images/ui-icons_eb990f_256x240.png
      deleted file mode 100644
      index bf9769d84a75a51113e76ff385f9e62f5772f112..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!QrKte|l1W|e~(o1Ne7ij`Yc?Cl6MF=fY5|kn+@F;>v3y30$G!;;K
      z6BMN?L}~!(U1?I17k$o`^X>eAbFEpkXU|&K>@|DMp4ofuSehF$&~niN0Ki~uq-O;H
      z;OP+9f<sSxqOr;EQvvhRHq!=x>U6qe7pha8*UiYv3;?jg0D!v<0EeejxFrAxlL3Gg
      zGyotU0RTsE-uo-+r;ABin%d~E<}m$#`#*XBM*}0DI@AqgWo`}F8AkKVJ(_9ijquE?
      zx%1+wgE@8)h4S!Buue7jC)3T%#f;z`fXxkk+7i>+IQMFP`3FADae9*UZe)C@^V`=^
      z*RfzSLtl>1fr>agcURQlTq)kJ=fME6a_dV*X>wIV_sj0KtkqL<pzCErJs_Ftg3+l$
      zgE2PKr<tY(X@$;a{1(v%04BV#p0-Wo*t#Q~+xae*sfJWR$!-x&L2oD`rA<sQ%t6`M
      zIa7y=--u4uCztv0BdY}pC23>I&&zACXwH4ve{->OZ$fji;d@igq=tR+DK7Hj-Nzk?
      zHROR%YGlMEu!W59M0rd}@^wPA+XQiY-A1-$h-OGD7hnM`iQZl{FpGEK72z#9ksVsT
      z;0_y@Z3MGazw<)NDdA_;m-Do>Lyr9FJj@$&Mrb|T8dG<uL+Q4sTmr!YM*k_uT1l1k
      zAsqb_pOah~?i!z42)#y{GcAN*-~nW@s<7+fhNAp`QQWN(Y7yKUYuR3`Na(w%b9rFR
      z09RN=9lZ+rYa5L;UonxqfQD7kD>QIQ3zvf?IFa`@Z-eB{xt`SR6Ce27Uolqi(nlkh
      zX(39r+^te}ME{ZGk!yBLMxV!`1$@WZ(fYH?H}-b{O`TdK&Fve5g%Fni!MLt+x7N~Q
      z>eWr|NK83!5H9|vXYyU#u?nziNl@Byo>}?Fon-%cmSpl;nY4}*`ZnGCike4TGXLra
      z1=1JL7-s1DMf7Dl8(=$2yZ$SfQwO$1#k=LlEWPp3Rore~*zcNWxI<C4mLFp!B8n!X
      z${y}AVKos{Ji|WroP&EVOJ0v;!SvNAkOmfHL;#sblqSo@V`=kl{N8et``0(KHN{8O
      zU(*5&TvhLFR17U7QP;hIe5qS)HDNfIi>j^jT?R}zB13(tD$PB@X++SIQ;YfTSKp7<
      zb=KK{&Xee-vSc27ok&!WRMI5tB@q95rrp<5le+O(C~Ll;_2(^?zLA;W82oxZE1m01
      zl@OO#rGN5SB--MwoT+c=yp$42x(|-lAWg~-FEi7zqBn8B*efzWLp+tik*2U_-OWbO
      zAD+Q?h8wbXr9dTACb20A8hJ4lk9ZAf3txi5GK@1yYJ9}r#OsdNO$fx*G;uIOY!OpX
      z_E!1*n;Pix&2GKF*x~XzVp~k3jk-Ew<=T{{Uyt<8ZhA^?tt2h=J3wC74#lbtKJuh4
      z?FkP*KJUB^uDz*WR?E8iprEb;TG1>7l}SioiNPYkoB582;Ff7e!6;3h*4hG>4cph`
      z!}we8CF@fv^Kr-t3`>SxyUSFVg?iU;K*KP~s;!W7#7Nt9nU5|4%oUC7u6nBUo_AK`
      zwW|=0@y^?%2&|QLDnb$|KfPI3!rG>^Cd+rX5a8o$Z|Jx_=rSl4<tE77l*kAsjPM+<
      z8gejmIJW$Wv*gr!J9%0?l7Tb_wJ)D5ABXO24qwBC<#z2f50L_SOG>ONMfEC`bcur=
      z_}Q~heQCvL6F(nFCk#O_u`ZJkFW8<35lDAh+Qyc(u;g>XP{#2r{Z=fixu_O+m48cU
      zycNGSWXr<k&g8(`5>D3`PKbmZ&>K`h6h(yC0UDK-!;|Mva?<=6c~#3L6v}GPAZhFv
      zdv-n?hZWKzD8Z(`MdN&J;gT(4{#&o*{v*@6>>cr7Nq!)yBngJmKYt?d=j=&y$jytm
      zzg%pQ%c!p@n_}=-G|+WUQ-&0rU(2kxf4S?fuve^RMY3$G-F3dRgfk6R6K5H7gi~Ig
      zHNrax5qp2}h3utFGw9IPdAD0=jn2Lq3ie$Z-+A=O-^;Jgr1GZ5xehcihaUvn;t|-9
      z5%Ek8;ac`wUa9_HZ(w}x?##GzfJZTOayCsHSB`ZqzVWoE78s3<u+Ogu25u=&N7KoG
      zufKn$P$#y+k^!)R8c(n><PhXT2$!r8j1Qv8d(j&;z&Xfa5m&_mfV!Z7Rlk(duLuS;
      z|4Mb{f?aP2zjq-$qW1?x2(?U+7H(A#%Q(zcqTYPELZ=vM*5(5qnS`C&SPjFKS5Xpy
      zt6C1O5-*3(e&P#0L0*K&^9A9Lr`UQ@DhrKqLzI<!5tA^%AMuU%1&<K4E~JyLb`6@=
      zW_Q#|Izp7J2xEJ|%TIbH9`nmHW`>XlV@gIo2Sjj9#e8s(hqQa=<IaoYf(AH&p*@Mp
      z@>Wt(62UCf9#yNw{V50wXRFD@b)5N@;7-4Jx4RB~cbY{<*U0JM>UP5J1xpC^Z9qm6
      zUA()`JYchb1#}I$l?eEP-(&HI?6RC+xz%89rfJ<@tkKu&w89+#5ncsYFjkdj!E7NB
      z_u0R)tYQaBVweG{fkR@i-N}QW7fIrBCri{7!RVo*dS)&5G`dV&JpOt)lf9DEK>Mg0
      z_v4DoDr#>WDvF4XFUf!JP>t^Oaq<pZ<LVet`y?Hf!x*v2mR_dz){bi2?5;-H4`b_E
      zj9IvCR>Fbevc*PB#Yb;HbLo%WN+Vjm3Q&Q0{fqaK#+bhU<5;k!ke2r_#nidQ`rWJ|
      zw5AI3-A7I%w>pH%Hmmn&&^trIOFE!ny=*o-eskFo*Ps_SUoZ8B{7E^e*cpq=Q}u+z
      z3bgD6C&@(>%4bd!&zDpu9K2FtZ|T@xx1)8_Wq)?OM+y*pNwz4hVAPpkvkeId?wNJ>
      zD)m`^HzL7qhUr3x+R`wC`+-w&!E?e6N}oz%yy~@_AhAqw8P0K?wBn<MJt_wo)!V>R
      zi!Y4V`l5Y<Hp8WgqtLLM)*rRS)@=H)wR8N0$5a_qYi)(3+Kr5_JW}5iq)7d<tlJz-
      zB^V<~Qife?Q4Q{0R;j@npCL-sSaDm*XLH!<@Xa!s<+C4D6!MjR`MfY`>I;)*rgQj-
      zgvABc44vu~o8GvD{vV@@OP#l6KhXV_;(xN^dTbKC#7juquzI4~84F8P?d?E|vKurS
      z!F%8xdXxpd+s43sp4gB8%z99|cvMS8V1#0n@03PcB1*_@d&5ymVmxR>?G+3TiPC<>
      z^gewcLw`f<YSOMX>VoW<3cjL5wX(iTbj4asB<u2)dP+hbS=f0Z2%a&gwVUacVontF
      zm9DALkDa9%@Cf1`*91R^Sd@`>WJN#eIwIc@S?V7v&*Q(L(UN_9KiR?N8L0lBOWq&U
      zZIpR+T~)<B>f)+%|ADtl_1T%2L+$K~B~_Wz*$0Esu%2(x9L>i+UsjS>R{9EtT5!kn
      zBMkKsOo0<GhI@$&q4usu?${#4)bnYD#KGW$PIN0}#+A?1!_kc`Al@Bq+_asr*GR6|
      zVp>m;PO6C)qYHeD5m55DWN+K{vQNOV+mu=j8(L*L(DpFoZuVAZh{K-O8Nzib8=YmR
      zV`T;u>(;JvI#1lMw;TPID9vvhTq1<K1}pi`TxDr5L>lS8v-!u@S<QM?HW^3bTgj+g
      zZ&Q96wlhMu*(KQxH^+*z63TZiz8qT;4+E`_%S^fWBF<9(KqcBY6KV80QB(zT1*}Af
      zFl)3^Oms+b`(-oSS7(Bd%qJBF_BDRl?Prv?47?}3YIgl#VOs@EJwWcqyDJwLVj+w_
      zDrr`n^ULY|;dJhxAU0+TO=&}LE1uQ7(sce+`f0#Vv;UO0j(bIlv`4$JkKWckoQl>|
      zhCko%|Ls<7*GLJjjx=Iam&^}s{dk89h&&T5$DKB!g1E0r8uw*<e$Mi6(Le=zc{idc
      z_0m2GE=v$cqK2KQg+ZPen-c-***s|C_m3YDd1&e-x8O+&yw@ye8pUU+HqUe?{$U<C
      z-(n*Vd`LeWojioZ(2J*v&OCympW_f!lO579=8~?axNApXmVEpIy~L||;}@Qvy2Dnq
      zD7!(w+#K~}{cMJKtuJHkW6)2Uc&cK!)#GAuoy!HY;xQ9425SE5)PJ5Lq+7CuVatKJ
      zne22EF}zeMIUBfie&z@}auPc}Id-l>BCOK3J@x0EC(VB6AGOhQ9He*Uu&k;@DM=g@
      zhE;lBZL|Sx0w9$NVC7@(&VZ`lEbpG(4$v5&vq{XsKI?DXE##}nrgb*FXFYmrSL7*2
      zNC4aXf|ON;)1&s)Howq_EX6uw$Papg&Qi9)oF|WPq+9t{=b%dq&&ah;8ip|`yEmm;
      znv~=|*BYUmrZ*?dQ09s1tv6DJtH??as}A>+TMJNuJSBJ!S}8Z6Z}=N+1A^p{LAHu;
      zvs&{9bMs+zP*LZ{VwlJZL}Z%WJef8ayQqqOJ;;^6v*EX`*{4U#LQNlw)S|jgB(bRs
      z(`IX^yy~(p7s!WJWmZyleqXz_%k#BHQvJjwH)d(r_iw1_b#e;O6h@BVSZ=sq!|E2(
      zg@->UlUVu-0A99pFg72tzKnFM-7h@^odt)2%$$jt0Q2a@JR#j`-CAvkDXl5w)0=1g
      zUF-j>4AN7BD*3FaTl&rC&=)^U!odR>86kol`8m@5_}q-9EvF19kZSI7kKsmsoEBOL
      zqT~%quvEFw5!bj;)w`<b4hyh(s(QW@#Z={}#rr3(m<{QmT>P$Yc<2mjY3g|?Kg|xo
      z+|d-VZ8D_QT3Cunyg~l@6QaMKJJ7G?EwRsd`Jhk`MHv2=@{q+1*KGfyf3@zxQ6gJf
      z!htMD_d&qwypF+}g`>9)|FlK(QWU%ETmlQcY~>#PM8z;*SEf9_z56W?lk~ybvUGi)
      z8^*?SFKcbIu#yHLc;~%k@6pQTIC6nWw(b3sf-{zOxK7#TIbSC`uF?lAV7iHd@RZfY
      z1%od6;FP|`9yA7?T67CXr;JDg)6&zn-#AMfE@iNd9CJt?C2n7iigPOHty}n;IU#Q~
      z^Dy6E=6g{aGQRiz6W_o-R7Xz3VDwtxxRb4FB&Db=^{P8Iqvq8_ZBs=E^Uev*_I<pA
      z=GEpIAE9hRpVXbjd-OK!eLJ?ulZUTkz$r{v@q-e&u{iv6#1@Ew4)lZx6^}7!YIHSp
      z6dkMQ&yW7+M=hrDrY8kq5Z7s;bt3qg48Kt`OXea(U@z2gHI<fh)ay#NplN^qVui$?
      zu<XVqMO&@3XhNPX$uCL5h_SU-M2XE^I??RG{3a*1!o2FRucbk6Ww!^I@yz%sJ|Ux6
      z@ypcakB_xacOv<~K?AX3eAnCx<*{Gln=j~dgt@Oc>=%2zh6{R+yYm^3n<LMYfO#3E
      z^&U)E$=D|s|FMVbD<*Xh|N4fXU;R0ElKg|4Oh5Ob9Y3iAfnyk(vz_*g2x>qJOAN~7
      zF@|5vVTSE0XPc6b9j95ONJIT#_K6ttza?9Bpx|ORE4(27cKM0+=<VYef~EiqzPSPg
      zG)*rWQ^M?kZ~NDmgB(yd8k-J6m<QIHat^t;Ukq`CGxqpCI-FB;T8WGGC%mM}{M}zk
      zc9bGbtWNKWkp?L3eIV$4(x1)%lOix=PVG{XlMCi3Hb3KqAMxR(PwR6bjJ_Sl-38-;
      zbPMq~6@Z+Ktdf+Bs+6pPjjTLUUJfa*DkY<Ul##&}pLzbj2mwLvKAus32#QiNryN-u
      zSsA3fGEz?VUxKK1VB;x)^N$7VAWuw$ONa-c?H=Un!D}4g;^krG;o=^3<D<vv*A4&}
      M>znIU=%C~O3v@)6RR910
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-icons_ed9f26_256x240.png b/bower_components/jquery-ui/themes/sunny/images/ui-icons_ed9f26_256x240.png
      deleted file mode 100644
      index 48e72983ec940838b0163462a0fed652c1e27352..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!QrKte|l1W|e~(o1Ne7ij`Yc?Cl6MF=fY0!k4ScoadT1w;|WP*gza
      zO;D7o5UByAccn>5Ui3L%&bRXe&b4OEo;_<_v)Al3duH#sV`*;4K+8o7004urk)9O*
      zfTu%X3l2T)iN+?sPX)|N+e{k(sx#=0U8qiVUN<8vGXTH}0|4$e034o9;g$d(Oa=f}
      z&;WpZ1OObt`R}i&pDre8X=<atUL^eg?f>Y3?sgi&sYBf`R_4}#onbV;+@qPM-U!e9
      znmaF^I+$Y@Q78}3MC&wzf3n=%T+Hy^0oc6Ir!6t9jdQQ&mw&{kJ5EoM-i?e8b$<Ig
      z>N*xoX6VcHIZzR2=kAIcoGXjB>v=FhtlavNS(Z}O(EYNzEqnFU9O!!4P!C9<x?psw
      z&|r+s^l7H4L0X}+nZHH!0e~sqSWnv~a%|m^&h2~`%Tz;}pk%iQr=T|!k=iCE80MgC
      z?3|^;#cxC>>yyX)_>t8Dg_686<>%$KS3Kvw?7z9#xi_J?*zmn6cT&SX<rEir<K4#{
      zi8bVbP-<kvC9s8z@I-k`N%D0<wA%!6d)-F1<%niTD;Hn^Esfq@H84wX;1%I5K9L<-
      zzTgfUm~8~JRloB>D=6V-)tB?NwL^~l>O9OFb4O@B+Zxk$s6*+tr(6QTLPq~7$XaQY
      z^dTJmG(I<_EZj9AuLydLG-p}_!N3E^VpU<+!wp6G|DvQ@CDbCgH`cPfL=oS2Q|I!)
      zngOn;iaL4~^w%~TX})42c>xWpqE~3(loqZ4O>iRbZQcgSopU{@+b2Hox4&Yn-ldO5
      zFw;VmYPnmb?1=s&DI?eHn2bJ;MGN?jv!nHAmv8Lv0-8FtNSfO>28$pp|ATQ|<!-H|
      z$JDEv+>w|H;2>Q5P0!@JxMLMy)e^6?<vg?Uk2}f!^DN2awK8cPC-iN)`4u&fwq(K8
      z4+^9&pfSwQ^^54s3^u@amUjJDFsBY|i;8#4k6C)-qpP^xys+Oj&v1w094$Y_N<<V*
      zW|ckMWx{GAsAPtH>^TSbT(-O($%5&tQ6LR0$OsQIk0?!+kH^yH-}t@dCikyzW@}20
      zs=uZO8n~+7+aL@rBvaSDfPAT2Z8c#yn2V~d^IZl^I3h!RsVdDq!f8a%lT(WY?pNQB
      z*LBv}fX<WXrt%b?_&SlOAgSa@)=Oag>zQ_6PfhB^W1;N%!q%U+So%h0f@9*>3s~t~
      zXR3s_yej=u&LYtkZ{<vV%jTt&NYZ_9v<7KXet4OgjupL$`^8Sk`V8?@21lC0nsqlD
      zL4SBA-x+Sm-jza?P?@BrWN75Yw0Oj8NL%<46qae6Sz6;G_9j7hylz4uuBM5D5n_v&
      zg0i>D@88rwk8gJC{lyNK*Ad%dI&IX|5i8fGbp3jycTUq&a%&}Nsow$ex^^g5b?}iV
      zby-h%`0;t?b#U!X{jys2%?E{b9Z*8E5L6~HktGI;0B;sJB7$3{9R;H_d0J}=T{diA
      zlMfSay_c*{tt`MHCon9TcI_@xVHWCL!vPJ$D66(2&JiPR*JVDs2ry4Hvb*Z3(tF-n
      zjn}S1IL13~lOwQJ)@cYyr2O<|T`6mu(wZ#a-6DXGuf3t;`k>38Sd^O}b5jx{m^i|7
      zylTk7%;DJbC(csR?(O7j^+*QN9Mryiu6!K2vpIYX7nawx(>z29<Si|=sub0$RMI65
      zdc@D3ed<dqMw|5cKss><f{AsRgm}UBJcvMs)6zD!yoIHJ6NWNQVClDFS<OSWz^nXQ
      zLKCd`tsz?$E_Wse-j;H@#&AL;?10{&LZT=l#17D?v>cv1f0CQ-&&aD<A)!!Sdj?5k
      z$Jn#;;W(^_9zh8<{Vf{jYYUfb5%b@AE%zUp)@ARA2TSq;$)(9KjQ;r(fj?(YnnP}0
      z#Qo)Bi(F=XP5Bgq$D)C*bGkC5@cdd9;r`{WyTV?vnuHYDR=ewbXYpqmtR~Jf<_f32
      zJZlv1AVlo_#TT-dI?bR%Tj$+wp*1@DW+>QqX?*9=Cx0)$I+Mzq8s|FDz+C(w*p`66
      zj*N(BaR}G4=kZGQ|9S)Cb9ZOPodY~dpp&!d+PDg=bIFaT#kIg_Y=nIQAsD!&JRMCZ
      z1HS(LnL?e^3QGaN2I_dcjUk61A40fv4R3r9P2P*%r~%GF4vV=63jpeZ0#^M}YQG{F
      z)ch;WnG1HkA^hHjjELSJ5FykuMOwI3K`iqyPl<Z-=?a}<q*<E}cw`cGZeukJS5ZYt
      z0<LN~xJtYnKKqF;_yl<oBF`5Te>}z3lUiA1j2oh?+>4lm3I0fEyf1i!pmiagbhT^H
      zv^Kk=Rx%KxWJMU;173d8Gx3;To-s4{d>B&-@;M-aYbxP`gFK|&J0Evm92Yjg@eJ+B
      zRF=1rlaujgS@x(}E$&Z2SU6iv9<Jlew?udP&AZ)o=)2P_I=V(q2UoWfcQ05%sBZ%@
      zlIW7%edYn1{VSkr$gL#67yKR@f5<M&`ITD@=4P7S{lyx6y-q9K0TAI;fCXb!X%@^D
      zl5n5>E6WKxP!huoPz@Xsd+kmh{JcmKmpfUaCIq90j_R4U*wg8<a0&6(E12w+qz2kY
      z-MAkUE~}`$aUc{E9bc0F-k}=Z>*M4dw#L;lp!P`yESE82lP#lM?X4ZvxY=Ee@*l?5
      zwHUK-+w8;x#bt|)7{W(yKXd7i-AW@`y$Vo)dHsv`lE;|7|KnJ=rjVZhFxAw##roZ>
      zBDAIo^4&*HBd<Dy$~L?AXwW-T!b>`!aJ_ssJYjR$5!av>H(xLHhWtr6sKgnI%vbe<
      z#0s?R1t-fz70G8!6VI1cCmy^~VQ=Z!Ubmxl(`A2lyhjQUd`Y$_BQWaBui1tK1ozCk
      zdzJaDzZ;QYH^X!xL~Uu9!TrFgxZpWq2c=J?F<$jrPLNopxJ>7`PFnHNq8^ol%<666
      zsl^w@YkkqaL7U-HB~fVDP3w=^Vrw>i*xEUM{9~$2s<pNvQtd|OS01VFiBhEgS=Mci
      zrc#WNBq`IbwYUcNF1yTNjn5FJYOJ^|<+C|#b@*l(&GOj~Dhl~ZzkFVpH1&l^Gs`*r
      zM8e_%Yo<>1icN1^V*iiP#ih>MvLEPvOYuM1aXmJPUgE{4Z&*Fi?Tm#bsrGiDMcEA+
      zjo>}-4n4|(-fd&xK2K~&0A@WXLp-X55E!8t<vXR(mV^>=+um@Lk{AyfQF{f0L!z`_
      zF}=?i$kg9ZyPCXfjk+LvhQL>xq*mT{iLOM8iDX^TQcp?DCks1I1i>@sw05(+Qq75i
      zzS1={`mwV#10F&A<C@?H5sPy2j;!b>T}R|QB1`>a<@xw;XtZP>-%ob1c?PQg=aTma
      zbsJ?~T~}3ckGi<(+<)NhQhjzN=1@E5Vrf;@bk4zGG_2=aG)MFC&zF@XmX*H3p%&cn
      z{0KvR1XJL|i{V}(L#Vy0kvp~+G4*^}A!#u9pcCCnnQ`Sa^>B1!3rKKB8#iqy?lqDL
      zTTJVz(#bUmVswFzF#<{+m+WoZUiJw%cAHYGVMD7-2ihKn+|AkQ3~|`=I)lG1Wuvp~
      zbgayPV%^$R&ftmr^>(A*5~cZVgG&T|*I=dKnX4@Ag-9d)cQ*g{I;&Z)%BJ9Gd@C81
      z>uoAd!*)i<Hm5YF;pSLLc4Eb@#g}7C;$fimak(iMU&LAJAE+ezW+II~CyJ_2u8@@o
      z5oV2ciir*>X}@fS`|6ArlKG^<z`n*WyZwyvmVx)ASIw>;ENUab)C1&xyt{I7Ar`{;
      zqmpLDxuAmHA5P~E3Swin(3Ca=x8hmND^2HLWt;~5H2Y6^>$q2>NPDyk`{-@$!>MRZ
      zW%%<A|KD!ac8!$a>PRC-b;*Lz){l3%fXFk^a@^@7Dv0~4q;X%y=jSXB7Y$Ufmv<wI
      z(=P3k;IepeBx=}+S{USsu{jZ-p3R3QegF6ok&mWcatofci1(W1OsDuP)#jV-Bs|Oq
      z=UZ&#fe#snqmze_7<%zE(V0h3^m81dYO+Hb#$4Lf6nE_i%$84BpqF?xZ~VgZQ+L>k
      z7G*c+mz$%Wte?#guk~fDeGK|Z6HiqPw|ZPGu5-C?Ry<}x#z4(qo%+vHgmg=>Fl;$6
      zH<O)iB8HbKrQ`sY&d(fSM^0kLC&$haB*H3f+tYsDdD856{!tq}$3aF{F3YM~l#;|j
      zQCOw-)kYi8CIC{Y09HQc?hL5<&GPQq?EsAdI-8_i?6dyH-6B3h4z07{J?qh1yCP3H
      zLIT+47o@B*ogTHXw)urdWGmJgLw?ZXb(V4r<~(_XBi$;#ItN`^ct);$(lCrk-MuN*
      z(xfE!xz-5fG`%@thB8l5Z@rN^Tt!xbSarCk-dcbP<SW5@&`Nm$eZ${q8xSOqOtMvk
      zo7I{>m{$O!gNiyo7Q;jm5RvI}^JLm!?4m0A^&nTl&W7K%W}hA{3pIT#Qj6*~k;JAl
      zOq-*j@~X?aLZARzl~qaE`F-uyF3;B*N%a$#yqKk7-@l=z*U2eBQxrLZW4Yme4Xay1
      z7asncOk(LT1bErb!PtDn`Z6=DcE9xCbru{7vvMb90?eZq^M!P)b!)XDrnIJzPj8;}
      zcdh@kGDuGisuZxIZs|9lLtp$b2?q~kWQ6c`<mX8H<8w2bwwyAcK$^MBJ%$?vaaw30
      zh>|xb!BXWyM_l7ZRqv{zJ1oHFsp|PM6jPO>7Vn?DVm73Ma`C&q;h{6ArK#to{4^&7
      zb4OFew#krIYhfuS=?3}hPl*0{-ax;Wx5Pf<<%1$Y6n^+)>O&ScT(kX){?)n%M@eky
      zi3hSA-3I}y^Ew7^7LMLJ{L>cAOHu5ua|tZ;vXy)E6BWaNU77Oy_U^YpO!5b7%d+)-
      zZWtTSz3jEoqDmTs;GOrDy+<pT<H&_3Ikxvt3eQ;D;W}lT=X{;)xXK=|fEgwV!c$fo
      z7Yw@OgH!t&d(aqoTJbF$oiZXFOwUN)e&Z}{xRl8@a?Bxpl(c<0D$c2}w{GEY=7hY}
      z%)@+tneRny$oSs-PkaOWP#rl9gVAe&<4(4!k(A=Lw5#se%$ipdwM~Q&=A9Fq?fV1=
      z&8y8bK0-N$K509P_vmfd`*v)RCl6o8fK!;Tk_V-9V{!4*5nCVzI?xj)R5He(snONY
      zQGBdkFhBaAAGMgqo1PSeL0qSW)`{R}GW<r(ESU=*fxS?})l^p6QLii6f~NibixrY^
      z!m=Be9BsAIq6vAnB)=pHBgWQV5hXTv=|r;!^P8O53iGPNzLo{OmE9g-j%SXa;uA88
      z6~9bv{`gq?bSIJz95fIs#&^xFP#*iGz6F9lN0|GH!+x>XYq+5IxI3TmxH<AX37D5r
      zTJOPxm5zOK@gIA*zG71M@UL(9`PH9uC(A#$$@Fs{+VPW05IBahIooN^h@b|vu*9G&
      z9%J~$TxQs=a*iqa*m0UgiZs*@=A4Kz|68(E2MR8Bv%(7#ZdaUWkKR6x!D|Yz#5WUA
      zK-2W1F(u3n__lw2ImiKZqp|5Agn3}CDff_z`^6APIAf3Rqr*8hr<J%^fBZ|Ttl#~W
      zWJf8|#Om~}7-@jg-Uou-C;b@=FeyAk*3>Q~C8cnVV)HXW_z_>c^l5!AgweOdxVvCH
      zkZvI!rvi|ZkyVnCQI(Qau#uHV%F7|;Ri$JUkTNpZk~7c$7a<_X-N!TP4?$5%=9D9A
      zBP)ZHS4PUo{!0+m4s1LnaQ?Ai9ps6La0&4MwB3VTJ$Q`+T)aH2JY3wPZhZ7O{n`Nl
      MV|{Zyf(|<2zn#mZCIA2c
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-icons_fadc7a_256x240.png b/bower_components/jquery-ui/themes/sunny/images/ui-icons_fadc7a_256x240.png
      deleted file mode 100644
      index 99f9c862fc92d164165b218744828d86c1ed5cbf..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MNY6~SLK_qRUldK?{r~^~
      
      diff --git a/bower_components/jquery-ui/themes/sunny/images/ui-icons_ffe180_256x240.png b/bower_components/jquery-ui/themes/sunny/images/ui-icons_ffe180_256x240.png
      deleted file mode 100644
      index 09cbc5f684589414b4d8568a2cac56195496258b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M>znIU=%C~O3um9_Z~y=R
      
      diff --git a/bower_components/jquery-ui/themes/sunny/jquery-ui.css b/bower_components/jquery-ui/themes/sunny/jquery-ui.css
      deleted file mode 100644
      index 4c9077e641..0000000000
      --- a/bower_components/jquery-ui/themes/sunny/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=817865&bgTextureHeader=gloss_wave&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=ffffff&iconColorHeader=fadc7a&bgColorContent=feeebd&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=gloss_wave&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=gloss_wave&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=inset_soft&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=gloss_wave&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=diagonals_medium&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #d19405;
      -}
      -.ui-widget-content {
      -	border: 1px solid #8e846b;
      -	background: #feeebd url("images/ui-bg_highlight-soft_100_feeebd_1x100.png") 50% top repeat-x;
      -	color: #383838;
      -}
      -.ui-widget-content a {
      -	color: #383838;
      -}
      -.ui-widget-header {
      -	border: 1px solid #494437;
      -	background: #817865 url("images/ui-bg_gloss-wave_45_817865_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #d19405;
      -	background: #fece2f url("images/ui-bg_gloss-wave_60_fece2f_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #4c3000;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #4c3000;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #a45b13;
      -	background: #ffdd57 url("images/ui-bg_gloss-wave_70_ffdd57_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #381f00;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #381f00;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #655e4e;
      -	background: #ffffff url("images/ui-bg_inset-soft_30_ffffff_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #0074c7;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #655e4e;
      -	background-color: #0074c7;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #0074c7;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #eeb420;
      -	background: #fff9e5 url("images/ui-bg_gloss-wave_90_fff9e5_500x100.png") 50% top repeat-x;
      -	color: #1f1f1f;
      -}
      -.ui-state-checked {
      -	border: 1px solid #eeb420;
      -	background: #fff9e5;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #1f1f1f;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ffb73d;
      -	background: #d34d17 url("images/ui-bg_diagonals-medium_20_d34d17_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_d19405_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_fadc7a_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_bd7b00_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_eb990f_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_ed9f26_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffe180_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_3d3d3d_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 8px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 8px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 8px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 8px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #5c5c5c;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #cccccc;
      -	box-shadow: -7px -7px 7px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/sunny/jquery-ui.min.css b/bower_components/jquery-ui/themes/sunny/jquery-ui.min.css
      deleted file mode 100644
      index 01756ad866..0000000000
      --- a/bower_components/jquery-ui/themes/sunny/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=817865&bgTextureHeader=gloss_wave&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=ffffff&iconColorHeader=fadc7a&bgColorContent=feeebd&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=gloss_wave&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=gloss_wave&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=inset_soft&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=gloss_wave&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=diagonals_medium&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Segoe UI,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Segoe UI,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d19405}.ui-widget-content{border:1px solid #8e846b;background:#feeebd url("images/ui-bg_highlight-soft_100_feeebd_1x100.png") 50% top repeat-x;color:#383838}.ui-widget-content a{color:#383838}.ui-widget-header{border:1px solid #494437;background:#817865 url("images/ui-bg_gloss-wave_45_817865_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d19405;background:#fece2f url("images/ui-bg_gloss-wave_60_fece2f_500x100.png") 50% 50% repeat-x;font-weight:bold;color:#4c3000}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#4c3000;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #a45b13;background:#ffdd57 url("images/ui-bg_gloss-wave_70_ffdd57_500x100.png") 50% 50% repeat-x;font-weight:bold;color:#381f00}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#381f00;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #655e4e;background:#fff url("images/ui-bg_inset-soft_30_ffffff_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#0074c7}.ui-icon-background,.ui-state-active .ui-icon-background{border:#655e4e;background-color:#0074c7}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#0074c7;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #eeb420;background:#fff9e5 url("images/ui-bg_gloss-wave_90_fff9e5_500x100.png") 50% top repeat-x;color:#1f1f1f}.ui-state-checked{border:1px solid #eeb420;background:#fff9e5}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#1f1f1f}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #ffb73d;background:#d34d17 url("images/ui-bg_diagonals-medium_20_d34d17_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_d19405_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_fadc7a_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_bd7b00_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_eb990f_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_ed9f26_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffe180_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_3d3d3d_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:8px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:8px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:8px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:8px}.ui-widget-overlay{background:#5c5c5c;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-7px -7px 7px #ccc;box-shadow:-7px -7px 7px #ccc}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/sunny/theme.css b/bower_components/jquery-ui/themes/sunny/theme.css
      deleted file mode 100644
      index d773291b3b..0000000000
      --- a/bower_components/jquery-ui/themes/sunny/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=8px&bgColorHeader=817865&bgTextureHeader=gloss_wave&bgImgOpacityHeader=45&borderColorHeader=494437&fcHeader=ffffff&iconColorHeader=fadc7a&bgColorContent=feeebd&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=8e846b&fcContent=383838&iconColorContent=d19405&bgColorDefault=fece2f&bgTextureDefault=gloss_wave&bgImgOpacityDefault=60&borderColorDefault=d19405&fcDefault=4c3000&iconColorDefault=3d3d3d&bgColorHover=ffdd57&bgTextureHover=gloss_wave&bgImgOpacityHover=70&borderColorHover=a45b13&fcHover=381f00&iconColorHover=bd7b00&bgColorActive=ffffff&bgTextureActive=inset_soft&bgImgOpacityActive=30&borderColorActive=655e4e&fcActive=0074c7&iconColorActive=eb990f&bgColorHighlight=fff9e5&bgTextureHighlight=gloss_wave&bgImgOpacityHighlight=90&borderColorHighlight=eeb420&fcHighlight=1f1f1f&iconColorHighlight=ed9f26&bgColorError=d34d17&bgTextureError=diagonals_medium&bgImgOpacityError=20&borderColorError=ffb73d&fcError=ffffff&iconColorError=ffe180&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #d19405;
      -}
      -.ui-widget-content {
      -	border: 1px solid #8e846b;
      -	background: #feeebd url("images/ui-bg_highlight-soft_100_feeebd_1x100.png") 50% top repeat-x;
      -	color: #383838;
      -}
      -.ui-widget-content a {
      -	color: #383838;
      -}
      -.ui-widget-header {
      -	border: 1px solid #494437;
      -	background: #817865 url("images/ui-bg_gloss-wave_45_817865_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #d19405;
      -	background: #fece2f url("images/ui-bg_gloss-wave_60_fece2f_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #4c3000;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #4c3000;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #a45b13;
      -	background: #ffdd57 url("images/ui-bg_gloss-wave_70_ffdd57_500x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #381f00;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #381f00;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #655e4e;
      -	background: #ffffff url("images/ui-bg_inset-soft_30_ffffff_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #0074c7;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #655e4e;
      -	background-color: #0074c7;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #0074c7;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #eeb420;
      -	background: #fff9e5 url("images/ui-bg_gloss-wave_90_fff9e5_500x100.png") 50% top repeat-x;
      -	color: #1f1f1f;
      -}
      -.ui-state-checked {
      -	border: 1px solid #eeb420;
      -	background: #fff9e5;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #1f1f1f;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ffb73d;
      -	background: #d34d17 url("images/ui-bg_diagonals-medium_20_d34d17_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_d19405_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_fadc7a_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_bd7b00_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_eb990f_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_ed9f26_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffe180_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_3d3d3d_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 8px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 8px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 8px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 8px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #5c5c5c;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #cccccc;
      -	box-shadow: -7px -7px 7px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_10_4f4221_10x8.png
      deleted file mode 100644
      index 44481a8ade385e8cc0cb040a47233d914021ce7d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 365
      zcmeAS@N?(olHy`uVBq!ia0vp^AU1~p6OfeWP+bJ1SkfJR9T^xl_H+M9WCijSl0AZa
      z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+uh|q7;r{>zXKFu
      zFY)wsWq-iQ$E(E6|9r)4pirTwi(`ny<z$|>-+nCmIG>U8kJYEs@0SZPvn6a!ynUpO
      zKeB~$x|v?>JANB;MHM~gnFX27VJ)XQ-0JJq)m>d<ZW$ch-W|`nZ-w&>ofAU!74`DJ
      z&Yp7M_;GM<@BQ!}&Mln#*MDf|=-R9(BoLn{)hMaNFnfE@jbOcKPoU+hC9V-ADTyVi
      zR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkup&`{UF#LB>ctxWqXiiX_$l+3hB+#1TYCxdKY
      N@O1TaS?83{1OUjxa%2Di
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_20_372806_10x8.png
      deleted file mode 100644
      index 3506647339d48297a6380771faeeb25017df7bba..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 368
      zcmeAS@N?(olHy`uVBq!ia0vp^AU1~p6OfeWP+bJ1SkfJR9T^xl_H+M9WCijSl0AZa
      z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+uh|q7;r{>zXKFu
      zFY)wsWq-iQ$E(E6|9r)4piqgYi(`ny<>V4yGk?MOvkfeEu|F%G)S57}J-GaEyI@S0
      z&Y>3X**j)ENuKE~AT)iU&yFpM+J{nE7Vq5I#wIPTmpkLZ)3whx`F~N!5liWOpL1Vn
      ze_WaZOW%RHz4ya^IJa=_U;m+<V{!Z%<?WYvWA+^q%@F{)EG3vjAmV*0(0<ht*NBpo
      z#FA92<f2p{#b9J$Xr^mmscUEwVrXn-Y+_|-sB2(iWnjQoru`K~LvDUbW?Cg~4dvRC
      RJ%Jh+JYD@<);T3K0RYspbgBRV
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_675423_10x8.png
      deleted file mode 100644
      index 41b3a7b549af7a639801a2276842905991a687e0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 370
      zcmeAS@N?(olHy`uVBq!ia0vp^AU1~p6OfeWP+bJ1SkfJR9T^xl_H+M9WCijSl0AZa
      z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+uh|q7;r{>zXKFu
      zFY)wsWq-iQ$E(E6|9r)4pir5oi(`ny<z$_m(_>P%H8674y!%t}I@g$)?Sby|aN%{X
      zVu^>A`o5X}#O|lIfY9`XK0CH3Y9C5vNv^8$=-6bWmpkKu=;h+&?N$P2+?$SkKb0>T
      zANJ__nF}WixZmac*>^}@$>&FHtG$avc5rd)oPCc!iLOg%26{9$`r$Rpr0GBxsFt`!
      zl%yn<q*^5xr2;7iBLhP-T?0#9Lz56gV=H45D?>wF0~0F)1GX~luP7RF^HVa@DsgKl
      T*PiSN)WG2B>gTe~DWM4fBa3(I
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_25_d5ac5d_10x8.png
      deleted file mode 100644
      index 2c454a3babec7d479a96e6b18ce24a641c2e57c4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 371
      zcmeAS@N?(olHy`uVBq!ia0vp^AU1~p6OfeWP+bJ1SkfJR9T^xl_H+M9WCijSl0AZa
      z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+uh|q7;r{>zXKFu
      zFY)wsWq-iQ$E(E6|9r)4pisG|i(`ny<>Wm#cem<RTQdv&c>FQ>=JHe?iH1~mcaeCJ
      zO&r2{xj9NUK95)hgr+a_*|9}Y`%o&&<EyK)uN^t|=u#VJ-QJ&{-alno;XXn2pYBiL
      zkAFq$&hp6d6f8G>_+9j$K;ohI+J6)eRs4S1SE`y`_>(Jq1JFlnANjQX=ISd1IzhF>
      zHKHUXu_V<hxhNG#F&G&bn&}!?>KdAa7#dp{n^+kd>Kd3>85ppYX@5o0kei>9nO2Eg
      UL%H^3PoM?{Pgg&ebxsLQ05ODlo&W#<
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_261803_10x8.png
      deleted file mode 100644
      index 8f5e2a113697c98061e99b413b401ee5b0e7987a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 368
      zcmeAS@N?(olHy`uVBq!ia0vp^AU1~p6OfeWP+bJ1SkfJR9T^xl_H+M9WCijSl0AZa
      z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+uh|q7;r{>zXKFu
      zFY)wsWq-iQ$E(E6|9r)4piqgYi(`ny<>V_Lr$!%Ida!||?(Uz^PoK@0*%E@&UnhpU
      ziX|Re+S}cpE&M%;qw{otTFk8pq7RLl0)2g*nr2E)H}m=M_O$u_^$P{exHlb<e`&w{
      zU&zDjX9|Q*-uzM9YVR`R!*8zo4g)C(&AE@F+fRq@XyRpJ=sy^s`+5JR6+rt{OI#yL
      zQW8s2t&)pUffR$0fuWhMfu*jYNr<7bm9dGHp`osUiIsr?TbcG(6b-rgDVb@NxHXh(
      SPxb_AVDNPHb6Mw<&;$TPhk6kJ
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_diamond_8_443113_10x8.png
      deleted file mode 100644
      index aaaa6817887754ffc015a28dcf1672da3776e618..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 368
      zcmeAS@N?(olHy`uVBq!ia0vp^AU1~p6OfeWP+bJ1SkfJR9T^xl_H+M9WCijSl0AZa
      z85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV+uh|q7;r{>zXKFu
      zFY)wsWq-iQ$E(E6|9r)4piqgYi(`ny<>W7OGR`ShwlH%3x%bEW^K^S=wuG;#yU%SC
      zjBMeYZq_F{C-zRhqKcmL%z{kku$I#tZsOw3&WVXJw+s&Ucf3!HU-&9=g6coLzpsD)
      z=3rJ_aFSu`OwRr5KeTfQ*Tp~N7j&C%9=7{w!7r}x4M6Wm{`A+$D+s>|v|qKvHKHUX
      zu_V<hxhNG#F&G&bn&}!?>KdAa7#dp{n^+kd>Kd3>85ppYX@5o0kei>9nO2EgL%H^3
      QPoM?{Pgg&ebxsLQ0Pe<g(*OVf
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-bg_highlight-hard_65_fee4bd_1x100.png
      deleted file mode 100644
      index 896a99a9fd27478cbcf30f68b9f302e960eb1c38..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 372
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1=6}9oHc+U-)5S4F<NVw63wfCwC0rg(4-99H2>4Q<>)^!dF36F=
      zEY+Zu@knN2Pw}01ZGYJr#e6*i=2s-M<+r_ktHAK%^UTK86+d2RamBuIDSN%sBkqch
      zoBty5lb2r{ovU^(sU+B6Y45G-Nq3L=i0CJ)a?Sl-^!4cL_xJxO&T~3##Trmk77KKP
      zYKdz^NlIc#s#S7PDv)9@GB7mLHL%n*Gzl>@wlX%cGBngRFtIW)U@O!9ilQMmKP5A*
      W61RqO?a7`%4Gf;HelF{r5}E)KF?rSi
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_070603_256x240.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_070603_256x240.png
      deleted file mode 100644
      index f99fb0da8436abb359fcc7a992c2a96cafda00e0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      Mq-UmEp^b_EFJ<=slK=n!
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_e8e2b5_256x240.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_e8e2b5_256x240.png
      deleted file mode 100644
      index 9f57dd4a741b9009b3d3111b28e2c3480e830910..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pg$_FYzf`aD@&Et;
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_e9cd86_256x240.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_e9cd86_256x240.png
      deleted file mode 100644
      index d0512fd1a276c8f6de715f2edafc9bd5ffaad846..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MvA(%pg$_FYzx|@w$N&HU
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_efec9f_256x240.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_efec9f_256x240.png
      deleted file mode 100644
      index 46ca494c515eae7a7e166d8648f8a442a6504912..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NjP=d+Ds<5C{{_Y9@rD2Z
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_f2ec64_256x240.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_f2ec64_256x240.png
      deleted file mode 100644
      index ff2f65843ca14510a0a4b7919686f8e1e5525948..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NLtRsy3N3Wpe*ynb-2DIm
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_f9f2bd_256x240.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_f9f2bd_256x240.png
      deleted file mode 100644
      index b87d0eb2fd247755d20d94219a144dfde3eed3a0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M)HT&9*Fwkr7dgfQ4*&oF
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_ff7519_256x240.png b/bower_components/jquery-ui/themes/swanky-purse/images/ui-icons_ff7519_256x240.png
      deleted file mode 100644
      index d52a40921e763c97a1a346224a0d7e702834eb18..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FU#eXH~;_u
      
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/jquery-ui.css b/bower_components/jquery-ui/themes/swanky-purse/jquery-ui.css
      deleted file mode 100644
      index 22c9ffe919..0000000000
      --- a/bower_components/jquery-ui/themes/swanky-purse/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Georgia%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=5px&bgColorHeader=261803&bgTextureHeader=diamond&bgImgOpacityHeader=8&borderColorHeader=baaa5a&fcHeader=eacd86&iconColorHeader=e9cd86&bgColorContent=443113&bgTextureContent=diamond&bgImgOpacityContent=8&borderColorContent=efec9f&fcContent=efec9f&iconColorContent=efec9f&bgColorDefault=4f4221&bgTextureDefault=diamond&bgImgOpacityDefault=10&borderColorDefault=362917&fcDefault=f8eec9&iconColorDefault=e8e2b5&bgColorHover=675423&bgTextureHover=diamond&bgImgOpacityHover=25&borderColorHover=362917&fcHover=f8eec9&iconColorHover=f2ec64&bgColorActive=443113&bgTextureActive=diamond&bgImgOpacityActive=8&borderColorActive=efec9f&fcActive=f9f2bd&iconColorActive=f9f2bd&bgColorHighlight=d5ac5d&bgTextureHighlight=diamond&bgImgOpacityHighlight=25&borderColorHighlight=362917&fcHighlight=060200&iconColorHighlight=070603&bgColorError=fee4bd&bgTextureError=highlight_hard&bgImgOpacityError=65&borderColorError=c26629&fcError=803f1e&iconColorError=ff7519&bgColorOverlay=372806&bgTextureOverlay=diamond&bgImgOpacityOverlay=20&opacityOverlay=80&bgColorShadow=ddd4b0&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=12px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Georgia,Verdana,Arial,sans-serif;
      -	font-size: 1.2em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Georgia,Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #362917;
      -}
      -.ui-widget-content {
      -	border: 1px solid #efec9f;
      -	background: #443113 url("images/ui-bg_diamond_8_443113_10x8.png") 50% 50% repeat;
      -	color: #efec9f;
      -}
      -.ui-widget-content a {
      -	color: #efec9f;
      -}
      -.ui-widget-header {
      -	border: 1px solid #baaa5a;
      -	background: #261803 url("images/ui-bg_diamond_8_261803_10x8.png") 50% 50% repeat;
      -	color: #eacd86;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #eacd86;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #362917;
      -	background: #4f4221 url("images/ui-bg_diamond_10_4f4221_10x8.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #f8eec9;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #f8eec9;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #362917;
      -	background: #675423 url("images/ui-bg_diamond_25_675423_10x8.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #f8eec9;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #f8eec9;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #efec9f;
      -	background: #443113 url("images/ui-bg_diamond_8_443113_10x8.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #f9f2bd;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #efec9f;
      -	background-color: #f9f2bd;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #f9f2bd;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #362917;
      -	background: #d5ac5d url("images/ui-bg_diamond_25_d5ac5d_10x8.png") 50% 50% repeat;
      -	color: #060200;
      -}
      -.ui-state-checked {
      -	border: 1px solid #362917;
      -	background: #d5ac5d;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #060200;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #c26629;
      -	background: #fee4bd url("images/ui-bg_highlight-hard_65_fee4bd_1x100.png") 50% top repeat-x;
      -	color: #803f1e;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #803f1e;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #803f1e;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_efec9f_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_e9cd86_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_f2ec64_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f9f2bd_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_070603_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ff7519_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_e8e2b5_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #372806 url("images/ui-bg_diamond_20_372806_10x8.png") 50% 50% repeat;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #ddd4b0;
      -	box-shadow: -8px -8px 8px #ddd4b0;
      -}
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/jquery-ui.min.css b/bower_components/jquery-ui/themes/swanky-purse/jquery-ui.min.css
      deleted file mode 100644
      index 2a00533291..0000000000
      --- a/bower_components/jquery-ui/themes/swanky-purse/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Georgia%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=5px&bgColorHeader=261803&bgTextureHeader=diamond&bgImgOpacityHeader=8&borderColorHeader=baaa5a&fcHeader=eacd86&iconColorHeader=e9cd86&bgColorContent=443113&bgTextureContent=diamond&bgImgOpacityContent=8&borderColorContent=efec9f&fcContent=efec9f&iconColorContent=efec9f&bgColorDefault=4f4221&bgTextureDefault=diamond&bgImgOpacityDefault=10&borderColorDefault=362917&fcDefault=f8eec9&iconColorDefault=e8e2b5&bgColorHover=675423&bgTextureHover=diamond&bgImgOpacityHover=25&borderColorHover=362917&fcHover=f8eec9&iconColorHover=f2ec64&bgColorActive=443113&bgTextureActive=diamond&bgImgOpacityActive=8&borderColorActive=efec9f&fcActive=f9f2bd&iconColorActive=f9f2bd&bgColorHighlight=d5ac5d&bgTextureHighlight=diamond&bgImgOpacityHighlight=25&borderColorHighlight=362917&fcHighlight=060200&iconColorHighlight=070603&bgColorError=fee4bd&bgTextureError=highlight_hard&bgImgOpacityError=65&borderColorError=c26629&fcError=803f1e&iconColorError=ff7519&bgColorOverlay=372806&bgTextureOverlay=diamond&bgImgOpacityOverlay=20&opacityOverlay=80&bgColorShadow=ddd4b0&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=12px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Georgia,Verdana,Arial,sans-serif;font-size:1.2em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Georgia,Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #362917}.ui-widget-content{border:1px solid #efec9f;background:#443113 url("images/ui-bg_diamond_8_443113_10x8.png") 50% 50% repeat;color:#efec9f}.ui-widget-content a{color:#efec9f}.ui-widget-header{border:1px solid #baaa5a;background:#261803 url("images/ui-bg_diamond_8_261803_10x8.png") 50% 50% repeat;color:#eacd86;font-weight:bold}.ui-widget-header a{color:#eacd86}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #362917;background:#4f4221 url("images/ui-bg_diamond_10_4f4221_10x8.png") 50% 50% repeat;font-weight:bold;color:#f8eec9}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#f8eec9;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #362917;background:#675423 url("images/ui-bg_diamond_25_675423_10x8.png") 50% 50% repeat;font-weight:bold;color:#f8eec9}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#f8eec9;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #efec9f;background:#443113 url("images/ui-bg_diamond_8_443113_10x8.png") 50% 50% repeat;font-weight:bold;color:#f9f2bd}.ui-icon-background,.ui-state-active .ui-icon-background{border:#efec9f;background-color:#f9f2bd}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#f9f2bd;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #362917;background:#d5ac5d url("images/ui-bg_diamond_25_d5ac5d_10x8.png") 50% 50% repeat;color:#060200}.ui-state-checked{border:1px solid #362917;background:#d5ac5d}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#060200}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #c26629;background:#fee4bd url("images/ui-bg_highlight-hard_65_fee4bd_1x100.png") 50% top repeat-x;color:#803f1e}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#803f1e}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#803f1e}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_efec9f_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_e9cd86_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_f2ec64_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f9f2bd_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_070603_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ff7519_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_e8e2b5_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#372806 url("images/ui-bg_diamond_20_372806_10x8.png") 50% 50% repeat;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #ddd4b0;box-shadow:-8px -8px 8px #ddd4b0}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/swanky-purse/theme.css b/bower_components/jquery-ui/themes/swanky-purse/theme.css
      deleted file mode 100644
      index 487b0725c3..0000000000
      --- a/bower_components/jquery-ui/themes/swanky-purse/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Georgia%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.2em&cornerRadius=5px&bgColorHeader=261803&bgTextureHeader=diamond&bgImgOpacityHeader=8&borderColorHeader=baaa5a&fcHeader=eacd86&iconColorHeader=e9cd86&bgColorContent=443113&bgTextureContent=diamond&bgImgOpacityContent=8&borderColorContent=efec9f&fcContent=efec9f&iconColorContent=efec9f&bgColorDefault=4f4221&bgTextureDefault=diamond&bgImgOpacityDefault=10&borderColorDefault=362917&fcDefault=f8eec9&iconColorDefault=e8e2b5&bgColorHover=675423&bgTextureHover=diamond&bgImgOpacityHover=25&borderColorHover=362917&fcHover=f8eec9&iconColorHover=f2ec64&bgColorActive=443113&bgTextureActive=diamond&bgImgOpacityActive=8&borderColorActive=efec9f&fcActive=f9f2bd&iconColorActive=f9f2bd&bgColorHighlight=d5ac5d&bgTextureHighlight=diamond&bgImgOpacityHighlight=25&borderColorHighlight=362917&fcHighlight=060200&iconColorHighlight=070603&bgColorError=fee4bd&bgTextureError=highlight_hard&bgImgOpacityError=65&borderColorError=c26629&fcError=803f1e&iconColorError=ff7519&bgColorOverlay=372806&bgTextureOverlay=diamond&bgImgOpacityOverlay=20&opacityOverlay=80&bgColorShadow=ddd4b0&bgTextureShadow=flat&bgImgOpacityShadow=75&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=12px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Georgia,Verdana,Arial,sans-serif;
      -	font-size: 1.2em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Georgia,Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #362917;
      -}
      -.ui-widget-content {
      -	border: 1px solid #efec9f;
      -	background: #443113 url("images/ui-bg_diamond_8_443113_10x8.png") 50% 50% repeat;
      -	color: #efec9f;
      -}
      -.ui-widget-content a {
      -	color: #efec9f;
      -}
      -.ui-widget-header {
      -	border: 1px solid #baaa5a;
      -	background: #261803 url("images/ui-bg_diamond_8_261803_10x8.png") 50% 50% repeat;
      -	color: #eacd86;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #eacd86;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #362917;
      -	background: #4f4221 url("images/ui-bg_diamond_10_4f4221_10x8.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #f8eec9;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #f8eec9;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #362917;
      -	background: #675423 url("images/ui-bg_diamond_25_675423_10x8.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #f8eec9;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #f8eec9;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #efec9f;
      -	background: #443113 url("images/ui-bg_diamond_8_443113_10x8.png") 50% 50% repeat;
      -	font-weight: bold;
      -	color: #f9f2bd;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #efec9f;
      -	background-color: #f9f2bd;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #f9f2bd;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #362917;
      -	background: #d5ac5d url("images/ui-bg_diamond_25_d5ac5d_10x8.png") 50% 50% repeat;
      -	color: #060200;
      -}
      -.ui-state-checked {
      -	border: 1px solid #362917;
      -	background: #d5ac5d;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #060200;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #c26629;
      -	background: #fee4bd url("images/ui-bg_highlight-hard_65_fee4bd_1x100.png") 50% top repeat-x;
      -	color: #803f1e;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #803f1e;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #803f1e;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_efec9f_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_e9cd86_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_f2ec64_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f9f2bd_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_070603_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ff7519_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_e8e2b5_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #372806 url("images/ui-bg_diamond_20_372806_10x8.png") 50% 50% repeat;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #ddd4b0;
      -	box-shadow: -8px -8px 8px #ddd4b0;
      -}
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-bg_diagonals-small_50_262626_40x40.png b/bower_components/jquery-ui/themes/trontastic/images/ui-bg_diagonals-small_50_262626_40x40.png
      deleted file mode 100644
      index 69a1775294df37182b2f5ba56ead58afc3cd5ec4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 321
      zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
      z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp^nu
      ziKnkC`vXosUL~%I2QzqqLY|&3jv*e$-(D~jWKa-bK4?=>$tkh$sFIMu2i-Ic!-=0(
      zm6*@$_3@P2y)1pUdHCka;-EFJ&v^co<uN=W;0z-!{P@KDokjh(chts3KtokaTq8<S
      z5=&C8l8aJ-6oZk0p_#6MrLLh#h@r8Sv5A$Tfv$mxm4U$mMg^ePkTm4xr(~v8;?{66
      SX2xHj1_n=8KbLh*2~7a899(e#
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_40_0a0a0a_1x400.png b/bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_40_0a0a0a_1x400.png
      deleted file mode 100644
      index d8307ffb3d8b7080d5a24e5ee220d8902e46f12b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 322
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)@OhT^vI!PA41qBqk+DxGwJ4)zR49-B_)~Y%eeTS(dGk
      zS1n8ogszpay{-4j(eYWM<D<hpGvdvR2(6hjm?UFb+3p-%oZ+FsaN-hYyl#B#cA%-M
      zC9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkup&_LI~#LB>60iy!YZ%7()^HVa@
      XDsgML7&GH9Py>UftDnm{r-UW|Y}Z&$
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_55_f1fbe5_1x400.png b/bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_55_f1fbe5_1x400.png
      deleted file mode 100644
      index 9ba3f77c1751ce430a807928c7079d34bdeb8d81..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 406
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8SH*)Fyg;E@o-U3d9>?FFSL8aBAkpyf`)`3G3pzR?j`1aY;Mium
      z`Rul3?H}00CSOd>FwXqQkTj=l<%WZ7oBp#mrwj1LR~?!i*VVRri8L$2VFRAWw<n~A
      zPE~o58@{{E%Vm12(K2=KPt&{e)ThpH*yiP<U_DiGq0CfEMRu;j=Ote=qr3LLzhj$v
      zpI<Kf)Jl0<=2VZ#ok8xIe~)fSlsLv;$;^9R&$6@h-726fRZCnWN>UO_QmvAUQh^kM
      zk%6I^u7Rblp-G6Lv6Zojm7#&Ifr*uY!2(7FV0a;E$jwj5OsmAL;bP2;zd#KPp00i_
      I>zopr0Cn_=NB{r;
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_60_000000_1x400.png b/bower_components/jquery-ui/themes/trontastic/images/ui-bg_glass_60_000000_1x400.png
      deleted file mode 100644
      index a4efa3eb5ef4f221839e18d0e49cf766aef0582a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 323
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)@OiT^vI!PA6~BO-M?Ra9!N7tD_MJG$%Ly)e@GL7XHno
      z)~D?w6F$@8lcdkg88_A&6vm_`ZBI&yKOpdLVrQzJ@Z&d(<sUSpgg6+s{NVMNthiPP
      zXsl|9YeY#(Vo9o1a#1RfVlXl=G}AS()HO5-F*LR^HnB1^&^0izGB8-cr~vdFl7`&;
      al+3hB+!`*%%=in`z~JfX=d#Wzp$P!v)m!fX
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_55_000000_500x100.png b/bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_55_000000_500x100.png
      deleted file mode 100644
      index 29182962e1a1975626c3b6e5e81cc33f9db169cb..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4360
      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
      CDwu}=
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_85_9fda58_500x100.png b/bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_85_9fda58_500x100.png
      deleted file mode 100644
      index 5184d153a0d7fb10df0a5ef2e713c044395ce192..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5998
      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
      YV8s7Df$W{Ty0N0QmAz%{m79P44{0ea-T(jq
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_95_f6ecd5_500x100.png b/bower_components/jquery-ui/themes/trontastic/images/ui-bg_gloss-wave_95_f6ecd5_500x100.png
      deleted file mode 100644
      index 06b22120622bc8f0e99c3c46ba3c2f861ef6f6e0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5856
      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
      L!3ulv#-INMNkiI(
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-icons_000000_256x240.png b/bower_components/jquery-ui/themes/trontastic/images/ui-icons_000000_256x240.png
      deleted file mode 100644
      index 321f128052436ed1c77372e3b4fd9063553ef05f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5582
      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
      W_D)Ddzw_TDE1;`os9B|M7xh01>9ZFA
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-icons_1f1f1f_256x240.png b/bower_components/jquery-ui/themes/trontastic/images/ui-icons_1f1f1f_256x240.png
      deleted file mode 100644
      index e7d71d8b464f76cd75dbaf1517e430bf7b72fb14..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      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
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-icons_9fda58_256x240.png b/bower_components/jquery-ui/themes/trontastic/images/ui-icons_9fda58_256x240.png
      deleted file mode 100644
      index cc4d55d12902774dcf5eae9d8078b5ab3bf17489..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      NjP%TOE44B4{{;$Aublt@
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-icons_b8ec79_256x240.png b/bower_components/jquery-ui/themes/trontastic/images/ui-icons_b8ec79_256x240.png
      deleted file mode 100644
      index 9788017a112dda1c4c610c385ec8ee8fbdd21a5e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FNht@0{{R3
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-icons_cd0a0a_256x240.png b/bower_components/jquery-ui/themes/trontastic/images/ui-icons_cd0a0a_256x240.png
      deleted file mode 100644
      index ed1b23a81c2b1389423565a29deb53e883311bc2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FMgR(!vFvP
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/trontastic/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/trontastic/jquery-ui.css b/bower_components/jquery-ui/themes/trontastic/jquery-ui.css
      deleted file mode 100644
      index 71c5ce2c10..0000000000
      --- a/bower_components/jquery-ui/themes/trontastic/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=9fda58&bgTextureHeader=gloss_wave&bgImgOpacityHeader=85&borderColorHeader=000000&fcHeader=222222&iconColorHeader=1f1f1f&bgColorContent=000000&bgTextureContent=gloss_wave&bgImgOpacityContent=55&borderColorContent=4a4a4a&fcContent=ffffff&iconColorContent=9fda58&bgColorDefault=0a0a0a&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=1b1613&fcDefault=b8ec79&iconColorDefault=b8ec79&bgColorHover=000000&bgTextureHover=glass&bgImgOpacityHover=60&borderColorHover=000000&fcHover=96f226&iconColorHover=b8ec79&bgColorActive=4c4c4c&bgTextureActive=flat&bgImgOpacityActive=0&borderColorActive=696969&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=f1fbe5&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=8cce3b&fcHighlight=030303&iconColorHighlight=000000&bgColorError=f6ecd5&bgTextureError=gloss_wave&bgImgOpacityError=95&borderColorError=f1ac88&fcError=74736d&iconColorError=cd0a0a&bgColorOverlay=262626&bgTextureOverlay=diagonals_small&bgImgOpacityOverlay=50&opacityOverlay=30&bgColorShadow=303030&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=50&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=12px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #1b1613;
      -}
      -.ui-widget-content {
      -	border: 1px solid #4a4a4a;
      -	background: #000000 url("images/ui-bg_gloss-wave_55_000000_500x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #000000;
      -	background: #9fda58 url("images/ui-bg_gloss-wave_85_9fda58_500x100.png") 50% 50% repeat-x;
      -	color: #222222;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #222222;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #1b1613;
      -	background: #0a0a0a url("images/ui-bg_glass_40_0a0a0a_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #b8ec79;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #b8ec79;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #000000;
      -	background: #000000 url("images/ui-bg_glass_60_000000_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #96f226;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #96f226;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #696969;
      -	background: #4c4c4c;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #696969;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #8cce3b;
      -	background: #f1fbe5 url("images/ui-bg_glass_55_f1fbe5_1x400.png") 50% 50% repeat-x;
      -	color: #030303;
      -}
      -.ui-state-checked {
      -	border: 1px solid #8cce3b;
      -	background: #f1fbe5;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #030303;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #f1ac88;
      -	background: #f6ecd5 url("images/ui-bg_gloss-wave_95_f6ecd5_500x100.png") 50% top repeat-x;
      -	color: #74736d;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #74736d;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #74736d;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_9fda58_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_1f1f1f_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_b8ec79_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_000000_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_b8ec79_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #262626 url("images/ui-bg_diagonals-small_50_262626_40x40.png") 50% 50% repeat;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -6px -6px 6px #303030;
      -	box-shadow: -6px -6px 6px #303030;
      -}
      diff --git a/bower_components/jquery-ui/themes/trontastic/jquery-ui.min.css b/bower_components/jquery-ui/themes/trontastic/jquery-ui.min.css
      deleted file mode 100644
      index 5c68699c95..0000000000
      --- a/bower_components/jquery-ui/themes/trontastic/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=9fda58&bgTextureHeader=gloss_wave&bgImgOpacityHeader=85&borderColorHeader=000000&fcHeader=222222&iconColorHeader=1f1f1f&bgColorContent=000000&bgTextureContent=gloss_wave&bgImgOpacityContent=55&borderColorContent=4a4a4a&fcContent=ffffff&iconColorContent=9fda58&bgColorDefault=0a0a0a&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=1b1613&fcDefault=b8ec79&iconColorDefault=b8ec79&bgColorHover=000000&bgTextureHover=glass&bgImgOpacityHover=60&borderColorHover=000000&fcHover=96f226&iconColorHover=b8ec79&bgColorActive=4c4c4c&bgTextureActive=flat&bgImgOpacityActive=0&borderColorActive=696969&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=f1fbe5&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=8cce3b&fcHighlight=030303&iconColorHighlight=000000&bgColorError=f6ecd5&bgTextureError=gloss_wave&bgImgOpacityError=95&borderColorError=f1ac88&fcError=74736d&iconColorError=cd0a0a&bgColorOverlay=262626&bgTextureOverlay=diagonals_small&bgImgOpacityOverlay=50&opacityOverlay=30&bgColorShadow=303030&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=50&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=12px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Segoe UI,Helvetica,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Segoe UI,Helvetica,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #1b1613}.ui-widget-content{border:1px solid #4a4a4a;background:#000 url("images/ui-bg_gloss-wave_55_000000_500x100.png") 50% top repeat-x;color:#fff}.ui-widget-content a{color:#fff}.ui-widget-header{border:1px solid #000;background:#9fda58 url("images/ui-bg_gloss-wave_85_9fda58_500x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #1b1613;background:#0a0a0a url("images/ui-bg_glass_40_0a0a0a_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#b8ec79}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#b8ec79;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #000;background:#000 url("images/ui-bg_glass_60_000000_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#96f226}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#96f226;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #696969;background:#4c4c4c;font-weight:bold;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#696969;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #8cce3b;background:#f1fbe5 url("images/ui-bg_glass_55_f1fbe5_1x400.png") 50% 50% repeat-x;color:#030303}.ui-state-checked{border:1px solid #8cce3b;background:#f1fbe5}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#030303}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1ac88;background:#f6ecd5 url("images/ui-bg_gloss-wave_95_f6ecd5_500x100.png") 50% top repeat-x;color:#74736d}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#74736d}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#74736d}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_9fda58_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_1f1f1f_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_b8ec79_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_000000_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_b8ec79_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#262626 url("images/ui-bg_diagonals-small_50_262626_40x40.png") 50% 50% repeat;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-6px -6px 6px #303030;box-shadow:-6px -6px 6px #303030}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/trontastic/theme.css b/bower_components/jquery-ui/themes/trontastic/theme.css
      deleted file mode 100644
      index 3424d70d95..0000000000
      --- a/bower_components/jquery-ui/themes/trontastic/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CHelvetica%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=9fda58&bgTextureHeader=gloss_wave&bgImgOpacityHeader=85&borderColorHeader=000000&fcHeader=222222&iconColorHeader=1f1f1f&bgColorContent=000000&bgTextureContent=gloss_wave&bgImgOpacityContent=55&borderColorContent=4a4a4a&fcContent=ffffff&iconColorContent=9fda58&bgColorDefault=0a0a0a&bgTextureDefault=glass&bgImgOpacityDefault=40&borderColorDefault=1b1613&fcDefault=b8ec79&iconColorDefault=b8ec79&bgColorHover=000000&bgTextureHover=glass&bgImgOpacityHover=60&borderColorHover=000000&fcHover=96f226&iconColorHover=b8ec79&bgColorActive=4c4c4c&bgTextureActive=flat&bgImgOpacityActive=0&borderColorActive=696969&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=f1fbe5&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=8cce3b&fcHighlight=030303&iconColorHighlight=000000&bgColorError=f6ecd5&bgTextureError=gloss_wave&bgImgOpacityError=95&borderColorError=f1ac88&fcError=74736d&iconColorError=cd0a0a&bgColorOverlay=262626&bgTextureOverlay=diagonals_small&bgImgOpacityOverlay=50&opacityOverlay=30&bgColorShadow=303030&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=50&thicknessShadow=6px&offsetTopShadow=-6px&offsetLeftShadow=-6px&cornerRadiusShadow=12px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #1b1613;
      -}
      -.ui-widget-content {
      -	border: 1px solid #4a4a4a;
      -	background: #000000 url("images/ui-bg_gloss-wave_55_000000_500x100.png") 50% top repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #000000;
      -	background: #9fda58 url("images/ui-bg_gloss-wave_85_9fda58_500x100.png") 50% 50% repeat-x;
      -	color: #222222;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #222222;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #1b1613;
      -	background: #0a0a0a url("images/ui-bg_glass_40_0a0a0a_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #b8ec79;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #b8ec79;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #000000;
      -	background: #000000 url("images/ui-bg_glass_60_000000_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #96f226;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #96f226;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #696969;
      -	background: #4c4c4c;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #696969;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #8cce3b;
      -	background: #f1fbe5 url("images/ui-bg_glass_55_f1fbe5_1x400.png") 50% 50% repeat-x;
      -	color: #030303;
      -}
      -.ui-state-checked {
      -	border: 1px solid #8cce3b;
      -	background: #f1fbe5;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #030303;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #f1ac88;
      -	background: #f6ecd5 url("images/ui-bg_gloss-wave_95_f6ecd5_500x100.png") 50% top repeat-x;
      -	color: #74736d;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #74736d;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #74736d;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_9fda58_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_1f1f1f_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_b8ec79_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_000000_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_b8ec79_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #262626 url("images/ui-bg_diagonals-small_50_262626_40x40.png") 50% 50% repeat;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -6px -6px 6px #303030;
      -	box-shadow: -6px -6px 6px #303030;
      -}
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_20_555555_1x400.png
      deleted file mode 100644
      index ff324673b9804db31d9df6ada198760d62a23a15..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 318
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451PZx%x;TbdoKE)mb@<2ugDyA0sTZGnv|Xt7@lo^XdB`)d
      zf5wb&hK6rbld29JDVg6Xcxc|?BM~Q$WE?tD(bwsi`9RjDtBr|?!6=7+zZ9<x&>0M>
      zC9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkupz(UsmNE*bu<n2Jwkei>9nO2Eg
      UgP!Cy7N7<OPgg&ebxsLQ0I=F$0{{R3
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_0078a3_1x400.png
      deleted file mode 100644
      index 396b795803ece81c0cd2130025da7d6966112b26..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 400
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fxiJY5_^JdVFTZ^*|ODAM|{`v32H0;>ZO+0U>|5#qI;
      zV6e0_KvPX{rtOQ+G*+!Zjb(HE7SHfHDAw{QEdHaqx}{M?-tXh0N=iz7k1ft!-&ywR
      zrLybys>`wu9o7mvEm)oHbgXC2j3`f6qfN%58#lC>c_#AeCV6?f{@K!<`^DwVjLFIG
      z4WnO0yg%X8cIkKjWuPhhAG2QEq4;XAMtU;PeX1p{5hW>!C8<`)MX5lF!N|bSOxM6t
      y*U%)y(Adh@#LB=z*8oTw#Jl9}K+%w!pOTqYiCcr7<TVzc1_n=8KbLh*2~7ZqA&B1q
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_glass_40_ffc73d_1x400.png
      deleted file mode 100644
      index 453b9df6691f6dafec8a2115568681f8fe418b08..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 374
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fxko-U3d9>?FFUnqFUL4x&R?R!4%KE4I)X^RdnWl+0u
      zWl~fIlZYA{t5qhGAM0TrS%J^1{ntb-ds&wq#q1!!;`o6*PHG;T>{jCo%U3%lM@fYQ
      zC0|ezZ{EIBBIM~_$E%M%WdGV0Y9;;UoO*LrJkP5?1{;>m`)kJ0l#ph}b6aw5zoX<K
      zpes~MTq8<S5=&C8l8aJ-6oZk0p_#6MrLLh#h@r8Sv5A#|g{}dRG>CV}+kv7XH$Npa
      XtrE8eJ;`e<Kn)C@u6{1-oD!M<Yj}2)
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_gloss-wave_25_333333_500x100.png
      deleted file mode 100644
      index 7ed024ddad88b77d743d00bdff21120f5c8ba273..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 3976
      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
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_highlight-soft_80_eeeeee_1x100.png
      deleted file mode 100644
      index b4510e435d1737f4fde7c9ef0749e87189c88ac1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 335
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451PX<Fx;TbNT;6-mP_RLPq3z=Pe?okGWd@CsTN&6UFj?%{
      zb>pC@2unD(Me%ngn|po%u1nq=>YOUms`%ZeUBc7VXUVi30_^X6&%~@ZI3(ovutn9R
      zB0l@~V`g1L*<ayrZh>r7Epd$~Nl7e8wMs5Z1yT$~28L$329~;pCLxB#R>me)1{S&o
      lK++)IC2t3chTQy=%(P0}8uTQuu>dtNc)I$ztaD0e0szFlW3B)I
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_25_000000_1x100.png
      deleted file mode 100644
      index 8538a23204ba1ef7c5ec1b0202d80b49f08ec3d0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 312
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451PVELx;TbNTt0fpP_V&3fZ^cp#SU&70zyKm9@VREEa>3p
      z2{?T2(Edvt)ACGwuPvOuYUN#VPtBa|^W2i>S9yrq{a|3(#MxZ8|4A#*EY%X%h?11V
      zl2ohYqEsNoU}RuurfXoSYiJT;Xl!L{Vr5{VYXBq-;$8A~plHa=PsvQH#H~S3@)`?J
      O1B0ilpUXO@geCwKidtv@
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-bg_inset-soft_30_f58400_1x100.png
      deleted file mode 100644
      index 0bbd7586ba9353cfa22ccac6d678f5e404360487..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 398
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1nD*|cB2Z|Or;B5V#`(7sHgX;cU~qYV@4AzKQlp2{r6`rX$sO50
      ztiuf~nl?wIaL6hy6<)Hv<H)Hn>D9*z@5s(+dss7V!V-JC<b{jnDqeC&PucaISM^=S
      z#aqQ%Q+7RXGdjN_;9Z-=Dxs<O+O@S}+AS(AO$DFl9b$aCu5(3!@S`iAy3*gbT6^93
      z*&<ZBCBt;pg5L7|buV{UFumR<A;Td5(+uc3)e_f;l9a@fRIB8oR3OD*WMF8fYhbBs
      xXcA&*Y-Ma>WniIe03;3KUGjFIXvob^$xN%ntwB%n8VgVZgQu&X%Q~loCIIqFiKzep
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_222222_256x240.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_222222_256x240.png
      deleted file mode 100644
      index f184400db5da441a76667625c74567d220208e3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      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
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_4b8e0b_256x240.png
      deleted file mode 100644
      index 4faad3e924c7686416456fb21529597f301570ac..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      zcmeHLXIGO=x4!QrKte|l1d-mG^b%U=y$C4f6$rf-A+$&dC`C}<Q3R0|5JePeDxmZx
      zC`wg`)Bw`E(xfCW`kXK4+xY?KTC--)p0%#oYxbHwv-jMwG&i85=AZ@ufX>KJ*9ri@
      zvmvkzho1EWBjev^0_LS<rUd{s88jy@6lXe*o1v8%0APgx0CyVzj?SiV%K#824FIcX
      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
      Mdgi*7+USJ;0*^OS9RL6T
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_a83300_256x240.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_a83300_256x240.png
      deleted file mode 100644
      index 51581b3e40b7329ba54afaf204fe5c234b081f7f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MP}fwaLJJ-DUxhwU<NyEw
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_cccccc_256x240.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_cccccc_256x240.png
      deleted file mode 100644
      index 4184f21a6be78600ab6584aa1649313f4f266813..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7034
      zcmZvBbyU>P*Z+H$MHY|_0cmNaQ<?>&Bqfww8flPl$)!uALqR}6LP`XwB^Hs84(X1i
      z8w3`KAD`cIp67g@=Y0N|J9p;1X3o7cbI-l6iP6zgAtIn7004kUO;t$`06@20-~bA_
      zZIyF8<!=SVUO`g<0ICuQFD-Fzb!KZ-Jxu`c;{X6;H~?JS4k0%Hz*_(Sw%`CDnF#>*
      z+_M{XrEe#|RvIcwK%ay~dC9GY=cT5pjJI$HM8Hm!h~-oU06H@@B?bN0)4LyB-Y^&;
      zx`I;*;<@5e^xkLwtV%0p{}`cq%JJoOiBk9oO4*YTS~L+y$5k*-NdQu6jzeXUOeOBj
      zjU?XFD=!cKr21D+3irKgzZs02G8Pvyqm#$&qV_z+sy#}tFN#Om=EBl^Fni)%gYW*F
      z)OzrD|Mh`a1MiNHa$ngE9A~dXEV}Z4NjMGB9?(3J2GJ2~17t3+>9B#HPkvA^Cx|^n
      ztEX@cIf3t9U%#X<eA@utQC10I!?a~oMUmpe_ki{j>(Jfn;VzPu(z@@K&J$X6RmS+A
      z)-2+=;p&L+i)d+(-!N#eJPAfF-ayiuuVo5_KF2l0hu-C$;9ePGQC$ZmvvQn;5VNR`
      zrKqH8>2L>mW^7itp?sbT?^kfo^wh^B{sGpAho}nuhhzhkjKoDhK2GyHD|`v<DKf3h
      zr4@pFwg>n7CT%kI@qFKEw$^S7aC?93x`$Jp>T=ar2t$A~$%vaAr_1y?G7(U9J;nf9
      z|7ddxcy)e%50_{qLk>U`m5c8z@&8RnMz&MrEge7{{zsj`p<E%Byt)5I=oE0J28r1|
      zopB(6w}dt$wkB~V$Ch;GRbtsNJD^z+_!`e|@gej6DyQk%wYtwOdgtRsvO?p)HyL@z
      zmGf)zo&vYgUY9Df9njMTVT(D&g*O6PQdma(=u_Z}HCd@vGg9)+)wNd@p1@qND`Iq%
      zv&Q&-YQspOJe6&t+LGkXDZt@5b&*@JYR=${UVK<oA%o64Zf!f*T8wPhhKSPtV+f~w
      z`x5?;`)jbsf2$q?dBOr-P&|oVi{OeHuj|2*d(Hf50^RiC<MjGQxKq}|d8^B$q@lVK
      z`^!wsWz5`hUnag{<Qy;1nXw<}4XjaVXm<UWdV743a|a1ML0$rrgnpt187%Bu7khAs
      z0!L5=>IrMr1hOIA4jhp_2}i|5T&_m}6U*CW-aBcOCwXBc@$Xe<xQsdREa{|l)Q^pf
      z%-9>6PY_Td&sWngHv8%nWHUgifzZ1QdyFPr_k0XdU2}Be?y7UY<@q)Z%R!^O8_BiJ
      z#B7Ln6X>$ISNNaP-=XBC!unrMHa@T8oA$w*s@OXseL>|DJA;7{_nZK(X7<fRv*@af
      zO(RAeYrO4r*G1Aop1$@P1fbt3qe9`}PUA%^cKqkz&p*N;|K_rPJQy9PNMT<R7B<K9
      zT5d@XhmUU9@zB{R->g!PfEJV-q06^7Uuqz~ufxl0GBD?eUUd{3?fkCM_4Xw7mx@KC
      z4~7m(*Z}z*r`WF{VJ0%|($O%lE1!{`<pd49o^zD<jrXxcxS;fR${@9j#q%RxFGDKo
      zMfy5EG`ir|x`q^IvB%5cHG1vv&F((-eWhACPSdS<pK`S}0`p>}c$_m5)?*h@rDe&`
      zZP`PPZU%>vd(3&lD_|MhGZUxVm2Pn^50K5oeMAnN$anH|;8cIYZl1i@9@g&9AGKsC
      zTQnysLmw>|<gz?9TDY%~LT0+FfcCm#E4-jZr+coU+G<)FGJBIxfkFaOCiv41ar*&%
      zrDt^5PgDIZ`kHXgyb?$$E*^R5=V$I=B?zNY7q?kYwJ8>Ke>P7|W3)g*sJ9i$pt6zP
      z)!IEUMeLd6nE3Z9IUKH~E1cEg+PzE>&wrlRrM~<By{Wfuce<<h!3?DA58Qux!ISZ+
      z&S?wvH~yl5@KMT~qM^?eBN~#@Icu9PFg&^I{T%*9Wv;_u4YL&DjV)~s@jlcnA%RXQ
      z>ByS+xV0YHSO>kd`99Zb#`(UjpsKoqxMu0d-g{bWba{A4ZOeRwDCB}x-rfs7Ze**d
      zNR=P4F;JDIxfw_kUcYq_N^Wm3VPLk<@(sbIJIl{p`s16F`@N{dJf&Hsty;)*%WG64
      zA^tPrX+P*$s-`ShjOGPNq7kLxulFvTAk??-dmA*Xex%+cEJ3BPlQlj=Gld<Q$O3E!
      z3tY56^$Sjd<azh3M!Z433^J~EVUO|0n?7oJ7d^|03un?1|9fh%JM5paqy|Ke7vS$=
      z0>6D0`Fix`6yf}-<*tTt223JmjI1C+g{VRgv&FGC*2qGqd9L$!@?=C#LE6a9{}aEg
      z&!Izfd@fVP`Ko}pS*@Bag`}D{i?NsZs)6%R5NYHc%xnj$K82X3GAWl2U(LAF-N0<z
      zp5`M1dRv|iiAbN8p7}64#@nb)5WcBY;<s!5`%gj<OXK_VU%H}2TiE$7mr^X5$`fFC
      z4)x|KQ^l)yjHEyNTML`g8=MjvuSGkFoa|FdODp+}DJh?MykZ)bU~2^G#&$W_YQ-AY
      z_@|dC{mEwBMqj+pyKCgdWI2s#((TR)$L;Rd51&tM>t}|!=^L^o4zMYHP|W%ZNm_hR
      ziyOdTGymh*pwL&qYT?fhZxj3v(x2qHWK`H<;opsd1m&7NA1(l?2*U0!&+Sv}XOe%h
      zF=>A`V@|x2%<StuCXAfQQT1Y4N`lSuqwPxUgivLuln&$fwY^R@i?8|Gc&<w<Vl0KB
      z!*WV~C%EmkuZs6`#A(`#2oEN8{v)aiszWl>?CI<-lCLp4v2qzCjm6E1O304-<?$C~
      z*&{2|nyo}E+Jxg^+xs4o4JWU)X#ESRW%$-#RIJc+)xWh*qs**Y3$l1LSJV(`?iz=G
      zc29QgVL>@%KTf#x4`DR+=^EI+(k5;b8#Y^@CYi-1`Gc{&hxPFvsD^Zk6YTjK0}L}j
      z^<&V}1iv9u(O~b?L+4!P7t7KaUxjs!;3Cbabf<?4QE}zcC)d&a%a=2hQUpn3P33Pk
      zQ!QXfTp))uv=T#}f$y2j@P11Me0#QUK6iCdDql((tp~+HqD4RyC1v$Wk8BL{(2rhC
      z|3OLGj%OaAGTY7Qt>3tyOR+T8bl`08A{CVpO$6Js>5ytRrXNp{tQ|Pr9HGgD`_wo;
      zU*C~v(>^a_`HNcKmzgFtxm%Tic)~1ChKFl#r0}s4Tu-D&(C2CLQKg$l$0Et(wUA7U
      z;kzgoQzf(pQNtx+Sl=uThv%O=ze8BlJSjEa->d|%1xse(?--Ncu3I2rMQzTweFTe;
      z(GIr|FOUmC7+!D-r5!5dBtsK*<@YWh)DSFq?#;XQZHnA<%b@Wx4LjwCq%)+_1$#{|
      z>Z(-V-+;_n_0Zlt&&Mv6o9-g3U+dmq1_S*#vE_KGTmT+I{XPe<t2i$jvCmq2P;$O8
      zN3hB6g+##L6Qe$}<Q1!xH}?JBV{fBg9&OT)yeE1?W)5y5VP-th*Z{At@lzjwo#<MV
      z8RON2Oh|x?E}|RCjN>wxY<u-1u(n|SCQjeEfovip)vz5NNp-@@MQ2zcqNFX)CVeI~
      zzUIMMQ9GaW*NE3ep+E{f<kX!l=&doFhg{$2&aca$643#f!?R47-8SgclLW3jKcXzM
      z)i367lO+=aWdTjE+&INP;x(2tbAd|QJFI<U8_Nk}cR$u{N<aj0nI|qez<q0PF<L6F
      z*PQ3|2O5zL8X{*vb?iiwkf&;7@eb;_auhPr!b-~z_YIe>^eA`gz-c0$_}aD2qawG*
      zUrhzW8S!z$*O)l`k+h2j4GV+%Tb<ji5ar`Dp+C?tUH|=+yvfUUB_JULp6Uf+q+0yX
      zWCZQ7^ebDo9iJ6sOiWn)$9)PhN+hfvf8nf^!P|=ACnw1LWZS+Jdiiy^5#fSuk?jVx
      zIF#gSSq6Q)J5Lkb_uMMx^Qy|V=vU>87jP}htkwaO724u1#GBqs{V%U_tx4R&d+QtX
      z%5cwo7nJJwBXcq1=gz6qyaa&@NhcGG+%2WDvhSC&_T!}SDFBVo#`}5gL7ki66|cDc
      z?V1g+N_|fI4hVA*!}OKtb&dwncNC>I2k$Y2WEG!OG`K)Bg`4!-#4^#Wm=R4m=jC0u
      z72&3MmC5pwJX%-lBsI0743~y4^8sVFe@}0g$%B3>OAm_mFOR;I42L`wtW3kXgEe~G
      zP90>#t^FmKHk0c`Sj>s)7uUgF5)Jk92d0(v*Q_azj+y6v&a+k$YZX3Q&n#apW^XOf
      zD1Y3PwqHGfujTQEiAS+dpi9hk87td|Biq#xkU)rK%s2>iDR$rsoaR#bT|y|)?or;z
      z(eRfeb;RT2xEJB-?{VtZCHFgvB*^1>5R%%77L-G6H@cpQd09TKA0_HMknOfa=5ve)
      z%H=<L65%m*_Z7X(H~xN-jKj)Hv70uxL;fa>k9r8XL>diE?qyC-H1om_zWAly<e`I(
      zhD+kVqbK?7-w1n3i#>R6`nF%Sww4LJM38)CnA9AY=V3vMvUO4ppSc9S3^l>Z-t-$u
      zbQnF)C{Q~dq^o40J6T#O@uxE&IbksGsKaWu^zYk{C~!~DDt_9})#C~l!cJZOU>?i?
      zDcM-Nh4ZJCp$=j1Vr72b4>v}HonA!T7r7zLoNac@su4W(pxBS;e{ACu2{T26r}c~B
      zsJS{`e<FmA(YzytYjOvZFxkGB!V35v)CIs2wN+C|4Pf4w7svOQu7qj`6w&V$DpF*%
      z3-<VWGBTsPu0wf?q(HMxCv~ckp+|gnK>J*76E2%hGwz!r#@OEwGM3h&fbdqqwTidW
      z%pzi~SAvrH$StBpE!l2GQxf{M-Pw*P+)Z){=^ulcT%Ej<F+KB`-eo8Yi&<lMmF?G-
      z=*HigA8zRDR)gkP|8S-#F$9bAwHLr#FNplV_ZwNXIJ;bTt3KSC>{8RLg_H>rzsEh1
      zTYq-=>gG>CZ0<wYj$J6m%GAjFKtFyHKS5|iJ|;@eS4lBdNx_ZeHuX3AUnPLbF_g3<
      z-e6zkgMQlIpeV0_XE_XwyGt(J6mXt$<W?oi*cHxi<v0Pe3U5=Vv4e>7tKe3pkXAdn
      zD2bo`2>!DJ1#UZiDUz<%0i1z2IWpn{HJB^L5GMNz#N9F#s671sqr)I`uM3NfHpwUH
      zC#Q509nzc#%GdYS3mvr|lg;qW4Dpwqv2$b=wo@L*s-<o8a87o3_&9ndJ?)<FzUmf^
      zsMJgtJYeWB-N0|@WE=Hb_WHT$j*^sq*Sya|^=qxcDD7{bD~nPhT~8mkX;9>wb*qA{
      zou>@aOoQZ1>!#+3<IQ(*IFN`6D{y8a)IIbAdY}fY&81h*b#2J69hh#hR)of0=IULG
      zx>_Y?e3raAx>^-IytIvW9Dfzr;AQY}i`sZ)DVr){wq2RBiO2WRiuO4!Ag8Le8iiB|
      zS=m{I<noz`oblQ|txEf#AFDbjmLxS`Z8W>8cHAq8rFIiqTMEW<19BK%f=yix{1Bhn
      z%cGjT=X?2`*=rI#H}nEse4RAUj45j-i5`)2``BjA1>$+Vv%4=<pQ<68#p2-t|9y!{
      z%?bVSLs!%`fjdsjYZ=9qo^~}_F*{f3cwGTM*2#9dA-4B?>;6{#&_Ww;a?r<1vY9uV
      z+pO?zM!^CJPH-{wFhjneJ(F$ZZw&O81N(xkFq$O9!d+~p{zF&(DE10$zBpUIH9lqD
      zwn}IX6%XSar8+Y98x!skU)dwEK}l3$4TvN<nAU^lx^N;(OQF;aozZs^gw^j!to$f8
      zqhE2O9Eg%;mcdy~>)<?h*tAFDkeXONvi+V#1RBlmB@BpH9-pe%uo70;cFfquR(~N?
      zSh7z4QX#-3Ztjz<GIBXA|CRSX2HCgh65;{IT+J-8_;fNgU@dbfq`}f!Cj~6l@q@?8
      z11qMVACH%Hv~}W|qOVNRl^r+zlO+-v(m19O7m?F#Q#)`xDI|_sbdwO*%6ZKxnfv4d
      zIA?uiQq1u4ejV)#hIP4+II2^TqzC2PFzVN#e4hO9`EO68Q3;9>q;bi9#wT6WJn5+m
      zl{=scR?lJfGvHlZu^O?v|GY+~)EzZI*w}0I?G2vuLx=vc!MUy3(qkqWizYNv74>~P
      z=Oz1y`qE3O!LMJ+KPNJq@w@9B!A|YgtWug@T$c=WJ>uE9rxZ)6*iC$udQI3QDUmRD
      zNp&E|sH>hKk?_~b_`5{UHd`#_Bdh%UqXDfhqLAA%eOTHI83kzn7vaD~4%gl0zcg=2
      z(i#a0^T+$(kuWbG0KF8i09ty}^y&xIk5_V6%EJblR03E1k*EeR@?kxSbZfo_TTR<o
      z$K@aLEWE1And+KzPhsbM=hCS16I%`0qAgBw`fiFm+&98+%Nzqf2vuzDjGt@AAFu3R
      zrJH(F-nsvk(&#!_EQdE-lhKn$bRse9oa+6GX1p`BK8qxgmk1S=6%jl9Gksvv9&B<r
      z{?(6d+omIChP_Rr&{1rG+A0QrZ%x5<(N2@Vm3YpDeOA94N*aH&qC{Bsa~-H!EOeCU
      zV~lqSh3X#X>ep-R{p>Gy4f0=6Vo66N-p`bu3-IkKH23wW7K<2tNiq%vvnk4RGTxx7
      z2DV~j^ABFx$Q~PPfaMI&2h}74&5lva3gfSbn5kNY>odRh0Y#7dUv7-n>f^|d;H-`@
      ze^dY2jQ5qrxZT8bHd7SUg2h|F$?lPv%Vta~LKfq7@0}X%fdr)f8rYhSO})j?%IP@Y
      zC3#jA_;z#8Vw^tCo^zwn{Iw0Xf3|~fZ`m%aa<^QIJg`_Z(q@z^UgWwZg@n5xm#a)+
      zP;cbyuAld}=Hoi47hfa3{!-L>Wl{E7>T^R^=^jL=AR6kf{%a#Zybgw9HnXi{)rz|6
      zJe;x7hQ~?K)2M;#;W-N$3zrE;>??0+^WSumqpjJNzW*BuLB^1;m1jLh<1BQWetdJ)
      z1^sc=h*ns7nIqOC^~5CN?O3wqsKO4Ywt7JwEGl$VQ^W1`JVBI*VVs>H=0vJ2k%?MQ
      zPgke4Mmok<)aZWC`uruIp=K6X*`ke1>)V&?<S~B=;)vHQ9gnYykHC3~S-ZpEiMZ+Q
      z64(-U?s^?|kZ<^I52-2J|MuC8?t^~82eueEogv7dlZyHTwyonUo$bk?Z-I+*E4pR}
      zt7Z}XM=i4jI&zR4n>P4ZewP~c$eKmBfesoL;Dbk)?WL-KXL1?erYaH$c?alHq)z-|
      zKQu0@X5MWOR7QihYcfZ~KFy>R@uZ+v{h5>bXjaxfe`MJy43&UvbY4FS4^jzPifTwn
      zNR%l}&2Uv;4TMY)QcFb9KdE2!BS;x;e9_3gG}iX7EM6=`puG7Hje-rt;qWoQw>n2>
      z@i!@FmyoWct56Asq@MeIwL#^T7BAfoRzXmhMa3+Cf}OgzQJgOkrTaT1K7}yYb6PBY
      z4-W|0hNkT$KB$rS=@TYA1^t#kvg|gjYt@Qjq*H=83}d=XA-6SG;W^nop7Dc7H2&TS
      z=r$@&p+yLaj`XFdQO_2B(AKJ6*C<wC)GGQPn;P}zJ`Fr9UA3l<yU{t{KGk6!!8OGR
      zAVh8h=hSY?bR{804YBxpc&EddKx1&R2fMo<VDea_idxW<uR5(7d5_AC^Ili55tyH6
      zWPzYbD7|&0b*`S36+Mb}^0c?0$fXztF&6al?kqx3X`7q<Y<!eKfvl&_xt0%^dWK=?
      z7Tr<Ha?dWg`V1px6=POu;U9K4KW(yeq-vS6vLCRf%yx@Db-c1HjYPKZkOke_jlbYM
      z8)9aWuQ5U=V5uvYV85mA*o*^&=pc-&(UJr0(|FmVna-=1JDeM+%emsoCcnwW-CHvG
      zre^j(*~la^bS;y-8CKdt3u9rp^LN4x(b_BSfKX<01JzyuTRkqWYZtuxzSujwm2axg
      zK(oC>$*bz-1Nny@X4nsx@7RJx*NdjZgL?m(wJ7vDG1GyC25+#o&nlnMV{}t13r%_}
      z99Qrn&udTOxKAFmlwa0fX07B>Qx|S7XRTsQi#5#1m5r(#?T5sSzD;c{P{H}P#@f6`
      zePi6TEilA0qCrT%kQdLFeKR$b)0sf<gxc%mY9@@2-#6GpZ2(a@Cy&+O)b5;fmNqo{
      zS`oUliP!Vn^gcSL<sI;6n^SerD1}q%`bqx+1vvYeTnxQ=-xYtt(DZ}MB#XD^>=Bne
      zT|9@1QT1Y?Q;K({KzobC-`4i={bV4IK>K+Yq&lr}6YJVqAC2$1sxOq|RsGRv+-6!N
      z{)qJ-!cig#xpmL%>O(Yy;!xK-X8~VIKU*dzWqOqc!-cWBR@~e%!i~{1{~nZl6p@Ch
      zBkZqiaa2=+NbuM&x9N81GAbja%F(rAK@QPw8m*Zyx#gK2x87Fnpkai;i^t4f*IRlS
      zN<w5JTNHv}Ini5nO+o{2&)hEX%zwNvrOTD+5enuDFMW99Z$8ja(!U^%i1u|YZd$<H
      zuW1r$Qc!LG_ZZfmWOS#&Ek`!nGl78gdx-Vsu%PWmqi4d$Floqdr$*~>%B{Hug<VQ%
      z2qiw;32jX;+(U78S8|e0XT4WS;rT5i{ZSzau!cLM1v}pybt^_Ove<>;k4Eyt#fuNP
      z@DWg&(!^MrnQU0|--##83CTllw88<}*lXTA60T|s^w(Y)9`wHx<6Ud)@-y1dKVVkS
      z)?jr+AF0sjSwP*3&3LnbQ5JHz+oia}<lbH})(G!Izb;Z0NtNs!7#6;}ciO+8Sbqwz
      zxNKI^!#4Au{BH82<LKYd1^I!8Ssfw_3{%exfimjrp0@r#|B*}o_#=axyF(A7Ap(B@
      z|ItFV>z*XImgEDs&5?o6mFi~BL2}R&V0jvS@pfL(?%lJ!i3hE;l<lio7HN13mw`wp
      z5*?;f-s~RHU=xage9Fj8US_!Hb;?J_pxae(q7~({45k&Q8X`T4EG|!r@%NeXmL{7T
      zfrOmJ8&F-!#-lI0u3NW%PwZaG&%JCcy=*0|J#B9VAS56t#w+lcS5QP>P*_q}NK*JQ
      zuYic8fPmj8^5XvmaB;JFX@~d+Aj&InixJcp6p$1amlP8GF94T<Ytt=&_MaV|x!HO7
      oT6)?73N~(5w#;fSmiD%Kww5*sk6*U`e24*R%34YlFnH+y1Lu}Yy8r+H
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/ui-darkness/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/jquery-ui.css b/bower_components/jquery-ui/themes/ui-darkness/jquery-ui.css
      deleted file mode 100644
      index 96c0489c7e..0000000000
      --- a/bower_components/jquery-ui/themes/ui-darkness/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=gloss_wave&bgImgOpacityHeader=25&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=inset_soft&bgImgOpacityContent=25&borderColorContent=666666&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=555555&bgTextureDefault=glass&bgImgOpacityDefault=20&borderColorDefault=666666&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=0078a3&bgTextureHover=glass&bgImgOpacityHover=40&borderColorHover=59b4d4&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=f58400&bgTextureActive=inset_soft&bgImgOpacityActive=30&borderColorActive=ffaf0f&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=glass&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #666666;
      -}
      -.ui-widget-content {
      -	border: 1px solid #666666;
      -	background: #000000 url("images/ui-bg_inset-soft_25_000000_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #333333;
      -	background: #333333 url("images/ui-bg_gloss-wave_25_333333_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #666666;
      -	background: #555555 url("images/ui-bg_glass_20_555555_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #eeeeee;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #eeeeee;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #59b4d4;
      -	background: #0078a3 url("images/ui-bg_glass_40_0078a3_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #ffaf0f;
      -	background: #f58400 url("images/ui-bg_inset-soft_30_f58400_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #ffaf0f;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee url("images/ui-bg_highlight-soft_80_eeeeee_1x100.png") 50% top repeat-x;
      -	color: #2e7db2;
      -}
      -.ui-state-checked {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #2e7db2;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ffb73d;
      -	background: #ffc73d url("images/ui-bg_glass_40_ffc73d_1x400.png") 50% 50% repeat-x;
      -	color: #111111;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #111111;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #111111;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4b8e0b_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_a83300_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #5c5c5c;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #cccccc;
      -	box-shadow: -7px -7px 7px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/jquery-ui.min.css b/bower_components/jquery-ui/themes/ui-darkness/jquery-ui.min.css
      deleted file mode 100644
      index 5766f7eb20..0000000000
      --- a/bower_components/jquery-ui/themes/ui-darkness/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=gloss_wave&bgImgOpacityHeader=25&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=inset_soft&bgImgOpacityContent=25&borderColorContent=666666&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=555555&bgTextureDefault=glass&bgImgOpacityDefault=20&borderColorDefault=666666&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=0078a3&bgTextureHover=glass&bgImgOpacityHover=40&borderColorHover=59b4d4&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=f58400&bgTextureActive=inset_soft&bgImgOpacityActive=30&borderColorActive=ffaf0f&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=glass&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Segoe UI,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Segoe UI,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #666}.ui-widget-content{border:1px solid #666;background:#000 url("images/ui-bg_inset-soft_25_000000_1x100.png") 50% bottom repeat-x;color:#fff}.ui-widget-content a{color:#fff}.ui-widget-header{border:1px solid #333;background:#333 url("images/ui-bg_gloss-wave_25_333333_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #666;background:#555 url("images/ui-bg_glass_20_555555_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eee}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#eee;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #59b4d4;background:#0078a3 url("images/ui-bg_glass_40_0078a3_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#fff;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #ffaf0f;background:#f58400 url("images/ui-bg_inset-soft_30_f58400_1x100.png") 50% 50% repeat-x;font-weight:bold;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#ffaf0f;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #ccc;background:#eee url("images/ui-bg_highlight-soft_80_eeeeee_1x100.png") 50% top repeat-x;color:#2e7db2}.ui-state-checked{border:1px solid #ccc;background:#eee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#2e7db2}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #ffb73d;background:#ffc73d url("images/ui-bg_glass_40_ffc73d_1x400.png") 50% 50% repeat-x;color:#111}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#111}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#111}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_cccccc_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_4b8e0b_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_a83300_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_cccccc_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:6px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:6px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:6px}.ui-widget-overlay{background:#5c5c5c;opacity:.8;filter:Alpha(Opacity=80)}.ui-widget-shadow{-webkit-box-shadow:-7px -7px 7px #ccc;box-shadow:-7px -7px 7px #ccc}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/ui-darkness/theme.css b/bower_components/jquery-ui/themes/ui-darkness/theme.css
      deleted file mode 100644
      index 214df591c8..0000000000
      --- a/bower_components/jquery-ui/themes/ui-darkness/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Segoe%20UI%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=6px&bgColorHeader=333333&bgTextureHeader=gloss_wave&bgImgOpacityHeader=25&borderColorHeader=333333&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=000000&bgTextureContent=inset_soft&bgImgOpacityContent=25&borderColorContent=666666&fcContent=ffffff&iconColorContent=cccccc&bgColorDefault=555555&bgTextureDefault=glass&bgImgOpacityDefault=20&borderColorDefault=666666&fcDefault=eeeeee&iconColorDefault=cccccc&bgColorHover=0078a3&bgTextureHover=glass&bgImgOpacityHover=40&borderColorHover=59b4d4&fcHover=ffffff&iconColorHover=ffffff&bgColorActive=f58400&bgTextureActive=inset_soft&bgImgOpacityActive=30&borderColorActive=ffaf0f&fcActive=ffffff&iconColorActive=222222&bgColorHighlight=eeeeee&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=80&borderColorHighlight=cccccc&fcHighlight=2e7db2&iconColorHighlight=4b8e0b&bgColorError=ffc73d&bgTextureError=glass&bgImgOpacityError=40&borderColorError=ffb73d&fcError=111111&iconColorError=a83300&bgColorOverlay=5c5c5c&bgTextureOverlay=flat&bgImgOpacityOverlay=50&opacityOverlay=80&bgColorShadow=cccccc&bgTextureShadow=flat&bgImgOpacityShadow=30&opacityShadow=60&thicknessShadow=7px&offsetTopShadow=-7px&offsetLeftShadow=-7px&cornerRadiusShadow=8px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Segoe UI,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #666666;
      -}
      -.ui-widget-content {
      -	border: 1px solid #666666;
      -	background: #000000 url("images/ui-bg_inset-soft_25_000000_1x100.png") 50% bottom repeat-x;
      -	color: #ffffff;
      -}
      -.ui-widget-content a {
      -	color: #ffffff;
      -}
      -.ui-widget-header {
      -	border: 1px solid #333333;
      -	background: #333333 url("images/ui-bg_gloss-wave_25_333333_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #666666;
      -	background: #555555 url("images/ui-bg_glass_20_555555_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #eeeeee;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #eeeeee;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #59b4d4;
      -	background: #0078a3 url("images/ui-bg_glass_40_0078a3_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #ffaf0f;
      -	background: #f58400 url("images/ui-bg_inset-soft_30_f58400_1x100.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #ffaf0f;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee url("images/ui-bg_highlight-soft_80_eeeeee_1x100.png") 50% top repeat-x;
      -	color: #2e7db2;
      -}
      -.ui-state-checked {
      -	border: 1px solid #cccccc;
      -	background: #eeeeee;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #2e7db2;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #ffb73d;
      -	background: #ffc73d url("images/ui-bg_glass_40_ffc73d_1x400.png") 50% 50% repeat-x;
      -	color: #111111;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #111111;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #111111;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_4b8e0b_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_a83300_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 6px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 6px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #5c5c5c;
      -	opacity: .8;
      -	filter: Alpha(Opacity=80); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -7px -7px 7px #cccccc;
      -	box-shadow: -7px -7px 7px #cccccc;
      -}
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png
      deleted file mode 100644
      index 41801c369db6e037595b53319cd79121f3a09333..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 476
      zcmeAS@N?(olHy`uVBq!ia0vp^8Xzpd1SErbK34)MmUKs7M+SzC{oH>NS%G|oWRD<U
      z28Jp%28M<f28Lfip@tU>45bDP46hOx7_4S6Fo+k-*%fF5lweEpc6a#?2AmP!?*K*E
      zOFVsD*&lH7@hWjld-qcjDD=S7#W5t~-rF07Tug=nZV%6z#W_sSJ$mZU;Yy+Po9C(v
      zW*>~&u=&Sohhr%$-IXU-UrK3Tf7@r5od5c}bw*Y3^V*Ns7HzZ4&;Mo~{p<dno${+V
      zmj!Vrn3*zvcL>dloqn`lS1I)DJ?_GlvtBc}FMoB1B`sj~0hKJ)GmB>>Xl-Rk3pOs`
      z51G1e|1^(~r~f{7cwfCEe^79x)$W6ZEAt9URxzJhVAkk)g=>bp>A{dJ#xu*(9>}f8
      zdb4H6m5rAd1!J0IS{4=a>PF^8nC4ado9gdnY$@oU2lT6IiEBhjN@7W>RdP`(kYX@0
      zFf`LOu+%j)2{AObGB&X?u+TLCk_PcEc{@-v<mRVjrd8tBpeK2a1*n0+)78&qol`;+
      E09yvIbN~PV
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png
      deleted file mode 100644
      index c12b63e12a168414b414d1513b617a81aac21d17..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 384
      zcmeAS@N?(olHy`uVBq!ia0vp^8XznHBp80OT7LpkEa{HEjtmSN`?>!lvI6-E$sR$z
      z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBD8ZEE?e6mbzsPFCvp^nu
      ziKnkC`vXosUL}rc?|v!*g*rT4978;gzrA{pv%!F;^<lcqf^Lgh;pQ(>@-8v5=r6qz
      z<Z`0^!-R4^`NnB`o?3(kZ)#f-J9*D}$<wA29%-E@oV0PymOSy3rTvErRHaYzO8?r)
      z?ol9nqJVeF4z8j(DLU$sr+w|V^?UE$cqhgA{Yryr(hiR%NS=0G{$uBhDIl0%d{NW>
      z%@k?xZ3`aqwezh9x=FRfHKHUXu_V<hxhNG#F&G&bn&}!?>KdAa7#dp{n^+lG=o$b?
      jgLs#`9Vi-d^HVa@DsgMjlf1?P)WG2B>gTe~DWM4foYH`S
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png
      deleted file mode 100644
      index e1a2a33249a52346b5dd523281bd3f62b90e1877..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 324
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&0LWmFTHNUZq*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451Pb|hx;TbdoKF5>I<vDeQKVPtl~P;&eTjYEhK4MLHTLH|
      zICnoh&eS$PiN}7q(I272B#q=BXAc~iaQee<rNi>7YHY=7Z08uuKWIn^aWL#C5*4`Q
      z^)wu4u4;*EL`h0wNvc(HQ7VvPFfuSS(>1WvH8cq^G`2D}u`;mGH2{(Z@h*8gP&DM`
      ar(~v8;?|%id5s0Afx*+&&t;ucLK6T1hF!=2
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png
      deleted file mode 100644
      index 738ba3f632284dc256bb14cebe4f0d802cfdbd79..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 406
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8$Fz4p6@fytJY5_^JdVFTZ_mxhD8c^V{_o8mYOzz+X`DV=7Jnc-
      z!8ATH_l(&5r*4~t=3ZQ~da=mSlAZQ<PcIiZY;F6Q`EF{YjWPp6TcX6V?T(RZo)ST;
      z9-VB<NH}8pFyRpUMWOk!FMgC-xVc1&O|>kU>Zaaakb06~*V%a=1**<1pKiP5#QX5+
      zmqg~r?x}Vy@b0u?`@*rP?O*&7-oplUC)lO_8HKvW>}UkKQnkc2q9i4;B-JXpC>2OC
      z7#SFv=^9w-8k&R{8e18gSQ%L88URUyc$d5#C>nC}Q!>*kacj_%yv735z~JfX=d#Wz
      Gp$P!f5sI?_
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png
      deleted file mode 100644
      index 3d53f770291589ff8937caf932f10777f9943adc..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 265
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI2NH8$CE1Q=ADVB6cUq=Rpjs4tz5?O(Kg=CK)
      zUj~LMH3o);76yi2K%s^g3=E|P3=FRl7#OT(FffQ0%-I!a1C(G&@^*J&V7%KUyadQ&
      zFY)wsWq-iQ$E(CK?cGmBppc-ai(`n!`Q(fQiPpshB99svre>UAylk>D6DX-#;u=ws
      zl30>zm0Xkxq!^4049#>6EOiY{LJW<qj7_WzEOZTkq(Qt(-VPKEx%nxXX_dG&=t*8<
      Q0cv3IboFyt=akR{0Q1;E_y7O^
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png
      deleted file mode 100644
      index 7af281173b912b160a9463df3e9d5f3d517ca0b6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5873
      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
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png
      deleted file mode 100644
      index 47862fe95ad02446b010b14be68ea1d73766aae4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 342
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s5=)87451PaA@x;TbNTu%P6^6ZfV4&q<tJv<($))vZRuOhiGKj}x_
      z*$;0G4x8t<t#6mu7iClvdH#cI@59eAZReGI{$G}`Gc^3GpZ?>-i7)kPhuKxzzNgQW
      zNHf|Ko>K9>FK*q@CI+4t3NO}mE&w`@LAAs+q9i4;B-JXpC>2OC7#SFv=^9w-8k&R{
      u8e18gSQ%L88URUyc$d5#C>nC}Q!>*kacj_%yv735z~JfX=d#Wzp$Py07;lsS
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png
      deleted file mode 100644
      index 9dd4d016942c7e6813a7409267ce8f633f917b88..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 386
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(ehe3dtTp
      zz6=aiY77hwEes65fI<x~7#K<o7#Ln9FfdrnU|<k0n6oR;1}MRn<n8YA9}GAnzTW|g
      zu$OrHy0Smu<l|N1nD*|cB2cK!)5S4F<NVVJhFpgN1YG2UqqxmB`ks3vdq%OSW673(
      zOS}(weGn3pa}!u|HciLQF@HhA*9z;+Iy&Eyi?=X5=r33-x?}$22D?k`rGW|e*Jr9O
      zn90^STY~jUu;z!lRV?SW@w{G96vlPK*8lz9r8kc#6iDCBS$yE9RjdfpxzAA#y7}+_
      zzvTaz_1RPV&caPKQa~4}mbgZgq$HN4S|t~y0x1R~14A=i14~^)lMq8=D`OKY0}EXP
      lAZZZqlD7jzLvDUbW?Cg~4SJH-Sb!QBJYD@<);T3K0RSdig0uht
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_222222_256x240.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_222222_256x240.png
      deleted file mode 100644
      index f184400db5da441a76667625c74567d220208e3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7025
      zcmZ{JbzD^6xAvK#yGFWG5Qd?VZlp^>0cq(*X&3|q1f*dQ1O#cMq;mx6l#q~4>Fxn8
      z-}}4oeeds$f6hMZ?9cPrd#%0p+Ru4*l(wca0WLKz000Ck&lGe40QB$*9AcwCJQcG%
      zWF8uHTUiZR0H}(?Ls?)v*o;=sbTt6Lj~xKuVE}Ob@Cp7G0N%g=VA~u3#1H^L;g;E?
      zBk|Aywp3GA0GNaKEPp>(SY9d`idc)7AY8Ub@mCy*06_g*MM3tt&+Oi3=Xf@K-=1Is
      zRtOWf9X2C(Gg}Ha`}_WVnfw5ilw`$yM2W_PN8fzaJB2>NU)bIJ;;XOU6XAEvMajNm
      z6>7%l&UJWIt(GjK-;f6;@8%))Hp~k{D43J4lm|q*-^MeidP$w`Y@N)`UktYj1m5X2
      zUn~R-KMlN=xR)xtkr?sSbi<+7=;jP9hxeE-<BYobfFte5#^}A+ev@VazBMnvsh<==
      zUXhs}UT9@hdJMCfQ;6ZRvJu@;`(q~n8-y_Rd-ckB>1&ilz<Hf;?A}}yX{o8~*SmED
      zxFAtPn<0TihF1(}Dx~`CnEk@SccKpu1R6l{gF?QniA{-mVUPL3*GQ9YWFm;aZuGHm
      zaTFy>Hx77h)_)c+d*MBm=seZ%G5+jfoY6-G{-aU>3brD}qb91Y{^Nq^>uTjwBluMB
      z#soq(ntQ#7UdO&XTc}DiZxb1MBXSY)qOUIKwdofL&>%L}f}nFM7ulc$I@^EFJo3Sx
      z*1VxHCEW_TEPx;)8^=jh0z^%y1%Ka3ma}|_Zuj5j4I1Qxu<6b*hW`$5p$7?DssH&)
      zWG)qID)|Nl+TA!T+Nb%zx{d<Pahq?jPdu?p+h}&25kC8)YQ`0?t+ohT0IH>B&~Kf5
      z68o)P#|NAnO;I5AT7m5Oti>1@RQzg=nD`d-d{L2G{0zJ;cz!e9#enp>Z=BT7${yWz
      z*4|Lx0qe)evWM<e-k>3RZFYhapImI1qhT(JzPSZqn%)b&7r_#t4Pq|(w^{#hCq9m2
      znudIl7e&6fyY|e_-wA%%x*KR8Ci|PQ=66mLXK$7#U<f4yF;P0-LXSWlxQW$8euT!i
      zER$H>y1Q#dpZ@IOn&_tV`hSQ=zP$?R#Q1xHMM$vbf%E0Z^r~(<l95b$;4@3Yv@tRu
      z{53c{b<VswD*Spg0+<?@^4*!H;ruI$#X!xIP^VL)Nzftaos+yVQZA<E;lH&*Oue>I
      z{k>FR5%cOLruI1#%&WoQsn}%t#U8!4p39PUlZq^K-M|?%&huBdu9bk*H+>3O7VW8$
      zpPJq*BOW?rGu>oV51oCBH8Z?_O#I@}+Yf)%<p}yu0T)x-*1|btRoa#z9hw!^j)BWk
      zd;!;BXN@oLd_z(r$<B?^i{SUk)swX|fe?ZS4w=q><-H*7Ke_N<W@NN{l6i4xs3g6Q
      z^zs-OO8(2?%E>X$bVL`I3X~YG16^Jy6_Pp7{>E)QH2)F_aS;CAU8}bFaW}ay`;K}x
      z#h8(Mf>fKAP>6TgtIDqaQIDT8$n=HF7pBuQZ%5Gl)7kL#+CAOI?@ubvWX@6x)bPBz
      z@-3jt6V7UtZ}1f6CG2;FMpLYamR%|ujb;35yJQTUwd4Pgr`q=GeAB`YPaMLu`usyI
      zemt2C?vIAfcHA_HoC||))>rIJWiO`wQ3CvF5RdFQ;OR2d;ADTiUh13=eayWnU!al@
      zDUHpFcV!Fu*-YxTi;vWjNKEKtkzRMKh1XO_0}t}%A2n@_Mgxg=KmjH(gSmQ|YkB4t
      zsfNuO@6i5vzHZ28c)=4RD0;jR)bt&V`nIWNeXDyZn@t2D;$1RI&D<e@`@3)NcgyyU
      z8%^j=b4_}Gaa(chEtL!o0|R4R-J71T1X%y<Gc62}{~2!|@IT>i?PeUBd8B=cRr$lZ
      z!lUu@t%kpMyH5Mt5SwcM-g47(EZ7fgKJRokb?&##wB(3w9dGv(Utb?{(>n*lN@#oW
      zDTpZpyWente$Oz=X^=OztnQ|MM?nC={kCo{MA-DMXn5BCr3AH@%6x^FMotjs=u<kx
      zp8m|Jc9%U<ljp9B-ZdpAQ+Zum&QG05U;T$@I?<~_F7SFkRqhhbbuqC%P7q0G;t8qa
      zT_~rQ>-ef<Otk!}no|i$&9VbJe&4~R|9y|uT%_(d9bKpiQSLs|Pc8iq3v*p10+Fpf
      z@kM5|;M8%|VzI-b(73tQ2_xZav<9P_y=A7s-T=@9^wCDa2qsgYR|2bzw(ch_oyji+
      zyxPWS^3GWMmfVw)=;s~N+Z(k;XR_n#Or({>UUtblU{^wNK0(uymp?|(KiDCzB|+3g
      z|6asCF0;ruHk8@W&?$l&W~w#VGe%WP)PChQvsYM#ehh^PKBj;!uw{B7?P9OJRGy9T
      z7nD+0OLbz-f?5a_zzEyoq3`p3rt`U_Uu6)Q$t6?!il+B=pK?q4vI9!VpGz*@G&l>j
      z|41N_!M}jAe2>_XE5Jgpx;9MS<oDjwnQHGSve<L-czbrG828SS(`A{3I^rk!QeD%0
      z*v~1Y!n<5v%_@qjTVc8swl1%(Ly`j1VVdw3H6wUg0rP1&z6&9VUtu+Kh!>P<n|ii`
      zBNBbl+!#3}OU@&)XnhT^oSX8R)TfO0vEYV{c`8_98z`?+?2MOI9uvr<*Tc)A-bne@
      z@uaIC|9U=)0k&tv@vt?NL_^$0{X8V0=lppKcFJ;KuODa<e^K_;rnyB4^J5Pw_iFZa
      z3Z-xa@vZz<WiyzQc*OO-Z!BLx9S|oJ{y$0uO%$NFrQZ46tiL^M?`Sc;RcumL0e;o6
      zY>-}IGG;}t)=t1Qg1rE?NfGT*zYbJN_b(xrgf9D*Z@?lNKW(N!5Y@kfyt(JUJ&kzf
      zGJtdO=x)&VSuJD;Eli@r6FC#JNoreReX?~FIG4jImcc64tJ&Gl+<1zOCy}Pd#C;6<
      z;%<w(RoGY?W>WU0<Zbf|2a4Xd{m@_BP+$Pt4WZK3LE?;8G_q{zGJb%v{{s<MO{i_z
      zqaNpM4+A^_2`H;s-y<m58l|z&kUw!U1e;2wox#9lrM`jr!kAUY8i!KNri;yzX&j7E
      zkp8QDagyr0QrKb_waX@q#R+qvqmb$s@scRuTGY_-m^FQjFq7>H@)```q?ZvUNiJ$L
      zRwrJ4y7X9jL+$;xYn-&VgPs%r+N-svA%Nm8nR?$%SR3w=!81<S(6?}UCP$e-d6$)_
      z(;NMMF{h0H@UY;-@dyFGClR7|l13ZrgKobLx6ZxorS+YgFxhl1#4VXY&Hg7>Ce5E?
      zxo~N%Ff+bn>F)ZN&EUjA>y|hUHn24$Ui=>WTSuWu^97BgSf8|qh#N~%KZ*lR;jw6=
      zE|7F*Y|Ogdo-Lq&+n|Y2I$`#62P7IkRl_+98kNYI_JfCkE8{q7?ZKl`Yo;$Qxh=`E
      z<JtqCF||e#!tm6`EFuKaAw0$UY3Z|htkb#yAv<5K60V6nFb{R$KBK%Ac=3~FElAHY
      z8<g&~vqIvGAJD*RfJ!pyIKjPwj0g}(^d%P%!B*26`ECsqGQLR+y0C}n;iRvrhsyT}
      z)^nxQ2wiAJ>`j}i9m!&Vx@WL<*UVA0LOlwsMK1V>SAhjWBlAa_k#ethK+O5d5bf6Y
      z8aN*Myp@fI#SY8})~1mzrq@rt$NTdlCh^foUORXlMK~5{-+1jtAi(i@?NPvZ<AFyZ
      zOX<D46bmZRVxM$K5?Qk%R1rg)$i#KSE&MBpag73z@CwAD3W@W=HMI5b4c+m)x8^Qz
      zeOhV67fz3Zfqq7mB#nd|Zp<BQa=lr7L-J1Uwv}75!+dbzArVW05!g$7#7?ZnaAk~t
      zmG%ERRV%9w6^65x(Gviki0~P|hTWE}_ni5Pfnv4;sf)*(IN|NNww)pGQ1F!&U&pI`
      zsa{aqYx`_Xi=Z#~3sm>%RY)*iUmVKOJQ_NVjOh>wPPyn7(2hHLw9wlymU#mf4+(8a
      zc!Jyg(k=Kx!|BHI+TJB9PAPxBtnz|RJ$NtqxOsLpkE(5^tv5*!RLO{F28r!jBtv1U
      z^_Oj$(NMQ|M^U7vc6qi>)DUvO#K~?x+=t&jp{G$=3;ygjK}e%OrWdLv==R6Nq9*Gw
      zx+RYHSc={vq9CN8A;q_wE#p<)dWqkOe%juj`{?LPlFbwT454T(jxAzR*pD&;LdrEQ
      z&qNK>N8K#JduEtHH3r$%kBPagG=}(?L##$6_dDP27i*xVsCLB#+D!GrVVEhWwpx%%
      z+N_5U9&dHO&PPuK1DBpUU*~I=rFE%6v^Hco3Vw14qBzPG))!2ZvQK82oxsRki~Mbp
      zG#6;4x>Ypl(1hXP;2LfAMihMLvcz4Ek<+EB1h);FIi)J_RdN)bw7@WiZD#m}(FLS0
      zt~$2pEt?2;;ondmL|-q*qMo$>2tM3F;Z1R>b1|Ti+7{y|-YGn|kuhEF9`J$~VwO2@
      zP|3j~{gPR{P$HVz@Mxq(^5TXDH!YP2%@|I%hWbVdHc?qoCkb4brFb;g5sebja?dO@
      zO8FXfT^PGbNN|4mOHd-V1j{c~<U}$k_TVUEMqc}auy@k*4F{w<TRn(NTBP^8EkH6e
      zO|!hi_Q$2hO{0r`g-))tMc)6egWyvzw)+07TCG{^=Ee}Bo_$(=ae1Z+iH?4kj1X3l
      z;&w`~oRAVbx{*%5^k5-kjZo^x9*QUX(V7)0n?jPdsc*sEN}kz!0}E^;zTP)uX;Fjo
      zidSH(qiM6lbuSLMaq=B`pSHHtPki%+o1}U;dPzO}m!Mq2Cr0MAi)5{1k?z^a1gtQn
      zvp)=Z0=PvB!2Z&zM6VDMv@r5HKrS8%>t;bES6MDt#ux3Hws8}Zl8)u8QTk)<@ah;g
      z6`y1;Z_HI><lk9m7Oft1Pr=ILGlDvy->$a@D86mSW!B_=3{0M|QA6V9<-Cx&7m#9*
      zzA)?Dyh>;8BJ4Ke-gqN~r8R-bI(!^TnCx@usVu0V0y({Vps)29|3+g4<A8)2qchEM
      z6^%v)&&QkG>%YGIp<j3}0b(D+EV`rCm6Vb(t-&5&f2myaioh&(@&4i&<kIoHGW#|l
      zEY3}YA<aYS+ld=$hkL2)lDFfPlyWc6oLukb^pkawh>FL40+3rO>qee%+AZ1Sp59kz
      z9Ef$wIPjFapTl`FUe#VT!R@i1nR$$gm^!Q!@jPlcAbF40BBOx3FKqX0E<!@@^7rYD
      zN|yd$IQ@D?jDQLUR5_EdKBF^f=B9is-YLspKYV1DTo=7KZ!m^=&9>JLs_Za4Jow}L
      z5%&>^=BB>=`~b`xAF=My4d;sjlxHxV)Fy+U>vUWl75e#ZpP-nfLBkvO$;Yl9Xsaz!
      zwOeTi92GH}yz<Y#XXy=oEydNZAH^lwY<av!56xX#Z#>|?Lu8{J>UuCrqf6k@TF@w8
      z$!)25F6wqC8_%fZNA5aVH6Hjn#p!1inbq~x`=nJ7-VbO2mpBJH&xrUmv1_c(2F9CM
      z8l{C^3ohnej{pKrwqYds%CgaPNQnds!}m|;yk*i<gukamH;SH6kxpSMZ7-I`Kp^C8
      z`U2;O5<7X0wi^qb8ENN{`CG0tZ;b4S6_cCqnS&S|Pg&Q4#p%q6j7Miqh25)9g=`ug
      z-v&@#qA7l8M`xz#7EPGfQh28H<mx;f9E6R^)SDS}mLR7aKA<?{D(umy?@z^rno;UC
      zJe5cvj;|jp&C+Qj^A2Xb>5AGm<aB!{-GAGZc0*umNWzU9OF}@;k;3Gr6t2@O+HJ;5
      zOVnuQhuKRL9d}$jHUjuFop%`Zz7(MWvp@Z8c*TBFR;~D}>vhQQNv5e2Wqr<f9oa8R
      z#5$eIT6X>EqptHp%sqwsLFt`;X!FqfZ|XZkoucop&pNr4ebIel{;J4#<C<+aW_E3<
      zdY9R&!DBr|BW^?^rn>Gksx;iWeK8wo&j@N$^k(`E>cIX<5ML|p?jw~wmZi#ejF!Q!
      zD%Z091y|2%v5sIc1sBRbSLP*I*x-?<>Dnt~i%qPLm&gqs=LXwJ4P_k9b8gOdtr;{E
      zO-QcVKB$^lXLWbIE+84^jh_g-uK8O)cdzCIH5!^6ncto*-C>Y4Yw2gGCKZ3}v{D$}
      zGJp~vsVZ~Mk7qRHt<?G;cYZVY6Y4vT()$vZZg|NX3E?b=N4w@+rSS1|qZhw?vNSG{
      zn+$a$zv!-UaF484fegqi!dr|pKYw%tKQQz>-#UN@^k4s*I;_YR;a8WE0pg#(-U?sf
      zH?7dOhFlU~x|-kyWDk7xGE3a(VOVJmEpJf{T=R!FH$dQOjivG1S<i20@aO%LTaoS^
      zqLy{I_hc80Z`D>0XPEOG)$Tq{@w$k{bI9OP+CXL|E`@DgP5#1L33kY&3*N7qD9Ll1
      zhKDyCQPf;HaXKBxuNF7IFIy3@YpZaymPeY-J*yMkb#Wo3R!TA!vwYA;x{N!w6Uvev
      zakx-~Jx(u~2{8VE(cKV@)sUJY$ku@2Rd2f7B&P(oLou+uG-s2-illIHc#pO_5yl=#
      zTzrpUHu2yvsDF9;c3pv!+!yXhCI79h+0w8=yivutBdP|=5gnAsltUJGKR^BYjeVES
      zB}O&kipwj+5OU<1sA*OhWGI2eC8GSgVv9*Zk;=J*&LIj4oK1BAp83IBs1$^w8ZH1~
      z1xKIgXc~dqok{6S`X!(Jt&N{bzPOQo@Ld<zb$Z}?p4O9-l8<k>M=nDwt$YxXx1Q?W
      z_qiL*K3*{{)Zxmhi$6a*ZECvk|D0_@s^n_b4#zuD=O=V$dmmEZZrS2Fj($%(l?+|T
      zbUHxo$&&wP*vRH+jJG~I?jMzihv0KEgJ})<#TJKnenFq5&E)rvTg17egs;e^j|s7a
      zSwSYSfrA3qyNJss_nw&8m~K*}m3)UW8qNQ$J28tXWyth6@EO_mk}+COT7tLdQ;9=6
      z1SG7Iy<^&N=}I{|n?k42oGju}&>gJT?CsV5R#F>Ni<PNDNVmLYn4}q#zvkuy+509Q
      z;FiNovYW3>TR#29_)ztZh1TlDQ?}ALc3RvkxeuP#I;$8m5yHl~o;0ct>_>(Eit6ui
      zv|-NTH+hanp*nx^X{?pBH301cQ41D;b(lU^=kZM~^%EjB95L|UlW3b$xh_BZBBOvt
      z%`ZXN65W|UN|ocR2J^SG2ZXedCIMbgJZU{2%VHVd)&6*|9f+O|B;fY{SxXGyF-T83
      zpF=R3f7E}eZkO`+?M75TE3At?@~dZei?6-iv*vO}LQqqcwAz<N9rH_z{WTWr5w7+8
      z9nvdG*>gO+Og%yt69>tVKKprY)3n2lrT3j9=)(V}pr8mw{9f>LlCeg&J0b=)kC-&d
      zZhME%^<yWjOqrQvqFtziPIa49*|hk3m=+YLEOHy{;w7~s(Syum*XgNQ$z+wMyY*U9
      z;wwCazVOp}gpuFOSYor&$Pzw(iQ>Uj-L0RK4~+zPnp!%pkcOfi=+Y|^UDON2qW!IN
      zBV5LUGzg`w=LrtVD{k8vqJ8X~S#NvwC4T5P!gn05$n3d;QUby{kE9_-O_GpECy*g{
      z5o5^#Xd7s5(A7O;O%v!2M7lHuJXZsRplDF^C9tMWnPSYl0TU!A((yxm65eWX8mNM^
      zza8+=;|@*=Zgy9!!ivn<2PG!=O!t%2*>^IP`UCEPN4ELUmUa&!f<#-me%;sT0t!k!
      zO!uf5<VlRDq#^&S4*=FQCklE^b7s8%MOF@OR{=M?gtmA27J1|MwtzO^lKp|@9kJ`M
      z+M|R;;eD+YQQ5`K1K|%Nr4a-R3=e9l*1&(OX8+KADv;9+Xd-3gIQID+L04PwZR*9%
      zH6~9*<QfmMjzPw>k!R4Pef_qrO?KeP>ckXiuCq3AjemIk*QLMd6&<RWH5kvfFlp$2
      z!9wh?dztSy(==K&j(Fm71D?*meET9p8n#xSV#fW2;mUc+wY2@|J&uLNCuqA$Rz>)A
      ziCQitmjNCAEV-(%@oh8uu3W2FgUc24YHz)?!=ibENShair-mZ*%<nx81$HOu%sfu@
      z=9IJy?ACD@4{B*12XC$QHDtv0Y-9cwif={9y!ccK-d)eY(QXfXcj_bLTfOS~^)8Ee
      zspeX7?eOLP{W118$#+y&>wooCdn*FU5~aO*9R-pk?c(>=-@0(<1#6A&FqwlcfyoH?
      z!#->a^1zvFa?`tVk&OHnG4?r_w;pf%K$eJD5`Fd@%`J%+WEIo3czle~oc^-%Hz9L^
      zz2~tqC&dnfs&Y0ttFZ6nxk@>28F#yecKdZ18wtr$ymknB1Z45}asMBCw7S|WdHEpY
      zt1i;(gvGbFb=Mik6rqMGDQI$=6>ZyzksBa`hM0N?>p<h@!0mp9_4@pw#|$f>j_d~)
      zX9O=_p^<==7(_$$8bqc1A{Fn{pBWn7U1Sby6+ijw?E@>!s*V5GV&WeVkGc6cn*YC~
      z)3sRH{ft7Q!nr)Kg5%P&>%B_;H>Qm}qq6ki?c)8)+Au$F7wu+rB9J0@8sdZKRPrUw
      zlEumZzo}{=3wz{zOHU2Kfq|7UKEf=Ml}W@-vH8T+5yAnWX8CYsm0o$|vvA#?a~q`F
      z^X<Z5-{i2M0mQO@|Ai|kP$vBr{N8k52lW4u!+-OFW`pF4D2Q>igR^+7Kg1WeO*IcC
      z5(6E1%nIP$5BCJrb<N_s_s2P<jU<eu=26zBi;Nb{&8^q|*i-b3UwLkyL}*{@vFKK0
      zy^p%S6_C+l^h4*V8caN1z=f}Ow0j`ls-_eLr|GoqW`q1N5`Y4FbHkEPYi3VL2cIdg
      z`P}W9T$PL|p54giU=dGY{w6x5=O2pk_>Orsl!IWe2-2r(xxN9W=yRlYZ@iQBf{l}g
      z^C0iHco@x}-f_t12i@b3qD9KfWZ2Bg&osVwFEm4)7Coq{Im<@v5Asyj(mluz@e{SE
      zdGPMx%8AWO(a6i%!pla?%ERWN0r+8j!aT62JbZ%B`2@rS_{9XC^1uYeU@*U2(xQI@
      zIJ;WgzxMqHAjAWE!0<iigNX@<i1G9N3-DOhrR4!Y_0I@;uCKkkEj(-hS!-8I8%7mp
      c3tJmq8w+b+_dc6{?!f>RMNNfrIrDe_0aEciA^-pY
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_228ef1_256x240.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_228ef1_256x240.png
      deleted file mode 100644
      index 33a0400c06560348533c3e5d11d03da493755b73..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FBQj}*Z=?k
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ef8c08_256x240.png
      deleted file mode 100644
      index 457ac4764dc85964d082d778af0969cb385b6eff..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MSl?W)LI)lHU(BnL=Kufz
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ffd27a_256x240.png
      deleted file mode 100644
      index 6a927e1fe2aa8715b04d20cdbfe6039fce2bd1c3..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M);HIy&_T!l7pjfl<^TWy
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ffffff_256x240.png b/bower_components/jquery-ui/themes/ui-lightness/images/ui-icons_ffffff_256x240.png
      deleted file mode 100644
      index 2cbe10f0b2b34be6b2f7ca3850fbc948ce281fa5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6487
      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
      H%>w=pP6G)(
      
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/jquery-ui.css b/bower_components/jquery-ui/themes/ui-lightness/jquery-ui.css
      deleted file mode 100644
      index 6b7ec6aaf5..0000000000
      --- a/bower_components/jquery-ui/themes/ui-lightness/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cccccc;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #eeeeee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #e78f08;
      -	background: #f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cccccc;
      -	background: #f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #1c94c4;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #1c94c4;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #fbcb09;
      -	background: #fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #c77405;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #c77405;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #fbd850;
      -	background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #eb8f00;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #fbd850;
      -	background-color: #eb8f00;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #eb8f00;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fed22f;
      -	background: #ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fed22f;
      -	background: #ffe45c;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ef8c08_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ef8c08_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_228ef1_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffd27a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ef8c08_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;
      -	opacity: .5;
      -	filter: Alpha(Opacity=50); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -5px -5px 5px #000000;
      -	box-shadow: -5px -5px 5px #000000;
      -}
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/jquery-ui.min.css b/bower_components/jquery-ui/themes/ui-lightness/jquery-ui.min.css
      deleted file mode 100644
      index 8ed2351d64..0000000000
      --- a/bower_components/jquery-ui/themes/ui-lightness/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #ccc}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#c77405;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-icon-background,.ui-state-active .ui-icon-background{border:#fbd850;background-color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-checked{border:1px solid #fed22f;background:#ffe45c}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{-webkit-box-shadow:-5px -5px 5px #000;box-shadow:-5px -5px 5px #000}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/ui-lightness/theme.css b/bower_components/jquery-ui/themes/ui-lightness/theme.css
      deleted file mode 100644
      index dec77aed3e..0000000000
      --- a/bower_components/jquery-ui/themes/ui-lightness/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cccccc;
      -}
      -.ui-widget-content {
      -	border: 1px solid #dddddd;
      -	background: #eeeeee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;
      -	color: #333333;
      -}
      -.ui-widget-content a {
      -	color: #333333;
      -}
      -.ui-widget-header {
      -	border: 1px solid #e78f08;
      -	background: #f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cccccc;
      -	background: #f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #1c94c4;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #1c94c4;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #fbcb09;
      -	background: #fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #c77405;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #c77405;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #fbd850;
      -	background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;
      -	font-weight: bold;
      -	color: #eb8f00;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #fbd850;
      -	background-color: #eb8f00;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #eb8f00;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #fed22f;
      -	background: #ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;
      -	color: #363636;
      -}
      -.ui-state-checked {
      -	border: 1px solid #fed22f;
      -	background: #ffe45c;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #363636;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;
      -	color: #ffffff;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #ffffff;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #ffffff;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_222222_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_ffffff_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_ef8c08_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_ef8c08_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_228ef1_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_ffd27a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_ef8c08_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 4px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 4px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;
      -	opacity: .5;
      -	filter: Alpha(Opacity=50); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -5px -5px 5px #000000;
      -	box-shadow: -5px -5px 5px #000000;
      -}
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-bg_glass_95_fef1ec_1x400.png b/bower_components/jquery-ui/themes/vader/images/ui-bg_glass_95_fef1ec_1x400.png
      deleted file mode 100644
      index 41de89710310990528c7ef37046552bc46d4101c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 390
      zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^D%S4j2<
      z@?~JCQe$9fXklRZ1r%y{!N5>zz`*b-fq}tl1_Oh5!JJ)zHb4osByV?@|6srw@%;`^
      zguTSm*OmPNCm*j8SH*)Fyg;EYPZ!4!kK=F8Z{%f6lxY9>{J)sc^BBc2f!=F;Udj;%
      z7^Ypg(CtzyEYZNLm-fT%q-^IqJJyYj0eh~luUOT-rQ*yxVP=Nog)+}?U)WYE%XD&9
      z;hagE(!{kdeK6a#u2(L4Zg0%eL+wqACtbWgJA847NzvP#5;M)LBxA#@BxIlI@M=i>
      zIlASs#X0^;CU;$plv(pRJ%FxKEpd$~Nl7e8wMs5Z1yT$~28L$329~;pCLxB#R>me)
      sh6cI@CRPRp3m6rE;e(_hH$NpatrE9}i!n3)0yQvry85}Sb4q9e0OkjRVE_OC
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-bg_gloss-wave_16_121212_500x100.png b/bower_components/jquery-ui/themes/vader/images/ui-bg_gloss-wave_16_121212_500x100.png
      deleted file mode 100644
      index eac68e5cc8a0eea67d1c68b38086cc90a427f1cb..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4031
      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
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-hard_15_888888_1x100.png b/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-hard_15_888888_1x100.png
      deleted file mode 100644
      index 6dd2bf64b39796b076c57e27142a8d5f510fb6b4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 311
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)^~7T^vIsE+0MT$a_FRg!SNbUMV}VRgA1Ms~CfM<5sN_
      z+h*k9cHqfOmFG1(P9AC$7ZWqfxv}xY0cr8demmz+%=PO8uG{V|odPsUwZt`|BqgyV
      z)hf9t6-Y4{85o-B8d&NYnuHh{TN#^J85-ysm{=JYEMQasdI(8FZhlH;S|x4`7h`7p
      Q1!`dMboFyt=akR{0QbjOTmS$7
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-hard_55_555555_1x100.png b/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-hard_55_555555_1x100.png
      deleted file mode 100644
      index 4e704a007179ae6723b51d69b61c5b5b556442d5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 311
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)^~7T^vIsE+@Z;J$K}QK|zM%<^7j^>dg%P{yg&~UFvdv
      z@v{5ReD>!X{N2Zy`X4A}-tqE0+p_;}nP2&_sj;y!C~T7`tlGDJAJ8b(64!{5l*E!$
      ztK_0oAjM#0U}&amV5w_p5@Kj<Wo%+)XrOCgVr5{kfKdVHAtVjC`6-!cmAExrjG6Hl
      PsDZ)L)z4*}Q$iB}|3_eW
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png b/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-soft_35_adadad_1x100.png
      deleted file mode 100644
      index f0655a6a8fb429ec135491b4344df05b35035135..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 326
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)_lMT^vIsF7NF#<ZW;eU@;eVxnq5RLH$YZ96c$S21%C-
      z6Lfe>uFUr_JSwvIv6IxHPOj<SB+KViICe6d-?8JYd3>btlWypa?AafzUVUq4=d+gH
      z{_&RWbfC$qC9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkup&_LI~#LB>60iy!Y
      fe@Gf~^HVa@DsgML7&GH9Py>UftDnm{r-UW|2rpnN
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png b/bower_components/jquery-ui/themes/vader/images/ui-bg_highlight-soft_60_dddddd_1x100.png
      deleted file mode 100644
      index 625223b4feef68ca6bcd7687753f3f0dcd34b117..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 342
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)^r{T^vIsE+<zkJ$K}QgZP(OFaP_rO<%{O|IToaM^Z&y
      z=fj=Ghc}<)IsaqEzvBirmZv_rOng~ya(J;cPydsd|HKV!DvllrI8gB4?r?2=TebcS
      zi73f;p2mOeUG%RfIWn|wR$O@6AzTV*lWK`;L`h0wNvc(HQ7VvPFfuSS(>1WvH8cq^
      xG`2D}u`)E!H88O<Fj&B-0Q4`ChTQy=%(P0}8ZO4n_zTp);OXk;vd$@?2>={>Zg2nq
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-bg_inset-soft_15_121212_1x100.png b/bower_components/jquery-ui/themes/vader/images/ui-bg_inset-soft_15_121212_1x100.png
      deleted file mode 100644
      index 30c7bf449194155391c8af432e479be9ca64bf31..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 322
      zcmeAS@N?(olHy`uVBq!ia0vp^j6j?s03;ZUuHXC*q*&4&eH|GXHuiJ>Nn{1`6_P!I
      zd>I(3)EF2VS{N990fib~Fff!FFfhDIU|_JC!N4G1FlSew4N!t9$=luK|9_FyhG&61
      z_7YEDSM~>-e7s6r6%S_c0)@OhT^vIsE+0K-$lKr`;Bs;1{mU}CJ97_klug*4bdFtB
      zT1ZRB;S-C^*0wM6oj<p*`NdQ`;AYp`^Y}uM^YKRJ@|g7t-yZ1{UVA@B-sb^-z$&&9
      zWuU35C9V-ADTyViR>?)FK#IZ0z|c(Bz*5)HB*f6z%Gkup&_LI~#LB>60iy!YZ%7()
      b^HVa@DsgML7&GH9Py>UftDnm{r-UW|Fc@Dz
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-icons_666666_256x240.png b/bower_components/jquery-ui/themes/vader/images/ui-icons_666666_256x240.png
      deleted file mode 100644
      index 4bdf1575e3bb0cbe593c8f3bdf278efcc8dc2770..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7111
      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
      G!~P$>Wmhu*
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-icons_aaaaaa_256x240.png b/bower_components/jquery-ui/themes/vader/images/ui-icons_aaaaaa_256x240.png
      deleted file mode 100644
      index c9b651cf7209bf5848d00998e9dfe2a02449e35d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7075
      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
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-icons_bbbbbb_256x240.png b/bower_components/jquery-ui/themes/vader/images/ui-icons_bbbbbb_256x240.png
      deleted file mode 100644
      index ae2987873cc6b1597a354238e6d98dd195f4953e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7092
      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
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-icons_c98000_256x240.png b/bower_components/jquery-ui/themes/vader/images/ui-icons_c98000_256x240.png
      deleted file mode 100644
      index 552a9d0c55652dbe8b621e71987781a9da4895d3..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      M)HT(q)I!Jo7X;jTWB>pF
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-icons_cccccc_256x240.png b/bower_components/jquery-ui/themes/vader/images/ui-icons_cccccc_256x240.png
      deleted file mode 100644
      index 4184f21a6be78600ab6584aa1649313f4f266813..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7034
      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
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-icons_cd0a0a_256x240.png b/bower_components/jquery-ui/themes/vader/images/ui-icons_cd0a0a_256x240.png
      deleted file mode 100644
      index ed1b23a81c2b1389423565a29deb53e883311bc2..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      MtZ%MYp@WY9FMgR(!vFvP
      
      diff --git a/bower_components/jquery-ui/themes/vader/images/ui-icons_f29a00_256x240.png b/bower_components/jquery-ui/themes/vader/images/ui-icons_f29a00_256x240.png
      deleted file mode 100644
      index 0259655b71a5ca92d579899fdb86d725fcbe529f..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4676
      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
      Mq-UmEp^c9JFN8XkWdHyG
      
      diff --git a/bower_components/jquery-ui/themes/vader/jquery-ui.css b/bower_components/jquery-ui/themes/vader/jquery-ui.css
      deleted file mode 100644
      index f95e236823..0000000000
      --- a/bower_components/jquery-ui/themes/vader/jquery-ui.css
      +++ /dev/null
      @@ -1,1311 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=888888&bgTextureHeader=highlight_hard&bgImgOpacityHeader=15&borderColorHeader=404040&fcHeader=ffffff&iconColorHeader=cccccc&bgColorContent=121212&bgTextureContent=gloss_wave&bgImgOpacityContent=16&borderColorContent=404040&fcContent=eeeeee&iconColorContent=bbbbbb&bgColorDefault=adadad&bgTextureDefault=highlight_soft&bgImgOpacityDefault=35&borderColorDefault=cccccc&fcDefault=333333&iconColorDefault=666666&bgColorHover=dddddd&bgTextureHover=highlight_soft&bgImgOpacityHover=60&borderColorHover=dddddd&fcHover=000000&iconColorHover=c98000&bgColorActive=121212&bgTextureActive=inset_soft&bgImgOpacityActive=15&borderColorActive=000000&fcActive=ffffff&iconColorActive=f29a00&bgColorHighlight=555555&bgTextureHighlight=highlight_hard&bgImgOpacityHighlight=55&borderColorHighlight=404040&fcHighlight=cccccc&iconColorHighlight=aaaaaa&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -/* Layout helpers
      -----------------------------------*/
      -.ui-helper-hidden {
      -	display: none;
      -}
      -.ui-helper-hidden-accessible {
      -	border: 0;
      -	clip: rect(0 0 0 0);
      -	height: 1px;
      -	margin: -1px;
      -	overflow: hidden;
      -	padding: 0;
      -	position: absolute;
      -	width: 1px;
      -}
      -.ui-helper-reset {
      -	margin: 0;
      -	padding: 0;
      -	border: 0;
      -	outline: 0;
      -	line-height: 1.3;
      -	text-decoration: none;
      -	font-size: 100%;
      -	list-style: none;
      -}
      -.ui-helper-clearfix:before,
      -.ui-helper-clearfix:after {
      -	content: "";
      -	display: table;
      -	border-collapse: collapse;
      -}
      -.ui-helper-clearfix:after {
      -	clear: both;
      -}
      -.ui-helper-zfix {
      -	width: 100%;
      -	height: 100%;
      -	top: 0;
      -	left: 0;
      -	position: absolute;
      -	opacity: 0;
      -	filter:Alpha(Opacity=0); /* support: IE8 */
      -}
      -
      -.ui-front {
      -	z-index: 100;
      -}
      -
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-disabled {
      -	cursor: default !important;
      -	pointer-events: none;
      -}
      -
      -
      -/* Icons
      -----------------------------------*/
      -.ui-icon {
      -	display: inline-block;
      -	vertical-align: middle;
      -	margin-top: -.25em;
      -	position: relative;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -}
      -
      -.ui-widget-icon-block {
      -	left: 50%;
      -	margin-left: -8px;
      -	display: block;
      -}
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	position: fixed;
      -	top: 0;
      -	left: 0;
      -	width: 100%;
      -	height: 100%;
      -}
      -.ui-accordion .ui-accordion-header {
      -	display: block;
      -	cursor: pointer;
      -	position: relative;
      -	margin: 2px 0 0 0;
      -	padding: .5em .5em .5em .7em;
      -	font-size: 100%;
      -}
      -.ui-accordion .ui-accordion-content {
      -	padding: 1em 2.2em;
      -	border-top: 0;
      -	overflow: auto;
      -}
      -.ui-autocomplete {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	cursor: default;
      -}
      -.ui-menu {
      -	list-style: none;
      -	padding: 0;
      -	margin: 0;
      -	display: block;
      -	outline: 0;
      -}
      -.ui-menu .ui-menu {
      -	position: absolute;
      -}
      -.ui-menu .ui-menu-item {
      -	margin: 0;
      -	cursor: pointer;
      -	/* support: IE10, see #8844 */
      -	list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7");
      -}
      -.ui-menu .ui-menu-item-wrapper {
      -	position: relative;
      -	padding: 3px 1em 3px .4em;
      -}
      -.ui-menu .ui-menu-divider {
      -	margin: 5px 0;
      -	height: 0;
      -	font-size: 0;
      -	line-height: 0;
      -	border-width: 1px 0 0 0;
      -}
      -.ui-menu .ui-state-focus,
      -.ui-menu .ui-state-active {
      -	margin: -1px;
      -}
      -
      -/* icon support */
      -.ui-menu-icons {
      -	position: relative;
      -}
      -.ui-menu-icons .ui-menu-item-wrapper {
      -	padding-left: 2em;
      -}
      -
      -/* left-aligned */
      -.ui-menu .ui-icon {
      -	position: absolute;
      -	top: 0;
      -	bottom: 0;
      -	left: .2em;
      -	margin: auto 0;
      -}
      -
      -/* right-aligned */
      -.ui-menu .ui-menu-icon {
      -	left: auto;
      -	right: 0;
      -}
      -.ui-button {
      -	padding: .4em 1em;
      -	display: inline-block;
      -	position: relative;
      -	line-height: normal;
      -	margin-right: .1em;
      -	cursor: pointer;
      -	vertical-align: middle;
      -	text-align: center;
      -	-webkit-user-select: none;
      -	-moz-user-select: none;
      -	-ms-user-select: none;
      -	user-select: none;
      -
      -	/* Support: IE <= 11 */
      -	overflow: visible;
      -}
      -
      -.ui-button,
      -.ui-button:link,
      -.ui-button:visited,
      -.ui-button:hover,
      -.ui-button:active {
      -	text-decoration: none;
      -}
      -
      -/* to make room for the icon, a width needs to be set here */
      -.ui-button-icon-only {
      -	width: 2em;
      -	box-sizing: border-box;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -}
      -
      -/* no icon support for input elements */
      -input.ui-button.ui-button-icon-only {
      -	text-indent: 0;
      -}
      -
      -/* button icon element(s) */
      -.ui-button-icon-only .ui-icon {
      -	position: absolute;
      -	top: 50%;
      -	left: 50%;
      -	margin-top: -8px;
      -	margin-left: -8px;
      -}
      -
      -.ui-button.ui-icon-notext .ui-icon {
      -	padding: 0;
      -	width: 2.1em;
      -	height: 2.1em;
      -	text-indent: -9999px;
      -	white-space: nowrap;
      -
      -}
      -
      -input.ui-button.ui-icon-notext .ui-icon {
      -	width: auto;
      -	height: auto;
      -	text-indent: 0;
      -	white-space: normal;
      -	padding: .4em 1em;
      -}
      -
      -/* workarounds */
      -/* Support: Firefox 5 - 40 */
      -input.ui-button::-moz-focus-inner,
      -button.ui-button::-moz-focus-inner {
      -	border: 0;
      -	padding: 0;
      -}
      -.ui-controlgroup {
      -	vertical-align: middle;
      -	display: inline-block;
      -}
      -.ui-controlgroup > .ui-controlgroup-item {
      -	float: left;
      -	margin-left: 0;
      -	margin-right: 0;
      -}
      -.ui-controlgroup > .ui-controlgroup-item:focus,
      -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus {
      -	z-index: 9999;
      -}
      -.ui-controlgroup-vertical > .ui-controlgroup-item {
      -	display: block;
      -	float: none;
      -	width: 100%;
      -	margin-top: 0;
      -	margin-bottom: 0;
      -	text-align: left;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-item {
      -	box-sizing: border-box;
      -}
      -.ui-controlgroup .ui-controlgroup-label {
      -	padding: .4em 1em;
      -}
      -.ui-controlgroup .ui-controlgroup-label span {
      -	font-size: 80%;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-left: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item {
      -	border-top: none;
      -}
      -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content {
      -	border-right: none;
      -}
      -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content {
      -	border-bottom: none;
      -}
      -
      -/* Spinner specific style fixes */
      -.ui-controlgroup-vertical .ui-spinner-input {
      -
      -	/* Support: IE8 only, Android < 4.4 only */
      -	width: 75%;
      -	width: calc( 100% - 2.4em );
      -}
      -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up {
      -	border-top-style: solid;
      -}
      -
      -.ui-checkboxradio-label .ui-icon-background {
      -	box-shadow: inset 1px 1px 1px #ccc;
      -	border-radius: .12em;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label .ui-icon-background {
      -	width: 16px;
      -	height: 16px;
      -	border-radius: 1em;
      -	overflow: visible;
      -	border: none;
      -}
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,
      -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon {
      -	background-image: none;
      -	width: 8px;
      -	height: 8px;
      -	border-width: 4px;
      -	border-style: solid;
      -}
      -.ui-checkboxradio-disabled {
      -	pointer-events: none;
      -}
      -.ui-datepicker {
      -	width: 17em;
      -	padding: .2em .2em 0;
      -	display: none;
      -}
      -.ui-datepicker .ui-datepicker-header {
      -	position: relative;
      -	padding: .2em 0;
      -}
      -.ui-datepicker .ui-datepicker-prev,
      -.ui-datepicker .ui-datepicker-next {
      -	position: absolute;
      -	top: 2px;
      -	width: 1.8em;
      -	height: 1.8em;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover,
      -.ui-datepicker .ui-datepicker-next-hover {
      -	top: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev {
      -	left: 2px;
      -}
      -.ui-datepicker .ui-datepicker-next {
      -	right: 2px;
      -}
      -.ui-datepicker .ui-datepicker-prev-hover {
      -	left: 1px;
      -}
      -.ui-datepicker .ui-datepicker-next-hover {
      -	right: 1px;
      -}
      -.ui-datepicker .ui-datepicker-prev span,
      -.ui-datepicker .ui-datepicker-next span {
      -	display: block;
      -	position: absolute;
      -	left: 50%;
      -	margin-left: -8px;
      -	top: 50%;
      -	margin-top: -8px;
      -}
      -.ui-datepicker .ui-datepicker-title {
      -	margin: 0 2.3em;
      -	line-height: 1.8em;
      -	text-align: center;
      -}
      -.ui-datepicker .ui-datepicker-title select {
      -	font-size: 1em;
      -	margin: 1px 0;
      -}
      -.ui-datepicker select.ui-datepicker-month,
      -.ui-datepicker select.ui-datepicker-year {
      -	width: 45%;
      -}
      -.ui-datepicker table {
      -	width: 100%;
      -	font-size: .9em;
      -	border-collapse: collapse;
      -	margin: 0 0 .4em;
      -}
      -.ui-datepicker th {
      -	padding: .7em .3em;
      -	text-align: center;
      -	font-weight: bold;
      -	border: 0;
      -}
      -.ui-datepicker td {
      -	border: 0;
      -	padding: 1px;
      -}
      -.ui-datepicker td span,
      -.ui-datepicker td a {
      -	display: block;
      -	padding: .2em;
      -	text-align: right;
      -	text-decoration: none;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane {
      -	background-image: none;
      -	margin: .7em 0 0 0;
      -	padding: 0 .2em;
      -	border-left: 0;
      -	border-right: 0;
      -	border-bottom: 0;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button {
      -	float: right;
      -	margin: .5em .2em .4em;
      -	cursor: pointer;
      -	padding: .2em .6em .3em .6em;
      -	width: auto;
      -	overflow: visible;
      -}
      -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current {
      -	float: left;
      -}
      -
      -/* with multiple calendars */
      -.ui-datepicker.ui-datepicker-multi {
      -	width: auto;
      -}
      -.ui-datepicker-multi .ui-datepicker-group {
      -	float: left;
      -}
      -.ui-datepicker-multi .ui-datepicker-group table {
      -	width: 95%;
      -	margin: 0 auto .4em;
      -}
      -.ui-datepicker-multi-2 .ui-datepicker-group {
      -	width: 50%;
      -}
      -.ui-datepicker-multi-3 .ui-datepicker-group {
      -	width: 33.3%;
      -}
      -.ui-datepicker-multi-4 .ui-datepicker-group {
      -	width: 25%;
      -}
      -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-left-width: 0;
      -}
      -.ui-datepicker-multi .ui-datepicker-buttonpane {
      -	clear: left;
      -}
      -.ui-datepicker-row-break {
      -	clear: both;
      -	width: 100%;
      -	font-size: 0;
      -}
      -
      -/* RTL support */
      -.ui-datepicker-rtl {
      -	direction: rtl;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev {
      -	right: 2px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next {
      -	left: 2px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-prev:hover {
      -	right: 1px;
      -	left: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-next:hover {
      -	left: 1px;
      -	right: auto;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane {
      -	clear: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button {
      -	float: left;
      -}
      -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,
      -.ui-datepicker-rtl .ui-datepicker-group {
      -	float: right;
      -}
      -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,
      -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header {
      -	border-right-width: 0;
      -	border-left-width: 1px;
      -}
      -
      -/* Icons */
      -.ui-datepicker .ui-icon {
      -	display: block;
      -	text-indent: -99999px;
      -	overflow: hidden;
      -	background-repeat: no-repeat;
      -	left: .5em;
      -	top: .3em;
      -}
      -.ui-dialog {
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	padding: .2em;
      -	outline: 0;
      -}
      -.ui-dialog .ui-dialog-titlebar {
      -	padding: .4em 1em;
      -	position: relative;
      -}
      -.ui-dialog .ui-dialog-title {
      -	float: left;
      -	margin: .1em 0;
      -	white-space: nowrap;
      -	width: 90%;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-dialog .ui-dialog-titlebar-close {
      -	position: absolute;
      -	right: .3em;
      -	top: 50%;
      -	width: 20px;
      -	margin: -10px 0 0 0;
      -	padding: 1px;
      -	height: 20px;
      -}
      -.ui-dialog .ui-dialog-content {
      -	position: relative;
      -	border: 0;
      -	padding: .5em 1em;
      -	background: none;
      -	overflow: auto;
      -}
      -.ui-dialog .ui-dialog-buttonpane {
      -	text-align: left;
      -	border-width: 1px 0 0 0;
      -	background-image: none;
      -	margin-top: .5em;
      -	padding: .3em 1em .5em .4em;
      -}
      -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset {
      -	float: right;
      -}
      -.ui-dialog .ui-dialog-buttonpane button {
      -	margin: .5em .4em .5em 0;
      -	cursor: pointer;
      -}
      -.ui-dialog .ui-resizable-n {
      -	height: 2px;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-e {
      -	width: 2px;
      -	right: 0;
      -}
      -.ui-dialog .ui-resizable-s {
      -	height: 2px;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-w {
      -	width: 2px;
      -	left: 0;
      -}
      -.ui-dialog .ui-resizable-se,
      -.ui-dialog .ui-resizable-sw,
      -.ui-dialog .ui-resizable-ne,
      -.ui-dialog .ui-resizable-nw {
      -	width: 7px;
      -	height: 7px;
      -}
      -.ui-dialog .ui-resizable-se {
      -	right: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-sw {
      -	left: 0;
      -	bottom: 0;
      -}
      -.ui-dialog .ui-resizable-ne {
      -	right: 0;
      -	top: 0;
      -}
      -.ui-dialog .ui-resizable-nw {
      -	left: 0;
      -	top: 0;
      -}
      -.ui-draggable .ui-dialog-titlebar {
      -	cursor: move;
      -}
      -.ui-draggable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable {
      -	position: relative;
      -}
      -.ui-resizable-handle {
      -	position: absolute;
      -	font-size: 0.1px;
      -	display: block;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-resizable-disabled .ui-resizable-handle,
      -.ui-resizable-autohide .ui-resizable-handle {
      -	display: none;
      -}
      -.ui-resizable-n {
      -	cursor: n-resize;
      -	height: 7px;
      -	width: 100%;
      -	top: -5px;
      -	left: 0;
      -}
      -.ui-resizable-s {
      -	cursor: s-resize;
      -	height: 7px;
      -	width: 100%;
      -	bottom: -5px;
      -	left: 0;
      -}
      -.ui-resizable-e {
      -	cursor: e-resize;
      -	width: 7px;
      -	right: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-w {
      -	cursor: w-resize;
      -	width: 7px;
      -	left: -5px;
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-resizable-se {
      -	cursor: se-resize;
      -	width: 12px;
      -	height: 12px;
      -	right: 1px;
      -	bottom: 1px;
      -}
      -.ui-resizable-sw {
      -	cursor: sw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	bottom: -5px;
      -}
      -.ui-resizable-nw {
      -	cursor: nw-resize;
      -	width: 9px;
      -	height: 9px;
      -	left: -5px;
      -	top: -5px;
      -}
      -.ui-resizable-ne {
      -	cursor: ne-resize;
      -	width: 9px;
      -	height: 9px;
      -	right: -5px;
      -	top: -5px;
      -}
      -.ui-progressbar {
      -	height: 2em;
      -	text-align: left;
      -	overflow: hidden;
      -}
      -.ui-progressbar .ui-progressbar-value {
      -	margin: -1px;
      -	height: 100%;
      -}
      -.ui-progressbar .ui-progressbar-overlay {
      -	background: url("data:image/gif;base64,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");
      -	height: 100%;
      -	filter: alpha(opacity=25); /* support: IE8 */
      -	opacity: 0.25;
      -}
      -.ui-progressbar-indeterminate .ui-progressbar-value {
      -	background-image: none;
      -}
      -.ui-selectable {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-selectable-helper {
      -	position: absolute;
      -	z-index: 100;
      -	border: 1px dotted black;
      -}
      -.ui-selectmenu-menu {
      -	padding: 0;
      -	margin: 0;
      -	position: absolute;
      -	top: 0;
      -	left: 0;
      -	display: none;
      -}
      -.ui-selectmenu-menu .ui-menu {
      -	overflow: auto;
      -	overflow-x: hidden;
      -	padding-bottom: 1px;
      -}
      -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup {
      -	font-size: 1em;
      -	font-weight: bold;
      -	line-height: 1.5;
      -	padding: 2px 0.4em;
      -	margin: 0.5em 0 0 0;
      -	height: auto;
      -	border: 0;
      -}
      -.ui-selectmenu-open {
      -	display: block;
      -}
      -.ui-selectmenu-text {
      -	display: block;
      -	margin-right: 20px;
      -	overflow: hidden;
      -	text-overflow: ellipsis;
      -}
      -.ui-selectmenu-button.ui-button {
      -	text-align: left;
      -	white-space: nowrap;
      -	width: 14em;
      -}
      -.ui-selectmenu-icon.ui-icon {
      -	float: right;
      -	margin-top: 0;
      -}
      -.ui-slider {
      -	position: relative;
      -	text-align: left;
      -}
      -.ui-slider .ui-slider-handle {
      -	position: absolute;
      -	z-index: 2;
      -	width: 1.2em;
      -	height: 1.2em;
      -	cursor: default;
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-slider .ui-slider-range {
      -	position: absolute;
      -	z-index: 1;
      -	font-size: .7em;
      -	display: block;
      -	border: 0;
      -	background-position: 0 0;
      -}
      -
      -/* support: IE8 - See #6727 */
      -.ui-slider.ui-state-disabled .ui-slider-handle,
      -.ui-slider.ui-state-disabled .ui-slider-range {
      -	filter: inherit;
      -}
      -
      -.ui-slider-horizontal {
      -	height: .8em;
      -}
      -.ui-slider-horizontal .ui-slider-handle {
      -	top: -.3em;
      -	margin-left: -.6em;
      -}
      -.ui-slider-horizontal .ui-slider-range {
      -	top: 0;
      -	height: 100%;
      -}
      -.ui-slider-horizontal .ui-slider-range-min {
      -	left: 0;
      -}
      -.ui-slider-horizontal .ui-slider-range-max {
      -	right: 0;
      -}
      -
      -.ui-slider-vertical {
      -	width: .8em;
      -	height: 100px;
      -}
      -.ui-slider-vertical .ui-slider-handle {
      -	left: -.3em;
      -	margin-left: 0;
      -	margin-bottom: -.6em;
      -}
      -.ui-slider-vertical .ui-slider-range {
      -	left: 0;
      -	width: 100%;
      -}
      -.ui-slider-vertical .ui-slider-range-min {
      -	bottom: 0;
      -}
      -.ui-slider-vertical .ui-slider-range-max {
      -	top: 0;
      -}
      -.ui-sortable-handle {
      -	-ms-touch-action: none;
      -	touch-action: none;
      -}
      -.ui-spinner {
      -	position: relative;
      -	display: inline-block;
      -	overflow: hidden;
      -	padding: 0;
      -	vertical-align: middle;
      -}
      -.ui-spinner-input {
      -	border: none;
      -	background: none;
      -	color: inherit;
      -	padding: .222em 0;
      -	margin: .2em 0;
      -	vertical-align: middle;
      -	margin-left: .4em;
      -	margin-right: 2em;
      -}
      -.ui-spinner-button {
      -	width: 1.6em;
      -	height: 50%;
      -	font-size: .5em;
      -	padding: 0;
      -	margin: 0;
      -	text-align: center;
      -	position: absolute;
      -	cursor: default;
      -	display: block;
      -	overflow: hidden;
      -	right: 0;
      -}
      -/* more specificity required here to override default borders */
      -.ui-spinner a.ui-spinner-button {
      -	border-top-style: none;
      -	border-bottom-style: none;
      -	border-right-style: none;
      -}
      -.ui-spinner-up {
      -	top: 0;
      -}
      -.ui-spinner-down {
      -	bottom: 0;
      -}
      -.ui-tabs {
      -	position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
      -	padding: .2em;
      -}
      -.ui-tabs .ui-tabs-nav {
      -	margin: 0;
      -	padding: .2em .2em 0;
      -}
      -.ui-tabs .ui-tabs-nav li {
      -	list-style: none;
      -	float: left;
      -	position: relative;
      -	top: 0;
      -	margin: 1px .2em 0 0;
      -	border-bottom-width: 0;
      -	padding: 0;
      -	white-space: nowrap;
      -}
      -.ui-tabs .ui-tabs-nav .ui-tabs-anchor {
      -	float: left;
      -	padding: .5em 1em;
      -	text-decoration: none;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active {
      -	margin-bottom: -1px;
      -	padding-bottom: 1px;
      -}
      -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,
      -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor {
      -	cursor: text;
      -}
      -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor {
      -	cursor: pointer;
      -}
      -.ui-tabs .ui-tabs-panel {
      -	display: block;
      -	border-width: 0;
      -	padding: 1em 1.4em;
      -	background: none;
      -}
      -.ui-tooltip {
      -	padding: 8px;
      -	position: absolute;
      -	z-index: 9999;
      -	max-width: 300px;
      -}
      -body .ui-tooltip {
      -	border-width: 2px;
      -}
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cccccc;
      -}
      -.ui-widget-content {
      -	border: 1px solid #404040;
      -	background: #121212 url("images/ui-bg_gloss-wave_16_121212_500x100.png") 50% top repeat-x;
      -	color: #eeeeee;
      -}
      -.ui-widget-content a {
      -	color: #eeeeee;
      -}
      -.ui-widget-header {
      -	border: 1px solid #404040;
      -	background: #888888 url("images/ui-bg_highlight-hard_15_888888_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cccccc;
      -	background: #adadad url("images/ui-bg_highlight-soft_35_adadad_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #333333;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #333333;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #dddddd;
      -	background: #dddddd url("images/ui-bg_highlight-soft_60_dddddd_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #000000;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #000000;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #000000;
      -	background: #121212 url("images/ui-bg_inset-soft_15_121212_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #000000;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #404040;
      -	background: #555555 url("images/ui-bg_highlight-hard_55_555555_1x100.png") 50% top repeat-x;
      -	color: #cccccc;
      -}
      -.ui-state-checked {
      -	border: 1px solid #404040;
      -	background: #555555;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #cccccc;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
      -	color: #cd0a0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd0a0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd0a0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_bbbbbb_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_c98000_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f29a00_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_aaaaaa_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_666666_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/themes/vader/jquery-ui.min.css b/bower_components/jquery-ui/themes/vader/jquery-ui.min.css
      deleted file mode 100644
      index 7a2a0dc7bc..0000000000
      --- a/bower_components/jquery-ui/themes/vader/jquery-ui.min.css
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-14
      -* http://jqueryui.com
      -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
      -* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=888888&bgTextureHeader=highlight_hard&bgImgOpacityHeader=15&borderColorHeader=404040&fcHeader=ffffff&iconColorHeader=cccccc&bgColorContent=121212&bgTextureContent=gloss_wave&bgImgOpacityContent=16&borderColorContent=404040&fcContent=eeeeee&iconColorContent=bbbbbb&bgColorDefault=adadad&bgTextureDefault=highlight_soft&bgImgOpacityDefault=35&borderColorDefault=cccccc&fcDefault=333333&iconColorDefault=666666&bgColorHover=dddddd&bgTextureHover=highlight_soft&bgImgOpacityHover=60&borderColorHover=dddddd&fcHover=000000&iconColorHover=c98000&bgColorActive=121212&bgTextureActive=inset_soft&bgImgOpacityActive=15&borderColorActive=000000&fcActive=ffffff&iconColorActive=f29a00&bgColorHighlight=555555&bgTextureHighlight=highlight_hard&bgImgOpacityHighlight=55&borderColorHighlight=404040&fcHighlight=cccccc&iconColorHighlight=aaaaaa&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a
      -* Copyright jQuery Foundation and other contributors; Licensed MIT */
      -
      -.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Helvetica,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Helvetica,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #ccc}.ui-widget-content{border:1px solid #404040;background:#121212 url("images/ui-bg_gloss-wave_16_121212_500x100.png") 50% top repeat-x;color:#eee}.ui-widget-content a{color:#eee}.ui-widget-header{border:1px solid #404040;background:#888 url("images/ui-bg_highlight-hard_15_888888_1x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #ccc;background:#adadad url("images/ui-bg_highlight-soft_35_adadad_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#333}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#333;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ddd;background:#ddd url("images/ui-bg_highlight-soft_60_dddddd_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#000}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#000;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #000;background:#121212 url("images/ui-bg_inset-soft_15_121212_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#000;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #404040;background:#555 url("images/ui-bg_highlight-hard_55_555555_1x100.png") 50% top repeat-x;color:#ccc}.ui-state-checked{border:1px solid #404040;background:#555}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#ccc}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_bbbbbb_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_cccccc_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_c98000_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_f29a00_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_aaaaaa_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_666666_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:5px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:5px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:5px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa}
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/themes/vader/theme.css b/bower_components/jquery-ui/themes/vader/theme.css
      deleted file mode 100644
      index 093c30badd..0000000000
      --- a/bower_components/jquery-ui/themes/vader/theme.css
      +++ /dev/null
      @@ -1,443 +0,0 @@
      -/*!
      - * jQuery UI CSS Framework 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/category/theming/
      - *
      - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=5px&bgColorHeader=888888&bgTextureHeader=highlight_hard&bgImgOpacityHeader=15&borderColorHeader=404040&fcHeader=ffffff&iconColorHeader=cccccc&bgColorContent=121212&bgTextureContent=gloss_wave&bgImgOpacityContent=16&borderColorContent=404040&fcContent=eeeeee&iconColorContent=bbbbbb&bgColorDefault=adadad&bgTextureDefault=highlight_soft&bgImgOpacityDefault=35&borderColorDefault=cccccc&fcDefault=333333&iconColorDefault=666666&bgColorHover=dddddd&bgTextureHover=highlight_soft&bgImgOpacityHover=60&borderColorHover=dddddd&fcHover=000000&iconColorHover=c98000&bgColorActive=121212&bgTextureActive=inset_soft&bgImgOpacityActive=15&borderColorActive=000000&fcActive=ffffff&iconColorActive=f29a00&bgColorHighlight=555555&bgTextureHighlight=highlight_hard&bgImgOpacityHighlight=55&borderColorHighlight=404040&fcHighlight=cccccc&iconColorHighlight=aaaaaa&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a
      - */
      -
      -
      -/* Component containers
      -----------------------------------*/
      -.ui-widget {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1.1em;
      -}
      -.ui-widget .ui-widget {
      -	font-size: 1em;
      -}
      -.ui-widget input,
      -.ui-widget select,
      -.ui-widget textarea,
      -.ui-widget button {
      -	font-family: Helvetica,Arial,sans-serif;
      -	font-size: 1em;
      -}
      -.ui-widget.ui-widget-content {
      -	border: 1px solid #cccccc;
      -}
      -.ui-widget-content {
      -	border: 1px solid #404040;
      -	background: #121212 url("images/ui-bg_gloss-wave_16_121212_500x100.png") 50% top repeat-x;
      -	color: #eeeeee;
      -}
      -.ui-widget-content a {
      -	color: #eeeeee;
      -}
      -.ui-widget-header {
      -	border: 1px solid #404040;
      -	background: #888888 url("images/ui-bg_highlight-hard_15_888888_1x100.png") 50% 50% repeat-x;
      -	color: #ffffff;
      -	font-weight: bold;
      -}
      -.ui-widget-header a {
      -	color: #ffffff;
      -}
      -
      -/* Interaction states
      -----------------------------------*/
      -.ui-state-default,
      -.ui-widget-content .ui-state-default,
      -.ui-widget-header .ui-state-default,
      -.ui-button,
      -
      -/* We use html here because we need a greater specificity to make sure disabled
      -works properly when clicked or hovered */
      -html .ui-button.ui-state-disabled:hover,
      -html .ui-button.ui-state-disabled:active {
      -	border: 1px solid #cccccc;
      -	background: #adadad url("images/ui-bg_highlight-soft_35_adadad_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #333333;
      -}
      -.ui-state-default a,
      -.ui-state-default a:link,
      -.ui-state-default a:visited,
      -a.ui-button,
      -a:link.ui-button,
      -a:visited.ui-button,
      -.ui-button {
      -	color: #333333;
      -	text-decoration: none;
      -}
      -.ui-state-hover,
      -.ui-widget-content .ui-state-hover,
      -.ui-widget-header .ui-state-hover,
      -.ui-state-focus,
      -.ui-widget-content .ui-state-focus,
      -.ui-widget-header .ui-state-focus,
      -.ui-button:hover,
      -.ui-button:focus {
      -	border: 1px solid #dddddd;
      -	background: #dddddd url("images/ui-bg_highlight-soft_60_dddddd_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #000000;
      -}
      -.ui-state-hover a,
      -.ui-state-hover a:hover,
      -.ui-state-hover a:link,
      -.ui-state-hover a:visited,
      -.ui-state-focus a,
      -.ui-state-focus a:hover,
      -.ui-state-focus a:link,
      -.ui-state-focus a:visited,
      -a.ui-button:hover,
      -a.ui-button:focus {
      -	color: #000000;
      -	text-decoration: none;
      -}
      -
      -.ui-visual-focus {
      -	box-shadow: 0 0 3px 1px rgb(94, 158, 214);
      -}
      -.ui-state-active,
      -.ui-widget-content .ui-state-active,
      -.ui-widget-header .ui-state-active,
      -a.ui-button:active,
      -.ui-button:active,
      -.ui-button.ui-state-active:hover {
      -	border: 1px solid #000000;
      -	background: #121212 url("images/ui-bg_inset-soft_15_121212_1x100.png") 50% 50% repeat-x;
      -	font-weight: normal;
      -	color: #ffffff;
      -}
      -.ui-icon-background,
      -.ui-state-active .ui-icon-background {
      -	border: #000000;
      -	background-color: #ffffff;
      -}
      -.ui-state-active a,
      -.ui-state-active a:link,
      -.ui-state-active a:visited {
      -	color: #ffffff;
      -	text-decoration: none;
      -}
      -
      -/* Interaction Cues
      -----------------------------------*/
      -.ui-state-highlight,
      -.ui-widget-content .ui-state-highlight,
      -.ui-widget-header .ui-state-highlight {
      -	border: 1px solid #404040;
      -	background: #555555 url("images/ui-bg_highlight-hard_55_555555_1x100.png") 50% top repeat-x;
      -	color: #cccccc;
      -}
      -.ui-state-checked {
      -	border: 1px solid #404040;
      -	background: #555555;
      -}
      -.ui-state-highlight a,
      -.ui-widget-content .ui-state-highlight a,
      -.ui-widget-header .ui-state-highlight a {
      -	color: #cccccc;
      -}
      -.ui-state-error,
      -.ui-widget-content .ui-state-error,
      -.ui-widget-header .ui-state-error {
      -	border: 1px solid #cd0a0a;
      -	background: #fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;
      -	color: #cd0a0a;
      -}
      -.ui-state-error a,
      -.ui-widget-content .ui-state-error a,
      -.ui-widget-header .ui-state-error a {
      -	color: #cd0a0a;
      -}
      -.ui-state-error-text,
      -.ui-widget-content .ui-state-error-text,
      -.ui-widget-header .ui-state-error-text {
      -	color: #cd0a0a;
      -}
      -.ui-priority-primary,
      -.ui-widget-content .ui-priority-primary,
      -.ui-widget-header .ui-priority-primary {
      -	font-weight: bold;
      -}
      -.ui-priority-secondary,
      -.ui-widget-content .ui-priority-secondary,
      -.ui-widget-header .ui-priority-secondary {
      -	opacity: .7;
      -	filter:Alpha(Opacity=70); /* support: IE8 */
      -	font-weight: normal;
      -}
      -.ui-state-disabled,
      -.ui-widget-content .ui-state-disabled,
      -.ui-widget-header .ui-state-disabled {
      -	opacity: .35;
      -	filter:Alpha(Opacity=35); /* support: IE8 */
      -	background-image: none;
      -}
      -.ui-state-disabled .ui-icon {
      -	filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */
      -}
      -
      -/* Icons
      -----------------------------------*/
      -
      -/* states and images */
      -.ui-icon {
      -	width: 16px;
      -	height: 16px;
      -}
      -.ui-icon,
      -.ui-widget-content .ui-icon {
      -	background-image: url("images/ui-icons_bbbbbb_256x240.png");
      -}
      -.ui-widget-header .ui-icon {
      -	background-image: url("images/ui-icons_cccccc_256x240.png");
      -}
      -.ui-state-hover .ui-icon,
      -.ui-state-focus .ui-icon,
      -.ui-button:hover .ui-icon,
      -.ui-button:focus .ui-icon {
      -	background-image: url("images/ui-icons_c98000_256x240.png");
      -}
      -.ui-state-active .ui-icon,
      -.ui-button:active .ui-icon {
      -	background-image: url("images/ui-icons_f29a00_256x240.png");
      -}
      -.ui-state-highlight .ui-icon,
      -.ui-button .ui-state-highlight.ui-icon {
      -	background-image: url("images/ui-icons_aaaaaa_256x240.png");
      -}
      -.ui-state-error .ui-icon,
      -.ui-state-error-text .ui-icon {
      -	background-image: url("images/ui-icons_cd0a0a_256x240.png");
      -}
      -.ui-button .ui-icon {
      -	background-image: url("images/ui-icons_666666_256x240.png");
      -}
      -
      -/* positioning */
      -.ui-icon-blank { background-position: 16px 16px; }
      -.ui-icon-caret-1-n { background-position: 0 0; }
      -.ui-icon-caret-1-ne { background-position: -16px 0; }
      -.ui-icon-caret-1-e { background-position: -32px 0; }
      -.ui-icon-caret-1-se { background-position: -48px 0; }
      -.ui-icon-caret-1-s { background-position: -65px 0; }
      -.ui-icon-caret-1-sw { background-position: -80px 0; }
      -.ui-icon-caret-1-w { background-position: -96px 0; }
      -.ui-icon-caret-1-nw { background-position: -112px 0; }
      -.ui-icon-caret-2-n-s { background-position: -128px 0; }
      -.ui-icon-caret-2-e-w { background-position: -144px 0; }
      -.ui-icon-triangle-1-n { background-position: 0 -16px; }
      -.ui-icon-triangle-1-ne { background-position: -16px -16px; }
      -.ui-icon-triangle-1-e { background-position: -32px -16px; }
      -.ui-icon-triangle-1-se { background-position: -48px -16px; }
      -.ui-icon-triangle-1-s { background-position: -65px -16px; }
      -.ui-icon-triangle-1-sw { background-position: -80px -16px; }
      -.ui-icon-triangle-1-w { background-position: -96px -16px; }
      -.ui-icon-triangle-1-nw { background-position: -112px -16px; }
      -.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
      -.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
      -.ui-icon-arrow-1-n { background-position: 0 -32px; }
      -.ui-icon-arrow-1-ne { background-position: -16px -32px; }
      -.ui-icon-arrow-1-e { background-position: -32px -32px; }
      -.ui-icon-arrow-1-se { background-position: -48px -32px; }
      -.ui-icon-arrow-1-s { background-position: -65px -32px; }
      -.ui-icon-arrow-1-sw { background-position: -80px -32px; }
      -.ui-icon-arrow-1-w { background-position: -96px -32px; }
      -.ui-icon-arrow-1-nw { background-position: -112px -32px; }
      -.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
      -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
      -.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
      -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
      -.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
      -.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
      -.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
      -.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
      -.ui-icon-arrowthick-1-n { background-position: 1px -48px; }
      -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
      -.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
      -.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
      -.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
      -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
      -.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
      -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
      -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
      -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
      -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
      -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
      -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
      -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
      -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
      -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
      -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
      -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
      -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
      -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
      -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
      -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
      -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
      -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
      -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
      -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
      -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
      -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
      -.ui-icon-arrow-4 { background-position: 0 -80px; }
      -.ui-icon-arrow-4-diag { background-position: -16px -80px; }
      -.ui-icon-extlink { background-position: -32px -80px; }
      -.ui-icon-newwin { background-position: -48px -80px; }
      -.ui-icon-refresh { background-position: -64px -80px; }
      -.ui-icon-shuffle { background-position: -80px -80px; }
      -.ui-icon-transfer-e-w { background-position: -96px -80px; }
      -.ui-icon-transferthick-e-w { background-position: -112px -80px; }
      -.ui-icon-folder-collapsed { background-position: 0 -96px; }
      -.ui-icon-folder-open { background-position: -16px -96px; }
      -.ui-icon-document { background-position: -32px -96px; }
      -.ui-icon-document-b { background-position: -48px -96px; }
      -.ui-icon-note { background-position: -64px -96px; }
      -.ui-icon-mail-closed { background-position: -80px -96px; }
      -.ui-icon-mail-open { background-position: -96px -96px; }
      -.ui-icon-suitcase { background-position: -112px -96px; }
      -.ui-icon-comment { background-position: -128px -96px; }
      -.ui-icon-person { background-position: -144px -96px; }
      -.ui-icon-print { background-position: -160px -96px; }
      -.ui-icon-trash { background-position: -176px -96px; }
      -.ui-icon-locked { background-position: -192px -96px; }
      -.ui-icon-unlocked { background-position: -208px -96px; }
      -.ui-icon-bookmark { background-position: -224px -96px; }
      -.ui-icon-tag { background-position: -240px -96px; }
      -.ui-icon-home { background-position: 0 -112px; }
      -.ui-icon-flag { background-position: -16px -112px; }
      -.ui-icon-calendar { background-position: -32px -112px; }
      -.ui-icon-cart { background-position: -48px -112px; }
      -.ui-icon-pencil { background-position: -64px -112px; }
      -.ui-icon-clock { background-position: -80px -112px; }
      -.ui-icon-disk { background-position: -96px -112px; }
      -.ui-icon-calculator { background-position: -112px -112px; }
      -.ui-icon-zoomin { background-position: -128px -112px; }
      -.ui-icon-zoomout { background-position: -144px -112px; }
      -.ui-icon-search { background-position: -160px -112px; }
      -.ui-icon-wrench { background-position: -176px -112px; }
      -.ui-icon-gear { background-position: -192px -112px; }
      -.ui-icon-heart { background-position: -208px -112px; }
      -.ui-icon-star { background-position: -224px -112px; }
      -.ui-icon-link { background-position: -240px -112px; }
      -.ui-icon-cancel { background-position: 0 -128px; }
      -.ui-icon-plus { background-position: -16px -128px; }
      -.ui-icon-plusthick { background-position: -32px -128px; }
      -.ui-icon-minus { background-position: -48px -128px; }
      -.ui-icon-minusthick { background-position: -64px -128px; }
      -.ui-icon-close { background-position: -80px -128px; }
      -.ui-icon-closethick { background-position: -96px -128px; }
      -.ui-icon-key { background-position: -112px -128px; }
      -.ui-icon-lightbulb { background-position: -128px -128px; }
      -.ui-icon-scissors { background-position: -144px -128px; }
      -.ui-icon-clipboard { background-position: -160px -128px; }
      -.ui-icon-copy { background-position: -176px -128px; }
      -.ui-icon-contact { background-position: -192px -128px; }
      -.ui-icon-image { background-position: -208px -128px; }
      -.ui-icon-video { background-position: -224px -128px; }
      -.ui-icon-script { background-position: -240px -128px; }
      -.ui-icon-alert { background-position: 0 -144px; }
      -.ui-icon-info { background-position: -16px -144px; }
      -.ui-icon-notice { background-position: -32px -144px; }
      -.ui-icon-help { background-position: -48px -144px; }
      -.ui-icon-check { background-position: -64px -144px; }
      -.ui-icon-bullet { background-position: -80px -144px; }
      -.ui-icon-radio-on { background-position: -96px -144px; }
      -.ui-icon-radio-off { background-position: -112px -144px; }
      -.ui-icon-pin-w { background-position: -128px -144px; }
      -.ui-icon-pin-s { background-position: -144px -144px; }
      -.ui-icon-play { background-position: 0 -160px; }
      -.ui-icon-pause { background-position: -16px -160px; }
      -.ui-icon-seek-next { background-position: -32px -160px; }
      -.ui-icon-seek-prev { background-position: -48px -160px; }
      -.ui-icon-seek-end { background-position: -64px -160px; }
      -.ui-icon-seek-start { background-position: -80px -160px; }
      -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
      -.ui-icon-seek-first { background-position: -80px -160px; }
      -.ui-icon-stop { background-position: -96px -160px; }
      -.ui-icon-eject { background-position: -112px -160px; }
      -.ui-icon-volume-off { background-position: -128px -160px; }
      -.ui-icon-volume-on { background-position: -144px -160px; }
      -.ui-icon-power { background-position: 0 -176px; }
      -.ui-icon-signal-diag { background-position: -16px -176px; }
      -.ui-icon-signal { background-position: -32px -176px; }
      -.ui-icon-battery-0 { background-position: -48px -176px; }
      -.ui-icon-battery-1 { background-position: -64px -176px; }
      -.ui-icon-battery-2 { background-position: -80px -176px; }
      -.ui-icon-battery-3 { background-position: -96px -176px; }
      -.ui-icon-circle-plus { background-position: 0 -192px; }
      -.ui-icon-circle-minus { background-position: -16px -192px; }
      -.ui-icon-circle-close { background-position: -32px -192px; }
      -.ui-icon-circle-triangle-e { background-position: -48px -192px; }
      -.ui-icon-circle-triangle-s { background-position: -64px -192px; }
      -.ui-icon-circle-triangle-w { background-position: -80px -192px; }
      -.ui-icon-circle-triangle-n { background-position: -96px -192px; }
      -.ui-icon-circle-arrow-e { background-position: -112px -192px; }
      -.ui-icon-circle-arrow-s { background-position: -128px -192px; }
      -.ui-icon-circle-arrow-w { background-position: -144px -192px; }
      -.ui-icon-circle-arrow-n { background-position: -160px -192px; }
      -.ui-icon-circle-zoomin { background-position: -176px -192px; }
      -.ui-icon-circle-zoomout { background-position: -192px -192px; }
      -.ui-icon-circle-check { background-position: -208px -192px; }
      -.ui-icon-circlesmall-plus { background-position: 0 -208px; }
      -.ui-icon-circlesmall-minus { background-position: -16px -208px; }
      -.ui-icon-circlesmall-close { background-position: -32px -208px; }
      -.ui-icon-squaresmall-plus { background-position: -48px -208px; }
      -.ui-icon-squaresmall-minus { background-position: -64px -208px; }
      -.ui-icon-squaresmall-close { background-position: -80px -208px; }
      -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
      -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
      -.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
      -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
      -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
      -.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
      -
      -
      -/* Misc visuals
      -----------------------------------*/
      -
      -/* Corner radius */
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-left,
      -.ui-corner-tl {
      -	border-top-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-top,
      -.ui-corner-right,
      -.ui-corner-tr {
      -	border-top-right-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-left,
      -.ui-corner-bl {
      -	border-bottom-left-radius: 5px;
      -}
      -.ui-corner-all,
      -.ui-corner-bottom,
      -.ui-corner-right,
      -.ui-corner-br {
      -	border-bottom-right-radius: 5px;
      -}
      -
      -/* Overlays */
      -.ui-widget-overlay {
      -	background: #aaaaaa;
      -	opacity: .3;
      -	filter: Alpha(Opacity=30); /* support: IE8 */
      -}
      -.ui-widget-shadow {
      -	-webkit-box-shadow: -8px -8px 8px #aaaaaa;
      -	box-shadow: -8px -8px 8px #aaaaaa;
      -}
      diff --git a/bower_components/jquery-ui/ui/.jshintrc b/bower_components/jquery-ui/ui/.jshintrc
      deleted file mode 100755
      index 98a79b5dbd..0000000000
      --- a/bower_components/jquery-ui/ui/.jshintrc
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -{
      -	"boss": true,
      -	"curly": true,
      -	"eqeqeq": true,
      -	"eqnull": true,
      -	"expr": true,
      -	"immed": true,
      -	"noarg": true,
      -	"onevar": true,
      -	"quotmark": "double",
      -	"smarttabs": true,
      -	"trailing": true,
      -	"undef": true,
      -	"unused": true,
      -
      -	"browser": true,
      -	"es3": true,
      -	"jquery": true,
      -
      -	"globals": {
      -		"define": false,
      -		"Globalize": false
      -	}
      -}
      diff --git a/bower_components/jquery-ui/ui/core.js b/bower_components/jquery-ui/ui/core.js
      deleted file mode 100644
      index 2cccd0bd8e..0000000000
      --- a/bower_components/jquery-ui/ui/core.js
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -// This file is deprecated in 1.12.0 to be removed in 1.13
      -( function() {
      -define( [
      -	"jquery",
      -	"./data",
      -	"./disable-selection",
      -	"./focusable",
      -	"./form",
      -	"./ie",
      -	"./keycode",
      -	"./labels",
      -	"./jquery-1-7",
      -	"./plugin",
      -	"./safe-active-element",
      -	"./safe-blur",
      -	"./scroll-parent",
      -	"./tabbable",
      -	"./unique-id",
      -	"./version"
      -] );
      -} )();
      diff --git a/bower_components/jquery-ui/ui/data.js b/bower_components/jquery-ui/ui/data.js
      deleted file mode 100644
      index 1a14ed1cf2..0000000000
      --- a/bower_components/jquery-ui/ui/data.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -/*!
      - * jQuery UI :data 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: :data Selector
      -//>>group: Core
      -//>>description: Selects elements which have data stored under the specified key.
      -//>>docs: http://api.jqueryui.com/data-selector/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -return $.extend( $.expr[ ":" ], {
      -	data: $.expr.createPseudo ?
      -		$.expr.createPseudo( function( dataName ) {
      -			return function( elem ) {
      -				return !!$.data( elem, dataName );
      -			};
      -		} ) :
      -
      -		// Support: jQuery <1.8
      -		function( elem, i, match ) {
      -			return !!$.data( elem, match[ 3 ] );
      -		}
      -} );
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/disable-selection.js b/bower_components/jquery-ui/ui/disable-selection.js
      deleted file mode 100644
      index 6188b64687..0000000000
      --- a/bower_components/jquery-ui/ui/disable-selection.js
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -/*!
      - * jQuery UI Disable Selection 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: disableSelection
      -//>>group: Core
      -//>>description: Disable selection of text content within the set of matched elements.
      -//>>docs: http://api.jqueryui.com/disableSelection/
      -
      -// This file is deprecated
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -return $.fn.extend( {
      -	disableSelection: ( function() {
      -		var eventType = "onselectstart" in document.createElement( "div" ) ?
      -			"selectstart" :
      -			"mousedown";
      -
      -		return function() {
      -			return this.on( eventType + ".ui-disableSelection", function( event ) {
      -				event.preventDefault();
      -			} );
      -		};
      -	} )(),
      -
      -	enableSelection: function() {
      -		return this.off( ".ui-disableSelection" );
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effect.js b/bower_components/jquery-ui/ui/effect.js
      deleted file mode 100644
      index 88bd7874da..0000000000
      --- a/bower_components/jquery-ui/ui/effect.js
      +++ /dev/null
      @@ -1,1635 +0,0 @@
      -/*!
      - * jQuery UI Effects 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Effects Core
      -//>>group: Effects
      -// jscs:disable maximumLineLength
      -//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/category/effects-core/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -var dataSpace = "ui-effects-",
      -	dataSpaceStyle = "ui-effects-style",
      -	dataSpaceAnimated = "ui-effects-animated",
      -
      -	// Create a local jQuery because jQuery Color relies on it and the
      -	// global may not exist with AMD and a custom build (#10199)
      -	jQuery = $;
      -
      -$.effects = {
      -	effect: {}
      -};
      -
      -/*!
      - * jQuery Color Animations v2.1.2
      - * https://github.com/jquery/jquery-color
      - *
      - * Copyright 2014 jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * Date: Wed Jan 16 08:47:09 2013 -0600
      - */
      -( function( jQuery, undefined ) {
      -
      -	var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " +
      -		"borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",
      -
      -	// Plusequals test for += 100 -= 100
      -	rplusequals = /^([\-+])=\s*(\d+\.?\d*)/,
      -
      -	// A set of RE's that can match strings and generate color tuples.
      -	stringParsers = [ {
      -			re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      -			parse: function( execResult ) {
      -				return [
      -					execResult[ 1 ],
      -					execResult[ 2 ],
      -					execResult[ 3 ],
      -					execResult[ 4 ]
      -				];
      -			}
      -		}, {
      -			re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      -			parse: function( execResult ) {
      -				return [
      -					execResult[ 1 ] * 2.55,
      -					execResult[ 2 ] * 2.55,
      -					execResult[ 3 ] * 2.55,
      -					execResult[ 4 ]
      -				];
      -			}
      -		}, {
      -
      -			// This regex ignores A-F because it's compared against an already lowercased string
      -			re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,
      -			parse: function( execResult ) {
      -				return [
      -					parseInt( execResult[ 1 ], 16 ),
      -					parseInt( execResult[ 2 ], 16 ),
      -					parseInt( execResult[ 3 ], 16 )
      -				];
      -			}
      -		}, {
      -
      -			// This regex ignores A-F because it's compared against an already lowercased string
      -			re: /#([a-f0-9])([a-f0-9])([a-f0-9])/,
      -			parse: function( execResult ) {
      -				return [
      -					parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ),
      -					parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ),
      -					parseInt( execResult[ 3 ] + execResult[ 3 ], 16 )
      -				];
      -			}
      -		}, {
      -			re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,
      -			space: "hsla",
      -			parse: function( execResult ) {
      -				return [
      -					execResult[ 1 ],
      -					execResult[ 2 ] / 100,
      -					execResult[ 3 ] / 100,
      -					execResult[ 4 ]
      -				];
      -			}
      -		} ],
      -
      -	// JQuery.Color( )
      -	color = jQuery.Color = function( color, green, blue, alpha ) {
      -		return new jQuery.Color.fn.parse( color, green, blue, alpha );
      -	},
      -	spaces = {
      -		rgba: {
      -			props: {
      -				red: {
      -					idx: 0,
      -					type: "byte"
      -				},
      -				green: {
      -					idx: 1,
      -					type: "byte"
      -				},
      -				blue: {
      -					idx: 2,
      -					type: "byte"
      -				}
      -			}
      -		},
      -
      -		hsla: {
      -			props: {
      -				hue: {
      -					idx: 0,
      -					type: "degrees"
      -				},
      -				saturation: {
      -					idx: 1,
      -					type: "percent"
      -				},
      -				lightness: {
      -					idx: 2,
      -					type: "percent"
      -				}
      -			}
      -		}
      -	},
      -	propTypes = {
      -		"byte": {
      -			floor: true,
      -			max: 255
      -		},
      -		"percent": {
      -			max: 1
      -		},
      -		"degrees": {
      -			mod: 360,
      -			floor: true
      -		}
      -	},
      -	support = color.support = {},
      -
      -	// Element for support tests
      -	supportElem = jQuery( "<p>" )[ 0 ],
      -
      -	// Colors = jQuery.Color.names
      -	colors,
      -
      -	// Local aliases of functions called often
      -	each = jQuery.each;
      -
      -// Determine rgba support immediately
      -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)";
      -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1;
      -
      -// Define cache name and alpha properties
      -// for rgba and hsla spaces
      -each( spaces, function( spaceName, space ) {
      -	space.cache = "_" + spaceName;
      -	space.props.alpha = {
      -		idx: 3,
      -		type: "percent",
      -		def: 1
      -	};
      -} );
      -
      -function clamp( value, prop, allowEmpty ) {
      -	var type = propTypes[ prop.type ] || {};
      -
      -	if ( value == null ) {
      -		return ( allowEmpty || !prop.def ) ? null : prop.def;
      -	}
      -
      -	// ~~ is an short way of doing floor for positive numbers
      -	value = type.floor ? ~~value : parseFloat( value );
      -
      -	// IE will pass in empty strings as value for alpha,
      -	// which will hit this case
      -	if ( isNaN( value ) ) {
      -		return prop.def;
      -	}
      -
      -	if ( type.mod ) {
      -
      -		// We add mod before modding to make sure that negatives values
      -		// get converted properly: -10 -> 350
      -		return ( value + type.mod ) % type.mod;
      -	}
      -
      -	// For now all property types without mod have min and max
      -	return 0 > value ? 0 : type.max < value ? type.max : value;
      -}
      -
      -function stringParse( string ) {
      -	var inst = color(),
      -		rgba = inst._rgba = [];
      -
      -	string = string.toLowerCase();
      -
      -	each( stringParsers, function( i, parser ) {
      -		var parsed,
      -			match = parser.re.exec( string ),
      -			values = match && parser.parse( match ),
      -			spaceName = parser.space || "rgba";
      -
      -		if ( values ) {
      -			parsed = inst[ spaceName ]( values );
      -
      -			// If this was an rgba parse the assignment might happen twice
      -			// oh well....
      -			inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ];
      -			rgba = inst._rgba = parsed._rgba;
      -
      -			// Exit each( stringParsers ) here because we matched
      -			return false;
      -		}
      -	} );
      -
      -	// Found a stringParser that handled it
      -	if ( rgba.length ) {
      -
      -		// If this came from a parsed string, force "transparent" when alpha is 0
      -		// chrome, (and maybe others) return "transparent" as rgba(0,0,0,0)
      -		if ( rgba.join() === "0,0,0,0" ) {
      -			jQuery.extend( rgba, colors.transparent );
      -		}
      -		return inst;
      -	}
      -
      -	// Named colors
      -	return colors[ string ];
      -}
      -
      -color.fn = jQuery.extend( color.prototype, {
      -	parse: function( red, green, blue, alpha ) {
      -		if ( red === undefined ) {
      -			this._rgba = [ null, null, null, null ];
      -			return this;
      -		}
      -		if ( red.jquery || red.nodeType ) {
      -			red = jQuery( red ).css( green );
      -			green = undefined;
      -		}
      -
      -		var inst = this,
      -			type = jQuery.type( red ),
      -			rgba = this._rgba = [];
      -
      -		// More than 1 argument specified - assume ( red, green, blue, alpha )
      -		if ( green !== undefined ) {
      -			red = [ red, green, blue, alpha ];
      -			type = "array";
      -		}
      -
      -		if ( type === "string" ) {
      -			return this.parse( stringParse( red ) || colors._default );
      -		}
      -
      -		if ( type === "array" ) {
      -			each( spaces.rgba.props, function( key, prop ) {
      -				rgba[ prop.idx ] = clamp( red[ prop.idx ], prop );
      -			} );
      -			return this;
      -		}
      -
      -		if ( type === "object" ) {
      -			if ( red instanceof color ) {
      -				each( spaces, function( spaceName, space ) {
      -					if ( red[ space.cache ] ) {
      -						inst[ space.cache ] = red[ space.cache ].slice();
      -					}
      -				} );
      -			} else {
      -				each( spaces, function( spaceName, space ) {
      -					var cache = space.cache;
      -					each( space.props, function( key, prop ) {
      -
      -						// If the cache doesn't exist, and we know how to convert
      -						if ( !inst[ cache ] && space.to ) {
      -
      -							// If the value was null, we don't need to copy it
      -							// if the key was alpha, we don't need to copy it either
      -							if ( key === "alpha" || red[ key ] == null ) {
      -								return;
      -							}
      -							inst[ cache ] = space.to( inst._rgba );
      -						}
      -
      -						// This is the only case where we allow nulls for ALL properties.
      -						// call clamp with alwaysAllowEmpty
      -						inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true );
      -					} );
      -
      -					// Everything defined but alpha?
      -					if ( inst[ cache ] &&
      -							jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) {
      -
      -						// Use the default of 1
      -						inst[ cache ][ 3 ] = 1;
      -						if ( space.from ) {
      -							inst._rgba = space.from( inst[ cache ] );
      -						}
      -					}
      -				} );
      -			}
      -			return this;
      -		}
      -	},
      -	is: function( compare ) {
      -		var is = color( compare ),
      -			same = true,
      -			inst = this;
      -
      -		each( spaces, function( _, space ) {
      -			var localCache,
      -				isCache = is[ space.cache ];
      -			if ( isCache ) {
      -				localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || [];
      -				each( space.props, function( _, prop ) {
      -					if ( isCache[ prop.idx ] != null ) {
      -						same = ( isCache[ prop.idx ] === localCache[ prop.idx ] );
      -						return same;
      -					}
      -				} );
      -			}
      -			return same;
      -		} );
      -		return same;
      -	},
      -	_space: function() {
      -		var used = [],
      -			inst = this;
      -		each( spaces, function( spaceName, space ) {
      -			if ( inst[ space.cache ] ) {
      -				used.push( spaceName );
      -			}
      -		} );
      -		return used.pop();
      -	},
      -	transition: function( other, distance ) {
      -		var end = color( other ),
      -			spaceName = end._space(),
      -			space = spaces[ spaceName ],
      -			startColor = this.alpha() === 0 ? color( "transparent" ) : this,
      -			start = startColor[ space.cache ] || space.to( startColor._rgba ),
      -			result = start.slice();
      -
      -		end = end[ space.cache ];
      -		each( space.props, function( key, prop ) {
      -			var index = prop.idx,
      -				startValue = start[ index ],
      -				endValue = end[ index ],
      -				type = propTypes[ prop.type ] || {};
      -
      -			// If null, don't override start value
      -			if ( endValue === null ) {
      -				return;
      -			}
      -
      -			// If null - use end
      -			if ( startValue === null ) {
      -				result[ index ] = endValue;
      -			} else {
      -				if ( type.mod ) {
      -					if ( endValue - startValue > type.mod / 2 ) {
      -						startValue += type.mod;
      -					} else if ( startValue - endValue > type.mod / 2 ) {
      -						startValue -= type.mod;
      -					}
      -				}
      -				result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop );
      -			}
      -		} );
      -		return this[ spaceName ]( result );
      -	},
      -	blend: function( opaque ) {
      -
      -		// If we are already opaque - return ourself
      -		if ( this._rgba[ 3 ] === 1 ) {
      -			return this;
      -		}
      -
      -		var rgb = this._rgba.slice(),
      -			a = rgb.pop(),
      -			blend = color( opaque )._rgba;
      -
      -		return color( jQuery.map( rgb, function( v, i ) {
      -			return ( 1 - a ) * blend[ i ] + a * v;
      -		} ) );
      -	},
      -	toRgbaString: function() {
      -		var prefix = "rgba(",
      -			rgba = jQuery.map( this._rgba, function( v, i ) {
      -				return v == null ? ( i > 2 ? 1 : 0 ) : v;
      -			} );
      -
      -		if ( rgba[ 3 ] === 1 ) {
      -			rgba.pop();
      -			prefix = "rgb(";
      -		}
      -
      -		return prefix + rgba.join() + ")";
      -	},
      -	toHslaString: function() {
      -		var prefix = "hsla(",
      -			hsla = jQuery.map( this.hsla(), function( v, i ) {
      -				if ( v == null ) {
      -					v = i > 2 ? 1 : 0;
      -				}
      -
      -				// Catch 1 and 2
      -				if ( i && i < 3 ) {
      -					v = Math.round( v * 100 ) + "%";
      -				}
      -				return v;
      -			} );
      -
      -		if ( hsla[ 3 ] === 1 ) {
      -			hsla.pop();
      -			prefix = "hsl(";
      -		}
      -		return prefix + hsla.join() + ")";
      -	},
      -	toHexString: function( includeAlpha ) {
      -		var rgba = this._rgba.slice(),
      -			alpha = rgba.pop();
      -
      -		if ( includeAlpha ) {
      -			rgba.push( ~~( alpha * 255 ) );
      -		}
      -
      -		return "#" + jQuery.map( rgba, function( v ) {
      -
      -			// Default to 0 when nulls exist
      -			v = ( v || 0 ).toString( 16 );
      -			return v.length === 1 ? "0" + v : v;
      -		} ).join( "" );
      -	},
      -	toString: function() {
      -		return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString();
      -	}
      -} );
      -color.fn.parse.prototype = color.fn;
      -
      -// Hsla conversions adapted from:
      -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
      -
      -function hue2rgb( p, q, h ) {
      -	h = ( h + 1 ) % 1;
      -	if ( h * 6 < 1 ) {
      -		return p + ( q - p ) * h * 6;
      -	}
      -	if ( h * 2 < 1 ) {
      -		return q;
      -	}
      -	if ( h * 3 < 2 ) {
      -		return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6;
      -	}
      -	return p;
      -}
      -
      -spaces.hsla.to = function( rgba ) {
      -	if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) {
      -		return [ null, null, null, rgba[ 3 ] ];
      -	}
      -	var r = rgba[ 0 ] / 255,
      -		g = rgba[ 1 ] / 255,
      -		b = rgba[ 2 ] / 255,
      -		a = rgba[ 3 ],
      -		max = Math.max( r, g, b ),
      -		min = Math.min( r, g, b ),
      -		diff = max - min,
      -		add = max + min,
      -		l = add * 0.5,
      -		h, s;
      -
      -	if ( min === max ) {
      -		h = 0;
      -	} else if ( r === max ) {
      -		h = ( 60 * ( g - b ) / diff ) + 360;
      -	} else if ( g === max ) {
      -		h = ( 60 * ( b - r ) / diff ) + 120;
      -	} else {
      -		h = ( 60 * ( r - g ) / diff ) + 240;
      -	}
      -
      -	// Chroma (diff) == 0 means greyscale which, by definition, saturation = 0%
      -	// otherwise, saturation is based on the ratio of chroma (diff) to lightness (add)
      -	if ( diff === 0 ) {
      -		s = 0;
      -	} else if ( l <= 0.5 ) {
      -		s = diff / add;
      -	} else {
      -		s = diff / ( 2 - add );
      -	}
      -	return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ];
      -};
      -
      -spaces.hsla.from = function( hsla ) {
      -	if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) {
      -		return [ null, null, null, hsla[ 3 ] ];
      -	}
      -	var h = hsla[ 0 ] / 360,
      -		s = hsla[ 1 ],
      -		l = hsla[ 2 ],
      -		a = hsla[ 3 ],
      -		q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s,
      -		p = 2 * l - q;
      -
      -	return [
      -		Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ),
      -		Math.round( hue2rgb( p, q, h ) * 255 ),
      -		Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ),
      -		a
      -	];
      -};
      -
      -each( spaces, function( spaceName, space ) {
      -	var props = space.props,
      -		cache = space.cache,
      -		to = space.to,
      -		from = space.from;
      -
      -	// Makes rgba() and hsla()
      -	color.fn[ spaceName ] = function( value ) {
      -
      -		// Generate a cache for this space if it doesn't exist
      -		if ( to && !this[ cache ] ) {
      -			this[ cache ] = to( this._rgba );
      -		}
      -		if ( value === undefined ) {
      -			return this[ cache ].slice();
      -		}
      -
      -		var ret,
      -			type = jQuery.type( value ),
      -			arr = ( type === "array" || type === "object" ) ? value : arguments,
      -			local = this[ cache ].slice();
      -
      -		each( props, function( key, prop ) {
      -			var val = arr[ type === "object" ? key : prop.idx ];
      -			if ( val == null ) {
      -				val = local[ prop.idx ];
      -			}
      -			local[ prop.idx ] = clamp( val, prop );
      -		} );
      -
      -		if ( from ) {
      -			ret = color( from( local ) );
      -			ret[ cache ] = local;
      -			return ret;
      -		} else {
      -			return color( local );
      -		}
      -	};
      -
      -	// Makes red() green() blue() alpha() hue() saturation() lightness()
      -	each( props, function( key, prop ) {
      -
      -		// Alpha is included in more than one space
      -		if ( color.fn[ key ] ) {
      -			return;
      -		}
      -		color.fn[ key ] = function( value ) {
      -			var vtype = jQuery.type( value ),
      -				fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ),
      -				local = this[ fn ](),
      -				cur = local[ prop.idx ],
      -				match;
      -
      -			if ( vtype === "undefined" ) {
      -				return cur;
      -			}
      -
      -			if ( vtype === "function" ) {
      -				value = value.call( this, cur );
      -				vtype = jQuery.type( value );
      -			}
      -			if ( value == null && prop.empty ) {
      -				return this;
      -			}
      -			if ( vtype === "string" ) {
      -				match = rplusequals.exec( value );
      -				if ( match ) {
      -					value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 );
      -				}
      -			}
      -			local[ prop.idx ] = value;
      -			return this[ fn ]( local );
      -		};
      -	} );
      -} );
      -
      -// Add cssHook and .fx.step function for each named hook.
      -// accept a space separated string of properties
      -color.hook = function( hook ) {
      -	var hooks = hook.split( " " );
      -	each( hooks, function( i, hook ) {
      -		jQuery.cssHooks[ hook ] = {
      -			set: function( elem, value ) {
      -				var parsed, curElem,
      -					backgroundColor = "";
      -
      -				if ( value !== "transparent" && ( jQuery.type( value ) !== "string" ||
      -						( parsed = stringParse( value ) ) ) ) {
      -					value = color( parsed || value );
      -					if ( !support.rgba && value._rgba[ 3 ] !== 1 ) {
      -						curElem = hook === "backgroundColor" ? elem.parentNode : elem;
      -						while (
      -							( backgroundColor === "" || backgroundColor === "transparent" ) &&
      -							curElem && curElem.style
      -						) {
      -							try {
      -								backgroundColor = jQuery.css( curElem, "backgroundColor" );
      -								curElem = curElem.parentNode;
      -							} catch ( e ) {
      -							}
      -						}
      -
      -						value = value.blend( backgroundColor && backgroundColor !== "transparent" ?
      -							backgroundColor :
      -							"_default" );
      -					}
      -
      -					value = value.toRgbaString();
      -				}
      -				try {
      -					elem.style[ hook ] = value;
      -				} catch ( e ) {
      -
      -					// Wrapped to prevent IE from throwing errors on "invalid" values like
      -					// 'auto' or 'inherit'
      -				}
      -			}
      -		};
      -		jQuery.fx.step[ hook ] = function( fx ) {
      -			if ( !fx.colorInit ) {
      -				fx.start = color( fx.elem, hook );
      -				fx.end = color( fx.end );
      -				fx.colorInit = true;
      -			}
      -			jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) );
      -		};
      -	} );
      -
      -};
      -
      -color.hook( stepHooks );
      -
      -jQuery.cssHooks.borderColor = {
      -	expand: function( value ) {
      -		var expanded = {};
      -
      -		each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) {
      -			expanded[ "border" + part + "Color" ] = value;
      -		} );
      -		return expanded;
      -	}
      -};
      -
      -// Basic color names only.
      -// Usage of any of the other color names requires adding yourself or including
      -// jquery.color.svg-names.js.
      -colors = jQuery.Color.names = {
      -
      -	// 4.1. Basic color keywords
      -	aqua: "#00ffff",
      -	black: "#000000",
      -	blue: "#0000ff",
      -	fuchsia: "#ff00ff",
      -	gray: "#808080",
      -	green: "#008000",
      -	lime: "#00ff00",
      -	maroon: "#800000",
      -	navy: "#000080",
      -	olive: "#808000",
      -	purple: "#800080",
      -	red: "#ff0000",
      -	silver: "#c0c0c0",
      -	teal: "#008080",
      -	white: "#ffffff",
      -	yellow: "#ffff00",
      -
      -	// 4.2.3. "transparent" color keyword
      -	transparent: [ null, null, null, 0 ],
      -
      -	_default: "#ffffff"
      -};
      -
      -} )( jQuery );
      -
      -/******************************************************************************/
      -/****************************** CLASS ANIMATIONS ******************************/
      -/******************************************************************************/
      -( function() {
      -
      -var classAnimationActions = [ "add", "remove", "toggle" ],
      -	shorthandStyles = {
      -		border: 1,
      -		borderBottom: 1,
      -		borderColor: 1,
      -		borderLeft: 1,
      -		borderRight: 1,
      -		borderTop: 1,
      -		borderWidth: 1,
      -		margin: 1,
      -		padding: 1
      -	};
      -
      -$.each(
      -	[ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ],
      -	function( _, prop ) {
      -		$.fx.step[ prop ] = function( fx ) {
      -			if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) {
      -				jQuery.style( fx.elem, prop, fx.end );
      -				fx.setAttr = true;
      -			}
      -		};
      -	}
      -);
      -
      -function getElementStyles( elem ) {
      -	var key, len,
      -		style = elem.ownerDocument.defaultView ?
      -			elem.ownerDocument.defaultView.getComputedStyle( elem, null ) :
      -			elem.currentStyle,
      -		styles = {};
      -
      -	if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) {
      -		len = style.length;
      -		while ( len-- ) {
      -			key = style[ len ];
      -			if ( typeof style[ key ] === "string" ) {
      -				styles[ $.camelCase( key ) ] = style[ key ];
      -			}
      -		}
      -
      -	// Support: Opera, IE <9
      -	} else {
      -		for ( key in style ) {
      -			if ( typeof style[ key ] === "string" ) {
      -				styles[ key ] = style[ key ];
      -			}
      -		}
      -	}
      -
      -	return styles;
      -}
      -
      -function styleDifference( oldStyle, newStyle ) {
      -	var diff = {},
      -		name, value;
      -
      -	for ( name in newStyle ) {
      -		value = newStyle[ name ];
      -		if ( oldStyle[ name ] !== value ) {
      -			if ( !shorthandStyles[ name ] ) {
      -				if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) {
      -					diff[ name ] = value;
      -				}
      -			}
      -		}
      -	}
      -
      -	return diff;
      -}
      -
      -// Support: jQuery <1.8
      -if ( !$.fn.addBack ) {
      -	$.fn.addBack = function( selector ) {
      -		return this.add( selector == null ?
      -			this.prevObject : this.prevObject.filter( selector )
      -		);
      -	};
      -}
      -
      -$.effects.animateClass = function( value, duration, easing, callback ) {
      -	var o = $.speed( duration, easing, callback );
      -
      -	return this.queue( function() {
      -		var animated = $( this ),
      -			baseClass = animated.attr( "class" ) || "",
      -			applyClassChange,
      -			allAnimations = o.children ? animated.find( "*" ).addBack() : animated;
      -
      -		// Map the animated objects to store the original styles.
      -		allAnimations = allAnimations.map( function() {
      -			var el = $( this );
      -			return {
      -				el: el,
      -				start: getElementStyles( this )
      -			};
      -		} );
      -
      -		// Apply class change
      -		applyClassChange = function() {
      -			$.each( classAnimationActions, function( i, action ) {
      -				if ( value[ action ] ) {
      -					animated[ action + "Class" ]( value[ action ] );
      -				}
      -			} );
      -		};
      -		applyClassChange();
      -
      -		// Map all animated objects again - calculate new styles and diff
      -		allAnimations = allAnimations.map( function() {
      -			this.end = getElementStyles( this.el[ 0 ] );
      -			this.diff = styleDifference( this.start, this.end );
      -			return this;
      -		} );
      -
      -		// Apply original class
      -		animated.attr( "class", baseClass );
      -
      -		// Map all animated objects again - this time collecting a promise
      -		allAnimations = allAnimations.map( function() {
      -			var styleInfo = this,
      -				dfd = $.Deferred(),
      -				opts = $.extend( {}, o, {
      -					queue: false,
      -					complete: function() {
      -						dfd.resolve( styleInfo );
      -					}
      -				} );
      -
      -			this.el.animate( this.diff, opts );
      -			return dfd.promise();
      -		} );
      -
      -		// Once all animations have completed:
      -		$.when.apply( $, allAnimations.get() ).done( function() {
      -
      -			// Set the final class
      -			applyClassChange();
      -
      -			// For each animated element,
      -			// clear all css properties that were animated
      -			$.each( arguments, function() {
      -				var el = this.el;
      -				$.each( this.diff, function( key ) {
      -					el.css( key, "" );
      -				} );
      -			} );
      -
      -			// This is guarnteed to be there if you use jQuery.speed()
      -			// it also handles dequeuing the next anim...
      -			o.complete.call( animated[ 0 ] );
      -		} );
      -	} );
      -};
      -
      -$.fn.extend( {
      -	addClass: ( function( orig ) {
      -		return function( classNames, speed, easing, callback ) {
      -			return speed ?
      -				$.effects.animateClass.call( this,
      -					{ add: classNames }, speed, easing, callback ) :
      -				orig.apply( this, arguments );
      -		};
      -	} )( $.fn.addClass ),
      -
      -	removeClass: ( function( orig ) {
      -		return function( classNames, speed, easing, callback ) {
      -			return arguments.length > 1 ?
      -				$.effects.animateClass.call( this,
      -					{ remove: classNames }, speed, easing, callback ) :
      -				orig.apply( this, arguments );
      -		};
      -	} )( $.fn.removeClass ),
      -
      -	toggleClass: ( function( orig ) {
      -		return function( classNames, force, speed, easing, callback ) {
      -			if ( typeof force === "boolean" || force === undefined ) {
      -				if ( !speed ) {
      -
      -					// Without speed parameter
      -					return orig.apply( this, arguments );
      -				} else {
      -					return $.effects.animateClass.call( this,
      -						( force ? { add: classNames } : { remove: classNames } ),
      -						speed, easing, callback );
      -				}
      -			} else {
      -
      -				// Without force parameter
      -				return $.effects.animateClass.call( this,
      -					{ toggle: classNames }, force, speed, easing );
      -			}
      -		};
      -	} )( $.fn.toggleClass ),
      -
      -	switchClass: function( remove, add, speed, easing, callback ) {
      -		return $.effects.animateClass.call( this, {
      -			add: add,
      -			remove: remove
      -		}, speed, easing, callback );
      -	}
      -} );
      -
      -} )();
      -
      -/******************************************************************************/
      -/*********************************** EFFECTS **********************************/
      -/******************************************************************************/
      -
      -( function() {
      -
      -if ( $.expr && $.expr.filters && $.expr.filters.animated ) {
      -	$.expr.filters.animated = ( function( orig ) {
      -		return function( elem ) {
      -			return !!$( elem ).data( dataSpaceAnimated ) || orig( elem );
      -		};
      -	} )( $.expr.filters.animated );
      -}
      -
      -if ( $.uiBackCompat !== false ) {
      -	$.extend( $.effects, {
      -
      -		// Saves a set of properties in a data storage
      -		save: function( element, set ) {
      -			var i = 0, length = set.length;
      -			for ( ; i < length; i++ ) {
      -				if ( set[ i ] !== null ) {
      -					element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] );
      -				}
      -			}
      -		},
      -
      -		// Restores a set of previously saved properties from a data storage
      -		restore: function( element, set ) {
      -			var val, i = 0, length = set.length;
      -			for ( ; i < length; i++ ) {
      -				if ( set[ i ] !== null ) {
      -					val = element.data( dataSpace + set[ i ] );
      -					element.css( set[ i ], val );
      -				}
      -			}
      -		},
      -
      -		setMode: function( el, mode ) {
      -			if ( mode === "toggle" ) {
      -				mode = el.is( ":hidden" ) ? "show" : "hide";
      -			}
      -			return mode;
      -		},
      -
      -		// Wraps the element around a wrapper that copies position properties
      -		createWrapper: function( element ) {
      -
      -			// If the element is already wrapped, return it
      -			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
      -				return element.parent();
      -			}
      -
      -			// Wrap the element
      -			var props = {
      -					width: element.outerWidth( true ),
      -					height: element.outerHeight( true ),
      -					"float": element.css( "float" )
      -				},
      -				wrapper = $( "<div></div>" )
      -					.addClass( "ui-effects-wrapper" )
      -					.css( {
      -						fontSize: "100%",
      -						background: "transparent",
      -						border: "none",
      -						margin: 0,
      -						padding: 0
      -					} ),
      -
      -				// Store the size in case width/height are defined in % - Fixes #5245
      -				size = {
      -					width: element.width(),
      -					height: element.height()
      -				},
      -				active = document.activeElement;
      -
      -			// Support: Firefox
      -			// Firefox incorrectly exposes anonymous content
      -			// https://bugzilla.mozilla.org/show_bug.cgi?id=561664
      -			try {
      -				active.id;
      -			} catch ( e ) {
      -				active = document.body;
      -			}
      -
      -			element.wrap( wrapper );
      -
      -			// Fixes #7595 - Elements lose focus when wrapped.
      -			if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
      -				$( active ).trigger( "focus" );
      -			}
      -
      -			// Hotfix for jQuery 1.4 since some change in wrap() seems to actually
      -			// lose the reference to the wrapped element
      -			wrapper = element.parent();
      -
      -			// Transfer positioning properties to the wrapper
      -			if ( element.css( "position" ) === "static" ) {
      -				wrapper.css( { position: "relative" } );
      -				element.css( { position: "relative" } );
      -			} else {
      -				$.extend( props, {
      -					position: element.css( "position" ),
      -					zIndex: element.css( "z-index" )
      -				} );
      -				$.each( [ "top", "left", "bottom", "right" ], function( i, pos ) {
      -					props[ pos ] = element.css( pos );
      -					if ( isNaN( parseInt( props[ pos ], 10 ) ) ) {
      -						props[ pos ] = "auto";
      -					}
      -				} );
      -				element.css( {
      -					position: "relative",
      -					top: 0,
      -					left: 0,
      -					right: "auto",
      -					bottom: "auto"
      -				} );
      -			}
      -			element.css( size );
      -
      -			return wrapper.css( props ).show();
      -		},
      -
      -		removeWrapper: function( element ) {
      -			var active = document.activeElement;
      -
      -			if ( element.parent().is( ".ui-effects-wrapper" ) ) {
      -				element.parent().replaceWith( element );
      -
      -				// Fixes #7595 - Elements lose focus when wrapped.
      -				if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) {
      -					$( active ).trigger( "focus" );
      -				}
      -			}
      -
      -			return element;
      -		}
      -	} );
      -}
      -
      -$.extend( $.effects, {
      -	version: "1.12.1",
      -
      -	define: function( name, mode, effect ) {
      -		if ( !effect ) {
      -			effect = mode;
      -			mode = "effect";
      -		}
      -
      -		$.effects.effect[ name ] = effect;
      -		$.effects.effect[ name ].mode = mode;
      -
      -		return effect;
      -	},
      -
      -	scaledDimensions: function( element, percent, direction ) {
      -		if ( percent === 0 ) {
      -			return {
      -				height: 0,
      -				width: 0,
      -				outerHeight: 0,
      -				outerWidth: 0
      -			};
      -		}
      -
      -		var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1,
      -			y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1;
      -
      -		return {
      -			height: element.height() * y,
      -			width: element.width() * x,
      -			outerHeight: element.outerHeight() * y,
      -			outerWidth: element.outerWidth() * x
      -		};
      -
      -	},
      -
      -	clipToBox: function( animation ) {
      -		return {
      -			width: animation.clip.right - animation.clip.left,
      -			height: animation.clip.bottom - animation.clip.top,
      -			left: animation.clip.left,
      -			top: animation.clip.top
      -		};
      -	},
      -
      -	// Injects recently queued functions to be first in line (after "inprogress")
      -	unshift: function( element, queueLength, count ) {
      -		var queue = element.queue();
      -
      -		if ( queueLength > 1 ) {
      -			queue.splice.apply( queue,
      -				[ 1, 0 ].concat( queue.splice( queueLength, count ) ) );
      -		}
      -		element.dequeue();
      -	},
      -
      -	saveStyle: function( element ) {
      -		element.data( dataSpaceStyle, element[ 0 ].style.cssText );
      -	},
      -
      -	restoreStyle: function( element ) {
      -		element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || "";
      -		element.removeData( dataSpaceStyle );
      -	},
      -
      -	mode: function( element, mode ) {
      -		var hidden = element.is( ":hidden" );
      -
      -		if ( mode === "toggle" ) {
      -			mode = hidden ? "show" : "hide";
      -		}
      -		if ( hidden ? mode === "hide" : mode === "show" ) {
      -			mode = "none";
      -		}
      -		return mode;
      -	},
      -
      -	// Translates a [top,left] array into a baseline value
      -	getBaseline: function( origin, original ) {
      -		var y, x;
      -
      -		switch ( origin[ 0 ] ) {
      -		case "top":
      -			y = 0;
      -			break;
      -		case "middle":
      -			y = 0.5;
      -			break;
      -		case "bottom":
      -			y = 1;
      -			break;
      -		default:
      -			y = origin[ 0 ] / original.height;
      -		}
      -
      -		switch ( origin[ 1 ] ) {
      -		case "left":
      -			x = 0;
      -			break;
      -		case "center":
      -			x = 0.5;
      -			break;
      -		case "right":
      -			x = 1;
      -			break;
      -		default:
      -			x = origin[ 1 ] / original.width;
      -		}
      -
      -		return {
      -			x: x,
      -			y: y
      -		};
      -	},
      -
      -	// Creates a placeholder element so that the original element can be made absolute
      -	createPlaceholder: function( element ) {
      -		var placeholder,
      -			cssPosition = element.css( "position" ),
      -			position = element.position();
      -
      -		// Lock in margins first to account for form elements, which
      -		// will change margin if you explicitly set height
      -		// see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380
      -		// Support: Safari
      -		element.css( {
      -			marginTop: element.css( "marginTop" ),
      -			marginBottom: element.css( "marginBottom" ),
      -			marginLeft: element.css( "marginLeft" ),
      -			marginRight: element.css( "marginRight" )
      -		} )
      -		.outerWidth( element.outerWidth() )
      -		.outerHeight( element.outerHeight() );
      -
      -		if ( /^(static|relative)/.test( cssPosition ) ) {
      -			cssPosition = "absolute";
      -
      -			placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( {
      -
      -				// Convert inline to inline block to account for inline elements
      -				// that turn to inline block based on content (like img)
      -				display: /^(inline|ruby)/.test( element.css( "display" ) ) ?
      -					"inline-block" :
      -					"block",
      -				visibility: "hidden",
      -
      -				// Margins need to be set to account for margin collapse
      -				marginTop: element.css( "marginTop" ),
      -				marginBottom: element.css( "marginBottom" ),
      -				marginLeft: element.css( "marginLeft" ),
      -				marginRight: element.css( "marginRight" ),
      -				"float": element.css( "float" )
      -			} )
      -			.outerWidth( element.outerWidth() )
      -			.outerHeight( element.outerHeight() )
      -			.addClass( "ui-effects-placeholder" );
      -
      -			element.data( dataSpace + "placeholder", placeholder );
      -		}
      -
      -		element.css( {
      -			position: cssPosition,
      -			left: position.left,
      -			top: position.top
      -		} );
      -
      -		return placeholder;
      -	},
      -
      -	removePlaceholder: function( element ) {
      -		var dataKey = dataSpace + "placeholder",
      -				placeholder = element.data( dataKey );
      -
      -		if ( placeholder ) {
      -			placeholder.remove();
      -			element.removeData( dataKey );
      -		}
      -	},
      -
      -	// Removes a placeholder if it exists and restores
      -	// properties that were modified during placeholder creation
      -	cleanUp: function( element ) {
      -		$.effects.restoreStyle( element );
      -		$.effects.removePlaceholder( element );
      -	},
      -
      -	setTransition: function( element, list, factor, value ) {
      -		value = value || {};
      -		$.each( list, function( i, x ) {
      -			var unit = element.cssUnit( x );
      -			if ( unit[ 0 ] > 0 ) {
      -				value[ x ] = unit[ 0 ] * factor + unit[ 1 ];
      -			}
      -		} );
      -		return value;
      -	}
      -} );
      -
      -// Return an effect options object for the given parameters:
      -function _normalizeArguments( effect, options, speed, callback ) {
      -
      -	// Allow passing all options as the first parameter
      -	if ( $.isPlainObject( effect ) ) {
      -		options = effect;
      -		effect = effect.effect;
      -	}
      -
      -	// Convert to an object
      -	effect = { effect: effect };
      -
      -	// Catch (effect, null, ...)
      -	if ( options == null ) {
      -		options = {};
      -	}
      -
      -	// Catch (effect, callback)
      -	if ( $.isFunction( options ) ) {
      -		callback = options;
      -		speed = null;
      -		options = {};
      -	}
      -
      -	// Catch (effect, speed, ?)
      -	if ( typeof options === "number" || $.fx.speeds[ options ] ) {
      -		callback = speed;
      -		speed = options;
      -		options = {};
      -	}
      -
      -	// Catch (effect, options, callback)
      -	if ( $.isFunction( speed ) ) {
      -		callback = speed;
      -		speed = null;
      -	}
      -
      -	// Add options to effect
      -	if ( options ) {
      -		$.extend( effect, options );
      -	}
      -
      -	speed = speed || options.duration;
      -	effect.duration = $.fx.off ? 0 :
      -		typeof speed === "number" ? speed :
      -		speed in $.fx.speeds ? $.fx.speeds[ speed ] :
      -		$.fx.speeds._default;
      -
      -	effect.complete = callback || options.complete;
      -
      -	return effect;
      -}
      -
      -function standardAnimationOption( option ) {
      -
      -	// Valid standard speeds (nothing, number, named speed)
      -	if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) {
      -		return true;
      -	}
      -
      -	// Invalid strings - treat as "normal" speed
      -	if ( typeof option === "string" && !$.effects.effect[ option ] ) {
      -		return true;
      -	}
      -
      -	// Complete callback
      -	if ( $.isFunction( option ) ) {
      -		return true;
      -	}
      -
      -	// Options hash (but not naming an effect)
      -	if ( typeof option === "object" && !option.effect ) {
      -		return true;
      -	}
      -
      -	// Didn't match any standard API
      -	return false;
      -}
      -
      -$.fn.extend( {
      -	effect: function( /* effect, options, speed, callback */ ) {
      -		var args = _normalizeArguments.apply( this, arguments ),
      -			effectMethod = $.effects.effect[ args.effect ],
      -			defaultMode = effectMethod.mode,
      -			queue = args.queue,
      -			queueName = queue || "fx",
      -			complete = args.complete,
      -			mode = args.mode,
      -			modes = [],
      -			prefilter = function( next ) {
      -				var el = $( this ),
      -					normalizedMode = $.effects.mode( el, mode ) || defaultMode;
      -
      -				// Sentinel for duck-punching the :animated psuedo-selector
      -				el.data( dataSpaceAnimated, true );
      -
      -				// Save effect mode for later use,
      -				// we can't just call $.effects.mode again later,
      -				// as the .show() below destroys the initial state
      -				modes.push( normalizedMode );
      -
      -				// See $.uiBackCompat inside of run() for removal of defaultMode in 1.13
      -				if ( defaultMode && ( normalizedMode === "show" ||
      -						( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) {
      -					el.show();
      -				}
      -
      -				if ( !defaultMode || normalizedMode !== "none" ) {
      -					$.effects.saveStyle( el );
      -				}
      -
      -				if ( $.isFunction( next ) ) {
      -					next();
      -				}
      -			};
      -
      -		if ( $.fx.off || !effectMethod ) {
      -
      -			// Delegate to the original method (e.g., .show()) if possible
      -			if ( mode ) {
      -				return this[ mode ]( args.duration, complete );
      -			} else {
      -				return this.each( function() {
      -					if ( complete ) {
      -						complete.call( this );
      -					}
      -				} );
      -			}
      -		}
      -
      -		function run( next ) {
      -			var elem = $( this );
      -
      -			function cleanup() {
      -				elem.removeData( dataSpaceAnimated );
      -
      -				$.effects.cleanUp( elem );
      -
      -				if ( args.mode === "hide" ) {
      -					elem.hide();
      -				}
      -
      -				done();
      -			}
      -
      -			function done() {
      -				if ( $.isFunction( complete ) ) {
      -					complete.call( elem[ 0 ] );
      -				}
      -
      -				if ( $.isFunction( next ) ) {
      -					next();
      -				}
      -			}
      -
      -			// Override mode option on a per element basis,
      -			// as toggle can be either show or hide depending on element state
      -			args.mode = modes.shift();
      -
      -			if ( $.uiBackCompat !== false && !defaultMode ) {
      -				if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) {
      -
      -					// Call the core method to track "olddisplay" properly
      -					elem[ mode ]();
      -					done();
      -				} else {
      -					effectMethod.call( elem[ 0 ], args, done );
      -				}
      -			} else {
      -				if ( args.mode === "none" ) {
      -
      -					// Call the core method to track "olddisplay" properly
      -					elem[ mode ]();
      -					done();
      -				} else {
      -					effectMethod.call( elem[ 0 ], args, cleanup );
      -				}
      -			}
      -		}
      -
      -		// Run prefilter on all elements first to ensure that
      -		// any showing or hiding happens before placeholder creation,
      -		// which ensures that any layout changes are correctly captured.
      -		return queue === false ?
      -			this.each( prefilter ).each( run ) :
      -			this.queue( queueName, prefilter ).queue( queueName, run );
      -	},
      -
      -	show: ( function( orig ) {
      -		return function( option ) {
      -			if ( standardAnimationOption( option ) ) {
      -				return orig.apply( this, arguments );
      -			} else {
      -				var args = _normalizeArguments.apply( this, arguments );
      -				args.mode = "show";
      -				return this.effect.call( this, args );
      -			}
      -		};
      -	} )( $.fn.show ),
      -
      -	hide: ( function( orig ) {
      -		return function( option ) {
      -			if ( standardAnimationOption( option ) ) {
      -				return orig.apply( this, arguments );
      -			} else {
      -				var args = _normalizeArguments.apply( this, arguments );
      -				args.mode = "hide";
      -				return this.effect.call( this, args );
      -			}
      -		};
      -	} )( $.fn.hide ),
      -
      -	toggle: ( function( orig ) {
      -		return function( option ) {
      -			if ( standardAnimationOption( option ) || typeof option === "boolean" ) {
      -				return orig.apply( this, arguments );
      -			} else {
      -				var args = _normalizeArguments.apply( this, arguments );
      -				args.mode = "toggle";
      -				return this.effect.call( this, args );
      -			}
      -		};
      -	} )( $.fn.toggle ),
      -
      -	cssUnit: function( key ) {
      -		var style = this.css( key ),
      -			val = [];
      -
      -		$.each( [ "em", "px", "%", "pt" ], function( i, unit ) {
      -			if ( style.indexOf( unit ) > 0 ) {
      -				val = [ parseFloat( style ), unit ];
      -			}
      -		} );
      -		return val;
      -	},
      -
      -	cssClip: function( clipObj ) {
      -		if ( clipObj ) {
      -			return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " +
      -				clipObj.bottom + "px " + clipObj.left + "px)" );
      -		}
      -		return parseClip( this.css( "clip" ), this );
      -	},
      -
      -	transfer: function( options, done ) {
      -		var element = $( this ),
      -			target = $( options.to ),
      -			targetFixed = target.css( "position" ) === "fixed",
      -			body = $( "body" ),
      -			fixTop = targetFixed ? body.scrollTop() : 0,
      -			fixLeft = targetFixed ? body.scrollLeft() : 0,
      -			endPosition = target.offset(),
      -			animation = {
      -				top: endPosition.top - fixTop,
      -				left: endPosition.left - fixLeft,
      -				height: target.innerHeight(),
      -				width: target.innerWidth()
      -			},
      -			startPosition = element.offset(),
      -			transfer = $( "<div class='ui-effects-transfer'></div>" )
      -				.appendTo( "body" )
      -				.addClass( options.className )
      -				.css( {
      -					top: startPosition.top - fixTop,
      -					left: startPosition.left - fixLeft,
      -					height: element.innerHeight(),
      -					width: element.innerWidth(),
      -					position: targetFixed ? "fixed" : "absolute"
      -				} )
      -				.animate( animation, options.duration, options.easing, function() {
      -					transfer.remove();
      -					if ( $.isFunction( done ) ) {
      -						done();
      -					}
      -				} );
      -	}
      -} );
      -
      -function parseClip( str, element ) {
      -		var outerWidth = element.outerWidth(),
      -			outerHeight = element.outerHeight(),
      -			clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,
      -			values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ];
      -
      -		return {
      -			top: parseFloat( values[ 1 ] ) || 0,
      -			right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ),
      -			bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ),
      -			left: parseFloat( values[ 4 ] ) || 0
      -		};
      -}
      -
      -$.fx.step.clip = function( fx ) {
      -	if ( !fx.clipInit ) {
      -		fx.start = $( fx.elem ).cssClip();
      -		if ( typeof fx.end === "string" ) {
      -			fx.end = parseClip( fx.end, fx.elem );
      -		}
      -		fx.clipInit = true;
      -	}
      -
      -	$( fx.elem ).cssClip( {
      -		top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top,
      -		right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right,
      -		bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom,
      -		left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left
      -	} );
      -};
      -
      -} )();
      -
      -/******************************************************************************/
      -/*********************************** EASING ***********************************/
      -/******************************************************************************/
      -
      -( function() {
      -
      -// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing)
      -
      -var baseEasings = {};
      -
      -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) {
      -	baseEasings[ name ] = function( p ) {
      -		return Math.pow( p, i + 2 );
      -	};
      -} );
      -
      -$.extend( baseEasings, {
      -	Sine: function( p ) {
      -		return 1 - Math.cos( p * Math.PI / 2 );
      -	},
      -	Circ: function( p ) {
      -		return 1 - Math.sqrt( 1 - p * p );
      -	},
      -	Elastic: function( p ) {
      -		return p === 0 || p === 1 ? p :
      -			-Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 );
      -	},
      -	Back: function( p ) {
      -		return p * p * ( 3 * p - 2 );
      -	},
      -	Bounce: function( p ) {
      -		var pow2,
      -			bounce = 4;
      -
      -		while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
      -		return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
      -	}
      -} );
      -
      -$.each( baseEasings, function( name, easeIn ) {
      -	$.easing[ "easeIn" + name ] = easeIn;
      -	$.easing[ "easeOut" + name ] = function( p ) {
      -		return 1 - easeIn( 1 - p );
      -	};
      -	$.easing[ "easeInOut" + name ] = function( p ) {
      -		return p < 0.5 ?
      -			easeIn( p * 2 ) / 2 :
      -			1 - easeIn( p * -2 + 2 ) / 2;
      -	};
      -} );
      -
      -} )();
      -
      -return $.effects;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-blind.js b/bower_components/jquery-ui/ui/effects/effect-blind.js
      deleted file mode 100644
      index 1ec267441a..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-blind.js
      +++ /dev/null
      @@ -1,70 +0,0 @@
      -/*!
      - * jQuery UI Effects Blind 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Blind Effect
      -//>>group: Effects
      -//>>description: Blinds the element.
      -//>>docs: http://api.jqueryui.com/blind-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "blind", "hide", function( options, done ) {
      -	var map = {
      -			up: [ "bottom", "top" ],
      -			vertical: [ "bottom", "top" ],
      -			down: [ "top", "bottom" ],
      -			left: [ "right", "left" ],
      -			horizontal: [ "right", "left" ],
      -			right: [ "left", "right" ]
      -		},
      -		element = $( this ),
      -		direction = options.direction || "up",
      -		start = element.cssClip(),
      -		animate = { clip: $.extend( {}, start ) },
      -		placeholder = $.effects.createPlaceholder( element );
      -
      -	animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ];
      -
      -	if ( options.mode === "show" ) {
      -		element.cssClip( animate.clip );
      -		if ( placeholder ) {
      -			placeholder.css( $.effects.clipToBox( animate ) );
      -		}
      -
      -		animate.clip = start;
      -	}
      -
      -	if ( placeholder ) {
      -		placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing );
      -	}
      -
      -	element.animate( animate, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-bounce.js b/bower_components/jquery-ui/ui/effects/effect-bounce.js
      deleted file mode 100644
      index 1a6304906e..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-bounce.js
      +++ /dev/null
      @@ -1,110 +0,0 @@
      -/*!
      - * jQuery UI Effects Bounce 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Bounce Effect
      -//>>group: Effects
      -//>>description: Bounces an element horizontally or vertically n times.
      -//>>docs: http://api.jqueryui.com/bounce-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "bounce", function( options, done ) {
      -	var upAnim, downAnim, refValue,
      -		element = $( this ),
      -
      -		// Defaults:
      -		mode = options.mode,
      -		hide = mode === "hide",
      -		show = mode === "show",
      -		direction = options.direction || "up",
      -		distance = options.distance,
      -		times = options.times || 5,
      -
      -		// Number of internal animations
      -		anims = times * 2 + ( show || hide ? 1 : 0 ),
      -		speed = options.duration / anims,
      -		easing = options.easing,
      -
      -		// Utility:
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		motion = ( direction === "up" || direction === "left" ),
      -		i = 0,
      -
      -		queuelen = element.queue().length;
      -
      -	$.effects.createPlaceholder( element );
      -
      -	refValue = element.css( ref );
      -
      -	// Default distance for the BIGGEST bounce is the outer Distance / 3
      -	if ( !distance ) {
      -		distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3;
      -	}
      -
      -	if ( show ) {
      -		downAnim = { opacity: 1 };
      -		downAnim[ ref ] = refValue;
      -
      -		// If we are showing, force opacity 0 and set the initial position
      -		// then do the "first" animation
      -		element
      -			.css( "opacity", 0 )
      -			.css( ref, motion ? -distance * 2 : distance * 2 )
      -			.animate( downAnim, speed, easing );
      -	}
      -
      -	// Start at the smallest distance if we are hiding
      -	if ( hide ) {
      -		distance = distance / Math.pow( 2, times - 1 );
      -	}
      -
      -	downAnim = {};
      -	downAnim[ ref ] = refValue;
      -
      -	// Bounces up/down/left/right then back to 0 -- times * 2 animations happen here
      -	for ( ; i < times; i++ ) {
      -		upAnim = {};
      -		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
      -
      -		element
      -			.animate( upAnim, speed, easing )
      -			.animate( downAnim, speed, easing );
      -
      -		distance = hide ? distance * 2 : distance / 2;
      -	}
      -
      -	// Last Bounce when Hiding
      -	if ( hide ) {
      -		upAnim = { opacity: 0 };
      -		upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance;
      -
      -		element.animate( upAnim, speed, easing );
      -	}
      -
      -	element.queue( done );
      -
      -	$.effects.unshift( element, queuelen, anims + 1 );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-clip.js b/bower_components/jquery-ui/ui/effects/effect-clip.js
      deleted file mode 100644
      index 5609fc8617..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-clip.js
      +++ /dev/null
      @@ -1,65 +0,0 @@
      -/*!
      - * jQuery UI Effects Clip 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Clip Effect
      -//>>group: Effects
      -//>>description: Clips the element on and off like an old TV.
      -//>>docs: http://api.jqueryui.com/clip-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "clip", "hide", function( options, done ) {
      -	var start,
      -		animate = {},
      -		element = $( this ),
      -		direction = options.direction || "vertical",
      -		both = direction === "both",
      -		horizontal = both || direction === "horizontal",
      -		vertical = both || direction === "vertical";
      -
      -	start = element.cssClip();
      -	animate.clip = {
      -		top: vertical ? ( start.bottom - start.top ) / 2 : start.top,
      -		right: horizontal ? ( start.right - start.left ) / 2 : start.right,
      -		bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom,
      -		left: horizontal ? ( start.right - start.left ) / 2 : start.left
      -	};
      -
      -	$.effects.createPlaceholder( element );
      -
      -	if ( options.mode === "show" ) {
      -		element.cssClip( animate.clip );
      -		animate.clip = start;
      -	}
      -
      -	element.animate( animate, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-drop.js b/bower_components/jquery-ui/ui/effects/effect-drop.js
      deleted file mode 100644
      index 428d49bd8c..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-drop.js
      +++ /dev/null
      @@ -1,69 +0,0 @@
      -/*!
      - * jQuery UI Effects Drop 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Drop Effect
      -//>>group: Effects
      -//>>description: Moves an element in one direction and hides it at the same time.
      -//>>docs: http://api.jqueryui.com/drop-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "drop", "hide", function( options, done ) {
      -
      -	var distance,
      -		element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -		direction = options.direction || "left",
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=",
      -		oppositeMotion = ( motion === "+=" ) ? "-=" : "+=",
      -		animation = {
      -			opacity: 0
      -		};
      -
      -	$.effects.createPlaceholder( element );
      -
      -	distance = options.distance ||
      -		element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2;
      -
      -	animation[ ref ] = motion + distance;
      -
      -	if ( show ) {
      -		element.css( animation );
      -
      -		animation[ ref ] = oppositeMotion + distance;
      -		animation.opacity = 1;
      -	}
      -
      -	// Animate
      -	element.animate( animation, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-explode.js b/bower_components/jquery-ui/ui/effects/effect-explode.js
      deleted file mode 100644
      index 18f892fc42..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-explode.js
      +++ /dev/null
      @@ -1,111 +0,0 @@
      -/*!
      - * jQuery UI Effects Explode 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Explode Effect
      -//>>group: Effects
      -// jscs:disable maximumLineLength
      -//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/explode-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "explode", "hide", function( options, done ) {
      -
      -	var i, j, left, top, mx, my,
      -		rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3,
      -		cells = rows,
      -		element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -
      -		// Show and then visibility:hidden the element before calculating offset
      -		offset = element.show().css( "visibility", "hidden" ).offset(),
      -
      -		// Width and height of a piece
      -		width = Math.ceil( element.outerWidth() / cells ),
      -		height = Math.ceil( element.outerHeight() / rows ),
      -		pieces = [];
      -
      -	// Children animate complete:
      -	function childComplete() {
      -		pieces.push( this );
      -		if ( pieces.length === rows * cells ) {
      -			animComplete();
      -		}
      -	}
      -
      -	// Clone the element for each row and cell.
      -	for ( i = 0; i < rows; i++ ) { // ===>
      -		top = offset.top + i * height;
      -		my = i - ( rows - 1 ) / 2;
      -
      -		for ( j = 0; j < cells; j++ ) { // |||
      -			left = offset.left + j * width;
      -			mx = j - ( cells - 1 ) / 2;
      -
      -			// Create a clone of the now hidden main element that will be absolute positioned
      -			// within a wrapper div off the -left and -top equal to size of our pieces
      -			element
      -				.clone()
      -				.appendTo( "body" )
      -				.wrap( "<div></div>" )
      -				.css( {
      -					position: "absolute",
      -					visibility: "visible",
      -					left: -j * width,
      -					top: -i * height
      -				} )
      -
      -				// Select the wrapper - make it overflow: hidden and absolute positioned based on
      -				// where the original was located +left and +top equal to the size of pieces
      -				.parent()
      -					.addClass( "ui-effects-explode" )
      -					.css( {
      -						position: "absolute",
      -						overflow: "hidden",
      -						width: width,
      -						height: height,
      -						left: left + ( show ? mx * width : 0 ),
      -						top: top + ( show ? my * height : 0 ),
      -						opacity: show ? 0 : 1
      -					} )
      -					.animate( {
      -						left: left + ( show ? 0 : mx * width ),
      -						top: top + ( show ? 0 : my * height ),
      -						opacity: show ? 1 : 0
      -					}, options.duration || 500, options.easing, childComplete );
      -		}
      -	}
      -
      -	function animComplete() {
      -		element.css( {
      -			visibility: "visible"
      -		} );
      -		$( pieces ).remove();
      -		done();
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-fade.js b/bower_components/jquery-ui/ui/effects/effect-fade.js
      deleted file mode 100644
      index 9bc29f7a64..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-fade.js
      +++ /dev/null
      @@ -1,47 +0,0 @@
      -/*!
      - * jQuery UI Effects Fade 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Fade Effect
      -//>>group: Effects
      -//>>description: Fades the element.
      -//>>docs: http://api.jqueryui.com/fade-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "fade", "toggle", function( options, done ) {
      -	var show = options.mode === "show";
      -
      -	$( this )
      -		.css( "opacity", show ? 0 : 1 )
      -		.animate( {
      -			opacity: show ? 1 : 0
      -		}, {
      -			queue: false,
      -			duration: options.duration,
      -			easing: options.easing,
      -			complete: done
      -		} );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-fold.js b/bower_components/jquery-ui/ui/effects/effect-fold.js
      deleted file mode 100644
      index ccfd67a558..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-fold.js
      +++ /dev/null
      @@ -1,89 +0,0 @@
      -/*!
      - * jQuery UI Effects Fold 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Fold Effect
      -//>>group: Effects
      -//>>description: Folds an element first horizontally and then vertically.
      -//>>docs: http://api.jqueryui.com/fold-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "fold", "hide", function( options, done ) {
      -
      -	// Create element
      -	var element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -		hide = mode === "hide",
      -		size = options.size || 15,
      -		percent = /([0-9]+)%/.exec( size ),
      -		horizFirst = !!options.horizFirst,
      -		ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ],
      -		duration = options.duration / 2,
      -
      -		placeholder = $.effects.createPlaceholder( element ),
      -
      -		start = element.cssClip(),
      -		animation1 = { clip: $.extend( {}, start ) },
      -		animation2 = { clip: $.extend( {}, start ) },
      -
      -		distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ],
      -
      -		queuelen = element.queue().length;
      -
      -	if ( percent ) {
      -		size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ];
      -	}
      -	animation1.clip[ ref[ 0 ] ] = size;
      -	animation2.clip[ ref[ 0 ] ] = size;
      -	animation2.clip[ ref[ 1 ] ] = 0;
      -
      -	if ( show ) {
      -		element.cssClip( animation2.clip );
      -		if ( placeholder ) {
      -			placeholder.css( $.effects.clipToBox( animation2 ) );
      -		}
      -
      -		animation2.clip = start;
      -	}
      -
      -	// Animate
      -	element
      -		.queue( function( next ) {
      -			if ( placeholder ) {
      -				placeholder
      -					.animate( $.effects.clipToBox( animation1 ), duration, options.easing )
      -					.animate( $.effects.clipToBox( animation2 ), duration, options.easing );
      -			}
      -
      -			next();
      -		} )
      -		.animate( animation1, duration, options.easing )
      -		.animate( animation2, duration, options.easing )
      -		.queue( done );
      -
      -	$.effects.unshift( element, queuelen, 4 );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-highlight.js b/bower_components/jquery-ui/ui/effects/effect-highlight.js
      deleted file mode 100644
      index 546e471466..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-highlight.js
      +++ /dev/null
      @@ -1,57 +0,0 @@
      -/*!
      - * jQuery UI Effects Highlight 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Highlight Effect
      -//>>group: Effects
      -//>>description: Highlights the background of an element in a defined color for a custom duration.
      -//>>docs: http://api.jqueryui.com/highlight-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "highlight", "show", function( options, done ) {
      -	var element = $( this ),
      -		animation = {
      -			backgroundColor: element.css( "backgroundColor" )
      -		};
      -
      -	if ( options.mode === "hide" ) {
      -		animation.opacity = 0;
      -	}
      -
      -	$.effects.saveStyle( element );
      -
      -	element
      -		.css( {
      -			backgroundImage: "none",
      -			backgroundColor: options.color || "#ffff99"
      -		} )
      -		.animate( animation, {
      -			queue: false,
      -			duration: options.duration,
      -			easing: options.easing,
      -			complete: done
      -		} );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-puff.js b/bower_components/jquery-ui/ui/effects/effect-puff.js
      deleted file mode 100644
      index f5e0910cfd..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-puff.js
      +++ /dev/null
      @@ -1,42 +0,0 @@
      -/*!
      - * jQuery UI Effects Puff 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Puff Effect
      -//>>group: Effects
      -//>>description: Creates a puff effect by scaling the element up and hiding it at the same time.
      -//>>docs: http://api.jqueryui.com/puff-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect",
      -			"./effect-scale"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "puff", "hide", function( options, done ) {
      -	var newOptions = $.extend( true, {}, options, {
      -		fade: true,
      -		percent: parseInt( options.percent, 10 ) || 150
      -	} );
      -
      -	$.effects.effect.scale.call( this, newOptions, done );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-pulsate.js b/bower_components/jquery-ui/ui/effects/effect-pulsate.js
      deleted file mode 100644
      index 8d6826f9f0..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-pulsate.js
      +++ /dev/null
      @@ -1,64 +0,0 @@
      -/*!
      - * jQuery UI Effects Pulsate 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Pulsate Effect
      -//>>group: Effects
      -//>>description: Pulsates an element n times by changing the opacity to zero and back.
      -//>>docs: http://api.jqueryui.com/pulsate-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "pulsate", "show", function( options, done ) {
      -	var element = $( this ),
      -		mode = options.mode,
      -		show = mode === "show",
      -		hide = mode === "hide",
      -		showhide = show || hide,
      -
      -		// Showing or hiding leaves off the "last" animation
      -		anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ),
      -		duration = options.duration / anims,
      -		animateTo = 0,
      -		i = 1,
      -		queuelen = element.queue().length;
      -
      -	if ( show || !element.is( ":visible" ) ) {
      -		element.css( "opacity", 0 ).show();
      -		animateTo = 1;
      -	}
      -
      -	// Anims - 1 opacity "toggles"
      -	for ( ; i < anims; i++ ) {
      -		element.animate( { opacity: animateTo }, duration, options.easing );
      -		animateTo = 1 - animateTo;
      -	}
      -
      -	element.animate( { opacity: animateTo }, duration, options.easing );
      -
      -	element.queue( done );
      -
      -	$.effects.unshift( element, queuelen, anims + 1 );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-scale.js b/bower_components/jquery-ui/ui/effects/effect-scale.js
      deleted file mode 100644
      index 477d8c8ba1..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-scale.js
      +++ /dev/null
      @@ -1,56 +0,0 @@
      -/*!
      - * jQuery UI Effects Scale 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Scale Effect
      -//>>group: Effects
      -//>>description: Grows or shrinks an element and its content.
      -//>>docs: http://api.jqueryui.com/scale-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect",
      -			"./effect-size"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "scale", function( options, done ) {
      -
      -	// Create element
      -	var el = $( this ),
      -		mode = options.mode,
      -		percent = parseInt( options.percent, 10 ) ||
      -			( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ),
      -
      -		newOptions = $.extend( true, {
      -			from: $.effects.scaledDimensions( el ),
      -			to: $.effects.scaledDimensions( el, percent, options.direction || "both" ),
      -			origin: options.origin || [ "middle", "center" ]
      -		}, options );
      -
      -	// Fade option to support puff
      -	if ( options.fade ) {
      -		newOptions.from.opacity = 1;
      -		newOptions.to.opacity = 0;
      -	}
      -
      -	$.effects.effect.size.call( this, newOptions, done );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-shake.js b/bower_components/jquery-ui/ui/effects/effect-shake.js
      deleted file mode 100644
      index 37c0089bae..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-shake.js
      +++ /dev/null
      @@ -1,74 +0,0 @@
      -/*!
      - * jQuery UI Effects Shake 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Shake Effect
      -//>>group: Effects
      -//>>description: Shakes an element horizontally or vertically n times.
      -//>>docs: http://api.jqueryui.com/shake-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "shake", function( options, done ) {
      -
      -	var i = 1,
      -		element = $( this ),
      -		direction = options.direction || "left",
      -		distance = options.distance || 20,
      -		times = options.times || 3,
      -		anims = times * 2 + 1,
      -		speed = Math.round( options.duration / anims ),
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		positiveMotion = ( direction === "up" || direction === "left" ),
      -		animation = {},
      -		animation1 = {},
      -		animation2 = {},
      -
      -		queuelen = element.queue().length;
      -
      -	$.effects.createPlaceholder( element );
      -
      -	// Animation
      -	animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance;
      -	animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2;
      -	animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2;
      -
      -	// Animate
      -	element.animate( animation, speed, options.easing );
      -
      -	// Shakes
      -	for ( ; i < times; i++ ) {
      -		element
      -			.animate( animation1, speed, options.easing )
      -			.animate( animation2, speed, options.easing );
      -	}
      -
      -	element
      -		.animate( animation1, speed, options.easing )
      -		.animate( animation, speed / 2, options.easing )
      -		.queue( done );
      -
      -	$.effects.unshift( element, queuelen, anims + 1 );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-size.js b/bower_components/jquery-ui/ui/effects/effect-size.js
      deleted file mode 100644
      index 5cb26016d8..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-size.js
      +++ /dev/null
      @@ -1,191 +0,0 @@
      -/*!
      - * jQuery UI Effects Size 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Size Effect
      -//>>group: Effects
      -//>>description: Resize an element to a specified width and height.
      -//>>docs: http://api.jqueryui.com/size-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "size", function( options, done ) {
      -
      -	// Create element
      -	var baseline, factor, temp,
      -		element = $( this ),
      -
      -		// Copy for children
      -		cProps = [ "fontSize" ],
      -		vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ],
      -		hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ],
      -
      -		// Set options
      -		mode = options.mode,
      -		restore = mode !== "effect",
      -		scale = options.scale || "both",
      -		origin = options.origin || [ "middle", "center" ],
      -		position = element.css( "position" ),
      -		pos = element.position(),
      -		original = $.effects.scaledDimensions( element ),
      -		from = options.from || original,
      -		to = options.to || $.effects.scaledDimensions( element, 0 );
      -
      -	$.effects.createPlaceholder( element );
      -
      -	if ( mode === "show" ) {
      -		temp = from;
      -		from = to;
      -		to = temp;
      -	}
      -
      -	// Set scaling factor
      -	factor = {
      -		from: {
      -			y: from.height / original.height,
      -			x: from.width / original.width
      -		},
      -		to: {
      -			y: to.height / original.height,
      -			x: to.width / original.width
      -		}
      -	};
      -
      -	// Scale the css box
      -	if ( scale === "box" || scale === "both" ) {
      -
      -		// Vertical props scaling
      -		if ( factor.from.y !== factor.to.y ) {
      -			from = $.effects.setTransition( element, vProps, factor.from.y, from );
      -			to = $.effects.setTransition( element, vProps, factor.to.y, to );
      -		}
      -
      -		// Horizontal props scaling
      -		if ( factor.from.x !== factor.to.x ) {
      -			from = $.effects.setTransition( element, hProps, factor.from.x, from );
      -			to = $.effects.setTransition( element, hProps, factor.to.x, to );
      -		}
      -	}
      -
      -	// Scale the content
      -	if ( scale === "content" || scale === "both" ) {
      -
      -		// Vertical props scaling
      -		if ( factor.from.y !== factor.to.y ) {
      -			from = $.effects.setTransition( element, cProps, factor.from.y, from );
      -			to = $.effects.setTransition( element, cProps, factor.to.y, to );
      -		}
      -	}
      -
      -	// Adjust the position properties based on the provided origin points
      -	if ( origin ) {
      -		baseline = $.effects.getBaseline( origin, original );
      -		from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top;
      -		from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left;
      -		to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top;
      -		to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left;
      -	}
      -	element.css( from );
      -
      -	// Animate the children if desired
      -	if ( scale === "content" || scale === "both" ) {
      -
      -		vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps );
      -		hProps = hProps.concat( [ "marginLeft", "marginRight" ] );
      -
      -		// Only animate children with width attributes specified
      -		// TODO: is this right? should we include anything with css width specified as well
      -		element.find( "*[width]" ).each( function() {
      -			var child = $( this ),
      -				childOriginal = $.effects.scaledDimensions( child ),
      -				childFrom = {
      -					height: childOriginal.height * factor.from.y,
      -					width: childOriginal.width * factor.from.x,
      -					outerHeight: childOriginal.outerHeight * factor.from.y,
      -					outerWidth: childOriginal.outerWidth * factor.from.x
      -				},
      -				childTo = {
      -					height: childOriginal.height * factor.to.y,
      -					width: childOriginal.width * factor.to.x,
      -					outerHeight: childOriginal.height * factor.to.y,
      -					outerWidth: childOriginal.width * factor.to.x
      -				};
      -
      -			// Vertical props scaling
      -			if ( factor.from.y !== factor.to.y ) {
      -				childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom );
      -				childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo );
      -			}
      -
      -			// Horizontal props scaling
      -			if ( factor.from.x !== factor.to.x ) {
      -				childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom );
      -				childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo );
      -			}
      -
      -			if ( restore ) {
      -				$.effects.saveStyle( child );
      -			}
      -
      -			// Animate children
      -			child.css( childFrom );
      -			child.animate( childTo, options.duration, options.easing, function() {
      -
      -				// Restore children
      -				if ( restore ) {
      -					$.effects.restoreStyle( child );
      -				}
      -			} );
      -		} );
      -	}
      -
      -	// Animate
      -	element.animate( to, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: function() {
      -
      -			var offset = element.offset();
      -
      -			if ( to.opacity === 0 ) {
      -				element.css( "opacity", from.opacity );
      -			}
      -
      -			if ( !restore ) {
      -				element
      -					.css( "position", position === "static" ? "relative" : position )
      -					.offset( offset );
      -
      -				// Need to save style here so that automatic style restoration
      -				// doesn't restore to the original styles from before the animation.
      -				$.effects.saveStyle( element );
      -			}
      -
      -			done();
      -		}
      -	} );
      -
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-slide.js b/bower_components/jquery-ui/ui/effects/effect-slide.js
      deleted file mode 100644
      index 84f2893182..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-slide.js
      +++ /dev/null
      @@ -1,76 +0,0 @@
      -/*!
      - * jQuery UI Effects Slide 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Slide Effect
      -//>>group: Effects
      -//>>description: Slides an element in and out of the viewport.
      -//>>docs: http://api.jqueryui.com/slide-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.effects.define( "slide", "show", function( options, done ) {
      -	var startClip, startRef,
      -		element = $( this ),
      -		map = {
      -			up: [ "bottom", "top" ],
      -			down: [ "top", "bottom" ],
      -			left: [ "right", "left" ],
      -			right: [ "left", "right" ]
      -		},
      -		mode = options.mode,
      -		direction = options.direction || "left",
      -		ref = ( direction === "up" || direction === "down" ) ? "top" : "left",
      -		positiveMotion = ( direction === "up" || direction === "left" ),
      -		distance = options.distance ||
      -			element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ),
      -		animation = {};
      -
      -	$.effects.createPlaceholder( element );
      -
      -	startClip = element.cssClip();
      -	startRef = element.position()[ ref ];
      -
      -	// Define hide animation
      -	animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef;
      -	animation.clip = element.cssClip();
      -	animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ];
      -
      -	// Reverse the animation if we're showing
      -	if ( mode === "show" ) {
      -		element.cssClip( animation.clip );
      -		element.css( ref, animation[ ref ] );
      -		animation.clip = startClip;
      -		animation[ ref ] = startRef;
      -	}
      -
      -	// Actually animate
      -	element.animate( animation, {
      -		queue: false,
      -		duration: options.duration,
      -		easing: options.easing,
      -		complete: done
      -	} );
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/effects/effect-transfer.js b/bower_components/jquery-ui/ui/effects/effect-transfer.js
      deleted file mode 100644
      index dffcdab420..0000000000
      --- a/bower_components/jquery-ui/ui/effects/effect-transfer.js
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -/*!
      - * jQuery UI Effects Transfer 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Transfer Effect
      -//>>group: Effects
      -//>>description: Displays a transfer effect from one element to another.
      -//>>docs: http://api.jqueryui.com/transfer-effect/
      -//>>demos: http://jqueryui.com/effect/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../effect"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -var effect;
      -if ( $.uiBackCompat !== false ) {
      -	effect = $.effects.define( "transfer", function( options, done ) {
      -		$( this ).transfer( options, done );
      -	} );
      -}
      -return effect;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/escape-selector.js b/bower_components/jquery-ui/ui/escape-selector.js
      deleted file mode 100644
      index d43e4f8166..0000000000
      --- a/bower_components/jquery-ui/ui/escape-selector.js
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -// Internal use only
      -return $.ui.escapeSelector = ( function() {
      -	var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;
      -	return function( selector ) {
      -		return selector.replace( selectorEscape, "\\$1" );
      -	};
      -} )();
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/focusable.js b/bower_components/jquery-ui/ui/focusable.js
      deleted file mode 100644
      index 44992890d3..0000000000
      --- a/bower_components/jquery-ui/ui/focusable.js
      +++ /dev/null
      @@ -1,84 +0,0 @@
      -/*!
      - * jQuery UI Focusable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: :focusable Selector
      -//>>group: Core
      -//>>description: Selects elements which can be focused.
      -//>>docs: http://api.jqueryui.com/focusable-selector/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -// Selectors
      -$.ui.focusable = function( element, hasTabindex ) {
      -	var map, mapName, img, focusableIfVisible, fieldset,
      -		nodeName = element.nodeName.toLowerCase();
      -
      -	if ( "area" === nodeName ) {
      -		map = element.parentNode;
      -		mapName = map.name;
      -		if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
      -			return false;
      -		}
      -		img = $( "img[usemap='#" + mapName + "']" );
      -		return img.length > 0 && img.is( ":visible" );
      -	}
      -
      -	if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) {
      -		focusableIfVisible = !element.disabled;
      -
      -		if ( focusableIfVisible ) {
      -
      -			// Form controls within a disabled fieldset are disabled.
      -			// However, controls within the fieldset's legend do not get disabled.
      -			// Since controls generally aren't placed inside legends, we skip
      -			// this portion of the check.
      -			fieldset = $( element ).closest( "fieldset" )[ 0 ];
      -			if ( fieldset ) {
      -				focusableIfVisible = !fieldset.disabled;
      -			}
      -		}
      -	} else if ( "a" === nodeName ) {
      -		focusableIfVisible = element.href || hasTabindex;
      -	} else {
      -		focusableIfVisible = hasTabindex;
      -	}
      -
      -	return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) );
      -};
      -
      -// Support: IE 8 only
      -// IE 8 doesn't resolve inherit to visible/hidden for computed values
      -function visible( element ) {
      -	var visibility = element.css( "visibility" );
      -	while ( visibility === "inherit" ) {
      -		element = element.parent();
      -		visibility = element.css( "visibility" );
      -	}
      -	return visibility !== "hidden";
      -}
      -
      -$.extend( $.expr[ ":" ], {
      -	focusable: function( element ) {
      -		return $.ui.focusable( element, $.attr( element, "tabindex" ) != null );
      -	}
      -} );
      -
      -return $.ui.focusable;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/form-reset-mixin.js b/bower_components/jquery-ui/ui/form-reset-mixin.js
      deleted file mode 100644
      index 74be1d5b9a..0000000000
      --- a/bower_components/jquery-ui/ui/form-reset-mixin.js
      +++ /dev/null
      @@ -1,77 +0,0 @@
      -/*!
      - * jQuery UI Form Reset Mixin 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Form Reset Mixin
      -//>>group: Core
      -//>>description: Refresh input widgets when their form is reset
      -//>>docs: http://api.jqueryui.com/form-reset-mixin/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./form",
      -			"./version"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.ui.formResetMixin = {
      -	_formResetHandler: function() {
      -		var form = $( this );
      -
      -		// Wait for the form reset to actually happen before refreshing
      -		setTimeout( function() {
      -			var instances = form.data( "ui-form-reset-instances" );
      -			$.each( instances, function() {
      -				this.refresh();
      -			} );
      -		} );
      -	},
      -
      -	_bindFormResetHandler: function() {
      -		this.form = this.element.form();
      -		if ( !this.form.length ) {
      -			return;
      -		}
      -
      -		var instances = this.form.data( "ui-form-reset-instances" ) || [];
      -		if ( !instances.length ) {
      -
      -			// We don't use _on() here because we use a single event handler per form
      -			this.form.on( "reset.ui-form-reset", this._formResetHandler );
      -		}
      -		instances.push( this );
      -		this.form.data( "ui-form-reset-instances", instances );
      -	},
      -
      -	_unbindFormResetHandler: function() {
      -		if ( !this.form.length ) {
      -			return;
      -		}
      -
      -		var instances = this.form.data( "ui-form-reset-instances" );
      -		instances.splice( $.inArray( this, instances ), 1 );
      -		if ( instances.length ) {
      -			this.form.data( "ui-form-reset-instances", instances );
      -		} else {
      -			this.form
      -				.removeData( "ui-form-reset-instances" )
      -				.off( "reset.ui-form-reset" );
      -		}
      -	}
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/form.js b/bower_components/jquery-ui/ui/form.js
      deleted file mode 100644
      index cfb4bd280d..0000000000
      --- a/bower_components/jquery-ui/ui/form.js
      +++ /dev/null
      @@ -1,20 +0,0 @@
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -// Support: IE8 Only
      -// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop
      -// with a string, so we need to find the proper form.
      -return $.fn.form = function() {
      -	return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form );
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-af.js b/bower_components/jquery-ui/ui/i18n/datepicker-af.js
      deleted file mode 100644
      index c756888846..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-af.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Afrikaans initialisation for the jQuery UI date picker plugin. */
      -/* Written by Renier Pretorius. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.af = {
      -	closeText: "Selekteer",
      -	prevText: "Vorige",
      -	nextText: "Volgende",
      -	currentText: "Vandag",
      -	monthNames: [ "Januarie","Februarie","Maart","April","Mei","Junie",
      -	"Julie","Augustus","September","Oktober","November","Desember" ],
      -	monthNamesShort: [ "Jan", "Feb", "Mrt", "Apr", "Mei", "Jun",
      -	"Jul", "Aug", "Sep", "Okt", "Nov", "Des" ],
      -	dayNames: [ "Sondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrydag", "Saterdag" ],
      -	dayNamesShort: [ "Son", "Maa", "Din", "Woe", "Don", "Vry", "Sat" ],
      -	dayNamesMin: [ "So","Ma","Di","Wo","Do","Vr","Sa" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.af );
      -
      -return datepicker.regional.af;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ar-DZ.js b/bower_components/jquery-ui/ui/i18n/datepicker-ar-DZ.js
      deleted file mode 100644
      index a2b1750b66..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ar-DZ.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -/* Algerian Arabic Translation for jQuery UI date picker plugin.
      -/* Used in most of Maghreb countries, primarily in Algeria, Tunisia, Morocco.
      -/* Mohamed Cherif BOUCHELAGHEM -- cherifbouchelaghem@yahoo.fr */
      -/* Mohamed Amine HADDAD -- zatamine@gmail.com */
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "ar-DZ" ] = {
      -	closeText: "إغلاق",
      -	prevText: "&#x3C;السابق",
      -	nextText: "التالي&#x3E;",
      -	currentText: "اليوم",
      -	monthNames: [ "جانفي", "فيفري", "مارس", "أفريل", "ماي", "جوان",
      -	"جويلية", "أوت", "سبتمبر","أكتوبر", "نوفمبر", "ديسمبر" ],
      -	monthNamesShort: [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ],
      -	dayNames: [ "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" ],
      -	dayNamesShort: [ "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" ],
      -	dayNamesMin: [ "ح", "ن", "ث", "ر", "خ", "ج", "س" ],
      -	weekHeader: "أسبوع",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 6,
      -		isRTL: true,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "ar-DZ" ] );
      -
      -return datepicker.regional[ "ar-DZ" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ar.js b/bower_components/jquery-ui/ui/i18n/datepicker-ar.js
      deleted file mode 100644
      index 95784e88cf..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ar.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -/* Arabic Translation for jQuery UI date picker plugin. */
      -/* Used in most of Arab countries, primarily in Bahrain, */
      -/* Kuwait, Oman, Qatar, Saudi Arabia and the United Arab Emirates, Egypt, Sudan and Yemen. */
      -/* Written by Mohammed Alshehri -- m@dralshehri.com */
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ar = {
      -	closeText: "إغلاق",
      -	prevText: "&#x3C;السابق",
      -	nextText: "التالي&#x3E;",
      -	currentText: "اليوم",
      -	monthNames: [ "يناير", "فبراير", "مارس", "أبريل", "مايو", "يونيو",
      -	"يوليو", "أغسطس", "سبتمبر", "أكتوبر", "نوفمبر", "ديسمبر" ],
      -	monthNamesShort: [ "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12" ],
      -	dayNames: [ "الأحد", "الاثنين", "الثلاثاء", "الأربعاء", "الخميس", "الجمعة", "السبت" ],
      -	dayNamesShort: [ "أحد", "اثنين", "ثلاثاء", "أربعاء", "خميس", "جمعة", "سبت" ],
      -	dayNamesMin: [ "ح", "ن", "ث", "ر", "خ", "ج", "س" ],
      -	weekHeader: "أسبوع",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -		isRTL: true,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ar );
      -
      -return datepicker.regional.ar;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-az.js b/bower_components/jquery-ui/ui/i18n/datepicker-az.js
      deleted file mode 100644
      index 2ebdcfa8b5..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-az.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Azerbaijani (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Jamil Najafov (necefov33@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.az = {
      -	closeText: "Bağla",
      -	prevText: "&#x3C;Geri",
      -	nextText: "İrəli&#x3E;",
      -	currentText: "Bugün",
      -	monthNames: [ "Yanvar","Fevral","Mart","Aprel","May","İyun",
      -	"İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr" ],
      -	monthNamesShort: [ "Yan","Fev","Mar","Apr","May","İyun",
      -	"İyul","Avq","Sen","Okt","Noy","Dek" ],
      -	dayNames: [ "Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə" ],
      -	dayNamesShort: [ "B","Be","Ça","Ç","Ca","C","Ş" ],
      -	dayNamesMin: [ "B","B","Ç","С","Ç","C","Ş" ],
      -	weekHeader: "Hf",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.az );
      -
      -return datepicker.regional.az;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-be.js b/bower_components/jquery-ui/ui/i18n/datepicker-be.js
      deleted file mode 100644
      index 7d96dd1da6..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-be.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Belarusian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Pavel Selitskas <p.selitskas@gmail.com> */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.be = {
      -	closeText: "Зачыніць",
      -	prevText: "&larr;Папяр.",
      -	nextText: "Наст.&rarr;",
      -	currentText: "Сёньня",
      -	monthNames: [ "Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень",
      -	"Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань" ],
      -	monthNamesShort: [ "Сту","Лют","Сак","Кра","Тра","Чэр",
      -	"Ліп","Жні","Вер","Кас","Ліс","Сьн" ],
      -	dayNames: [ "нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота" ],
      -	dayNamesShort: [ "ндз","пнд","аўт","срд","чцв","птн","сбт" ],
      -	dayNamesMin: [ "Нд","Пн","Аў","Ср","Чц","Пт","Сб" ],
      -	weekHeader: "Тд",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.be );
      -
      -return datepicker.regional.be;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-bg.js b/bower_components/jquery-ui/ui/i18n/datepicker-bg.js
      deleted file mode 100644
      index cb066a4c9d..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-bg.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -/* Bulgarian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Stoyan Kyosev (http://svest.org). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.bg = {
      -	closeText: "затвори",
      -	prevText: "&#x3C;назад",
      -	nextText: "напред&#x3E;",
      -	nextBigText: "&#x3E;&#x3E;",
      -	currentText: "днес",
      -	monthNames: [ "Януари","Февруари","Март","Април","Май","Юни",
      -	"Юли","Август","Септември","Октомври","Ноември","Декември" ],
      -	monthNamesShort: [ "Яну","Фев","Мар","Апр","Май","Юни",
      -	"Юли","Авг","Сеп","Окт","Нов","Дек" ],
      -	dayNames: [ "Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота" ],
      -	dayNamesShort: [ "Нед","Пон","Вто","Сря","Чет","Пет","Съб" ],
      -	dayNamesMin: [ "Не","По","Вт","Ср","Че","Пе","Съ" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.bg );
      -
      -return datepicker.regional.bg;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-bs.js b/bower_components/jquery-ui/ui/i18n/datepicker-bs.js
      deleted file mode 100644
      index b9f2e28691..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-bs.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Bosnian i18n for the jQuery UI date picker plugin. */
      -/* Written by Kenan Konjo. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.bs = {
      -	closeText: "Zatvori",
      -	prevText: "&#x3C;",
      -	nextText: "&#x3E;",
      -	currentText: "Danas",
      -	monthNames: [ "Januar","Februar","Mart","April","Maj","Juni",
      -	"Juli","August","Septembar","Oktobar","Novembar","Decembar" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun",
      -	"Jul","Aug","Sep","Okt","Nov","Dec" ],
      -	dayNames: [ "Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota" ],
      -	dayNamesShort: [ "Ned","Pon","Uto","Sri","Čet","Pet","Sub" ],
      -	dayNamesMin: [ "Ne","Po","Ut","Sr","Če","Pe","Su" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.bs );
      -
      -return datepicker.regional.bs;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ca.js b/bower_components/jquery-ui/ui/i18n/datepicker-ca.js
      deleted file mode 100644
      index 9febd90eef..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ca.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Inicialització en català per a l'extensió 'UI date picker' per jQuery. */
      -/* Writers: (joan.leon@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ca = {
      -	closeText: "Tanca",
      -	prevText: "Anterior",
      -	nextText: "Següent",
      -	currentText: "Avui",
      -	monthNames: [ "gener","febrer","març","abril","maig","juny",
      -	"juliol","agost","setembre","octubre","novembre","desembre" ],
      -	monthNamesShort: [ "gen","feb","març","abr","maig","juny",
      -	"jul","ag","set","oct","nov","des" ],
      -	dayNames: [ "diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte" ],
      -	dayNamesShort: [ "dg","dl","dt","dc","dj","dv","ds" ],
      -	dayNamesMin: [ "dg","dl","dt","dc","dj","dv","ds" ],
      -	weekHeader: "Set",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ca );
      -
      -return datepicker.regional.ca;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-cs.js b/bower_components/jquery-ui/ui/i18n/datepicker-cs.js
      deleted file mode 100644
      index c2f79cf9e4..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-cs.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Czech initialisation for the jQuery UI date picker plugin. */
      -/* Written by Tomas Muller (tomas@tomas-muller.net). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.cs = {
      -	closeText: "Zavřít",
      -	prevText: "&#x3C;Dříve",
      -	nextText: "Později&#x3E;",
      -	currentText: "Nyní",
      -	monthNames: [ "leden","únor","březen","duben","květen","červen",
      -	"červenec","srpen","září","říjen","listopad","prosinec" ],
      -	monthNamesShort: [ "led","úno","bře","dub","kvě","čer",
      -	"čvc","srp","zář","říj","lis","pro" ],
      -	dayNames: [ "neděle", "pondělí", "úterý", "středa", "čtvrtek", "pátek", "sobota" ],
      -	dayNamesShort: [ "ne", "po", "út", "st", "čt", "pá", "so" ],
      -	dayNamesMin: [ "ne","po","út","st","čt","pá","so" ],
      -	weekHeader: "Týd",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.cs );
      -
      -return datepicker.regional.cs;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-cy-GB.js b/bower_components/jquery-ui/ui/i18n/datepicker-cy-GB.js
      deleted file mode 100644
      index 14fce914c3..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-cy-GB.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Welsh/UK initialisation for the jQuery UI date picker plugin. */
      -/* Written by William Griffiths. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "cy-GB" ] = {
      -	closeText: "Done",
      -	prevText: "Prev",
      -	nextText: "Next",
      -	currentText: "Today",
      -	monthNames: [ "Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin",
      -	"Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr" ],
      -	monthNamesShort: [ "Ion", "Chw", "Maw", "Ebr", "Mai", "Meh",
      -	"Gor", "Aws", "Med", "Hyd", "Tac", "Rha" ],
      -	dayNames: [
      -		"Dydd Sul",
      -		"Dydd Llun",
      -		"Dydd Mawrth",
      -		"Dydd Mercher",
      -		"Dydd Iau",
      -		"Dydd Gwener",
      -		"Dydd Sadwrn"
      -	],
      -	dayNamesShort: [ "Sul", "Llu", "Maw", "Mer", "Iau", "Gwe", "Sad" ],
      -	dayNamesMin: [ "Su","Ll","Ma","Me","Ia","Gw","Sa" ],
      -	weekHeader: "Wy",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "cy-GB" ] );
      -
      -return datepicker.regional[ "cy-GB" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-da.js b/bower_components/jquery-ui/ui/i18n/datepicker-da.js
      deleted file mode 100644
      index 273f0e3ff6..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-da.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Danish initialisation for the jQuery UI date picker plugin. */
      -/* Written by Jan Christensen ( deletestuff@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.da = {
      -	closeText: "Luk",
      -	prevText: "&#x3C;Forrige",
      -	nextText: "Næste&#x3E;",
      -	currentText: "Idag",
      -	monthNames: [ "Januar","Februar","Marts","April","Maj","Juni",
      -	"Juli","August","September","Oktober","November","December" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun",
      -	"Jul","Aug","Sep","Okt","Nov","Dec" ],
      -	dayNames: [ "Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag" ],
      -	dayNamesShort: [ "Søn","Man","Tir","Ons","Tor","Fre","Lør" ],
      -	dayNamesMin: [ "Sø","Ma","Ti","On","To","Fr","Lø" ],
      -	weekHeader: "Uge",
      -	dateFormat: "dd-mm-yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.da );
      -
      -return datepicker.regional.da;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-de.js b/bower_components/jquery-ui/ui/i18n/datepicker-de.js
      deleted file mode 100644
      index a67790844a..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-de.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* German initialisation for the jQuery UI date picker plugin. */
      -/* Written by Milian Wolff (mail@milianw.de). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.de = {
      -	closeText: "Schließen",
      -	prevText: "&#x3C;Zurück",
      -	nextText: "Vor&#x3E;",
      -	currentText: "Heute",
      -	monthNames: [ "Januar","Februar","März","April","Mai","Juni",
      -	"Juli","August","September","Oktober","November","Dezember" ],
      -	monthNamesShort: [ "Jan","Feb","Mär","Apr","Mai","Jun",
      -	"Jul","Aug","Sep","Okt","Nov","Dez" ],
      -	dayNames: [ "Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag" ],
      -	dayNamesShort: [ "So","Mo","Di","Mi","Do","Fr","Sa" ],
      -	dayNamesMin: [ "So","Mo","Di","Mi","Do","Fr","Sa" ],
      -	weekHeader: "KW",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.de );
      -
      -return datepicker.regional.de;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-el.js b/bower_components/jquery-ui/ui/i18n/datepicker-el.js
      deleted file mode 100644
      index f08d6f27d4..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-el.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Greek (el) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Alex Cicovic (http://www.alexcicovic.com) */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.el = {
      -	closeText: "Κλείσιμο",
      -	prevText: "Προηγούμενος",
      -	nextText: "Επόμενος",
      -	currentText: "Σήμερα",
      -	monthNames: [ "Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος",
      -	"Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος" ],
      -	monthNamesShort: [ "Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν",
      -	"Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ" ],
      -	dayNames: [ "Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο" ],
      -	dayNamesShort: [ "Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ" ],
      -	dayNamesMin: [ "Κυ","Δε","Τρ","Τε","Πε","Πα","Σα" ],
      -	weekHeader: "Εβδ",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.el );
      -
      -return datepicker.regional.el;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-en-AU.js b/bower_components/jquery-ui/ui/i18n/datepicker-en-AU.js
      deleted file mode 100644
      index f15277c37b..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-en-AU.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* English/Australia initialisation for the jQuery UI date picker plugin. */
      -/* Based on the en-GB initialisation. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "en-AU" ] = {
      -	closeText: "Done",
      -	prevText: "Prev",
      -	nextText: "Next",
      -	currentText: "Today",
      -	monthNames: [ "January","February","March","April","May","June",
      -	"July","August","September","October","November","December" ],
      -	monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
      -	"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
      -	dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
      -	dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
      -	dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "en-AU" ] );
      -
      -return datepicker.regional[ "en-AU" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-en-GB.js b/bower_components/jquery-ui/ui/i18n/datepicker-en-GB.js
      deleted file mode 100644
      index c961c18659..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-en-GB.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* English/UK initialisation for the jQuery UI date picker plugin. */
      -/* Written by Stuart. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "en-GB" ] = {
      -	closeText: "Done",
      -	prevText: "Prev",
      -	nextText: "Next",
      -	currentText: "Today",
      -	monthNames: [ "January","February","March","April","May","June",
      -	"July","August","September","October","November","December" ],
      -	monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
      -	"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
      -	dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
      -	dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
      -	dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "en-GB" ] );
      -
      -return datepicker.regional[ "en-GB" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-en-NZ.js b/bower_components/jquery-ui/ui/i18n/datepicker-en-NZ.js
      deleted file mode 100644
      index 7046362254..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-en-NZ.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* English/New Zealand initialisation for the jQuery UI date picker plugin. */
      -/* Based on the en-GB initialisation. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "en-NZ" ] = {
      -	closeText: "Done",
      -	prevText: "Prev",
      -	nextText: "Next",
      -	currentText: "Today",
      -	monthNames: [ "January","February","March","April","May","June",
      -	"July","August","September","October","November","December" ],
      -	monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun",
      -	"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
      -	dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ],
      -	dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ],
      -	dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "en-NZ" ] );
      -
      -return datepicker.regional[ "en-NZ" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-eo.js b/bower_components/jquery-ui/ui/i18n/datepicker-eo.js
      deleted file mode 100644
      index 25f6162b5c..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-eo.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Esperanto initialisation for the jQuery UI date picker plugin. */
      -/* Written by Olivier M. (olivierweb@ifrance.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.eo = {
      -	closeText: "Fermi",
      -	prevText: "&#x3C;Anta",
      -	nextText: "Sekv&#x3E;",
      -	currentText: "Nuna",
      -	monthNames: [ "Januaro","Februaro","Marto","Aprilo","Majo","Junio",
      -	"Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun",
      -	"Jul","Aŭg","Sep","Okt","Nov","Dec" ],
      -	dayNames: [ "Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato" ],
      -	dayNamesShort: [ "Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab" ],
      -	dayNamesMin: [ "Di","Lu","Ma","Me","Ĵa","Ve","Sa" ],
      -	weekHeader: "Sb",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.eo );
      -
      -return datepicker.regional.eo;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-es.js b/bower_components/jquery-ui/ui/i18n/datepicker-es.js
      deleted file mode 100644
      index ea7116e0bf..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-es.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Inicialización en español para la extensión 'UI date picker' para jQuery. */
      -/* Traducido por Vester (xvester@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.es = {
      -	closeText: "Cerrar",
      -	prevText: "&#x3C;Ant",
      -	nextText: "Sig&#x3E;",
      -	currentText: "Hoy",
      -	monthNames: [ "enero","febrero","marzo","abril","mayo","junio",
      -	"julio","agosto","septiembre","octubre","noviembre","diciembre" ],
      -	monthNamesShort: [ "ene","feb","mar","abr","may","jun",
      -	"jul","ago","sep","oct","nov","dic" ],
      -	dayNames: [ "domingo","lunes","martes","miércoles","jueves","viernes","sábado" ],
      -	dayNamesShort: [ "dom","lun","mar","mié","jue","vie","sáb" ],
      -	dayNamesMin: [ "D","L","M","X","J","V","S" ],
      -	weekHeader: "Sm",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.es );
      -
      -return datepicker.regional.es;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-et.js b/bower_components/jquery-ui/ui/i18n/datepicker-et.js
      deleted file mode 100644
      index b2e226ae54..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-et.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Estonian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Mart Sõmermaa (mrts.pydev at gmail com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.et = {
      -	closeText: "Sulge",
      -	prevText: "Eelnev",
      -	nextText: "Järgnev",
      -	currentText: "Täna",
      -	monthNames: [ "Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni",
      -	"Juuli","August","September","Oktoober","November","Detsember" ],
      -	monthNamesShort: [ "Jaan", "Veebr", "Märts", "Apr", "Mai", "Juuni",
      -	"Juuli", "Aug", "Sept", "Okt", "Nov", "Dets" ],
      -	dayNames: [
      -		"Pühapäev",
      -		"Esmaspäev",
      -		"Teisipäev",
      -		"Kolmapäev",
      -		"Neljapäev",
      -		"Reede",
      -		"Laupäev"
      -	],
      -	dayNamesShort: [ "Pühap", "Esmasp", "Teisip", "Kolmap", "Neljap", "Reede", "Laup" ],
      -	dayNamesMin: [ "P","E","T","K","N","R","L" ],
      -	weekHeader: "näd",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.et );
      -
      -return datepicker.regional.et;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-eu.js b/bower_components/jquery-ui/ui/i18n/datepicker-eu.js
      deleted file mode 100644
      index 8ea1ef9e58..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-eu.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -/* Karrikas-ek itzulia (karrikas@karrikas.com) */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.eu = {
      -	closeText: "Egina",
      -	prevText: "&#x3C;Aur",
      -	nextText: "Hur&#x3E;",
      -	currentText: "Gaur",
      -	monthNames: [ "urtarrila","otsaila","martxoa","apirila","maiatza","ekaina",
      -		"uztaila","abuztua","iraila","urria","azaroa","abendua" ],
      -	monthNamesShort: [ "urt.","ots.","mar.","api.","mai.","eka.",
      -		"uzt.","abu.","ira.","urr.","aza.","abe." ],
      -	dayNames: [ "igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata" ],
      -	dayNamesShort: [ "ig.","al.","ar.","az.","og.","ol.","lr." ],
      -	dayNamesMin: [ "ig","al","ar","az","og","ol","lr" ],
      -	weekHeader: "As",
      -	dateFormat: "yy-mm-dd",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.eu );
      -
      -return datepicker.regional.eu;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-fa.js b/bower_components/jquery-ui/ui/i18n/datepicker-fa.js
      deleted file mode 100644
      index 71da4981d3..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-fa.js
      +++ /dev/null
      @@ -1,73 +0,0 @@
      -/* Persian (Farsi) Translation for the jQuery UI date picker plugin. */
      -/* Javad Mowlanezhad -- jmowla@gmail.com */
      -/* Jalali calendar should supported soon! (Its implemented but I have to test it) */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.fa = {
      -	closeText: "بستن",
      -	prevText: "&#x3C;قبلی",
      -	nextText: "بعدی&#x3E;",
      -	currentText: "امروز",
      -	monthNames: [
      -		"ژانویه",
      -		"فوریه",
      -		"مارس",
      -		"آوریل",
      -		"مه",
      -		"ژوئن",
      -		"ژوئیه",
      -		"اوت",
      -		"سپتامبر",
      -		"اکتبر",
      -		"نوامبر",
      -		"دسامبر"
      -	],
      -	monthNamesShort: [ "1","2","3","4","5","6","7","8","9","10","11","12" ],
      -	dayNames: [
      -		"يکشنبه",
      -		"دوشنبه",
      -		"سه‌شنبه",
      -		"چهارشنبه",
      -		"پنجشنبه",
      -		"جمعه",
      -		"شنبه"
      -	],
      -	dayNamesShort: [
      -		"ی",
      -		"د",
      -		"س",
      -		"چ",
      -		"پ",
      -		"ج",
      -		"ش"
      -	],
      -	dayNamesMin: [
      -		"ی",
      -		"د",
      -		"س",
      -		"چ",
      -		"پ",
      -		"ج",
      -		"ش"
      -	],
      -	weekHeader: "هف",
      -	dateFormat: "yy/mm/dd",
      -	firstDay: 6,
      -	isRTL: true,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.fa );
      -
      -return datepicker.regional.fa;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-fi.js b/bower_components/jquery-ui/ui/i18n/datepicker-fi.js
      deleted file mode 100644
      index a8386ff626..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-fi.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Finnish initialisation for the jQuery UI date picker plugin. */
      -/* Written by Harri Kilpiö (harrikilpio@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.fi = {
      -	closeText: "Sulje",
      -	prevText: "&#xAB;Edellinen",
      -	nextText: "Seuraava&#xBB;",
      -	currentText: "Tänään",
      -	monthNames: [ "Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu",
      -	"Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu" ],
      -	monthNamesShort: [ "Tammi","Helmi","Maalis","Huhti","Touko","Kesä",
      -	"Heinä","Elo","Syys","Loka","Marras","Joulu" ],
      -	dayNamesShort: [ "Su","Ma","Ti","Ke","To","Pe","La" ],
      -	dayNames: [ "Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai" ],
      -	dayNamesMin: [ "Su","Ma","Ti","Ke","To","Pe","La" ],
      -	weekHeader: "Vk",
      -	dateFormat: "d.m.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.fi );
      -
      -return datepicker.regional.fi;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-fo.js b/bower_components/jquery-ui/ui/i18n/datepicker-fo.js
      deleted file mode 100644
      index 6c24b8bff8..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-fo.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Faroese initialisation for the jQuery UI date picker plugin */
      -/* Written by Sverri Mohr Olsen, sverrimo@gmail.com */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.fo = {
      -	closeText: "Lat aftur",
      -	prevText: "&#x3C;Fyrra",
      -	nextText: "Næsta&#x3E;",
      -	currentText: "Í dag",
      -	monthNames: [ "Januar","Februar","Mars","Apríl","Mei","Juni",
      -	"Juli","August","September","Oktober","November","Desember" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Mei","Jun",
      -	"Jul","Aug","Sep","Okt","Nov","Des" ],
      -	dayNames: [
      -		"Sunnudagur",
      -		"Mánadagur",
      -		"Týsdagur",
      -		"Mikudagur",
      -		"Hósdagur",
      -		"Fríggjadagur",
      -		"Leyardagur"
      -	],
      -	dayNamesShort: [ "Sun","Mán","Týs","Mik","Hós","Frí","Ley" ],
      -	dayNamesMin: [ "Su","Má","Tý","Mi","Hó","Fr","Le" ],
      -	weekHeader: "Vk",
      -	dateFormat: "dd-mm-yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.fo );
      -
      -return datepicker.regional.fo;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-fr-CA.js b/bower_components/jquery-ui/ui/i18n/datepicker-fr-CA.js
      deleted file mode 100644
      index b590277d4b..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-fr-CA.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Canadian-French initialisation for the jQuery UI date picker plugin. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "fr-CA" ] = {
      -	closeText: "Fermer",
      -	prevText: "Précédent",
      -	nextText: "Suivant",
      -	currentText: "Aujourd'hui",
      -	monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin",
      -		"juillet", "août", "septembre", "octobre", "novembre", "décembre" ],
      -	monthNamesShort: [ "janv.", "févr.", "mars", "avril", "mai", "juin",
      -		"juil.", "août", "sept.", "oct.", "nov.", "déc." ],
      -	dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ],
      -	dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ],
      -	dayNamesMin: [ "D", "L", "M", "M", "J", "V", "S" ],
      -	weekHeader: "Sem.",
      -	dateFormat: "yy-mm-dd",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: ""
      -};
      -datepicker.setDefaults( datepicker.regional[ "fr-CA" ] );
      -
      -return datepicker.regional[ "fr-CA" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-fr-CH.js b/bower_components/jquery-ui/ui/i18n/datepicker-fr-CH.js
      deleted file mode 100644
      index d2f0584d6a..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-fr-CH.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Swiss-French initialisation for the jQuery UI date picker plugin. */
      -/* Written Martin Voelkle (martin.voelkle@e-tc.ch). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "fr-CH" ] = {
      -	closeText: "Fermer",
      -	prevText: "&#x3C;Préc",
      -	nextText: "Suiv&#x3E;",
      -	currentText: "Courant",
      -	monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin",
      -		"juillet", "août", "septembre", "octobre", "novembre", "décembre" ],
      -	monthNamesShort: [ "janv.", "févr.", "mars", "avril", "mai", "juin",
      -		"juil.", "août", "sept.", "oct.", "nov.", "déc." ],
      -	dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ],
      -	dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ],
      -	dayNamesMin: [ "D", "L", "M", "M", "J", "V", "S" ],
      -	weekHeader: "Sm",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "fr-CH" ] );
      -
      -return datepicker.regional[ "fr-CH" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-fr.js b/bower_components/jquery-ui/ui/i18n/datepicker-fr.js
      deleted file mode 100644
      index 9e39fbd68f..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-fr.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -/* French initialisation for the jQuery UI date picker plugin. */
      -/* Written by Keith Wood (kbwood{at}iinet.com.au),
      -			  Stéphane Nahmani (sholby@sholby.net),
      -			  Stéphane Raimbault <stephane.raimbault@gmail.com> */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.fr = {
      -	closeText: "Fermer",
      -	prevText: "Précédent",
      -	nextText: "Suivant",
      -	currentText: "Aujourd'hui",
      -	monthNames: [ "janvier", "février", "mars", "avril", "mai", "juin",
      -		"juillet", "août", "septembre", "octobre", "novembre", "décembre" ],
      -	monthNamesShort: [ "janv.", "févr.", "mars", "avr.", "mai", "juin",
      -		"juil.", "août", "sept.", "oct.", "nov.", "déc." ],
      -	dayNames: [ "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi" ],
      -	dayNamesShort: [ "dim.", "lun.", "mar.", "mer.", "jeu.", "ven.", "sam." ],
      -	dayNamesMin: [ "D","L","M","M","J","V","S" ],
      -	weekHeader: "Sem.",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.fr );
      -
      -return datepicker.regional.fr;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-gl.js b/bower_components/jquery-ui/ui/i18n/datepicker-gl.js
      deleted file mode 100644
      index 2765230746..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-gl.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Galician localization for 'UI date picker' jQuery extension. */
      -/* Translated by Jorge Barreiro <yortx.barry@gmail.com>. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.gl = {
      -	closeText: "Pechar",
      -	prevText: "&#x3C;Ant",
      -	nextText: "Seg&#x3E;",
      -	currentText: "Hoxe",
      -	monthNames: [ "Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño",
      -	"Xullo","Agosto","Setembro","Outubro","Novembro","Decembro" ],
      -	monthNamesShort: [ "Xan","Feb","Mar","Abr","Mai","Xuñ",
      -	"Xul","Ago","Set","Out","Nov","Dec" ],
      -	dayNames: [ "Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado" ],
      -	dayNamesShort: [ "Dom","Lun","Mar","Mér","Xov","Ven","Sáb" ],
      -	dayNamesMin: [ "Do","Lu","Ma","Mé","Xo","Ve","Sá" ],
      -	weekHeader: "Sm",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.gl );
      -
      -return datepicker.regional.gl;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-he.js b/bower_components/jquery-ui/ui/i18n/datepicker-he.js
      deleted file mode 100644
      index fb6238fdac..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-he.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Hebrew initialisation for the UI Datepicker extension. */
      -/* Written by Amir Hardon (ahardon at gmail dot com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.he = {
      -	closeText: "סגור",
      -	prevText: "&#x3C;הקודם",
      -	nextText: "הבא&#x3E;",
      -	currentText: "היום",
      -	monthNames: [ "ינואר","פברואר","מרץ","אפריל","מאי","יוני",
      -	"יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר" ],
      -	monthNamesShort: [ "ינו","פבר","מרץ","אפר","מאי","יוני",
      -	"יולי","אוג","ספט","אוק","נוב","דצמ" ],
      -	dayNames: [ "ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת" ],
      -	dayNamesShort: [ "א'","ב'","ג'","ד'","ה'","ו'","שבת" ],
      -	dayNamesMin: [ "א'","ב'","ג'","ד'","ה'","ו'","שבת" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: true,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.he );
      -
      -return datepicker.regional.he;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-hi.js b/bower_components/jquery-ui/ui/i18n/datepicker-hi.js
      deleted file mode 100644
      index 3b12097245..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-hi.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Hindi initialisation for the jQuery UI date picker plugin. */
      -/* Written by Michael Dawart. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.hi = {
      -	closeText: "बंद",
      -	prevText: "पिछला",
      -	nextText: "अगला",
      -	currentText: "आज",
      -	monthNames: [ "जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून",
      -	"जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर" ],
      -	monthNamesShort: [ "जन", "फर", "मार्च", "अप्रेल", "मई", "जून",
      -	"जूलाई", "अग", "सित", "अक्ट", "नव", "दि" ],
      -	dayNames: [ "रविवार", "सोमवार", "मंगलवार", "बुधवार", "गुरुवार", "शुक्रवार", "शनिवार" ],
      -	dayNamesShort: [ "रवि", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि" ],
      -	dayNamesMin: [ "रवि", "सोम", "मंगल", "बुध", "गुरु", "शुक्र", "शनि" ],
      -	weekHeader: "हफ्ता",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.hi );
      -
      -return datepicker.regional.hi;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-hr.js b/bower_components/jquery-ui/ui/i18n/datepicker-hr.js
      deleted file mode 100644
      index 5e218c12d8..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-hr.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Croatian i18n for the jQuery UI date picker plugin. */
      -/* Written by Vjekoslav Nesek. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.hr = {
      -	closeText: "Zatvori",
      -	prevText: "&#x3C;",
      -	nextText: "&#x3E;",
      -	currentText: "Danas",
      -	monthNames: [ "Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj",
      -	"Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac" ],
      -	monthNamesShort: [ "Sij","Velj","Ožu","Tra","Svi","Lip",
      -	"Srp","Kol","Ruj","Lis","Stu","Pro" ],
      -	dayNames: [ "Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota" ],
      -	dayNamesShort: [ "Ned","Pon","Uto","Sri","Čet","Pet","Sub" ],
      -	dayNamesMin: [ "Ne","Po","Ut","Sr","Če","Pe","Su" ],
      -	weekHeader: "Tje",
      -	dateFormat: "dd.mm.yy.",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.hr );
      -
      -return datepicker.regional.hr;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-hu.js b/bower_components/jquery-ui/ui/i18n/datepicker-hu.js
      deleted file mode 100644
      index 22bbe7031e..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-hu.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -/* Hungarian initialisation for the jQuery UI date picker plugin. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.hu = {
      -	closeText: "bezár",
      -	prevText: "vissza",
      -	nextText: "előre",
      -	currentText: "ma",
      -	monthNames: [ "Január", "Február", "Március", "Április", "Május", "Június",
      -	"Július", "Augusztus", "Szeptember", "Október", "November", "December" ],
      -	monthNamesShort: [ "Jan", "Feb", "Már", "Ápr", "Máj", "Jún",
      -	"Júl", "Aug", "Szep", "Okt", "Nov", "Dec" ],
      -	dayNames: [ "Vasárnap", "Hétfő", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat" ],
      -	dayNamesShort: [ "Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo" ],
      -	dayNamesMin: [ "V", "H", "K", "Sze", "Cs", "P", "Szo" ],
      -	weekHeader: "Hét",
      -	dateFormat: "yy.mm.dd.",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: true,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.hu );
      -
      -return datepicker.regional.hu;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-hy.js b/bower_components/jquery-ui/ui/i18n/datepicker-hy.js
      deleted file mode 100644
      index 95638b3107..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-hy.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Armenian(UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Levon Zakaryan (levon.zakaryan@gmail.com)*/
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.hy = {
      -	closeText: "Փակել",
      -	prevText: "&#x3C;Նախ.",
      -	nextText: "Հաջ.&#x3E;",
      -	currentText: "Այսօր",
      -	monthNames: [ "Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս",
      -	"Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր" ],
      -	monthNamesShort: [ "Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս",
      -	"Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ" ],
      -	dayNames: [ "կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ" ],
      -	dayNamesShort: [ "կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ" ],
      -	dayNamesMin: [ "կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ" ],
      -	weekHeader: "ՇԲՏ",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.hy );
      -
      -return datepicker.regional.hy;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-id.js b/bower_components/jquery-ui/ui/i18n/datepicker-id.js
      deleted file mode 100644
      index 5aef348af8..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-id.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Indonesian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Deden Fathurahman (dedenf@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.id = {
      -	closeText: "Tutup",
      -	prevText: "&#x3C;mundur",
      -	nextText: "maju&#x3E;",
      -	currentText: "hari ini",
      -	monthNames: [ "Januari","Februari","Maret","April","Mei","Juni",
      -	"Juli","Agustus","September","Oktober","Nopember","Desember" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Mei","Jun",
      -	"Jul","Agus","Sep","Okt","Nop","Des" ],
      -	dayNames: [ "Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu" ],
      -	dayNamesShort: [ "Min","Sen","Sel","Rab","kam","Jum","Sab" ],
      -	dayNamesMin: [ "Mg","Sn","Sl","Rb","Km","jm","Sb" ],
      -	weekHeader: "Mg",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.id );
      -
      -return datepicker.regional.id;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-is.js b/bower_components/jquery-ui/ui/i18n/datepicker-is.js
      deleted file mode 100644
      index b15f37ab06..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-is.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Icelandic initialisation for the jQuery UI date picker plugin. */
      -/* Written by Haukur H. Thorsson (haukur@eskill.is). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.is = {
      -	closeText: "Loka",
      -	prevText: "&#x3C; Fyrri",
      -	nextText: "Næsti &#x3E;",
      -	currentText: "Í dag",
      -	monthNames: [ "Janúar","Febrúar","Mars","Apríl","Maí","Júní",
      -	"Júlí","Ágúst","September","Október","Nóvember","Desember" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Maí","Jún",
      -	"Júl","Ágú","Sep","Okt","Nóv","Des" ],
      -	dayNames: [
      -		"Sunnudagur",
      -		"Mánudagur",
      -		"Þriðjudagur",
      -		"Miðvikudagur",
      -		"Fimmtudagur",
      -		"Föstudagur",
      -		"Laugardagur"
      -	],
      -	dayNamesShort: [ "Sun","Mán","Þri","Mið","Fim","Fös","Lau" ],
      -	dayNamesMin: [ "Su","Má","Þr","Mi","Fi","Fö","La" ],
      -	weekHeader: "Vika",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.is );
      -
      -return datepicker.regional.is;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-it-CH.js b/bower_components/jquery-ui/ui/i18n/datepicker-it-CH.js
      deleted file mode 100644
      index 9895da4cc3..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-it-CH.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Italian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Antonello Pasella (antonello.pasella@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "it-CH" ] = {
      -	closeText: "Chiudi",
      -	prevText: "&#x3C;Prec",
      -	nextText: "Succ&#x3E;",
      -	currentText: "Oggi",
      -	monthNames: [ "Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno",
      -		"Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre" ],
      -	monthNamesShort: [ "Gen","Feb","Mar","Apr","Mag","Giu",
      -		"Lug","Ago","Set","Ott","Nov","Dic" ],
      -	dayNames: [ "Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato" ],
      -	dayNamesShort: [ "Dom","Lun","Mar","Mer","Gio","Ven","Sab" ],
      -	dayNamesMin: [ "Do","Lu","Ma","Me","Gi","Ve","Sa" ],
      -	weekHeader: "Sm",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "it-CH" ] );
      -
      -return datepicker.regional[ "it-CH" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-it.js b/bower_components/jquery-ui/ui/i18n/datepicker-it.js
      deleted file mode 100644
      index d67cb6c248..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-it.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Italian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Antonello Pasella (antonello.pasella@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.it = {
      -	closeText: "Chiudi",
      -	prevText: "&#x3C;Prec",
      -	nextText: "Succ&#x3E;",
      -	currentText: "Oggi",
      -	monthNames: [ "Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno",
      -		"Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre" ],
      -	monthNamesShort: [ "Gen","Feb","Mar","Apr","Mag","Giu",
      -		"Lug","Ago","Set","Ott","Nov","Dic" ],
      -	dayNames: [ "Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato" ],
      -	dayNamesShort: [ "Dom","Lun","Mar","Mer","Gio","Ven","Sab" ],
      -	dayNamesMin: [ "Do","Lu","Ma","Me","Gi","Ve","Sa" ],
      -	weekHeader: "Sm",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.it );
      -
      -return datepicker.regional.it;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ja.js b/bower_components/jquery-ui/ui/i18n/datepicker-ja.js
      deleted file mode 100644
      index 52b10583ca..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ja.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Japanese initialisation for the jQuery UI date picker plugin. */
      -/* Written by Kentaro SATO (kentaro@ranvis.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ja = {
      -	closeText: "閉じる",
      -	prevText: "&#x3C;前",
      -	nextText: "次&#x3E;",
      -	currentText: "今日",
      -	monthNames: [ "1月","2月","3月","4月","5月","6月",
      -	"7月","8月","9月","10月","11月","12月" ],
      -	monthNamesShort: [ "1月","2月","3月","4月","5月","6月",
      -	"7月","8月","9月","10月","11月","12月" ],
      -	dayNames: [ "日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日" ],
      -	dayNamesShort: [ "日","月","火","水","木","金","土" ],
      -	dayNamesMin: [ "日","月","火","水","木","金","土" ],
      -	weekHeader: "週",
      -	dateFormat: "yy/mm/dd",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: true,
      -	yearSuffix: "年" };
      -datepicker.setDefaults( datepicker.regional.ja );
      -
      -return datepicker.regional.ja;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ka.js b/bower_components/jquery-ui/ui/i18n/datepicker-ka.js
      deleted file mode 100644
      index 1f596cb318..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ka.js
      +++ /dev/null
      @@ -1,48 +0,0 @@
      -/* Georgian (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Lado Lomidze (lado.lomidze@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ka = {
      -	closeText: "დახურვა",
      -	prevText: "&#x3c; წინა",
      -	nextText: "შემდეგი &#x3e;",
      -	currentText: "დღეს",
      -	monthNames: [
      -		"იანვარი",
      -		"თებერვალი",
      -		"მარტი",
      -		"აპრილი",
      -		"მაისი",
      -		"ივნისი",
      -		"ივლისი",
      -		"აგვისტო",
      -		"სექტემბერი",
      -		"ოქტომბერი",
      -		"ნოემბერი",
      -		"დეკემბერი"
      -	],
      -	monthNamesShort: [ "იან","თებ","მარ","აპრ","მაი","ივნ", "ივლ","აგვ","სექ","ოქტ","ნოე","დეკ" ],
      -	dayNames: [ "კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი" ],
      -	dayNamesShort: [ "კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ" ],
      -	dayNamesMin: [ "კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ" ],
      -	weekHeader: "კვირა",
      -	dateFormat: "dd-mm-yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ka );
      -
      -return datepicker.regional.ka;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-kk.js b/bower_components/jquery-ui/ui/i18n/datepicker-kk.js
      deleted file mode 100644
      index fa0121f8c2..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-kk.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Kazakh (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Dmitriy Karasyov (dmitriy.karasyov@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.kk = {
      -	closeText: "Жабу",
      -	prevText: "&#x3C;Алдыңғы",
      -	nextText: "Келесі&#x3E;",
      -	currentText: "Бүгін",
      -	monthNames: [ "Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым",
      -	"Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан" ],
      -	monthNamesShort: [ "Қаң","Ақп","Нау","Сәу","Мам","Мау",
      -	"Шіл","Там","Қыр","Қаз","Қар","Жел" ],
      -	dayNames: [ "Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі" ],
      -	dayNamesShort: [ "жкс","дсн","ссн","срс","бсн","жма","снб" ],
      -	dayNamesMin: [ "Жк","Дс","Сс","Ср","Бс","Жм","Сн" ],
      -	weekHeader: "Не",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.kk );
      -
      -return datepicker.regional.kk;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-km.js b/bower_components/jquery-ui/ui/i18n/datepicker-km.js
      deleted file mode 100644
      index d8a4596bce..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-km.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Khmer initialisation for the jQuery calendar extension. */
      -/* Written by Chandara Om (chandara.teacher@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.km = {
      -	closeText: "ធ្វើ​រួច",
      -	prevText: "មុន",
      -	nextText: "បន្ទាប់",
      -	currentText: "ថ្ងៃ​នេះ",
      -	monthNames: [ "មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា",
      -	"កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ" ],
      -	monthNamesShort: [ "មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា",
      -	"កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ" ],
      -	dayNames: [ "អាទិត្យ", "ចន្ទ", "អង្គារ", "ពុធ", "ព្រហស្បតិ៍", "សុក្រ", "សៅរ៍" ],
      -	dayNamesShort: [ "អា", "ច", "អ", "ពុ", "ព្រហ", "សុ", "សៅ" ],
      -	dayNamesMin: [ "អា", "ច", "អ", "ពុ", "ព្រហ", "សុ", "សៅ" ],
      -	weekHeader: "សប្ដាហ៍",
      -	dateFormat: "dd-mm-yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.km );
      -
      -return datepicker.regional.km;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ko.js b/bower_components/jquery-ui/ui/i18n/datepicker-ko.js
      deleted file mode 100644
      index 8879a99509..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ko.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Korean initialisation for the jQuery calendar extension. */
      -/* Written by DaeKwon Kang (ncrash.dk@gmail.com), Edited by Genie and Myeongjin Lee. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ko = {
      -	closeText: "닫기",
      -	prevText: "이전달",
      -	nextText: "다음달",
      -	currentText: "오늘",
      -	monthNames: [ "1월","2월","3월","4월","5월","6월",
      -	"7월","8월","9월","10월","11월","12월" ],
      -	monthNamesShort: [ "1월","2월","3월","4월","5월","6월",
      -	"7월","8월","9월","10월","11월","12월" ],
      -	dayNames: [ "일요일","월요일","화요일","수요일","목요일","금요일","토요일" ],
      -	dayNamesShort: [ "일","월","화","수","목","금","토" ],
      -	dayNamesMin: [ "일","월","화","수","목","금","토" ],
      -	weekHeader: "주",
      -	dateFormat: "yy. m. d.",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: true,
      -	yearSuffix: "년" };
      -datepicker.setDefaults( datepicker.regional.ko );
      -
      -return datepicker.regional.ko;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ky.js b/bower_components/jquery-ui/ui/i18n/datepicker-ky.js
      deleted file mode 100644
      index f748bc6060..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ky.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -/* Kyrgyz (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Sergey Kartashov (ebishkek@yandex.ru). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ky = {
      -	closeText: "Жабуу",
      -	prevText: "&#x3c;Мур",
      -	nextText: "Кий&#x3e;",
      -	currentText: "Бүгүн",
      -	monthNames: [ "Январь","Февраль","Март","Апрель","Май","Июнь",
      -	"Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь" ],
      -	monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн",
      -	"Июл","Авг","Сен","Окт","Ноя","Дек" ],
      -	dayNames: [ "жекшемби", "дүйшөмбү", "шейшемби", "шаршемби", "бейшемби", "жума", "ишемби" ],
      -	dayNamesShort: [ "жек", "дүй", "шей", "шар", "бей", "жум", "ише" ],
      -	dayNamesMin: [ "Жк","Дш","Шш","Шр","Бш","Жм","Иш" ],
      -	weekHeader: "Жум",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: ""
      -};
      -datepicker.setDefaults( datepicker.regional.ky );
      -
      -return datepicker.regional.ky;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-lb.js b/bower_components/jquery-ui/ui/i18n/datepicker-lb.js
      deleted file mode 100644
      index 02a9c51082..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-lb.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Luxembourgish initialisation for the jQuery UI date picker plugin. */
      -/* Written by Michel Weimerskirch <michel@weimerskirch.net> */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.lb = {
      -	closeText: "Fäerdeg",
      -	prevText: "Zréck",
      -	nextText: "Weider",
      -	currentText: "Haut",
      -	monthNames: [ "Januar","Februar","Mäerz","Abrëll","Mee","Juni",
      -	"Juli","August","September","Oktober","November","Dezember" ],
      -	monthNamesShort: [ "Jan", "Feb", "Mäe", "Abr", "Mee", "Jun",
      -	"Jul", "Aug", "Sep", "Okt", "Nov", "Dez" ],
      -	dayNames: [
      -		"Sonndeg",
      -		"Méindeg",
      -		"Dënschdeg",
      -		"Mëttwoch",
      -		"Donneschdeg",
      -		"Freideg",
      -		"Samschdeg"
      -	],
      -	dayNamesShort: [ "Son", "Méi", "Dën", "Mët", "Don", "Fre", "Sam" ],
      -	dayNamesMin: [ "So","Mé","Dë","Më","Do","Fr","Sa" ],
      -	weekHeader: "W",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.lb );
      -
      -return datepicker.regional.lb;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-lt.js b/bower_components/jquery-ui/ui/i18n/datepicker-lt.js
      deleted file mode 100644
      index a57fd9df00..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-lt.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Lithuanian (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* @author Arturas Paleicikas <arturas@avalon.lt> */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.lt = {
      -	closeText: "Uždaryti",
      -	prevText: "&#x3C;Atgal",
      -	nextText: "Pirmyn&#x3E;",
      -	currentText: "Šiandien",
      -	monthNames: [ "Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis",
      -	"Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis" ],
      -	monthNamesShort: [ "Sau","Vas","Kov","Bal","Geg","Bir",
      -	"Lie","Rugp","Rugs","Spa","Lap","Gru" ],
      -	dayNames: [
      -		"sekmadienis",
      -		"pirmadienis",
      -		"antradienis",
      -		"trečiadienis",
      -		"ketvirtadienis",
      -		"penktadienis",
      -		"šeštadienis"
      -	],
      -	dayNamesShort: [ "sek","pir","ant","tre","ket","pen","šeš" ],
      -	dayNamesMin: [ "Se","Pr","An","Tr","Ke","Pe","Še" ],
      -	weekHeader: "SAV",
      -	dateFormat: "yy-mm-dd",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: true,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.lt );
      -
      -return datepicker.regional.lt;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-lv.js b/bower_components/jquery-ui/ui/i18n/datepicker-lv.js
      deleted file mode 100644
      index 04556fbcf7..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-lv.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Latvian (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* @author Arturas Paleicikas <arturas.paleicikas@metasite.net> */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.lv = {
      -	closeText: "Aizvērt",
      -	prevText: "Iepr.",
      -	nextText: "Nāk.",
      -	currentText: "Šodien",
      -	monthNames: [ "Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs",
      -	"Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Mai","Jūn",
      -	"Jūl","Aug","Sep","Okt","Nov","Dec" ],
      -	dayNames: [
      -		"svētdiena",
      -		"pirmdiena",
      -		"otrdiena",
      -		"trešdiena",
      -		"ceturtdiena",
      -		"piektdiena",
      -		"sestdiena"
      -	],
      -	dayNamesShort: [ "svt","prm","otr","tre","ctr","pkt","sst" ],
      -	dayNamesMin: [ "Sv","Pr","Ot","Tr","Ct","Pk","Ss" ],
      -	weekHeader: "Ned.",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.lv );
      -
      -return datepicker.regional.lv;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-mk.js b/bower_components/jquery-ui/ui/i18n/datepicker-mk.js
      deleted file mode 100644
      index 97864ab151..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-mk.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Macedonian i18n for the jQuery UI date picker plugin. */
      -/* Written by Stojce Slavkovski. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.mk = {
      -	closeText: "Затвори",
      -	prevText: "&#x3C;",
      -	nextText: "&#x3E;",
      -	currentText: "Денес",
      -	monthNames: [ "Јануари","Февруари","Март","Април","Мај","Јуни",
      -	"Јули","Август","Септември","Октомври","Ноември","Декември" ],
      -	monthNamesShort: [ "Јан","Фев","Мар","Апр","Мај","Јун",
      -	"Јул","Авг","Сеп","Окт","Ное","Дек" ],
      -	dayNames: [ "Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота" ],
      -	dayNamesShort: [ "Нед","Пон","Вто","Сре","Чет","Пет","Саб" ],
      -	dayNamesMin: [ "Не","По","Вт","Ср","Че","Пе","Са" ],
      -	weekHeader: "Сед",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.mk );
      -
      -return datepicker.regional.mk;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ml.js b/bower_components/jquery-ui/ui/i18n/datepicker-ml.js
      deleted file mode 100644
      index 440e09e034..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ml.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Malayalam (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Saji Nediyanchath (saji89@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ml = {
      -	closeText: "ശരി",
      -	prevText: "മുന്നത്തെ",
      -	nextText: "അടുത്തത് ",
      -	currentText: "ഇന്ന്",
      -	monthNames: [ "ജനുവരി","ഫെബ്രുവരി","മാര്‍ച്ച്","ഏപ്രില്‍","മേയ്","ജൂണ്‍",
      -	"ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്‍","ഒക്ടോബര്‍","നവംബര്‍","ഡിസംബര്‍" ],
      -	monthNamesShort: [ "ജനു", "ഫെബ്", "മാര്‍", "ഏപ്രി", "മേയ്", "ജൂണ്‍",
      -	"ജൂലാ", "ആഗ", "സെപ്", "ഒക്ടോ", "നവം", "ഡിസ" ],
      -	dayNames: [ "ഞായര്‍", "തിങ്കള്‍", "ചൊവ്വ", "ബുധന്‍", "വ്യാഴം", "വെള്ളി", "ശനി" ],
      -	dayNamesShort: [ "ഞായ", "തിങ്ക", "ചൊവ്വ", "ബുധ", "വ്യാഴം", "വെള്ളി", "ശനി" ],
      -	dayNamesMin: [ "ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ" ],
      -	weekHeader: "ആ",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ml );
      -
      -return datepicker.regional.ml;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ms.js b/bower_components/jquery-ui/ui/i18n/datepicker-ms.js
      deleted file mode 100644
      index 58bc4f579e..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ms.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Malaysian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Mohd Nawawi Mohamad Jamili (nawawi@ronggeng.net). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ms = {
      -	closeText: "Tutup",
      -	prevText: "&#x3C;Sebelum",
      -	nextText: "Selepas&#x3E;",
      -	currentText: "hari ini",
      -	monthNames: [ "Januari","Februari","Mac","April","Mei","Jun",
      -	"Julai","Ogos","September","Oktober","November","Disember" ],
      -	monthNamesShort: [ "Jan","Feb","Mac","Apr","Mei","Jun",
      -	"Jul","Ogo","Sep","Okt","Nov","Dis" ],
      -	dayNames: [ "Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu" ],
      -	dayNamesShort: [ "Aha","Isn","Sel","Rab","kha","Jum","Sab" ],
      -	dayNamesMin: [ "Ah","Is","Se","Ra","Kh","Ju","Sa" ],
      -	weekHeader: "Mg",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ms );
      -
      -return datepicker.regional.ms;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-nb.js b/bower_components/jquery-ui/ui/i18n/datepicker-nb.js
      deleted file mode 100644
      index eb1112bc50..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-nb.js
      +++ /dev/null
      @@ -1,49 +0,0 @@
      -/* Norwegian Bokmål initialisation for the jQuery UI date picker plugin. */
      -/* Written by Bjørn Johansen (post@bjornjohansen.no). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.nb = {
      -	closeText: "Lukk",
      -	prevText: "&#xAB;Forrige",
      -	nextText: "Neste&#xBB;",
      -	currentText: "I dag",
      -	monthNames: [
      -		"januar",
      -		"februar",
      -		"mars",
      -		"april",
      -		"mai",
      -		"juni",
      -		"juli",
      -		"august",
      -		"september",
      -		"oktober",
      -		"november",
      -		"desember"
      -	],
      -	monthNamesShort: [ "jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des" ],
      -	dayNamesShort: [ "søn","man","tir","ons","tor","fre","lør" ],
      -	dayNames: [ "søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag" ],
      -	dayNamesMin: [ "sø","ma","ti","on","to","fr","lø" ],
      -	weekHeader: "Uke",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: ""
      -};
      -datepicker.setDefaults( datepicker.regional.nb );
      -
      -return datepicker.regional.nb;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-nl-BE.js b/bower_components/jquery-ui/ui/i18n/datepicker-nl-BE.js
      deleted file mode 100644
      index 9ea22002d6..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-nl-BE.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Dutch (Belgium) initialisation for the jQuery UI date picker plugin. */
      -/* David De Sloovere @DavidDeSloovere */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "nl-BE" ] = {
      -	closeText: "Sluiten",
      -	prevText: "←",
      -	nextText: "→",
      -	currentText: "Vandaag",
      -	monthNames: [ "januari", "februari", "maart", "april", "mei", "juni",
      -	"juli", "augustus", "september", "oktober", "november", "december" ],
      -	monthNamesShort: [ "jan", "feb", "mrt", "apr", "mei", "jun",
      -	"jul", "aug", "sep", "okt", "nov", "dec" ],
      -	dayNames: [ "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" ],
      -	dayNamesShort: [ "zon", "maa", "din", "woe", "don", "vri", "zat" ],
      -	dayNamesMin: [ "zo", "ma", "di", "wo", "do", "vr", "za" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "nl-BE" ] );
      -
      -return datepicker.regional[ "nl-BE" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-nl.js b/bower_components/jquery-ui/ui/i18n/datepicker-nl.js
      deleted file mode 100644
      index 7fcbff1ac1..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-nl.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Dutch (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Mathias Bynens <http://mathiasbynens.be/> */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.nl = {
      -	closeText: "Sluiten",
      -	prevText: "←",
      -	nextText: "→",
      -	currentText: "Vandaag",
      -	monthNames: [ "januari", "februari", "maart", "april", "mei", "juni",
      -	"juli", "augustus", "september", "oktober", "november", "december" ],
      -	monthNamesShort: [ "jan", "feb", "mrt", "apr", "mei", "jun",
      -	"jul", "aug", "sep", "okt", "nov", "dec" ],
      -	dayNames: [ "zondag", "maandag", "dinsdag", "woensdag", "donderdag", "vrijdag", "zaterdag" ],
      -	dayNamesShort: [ "zon", "maa", "din", "woe", "don", "vri", "zat" ],
      -	dayNamesMin: [ "zo", "ma", "di", "wo", "do", "vr", "za" ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd-mm-yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.nl );
      -
      -return datepicker.regional.nl;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-nn.js b/bower_components/jquery-ui/ui/i18n/datepicker-nn.js
      deleted file mode 100644
      index bacd481a01..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-nn.js
      +++ /dev/null
      @@ -1,49 +0,0 @@
      -/* Norwegian Nynorsk initialisation for the jQuery UI date picker plugin. */
      -/* Written by Bjørn Johansen (post@bjornjohansen.no). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.nn = {
      -	closeText: "Lukk",
      -	prevText: "&#xAB;Førre",
      -	nextText: "Neste&#xBB;",
      -	currentText: "I dag",
      -	monthNames: [
      -		"januar",
      -		"februar",
      -		"mars",
      -		"april",
      -		"mai",
      -		"juni",
      -		"juli",
      -		"august",
      -		"september",
      -		"oktober",
      -		"november",
      -		"desember"
      -	],
      -	monthNamesShort: [ "jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des" ],
      -	dayNamesShort: [ "sun","mån","tys","ons","tor","fre","lau" ],
      -	dayNames: [ "sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag" ],
      -	dayNamesMin: [ "su","må","ty","on","to","fr","la" ],
      -	weekHeader: "Veke",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: ""
      -};
      -datepicker.setDefaults( datepicker.regional.nn );
      -
      -return datepicker.regional.nn;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-no.js b/bower_components/jquery-ui/ui/i18n/datepicker-no.js
      deleted file mode 100644
      index 8a755aae91..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-no.js
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -/* Norwegian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Naimdjon Takhirov (naimdjon@gmail.com). */
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.no = {
      -	closeText: "Lukk",
      -	prevText: "&#xAB;Forrige",
      -	nextText: "Neste&#xBB;",
      -	currentText: "I dag",
      -	monthNames: [
      -		"januar",
      -		"februar",
      -		"mars",
      -		"april",
      -		"mai",
      -		"juni",
      -		"juli",
      -		"august",
      -		"september",
      -		"oktober",
      -		"november",
      -		"desember"
      -	],
      -	monthNamesShort: [ "jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des" ],
      -	dayNamesShort: [ "søn","man","tir","ons","tor","fre","lør" ],
      -	dayNames: [ "søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag" ],
      -	dayNamesMin: [ "sø","ma","ti","on","to","fr","lø" ],
      -	weekHeader: "Uke",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: ""
      -};
      -datepicker.setDefaults( datepicker.regional.no );
      -
      -return datepicker.regional.no;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-pl.js b/bower_components/jquery-ui/ui/i18n/datepicker-pl.js
      deleted file mode 100644
      index c2fddc1327..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-pl.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Polish initialisation for the jQuery UI date picker plugin. */
      -/* Written by Jacek Wysocki (jacek.wysocki@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.pl = {
      -	closeText: "Zamknij",
      -	prevText: "&#x3C;Poprzedni",
      -	nextText: "Następny&#x3E;",
      -	currentText: "Dziś",
      -	monthNames: [ "Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec",
      -	"Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień" ],
      -	monthNamesShort: [ "Sty","Lu","Mar","Kw","Maj","Cze",
      -	"Lip","Sie","Wrz","Pa","Lis","Gru" ],
      -	dayNames: [ "Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota" ],
      -	dayNamesShort: [ "Nie","Pn","Wt","Śr","Czw","Pt","So" ],
      -	dayNamesMin: [ "N","Pn","Wt","Śr","Cz","Pt","So" ],
      -	weekHeader: "Tydz",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.pl );
      -
      -return datepicker.regional.pl;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-pt-BR.js b/bower_components/jquery-ui/ui/i18n/datepicker-pt-BR.js
      deleted file mode 100644
      index aeae7ca4ec..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-pt-BR.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/* Brazilian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Leonildo Costa Silva (leocsilva@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "pt-BR" ] = {
      -	closeText: "Fechar",
      -	prevText: "&#x3C;Anterior",
      -	nextText: "Próximo&#x3E;",
      -	currentText: "Hoje",
      -	monthNames: [ "Janeiro","Fevereiro","Março","Abril","Maio","Junho",
      -	"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro" ],
      -	monthNamesShort: [ "Jan","Fev","Mar","Abr","Mai","Jun",
      -	"Jul","Ago","Set","Out","Nov","Dez" ],
      -	dayNames: [
      -		"Domingo",
      -		"Segunda-feira",
      -		"Terça-feira",
      -		"Quarta-feira",
      -		"Quinta-feira",
      -		"Sexta-feira",
      -		"Sábado"
      -	],
      -	dayNamesShort: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ],
      -	dayNamesMin: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ],
      -	weekHeader: "Sm",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "pt-BR" ] );
      -
      -return datepicker.regional[ "pt-BR" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-pt.js b/bower_components/jquery-ui/ui/i18n/datepicker-pt.js
      deleted file mode 100644
      index b1afd7b3d0..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-pt.js
      +++ /dev/null
      @@ -1,44 +0,0 @@
      -/* Portuguese initialisation for the jQuery UI date picker plugin. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.pt = {
      -	closeText: "Fechar",
      -	prevText: "Anterior",
      -	nextText: "Seguinte",
      -	currentText: "Hoje",
      -	monthNames: [ "Janeiro","Fevereiro","Março","Abril","Maio","Junho",
      -	"Julho","Agosto","Setembro","Outubro","Novembro","Dezembro" ],
      -	monthNamesShort: [ "Jan","Fev","Mar","Abr","Mai","Jun",
      -	"Jul","Ago","Set","Out","Nov","Dez" ],
      -	dayNames: [
      -		"Domingo",
      -		"Segunda-feira",
      -		"Terça-feira",
      -		"Quarta-feira",
      -		"Quinta-feira",
      -		"Sexta-feira",
      -		"Sábado"
      -	],
      -	dayNamesShort: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ],
      -	dayNamesMin: [ "Dom","Seg","Ter","Qua","Qui","Sex","Sáb" ],
      -	weekHeader: "Sem",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.pt );
      -
      -return datepicker.regional.pt;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-rm.js b/bower_components/jquery-ui/ui/i18n/datepicker-rm.js
      deleted file mode 100644
      index 89a5c77a11..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-rm.js
      +++ /dev/null
      @@ -1,61 +0,0 @@
      -/* Romansh initialisation for the jQuery UI date picker plugin. */
      -/* Written by Yvonne Gienal (yvonne.gienal@educa.ch). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.rm = {
      -	closeText: "Serrar",
      -	prevText: "&#x3C;Suandant",
      -	nextText: "Precedent&#x3E;",
      -	currentText: "Actual",
      -	monthNames: [
      -		"Schaner",
      -		"Favrer",
      -		"Mars",
      -		"Avrigl",
      -		"Matg",
      -		"Zercladur",
      -		"Fanadur",
      -		"Avust",
      -		"Settember",
      -		"October",
      -		"November",
      -		"December"
      -	],
      -	monthNamesShort: [
      -		"Scha",
      -		"Fev",
      -		"Mar",
      -		"Avr",
      -		"Matg",
      -		"Zer",
      -		"Fan",
      -		"Avu",
      -		"Sett",
      -		"Oct",
      -		"Nov",
      -		"Dec"
      -	],
      -	dayNames: [ "Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda" ],
      -	dayNamesShort: [ "Dum","Gli","Mar","Mes","Gie","Ven","Som" ],
      -	dayNamesMin: [ "Du","Gl","Ma","Me","Gi","Ve","So" ],
      -	weekHeader: "emna",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.rm );
      -
      -return datepicker.regional.rm;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ro.js b/bower_components/jquery-ui/ui/i18n/datepicker-ro.js
      deleted file mode 100644
      index b26665c256..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ro.js
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -/* Romanian initialisation for the jQuery UI date picker plugin.
      - *
      - * Written by Edmond L. (ll_edmond@walla.com)
      - * and Ionut G. Stan (ionut.g.stan@gmail.com)
      - */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ro = {
      -	closeText: "Închide",
      -	prevText: "&#xAB; Luna precedentă",
      -	nextText: "Luna următoare &#xBB;",
      -	currentText: "Azi",
      -	monthNames: [ "Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie",
      -	"Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie" ],
      -	monthNamesShort: [ "Ian", "Feb", "Mar", "Apr", "Mai", "Iun",
      -	"Iul", "Aug", "Sep", "Oct", "Nov", "Dec" ],
      -	dayNames: [ "Duminică", "Luni", "Marţi", "Miercuri", "Joi", "Vineri", "Sâmbătă" ],
      -	dayNamesShort: [ "Dum", "Lun", "Mar", "Mie", "Joi", "Vin", "Sâm" ],
      -	dayNamesMin: [ "Du","Lu","Ma","Mi","Jo","Vi","Sâ" ],
      -	weekHeader: "Săpt",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ro );
      -
      -return datepicker.regional.ro;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ru.js b/bower_components/jquery-ui/ui/i18n/datepicker-ru.js
      deleted file mode 100644
      index 223e77645e..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ru.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Russian (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Andrew Stromnov (stromnov@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ru = {
      -	closeText: "Закрыть",
      -	prevText: "&#x3C;Пред",
      -	nextText: "След&#x3E;",
      -	currentText: "Сегодня",
      -	monthNames: [ "Январь","Февраль","Март","Апрель","Май","Июнь",
      -	"Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь" ],
      -	monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн",
      -	"Июл","Авг","Сен","Окт","Ноя","Дек" ],
      -	dayNames: [ "воскресенье","понедельник","вторник","среда","четверг","пятница","суббота" ],
      -	dayNamesShort: [ "вск","пнд","втр","срд","чтв","птн","сбт" ],
      -	dayNamesMin: [ "Вс","Пн","Вт","Ср","Чт","Пт","Сб" ],
      -	weekHeader: "Нед",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ru );
      -
      -return datepicker.regional.ru;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-sk.js b/bower_components/jquery-ui/ui/i18n/datepicker-sk.js
      deleted file mode 100644
      index 16d8bdfe4e..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-sk.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Slovak initialisation for the jQuery UI date picker plugin. */
      -/* Written by Vojtech Rinik (vojto@hmm.sk). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.sk = {
      -	closeText: "Zavrieť",
      -	prevText: "&#x3C;Predchádzajúci",
      -	nextText: "Nasledujúci&#x3E;",
      -	currentText: "Dnes",
      -	monthNames: [ "január","február","marec","apríl","máj","jún",
      -	"júl","august","september","október","november","december" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Máj","Jún",
      -	"Júl","Aug","Sep","Okt","Nov","Dec" ],
      -	dayNames: [ "nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota" ],
      -	dayNamesShort: [ "Ned","Pon","Uto","Str","Štv","Pia","Sob" ],
      -	dayNamesMin: [ "Ne","Po","Ut","St","Št","Pia","So" ],
      -	weekHeader: "Ty",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.sk );
      -
      -return datepicker.regional.sk;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-sl.js b/bower_components/jquery-ui/ui/i18n/datepicker-sl.js
      deleted file mode 100644
      index 6891624926..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-sl.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -/* Slovenian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Jaka Jancar (jaka@kubje.org). */
      -/* c = č, s = š z = ž C = Č S = Š Z = Ž */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.sl = {
      -	closeText: "Zapri",
      -	prevText: "&#x3C;Prejšnji",
      -	nextText: "Naslednji&#x3E;",
      -	currentText: "Trenutni",
      -	monthNames: [ "Januar","Februar","Marec","April","Maj","Junij",
      -	"Julij","Avgust","September","Oktober","November","December" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun",
      -	"Jul","Avg","Sep","Okt","Nov","Dec" ],
      -	dayNames: [ "Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota" ],
      -	dayNamesShort: [ "Ned","Pon","Tor","Sre","Čet","Pet","Sob" ],
      -	dayNamesMin: [ "Ne","Po","To","Sr","Če","Pe","So" ],
      -	weekHeader: "Teden",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.sl );
      -
      -return datepicker.regional.sl;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-sq.js b/bower_components/jquery-ui/ui/i18n/datepicker-sq.js
      deleted file mode 100644
      index 34fe66a59c..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-sq.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Albanian initialisation for the jQuery UI date picker plugin. */
      -/* Written by Flakron Bytyqi (flakron@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.sq = {
      -	closeText: "mbylle",
      -	prevText: "&#x3C;mbrapa",
      -	nextText: "Përpara&#x3E;",
      -	currentText: "sot",
      -	monthNames: [ "Janar","Shkurt","Mars","Prill","Maj","Qershor",
      -	"Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor" ],
      -	monthNamesShort: [ "Jan","Shk","Mar","Pri","Maj","Qer",
      -	"Kor","Gus","Sht","Tet","Nën","Dhj" ],
      -	dayNames: [ "E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune" ],
      -	dayNamesShort: [ "Di","Hë","Ma","Më","En","Pr","Sh" ],
      -	dayNamesMin: [ "Di","Hë","Ma","Më","En","Pr","Sh" ],
      -	weekHeader: "Ja",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.sq );
      -
      -return datepicker.regional.sq;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-sr-SR.js b/bower_components/jquery-ui/ui/i18n/datepicker-sr-SR.js
      deleted file mode 100644
      index e9db26a42e..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-sr-SR.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Serbian i18n for the jQuery UI date picker plugin. */
      -/* Written by Dejan Dimić. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "sr-SR" ] = {
      -	closeText: "Zatvori",
      -	prevText: "&#x3C;",
      -	nextText: "&#x3E;",
      -	currentText: "Danas",
      -	monthNames: [ "Januar","Februar","Mart","April","Maj","Jun",
      -	"Jul","Avgust","Septembar","Oktobar","Novembar","Decembar" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun",
      -	"Jul","Avg","Sep","Okt","Nov","Dec" ],
      -	dayNames: [ "Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota" ],
      -	dayNamesShort: [ "Ned","Pon","Uto","Sre","Čet","Pet","Sub" ],
      -	dayNamesMin: [ "Ne","Po","Ut","Sr","Če","Pe","Su" ],
      -	weekHeader: "Sed",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional[ "sr-SR" ] );
      -
      -return datepicker.regional[ "sr-SR" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-sr.js b/bower_components/jquery-ui/ui/i18n/datepicker-sr.js
      deleted file mode 100644
      index fa8827aa12..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-sr.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Serbian i18n for the jQuery UI date picker plugin. */
      -/* Written by Dejan Dimić. */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.sr = {
      -	closeText: "Затвори",
      -	prevText: "&#x3C;",
      -	nextText: "&#x3E;",
      -	currentText: "Данас",
      -	monthNames: [ "Јануар","Фебруар","Март","Април","Мај","Јун",
      -	"Јул","Август","Септембар","Октобар","Новембар","Децембар" ],
      -	monthNamesShort: [ "Јан","Феб","Мар","Апр","Мај","Јун",
      -	"Јул","Авг","Сеп","Окт","Нов","Дец" ],
      -	dayNames: [ "Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота" ],
      -	dayNamesShort: [ "Нед","Пон","Уто","Сре","Чет","Пет","Суб" ],
      -	dayNamesMin: [ "Не","По","Ут","Ср","Че","Пе","Су" ],
      -	weekHeader: "Сед",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.sr );
      -
      -return datepicker.regional.sr;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-sv.js b/bower_components/jquery-ui/ui/i18n/datepicker-sv.js
      deleted file mode 100644
      index 92686efa4f..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-sv.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Swedish initialisation for the jQuery UI date picker plugin. */
      -/* Written by Anders Ekdahl ( anders@nomadiz.se). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.sv = {
      -	closeText: "Stäng",
      -	prevText: "&#xAB;Förra",
      -	nextText: "Nästa&#xBB;",
      -	currentText: "Idag",
      -	monthNames: [ "Januari","Februari","Mars","April","Maj","Juni",
      -	"Juli","Augusti","September","Oktober","November","December" ],
      -	monthNamesShort: [ "Jan","Feb","Mar","Apr","Maj","Jun",
      -	"Jul","Aug","Sep","Okt","Nov","Dec" ],
      -	dayNamesShort: [ "Sön","Mån","Tis","Ons","Tor","Fre","Lör" ],
      -	dayNames: [ "Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag" ],
      -	dayNamesMin: [ "Sö","Må","Ti","On","To","Fr","Lö" ],
      -	weekHeader: "Ve",
      -	dateFormat: "yy-mm-dd",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.sv );
      -
      -return datepicker.regional.sv;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-ta.js b/bower_components/jquery-ui/ui/i18n/datepicker-ta.js
      deleted file mode 100644
      index 722614dd06..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-ta.js
      +++ /dev/null
      @@ -1,53 +0,0 @@
      -/* Tamil (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by S A Sureshkumar (saskumar@live.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.ta = {
      -	closeText: "மூடு",
      -	prevText: "முன்னையது",
      -	nextText: "அடுத்தது",
      -	currentText: "இன்று",
      -	monthNames: [ "தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி",
      -	"ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி" ],
      -	monthNamesShort: [ "தை","மாசி","பங்","சித்","வைகா","ஆனி",
      -	"ஆடி","ஆவ","புர","ஐப்","கார்","மார்" ],
      -	dayNames: [
      -		"ஞாயிற்றுக்கிழமை",
      -		"திங்கட்கிழமை",
      -		"செவ்வாய்க்கிழமை",
      -		"புதன்கிழமை",
      -		"வியாழக்கிழமை",
      -		"வெள்ளிக்கிழமை",
      -		"சனிக்கிழமை"
      -	],
      -	dayNamesShort: [
      -		"ஞாயிறு",
      -		"திங்கள்",
      -		"செவ்வாய்",
      -		"புதன்",
      -		"வியாழன்",
      -		"வெள்ளி",
      -		"சனி"
      -	],
      -	dayNamesMin: [ "ஞா","தி","செ","பு","வி","வெ","ச" ],
      -	weekHeader: "Не",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.ta );
      -
      -return datepicker.regional.ta;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-th.js b/bower_components/jquery-ui/ui/i18n/datepicker-th.js
      deleted file mode 100644
      index 6de48cf968..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-th.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Thai initialisation for the jQuery UI date picker plugin. */
      -/* Written by pipo (pipo@sixhead.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.th = {
      -	closeText: "ปิด",
      -	prevText: "&#xAB;&#xA0;ย้อน",
      -	nextText: "ถัดไป&#xA0;&#xBB;",
      -	currentText: "วันนี้",
      -	monthNames: [ "มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน",
      -	"กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม" ],
      -	monthNamesShort: [ "ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.",
      -	"ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค." ],
      -	dayNames: [ "อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์" ],
      -	dayNamesShort: [ "อา.","จ.","อ.","พ.","พฤ.","ศ.","ส." ],
      -	dayNamesMin: [ "อา.","จ.","อ.","พ.","พฤ.","ศ.","ส." ],
      -	weekHeader: "Wk",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.th );
      -
      -return datepicker.regional.th;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-tj.js b/bower_components/jquery-ui/ui/i18n/datepicker-tj.js
      deleted file mode 100644
      index 8ede4ddcb0..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-tj.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Tajiki (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Abdurahmon Saidov (saidovab@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.tj = {
      -	closeText: "Идома",
      -	prevText: "&#x3c;Қафо",
      -	nextText: "Пеш&#x3e;",
      -	currentText: "Имрӯз",
      -	monthNames: [ "Январ","Феврал","Март","Апрел","Май","Июн",
      -	"Июл","Август","Сентябр","Октябр","Ноябр","Декабр" ],
      -	monthNamesShort: [ "Янв","Фев","Мар","Апр","Май","Июн",
      -	"Июл","Авг","Сен","Окт","Ноя","Дек" ],
      -	dayNames: [ "якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе" ],
      -	dayNamesShort: [ "якш","душ","сеш","чор","пан","ҷум","шан" ],
      -	dayNamesMin: [ "Як","Дш","Сш","Чш","Пш","Ҷм","Шн" ],
      -	weekHeader: "Хф",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.tj );
      -
      -return datepicker.regional.tj;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-tr.js b/bower_components/jquery-ui/ui/i18n/datepicker-tr.js
      deleted file mode 100644
      index 8328e21992..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-tr.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Turkish initialisation for the jQuery UI date picker plugin. */
      -/* Written by Izzet Emre Erkan (kara@karalamalar.net). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.tr = {
      -	closeText: "kapat",
      -	prevText: "&#x3C;geri",
      -	nextText: "ileri&#x3e",
      -	currentText: "bugün",
      -	monthNames: [ "Ocak","Şubat","Mart","Nisan","Mayıs","Haziran",
      -	"Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık" ],
      -	monthNamesShort: [ "Oca","Şub","Mar","Nis","May","Haz",
      -	"Tem","Ağu","Eyl","Eki","Kas","Ara" ],
      -	dayNames: [ "Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi" ],
      -	dayNamesShort: [ "Pz","Pt","Sa","Ça","Pe","Cu","Ct" ],
      -	dayNamesMin: [ "Pz","Pt","Sa","Ça","Pe","Cu","Ct" ],
      -	weekHeader: "Hf",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.tr );
      -
      -return datepicker.regional.tr;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-uk.js b/bower_components/jquery-ui/ui/i18n/datepicker-uk.js
      deleted file mode 100644
      index c82501ad28..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-uk.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -/* Ukrainian (UTF-8) initialisation for the jQuery UI date picker plugin. */
      -/* Written by Maxim Drogobitskiy (maxdao@gmail.com). */
      -/* Corrected by Igor Milla (igor.fsp.milla@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.uk = {
      -	closeText: "Закрити",
      -	prevText: "&#x3C;",
      -	nextText: "&#x3E;",
      -	currentText: "Сьогодні",
      -	monthNames: [ "Січень","Лютий","Березень","Квітень","Травень","Червень",
      -	"Липень","Серпень","Вересень","Жовтень","Листопад","Грудень" ],
      -	monthNamesShort: [ "Січ","Лют","Бер","Кві","Тра","Чер",
      -	"Лип","Сер","Вер","Жов","Лис","Гру" ],
      -	dayNames: [ "неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота" ],
      -	dayNamesShort: [ "нед","пнд","вів","срд","чтв","птн","сбт" ],
      -	dayNamesMin: [ "Нд","Пн","Вт","Ср","Чт","Пт","Сб" ],
      -	weekHeader: "Тиж",
      -	dateFormat: "dd.mm.yy",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.uk );
      -
      -return datepicker.regional.uk;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-vi.js b/bower_components/jquery-ui/ui/i18n/datepicker-vi.js
      deleted file mode 100644
      index 2c208ab71c..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-vi.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Vietnamese initialisation for the jQuery UI date picker plugin. */
      -/* Translated by Le Thanh Huy (lthanhhuy@cit.ctu.edu.vn). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional.vi = {
      -	closeText: "Đóng",
      -	prevText: "&#x3C;Trước",
      -	nextText: "Tiếp&#x3E;",
      -	currentText: "Hôm nay",
      -	monthNames: [ "Tháng Một", "Tháng Hai", "Tháng Ba", "Tháng Tư", "Tháng Năm", "Tháng Sáu",
      -	"Tháng Bảy", "Tháng Tám", "Tháng Chín", "Tháng Mười", "Tháng Mười Một", "Tháng Mười Hai" ],
      -	monthNamesShort: [ "Tháng 1", "Tháng 2", "Tháng 3", "Tháng 4", "Tháng 5", "Tháng 6",
      -	"Tháng 7", "Tháng 8", "Tháng 9", "Tháng 10", "Tháng 11", "Tháng 12" ],
      -	dayNames: [ "Chủ Nhật", "Thứ Hai", "Thứ Ba", "Thứ Tư", "Thứ Năm", "Thứ Sáu", "Thứ Bảy" ],
      -	dayNamesShort: [ "CN", "T2", "T3", "T4", "T5", "T6", "T7" ],
      -	dayNamesMin: [ "CN", "T2", "T3", "T4", "T5", "T6", "T7" ],
      -	weekHeader: "Tu",
      -	dateFormat: "dd/mm/yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: false,
      -	yearSuffix: "" };
      -datepicker.setDefaults( datepicker.regional.vi );
      -
      -return datepicker.regional.vi;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-zh-CN.js b/bower_components/jquery-ui/ui/i18n/datepicker-zh-CN.js
      deleted file mode 100644
      index 91f99b4ed5..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-zh-CN.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Chinese initialisation for the jQuery UI date picker plugin. */
      -/* Written by Cloudream (cloudream@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "zh-CN" ] = {
      -	closeText: "关闭",
      -	prevText: "&#x3C;上月",
      -	nextText: "下月&#x3E;",
      -	currentText: "今天",
      -	monthNames: [ "一月","二月","三月","四月","五月","六月",
      -	"七月","八月","九月","十月","十一月","十二月" ],
      -	monthNamesShort: [ "一月","二月","三月","四月","五月","六月",
      -	"七月","八月","九月","十月","十一月","十二月" ],
      -	dayNames: [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六" ],
      -	dayNamesShort: [ "周日","周一","周二","周三","周四","周五","周六" ],
      -	dayNamesMin: [ "日","一","二","三","四","五","六" ],
      -	weekHeader: "周",
      -	dateFormat: "yy-mm-dd",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: true,
      -	yearSuffix: "年" };
      -datepicker.setDefaults( datepicker.regional[ "zh-CN" ] );
      -
      -return datepicker.regional[ "zh-CN" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-zh-HK.js b/bower_components/jquery-ui/ui/i18n/datepicker-zh-HK.js
      deleted file mode 100644
      index 27f02bc659..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-zh-HK.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Chinese initialisation for the jQuery UI date picker plugin. */
      -/* Written by SCCY (samuelcychan@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "zh-HK" ] = {
      -	closeText: "關閉",
      -	prevText: "&#x3C;上月",
      -	nextText: "下月&#x3E;",
      -	currentText: "今天",
      -	monthNames: [ "一月","二月","三月","四月","五月","六月",
      -	"七月","八月","九月","十月","十一月","十二月" ],
      -	monthNamesShort: [ "一月","二月","三月","四月","五月","六月",
      -	"七月","八月","九月","十月","十一月","十二月" ],
      -	dayNames: [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六" ],
      -	dayNamesShort: [ "周日","周一","周二","周三","周四","周五","周六" ],
      -	dayNamesMin: [ "日","一","二","三","四","五","六" ],
      -	weekHeader: "周",
      -	dateFormat: "dd-mm-yy",
      -	firstDay: 0,
      -	isRTL: false,
      -	showMonthAfterYear: true,
      -	yearSuffix: "年" };
      -datepicker.setDefaults( datepicker.regional[ "zh-HK" ] );
      -
      -return datepicker.regional[ "zh-HK" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/i18n/datepicker-zh-TW.js b/bower_components/jquery-ui/ui/i18n/datepicker-zh-TW.js
      deleted file mode 100644
      index c20754bd51..0000000000
      --- a/bower_components/jquery-ui/ui/i18n/datepicker-zh-TW.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -/* Chinese initialisation for the jQuery UI date picker plugin. */
      -/* Written by Ressol (ressol@gmail.com). */
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "../widgets/datepicker" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery.datepicker );
      -	}
      -}( function( datepicker ) {
      -
      -datepicker.regional[ "zh-TW" ] = {
      -	closeText: "關閉",
      -	prevText: "&#x3C;上月",
      -	nextText: "下月&#x3E;",
      -	currentText: "今天",
      -	monthNames: [ "一月","二月","三月","四月","五月","六月",
      -	"七月","八月","九月","十月","十一月","十二月" ],
      -	monthNamesShort: [ "一月","二月","三月","四月","五月","六月",
      -	"七月","八月","九月","十月","十一月","十二月" ],
      -	dayNames: [ "星期日","星期一","星期二","星期三","星期四","星期五","星期六" ],
      -	dayNamesShort: [ "周日","周一","周二","周三","周四","周五","周六" ],
      -	dayNamesMin: [ "日","一","二","三","四","五","六" ],
      -	weekHeader: "周",
      -	dateFormat: "yy/mm/dd",
      -	firstDay: 1,
      -	isRTL: false,
      -	showMonthAfterYear: true,
      -	yearSuffix: "年" };
      -datepicker.setDefaults( datepicker.regional[ "zh-TW" ] );
      -
      -return datepicker.regional[ "zh-TW" ];
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/ie.js b/bower_components/jquery-ui/ui/ie.js
      deleted file mode 100644
      index 1ce6a8450d..0000000000
      --- a/bower_components/jquery-ui/ui/ie.js
      +++ /dev/null
      @@ -1,15 +0,0 @@
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -// This file is deprecated
      -return $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() );
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/jquery-1-7.js b/bower_components/jquery-ui/ui/jquery-1-7.js
      deleted file mode 100644
      index 252b427609..0000000000
      --- a/bower_components/jquery-ui/ui/jquery-1-7.js
      +++ /dev/null
      @@ -1,89 +0,0 @@
      -/*!
      - * jQuery UI Support for jQuery core 1.7.x 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - */
      -
      -//>>label: jQuery 1.7 Support
      -//>>group: Core
      -//>>description: Support version 1.7.x of jQuery core
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -// Support: jQuery 1.7 only
      -// Not a great way to check versions, but since we only support 1.7+ and only
      -// need to detect <1.8, this is a simple check that should suffice. Checking
      -// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0
      -// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting
      -// 1.7 anymore). See #11197 for why we're not using feature detection.
      -if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) {
      -
      -	// Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight()
      -	// Unlike jQuery Core 1.8+, these only support numeric values to set the
      -	// dimensions in pixels
      -	$.each( [ "Width", "Height" ], function( i, name ) {
      -		var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
      -			type = name.toLowerCase(),
      -			orig = {
      -				innerWidth: $.fn.innerWidth,
      -				innerHeight: $.fn.innerHeight,
      -				outerWidth: $.fn.outerWidth,
      -				outerHeight: $.fn.outerHeight
      -			};
      -
      -		function reduce( elem, size, border, margin ) {
      -			$.each( side, function() {
      -				size -= parseFloat( $.css( elem, "padding" + this ) ) || 0;
      -				if ( border ) {
      -					size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0;
      -				}
      -				if ( margin ) {
      -					size -= parseFloat( $.css( elem, "margin" + this ) ) || 0;
      -				}
      -			} );
      -			return size;
      -		}
      -
      -		$.fn[ "inner" + name ] = function( size ) {
      -			if ( size === undefined ) {
      -				return orig[ "inner" + name ].call( this );
      -			}
      -
      -			return this.each( function() {
      -				$( this ).css( type, reduce( this, size ) + "px" );
      -			} );
      -		};
      -
      -		$.fn[ "outer" + name ] = function( size, margin ) {
      -			if ( typeof size !== "number" ) {
      -				return orig[ "outer" + name ].call( this, size );
      -			}
      -
      -			return this.each( function() {
      -				$( this ).css( type, reduce( this, size, true, margin ) + "px" );
      -			} );
      -		};
      -	} );
      -
      -	$.fn.addBack = function( selector ) {
      -		return this.add( selector == null ?
      -			this.prevObject : this.prevObject.filter( selector )
      -		);
      -	};
      -}
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/keycode.js b/bower_components/jquery-ui/ui/keycode.js
      deleted file mode 100644
      index c02a6df52b..0000000000
      --- a/bower_components/jquery-ui/ui/keycode.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/*!
      - * jQuery UI Keycode 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Keycode
      -//>>group: Core
      -//>>description: Provide keycodes as keynames
      -//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -return $.ui.keyCode = {
      -	BACKSPACE: 8,
      -	COMMA: 188,
      -	DELETE: 46,
      -	DOWN: 40,
      -	END: 35,
      -	ENTER: 13,
      -	ESCAPE: 27,
      -	HOME: 36,
      -	LEFT: 37,
      -	PAGE_DOWN: 34,
      -	PAGE_UP: 33,
      -	PERIOD: 190,
      -	RIGHT: 39,
      -	SPACE: 32,
      -	TAB: 9,
      -	UP: 38
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/labels.js b/bower_components/jquery-ui/ui/labels.js
      deleted file mode 100644
      index 57ab75267f..0000000000
      --- a/bower_components/jquery-ui/ui/labels.js
      +++ /dev/null
      @@ -1,62 +0,0 @@
      -/*!
      - * jQuery UI Labels 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: labels
      -//>>group: Core
      -//>>description: Find all the labels associated with a given input
      -//>>docs: http://api.jqueryui.com/labels/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version", "./escape-selector" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -return $.fn.labels = function() {
      -	var ancestor, selector, id, labels, ancestors;
      -
      -	// Check control.labels first
      -	if ( this[ 0 ].labels && this[ 0 ].labels.length ) {
      -		return this.pushStack( this[ 0 ].labels );
      -	}
      -
      -	// Support: IE <= 11, FF <= 37, Android <= 2.3 only
      -	// Above browsers do not support control.labels. Everything below is to support them
      -	// as well as document fragments. control.labels does not work on document fragments
      -	labels = this.eq( 0 ).parents( "label" );
      -
      -	// Look for the label based on the id
      -	id = this.attr( "id" );
      -	if ( id ) {
      -
      -		// We don't search against the document in case the element
      -		// is disconnected from the DOM
      -		ancestor = this.eq( 0 ).parents().last();
      -
      -		// Get a full set of top level ancestors
      -		ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() );
      -
      -		// Create a selector for the label based on the id
      -		selector = "label[for='" + $.ui.escapeSelector( id ) + "']";
      -
      -		labels = labels.add( ancestors.find( selector ).addBack( selector ) );
      -
      -	}
      -
      -	// Return whatever we have found for labels
      -	return this.pushStack( labels );
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/minified/core.js b/bower_components/jquery-ui/ui/minified/core.js
      deleted file mode 100644
      index 11192b62ef..0000000000
      --- a/bower_components/jquery-ui/ui/minified/core.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(){define(["jquery","./data","./disable-selection","./focusable","./form","./ie","./keycode","./labels","./jquery-1-7","./plugin","./safe-active-element","./safe-blur","./scroll-parent","./tabbable","./unique-id","./version"])}();
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/data.js b/bower_components/jquery-ui/ui/minified/data.js
      deleted file mode 100644
      index 7da59216f8..0000000000
      --- a/bower_components/jquery-ui/ui/minified/data.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.extend(a.expr[":"],{data:a.expr.createPseudo?a.expr.createPseudo(function(b){return function(c){return!!a.data(c,b)}}):function(b,c,d){return!!a.data(b,d[3])}})});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/disable-selection.js b/bower_components/jquery-ui/ui/minified/disable-selection.js
      deleted file mode 100644
      index 52058d1183..0000000000
      --- a/bower_components/jquery-ui/ui/minified/disable-selection.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.fn.extend({disableSelection:function(){var a="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(a+".ui-disableSelection",function(a){a.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}})});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/effect.js b/bower_components/jquery-ui/ui/minified/effect.js
      deleted file mode 100644
      index ab41475626..0000000000
      --- a/bower_components/jquery-ui/ui/minified/effect.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){var b="ui-effects-",c="ui-effects-style",d="ui-effects-animated",e=a;return a.effects={effect:{}},function(a,b){function c(a,b,c){var d=l[b.type]||{};return null==a?c||!b.def?null:b.def:(a=d.floor?~~a:parseFloat(a),isNaN(a)?b.def:d.mod?(a+d.mod)%d.mod:0>a?0:d.max<a?d.max:a)}function d(b){var c=j(),d=c._rgba=[];return b=b.toLowerCase(),o(i,function(a,e){var f,g=e.re.exec(b),h=g&&e.parse(g),i=e.space||"rgba";if(h)return f=c[i](h),c[k[i].cache]=f[k[i].cache],d=c._rgba=f._rgba,!1}),d.length?("0,0,0,0"===d.join()&&a.extend(d,f.transparent),c):f[b]}function e(a,b,c){return c=(c+1)%1,6*c<1?a+(b-a)*c*6:2*c<1?b:3*c<2?a+(b-a)*(2/3-c)*6:a}var f,g="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",h=/^([\-+])=\s*(\d+\.?\d*)/,i=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(a){return[a[1],a[2],a[3],a[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(a){return[2.55*a[1],2.55*a[2],2.55*a[3],a[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(a){return[a[1],a[2]/100,a[3]/100,a[4]]}}],j=a.Color=function(b,c,d,e){return new a.Color.fn.parse(b,c,d,e)},k={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},l={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},m=j.support={},n=a("<p>")[0],o=a.each;n.style.cssText="background-color:rgba(1,1,1,.5)",m.rgba=n.style.backgroundColor.indexOf("rgba")>-1,o(k,function(a,b){b.cache="_"+a,b.props.alpha={idx:3,type:"percent",def:1}}),j.fn=a.extend(j.prototype,{parse:function(e,g,h,i){if(e===b)return this._rgba=[null,null,null,null],this;(e.jquery||e.nodeType)&&(e=a(e).css(g),g=b);var l=this,m=a.type(e),n=this._rgba=[];return g!==b&&(e=[e,g,h,i],m="array"),"string"===m?this.parse(d(e)||f._default):"array"===m?(o(k.rgba.props,function(a,b){n[b.idx]=c(e[b.idx],b)}),this):"object"===m?(e instanceof j?o(k,function(a,b){e[b.cache]&&(l[b.cache]=e[b.cache].slice())}):o(k,function(b,d){var f=d.cache;o(d.props,function(a,b){if(!l[f]&&d.to){if("alpha"===a||null==e[a])return;l[f]=d.to(l._rgba)}l[f][b.idx]=c(e[a],b,!0)}),l[f]&&a.inArray(null,l[f].slice(0,3))<0&&(l[f][3]=1,d.from&&(l._rgba=d.from(l[f])))}),this):void 0},is:function(a){var b=j(a),c=!0,d=this;return o(k,function(a,e){var f,g=b[e.cache];return g&&(f=d[e.cache]||e.to&&e.to(d._rgba)||[],o(e.props,function(a,b){if(null!=g[b.idx])return c=g[b.idx]===f[b.idx]})),c}),c},_space:function(){var a=[],b=this;return o(k,function(c,d){b[d.cache]&&a.push(c)}),a.pop()},transition:function(a,b){var d=j(a),e=d._space(),f=k[e],g=0===this.alpha()?j("transparent"):this,h=g[f.cache]||f.to(g._rgba),i=h.slice();return d=d[f.cache],o(f.props,function(a,e){var f=e.idx,g=h[f],j=d[f],k=l[e.type]||{};null!==j&&(null===g?i[f]=j:(k.mod&&(j-g>k.mod/2?g+=k.mod:g-j>k.mod/2&&(g-=k.mod)),i[f]=c((j-g)*b+g,e)))}),this[e](i)},blend:function(b){if(1===this._rgba[3])return this;var c=this._rgba.slice(),d=c.pop(),e=j(b)._rgba;return j(a.map(c,function(a,b){return(1-d)*e[b]+d*a}))},toRgbaString:function(){var b="rgba(",c=a.map(this._rgba,function(a,b){return null==a?b>2?1:0:a});return 1===c[3]&&(c.pop(),b="rgb("),b+c.join()+")"},toHslaString:function(){var b="hsla(",c=a.map(this.hsla(),function(a,b){return null==a&&(a=b>2?1:0),b&&b<3&&(a=Math.round(100*a)+"%"),a});return 1===c[3]&&(c.pop(),b="hsl("),b+c.join()+")"},toHexString:function(b){var c=this._rgba.slice(),d=c.pop();return b&&c.push(~~(255*d)),"#"+a.map(c,function(a){return a=(a||0).toString(16),1===a.length?"0"+a:a}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),j.fn.parse.prototype=j.fn,k.hsla.to=function(a){if(null==a[0]||null==a[1]||null==a[2])return[null,null,null,a[3]];var b,c,d=a[0]/255,e=a[1]/255,f=a[2]/255,g=a[3],h=Math.max(d,e,f),i=Math.min(d,e,f),j=h-i,k=h+i,l=.5*k;return b=i===h?0:d===h?60*(e-f)/j+360:e===h?60*(f-d)/j+120:60*(d-e)/j+240,c=0===j?0:l<=.5?j/k:j/(2-k),[Math.round(b)%360,c,l,null==g?1:g]},k.hsla.from=function(a){if(null==a[0]||null==a[1]||null==a[2])return[null,null,null,a[3]];var b=a[0]/360,c=a[1],d=a[2],f=a[3],g=d<=.5?d*(1+c):d+c-d*c,h=2*d-g;return[Math.round(255*e(h,g,b+1/3)),Math.round(255*e(h,g,b)),Math.round(255*e(h,g,b-1/3)),f]},o(k,function(d,e){var f=e.props,g=e.cache,i=e.to,k=e.from;j.fn[d]=function(d){if(i&&!this[g]&&(this[g]=i(this._rgba)),d===b)return this[g].slice();var e,h=a.type(d),l="array"===h||"object"===h?d:arguments,m=this[g].slice();return o(f,function(a,b){var d=l["object"===h?a:b.idx];null==d&&(d=m[b.idx]),m[b.idx]=c(d,b)}),k?(e=j(k(m)),e[g]=m,e):j(m)},o(f,function(b,c){j.fn[b]||(j.fn[b]=function(e){var f,g=a.type(e),i="alpha"===b?this._hsla?"hsla":"rgba":d,j=this[i](),k=j[c.idx];return"undefined"===g?k:("function"===g&&(e=e.call(this,k),g=a.type(e)),null==e&&c.empty?this:("string"===g&&(f=h.exec(e),f&&(e=k+parseFloat(f[2])*("+"===f[1]?1:-1))),j[c.idx]=e,this[i](j)))})})}),j.hook=function(b){var c=b.split(" ");o(c,function(b,c){a.cssHooks[c]={set:function(b,e){var f,g,h="";if("transparent"!==e&&("string"!==a.type(e)||(f=d(e)))){if(e=j(f||e),!m.rgba&&1!==e._rgba[3]){for(g="backgroundColor"===c?b.parentNode:b;(""===h||"transparent"===h)&&g&&g.style;)try{h=a.css(g,"backgroundColor"),g=g.parentNode}catch(i){}e=e.blend(h&&"transparent"!==h?h:"_default")}e=e.toRgbaString()}try{b.style[c]=e}catch(i){}}},a.fx.step[c]=function(b){b.colorInit||(b.start=j(b.elem,c),b.end=j(b.end),b.colorInit=!0),a.cssHooks[c].set(b.elem,b.start.transition(b.end,b.pos))}})},j.hook(g),a.cssHooks.borderColor={expand:function(a){var b={};return o(["Top","Right","Bottom","Left"],function(c,d){b["border"+d+"Color"]=a}),b}},f=a.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(e),function(){function b(b){var c,d,e=b.ownerDocument.defaultView?b.ownerDocument.defaultView.getComputedStyle(b,null):b.currentStyle,f={};if(e&&e.length&&e[0]&&e[e[0]])for(d=e.length;d--;)c=e[d],"string"==typeof e[c]&&(f[a.camelCase(c)]=e[c]);else for(c in e)"string"==typeof e[c]&&(f[c]=e[c]);return f}function c(b,c){var d,e,g={};for(d in c)e=c[d],b[d]!==e&&(f[d]||!a.fx.step[d]&&isNaN(parseFloat(e))||(g[d]=e));return g}var d=["add","remove","toggle"],f={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};a.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(b,c){a.fx.step[c]=function(a){("none"!==a.end&&!a.setAttr||1===a.pos&&!a.setAttr)&&(e.style(a.elem,c,a.end),a.setAttr=!0)}}),a.fn.addBack||(a.fn.addBack=function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}),a.effects.animateClass=function(e,f,g,h){var i=a.speed(f,g,h);return this.queue(function(){var f,g=a(this),h=g.attr("class")||"",j=i.children?g.find("*").addBack():g;j=j.map(function(){var c=a(this);return{el:c,start:b(this)}}),f=function(){a.each(d,function(a,b){e[b]&&g[b+"Class"](e[b])})},f(),j=j.map(function(){return this.end=b(this.el[0]),this.diff=c(this.start,this.end),this}),g.attr("class",h),j=j.map(function(){var b=this,c=a.Deferred(),d=a.extend({},i,{queue:!1,complete:function(){c.resolve(b)}});return this.el.animate(this.diff,d),c.promise()}),a.when.apply(a,j.get()).done(function(){f(),a.each(arguments,function(){var b=this.el;a.each(this.diff,function(a){b.css(a,"")})}),i.complete.call(g[0])})})},a.fn.extend({addClass:function(b){return function(c,d,e,f){return d?a.effects.animateClass.call(this,{add:c},d,e,f):b.apply(this,arguments)}}(a.fn.addClass),removeClass:function(b){return function(c,d,e,f){return arguments.length>1?a.effects.animateClass.call(this,{remove:c},d,e,f):b.apply(this,arguments)}}(a.fn.removeClass),toggleClass:function(b){return function(c,d,e,f,g){return"boolean"==typeof d||void 0===d?e?a.effects.animateClass.call(this,d?{add:c}:{remove:c},e,f,g):b.apply(this,arguments):a.effects.animateClass.call(this,{toggle:c},d,e,f)}}(a.fn.toggleClass),switchClass:function(b,c,d,e,f){return a.effects.animateClass.call(this,{add:c,remove:b},d,e,f)}})}(),function(){function e(b,c,d,e){return a.isPlainObject(b)&&(c=b,b=b.effect),b={effect:b},null==c&&(c={}),a.isFunction(c)&&(e=c,d=null,c={}),("number"==typeof c||a.fx.speeds[c])&&(e=d,d=c,c={}),a.isFunction(d)&&(e=d,d=null),c&&a.extend(b,c),d=d||c.duration,b.duration=a.fx.off?0:"number"==typeof d?d:d in a.fx.speeds?a.fx.speeds[d]:a.fx.speeds._default,b.complete=e||c.complete,b}function f(b){return!(b&&"number"!=typeof b&&!a.fx.speeds[b])||("string"==typeof b&&!a.effects.effect[b]||(!!a.isFunction(b)||"object"==typeof b&&!b.effect))}function g(a,b){var c=b.outerWidth(),d=b.outerHeight(),e=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,f=e.exec(a)||["",0,c,d,0];return{top:parseFloat(f[1])||0,right:"auto"===f[2]?c:parseFloat(f[2]),bottom:"auto"===f[3]?d:parseFloat(f[3]),left:parseFloat(f[4])||0}}a.expr&&a.expr.filters&&a.expr.filters.animated&&(a.expr.filters.animated=function(b){return function(c){return!!a(c).data(d)||b(c)}}(a.expr.filters.animated)),a.uiBackCompat!==!1&&a.extend(a.effects,{save:function(a,c){for(var d=0,e=c.length;d<e;d++)null!==c[d]&&a.data(b+c[d],a[0].style[c[d]])},restore:function(a,c){for(var d,e=0,f=c.length;e<f;e++)null!==c[e]&&(d=a.data(b+c[e]),a.css(c[e],d))},setMode:function(a,b){return"toggle"===b&&(b=a.is(":hidden")?"show":"hide"),b},createWrapper:function(b){if(b.parent().is(".ui-effects-wrapper"))return b.parent();var c={width:b.outerWidth(!0),height:b.outerHeight(!0),"float":b.css("float")},d=a("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),e={width:b.width(),height:b.height()},f=document.activeElement;try{f.id}catch(g){f=document.body}return b.wrap(d),(b[0]===f||a.contains(b[0],f))&&a(f).trigger("focus"),d=b.parent(),"static"===b.css("position")?(d.css({position:"relative"}),b.css({position:"relative"})):(a.extend(c,{position:b.css("position"),zIndex:b.css("z-index")}),a.each(["top","left","bottom","right"],function(a,d){c[d]=b.css(d),isNaN(parseInt(c[d],10))&&(c[d]="auto")}),b.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),b.css(e),d.css(c).show()},removeWrapper:function(b){var c=document.activeElement;return b.parent().is(".ui-effects-wrapper")&&(b.parent().replaceWith(b),(b[0]===c||a.contains(b[0],c))&&a(c).trigger("focus")),b}}),a.extend(a.effects,{version:"1.12.1",define:function(b,c,d){return d||(d=c,c="effect"),a.effects.effect[b]=d,a.effects.effect[b].mode=c,d},scaledDimensions:function(a,b,c){if(0===b)return{height:0,width:0,outerHeight:0,outerWidth:0};var d="horizontal"!==c?(b||100)/100:1,e="vertical"!==c?(b||100)/100:1;return{height:a.height()*e,width:a.width()*d,outerHeight:a.outerHeight()*e,outerWidth:a.outerWidth()*d}},clipToBox:function(a){return{width:a.clip.right-a.clip.left,height:a.clip.bottom-a.clip.top,left:a.clip.left,top:a.clip.top}},unshift:function(a,b,c){var d=a.queue();b>1&&d.splice.apply(d,[1,0].concat(d.splice(b,c))),a.dequeue()},saveStyle:function(a){a.data(c,a[0].style.cssText)},restoreStyle:function(a){a[0].style.cssText=a.data(c)||"",a.removeData(c)},mode:function(a,b){var c=a.is(":hidden");return"toggle"===b&&(b=c?"show":"hide"),(c?"hide"===b:"show"===b)&&(b="none"),b},getBaseline:function(a,b){var c,d;switch(a[0]){case"top":c=0;break;case"middle":c=.5;break;case"bottom":c=1;break;default:c=a[0]/b.height}switch(a[1]){case"left":d=0;break;case"center":d=.5;break;case"right":d=1;break;default:d=a[1]/b.width}return{x:d,y:c}},createPlaceholder:function(c){var d,e=c.css("position"),f=c.position();return c.css({marginTop:c.css("marginTop"),marginBottom:c.css("marginBottom"),marginLeft:c.css("marginLeft"),marginRight:c.css("marginRight")}).outerWidth(c.outerWidth()).outerHeight(c.outerHeight()),/^(static|relative)/.test(e)&&(e="absolute",d=a("<"+c[0].nodeName+">").insertAfter(c).css({display:/^(inline|ruby)/.test(c.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:c.css("marginTop"),marginBottom:c.css("marginBottom"),marginLeft:c.css("marginLeft"),marginRight:c.css("marginRight"),"float":c.css("float")}).outerWidth(c.outerWidth()).outerHeight(c.outerHeight()).addClass("ui-effects-placeholder"),c.data(b+"placeholder",d)),c.css({position:e,left:f.left,top:f.top}),d},removePlaceholder:function(a){var c=b+"placeholder",d=a.data(c);d&&(d.remove(),a.removeData(c))},cleanUp:function(b){a.effects.restoreStyle(b),a.effects.removePlaceholder(b)},setTransition:function(b,c,d,e){return e=e||{},a.each(c,function(a,c){var f=b.cssUnit(c);f[0]>0&&(e[c]=f[0]*d+f[1])}),e}}),a.fn.extend({effect:function(){function b(b){function e(){i.removeData(d),a.effects.cleanUp(i),"hide"===c.mode&&i.hide(),h()}function h(){a.isFunction(j)&&j.call(i[0]),a.isFunction(b)&&b()}var i=a(this);c.mode=l.shift(),a.uiBackCompat===!1||g?"none"===c.mode?(i[k](),h()):f.call(i[0],c,e):(i.is(":hidden")?"hide"===k:"show"===k)?(i[k](),h()):f.call(i[0],c,h)}var c=e.apply(this,arguments),f=a.effects.effect[c.effect],g=f.mode,h=c.queue,i=h||"fx",j=c.complete,k=c.mode,l=[],m=function(b){var c=a(this),e=a.effects.mode(c,k)||g;c.data(d,!0),l.push(e),g&&("show"===e||e===g&&"hide"===e)&&c.show(),g&&"none"===e||a.effects.saveStyle(c),a.isFunction(b)&&b()};return a.fx.off||!f?k?this[k](c.duration,j):this.each(function(){j&&j.call(this)}):h===!1?this.each(m).each(b):this.queue(i,m).queue(i,b)},show:function(a){return function(b){if(f(b))return a.apply(this,arguments);var c=e.apply(this,arguments);return c.mode="show",this.effect.call(this,c)}}(a.fn.show),hide:function(a){return function(b){if(f(b))return a.apply(this,arguments);var c=e.apply(this,arguments);return c.mode="hide",this.effect.call(this,c)}}(a.fn.hide),toggle:function(a){return function(b){if(f(b)||"boolean"==typeof b)return a.apply(this,arguments);var c=e.apply(this,arguments);return c.mode="toggle",this.effect.call(this,c)}}(a.fn.toggle),cssUnit:function(b){var c=this.css(b),d=[];return a.each(["em","px","%","pt"],function(a,b){c.indexOf(b)>0&&(d=[parseFloat(c),b])}),d},cssClip:function(a){return a?this.css("clip","rect("+a.top+"px "+a.right+"px "+a.bottom+"px "+a.left+"px)"):g(this.css("clip"),this)},transfer:function(b,c){var d=a(this),e=a(b.to),f="fixed"===e.css("position"),g=a("body"),h=f?g.scrollTop():0,i=f?g.scrollLeft():0,j=e.offset(),k={top:j.top-h,left:j.left-i,height:e.innerHeight(),width:e.innerWidth()},l=d.offset(),m=a("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(b.className).css({top:l.top-h,left:l.left-i,height:d.innerHeight(),width:d.innerWidth(),position:f?"fixed":"absolute"}).animate(k,b.duration,b.easing,function(){m.remove(),a.isFunction(c)&&c()})}}),a.fx.step.clip=function(b){b.clipInit||(b.start=a(b.elem).cssClip(),"string"==typeof b.end&&(b.end=g(b.end,b.elem)),b.clipInit=!0),a(b.elem).cssClip({top:b.pos*(b.end.top-b.start.top)+b.start.top,right:b.pos*(b.end.right-b.start.right)+b.start.right,bottom:b.pos*(b.end.bottom-b.start.bottom)+b.start.bottom,left:b.pos*(b.end.left-b.start.left)+b.start.left})}}(),function(){var b={};a.each(["Quad","Cubic","Quart","Quint","Expo"],function(a,c){b[c]=function(b){return Math.pow(b,a+2)}}),a.extend(b,{Sine:function(a){return 1-Math.cos(a*Math.PI/2)},Circ:function(a){return 1-Math.sqrt(1-a*a)},Elastic:function(a){return 0===a||1===a?a:-Math.pow(2,8*(a-1))*Math.sin((80*(a-1)-7.5)*Math.PI/15)},Back:function(a){return a*a*(3*a-2)},Bounce:function(a){for(var b,c=4;a<((b=Math.pow(2,--c))-1)/11;);return 1/Math.pow(4,3-c)-7.5625*Math.pow((3*b-2)/22-a,2)}}),a.each(b,function(b,c){a.easing["easeIn"+b]=c,a.easing["easeOut"+b]=function(a){return 1-c(1-a)},a.easing["easeInOut"+b]=function(a){return a<.5?c(2*a)/2:1-c(a*-2+2)/2}})}(),a.effects});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/escape-selector.js b/bower_components/jquery-ui/ui/minified/escape-selector.js
      deleted file mode 100644
      index 0e61ecfe85..0000000000
      --- a/bower_components/jquery-ui/ui/minified/escape-selector.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.ui.escapeSelector=function(){var a=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(b){return b.replace(a,"\\$1")}}()});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/focusable.js b/bower_components/jquery-ui/ui/minified/focusable.js
      deleted file mode 100644
      index 78c6156c28..0000000000
      --- a/bower_components/jquery-ui/ui/minified/focusable.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){function b(a){for(var b=a.css("visibility");"inherit"===b;)a=a.parent(),b=a.css("visibility");return"hidden"!==b}return a.ui.focusable=function(c,d){var e,f,g,h,i,j=c.nodeName.toLowerCase();return"area"===j?(e=c.parentNode,f=e.name,!(!c.href||!f||"map"!==e.nodeName.toLowerCase())&&(g=a("img[usemap='#"+f+"']"),g.length>0&&g.is(":visible"))):(/^(input|select|textarea|button|object)$/.test(j)?(h=!c.disabled,h&&(i=a(c).closest("fieldset")[0],i&&(h=!i.disabled))):h="a"===j?c.href||d:d,h&&a(c).is(":visible")&&b(a(c)))},a.extend(a.expr[":"],{focusable:function(b){return a.ui.focusable(b,null!=a.attr(b,"tabindex"))}}),a.ui.focusable});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/form-reset-mixin.js b/bower_components/jquery-ui/ui/minified/form-reset-mixin.js
      deleted file mode 100644
      index 3378d77431..0000000000
      --- a/bower_components/jquery-ui/ui/minified/form-reset-mixin.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./form","./version"],a):a(jQuery)}(function(a){return a.ui.formResetMixin={_formResetHandler:function(){var b=a(this);setTimeout(function(){var c=b.data("ui-form-reset-instances");a.each(c,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var a=this.form.data("ui-form-reset-instances")||[];a.length||this.form.on("reset.ui-form-reset",this._formResetHandler),a.push(this),this.form.data("ui-form-reset-instances",a)}},_unbindFormResetHandler:function(){if(this.form.length){var b=this.form.data("ui-form-reset-instances");b.splice(a.inArray(this,b),1),b.length?this.form.data("ui-form-reset-instances",b):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/form.js b/bower_components/jquery-ui/ui/minified/form.js
      deleted file mode 100644
      index 2e60eb5cf9..0000000000
      --- a/bower_components/jquery-ui/ui/minified/form.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):a(this[0].form)}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-af.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-af.js
      deleted file mode 100644
      index f01725fb5d..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-af.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.af={closeText:"Selekteer",prevText:"Vorige",nextText:"Volgende",currentText:"Vandag",monthNames:["Januarie","Februarie","Maart","April","Mei","Junie","Julie","Augustus","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mrt","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrydag","Saterdag"],dayNamesShort:["Son","Maa","Din","Woe","Don","Vry","Sat"],dayNamesMin:["So","Ma","Di","Wo","Do","Vr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.af),a.regional.af});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ar-DZ.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ar-DZ.js
      deleted file mode 100644
      index 58888db857..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ar-DZ.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["ar-DZ"]={closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["جانفي","فيفري","مارس","أفريل","ماي","جوان","جويلية","أوت","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["ar-DZ"]),a.regional["ar-DZ"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ar.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ar.js
      deleted file mode 100644
      index 95fddb903d..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ar.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ar={closeText:"إغلاق",prevText:"&#x3C;السابق",nextText:"التالي&#x3E;",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ar),a.regional.ar});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-az.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-az.js
      deleted file mode 100644
      index 7087aa7073..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-az.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.az={closeText:"Bağla",prevText:"&#x3C;Geri",nextText:"İrəli&#x3E;",currentText:"Bugün",monthNames:["Yanvar","Fevral","Mart","Aprel","May","İyun","İyul","Avqust","Sentyabr","Oktyabr","Noyabr","Dekabr"],monthNamesShort:["Yan","Fev","Mar","Apr","May","İyun","İyul","Avq","Sen","Okt","Noy","Dek"],dayNames:["Bazar","Bazar ertəsi","Çərşənbə axşamı","Çərşənbə","Cümə axşamı","Cümə","Şənbə"],dayNamesShort:["B","Be","Ça","Ç","Ca","C","Ş"],dayNamesMin:["B","B","Ç","С","Ç","C","Ş"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.az),a.regional.az});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-be.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-be.js
      deleted file mode 100644
      index b88a8b1520..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-be.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.be={closeText:"Зачыніць",prevText:"&larr;Папяр.",nextText:"Наст.&rarr;",currentText:"Сёньня",monthNames:["Студзень","Люты","Сакавік","Красавік","Травень","Чэрвень","Ліпень","Жнівень","Верасень","Кастрычнік","Лістапад","Сьнежань"],monthNamesShort:["Сту","Лют","Сак","Кра","Тра","Чэр","Ліп","Жні","Вер","Кас","Ліс","Сьн"],dayNames:["нядзеля","панядзелак","аўторак","серада","чацьвер","пятніца","субота"],dayNamesShort:["ндз","пнд","аўт","срд","чцв","птн","сбт"],dayNamesMin:["Нд","Пн","Аў","Ср","Чц","Пт","Сб"],weekHeader:"Тд",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.be),a.regional.be});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-bg.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-bg.js
      deleted file mode 100644
      index 0f214a92ec..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-bg.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.bg={closeText:"затвори",prevText:"&#x3C;назад",nextText:"напред&#x3E;",nextBigText:"&#x3E;&#x3E;",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.bg),a.regional.bg});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-bs.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-bs.js
      deleted file mode 100644
      index face37e77b..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-bs.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.bs={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Juni","Juli","August","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.bs),a.regional.bs});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ca.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ca.js
      deleted file mode 100644
      index d1336dde38..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ca.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ca={closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ca),a.regional.ca});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-cs.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-cs.js
      deleted file mode 100644
      index 992e1a5104..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-cs.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.cs={closeText:"Zavřít",prevText:"&#x3C;Dříve",nextText:"Později&#x3E;",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.cs),a.regional.cs});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-cy-GB.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-cy-GB.js
      deleted file mode 100644
      index 6d381c42b0..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-cy-GB.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["cy-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["Ionawr","Chwefror","Mawrth","Ebrill","Mai","Mehefin","Gorffennaf","Awst","Medi","Hydref","Tachwedd","Rhagfyr"],monthNamesShort:["Ion","Chw","Maw","Ebr","Mai","Meh","Gor","Aws","Med","Hyd","Tac","Rha"],dayNames:["Dydd Sul","Dydd Llun","Dydd Mawrth","Dydd Mercher","Dydd Iau","Dydd Gwener","Dydd Sadwrn"],dayNamesShort:["Sul","Llu","Maw","Mer","Iau","Gwe","Sad"],dayNamesMin:["Su","Ll","Ma","Me","Ia","Gw","Sa"],weekHeader:"Wy",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["cy-GB"]),a.regional["cy-GB"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-da.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-da.js
      deleted file mode 100644
      index 8a41994c8e..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-da.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.da={closeText:"Luk",prevText:"&#x3C;Forrige",nextText:"Næste&#x3E;",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.da),a.regional.da});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-de.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-de.js
      deleted file mode 100644
      index ffceadca31..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-de.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.de={closeText:"Schließen",prevText:"&#x3C;Zurück",nextText:"Vor&#x3E;",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.de),a.regional.de});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-el.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-el.js
      deleted file mode 100644
      index 101225960d..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-el.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.el={closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.el),a.regional.el});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-AU.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-AU.js
      deleted file mode 100644
      index f5b89946e3..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-AU.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["en-AU"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["en-AU"]),a.regional["en-AU"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-GB.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-GB.js
      deleted file mode 100644
      index b0acd30765..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-GB.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["en-GB"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["en-GB"]),a.regional["en-GB"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-NZ.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-NZ.js
      deleted file mode 100644
      index 264dfd2d7b..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-en-NZ.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["en-NZ"]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["en-NZ"]),a.regional["en-NZ"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-eo.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-eo.js
      deleted file mode 100644
      index 4cc590ad41..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-eo.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.eo={closeText:"Fermi",prevText:"&#x3C;Anta",nextText:"Sekv&#x3E;",currentText:"Nuna",monthNames:["Januaro","Februaro","Marto","Aprilo","Majo","Junio","Julio","Aŭgusto","Septembro","Oktobro","Novembro","Decembro"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aŭg","Sep","Okt","Nov","Dec"],dayNames:["Dimanĉo","Lundo","Mardo","Merkredo","Ĵaŭdo","Vendredo","Sabato"],dayNamesShort:["Dim","Lun","Mar","Mer","Ĵaŭ","Ven","Sab"],dayNamesMin:["Di","Lu","Ma","Me","Ĵa","Ve","Sa"],weekHeader:"Sb",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.eo),a.regional.eo});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-es.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-es.js
      deleted file mode 100644
      index 3291f982fc..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-es.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.es={closeText:"Cerrar",prevText:"&#x3C;Ant",nextText:"Sig&#x3E;",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.es),a.regional.es});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-et.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-et.js
      deleted file mode 100644
      index 4c41b0bc5b..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-et.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.et={closeText:"Sulge",prevText:"Eelnev",nextText:"Järgnev",currentText:"Täna",monthNames:["Jaanuar","Veebruar","Märts","Aprill","Mai","Juuni","Juuli","August","September","Oktoober","November","Detsember"],monthNamesShort:["Jaan","Veebr","Märts","Apr","Mai","Juuni","Juuli","Aug","Sept","Okt","Nov","Dets"],dayNames:["Pühapäev","Esmaspäev","Teisipäev","Kolmapäev","Neljapäev","Reede","Laupäev"],dayNamesShort:["Pühap","Esmasp","Teisip","Kolmap","Neljap","Reede","Laup"],dayNamesMin:["P","E","T","K","N","R","L"],weekHeader:"näd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.et),a.regional.et});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-eu.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-eu.js
      deleted file mode 100644
      index e9d3c05ef8..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-eu.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.eu={closeText:"Egina",prevText:"&#x3C;Aur",nextText:"Hur&#x3E;",currentText:"Gaur",monthNames:["urtarrila","otsaila","martxoa","apirila","maiatza","ekaina","uztaila","abuztua","iraila","urria","azaroa","abendua"],monthNamesShort:["urt.","ots.","mar.","api.","mai.","eka.","uzt.","abu.","ira.","urr.","aza.","abe."],dayNames:["igandea","astelehena","asteartea","asteazkena","osteguna","ostirala","larunbata"],dayNamesShort:["ig.","al.","ar.","az.","og.","ol.","lr."],dayNamesMin:["ig","al","ar","az","og","ol","lr"],weekHeader:"As",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.eu),a.regional.eu});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fa.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-fa.js
      deleted file mode 100644
      index a97326a5e3..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fa.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.fa={closeText:"بستن",prevText:"&#x3C;قبلی",nextText:"بعدی&#x3E;",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سه‌شنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.fa),a.regional.fa});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fi.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-fi.js
      deleted file mode 100644
      index c5e962d7e1..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fi.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.fi={closeText:"Sulje",prevText:"&#xAB;Edellinen",nextText:"Seuraava&#xBB;",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.fi),a.regional.fi});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fo.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-fo.js
      deleted file mode 100644
      index 79b3cc1590..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fo.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.fo={closeText:"Lat aftur",prevText:"&#x3C;Fyrra",nextText:"Næsta&#x3E;",currentText:"Í dag",monthNames:["Januar","Februar","Mars","Apríl","Mei","Juni","Juli","August","September","Oktober","November","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Aug","Sep","Okt","Nov","Des"],dayNames:["Sunnudagur","Mánadagur","Týsdagur","Mikudagur","Hósdagur","Fríggjadagur","Leyardagur"],dayNamesShort:["Sun","Mán","Týs","Mik","Hós","Frí","Ley"],dayNamesMin:["Su","Má","Tý","Mi","Hó","Fr","Le"],weekHeader:"Vk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.fo),a.regional.fo});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CA.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CA.js
      deleted file mode 100644
      index cefbbf1172..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CA.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["fr-CA"]={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["fr-CA"]),a.regional["fr-CA"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CH.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CH.js
      deleted file mode 100644
      index e3da4973e6..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr-CH.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["fr-CH"]={closeText:"Fermer",prevText:"&#x3C;Préc",nextText:"Suiv&#x3E;",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["fr-CH"]),a.regional["fr-CH"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr.js
      deleted file mode 100644
      index 736629028b..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-fr.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.fr={closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.fr),a.regional.fr});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-gl.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-gl.js
      deleted file mode 100644
      index 8b9e8a418c..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-gl.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.gl={closeText:"Pechar",prevText:"&#x3C;Ant",nextText:"Seg&#x3E;",currentText:"Hoxe",monthNames:["Xaneiro","Febreiro","Marzo","Abril","Maio","Xuño","Xullo","Agosto","Setembro","Outubro","Novembro","Decembro"],monthNamesShort:["Xan","Feb","Mar","Abr","Mai","Xuñ","Xul","Ago","Set","Out","Nov","Dec"],dayNames:["Domingo","Luns","Martes","Mércores","Xoves","Venres","Sábado"],dayNamesShort:["Dom","Lun","Mar","Mér","Xov","Ven","Sáb"],dayNamesMin:["Do","Lu","Ma","Mé","Xo","Ve","Sá"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.gl),a.regional.gl});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-he.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-he.js
      deleted file mode 100644
      index fd775fdc9c..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-he.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.he={closeText:"סגור",prevText:"&#x3C;הקודם",nextText:"הבא&#x3E;",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.he),a.regional.he});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hi.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-hi.js
      deleted file mode 100644
      index a1ab223def..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hi.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.hi={closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.hi),a.regional.hi});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hr.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-hr.js
      deleted file mode 100644
      index 34bf168763..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hr.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.hr={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.hr),a.regional.hr});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hu.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-hu.js
      deleted file mode 100644
      index 58b8874f05..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hu.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.hu={closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},a.setDefaults(a.regional.hu),a.regional.hu});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hy.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-hy.js
      deleted file mode 100644
      index c039a6aa93..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-hy.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.hy={closeText:"Փակել",prevText:"&#x3C;Նախ.",nextText:"Հաջ.&#x3E;",currentText:"Այսօր",monthNames:["Հունվար","Փետրվար","Մարտ","Ապրիլ","Մայիս","Հունիս","Հուլիս","Օգոստոս","Սեպտեմբեր","Հոկտեմբեր","Նոյեմբեր","Դեկտեմբեր"],monthNamesShort:["Հունվ","Փետր","Մարտ","Ապր","Մայիս","Հունիս","Հուլ","Օգս","Սեպ","Հոկ","Նոյ","Դեկ"],dayNames:["կիրակի","եկուշաբթի","երեքշաբթի","չորեքշաբթի","հինգշաբթի","ուրբաթ","շաբաթ"],dayNamesShort:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],dayNamesMin:["կիր","երկ","երք","չրք","հնգ","ուրբ","շբթ"],weekHeader:"ՇԲՏ",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.hy),a.regional.hy});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-id.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-id.js
      deleted file mode 100644
      index 62e6839f0f..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-id.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.id={closeText:"Tutup",prevText:"&#x3C;mundur",nextText:"maju&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.id),a.regional.id});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-is.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-is.js
      deleted file mode 100644
      index 969e0a846e..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-is.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.is={closeText:"Loka",prevText:"&#x3C; Fyrri",nextText:"Næsti &#x3E;",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.is),a.regional.is});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-it-CH.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-it-CH.js
      deleted file mode 100644
      index 5986c25a03..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-it-CH.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["it-CH"]={closeText:"Chiudi",prevText:"&#x3C;Prec",nextText:"Succ&#x3E;",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["it-CH"]),a.regional["it-CH"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-it.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-it.js
      deleted file mode 100644
      index 942a2434d6..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-it.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.it={closeText:"Chiudi",prevText:"&#x3C;Prec",nextText:"Succ&#x3E;",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.it),a.regional.it});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ja.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ja.js
      deleted file mode 100644
      index ef3280b9d6..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ja.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ja={closeText:"閉じる",prevText:"&#x3C;前",nextText:"次&#x3E;",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},a.setDefaults(a.regional.ja),a.regional.ja});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ka.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ka.js
      deleted file mode 100644
      index 6691c448c9..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ka.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ka={closeText:"დახურვა",prevText:"&#x3c; წინა",nextText:"შემდეგი &#x3e;",currentText:"დღეს",monthNames:["იანვარი","თებერვალი","მარტი","აპრილი","მაისი","ივნისი","ივლისი","აგვისტო","სექტემბერი","ოქტომბერი","ნოემბერი","დეკემბერი"],monthNamesShort:["იან","თებ","მარ","აპრ","მაი","ივნ","ივლ","აგვ","სექ","ოქტ","ნოე","დეკ"],dayNames:["კვირა","ორშაბათი","სამშაბათი","ოთხშაბათი","ხუთშაბათი","პარასკევი","შაბათი"],dayNamesShort:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],dayNamesMin:["კვ","ორშ","სამ","ოთხ","ხუთ","პარ","შაბ"],weekHeader:"კვირა",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ka),a.regional.ka});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-kk.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-kk.js
      deleted file mode 100644
      index b0b8293a99..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-kk.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.kk={closeText:"Жабу",prevText:"&#x3C;Алдыңғы",nextText:"Келесі&#x3E;",currentText:"Бүгін",monthNames:["Қаңтар","Ақпан","Наурыз","Сәуір","Мамыр","Маусым","Шілде","Тамыз","Қыркүйек","Қазан","Қараша","Желтоқсан"],monthNamesShort:["Қаң","Ақп","Нау","Сәу","Мам","Мау","Шіл","Там","Қыр","Қаз","Қар","Жел"],dayNames:["Жексенбі","Дүйсенбі","Сейсенбі","Сәрсенбі","Бейсенбі","Жұма","Сенбі"],dayNamesShort:["жкс","дсн","ссн","срс","бсн","жма","снб"],dayNamesMin:["Жк","Дс","Сс","Ср","Бс","Жм","Сн"],weekHeader:"Не",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.kk),a.regional.kk});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-km.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-km.js
      deleted file mode 100644
      index a5ddf5b248..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-km.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.km={closeText:"ធ្វើ​រួច",prevText:"មុន",nextText:"បន្ទាប់",currentText:"ថ្ងៃ​នេះ",monthNames:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],monthNamesShort:["មករា","កុម្ភៈ","មីនា","មេសា","ឧសភា","មិថុនា","កក្កដា","សីហា","កញ្ញា","តុលា","វិច្ឆិកា","ធ្នូ"],dayNames:["អាទិត្យ","ចន្ទ","អង្គារ","ពុធ","ព្រហស្បតិ៍","សុក្រ","សៅរ៍"],dayNamesShort:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],dayNamesMin:["អា","ច","អ","ពុ","ព្រហ","សុ","សៅ"],weekHeader:"សប្ដាហ៍",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.km),a.regional.km});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ko.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ko.js
      deleted file mode 100644
      index 16ad480d34..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ko.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ko={closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"주",dateFormat:"yy. m. d.",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"},a.setDefaults(a.regional.ko),a.regional.ko});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ky.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ky.js
      deleted file mode 100644
      index a4cc9375ac..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ky.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ky={closeText:"Жабуу",prevText:"&#x3c;Мур",nextText:"Кий&#x3e;",currentText:"Бүгүн",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["жекшемби","дүйшөмбү","шейшемби","шаршемби","бейшемби","жума","ишемби"],dayNamesShort:["жек","дүй","шей","шар","бей","жум","ише"],dayNamesMin:["Жк","Дш","Шш","Шр","Бш","Жм","Иш"],weekHeader:"Жум",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ky),a.regional.ky});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-lb.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-lb.js
      deleted file mode 100644
      index cdb29aceae..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-lb.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.lb={closeText:"Fäerdeg",prevText:"Zréck",nextText:"Weider",currentText:"Haut",monthNames:["Januar","Februar","Mäerz","Abrëll","Mee","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mäe","Abr","Mee","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonndeg","Méindeg","Dënschdeg","Mëttwoch","Donneschdeg","Freideg","Samschdeg"],dayNamesShort:["Son","Méi","Dën","Mët","Don","Fre","Sam"],dayNamesMin:["So","Mé","Dë","Më","Do","Fr","Sa"],weekHeader:"W",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.lb),a.regional.lb});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-lt.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-lt.js
      deleted file mode 100644
      index d6fa76b447..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-lt.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.lt={closeText:"Uždaryti",prevText:"&#x3C;Atgal",nextText:"Pirmyn&#x3E;",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""},a.setDefaults(a.regional.lt),a.regional.lt});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-lv.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-lv.js
      deleted file mode 100644
      index 0b23d3cd27..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-lv.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.lv={closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.lv),a.regional.lv});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-mk.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-mk.js
      deleted file mode 100644
      index 6eee1c4c76..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-mk.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.mk={closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Денес",monthNames:["Јануари","Февруари","Март","Април","Мај","Јуни","Јули","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Јан","Фев","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Ное","Дек"],dayNames:["Недела","Понеделник","Вторник","Среда","Четврток","Петок","Сабота"],dayNamesShort:["Нед","Пон","Вто","Сре","Чет","Пет","Саб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Са"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.mk),a.regional.mk});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ml.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ml.js
      deleted file mode 100644
      index d8ac49a6a5..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ml.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ml={closeText:"ശരി",prevText:"മുന്നത്തെ",nextText:"അടുത്തത് ",currentText:"ഇന്ന്",monthNames:["ജനുവരി","ഫെബ്രുവരി","മാര്‍ച്ച്","ഏപ്രില്‍","മേയ്","ജൂണ്‍","ജൂലൈ","ആഗസ്റ്റ്","സെപ്റ്റംബര്‍","ഒക്ടോബര്‍","നവംബര്‍","ഡിസംബര്‍"],monthNamesShort:["ജനു","ഫെബ്","മാര്‍","ഏപ്രി","മേയ്","ജൂണ്‍","ജൂലാ","ആഗ","സെപ്","ഒക്ടോ","നവം","ഡിസ"],dayNames:["ഞായര്‍","തിങ്കള്‍","ചൊവ്വ","ബുധന്‍","വ്യാഴം","വെള്ളി","ശനി"],dayNamesShort:["ഞായ","തിങ്ക","ചൊവ്വ","ബുധ","വ്യാഴം","വെള്ളി","ശനി"],dayNamesMin:["ഞാ","തി","ചൊ","ബു","വ്യാ","വെ","ശ"],weekHeader:"ആ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ml),a.regional.ml});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ms.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ms.js
      deleted file mode 100644
      index a60754bfa4..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ms.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ms={closeText:"Tutup",prevText:"&#x3C;Sebelum",nextText:"Selepas&#x3E;",currentText:"hari ini",monthNames:["Januari","Februari","Mac","April","Mei","Jun","Julai","Ogos","September","Oktober","November","Disember"],monthNamesShort:["Jan","Feb","Mac","Apr","Mei","Jun","Jul","Ogo","Sep","Okt","Nov","Dis"],dayNames:["Ahad","Isnin","Selasa","Rabu","Khamis","Jumaat","Sabtu"],dayNamesShort:["Aha","Isn","Sel","Rab","kha","Jum","Sab"],dayNamesMin:["Ah","Is","Se","Ra","Kh","Ju","Sa"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ms),a.regional.ms});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nb.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-nb.js
      deleted file mode 100644
      index a74d3faa2e..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nb.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.nb={closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.nb),a.regional.nb});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nl-BE.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-nl-BE.js
      deleted file mode 100644
      index 170bbebeb5..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nl-BE.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["nl-BE"]={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["nl-BE"]),a.regional["nl-BE"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nl.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-nl.js
      deleted file mode 100644
      index c6cd6c57e1..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nl.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.nl={closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.nl),a.regional.nl});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nn.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-nn.js
      deleted file mode 100644
      index 6aef9f3a85..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-nn.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.nn={closeText:"Lukk",prevText:"&#xAB;Førre",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["sun","mån","tys","ons","tor","fre","lau"],dayNames:["sundag","måndag","tysdag","onsdag","torsdag","fredag","laurdag"],dayNamesMin:["su","må","ty","on","to","fr","la"],weekHeader:"Veke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.nn),a.regional.nn});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-no.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-no.js
      deleted file mode 100644
      index 6feb98eb1e..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-no.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.no={closeText:"Lukk",prevText:"&#xAB;Forrige",nextText:"Neste&#xBB;",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.no),a.regional.no});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-pl.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-pl.js
      deleted file mode 100644
      index 50f081839f..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-pl.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.pl={closeText:"Zamknij",prevText:"&#x3C;Poprzedni",nextText:"Następny&#x3E;",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.pl),a.regional.pl});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-pt-BR.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-pt-BR.js
      deleted file mode 100644
      index 1efe276601..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-pt-BR.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["pt-BR"]={closeText:"Fechar",prevText:"&#x3C;Anterior",nextText:"Próximo&#x3E;",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["pt-BR"]),a.regional["pt-BR"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-pt.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-pt.js
      deleted file mode 100644
      index 26252aa13b..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-pt.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.pt={closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.pt),a.regional.pt});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-rm.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-rm.js
      deleted file mode 100644
      index 484bf4101f..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-rm.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.rm={closeText:"Serrar",prevText:"&#x3C;Suandant",nextText:"Precedent&#x3E;",currentText:"Actual",monthNames:["Schaner","Favrer","Mars","Avrigl","Matg","Zercladur","Fanadur","Avust","Settember","October","November","December"],monthNamesShort:["Scha","Fev","Mar","Avr","Matg","Zer","Fan","Avu","Sett","Oct","Nov","Dec"],dayNames:["Dumengia","Glindesdi","Mardi","Mesemna","Gievgia","Venderdi","Sonda"],dayNamesShort:["Dum","Gli","Mar","Mes","Gie","Ven","Som"],dayNamesMin:["Du","Gl","Ma","Me","Gi","Ve","So"],weekHeader:"emna",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.rm),a.regional.rm});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ro.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ro.js
      deleted file mode 100644
      index f23ecf3bf7..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ro.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ro={closeText:"Închide",prevText:"&#xAB; Luna precedentă",nextText:"Luna următoare &#xBB;",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ro),a.regional.ro});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ru.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ru.js
      deleted file mode 100644
      index 24c20924d2..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ru.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ru={closeText:"Закрыть",prevText:"&#x3C;Пред",nextText:"След&#x3E;",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ru),a.regional.ru});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sk.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-sk.js
      deleted file mode 100644
      index 65d4ca98c1..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sk.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.sk={closeText:"Zavrieť",prevText:"&#x3C;Predchádzajúci",nextText:"Nasledujúci&#x3E;",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.sk),a.regional.sk});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sl.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-sl.js
      deleted file mode 100644
      index f64b35d379..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sl.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.sl={closeText:"Zapri",prevText:"&#x3C;Prejšnji",nextText:"Naslednji&#x3E;",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.sl),a.regional.sl});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sq.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-sq.js
      deleted file mode 100644
      index c93a003a87..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sq.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.sq={closeText:"mbylle",prevText:"&#x3C;mbrapa",nextText:"Përpara&#x3E;",currentText:"sot",monthNames:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"],monthNamesShort:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],dayNames:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtune"],dayNamesShort:["Di","Hë","Ma","Më","En","Pr","Sh"],dayNamesMin:["Di","Hë","Ma","Më","En","Pr","Sh"],weekHeader:"Ja",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.sq),a.regional.sq});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sr-SR.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-sr-SR.js
      deleted file mode 100644
      index 07ca08d75b..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sr-SR.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["sr-SR"]={closeText:"Zatvori",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Danas",monthNames:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Sed",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional["sr-SR"]),a.regional["sr-SR"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sr.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-sr.js
      deleted file mode 100644
      index e3adff8189..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sr.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.sr={closeText:"Затвори",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.sr),a.regional.sr});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sv.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-sv.js
      deleted file mode 100644
      index 769d38562d..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-sv.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.sv={closeText:"Stäng",prevText:"&#xAB;Förra",nextText:"Nästa&#xBB;",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.sv),a.regional.sv});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ta.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-ta.js
      deleted file mode 100644
      index 513af5549b..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-ta.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.ta={closeText:"மூடு",prevText:"முன்னையது",nextText:"அடுத்தது",currentText:"இன்று",monthNames:["தை","மாசி","பங்குனி","சித்திரை","வைகாசி","ஆனி","ஆடி","ஆவணி","புரட்டாசி","ஐப்பசி","கார்த்திகை","மார்கழி"],monthNamesShort:["தை","மாசி","பங்","சித்","வைகா","ஆனி","ஆடி","ஆவ","புர","ஐப்","கார்","மார்"],dayNames:["ஞாயிற்றுக்கிழமை","திங்கட்கிழமை","செவ்வாய்க்கிழமை","புதன்கிழமை","வியாழக்கிழமை","வெள்ளிக்கிழமை","சனிக்கிழமை"],dayNamesShort:["ஞாயிறு","திங்கள்","செவ்வாய்","புதன்","வியாழன்","வெள்ளி","சனி"],dayNamesMin:["ஞா","தி","செ","பு","வி","வெ","ச"],weekHeader:"Не",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.ta),a.regional.ta});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-th.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-th.js
      deleted file mode 100644
      index f5dc2b5fec..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-th.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.th={closeText:"ปิด",prevText:"&#xAB;&#xA0;ย้อน",nextText:"ถัดไป&#xA0;&#xBB;",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.th),a.regional.th});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-tj.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-tj.js
      deleted file mode 100644
      index 5dea9f4389..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-tj.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.tj={closeText:"Идома",prevText:"&#x3c;Қафо",nextText:"Пеш&#x3e;",currentText:"Имрӯз",monthNames:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["якшанбе","душанбе","сешанбе","чоршанбе","панҷшанбе","ҷумъа","шанбе"],dayNamesShort:["якш","душ","сеш","чор","пан","ҷум","шан"],dayNamesMin:["Як","Дш","Сш","Чш","Пш","Ҷм","Шн"],weekHeader:"Хф",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.tj),a.regional.tj});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-tr.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-tr.js
      deleted file mode 100644
      index 04dd91b503..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-tr.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.tr={closeText:"kapat",prevText:"&#x3C;geri",nextText:"ileri&#x3e",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.tr),a.regional.tr});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-uk.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-uk.js
      deleted file mode 100644
      index 00248797f7..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-uk.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.uk={closeText:"Закрити",prevText:"&#x3C;",nextText:"&#x3E;",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.uk),a.regional.uk});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-vi.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-vi.js
      deleted file mode 100644
      index 042b261c7e..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-vi.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional.vi={closeText:"Đóng",prevText:"&#x3C;Trước",nextText:"Tiếp&#x3E;",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},a.setDefaults(a.regional.vi),a.regional.vi});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-CN.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-CN.js
      deleted file mode 100644
      index bf2f22f564..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-CN.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["zh-CN"]={closeText:"关闭",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},a.setDefaults(a.regional["zh-CN"]),a.regional["zh-CN"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-HK.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-HK.js
      deleted file mode 100644
      index 44c8794693..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-HK.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["zh-HK"]={closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"dd-mm-yy",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},a.setDefaults(a.regional["zh-HK"]),a.regional["zh-HK"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-TW.js b/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-TW.js
      deleted file mode 100644
      index 2593836014..0000000000
      --- a/bower_components/jquery-ui/ui/minified/i18n/datepicker-zh-TW.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["../widgets/datepicker"],a):a(jQuery.datepicker)}(function(a){return a.regional["zh-TW"]={closeText:"關閉",prevText:"&#x3C;上月",nextText:"下月&#x3E;",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"},a.setDefaults(a.regional["zh-TW"]),a.regional["zh-TW"]});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/ie.js b/bower_components/jquery-ui/ui/minified/ie.js
      deleted file mode 100644
      index 98ea6e9c7d..0000000000
      --- a/bower_components/jquery-ui/ui/minified/ie.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase())});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/jquery-1-7.js b/bower_components/jquery-ui/ui/minified/jquery-1-7.js
      deleted file mode 100644
      index 0e29948206..0000000000
      --- a/bower_components/jquery-ui/ui/minified/jquery-1-7.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){"1.7"===a.fn.jquery.substring(0,3)&&(a.each(["Width","Height"],function(b,c){function d(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.css(b,"padding"+this))||0,d&&(c-=parseFloat(a.css(b,"border"+this+"Width"))||0),f&&(c-=parseFloat(a.css(b,"margin"+this))||0)}),c}var e="Width"===c?["Left","Right"]:["Top","Bottom"],f=c.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+c]=function(b){return void 0===b?g["inner"+c].call(this):this.each(function(){a(this).css(f,d(this,b)+"px")})},a.fn["outer"+c]=function(b,e){return"number"!=typeof b?g["outer"+c].call(this,b):this.each(function(){a(this).css(f,d(this,b,!0,e)+"px")})}}),a.fn.addBack=function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))})});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/keycode.js b/bower_components/jquery-ui/ui/minified/keycode.js
      deleted file mode 100644
      index 8dfe23ba35..0000000000
      --- a/bower_components/jquery-ui/ui/minified/keycode.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/labels.js b/bower_components/jquery-ui/ui/minified/labels.js
      deleted file mode 100644
      index ac28744cfc..0000000000
      --- a/bower_components/jquery-ui/ui/minified/labels.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version","./escape-selector"],a):a(jQuery)}(function(a){return a.fn.labels=function(){var b,c,d,e,f;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),d=this.attr("id"),d&&(b=this.eq(0).parents().last(),f=b.add(b.length?b.siblings():this.siblings()),c="label[for='"+a.ui.escapeSelector(d)+"']",e=e.add(f.find(c).addBack(c))),this.pushStack(e))}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/plugin.js b/bower_components/jquery-ui/ui/minified/plugin.js
      deleted file mode 100644
      index 8094e67a87..0000000000
      --- a/bower_components/jquery-ui/ui/minified/plugin.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.ui.plugin={add:function(b,c,d){var e,f=a.ui[b].prototype;for(e in d)f.plugins[e]=f.plugins[e]||[],f.plugins[e].push([c,d[e]])},call:function(a,b,c,d){var e,f=a.plugins[b];if(f&&(d||a.element[0].parentNode&&11!==a.element[0].parentNode.nodeType))for(e=0;e<f.length;e++)a.options[f[e][0]]&&f[e][1].apply(a.element,c)}}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/position.js b/bower_components/jquery-ui/ui/minified/position.js
      deleted file mode 100644
      index 6b615b808f..0000000000
      --- a/bower_components/jquery-ui/ui/minified/position.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return function(){function b(a,b,c){return[parseFloat(a[0])*(l.test(a[0])?b/100:1),parseFloat(a[1])*(l.test(a[1])?c/100:1)]}function c(b,c){return parseInt(a.css(b,c),10)||0}function d(b){var c=b[0];return 9===c.nodeType?{width:b.width(),height:b.height(),offset:{top:0,left:0}}:a.isWindow(c)?{width:b.width(),height:b.height(),offset:{top:b.scrollTop(),left:b.scrollLeft()}}:c.preventDefault?{width:0,height:0,offset:{top:c.pageY,left:c.pageX}}:{width:b.outerWidth(),height:b.outerHeight(),offset:b.offset()}}var e,f=Math.max,g=Math.abs,h=/left|center|right/,i=/top|center|bottom/,j=/[\+\-]\d+(\.[\d]+)?%?/,k=/^\w+/,l=/%$/,m=a.fn.position;a.position={scrollbarWidth:function(){if(void 0!==e)return e;var b,c,d=a("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),f=d.children()[0];return a("body").append(d),b=f.offsetWidth,d.css("overflow","scroll"),c=f.offsetWidth,b===c&&(c=d[0].clientWidth),d.remove(),e=b-c},getScrollInfo:function(b){var c=b.isWindow||b.isDocument?"":b.element.css("overflow-x"),d=b.isWindow||b.isDocument?"":b.element.css("overflow-y"),e="scroll"===c||"auto"===c&&b.width<b.element[0].scrollWidth,f="scroll"===d||"auto"===d&&b.height<b.element[0].scrollHeight;return{width:f?a.position.scrollbarWidth():0,height:e?a.position.scrollbarWidth():0}},getWithinInfo:function(b){var c=a(b||window),d=a.isWindow(c[0]),e=!!c[0]&&9===c[0].nodeType,f=!d&&!e;return{element:c,isWindow:d,isDocument:e,offset:f?a(b).offset():{left:0,top:0},scrollLeft:c.scrollLeft(),scrollTop:c.scrollTop(),width:c.outerWidth(),height:c.outerHeight()}}},a.fn.position=function(e){if(!e||!e.of)return m.apply(this,arguments);e=a.extend({},e);var l,n,o,p,q,r,s=a(e.of),t=a.position.getWithinInfo(e.within),u=a.position.getScrollInfo(t),v=(e.collision||"flip").split(" "),w={};return r=d(s),s[0].preventDefault&&(e.at="left top"),n=r.width,o=r.height,p=r.offset,q=a.extend({},p),a.each(["my","at"],function(){var a,b,c=(e[this]||"").split(" ");1===c.length&&(c=h.test(c[0])?c.concat(["center"]):i.test(c[0])?["center"].concat(c):["center","center"]),c[0]=h.test(c[0])?c[0]:"center",c[1]=i.test(c[1])?c[1]:"center",a=j.exec(c[0]),b=j.exec(c[1]),w[this]=[a?a[0]:0,b?b[0]:0],e[this]=[k.exec(c[0])[0],k.exec(c[1])[0]]}),1===v.length&&(v[1]=v[0]),"right"===e.at[0]?q.left+=n:"center"===e.at[0]&&(q.left+=n/2),"bottom"===e.at[1]?q.top+=o:"center"===e.at[1]&&(q.top+=o/2),l=b(w.at,n,o),q.left+=l[0],q.top+=l[1],this.each(function(){var d,h,i=a(this),j=i.outerWidth(),k=i.outerHeight(),m=c(this,"marginLeft"),r=c(this,"marginTop"),x=j+m+c(this,"marginRight")+u.width,y=k+r+c(this,"marginBottom")+u.height,z=a.extend({},q),A=b(w.my,i.outerWidth(),i.outerHeight());"right"===e.my[0]?z.left-=j:"center"===e.my[0]&&(z.left-=j/2),"bottom"===e.my[1]?z.top-=k:"center"===e.my[1]&&(z.top-=k/2),z.left+=A[0],z.top+=A[1],d={marginLeft:m,marginTop:r},a.each(["left","top"],function(b,c){a.ui.position[v[b]]&&a.ui.position[v[b]][c](z,{targetWidth:n,targetHeight:o,elemWidth:j,elemHeight:k,collisionPosition:d,collisionWidth:x,collisionHeight:y,offset:[l[0]+A[0],l[1]+A[1]],my:e.my,at:e.at,within:t,elem:i})}),e.using&&(h=function(a){var b=p.left-z.left,c=b+n-j,d=p.top-z.top,h=d+o-k,l={target:{element:s,left:p.left,top:p.top,width:n,height:o},element:{element:i,left:z.left,top:z.top,width:j,height:k},horizontal:c<0?"left":b>0?"right":"center",vertical:h<0?"top":d>0?"bottom":"middle"};n<j&&g(b+c)<n&&(l.horizontal="center"),o<k&&g(d+h)<o&&(l.vertical="middle"),f(g(b),g(c))>f(g(d),g(h))?l.important="horizontal":l.important="vertical",e.using.call(this,a,l)}),i.offset(a.extend(z,{using:h}))})},a.ui.position={fit:{left:function(a,b){var c,d=b.within,e=d.isWindow?d.scrollLeft:d.offset.left,g=d.width,h=a.left-b.collisionPosition.marginLeft,i=e-h,j=h+b.collisionWidth-g-e;b.collisionWidth>g?i>0&&j<=0?(c=a.left+i+b.collisionWidth-g-e,a.left+=i-c):j>0&&i<=0?a.left=e:i>j?a.left=e+g-b.collisionWidth:a.left=e:i>0?a.left+=i:j>0?a.left-=j:a.left=f(a.left-h,a.left)},top:function(a,b){var c,d=b.within,e=d.isWindow?d.scrollTop:d.offset.top,g=b.within.height,h=a.top-b.collisionPosition.marginTop,i=e-h,j=h+b.collisionHeight-g-e;b.collisionHeight>g?i>0&&j<=0?(c=a.top+i+b.collisionHeight-g-e,a.top+=i-c):j>0&&i<=0?a.top=e:i>j?a.top=e+g-b.collisionHeight:a.top=e:i>0?a.top+=i:j>0?a.top-=j:a.top=f(a.top-h,a.top)}},flip:{left:function(a,b){var c,d,e=b.within,f=e.offset.left+e.scrollLeft,h=e.width,i=e.isWindow?e.scrollLeft:e.offset.left,j=a.left-b.collisionPosition.marginLeft,k=j-i,l=j+b.collisionWidth-h-i,m="left"===b.my[0]?-b.elemWidth:"right"===b.my[0]?b.elemWidth:0,n="left"===b.at[0]?b.targetWidth:"right"===b.at[0]?-b.targetWidth:0,o=-2*b.offset[0];k<0?(c=a.left+m+n+o+b.collisionWidth-h-f,(c<0||c<g(k))&&(a.left+=m+n+o)):l>0&&(d=a.left-b.collisionPosition.marginLeft+m+n+o-i,(d>0||g(d)<l)&&(a.left+=m+n+o))},top:function(a,b){var c,d,e=b.within,f=e.offset.top+e.scrollTop,h=e.height,i=e.isWindow?e.scrollTop:e.offset.top,j=a.top-b.collisionPosition.marginTop,k=j-i,l=j+b.collisionHeight-h-i,m="top"===b.my[1],n=m?-b.elemHeight:"bottom"===b.my[1]?b.elemHeight:0,o="top"===b.at[1]?b.targetHeight:"bottom"===b.at[1]?-b.targetHeight:0,p=-2*b.offset[1];k<0?(d=a.top+n+o+p+b.collisionHeight-h-f,(d<0||d<g(k))&&(a.top+=n+o+p)):l>0&&(c=a.top-b.collisionPosition.marginTop+n+o+p-i,(c>0||g(c)<l)&&(a.top+=n+o+p))}},flipfit:{left:function(){a.ui.position.flip.left.apply(this,arguments),a.ui.position.fit.left.apply(this,arguments)},top:function(){a.ui.position.flip.top.apply(this,arguments),a.ui.position.fit.top.apply(this,arguments)}}}}(),a.ui.position});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/safe-active-element.js b/bower_components/jquery-ui/ui/minified/safe-active-element.js
      deleted file mode 100644
      index bf273cc080..0000000000
      --- a/bower_components/jquery-ui/ui/minified/safe-active-element.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.ui.safeActiveElement=function(a){var b;try{b=a.activeElement}catch(c){b=a.body}return b||(b=a.body),b.nodeName||(b=a.body),b}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/safe-blur.js b/bower_components/jquery-ui/ui/minified/safe-blur.js
      deleted file mode 100644
      index 385691b016..0000000000
      --- a/bower_components/jquery-ui/ui/minified/safe-blur.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.ui.safeBlur=function(b){b&&"body"!==b.nodeName.toLowerCase()&&a(b).trigger("blur")}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/scroll-parent.js b/bower_components/jquery-ui/ui/minified/scroll-parent.js
      deleted file mode 100644
      index dcc47e7964..0000000000
      --- a/bower_components/jquery-ui/ui/minified/scroll-parent.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.fn.scrollParent=function(b){var c=this.css("position"),d="absolute"===c,e=b?/(auto|scroll|hidden)/:/(auto|scroll)/,f=this.parents().filter(function(){var b=a(this);return(!d||"static"!==b.css("position"))&&e.test(b.css("overflow")+b.css("overflow-y")+b.css("overflow-x"))}).eq(0);return"fixed"!==c&&f.length?f:a(this[0].ownerDocument||document)}});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/tabbable.js b/bower_components/jquery-ui/ui/minified/tabbable.js
      deleted file mode 100644
      index 7110e982e7..0000000000
      --- a/bower_components/jquery-ui/ui/minified/tabbable.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version","./focusable"],a):a(jQuery)}(function(a){return a.extend(a.expr[":"],{tabbable:function(b){var c=a.attr(b,"tabindex"),d=null!=c;return(!d||c>=0)&&a.ui.focusable(b,d)}})});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/unique-id.js b/bower_components/jquery-ui/ui/minified/unique-id.js
      deleted file mode 100644
      index 4e0af17756..0000000000
      --- a/bower_components/jquery-ui/ui/minified/unique-id.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){return a.fn.extend({uniqueId:function(){var a=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++a)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&a(this).removeAttr("id")})}})});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/version.js b/bower_components/jquery-ui/ui/minified/version.js
      deleted file mode 100644
      index 1bfddd1155..0000000000
      --- a/bower_components/jquery-ui/ui/minified/version.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){return a.ui=a.ui||{},a.ui.version="1.12.1"});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/minified/widget.js b/bower_components/jquery-ui/ui/minified/widget.js
      deleted file mode 100644
      index bc7d4d6f1f..0000000000
      --- a/bower_components/jquery-ui/ui/minified/widget.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery UI - v1.12.1 - 2016-09-15
      -* http://jqueryui.com
      -* Copyright jQuery Foundation and other contributors; Licensed  */
      -!function(a){"function"==typeof define&&define.amd?define(["jquery","./version"],a):a(jQuery)}(function(a){var b=0,c=Array.prototype.slice;return a.cleanData=function(b){return function(c){var d,e,f;for(f=0;null!=(e=c[f]);f++)try{d=a._data(e,"events"),d&&d.remove&&a(e).triggerHandler("remove")}catch(g){}b(c)}}(a.cleanData),a.widget=function(b,c,d){var e,f,g,h={},i=b.split(".")[0];b=b.split(".")[1];var j=i+"-"+b;return d||(d=c,c=a.Widget),a.isArray(d)&&(d=a.extend.apply(null,[{}].concat(d))),a.expr[":"][j.toLowerCase()]=function(b){return!!a.data(b,j)},a[i]=a[i]||{},e=a[i][b],f=a[i][b]=function(a,b){return this._createWidget?void(arguments.length&&this._createWidget(a,b)):new f(a,b)},a.extend(f,e,{version:d.version,_proto:a.extend({},d),_childConstructors:[]}),g=new c,g.options=a.widget.extend({},g.options),a.each(d,function(b,d){return a.isFunction(d)?void(h[b]=function(){function a(){return c.prototype[b].apply(this,arguments)}function e(a){return c.prototype[b].apply(this,a)}return function(){var b,c=this._super,f=this._superApply;return this._super=a,this._superApply=e,b=d.apply(this,arguments),this._super=c,this._superApply=f,b}}()):void(h[b]=d)}),f.prototype=a.widget.extend(g,{widgetEventPrefix:e?g.widgetEventPrefix||b:b},h,{constructor:f,namespace:i,widgetName:b,widgetFullName:j}),e?(a.each(e._childConstructors,function(b,c){var d=c.prototype;a.widget(d.namespace+"."+d.widgetName,f,c._proto)}),delete e._childConstructors):c._childConstructors.push(f),a.widget.bridge(b,f),f},a.widget.extend=function(b){for(var d,e,f=c.call(arguments,1),g=0,h=f.length;g<h;g++)for(d in f[g])e=f[g][d],f[g].hasOwnProperty(d)&&void 0!==e&&(a.isPlainObject(e)?b[d]=a.isPlainObject(b[d])?a.widget.extend({},b[d],e):a.widget.extend({},e):b[d]=e);return b},a.widget.bridge=function(b,d){var e=d.prototype.widgetFullName||b;a.fn[b]=function(f){var g="string"==typeof f,h=c.call(arguments,1),i=this;return g?this.length||"instance"!==f?this.each(function(){var c,d=a.data(this,e);return"instance"===f?(i=d,!1):d?a.isFunction(d[f])&&"_"!==f.charAt(0)?(c=d[f].apply(d,h),c!==d&&void 0!==c?(i=c&&c.jquery?i.pushStack(c.get()):c,!1):void 0):a.error("no such method '"+f+"' for "+b+" widget instance"):a.error("cannot call methods on "+b+" prior to initialization; attempted to call method '"+f+"'")}):i=void 0:(h.length&&(f=a.widget.extend.apply(null,[f].concat(h))),this.each(function(){var b=a.data(this,e);b?(b.option(f||{}),b._init&&b._init()):a.data(this,e,new d(f,this))})),i}},a.Widget=function(){},a.Widget._childConstructors=[],a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(c,d){d=a(d||this.defaultElement||this)[0],this.element=a(d),this.uuid=b++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=a(),this.hoverable=a(),this.focusable=a(),this.classesElementLookup={},d!==this&&(a.data(d,this.widgetFullName,this),this._on(!0,this.element,{remove:function(a){a.target===d&&this.destroy()}}),this.document=a(d.style?d.ownerDocument:d.document||d),this.window=a(this.document[0].defaultView||this.document[0].parentWindow)),this.options=a.widget.extend({},this.options,this._getCreateOptions(),c),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:a.noop,_create:a.noop,_init:a.noop,destroy:function(){var b=this;this._destroy(),a.each(this.classesElementLookup,function(a,c){b._removeClass(c,a)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:a.noop,widget:function(){return this.element},option:function(b,c){var d,e,f,g=b;if(0===arguments.length)return a.widget.extend({},this.options);if("string"==typeof b)if(g={},d=b.split("."),b=d.shift(),d.length){for(e=g[b]=a.widget.extend({},this.options[b]),f=0;f<d.length-1;f++)e[d[f]]=e[d[f]]||{},e=e[d[f]];if(b=d.pop(),1===arguments.length)return void 0===e[b]?null:e[b];e[b]=c}else{if(1===arguments.length)return void 0===this.options[b]?null:this.options[b];g[b]=c}return this._setOptions(g),this},_setOptions:function(a){var b;for(b in a)this._setOption(b,a[b]);return this},_setOption:function(a,b){return"classes"===a&&this._setOptionClasses(b),this.options[a]=b,"disabled"===a&&this._setOptionDisabled(b),this},_setOptionClasses:function(b){var c,d,e;for(c in b)e=this.classesElementLookup[c],b[c]!==this.options.classes[c]&&e&&e.length&&(d=a(e.get()),this._removeClass(e,c),d.addClass(this._classes({element:d,keys:c,classes:b,add:!0})))},_setOptionDisabled:function(a){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!a),a&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(b){function c(c,f){var g,h;for(h=0;h<c.length;h++)g=e.classesElementLookup[c[h]]||a(),g=a(b.add?a.unique(g.get().concat(b.element.get())):g.not(b.element).get()),e.classesElementLookup[c[h]]=g,d.push(c[h]),f&&b.classes[c[h]]&&d.push(b.classes[c[h]])}var d=[],e=this;return b=a.extend({element:this.element,classes:this.options.classes||{}},b),this._on(b.element,{remove:"_untrackClassesElement"}),b.keys&&c(b.keys.match(/\S+/g)||[],!0),b.extra&&c(b.extra.match(/\S+/g)||[]),d.join(" ")},_untrackClassesElement:function(b){var c=this;a.each(c.classesElementLookup,function(d,e){a.inArray(b.target,e)!==-1&&(c.classesElementLookup[d]=a(e.not(b.target).get()))})},_removeClass:function(a,b,c){return this._toggleClass(a,b,c,!1)},_addClass:function(a,b,c){return this._toggleClass(a,b,c,!0)},_toggleClass:function(a,b,c,d){d="boolean"==typeof d?d:c;var e="string"==typeof a||null===a,f={extra:e?b:c,keys:e?a:b,element:e?this.element:a,add:d};return f.element.toggleClass(this._classes(f),d),this},_on:function(b,c,d){var e,f=this;"boolean"!=typeof b&&(d=c,c=b,b=!1),d?(c=e=a(c),this.bindings=this.bindings.add(c)):(d=c,c=this.element,e=this.widget()),a.each(d,function(d,g){function h(){if(b||f.options.disabled!==!0&&!a(this).hasClass("ui-state-disabled"))return("string"==typeof g?f[g]:g).apply(f,arguments)}"string"!=typeof g&&(h.guid=g.guid=g.guid||h.guid||a.guid++);var i=d.match(/^([\w:-]*)\s*(.*)$/),j=i[1]+f.eventNamespace,k=i[2];k?e.on(j,k,h):c.on(j,h)})},_off:function(b,c){c=(c||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,b.off(c).off(c),this.bindings=a(this.bindings.not(b).get()),this.focusable=a(this.focusable.not(b).get()),this.hoverable=a(this.hoverable.not(b).get())},_delay:function(a,b){function c(){return("string"==typeof a?d[a]:a).apply(d,arguments)}var d=this;return setTimeout(c,b||0)},_hoverable:function(b){this.hoverable=this.hoverable.add(b),this._on(b,{mouseenter:function(b){this._addClass(a(b.currentTarget),null,"ui-state-hover")},mouseleave:function(b){this._removeClass(a(b.currentTarget),null,"ui-state-hover")}})},_focusable:function(b){this.focusable=this.focusable.add(b),this._on(b,{focusin:function(b){this._addClass(a(b.currentTarget),null,"ui-state-focus")},focusout:function(b){this._removeClass(a(b.currentTarget),null,"ui-state-focus")}})},_trigger:function(b,c,d){var e,f,g=this.options[b];if(d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.apply(this.element[0],[c].concat(d))===!1||c.isDefaultPrevented())}},a.each({show:"fadeIn",hide:"fadeOut"},function(b,c){a.Widget.prototype["_"+b]=function(d,e,f){"string"==typeof e&&(e={effect:e});var g,h=e?e===!0||"number"==typeof e?c:e.effect||c:b;e=e||{},"number"==typeof e&&(e={duration:e}),g=!a.isEmptyObject(e),e.complete=f,e.delay&&d.delay(e.delay),g&&a.effects&&a.effects.effect[h]?d[b](e):h!==b&&d[h]?d[h](e.duration,e.easing,f):d.queue(function(c){a(this)[b](),f&&f.call(d[0]),c()})}}),a.widget});
      \ No newline at end of file
      diff --git a/bower_components/jquery-ui/ui/plugin.js b/bower_components/jquery-ui/ui/plugin.js
      deleted file mode 100644
      index b282de7c6d..0000000000
      --- a/bower_components/jquery-ui/ui/plugin.js
      +++ /dev/null
      @@ -1,44 +0,0 @@
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -// $.ui.plugin is deprecated. Use $.widget() extensions instead.
      -return $.ui.plugin = {
      -	add: function( module, option, set ) {
      -		var i,
      -			proto = $.ui[ module ].prototype;
      -		for ( i in set ) {
      -			proto.plugins[ i ] = proto.plugins[ i ] || [];
      -			proto.plugins[ i ].push( [ option, set[ i ] ] );
      -		}
      -	},
      -	call: function( instance, name, args, allowDisconnected ) {
      -		var i,
      -			set = instance.plugins[ name ];
      -
      -		if ( !set ) {
      -			return;
      -		}
      -
      -		if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||
      -				instance.element[ 0 ].parentNode.nodeType === 11 ) ) {
      -			return;
      -		}
      -
      -		for ( i = 0; i < set.length; i++ ) {
      -			if ( instance.options[ set[ i ][ 0 ] ] ) {
      -				set[ i ][ 1 ].apply( instance.element, args );
      -			}
      -		}
      -	}
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/position.js b/bower_components/jquery-ui/ui/position.js
      deleted file mode 100644
      index 9aa8221695..0000000000
      --- a/bower_components/jquery-ui/ui/position.js
      +++ /dev/null
      @@ -1,498 +0,0 @@
      -/*!
      - * jQuery UI Position 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - *
      - * http://api.jqueryui.com/position/
      - */
      -
      -//>>label: Position
      -//>>group: Core
      -//>>description: Positions elements relative to other elements.
      -//>>docs: http://api.jqueryui.com/position/
      -//>>demos: http://jqueryui.com/position/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -( function() {
      -var cachedScrollbarWidth,
      -	max = Math.max,
      -	abs = Math.abs,
      -	rhorizontal = /left|center|right/,
      -	rvertical = /top|center|bottom/,
      -	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
      -	rposition = /^\w+/,
      -	rpercent = /%$/,
      -	_position = $.fn.position;
      -
      -function getOffsets( offsets, width, height ) {
      -	return [
      -		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
      -		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
      -	];
      -}
      -
      -function parseCss( element, property ) {
      -	return parseInt( $.css( element, property ), 10 ) || 0;
      -}
      -
      -function getDimensions( elem ) {
      -	var raw = elem[ 0 ];
      -	if ( raw.nodeType === 9 ) {
      -		return {
      -			width: elem.width(),
      -			height: elem.height(),
      -			offset: { top: 0, left: 0 }
      -		};
      -	}
      -	if ( $.isWindow( raw ) ) {
      -		return {
      -			width: elem.width(),
      -			height: elem.height(),
      -			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
      -		};
      -	}
      -	if ( raw.preventDefault ) {
      -		return {
      -			width: 0,
      -			height: 0,
      -			offset: { top: raw.pageY, left: raw.pageX }
      -		};
      -	}
      -	return {
      -		width: elem.outerWidth(),
      -		height: elem.outerHeight(),
      -		offset: elem.offset()
      -	};
      -}
      -
      -$.position = {
      -	scrollbarWidth: function() {
      -		if ( cachedScrollbarWidth !== undefined ) {
      -			return cachedScrollbarWidth;
      -		}
      -		var w1, w2,
      -			div = $( "<div " +
      -				"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
      -				"<div style='height:100px;width:auto;'></div></div>" ),
      -			innerDiv = div.children()[ 0 ];
      -
      -		$( "body" ).append( div );
      -		w1 = innerDiv.offsetWidth;
      -		div.css( "overflow", "scroll" );
      -
      -		w2 = innerDiv.offsetWidth;
      -
      -		if ( w1 === w2 ) {
      -			w2 = div[ 0 ].clientWidth;
      -		}
      -
      -		div.remove();
      -
      -		return ( cachedScrollbarWidth = w1 - w2 );
      -	},
      -	getScrollInfo: function( within ) {
      -		var overflowX = within.isWindow || within.isDocument ? "" :
      -				within.element.css( "overflow-x" ),
      -			overflowY = within.isWindow || within.isDocument ? "" :
      -				within.element.css( "overflow-y" ),
      -			hasOverflowX = overflowX === "scroll" ||
      -				( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
      -			hasOverflowY = overflowY === "scroll" ||
      -				( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
      -		return {
      -			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
      -			height: hasOverflowX ? $.position.scrollbarWidth() : 0
      -		};
      -	},
      -	getWithinInfo: function( element ) {
      -		var withinElement = $( element || window ),
      -			isWindow = $.isWindow( withinElement[ 0 ] ),
      -			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
      -			hasOffset = !isWindow && !isDocument;
      -		return {
      -			element: withinElement,
      -			isWindow: isWindow,
      -			isDocument: isDocument,
      -			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
      -			scrollLeft: withinElement.scrollLeft(),
      -			scrollTop: withinElement.scrollTop(),
      -			width: withinElement.outerWidth(),
      -			height: withinElement.outerHeight()
      -		};
      -	}
      -};
      -
      -$.fn.position = function( options ) {
      -	if ( !options || !options.of ) {
      -		return _position.apply( this, arguments );
      -	}
      -
      -	// Make a copy, we don't want to modify arguments
      -	options = $.extend( {}, options );
      -
      -	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
      -		target = $( options.of ),
      -		within = $.position.getWithinInfo( options.within ),
      -		scrollInfo = $.position.getScrollInfo( within ),
      -		collision = ( options.collision || "flip" ).split( " " ),
      -		offsets = {};
      -
      -	dimensions = getDimensions( target );
      -	if ( target[ 0 ].preventDefault ) {
      -
      -		// Force left top to allow flipping
      -		options.at = "left top";
      -	}
      -	targetWidth = dimensions.width;
      -	targetHeight = dimensions.height;
      -	targetOffset = dimensions.offset;
      -
      -	// Clone to reuse original targetOffset later
      -	basePosition = $.extend( {}, targetOffset );
      -
      -	// Force my and at to have valid horizontal and vertical positions
      -	// if a value is missing or invalid, it will be converted to center
      -	$.each( [ "my", "at" ], function() {
      -		var pos = ( options[ this ] || "" ).split( " " ),
      -			horizontalOffset,
      -			verticalOffset;
      -
      -		if ( pos.length === 1 ) {
      -			pos = rhorizontal.test( pos[ 0 ] ) ?
      -				pos.concat( [ "center" ] ) :
      -				rvertical.test( pos[ 0 ] ) ?
      -					[ "center" ].concat( pos ) :
      -					[ "center", "center" ];
      -		}
      -		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
      -		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
      -
      -		// Calculate offsets
      -		horizontalOffset = roffset.exec( pos[ 0 ] );
      -		verticalOffset = roffset.exec( pos[ 1 ] );
      -		offsets[ this ] = [
      -			horizontalOffset ? horizontalOffset[ 0 ] : 0,
      -			verticalOffset ? verticalOffset[ 0 ] : 0
      -		];
      -
      -		// Reduce to just the positions without the offsets
      -		options[ this ] = [
      -			rposition.exec( pos[ 0 ] )[ 0 ],
      -			rposition.exec( pos[ 1 ] )[ 0 ]
      -		];
      -	} );
      -
      -	// Normalize collision option
      -	if ( collision.length === 1 ) {
      -		collision[ 1 ] = collision[ 0 ];
      -	}
      -
      -	if ( options.at[ 0 ] === "right" ) {
      -		basePosition.left += targetWidth;
      -	} else if ( options.at[ 0 ] === "center" ) {
      -		basePosition.left += targetWidth / 2;
      -	}
      -
      -	if ( options.at[ 1 ] === "bottom" ) {
      -		basePosition.top += targetHeight;
      -	} else if ( options.at[ 1 ] === "center" ) {
      -		basePosition.top += targetHeight / 2;
      -	}
      -
      -	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
      -	basePosition.left += atOffset[ 0 ];
      -	basePosition.top += atOffset[ 1 ];
      -
      -	return this.each( function() {
      -		var collisionPosition, using,
      -			elem = $( this ),
      -			elemWidth = elem.outerWidth(),
      -			elemHeight = elem.outerHeight(),
      -			marginLeft = parseCss( this, "marginLeft" ),
      -			marginTop = parseCss( this, "marginTop" ),
      -			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
      -				scrollInfo.width,
      -			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
      -				scrollInfo.height,
      -			position = $.extend( {}, basePosition ),
      -			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
      -
      -		if ( options.my[ 0 ] === "right" ) {
      -			position.left -= elemWidth;
      -		} else if ( options.my[ 0 ] === "center" ) {
      -			position.left -= elemWidth / 2;
      -		}
      -
      -		if ( options.my[ 1 ] === "bottom" ) {
      -			position.top -= elemHeight;
      -		} else if ( options.my[ 1 ] === "center" ) {
      -			position.top -= elemHeight / 2;
      -		}
      -
      -		position.left += myOffset[ 0 ];
      -		position.top += myOffset[ 1 ];
      -
      -		collisionPosition = {
      -			marginLeft: marginLeft,
      -			marginTop: marginTop
      -		};
      -
      -		$.each( [ "left", "top" ], function( i, dir ) {
      -			if ( $.ui.position[ collision[ i ] ] ) {
      -				$.ui.position[ collision[ i ] ][ dir ]( position, {
      -					targetWidth: targetWidth,
      -					targetHeight: targetHeight,
      -					elemWidth: elemWidth,
      -					elemHeight: elemHeight,
      -					collisionPosition: collisionPosition,
      -					collisionWidth: collisionWidth,
      -					collisionHeight: collisionHeight,
      -					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
      -					my: options.my,
      -					at: options.at,
      -					within: within,
      -					elem: elem
      -				} );
      -			}
      -		} );
      -
      -		if ( options.using ) {
      -
      -			// Adds feedback as second argument to using callback, if present
      -			using = function( props ) {
      -				var left = targetOffset.left - position.left,
      -					right = left + targetWidth - elemWidth,
      -					top = targetOffset.top - position.top,
      -					bottom = top + targetHeight - elemHeight,
      -					feedback = {
      -						target: {
      -							element: target,
      -							left: targetOffset.left,
      -							top: targetOffset.top,
      -							width: targetWidth,
      -							height: targetHeight
      -						},
      -						element: {
      -							element: elem,
      -							left: position.left,
      -							top: position.top,
      -							width: elemWidth,
      -							height: elemHeight
      -						},
      -						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
      -						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
      -					};
      -				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
      -					feedback.horizontal = "center";
      -				}
      -				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
      -					feedback.vertical = "middle";
      -				}
      -				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
      -					feedback.important = "horizontal";
      -				} else {
      -					feedback.important = "vertical";
      -				}
      -				options.using.call( this, props, feedback );
      -			};
      -		}
      -
      -		elem.offset( $.extend( position, { using: using } ) );
      -	} );
      -};
      -
      -$.ui.position = {
      -	fit: {
      -		left: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
      -				outerWidth = within.width,
      -				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
      -				overLeft = withinOffset - collisionPosLeft,
      -				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
      -				newOverRight;
      -
      -			// Element is wider than within
      -			if ( data.collisionWidth > outerWidth ) {
      -
      -				// Element is initially over the left side of within
      -				if ( overLeft > 0 && overRight <= 0 ) {
      -					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
      -						withinOffset;
      -					position.left += overLeft - newOverRight;
      -
      -				// Element is initially over right side of within
      -				} else if ( overRight > 0 && overLeft <= 0 ) {
      -					position.left = withinOffset;
      -
      -				// Element is initially over both left and right sides of within
      -				} else {
      -					if ( overLeft > overRight ) {
      -						position.left = withinOffset + outerWidth - data.collisionWidth;
      -					} else {
      -						position.left = withinOffset;
      -					}
      -				}
      -
      -			// Too far left -> align with left edge
      -			} else if ( overLeft > 0 ) {
      -				position.left += overLeft;
      -
      -			// Too far right -> align with right edge
      -			} else if ( overRight > 0 ) {
      -				position.left -= overRight;
      -
      -			// Adjust based on position and margin
      -			} else {
      -				position.left = max( position.left - collisionPosLeft, position.left );
      -			}
      -		},
      -		top: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
      -				outerHeight = data.within.height,
      -				collisionPosTop = position.top - data.collisionPosition.marginTop,
      -				overTop = withinOffset - collisionPosTop,
      -				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
      -				newOverBottom;
      -
      -			// Element is taller than within
      -			if ( data.collisionHeight > outerHeight ) {
      -
      -				// Element is initially over the top of within
      -				if ( overTop > 0 && overBottom <= 0 ) {
      -					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
      -						withinOffset;
      -					position.top += overTop - newOverBottom;
      -
      -				// Element is initially over bottom of within
      -				} else if ( overBottom > 0 && overTop <= 0 ) {
      -					position.top = withinOffset;
      -
      -				// Element is initially over both top and bottom of within
      -				} else {
      -					if ( overTop > overBottom ) {
      -						position.top = withinOffset + outerHeight - data.collisionHeight;
      -					} else {
      -						position.top = withinOffset;
      -					}
      -				}
      -
      -			// Too far up -> align with top
      -			} else if ( overTop > 0 ) {
      -				position.top += overTop;
      -
      -			// Too far down -> align with bottom edge
      -			} else if ( overBottom > 0 ) {
      -				position.top -= overBottom;
      -
      -			// Adjust based on position and margin
      -			} else {
      -				position.top = max( position.top - collisionPosTop, position.top );
      -			}
      -		}
      -	},
      -	flip: {
      -		left: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.offset.left + within.scrollLeft,
      -				outerWidth = within.width,
      -				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
      -				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
      -				overLeft = collisionPosLeft - offsetLeft,
      -				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
      -				myOffset = data.my[ 0 ] === "left" ?
      -					-data.elemWidth :
      -					data.my[ 0 ] === "right" ?
      -						data.elemWidth :
      -						0,
      -				atOffset = data.at[ 0 ] === "left" ?
      -					data.targetWidth :
      -					data.at[ 0 ] === "right" ?
      -						-data.targetWidth :
      -						0,
      -				offset = -2 * data.offset[ 0 ],
      -				newOverRight,
      -				newOverLeft;
      -
      -			if ( overLeft < 0 ) {
      -				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
      -					outerWidth - withinOffset;
      -				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
      -					position.left += myOffset + atOffset + offset;
      -				}
      -			} else if ( overRight > 0 ) {
      -				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
      -					atOffset + offset - offsetLeft;
      -				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
      -					position.left += myOffset + atOffset + offset;
      -				}
      -			}
      -		},
      -		top: function( position, data ) {
      -			var within = data.within,
      -				withinOffset = within.offset.top + within.scrollTop,
      -				outerHeight = within.height,
      -				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
      -				collisionPosTop = position.top - data.collisionPosition.marginTop,
      -				overTop = collisionPosTop - offsetTop,
      -				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
      -				top = data.my[ 1 ] === "top",
      -				myOffset = top ?
      -					-data.elemHeight :
      -					data.my[ 1 ] === "bottom" ?
      -						data.elemHeight :
      -						0,
      -				atOffset = data.at[ 1 ] === "top" ?
      -					data.targetHeight :
      -					data.at[ 1 ] === "bottom" ?
      -						-data.targetHeight :
      -						0,
      -				offset = -2 * data.offset[ 1 ],
      -				newOverTop,
      -				newOverBottom;
      -			if ( overTop < 0 ) {
      -				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
      -					outerHeight - withinOffset;
      -				if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
      -					position.top += myOffset + atOffset + offset;
      -				}
      -			} else if ( overBottom > 0 ) {
      -				newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
      -					offset - offsetTop;
      -				if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
      -					position.top += myOffset + atOffset + offset;
      -				}
      -			}
      -		}
      -	},
      -	flipfit: {
      -		left: function() {
      -			$.ui.position.flip.left.apply( this, arguments );
      -			$.ui.position.fit.left.apply( this, arguments );
      -		},
      -		top: function() {
      -			$.ui.position.flip.top.apply( this, arguments );
      -			$.ui.position.fit.top.apply( this, arguments );
      -		}
      -	}
      -};
      -
      -} )();
      -
      -return $.ui.position;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/safe-active-element.js b/bower_components/jquery-ui/ui/safe-active-element.js
      deleted file mode 100644
      index 4d04add5ff..0000000000
      --- a/bower_components/jquery-ui/ui/safe-active-element.js
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -return $.ui.safeActiveElement = function( document ) {
      -	var activeElement;
      -
      -	// Support: IE 9 only
      -	// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
      -	try {
      -		activeElement = document.activeElement;
      -	} catch ( error ) {
      -		activeElement = document.body;
      -	}
      -
      -	// Support: IE 9 - 11 only
      -	// IE may return null instead of an element
      -	// Interestingly, this only seems to occur when NOT in an iframe
      -	if ( !activeElement ) {
      -		activeElement = document.body;
      -	}
      -
      -	// Support: IE 11 only
      -	// IE11 returns a seemingly empty object in some cases when accessing
      -	// document.activeElement from an <iframe>
      -	if ( !activeElement.nodeName ) {
      -		activeElement = document.body;
      -	}
      -
      -	return activeElement;
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/safe-blur.js b/bower_components/jquery-ui/ui/safe-blur.js
      deleted file mode 100644
      index 5258782680..0000000000
      --- a/bower_components/jquery-ui/ui/safe-blur.js
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -return $.ui.safeBlur = function( element ) {
      -
      -	// Support: IE9 - 10 only
      -	// If the <body> is blurred, IE will switch windows, see #9420
      -	if ( element && element.nodeName.toLowerCase() !== "body" ) {
      -		$( element ).trigger( "blur" );
      -	}
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/scroll-parent.js b/bower_components/jquery-ui/ui/scroll-parent.js
      deleted file mode 100644
      index dfe820b625..0000000000
      --- a/bower_components/jquery-ui/ui/scroll-parent.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -/*!
      - * jQuery UI Scroll Parent 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: scrollParent
      -//>>group: Core
      -//>>description: Get the closest ancestor element that is scrollable.
      -//>>docs: http://api.jqueryui.com/scrollParent/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -return $.fn.scrollParent = function( includeHidden ) {
      -	var position = this.css( "position" ),
      -		excludeStaticParent = position === "absolute",
      -		overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,
      -		scrollParent = this.parents().filter( function() {
      -			var parent = $( this );
      -			if ( excludeStaticParent && parent.css( "position" ) === "static" ) {
      -				return false;
      -			}
      -			return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) +
      -				parent.css( "overflow-x" ) );
      -		} ).eq( 0 );
      -
      -	return position === "fixed" || !scrollParent.length ?
      -		$( this[ 0 ].ownerDocument || document ) :
      -		scrollParent;
      -};
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/tabbable.js b/bower_components/jquery-ui/ui/tabbable.js
      deleted file mode 100644
      index d3ceafd90c..0000000000
      --- a/bower_components/jquery-ui/ui/tabbable.js
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -/*!
      - * jQuery UI Tabbable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: :tabbable Selector
      -//>>group: Core
      -//>>description: Selects elements which can be tabbed to.
      -//>>docs: http://api.jqueryui.com/tabbable-selector/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version", "./focusable" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -return $.extend( $.expr[ ":" ], {
      -	tabbable: function( element ) {
      -		var tabIndex = $.attr( element, "tabindex" ),
      -			hasTabindex = tabIndex != null;
      -		return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex );
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/unique-id.js b/bower_components/jquery-ui/ui/unique-id.js
      deleted file mode 100644
      index 9e45f0afa3..0000000000
      --- a/bower_components/jquery-ui/ui/unique-id.js
      +++ /dev/null
      @@ -1,49 +0,0 @@
      -/*!
      - * jQuery UI Unique ID 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: uniqueId
      -//>>group: Core
      -//>>description: Functions to generate and remove uniqueId's
      -//>>docs: http://api.jqueryui.com/uniqueId/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -return $.fn.extend( {
      -	uniqueId: ( function() {
      -		var uuid = 0;
      -
      -		return function() {
      -			return this.each( function() {
      -				if ( !this.id ) {
      -					this.id = "ui-id-" + ( ++uuid );
      -				}
      -			} );
      -		};
      -	} )(),
      -
      -	removeUniqueId: function() {
      -		return this.each( function() {
      -			if ( /^ui-id-\d+$/.test( this.id ) ) {
      -				$( this ).removeAttr( "id" );
      -			}
      -		} );
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/version.js b/bower_components/jquery-ui/ui/version.js
      deleted file mode 100644
      index e7505f5a3d..0000000000
      --- a/bower_components/jquery-ui/ui/version.js
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -} ( function( $ ) {
      -
      -$.ui = $.ui || {};
      -
      -return $.ui.version = "1.12.1";
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widget.js b/bower_components/jquery-ui/ui/widget.js
      deleted file mode 100644
      index cac9413190..0000000000
      --- a/bower_components/jquery-ui/ui/widget.js
      +++ /dev/null
      @@ -1,733 +0,0 @@
      -/*!
      - * jQuery UI Widget 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Widget
      -//>>group: Core
      -//>>description: Provides a factory for creating stateful widgets with a common API.
      -//>>docs: http://api.jqueryui.com/jQuery.widget/
      -//>>demos: http://jqueryui.com/widget/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [ "jquery", "./version" ], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -var widgetUuid = 0;
      -var widgetSlice = Array.prototype.slice;
      -
      -$.cleanData = ( function( orig ) {
      -	return function( elems ) {
      -		var events, elem, i;
      -		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
      -			try {
      -
      -				// Only trigger remove when necessary to save time
      -				events = $._data( elem, "events" );
      -				if ( events && events.remove ) {
      -					$( elem ).triggerHandler( "remove" );
      -				}
      -
      -			// Http://bugs.jquery.com/ticket/8235
      -			} catch ( e ) {}
      -		}
      -		orig( elems );
      -	};
      -} )( $.cleanData );
      -
      -$.widget = function( name, base, prototype ) {
      -	var existingConstructor, constructor, basePrototype;
      -
      -	// ProxiedPrototype allows the provided prototype to remain unmodified
      -	// so that it can be used as a mixin for multiple widgets (#8876)
      -	var proxiedPrototype = {};
      -
      -	var namespace = name.split( "." )[ 0 ];
      -	name = name.split( "." )[ 1 ];
      -	var fullName = namespace + "-" + name;
      -
      -	if ( !prototype ) {
      -		prototype = base;
      -		base = $.Widget;
      -	}
      -
      -	if ( $.isArray( prototype ) ) {
      -		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
      -	}
      -
      -	// Create selector for plugin
      -	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
      -		return !!$.data( elem, fullName );
      -	};
      -
      -	$[ namespace ] = $[ namespace ] || {};
      -	existingConstructor = $[ namespace ][ name ];
      -	constructor = $[ namespace ][ name ] = function( options, element ) {
      -
      -		// Allow instantiation without "new" keyword
      -		if ( !this._createWidget ) {
      -			return new constructor( options, element );
      -		}
      -
      -		// Allow instantiation without initializing for simple inheritance
      -		// must use "new" keyword (the code above always passes args)
      -		if ( arguments.length ) {
      -			this._createWidget( options, element );
      -		}
      -	};
      -
      -	// Extend with the existing constructor to carry over any static properties
      -	$.extend( constructor, existingConstructor, {
      -		version: prototype.version,
      -
      -		// Copy the object used to create the prototype in case we need to
      -		// redefine the widget later
      -		_proto: $.extend( {}, prototype ),
      -
      -		// Track widgets that inherit from this widget in case this widget is
      -		// redefined after a widget inherits from it
      -		_childConstructors: []
      -	} );
      -
      -	basePrototype = new base();
      -
      -	// We need to make the options hash a property directly on the new instance
      -	// otherwise we'll modify the options hash on the prototype that we're
      -	// inheriting from
      -	basePrototype.options = $.widget.extend( {}, basePrototype.options );
      -	$.each( prototype, function( prop, value ) {
      -		if ( !$.isFunction( value ) ) {
      -			proxiedPrototype[ prop ] = value;
      -			return;
      -		}
      -		proxiedPrototype[ prop ] = ( function() {
      -			function _super() {
      -				return base.prototype[ prop ].apply( this, arguments );
      -			}
      -
      -			function _superApply( args ) {
      -				return base.prototype[ prop ].apply( this, args );
      -			}
      -
      -			return function() {
      -				var __super = this._super;
      -				var __superApply = this._superApply;
      -				var returnValue;
      -
      -				this._super = _super;
      -				this._superApply = _superApply;
      -
      -				returnValue = value.apply( this, arguments );
      -
      -				this._super = __super;
      -				this._superApply = __superApply;
      -
      -				return returnValue;
      -			};
      -		} )();
      -	} );
      -	constructor.prototype = $.widget.extend( basePrototype, {
      -
      -		// TODO: remove support for widgetEventPrefix
      -		// always use the name + a colon as the prefix, e.g., draggable:start
      -		// don't prefix for widgets that aren't DOM-based
      -		widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name
      -	}, proxiedPrototype, {
      -		constructor: constructor,
      -		namespace: namespace,
      -		widgetName: name,
      -		widgetFullName: fullName
      -	} );
      -
      -	// If this widget is being redefined then we need to find all widgets that
      -	// are inheriting from it and redefine all of them so that they inherit from
      -	// the new version of this widget. We're essentially trying to replace one
      -	// level in the prototype chain.
      -	if ( existingConstructor ) {
      -		$.each( existingConstructor._childConstructors, function( i, child ) {
      -			var childPrototype = child.prototype;
      -
      -			// Redefine the child widget using the same prototype that was
      -			// originally used, but inherit from the new version of the base
      -			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor,
      -				child._proto );
      -		} );
      -
      -		// Remove the list of existing child constructors from the old constructor
      -		// so the old child constructors can be garbage collected
      -		delete existingConstructor._childConstructors;
      -	} else {
      -		base._childConstructors.push( constructor );
      -	}
      -
      -	$.widget.bridge( name, constructor );
      -
      -	return constructor;
      -};
      -
      -$.widget.extend = function( target ) {
      -	var input = widgetSlice.call( arguments, 1 );
      -	var inputIndex = 0;
      -	var inputLength = input.length;
      -	var key;
      -	var value;
      -
      -	for ( ; inputIndex < inputLength; inputIndex++ ) {
      -		for ( key in input[ inputIndex ] ) {
      -			value = input[ inputIndex ][ key ];
      -			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
      -
      -				// Clone objects
      -				if ( $.isPlainObject( value ) ) {
      -					target[ key ] = $.isPlainObject( target[ key ] ) ?
      -						$.widget.extend( {}, target[ key ], value ) :
      -
      -						// Don't extend strings, arrays, etc. with objects
      -						$.widget.extend( {}, value );
      -
      -				// Copy everything else by reference
      -				} else {
      -					target[ key ] = value;
      -				}
      -			}
      -		}
      -	}
      -	return target;
      -};
      -
      -$.widget.bridge = function( name, object ) {
      -	var fullName = object.prototype.widgetFullName || name;
      -	$.fn[ name ] = function( options ) {
      -		var isMethodCall = typeof options === "string";
      -		var args = widgetSlice.call( arguments, 1 );
      -		var returnValue = this;
      -
      -		if ( isMethodCall ) {
      -
      -			// If this is an empty collection, we need to have the instance method
      -			// return undefined instead of the jQuery instance
      -			if ( !this.length && options === "instance" ) {
      -				returnValue = undefined;
      -			} else {
      -				this.each( function() {
      -					var methodValue;
      -					var instance = $.data( this, fullName );
      -
      -					if ( options === "instance" ) {
      -						returnValue = instance;
      -						return false;
      -					}
      -
      -					if ( !instance ) {
      -						return $.error( "cannot call methods on " + name +
      -							" prior to initialization; " +
      -							"attempted to call method '" + options + "'" );
      -					}
      -
      -					if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
      -						return $.error( "no such method '" + options + "' for " + name +
      -							" widget instance" );
      -					}
      -
      -					methodValue = instance[ options ].apply( instance, args );
      -
      -					if ( methodValue !== instance && methodValue !== undefined ) {
      -						returnValue = methodValue && methodValue.jquery ?
      -							returnValue.pushStack( methodValue.get() ) :
      -							methodValue;
      -						return false;
      -					}
      -				} );
      -			}
      -		} else {
      -
      -			// Allow multiple hashes to be passed on init
      -			if ( args.length ) {
      -				options = $.widget.extend.apply( null, [ options ].concat( args ) );
      -			}
      -
      -			this.each( function() {
      -				var instance = $.data( this, fullName );
      -				if ( instance ) {
      -					instance.option( options || {} );
      -					if ( instance._init ) {
      -						instance._init();
      -					}
      -				} else {
      -					$.data( this, fullName, new object( options, this ) );
      -				}
      -			} );
      -		}
      -
      -		return returnValue;
      -	};
      -};
      -
      -$.Widget = function( /* options, element */ ) {};
      -$.Widget._childConstructors = [];
      -
      -$.Widget.prototype = {
      -	widgetName: "widget",
      -	widgetEventPrefix: "",
      -	defaultElement: "<div>",
      -
      -	options: {
      -		classes: {},
      -		disabled: false,
      -
      -		// Callbacks
      -		create: null
      -	},
      -
      -	_createWidget: function( options, element ) {
      -		element = $( element || this.defaultElement || this )[ 0 ];
      -		this.element = $( element );
      -		this.uuid = widgetUuid++;
      -		this.eventNamespace = "." + this.widgetName + this.uuid;
      -
      -		this.bindings = $();
      -		this.hoverable = $();
      -		this.focusable = $();
      -		this.classesElementLookup = {};
      -
      -		if ( element !== this ) {
      -			$.data( element, this.widgetFullName, this );
      -			this._on( true, this.element, {
      -				remove: function( event ) {
      -					if ( event.target === element ) {
      -						this.destroy();
      -					}
      -				}
      -			} );
      -			this.document = $( element.style ?
      -
      -				// Element within the document
      -				element.ownerDocument :
      -
      -				// Element is window or document
      -				element.document || element );
      -			this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );
      -		}
      -
      -		this.options = $.widget.extend( {},
      -			this.options,
      -			this._getCreateOptions(),
      -			options );
      -
      -		this._create();
      -
      -		if ( this.options.disabled ) {
      -			this._setOptionDisabled( this.options.disabled );
      -		}
      -
      -		this._trigger( "create", null, this._getCreateEventData() );
      -		this._init();
      -	},
      -
      -	_getCreateOptions: function() {
      -		return {};
      -	},
      -
      -	_getCreateEventData: $.noop,
      -
      -	_create: $.noop,
      -
      -	_init: $.noop,
      -
      -	destroy: function() {
      -		var that = this;
      -
      -		this._destroy();
      -		$.each( this.classesElementLookup, function( key, value ) {
      -			that._removeClass( value, key );
      -		} );
      -
      -		// We can probably remove the unbind calls in 2.0
      -		// all event bindings should go through this._on()
      -		this.element
      -			.off( this.eventNamespace )
      -			.removeData( this.widgetFullName );
      -		this.widget()
      -			.off( this.eventNamespace )
      -			.removeAttr( "aria-disabled" );
      -
      -		// Clean up events and states
      -		this.bindings.off( this.eventNamespace );
      -	},
      -
      -	_destroy: $.noop,
      -
      -	widget: function() {
      -		return this.element;
      -	},
      -
      -	option: function( key, value ) {
      -		var options = key;
      -		var parts;
      -		var curOption;
      -		var i;
      -
      -		if ( arguments.length === 0 ) {
      -
      -			// Don't return a reference to the internal hash
      -			return $.widget.extend( {}, this.options );
      -		}
      -
      -		if ( typeof key === "string" ) {
      -
      -			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
      -			options = {};
      -			parts = key.split( "." );
      -			key = parts.shift();
      -			if ( parts.length ) {
      -				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
      -				for ( i = 0; i < parts.length - 1; i++ ) {
      -					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
      -					curOption = curOption[ parts[ i ] ];
      -				}
      -				key = parts.pop();
      -				if ( arguments.length === 1 ) {
      -					return curOption[ key ] === undefined ? null : curOption[ key ];
      -				}
      -				curOption[ key ] = value;
      -			} else {
      -				if ( arguments.length === 1 ) {
      -					return this.options[ key ] === undefined ? null : this.options[ key ];
      -				}
      -				options[ key ] = value;
      -			}
      -		}
      -
      -		this._setOptions( options );
      -
      -		return this;
      -	},
      -
      -	_setOptions: function( options ) {
      -		var key;
      -
      -		for ( key in options ) {
      -			this._setOption( key, options[ key ] );
      -		}
      -
      -		return this;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "classes" ) {
      -			this._setOptionClasses( value );
      -		}
      -
      -		this.options[ key ] = value;
      -
      -		if ( key === "disabled" ) {
      -			this._setOptionDisabled( value );
      -		}
      -
      -		return this;
      -	},
      -
      -	_setOptionClasses: function( value ) {
      -		var classKey, elements, currentElements;
      -
      -		for ( classKey in value ) {
      -			currentElements = this.classesElementLookup[ classKey ];
      -			if ( value[ classKey ] === this.options.classes[ classKey ] ||
      -					!currentElements ||
      -					!currentElements.length ) {
      -				continue;
      -			}
      -
      -			// We are doing this to create a new jQuery object because the _removeClass() call
      -			// on the next line is going to destroy the reference to the current elements being
      -			// tracked. We need to save a copy of this collection so that we can add the new classes
      -			// below.
      -			elements = $( currentElements.get() );
      -			this._removeClass( currentElements, classKey );
      -
      -			// We don't use _addClass() here, because that uses this.options.classes
      -			// for generating the string of classes. We want to use the value passed in from
      -			// _setOption(), this is the new value of the classes option which was passed to
      -			// _setOption(). We pass this value directly to _classes().
      -			elements.addClass( this._classes( {
      -				element: elements,
      -				keys: classKey,
      -				classes: value,
      -				add: true
      -			} ) );
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value );
      -
      -		// If the widget is becoming disabled, then nothing is interactive
      -		if ( value ) {
      -			this._removeClass( this.hoverable, null, "ui-state-hover" );
      -			this._removeClass( this.focusable, null, "ui-state-focus" );
      -		}
      -	},
      -
      -	enable: function() {
      -		return this._setOptions( { disabled: false } );
      -	},
      -
      -	disable: function() {
      -		return this._setOptions( { disabled: true } );
      -	},
      -
      -	_classes: function( options ) {
      -		var full = [];
      -		var that = this;
      -
      -		options = $.extend( {
      -			element: this.element,
      -			classes: this.options.classes || {}
      -		}, options );
      -
      -		function processClassString( classes, checkOption ) {
      -			var current, i;
      -			for ( i = 0; i < classes.length; i++ ) {
      -				current = that.classesElementLookup[ classes[ i ] ] || $();
      -				if ( options.add ) {
      -					current = $( $.unique( current.get().concat( options.element.get() ) ) );
      -				} else {
      -					current = $( current.not( options.element ).get() );
      -				}
      -				that.classesElementLookup[ classes[ i ] ] = current;
      -				full.push( classes[ i ] );
      -				if ( checkOption && options.classes[ classes[ i ] ] ) {
      -					full.push( options.classes[ classes[ i ] ] );
      -				}
      -			}
      -		}
      -
      -		this._on( options.element, {
      -			"remove": "_untrackClassesElement"
      -		} );
      -
      -		if ( options.keys ) {
      -			processClassString( options.keys.match( /\S+/g ) || [], true );
      -		}
      -		if ( options.extra ) {
      -			processClassString( options.extra.match( /\S+/g ) || [] );
      -		}
      -
      -		return full.join( " " );
      -	},
      -
      -	_untrackClassesElement: function( event ) {
      -		var that = this;
      -		$.each( that.classesElementLookup, function( key, value ) {
      -			if ( $.inArray( event.target, value ) !== -1 ) {
      -				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
      -			}
      -		} );
      -	},
      -
      -	_removeClass: function( element, keys, extra ) {
      -		return this._toggleClass( element, keys, extra, false );
      -	},
      -
      -	_addClass: function( element, keys, extra ) {
      -		return this._toggleClass( element, keys, extra, true );
      -	},
      -
      -	_toggleClass: function( element, keys, extra, add ) {
      -		add = ( typeof add === "boolean" ) ? add : extra;
      -		var shift = ( typeof element === "string" || element === null ),
      -			options = {
      -				extra: shift ? keys : extra,
      -				keys: shift ? element : keys,
      -				element: shift ? this.element : element,
      -				add: add
      -			};
      -		options.element.toggleClass( this._classes( options ), add );
      -		return this;
      -	},
      -
      -	_on: function( suppressDisabledCheck, element, handlers ) {
      -		var delegateElement;
      -		var instance = this;
      -
      -		// No suppressDisabledCheck flag, shuffle arguments
      -		if ( typeof suppressDisabledCheck !== "boolean" ) {
      -			handlers = element;
      -			element = suppressDisabledCheck;
      -			suppressDisabledCheck = false;
      -		}
      -
      -		// No element argument, shuffle and use this.element
      -		if ( !handlers ) {
      -			handlers = element;
      -			element = this.element;
      -			delegateElement = this.widget();
      -		} else {
      -			element = delegateElement = $( element );
      -			this.bindings = this.bindings.add( element );
      -		}
      -
      -		$.each( handlers, function( event, handler ) {
      -			function handlerProxy() {
      -
      -				// Allow widgets to customize the disabled handling
      -				// - disabled as an array instead of boolean
      -				// - disabled class as method for disabling individual parts
      -				if ( !suppressDisabledCheck &&
      -						( instance.options.disabled === true ||
      -						$( this ).hasClass( "ui-state-disabled" ) ) ) {
      -					return;
      -				}
      -				return ( typeof handler === "string" ? instance[ handler ] : handler )
      -					.apply( instance, arguments );
      -			}
      -
      -			// Copy the guid so direct unbinding works
      -			if ( typeof handler !== "string" ) {
      -				handlerProxy.guid = handler.guid =
      -					handler.guid || handlerProxy.guid || $.guid++;
      -			}
      -
      -			var match = event.match( /^([\w:-]*)\s*(.*)$/ );
      -			var eventName = match[ 1 ] + instance.eventNamespace;
      -			var selector = match[ 2 ];
      -
      -			if ( selector ) {
      -				delegateElement.on( eventName, selector, handlerProxy );
      -			} else {
      -				element.on( eventName, handlerProxy );
      -			}
      -		} );
      -	},
      -
      -	_off: function( element, eventName ) {
      -		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
      -			this.eventNamespace;
      -		element.off( eventName ).off( eventName );
      -
      -		// Clear the stack to avoid memory leaks (#10056)
      -		this.bindings = $( this.bindings.not( element ).get() );
      -		this.focusable = $( this.focusable.not( element ).get() );
      -		this.hoverable = $( this.hoverable.not( element ).get() );
      -	},
      -
      -	_delay: function( handler, delay ) {
      -		function handlerProxy() {
      -			return ( typeof handler === "string" ? instance[ handler ] : handler )
      -				.apply( instance, arguments );
      -		}
      -		var instance = this;
      -		return setTimeout( handlerProxy, delay || 0 );
      -	},
      -
      -	_hoverable: function( element ) {
      -		this.hoverable = this.hoverable.add( element );
      -		this._on( element, {
      -			mouseenter: function( event ) {
      -				this._addClass( $( event.currentTarget ), null, "ui-state-hover" );
      -			},
      -			mouseleave: function( event ) {
      -				this._removeClass( $( event.currentTarget ), null, "ui-state-hover" );
      -			}
      -		} );
      -	},
      -
      -	_focusable: function( element ) {
      -		this.focusable = this.focusable.add( element );
      -		this._on( element, {
      -			focusin: function( event ) {
      -				this._addClass( $( event.currentTarget ), null, "ui-state-focus" );
      -			},
      -			focusout: function( event ) {
      -				this._removeClass( $( event.currentTarget ), null, "ui-state-focus" );
      -			}
      -		} );
      -	},
      -
      -	_trigger: function( type, event, data ) {
      -		var prop, orig;
      -		var callback = this.options[ type ];
      -
      -		data = data || {};
      -		event = $.Event( event );
      -		event.type = ( type === this.widgetEventPrefix ?
      -			type :
      -			this.widgetEventPrefix + type ).toLowerCase();
      -
      -		// The original event may come from any element
      -		// so we need to reset the target on the new event
      -		event.target = this.element[ 0 ];
      -
      -		// Copy original event properties over to the new event
      -		orig = event.originalEvent;
      -		if ( orig ) {
      -			for ( prop in orig ) {
      -				if ( !( prop in event ) ) {
      -					event[ prop ] = orig[ prop ];
      -				}
      -			}
      -		}
      -
      -		this.element.trigger( event, data );
      -		return !( $.isFunction( callback ) &&
      -			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
      -			event.isDefaultPrevented() );
      -	}
      -};
      -
      -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
      -	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
      -		if ( typeof options === "string" ) {
      -			options = { effect: options };
      -		}
      -
      -		var hasOptions;
      -		var effectName = !options ?
      -			method :
      -			options === true || typeof options === "number" ?
      -				defaultEffect :
      -				options.effect || defaultEffect;
      -
      -		options = options || {};
      -		if ( typeof options === "number" ) {
      -			options = { duration: options };
      -		}
      -
      -		hasOptions = !$.isEmptyObject( options );
      -		options.complete = callback;
      -
      -		if ( options.delay ) {
      -			element.delay( options.delay );
      -		}
      -
      -		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
      -			element[ method ]( options );
      -		} else if ( effectName !== method && element[ effectName ] ) {
      -			element[ effectName ]( options.duration, options.easing, callback );
      -		} else {
      -			element.queue( function( next ) {
      -				$( this )[ method ]();
      -				if ( callback ) {
      -					callback.call( element[ 0 ] );
      -				}
      -				next();
      -			} );
      -		}
      -	};
      -} );
      -
      -return $.widget;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/accordion.js b/bower_components/jquery-ui/ui/widgets/accordion.js
      deleted file mode 100644
      index 4b3a54d0fd..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/accordion.js
      +++ /dev/null
      @@ -1,613 +0,0 @@
      -/*!
      - * jQuery UI Accordion 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Accordion
      -//>>group: Widgets
      -// jscs:disable maximumLineLength
      -//>>description: Displays collapsible content panels for presenting information in a limited amount of space.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/accordion/
      -//>>demos: http://jqueryui.com/accordion/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/accordion.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../keycode",
      -			"../unique-id",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.widget( "ui.accordion", {
      -	version: "1.12.1",
      -	options: {
      -		active: 0,
      -		animate: {},
      -		classes: {
      -			"ui-accordion-header": "ui-corner-top",
      -			"ui-accordion-header-collapsed": "ui-corner-all",
      -			"ui-accordion-content": "ui-corner-bottom"
      -		},
      -		collapsible: false,
      -		event: "click",
      -		header: "> li > :first-child, > :not(li):even",
      -		heightStyle: "auto",
      -		icons: {
      -			activeHeader: "ui-icon-triangle-1-s",
      -			header: "ui-icon-triangle-1-e"
      -		},
      -
      -		// Callbacks
      -		activate: null,
      -		beforeActivate: null
      -	},
      -
      -	hideProps: {
      -		borderTopWidth: "hide",
      -		borderBottomWidth: "hide",
      -		paddingTop: "hide",
      -		paddingBottom: "hide",
      -		height: "hide"
      -	},
      -
      -	showProps: {
      -		borderTopWidth: "show",
      -		borderBottomWidth: "show",
      -		paddingTop: "show",
      -		paddingBottom: "show",
      -		height: "show"
      -	},
      -
      -	_create: function() {
      -		var options = this.options;
      -
      -		this.prevShow = this.prevHide = $();
      -		this._addClass( "ui-accordion", "ui-widget ui-helper-reset" );
      -		this.element.attr( "role", "tablist" );
      -
      -		// Don't allow collapsible: false and active: false / null
      -		if ( !options.collapsible && ( options.active === false || options.active == null ) ) {
      -			options.active = 0;
      -		}
      -
      -		this._processPanels();
      -
      -		// handle negative values
      -		if ( options.active < 0 ) {
      -			options.active += this.headers.length;
      -		}
      -		this._refresh();
      -	},
      -
      -	_getCreateEventData: function() {
      -		return {
      -			header: this.active,
      -			panel: !this.active.length ? $() : this.active.next()
      -		};
      -	},
      -
      -	_createIcons: function() {
      -		var icon, children,
      -			icons = this.options.icons;
      -
      -		if ( icons ) {
      -			icon = $( "<span>" );
      -			this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header );
      -			icon.prependTo( this.headers );
      -			children = this.active.children( ".ui-accordion-header-icon" );
      -			this._removeClass( children, icons.header )
      -				._addClass( children, null, icons.activeHeader )
      -				._addClass( this.headers, "ui-accordion-icons" );
      -		}
      -	},
      -
      -	_destroyIcons: function() {
      -		this._removeClass( this.headers, "ui-accordion-icons" );
      -		this.headers.children( ".ui-accordion-header-icon" ).remove();
      -	},
      -
      -	_destroy: function() {
      -		var contents;
      -
      -		// Clean up main element
      -		this.element.removeAttr( "role" );
      -
      -		// Clean up headers
      -		this.headers
      -			.removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" )
      -			.removeUniqueId();
      -
      -		this._destroyIcons();
      -
      -		// Clean up content panels
      -		contents = this.headers.next()
      -			.css( "display", "" )
      -			.removeAttr( "role aria-hidden aria-labelledby" )
      -			.removeUniqueId();
      -
      -		if ( this.options.heightStyle !== "content" ) {
      -			contents.css( "height", "" );
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "active" ) {
      -
      -			// _activate() will handle invalid values and update this.options
      -			this._activate( value );
      -			return;
      -		}
      -
      -		if ( key === "event" ) {
      -			if ( this.options.event ) {
      -				this._off( this.headers, this.options.event );
      -			}
      -			this._setupEvents( value );
      -		}
      -
      -		this._super( key, value );
      -
      -		// Setting collapsible: false while collapsed; open first panel
      -		if ( key === "collapsible" && !value && this.options.active === false ) {
      -			this._activate( 0 );
      -		}
      -
      -		if ( key === "icons" ) {
      -			this._destroyIcons();
      -			if ( value ) {
      -				this._createIcons();
      -			}
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.element.attr( "aria-disabled", value );
      -
      -		// Support: IE8 Only
      -		// #5332 / #6059 - opacity doesn't cascade to positioned elements in IE
      -		// so we need to add the disabled class to the headers and panels
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -		this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled",
      -			!!value );
      -	},
      -
      -	_keydown: function( event ) {
      -		if ( event.altKey || event.ctrlKey ) {
      -			return;
      -		}
      -
      -		var keyCode = $.ui.keyCode,
      -			length = this.headers.length,
      -			currentIndex = this.headers.index( event.target ),
      -			toFocus = false;
      -
      -		switch ( event.keyCode ) {
      -		case keyCode.RIGHT:
      -		case keyCode.DOWN:
      -			toFocus = this.headers[ ( currentIndex + 1 ) % length ];
      -			break;
      -		case keyCode.LEFT:
      -		case keyCode.UP:
      -			toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
      -			break;
      -		case keyCode.SPACE:
      -		case keyCode.ENTER:
      -			this._eventHandler( event );
      -			break;
      -		case keyCode.HOME:
      -			toFocus = this.headers[ 0 ];
      -			break;
      -		case keyCode.END:
      -			toFocus = this.headers[ length - 1 ];
      -			break;
      -		}
      -
      -		if ( toFocus ) {
      -			$( event.target ).attr( "tabIndex", -1 );
      -			$( toFocus ).attr( "tabIndex", 0 );
      -			$( toFocus ).trigger( "focus" );
      -			event.preventDefault();
      -		}
      -	},
      -
      -	_panelKeyDown: function( event ) {
      -		if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) {
      -			$( event.currentTarget ).prev().trigger( "focus" );
      -		}
      -	},
      -
      -	refresh: function() {
      -		var options = this.options;
      -		this._processPanels();
      -
      -		// Was collapsed or no panel
      -		if ( ( options.active === false && options.collapsible === true ) ||
      -				!this.headers.length ) {
      -			options.active = false;
      -			this.active = $();
      -
      -		// active false only when collapsible is true
      -		} else if ( options.active === false ) {
      -			this._activate( 0 );
      -
      -		// was active, but active panel is gone
      -		} else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
      -
      -			// all remaining panel are disabled
      -			if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) {
      -				options.active = false;
      -				this.active = $();
      -
      -			// activate previous panel
      -			} else {
      -				this._activate( Math.max( 0, options.active - 1 ) );
      -			}
      -
      -		// was active, active panel still exists
      -		} else {
      -
      -			// make sure active index is correct
      -			options.active = this.headers.index( this.active );
      -		}
      -
      -		this._destroyIcons();
      -
      -		this._refresh();
      -	},
      -
      -	_processPanels: function() {
      -		var prevHeaders = this.headers,
      -			prevPanels = this.panels;
      -
      -		this.headers = this.element.find( this.options.header );
      -		this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed",
      -			"ui-state-default" );
      -
      -		this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide();
      -		this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" );
      -
      -		// Avoid memory leaks (#10056)
      -		if ( prevPanels ) {
      -			this._off( prevHeaders.not( this.headers ) );
      -			this._off( prevPanels.not( this.panels ) );
      -		}
      -	},
      -
      -	_refresh: function() {
      -		var maxHeight,
      -			options = this.options,
      -			heightStyle = options.heightStyle,
      -			parent = this.element.parent();
      -
      -		this.active = this._findActive( options.active );
      -		this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" )
      -			._removeClass( this.active, "ui-accordion-header-collapsed" );
      -		this._addClass( this.active.next(), "ui-accordion-content-active" );
      -		this.active.next().show();
      -
      -		this.headers
      -			.attr( "role", "tab" )
      -			.each( function() {
      -				var header = $( this ),
      -					headerId = header.uniqueId().attr( "id" ),
      -					panel = header.next(),
      -					panelId = panel.uniqueId().attr( "id" );
      -				header.attr( "aria-controls", panelId );
      -				panel.attr( "aria-labelledby", headerId );
      -			} )
      -			.next()
      -				.attr( "role", "tabpanel" );
      -
      -		this.headers
      -			.not( this.active )
      -				.attr( {
      -					"aria-selected": "false",
      -					"aria-expanded": "false",
      -					tabIndex: -1
      -				} )
      -				.next()
      -					.attr( {
      -						"aria-hidden": "true"
      -					} )
      -					.hide();
      -
      -		// Make sure at least one header is in the tab order
      -		if ( !this.active.length ) {
      -			this.headers.eq( 0 ).attr( "tabIndex", 0 );
      -		} else {
      -			this.active.attr( {
      -				"aria-selected": "true",
      -				"aria-expanded": "true",
      -				tabIndex: 0
      -			} )
      -				.next()
      -					.attr( {
      -						"aria-hidden": "false"
      -					} );
      -		}
      -
      -		this._createIcons();
      -
      -		this._setupEvents( options.event );
      -
      -		if ( heightStyle === "fill" ) {
      -			maxHeight = parent.height();
      -			this.element.siblings( ":visible" ).each( function() {
      -				var elem = $( this ),
      -					position = elem.css( "position" );
      -
      -				if ( position === "absolute" || position === "fixed" ) {
      -					return;
      -				}
      -				maxHeight -= elem.outerHeight( true );
      -			} );
      -
      -			this.headers.each( function() {
      -				maxHeight -= $( this ).outerHeight( true );
      -			} );
      -
      -			this.headers.next()
      -				.each( function() {
      -					$( this ).height( Math.max( 0, maxHeight -
      -						$( this ).innerHeight() + $( this ).height() ) );
      -				} )
      -				.css( "overflow", "auto" );
      -		} else if ( heightStyle === "auto" ) {
      -			maxHeight = 0;
      -			this.headers.next()
      -				.each( function() {
      -					var isVisible = $( this ).is( ":visible" );
      -					if ( !isVisible ) {
      -						$( this ).show();
      -					}
      -					maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() );
      -					if ( !isVisible ) {
      -						$( this ).hide();
      -					}
      -				} )
      -				.height( maxHeight );
      -		}
      -	},
      -
      -	_activate: function( index ) {
      -		var active = this._findActive( index )[ 0 ];
      -
      -		// Trying to activate the already active panel
      -		if ( active === this.active[ 0 ] ) {
      -			return;
      -		}
      -
      -		// Trying to collapse, simulate a click on the currently active header
      -		active = active || this.active[ 0 ];
      -
      -		this._eventHandler( {
      -			target: active,
      -			currentTarget: active,
      -			preventDefault: $.noop
      -		} );
      -	},
      -
      -	_findActive: function( selector ) {
      -		return typeof selector === "number" ? this.headers.eq( selector ) : $();
      -	},
      -
      -	_setupEvents: function( event ) {
      -		var events = {
      -			keydown: "_keydown"
      -		};
      -		if ( event ) {
      -			$.each( event.split( " " ), function( index, eventName ) {
      -				events[ eventName ] = "_eventHandler";
      -			} );
      -		}
      -
      -		this._off( this.headers.add( this.headers.next() ) );
      -		this._on( this.headers, events );
      -		this._on( this.headers.next(), { keydown: "_panelKeyDown" } );
      -		this._hoverable( this.headers );
      -		this._focusable( this.headers );
      -	},
      -
      -	_eventHandler: function( event ) {
      -		var activeChildren, clickedChildren,
      -			options = this.options,
      -			active = this.active,
      -			clicked = $( event.currentTarget ),
      -			clickedIsActive = clicked[ 0 ] === active[ 0 ],
      -			collapsing = clickedIsActive && options.collapsible,
      -			toShow = collapsing ? $() : clicked.next(),
      -			toHide = active.next(),
      -			eventData = {
      -				oldHeader: active,
      -				oldPanel: toHide,
      -				newHeader: collapsing ? $() : clicked,
      -				newPanel: toShow
      -			};
      -
      -		event.preventDefault();
      -
      -		if (
      -
      -				// click on active header, but not collapsible
      -				( clickedIsActive && !options.collapsible ) ||
      -
      -				// allow canceling activation
      -				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
      -			return;
      -		}
      -
      -		options.active = collapsing ? false : this.headers.index( clicked );
      -
      -		// When the call to ._toggle() comes after the class changes
      -		// it causes a very odd bug in IE 8 (see #6720)
      -		this.active = clickedIsActive ? $() : clicked;
      -		this._toggle( eventData );
      -
      -		// Switch classes
      -		// corner classes on the previously active header stay after the animation
      -		this._removeClass( active, "ui-accordion-header-active", "ui-state-active" );
      -		if ( options.icons ) {
      -			activeChildren = active.children( ".ui-accordion-header-icon" );
      -			this._removeClass( activeChildren, null, options.icons.activeHeader )
      -				._addClass( activeChildren, null, options.icons.header );
      -		}
      -
      -		if ( !clickedIsActive ) {
      -			this._removeClass( clicked, "ui-accordion-header-collapsed" )
      -				._addClass( clicked, "ui-accordion-header-active", "ui-state-active" );
      -			if ( options.icons ) {
      -				clickedChildren = clicked.children( ".ui-accordion-header-icon" );
      -				this._removeClass( clickedChildren, null, options.icons.header )
      -					._addClass( clickedChildren, null, options.icons.activeHeader );
      -			}
      -
      -			this._addClass( clicked.next(), "ui-accordion-content-active" );
      -		}
      -	},
      -
      -	_toggle: function( data ) {
      -		var toShow = data.newPanel,
      -			toHide = this.prevShow.length ? this.prevShow : data.oldPanel;
      -
      -		// Handle activating a panel during the animation for another activation
      -		this.prevShow.add( this.prevHide ).stop( true, true );
      -		this.prevShow = toShow;
      -		this.prevHide = toHide;
      -
      -		if ( this.options.animate ) {
      -			this._animate( toShow, toHide, data );
      -		} else {
      -			toHide.hide();
      -			toShow.show();
      -			this._toggleComplete( data );
      -		}
      -
      -		toHide.attr( {
      -			"aria-hidden": "true"
      -		} );
      -		toHide.prev().attr( {
      -			"aria-selected": "false",
      -			"aria-expanded": "false"
      -		} );
      -
      -		// if we're switching panels, remove the old header from the tab order
      -		// if we're opening from collapsed state, remove the previous header from the tab order
      -		// if we're collapsing, then keep the collapsing header in the tab order
      -		if ( toShow.length && toHide.length ) {
      -			toHide.prev().attr( {
      -				"tabIndex": -1,
      -				"aria-expanded": "false"
      -			} );
      -		} else if ( toShow.length ) {
      -			this.headers.filter( function() {
      -				return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0;
      -			} )
      -				.attr( "tabIndex", -1 );
      -		}
      -
      -		toShow
      -			.attr( "aria-hidden", "false" )
      -			.prev()
      -				.attr( {
      -					"aria-selected": "true",
      -					"aria-expanded": "true",
      -					tabIndex: 0
      -				} );
      -	},
      -
      -	_animate: function( toShow, toHide, data ) {
      -		var total, easing, duration,
      -			that = this,
      -			adjust = 0,
      -			boxSizing = toShow.css( "box-sizing" ),
      -			down = toShow.length &&
      -				( !toHide.length || ( toShow.index() < toHide.index() ) ),
      -			animate = this.options.animate || {},
      -			options = down && animate.down || animate,
      -			complete = function() {
      -				that._toggleComplete( data );
      -			};
      -
      -		if ( typeof options === "number" ) {
      -			duration = options;
      -		}
      -		if ( typeof options === "string" ) {
      -			easing = options;
      -		}
      -
      -		// fall back from options to animation in case of partial down settings
      -		easing = easing || options.easing || animate.easing;
      -		duration = duration || options.duration || animate.duration;
      -
      -		if ( !toHide.length ) {
      -			return toShow.animate( this.showProps, duration, easing, complete );
      -		}
      -		if ( !toShow.length ) {
      -			return toHide.animate( this.hideProps, duration, easing, complete );
      -		}
      -
      -		total = toShow.show().outerHeight();
      -		toHide.animate( this.hideProps, {
      -			duration: duration,
      -			easing: easing,
      -			step: function( now, fx ) {
      -				fx.now = Math.round( now );
      -			}
      -		} );
      -		toShow
      -			.hide()
      -			.animate( this.showProps, {
      -				duration: duration,
      -				easing: easing,
      -				complete: complete,
      -				step: function( now, fx ) {
      -					fx.now = Math.round( now );
      -					if ( fx.prop !== "height" ) {
      -						if ( boxSizing === "content-box" ) {
      -							adjust += fx.now;
      -						}
      -					} else if ( that.options.heightStyle !== "content" ) {
      -						fx.now = Math.round( total - toHide.outerHeight() - adjust );
      -						adjust = 0;
      -					}
      -				}
      -			} );
      -	},
      -
      -	_toggleComplete: function( data ) {
      -		var toHide = data.oldPanel,
      -			prev = toHide.prev();
      -
      -		this._removeClass( toHide, "ui-accordion-content-active" );
      -		this._removeClass( prev, "ui-accordion-header-active" )
      -			._addClass( prev, "ui-accordion-header-collapsed" );
      -
      -		// Work around for rendering bug in IE (#5421)
      -		if ( toHide.length ) {
      -			toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className;
      -		}
      -		this._trigger( "activate", null, data );
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/autocomplete.js b/bower_components/jquery-ui/ui/widgets/autocomplete.js
      deleted file mode 100644
      index f2bfb2d89a..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/autocomplete.js
      +++ /dev/null
      @@ -1,682 +0,0 @@
      -/*!
      - * jQuery UI Autocomplete 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Autocomplete
      -//>>group: Widgets
      -//>>description: Lists suggested words as the user is typing.
      -//>>docs: http://api.jqueryui.com/autocomplete/
      -//>>demos: http://jqueryui.com/autocomplete/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/autocomplete.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./menu",
      -			"../keycode",
      -			"../position",
      -			"../safe-active-element",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.autocomplete", {
      -	version: "1.12.1",
      -	defaultElement: "<input>",
      -	options: {
      -		appendTo: null,
      -		autoFocus: false,
      -		delay: 300,
      -		minLength: 1,
      -		position: {
      -			my: "left top",
      -			at: "left bottom",
      -			collision: "none"
      -		},
      -		source: null,
      -
      -		// Callbacks
      -		change: null,
      -		close: null,
      -		focus: null,
      -		open: null,
      -		response: null,
      -		search: null,
      -		select: null
      -	},
      -
      -	requestIndex: 0,
      -	pending: 0,
      -
      -	_create: function() {
      -
      -		// Some browsers only repeat keydown events, not keypress events,
      -		// so we use the suppressKeyPress flag to determine if we've already
      -		// handled the keydown event. #7269
      -		// Unfortunately the code for & in keypress is the same as the up arrow,
      -		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
      -		// events when we know the keydown event was used to modify the
      -		// search term. #7799
      -		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
      -			nodeName = this.element[ 0 ].nodeName.toLowerCase(),
      -			isTextarea = nodeName === "textarea",
      -			isInput = nodeName === "input";
      -
      -		// Textareas are always multi-line
      -		// Inputs are always single-line, even if inside a contentEditable element
      -		// IE also treats inputs as contentEditable
      -		// All other element types are determined by whether or not they're contentEditable
      -		this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );
      -
      -		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
      -		this.isNewMenu = true;
      -
      -		this._addClass( "ui-autocomplete-input" );
      -		this.element.attr( "autocomplete", "off" );
      -
      -		this._on( this.element, {
      -			keydown: function( event ) {
      -				if ( this.element.prop( "readOnly" ) ) {
      -					suppressKeyPress = true;
      -					suppressInput = true;
      -					suppressKeyPressRepeat = true;
      -					return;
      -				}
      -
      -				suppressKeyPress = false;
      -				suppressInput = false;
      -				suppressKeyPressRepeat = false;
      -				var keyCode = $.ui.keyCode;
      -				switch ( event.keyCode ) {
      -				case keyCode.PAGE_UP:
      -					suppressKeyPress = true;
      -					this._move( "previousPage", event );
      -					break;
      -				case keyCode.PAGE_DOWN:
      -					suppressKeyPress = true;
      -					this._move( "nextPage", event );
      -					break;
      -				case keyCode.UP:
      -					suppressKeyPress = true;
      -					this._keyEvent( "previous", event );
      -					break;
      -				case keyCode.DOWN:
      -					suppressKeyPress = true;
      -					this._keyEvent( "next", event );
      -					break;
      -				case keyCode.ENTER:
      -
      -					// when menu is open and has focus
      -					if ( this.menu.active ) {
      -
      -						// #6055 - Opera still allows the keypress to occur
      -						// which causes forms to submit
      -						suppressKeyPress = true;
      -						event.preventDefault();
      -						this.menu.select( event );
      -					}
      -					break;
      -				case keyCode.TAB:
      -					if ( this.menu.active ) {
      -						this.menu.select( event );
      -					}
      -					break;
      -				case keyCode.ESCAPE:
      -					if ( this.menu.element.is( ":visible" ) ) {
      -						if ( !this.isMultiLine ) {
      -							this._value( this.term );
      -						}
      -						this.close( event );
      -
      -						// Different browsers have different default behavior for escape
      -						// Single press can mean undo or clear
      -						// Double press in IE means clear the whole form
      -						event.preventDefault();
      -					}
      -					break;
      -				default:
      -					suppressKeyPressRepeat = true;
      -
      -					// search timeout should be triggered before the input value is changed
      -					this._searchTimeout( event );
      -					break;
      -				}
      -			},
      -			keypress: function( event ) {
      -				if ( suppressKeyPress ) {
      -					suppressKeyPress = false;
      -					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
      -						event.preventDefault();
      -					}
      -					return;
      -				}
      -				if ( suppressKeyPressRepeat ) {
      -					return;
      -				}
      -
      -				// Replicate some key handlers to allow them to repeat in Firefox and Opera
      -				var keyCode = $.ui.keyCode;
      -				switch ( event.keyCode ) {
      -				case keyCode.PAGE_UP:
      -					this._move( "previousPage", event );
      -					break;
      -				case keyCode.PAGE_DOWN:
      -					this._move( "nextPage", event );
      -					break;
      -				case keyCode.UP:
      -					this._keyEvent( "previous", event );
      -					break;
      -				case keyCode.DOWN:
      -					this._keyEvent( "next", event );
      -					break;
      -				}
      -			},
      -			input: function( event ) {
      -				if ( suppressInput ) {
      -					suppressInput = false;
      -					event.preventDefault();
      -					return;
      -				}
      -				this._searchTimeout( event );
      -			},
      -			focus: function() {
      -				this.selectedItem = null;
      -				this.previous = this._value();
      -			},
      -			blur: function( event ) {
      -				if ( this.cancelBlur ) {
      -					delete this.cancelBlur;
      -					return;
      -				}
      -
      -				clearTimeout( this.searching );
      -				this.close( event );
      -				this._change( event );
      -			}
      -		} );
      -
      -		this._initSource();
      -		this.menu = $( "<ul>" )
      -			.appendTo( this._appendTo() )
      -			.menu( {
      -
      -				// disable ARIA support, the live region takes care of that
      -				role: null
      -			} )
      -			.hide()
      -			.menu( "instance" );
      -
      -		this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
      -		this._on( this.menu.element, {
      -			mousedown: function( event ) {
      -
      -				// prevent moving focus out of the text field
      -				event.preventDefault();
      -
      -				// IE doesn't prevent moving focus even with event.preventDefault()
      -				// so we set a flag to know when we should ignore the blur event
      -				this.cancelBlur = true;
      -				this._delay( function() {
      -					delete this.cancelBlur;
      -
      -					// Support: IE 8 only
      -					// Right clicking a menu item or selecting text from the menu items will
      -					// result in focus moving out of the input. However, we've already received
      -					// and ignored the blur event because of the cancelBlur flag set above. So
      -					// we restore focus to ensure that the menu closes properly based on the user's
      -					// next actions.
      -					if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
      -						this.element.trigger( "focus" );
      -					}
      -				} );
      -			},
      -			menufocus: function( event, ui ) {
      -				var label, item;
      -
      -				// support: Firefox
      -				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
      -				if ( this.isNewMenu ) {
      -					this.isNewMenu = false;
      -					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
      -						this.menu.blur();
      -
      -						this.document.one( "mousemove", function() {
      -							$( event.target ).trigger( event.originalEvent );
      -						} );
      -
      -						return;
      -					}
      -				}
      -
      -				item = ui.item.data( "ui-autocomplete-item" );
      -				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
      -
      -					// use value to match what will end up in the input, if it was a key event
      -					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
      -						this._value( item.value );
      -					}
      -				}
      -
      -				// Announce the value in the liveRegion
      -				label = ui.item.attr( "aria-label" ) || item.value;
      -				if ( label && $.trim( label ).length ) {
      -					this.liveRegion.children().hide();
      -					$( "<div>" ).text( label ).appendTo( this.liveRegion );
      -				}
      -			},
      -			menuselect: function( event, ui ) {
      -				var item = ui.item.data( "ui-autocomplete-item" ),
      -					previous = this.previous;
      -
      -				// Only trigger when focus was lost (click on menu)
      -				if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
      -					this.element.trigger( "focus" );
      -					this.previous = previous;
      -
      -					// #6109 - IE triggers two focus events and the second
      -					// is asynchronous, so we need to reset the previous
      -					// term synchronously and asynchronously :-(
      -					this._delay( function() {
      -						this.previous = previous;
      -						this.selectedItem = item;
      -					} );
      -				}
      -
      -				if ( false !== this._trigger( "select", event, { item: item } ) ) {
      -					this._value( item.value );
      -				}
      -
      -				// reset the term after the select event
      -				// this allows custom select handling to work properly
      -				this.term = this._value();
      -
      -				this.close( event );
      -				this.selectedItem = item;
      -			}
      -		} );
      -
      -		this.liveRegion = $( "<div>", {
      -			role: "status",
      -			"aria-live": "assertive",
      -			"aria-relevant": "additions"
      -		} )
      -			.appendTo( this.document[ 0 ].body );
      -
      -		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
      -
      -		// Turning off autocomplete prevents the browser from remembering the
      -		// value when navigating through history, so we re-enable autocomplete
      -		// if the page is unloaded before the widget is destroyed. #7790
      -		this._on( this.window, {
      -			beforeunload: function() {
      -				this.element.removeAttr( "autocomplete" );
      -			}
      -		} );
      -	},
      -
      -	_destroy: function() {
      -		clearTimeout( this.searching );
      -		this.element.removeAttr( "autocomplete" );
      -		this.menu.element.remove();
      -		this.liveRegion.remove();
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -		if ( key === "source" ) {
      -			this._initSource();
      -		}
      -		if ( key === "appendTo" ) {
      -			this.menu.element.appendTo( this._appendTo() );
      -		}
      -		if ( key === "disabled" && value && this.xhr ) {
      -			this.xhr.abort();
      -		}
      -	},
      -
      -	_isEventTargetInWidget: function( event ) {
      -		var menuElement = this.menu.element[ 0 ];
      -
      -		return event.target === this.element[ 0 ] ||
      -			event.target === menuElement ||
      -			$.contains( menuElement, event.target );
      -	},
      -
      -	_closeOnClickOutside: function( event ) {
      -		if ( !this._isEventTargetInWidget( event ) ) {
      -			this.close();
      -		}
      -	},
      -
      -	_appendTo: function() {
      -		var element = this.options.appendTo;
      -
      -		if ( element ) {
      -			element = element.jquery || element.nodeType ?
      -				$( element ) :
      -				this.document.find( element ).eq( 0 );
      -		}
      -
      -		if ( !element || !element[ 0 ] ) {
      -			element = this.element.closest( ".ui-front, dialog" );
      -		}
      -
      -		if ( !element.length ) {
      -			element = this.document[ 0 ].body;
      -		}
      -
      -		return element;
      -	},
      -
      -	_initSource: function() {
      -		var array, url,
      -			that = this;
      -		if ( $.isArray( this.options.source ) ) {
      -			array = this.options.source;
      -			this.source = function( request, response ) {
      -				response( $.ui.autocomplete.filter( array, request.term ) );
      -			};
      -		} else if ( typeof this.options.source === "string" ) {
      -			url = this.options.source;
      -			this.source = function( request, response ) {
      -				if ( that.xhr ) {
      -					that.xhr.abort();
      -				}
      -				that.xhr = $.ajax( {
      -					url: url,
      -					data: request,
      -					dataType: "json",
      -					success: function( data ) {
      -						response( data );
      -					},
      -					error: function() {
      -						response( [] );
      -					}
      -				} );
      -			};
      -		} else {
      -			this.source = this.options.source;
      -		}
      -	},
      -
      -	_searchTimeout: function( event ) {
      -		clearTimeout( this.searching );
      -		this.searching = this._delay( function() {
      -
      -			// Search if the value has changed, or if the user retypes the same value (see #7434)
      -			var equalValues = this.term === this._value(),
      -				menuVisible = this.menu.element.is( ":visible" ),
      -				modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
      -
      -			if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
      -				this.selectedItem = null;
      -				this.search( null, event );
      -			}
      -		}, this.options.delay );
      -	},
      -
      -	search: function( value, event ) {
      -		value = value != null ? value : this._value();
      -
      -		// Always save the actual value, not the one passed as an argument
      -		this.term = this._value();
      -
      -		if ( value.length < this.options.minLength ) {
      -			return this.close( event );
      -		}
      -
      -		if ( this._trigger( "search", event ) === false ) {
      -			return;
      -		}
      -
      -		return this._search( value );
      -	},
      -
      -	_search: function( value ) {
      -		this.pending++;
      -		this._addClass( "ui-autocomplete-loading" );
      -		this.cancelSearch = false;
      -
      -		this.source( { term: value }, this._response() );
      -	},
      -
      -	_response: function() {
      -		var index = ++this.requestIndex;
      -
      -		return $.proxy( function( content ) {
      -			if ( index === this.requestIndex ) {
      -				this.__response( content );
      -			}
      -
      -			this.pending--;
      -			if ( !this.pending ) {
      -				this._removeClass( "ui-autocomplete-loading" );
      -			}
      -		}, this );
      -	},
      -
      -	__response: function( content ) {
      -		if ( content ) {
      -			content = this._normalize( content );
      -		}
      -		this._trigger( "response", null, { content: content } );
      -		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
      -			this._suggest( content );
      -			this._trigger( "open" );
      -		} else {
      -
      -			// use ._close() instead of .close() so we don't cancel future searches
      -			this._close();
      -		}
      -	},
      -
      -	close: function( event ) {
      -		this.cancelSearch = true;
      -		this._close( event );
      -	},
      -
      -	_close: function( event ) {
      -
      -		// Remove the handler that closes the menu on outside clicks
      -		this._off( this.document, "mousedown" );
      -
      -		if ( this.menu.element.is( ":visible" ) ) {
      -			this.menu.element.hide();
      -			this.menu.blur();
      -			this.isNewMenu = true;
      -			this._trigger( "close", event );
      -		}
      -	},
      -
      -	_change: function( event ) {
      -		if ( this.previous !== this._value() ) {
      -			this._trigger( "change", event, { item: this.selectedItem } );
      -		}
      -	},
      -
      -	_normalize: function( items ) {
      -
      -		// assume all items have the right format when the first item is complete
      -		if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
      -			return items;
      -		}
      -		return $.map( items, function( item ) {
      -			if ( typeof item === "string" ) {
      -				return {
      -					label: item,
      -					value: item
      -				};
      -			}
      -			return $.extend( {}, item, {
      -				label: item.label || item.value,
      -				value: item.value || item.label
      -			} );
      -		} );
      -	},
      -
      -	_suggest: function( items ) {
      -		var ul = this.menu.element.empty();
      -		this._renderMenu( ul, items );
      -		this.isNewMenu = true;
      -		this.menu.refresh();
      -
      -		// Size and position menu
      -		ul.show();
      -		this._resizeMenu();
      -		ul.position( $.extend( {
      -			of: this.element
      -		}, this.options.position ) );
      -
      -		if ( this.options.autoFocus ) {
      -			this.menu.next();
      -		}
      -
      -		// Listen for interactions outside of the widget (#6642)
      -		this._on( this.document, {
      -			mousedown: "_closeOnClickOutside"
      -		} );
      -	},
      -
      -	_resizeMenu: function() {
      -		var ul = this.menu.element;
      -		ul.outerWidth( Math.max(
      -
      -			// Firefox wraps long text (possibly a rounding bug)
      -			// so we add 1px to avoid the wrapping (#7513)
      -			ul.width( "" ).outerWidth() + 1,
      -			this.element.outerWidth()
      -		) );
      -	},
      -
      -	_renderMenu: function( ul, items ) {
      -		var that = this;
      -		$.each( items, function( index, item ) {
      -			that._renderItemData( ul, item );
      -		} );
      -	},
      -
      -	_renderItemData: function( ul, item ) {
      -		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
      -	},
      -
      -	_renderItem: function( ul, item ) {
      -		return $( "<li>" )
      -			.append( $( "<div>" ).text( item.label ) )
      -			.appendTo( ul );
      -	},
      -
      -	_move: function( direction, event ) {
      -		if ( !this.menu.element.is( ":visible" ) ) {
      -			this.search( null, event );
      -			return;
      -		}
      -		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
      -				this.menu.isLastItem() && /^next/.test( direction ) ) {
      -
      -			if ( !this.isMultiLine ) {
      -				this._value( this.term );
      -			}
      -
      -			this.menu.blur();
      -			return;
      -		}
      -		this.menu[ direction ]( event );
      -	},
      -
      -	widget: function() {
      -		return this.menu.element;
      -	},
      -
      -	_value: function() {
      -		return this.valueMethod.apply( this.element, arguments );
      -	},
      -
      -	_keyEvent: function( keyEvent, event ) {
      -		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
      -			this._move( keyEvent, event );
      -
      -			// Prevents moving cursor to beginning/end of the text field in some browsers
      -			event.preventDefault();
      -		}
      -	},
      -
      -	// Support: Chrome <=50
      -	// We should be able to just use this.element.prop( "isContentEditable" )
      -	// but hidden elements always report false in Chrome.
      -	// https://code.google.com/p/chromium/issues/detail?id=313082
      -	_isContentEditable: function( element ) {
      -		if ( !element.length ) {
      -			return false;
      -		}
      -
      -		var editable = element.prop( "contentEditable" );
      -
      -		if ( editable === "inherit" ) {
      -		  return this._isContentEditable( element.parent() );
      -		}
      -
      -		return editable === "true";
      -	}
      -} );
      -
      -$.extend( $.ui.autocomplete, {
      -	escapeRegex: function( value ) {
      -		return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
      -	},
      -	filter: function( array, term ) {
      -		var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
      -		return $.grep( array, function( value ) {
      -			return matcher.test( value.label || value.value || value );
      -		} );
      -	}
      -} );
      -
      -// Live region extension, adding a `messages` option
      -// NOTE: This is an experimental API. We are still investigating
      -// a full solution for string manipulation and internationalization.
      -$.widget( "ui.autocomplete", $.ui.autocomplete, {
      -	options: {
      -		messages: {
      -			noResults: "No search results.",
      -			results: function( amount ) {
      -				return amount + ( amount > 1 ? " results are" : " result is" ) +
      -					" available, use up and down arrow keys to navigate.";
      -			}
      -		}
      -	},
      -
      -	__response: function( content ) {
      -		var message;
      -		this._superApply( arguments );
      -		if ( this.options.disabled || this.cancelSearch ) {
      -			return;
      -		}
      -		if ( content && content.length ) {
      -			message = this.options.messages.results( content.length );
      -		} else {
      -			message = this.options.messages.noResults;
      -		}
      -		this.liveRegion.children().hide();
      -		$( "<div>" ).text( message ).appendTo( this.liveRegion );
      -	}
      -} );
      -
      -return $.ui.autocomplete;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/button.js b/bower_components/jquery-ui/ui/widgets/button.js
      deleted file mode 100644
      index 62cc43fcd1..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/button.js
      +++ /dev/null
      @@ -1,386 +0,0 @@
      -/*!
      - * jQuery UI Button 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Button
      -//>>group: Widgets
      -//>>description: Enhances a form with themeable buttons.
      -//>>docs: http://api.jqueryui.com/button/
      -//>>demos: http://jqueryui.com/button/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/button.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -
      -			// These are only for backcompat
      -			// TODO: Remove after 1.12
      -			"./controlgroup",
      -			"./checkboxradio",
      -
      -			"../keycode",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.button", {
      -	version: "1.12.1",
      -	defaultElement: "<button>",
      -	options: {
      -		classes: {
      -			"ui-button": "ui-corner-all"
      -		},
      -		disabled: null,
      -		icon: null,
      -		iconPosition: "beginning",
      -		label: null,
      -		showLabel: true
      -	},
      -
      -	_getCreateOptions: function() {
      -		var disabled,
      -
      -			// This is to support cases like in jQuery Mobile where the base widget does have
      -			// an implementation of _getCreateOptions
      -			options = this._super() || {};
      -
      -		this.isInput = this.element.is( "input" );
      -
      -		disabled = this.element[ 0 ].disabled;
      -		if ( disabled != null ) {
      -			options.disabled = disabled;
      -		}
      -
      -		this.originalLabel = this.isInput ? this.element.val() : this.element.html();
      -		if ( this.originalLabel ) {
      -			options.label = this.originalLabel;
      -		}
      -
      -		return options;
      -	},
      -
      -	_create: function() {
      -		if ( !this.option.showLabel & !this.options.icon ) {
      -			this.options.showLabel = true;
      -		}
      -
      -		// We have to check the option again here even though we did in _getCreateOptions,
      -		// because null may have been passed on init which would override what was set in
      -		// _getCreateOptions
      -		if ( this.options.disabled == null ) {
      -			this.options.disabled = this.element[ 0 ].disabled || false;
      -		}
      -
      -		this.hasTitle = !!this.element.attr( "title" );
      -
      -		// Check to see if the label needs to be set or if its already correct
      -		if ( this.options.label && this.options.label !== this.originalLabel ) {
      -			if ( this.isInput ) {
      -				this.element.val( this.options.label );
      -			} else {
      -				this.element.html( this.options.label );
      -			}
      -		}
      -		this._addClass( "ui-button", "ui-widget" );
      -		this._setOption( "disabled", this.options.disabled );
      -		this._enhance();
      -
      -		if ( this.element.is( "a" ) ) {
      -			this._on( {
      -				"keyup": function( event ) {
      -					if ( event.keyCode === $.ui.keyCode.SPACE ) {
      -						event.preventDefault();
      -
      -						// Support: PhantomJS <= 1.9, IE 8 Only
      -						// If a native click is available use it so we actually cause navigation
      -						// otherwise just trigger a click event
      -						if ( this.element[ 0 ].click ) {
      -							this.element[ 0 ].click();
      -						} else {
      -							this.element.trigger( "click" );
      -						}
      -					}
      -				}
      -			} );
      -		}
      -	},
      -
      -	_enhance: function() {
      -		if ( !this.element.is( "button" ) ) {
      -			this.element.attr( "role", "button" );
      -		}
      -
      -		if ( this.options.icon ) {
      -			this._updateIcon( "icon", this.options.icon );
      -			this._updateTooltip();
      -		}
      -	},
      -
      -	_updateTooltip: function() {
      -		this.title = this.element.attr( "title" );
      -
      -		if ( !this.options.showLabel && !this.title ) {
      -			this.element.attr( "title", this.options.label );
      -		}
      -	},
      -
      -	_updateIcon: function( option, value ) {
      -		var icon = option !== "iconPosition",
      -			position = icon ? this.options.iconPosition : value,
      -			displayBlock = position === "top" || position === "bottom";
      -
      -		// Create icon
      -		if ( !this.icon ) {
      -			this.icon = $( "<span>" );
      -
      -			this._addClass( this.icon, "ui-button-icon", "ui-icon" );
      -
      -			if ( !this.options.showLabel ) {
      -				this._addClass( "ui-button-icon-only" );
      -			}
      -		} else if ( icon ) {
      -
      -			// If we are updating the icon remove the old icon class
      -			this._removeClass( this.icon, null, this.options.icon );
      -		}
      -
      -		// If we are updating the icon add the new icon class
      -		if ( icon ) {
      -			this._addClass( this.icon, null, value );
      -		}
      -
      -		this._attachIcon( position );
      -
      -		// If the icon is on top or bottom we need to add the ui-widget-icon-block class and remove
      -		// the iconSpace if there is one.
      -		if ( displayBlock ) {
      -			this._addClass( this.icon, null, "ui-widget-icon-block" );
      -			if ( this.iconSpace ) {
      -				this.iconSpace.remove();
      -			}
      -		} else {
      -
      -			// Position is beginning or end so remove the ui-widget-icon-block class and add the
      -			// space if it does not exist
      -			if ( !this.iconSpace ) {
      -				this.iconSpace = $( "<span> </span>" );
      -				this._addClass( this.iconSpace, "ui-button-icon-space" );
      -			}
      -			this._removeClass( this.icon, null, "ui-wiget-icon-block" );
      -			this._attachIconSpace( position );
      -		}
      -	},
      -
      -	_destroy: function() {
      -		this.element.removeAttr( "role" );
      -
      -		if ( this.icon ) {
      -			this.icon.remove();
      -		}
      -		if ( this.iconSpace ) {
      -			this.iconSpace.remove();
      -		}
      -		if ( !this.hasTitle ) {
      -			this.element.removeAttr( "title" );
      -		}
      -	},
      -
      -	_attachIconSpace: function( iconPosition ) {
      -		this.icon[ /^(?:end|bottom)/.test( iconPosition ) ? "before" : "after" ]( this.iconSpace );
      -	},
      -
      -	_attachIcon: function( iconPosition ) {
      -		this.element[ /^(?:end|bottom)/.test( iconPosition ) ? "append" : "prepend" ]( this.icon );
      -	},
      -
      -	_setOptions: function( options ) {
      -		var newShowLabel = options.showLabel === undefined ?
      -				this.options.showLabel :
      -				options.showLabel,
      -			newIcon = options.icon === undefined ? this.options.icon : options.icon;
      -
      -		if ( !newShowLabel && !newIcon ) {
      -			options.showLabel = true;
      -		}
      -		this._super( options );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "icon" ) {
      -			if ( value ) {
      -				this._updateIcon( key, value );
      -			} else if ( this.icon ) {
      -				this.icon.remove();
      -				if ( this.iconSpace ) {
      -					this.iconSpace.remove();
      -				}
      -			}
      -		}
      -
      -		if ( key === "iconPosition" ) {
      -			this._updateIcon( key, value );
      -		}
      -
      -		// Make sure we can't end up with a button that has neither text nor icon
      -		if ( key === "showLabel" ) {
      -				this._toggleClass( "ui-button-icon-only", null, !value );
      -				this._updateTooltip();
      -		}
      -
      -		if ( key === "label" ) {
      -			if ( this.isInput ) {
      -				this.element.val( value );
      -			} else {
      -
      -				// If there is an icon, append it, else nothing then append the value
      -				// this avoids removal of the icon when setting label text
      -				this.element.html( value );
      -				if ( this.icon ) {
      -					this._attachIcon( this.options.iconPosition );
      -					this._attachIconSpace( this.options.iconPosition );
      -				}
      -			}
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "disabled" ) {
      -			this._toggleClass( null, "ui-state-disabled", value );
      -			this.element[ 0 ].disabled = value;
      -			if ( value ) {
      -				this.element.blur();
      -			}
      -		}
      -	},
      -
      -	refresh: function() {
      -
      -		// Make sure to only check disabled if its an element that supports this otherwise
      -		// check for the disabled class to determine state
      -		var isDisabled = this.element.is( "input, button" ) ?
      -			this.element[ 0 ].disabled : this.element.hasClass( "ui-button-disabled" );
      -
      -		if ( isDisabled !== this.options.disabled ) {
      -			this._setOptions( { disabled: isDisabled } );
      -		}
      -
      -		this._updateTooltip();
      -	}
      -} );
      -
      -// DEPRECATED
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Text and Icons options
      -	$.widget( "ui.button", $.ui.button, {
      -		options: {
      -			text: true,
      -			icons: {
      -				primary: null,
      -				secondary: null
      -			}
      -		},
      -
      -		_create: function() {
      -			if ( this.options.showLabel && !this.options.text ) {
      -				this.options.showLabel = this.options.text;
      -			}
      -			if ( !this.options.showLabel && this.options.text ) {
      -				this.options.text = this.options.showLabel;
      -			}
      -			if ( !this.options.icon && ( this.options.icons.primary ||
      -					this.options.icons.secondary ) ) {
      -				if ( this.options.icons.primary ) {
      -					this.options.icon = this.options.icons.primary;
      -				} else {
      -					this.options.icon = this.options.icons.secondary;
      -					this.options.iconPosition = "end";
      -				}
      -			} else if ( this.options.icon ) {
      -				this.options.icons.primary = this.options.icon;
      -			}
      -			this._super();
      -		},
      -
      -		_setOption: function( key, value ) {
      -			if ( key === "text" ) {
      -				this._super( "showLabel", value );
      -				return;
      -			}
      -			if ( key === "showLabel" ) {
      -				this.options.text = value;
      -			}
      -			if ( key === "icon" ) {
      -				this.options.icons.primary = value;
      -			}
      -			if ( key === "icons" ) {
      -				if ( value.primary ) {
      -					this._super( "icon", value.primary );
      -					this._super( "iconPosition", "beginning" );
      -				} else if ( value.secondary ) {
      -					this._super( "icon", value.secondary );
      -					this._super( "iconPosition", "end" );
      -				}
      -			}
      -			this._superApply( arguments );
      -		}
      -	} );
      -
      -	$.fn.button = ( function( orig ) {
      -		return function() {
      -			if ( !this.length || ( this.length && this[ 0 ].tagName !== "INPUT" ) ||
      -					( this.length && this[ 0 ].tagName === "INPUT" && (
      -						this.attr( "type" ) !== "checkbox" && this.attr( "type" ) !== "radio"
      -					) ) ) {
      -				return orig.apply( this, arguments );
      -			}
      -			if ( !$.ui.checkboxradio ) {
      -				$.error( "Checkboxradio widget missing" );
      -			}
      -			if ( arguments.length === 0 ) {
      -				return this.checkboxradio( {
      -					"icon": false
      -				} );
      -			}
      -			return this.checkboxradio.apply( this, arguments );
      -		};
      -	} )( $.fn.button );
      -
      -	$.fn.buttonset = function() {
      -		if ( !$.ui.controlgroup ) {
      -			$.error( "Controlgroup widget missing" );
      -		}
      -		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" && arguments[ 2 ] ) {
      -			return this.controlgroup.apply( this,
      -				[ arguments[ 0 ], "items.button", arguments[ 2 ] ] );
      -		}
      -		if ( arguments[ 0 ] === "option" && arguments[ 1 ] === "items" ) {
      -			return this.controlgroup.apply( this, [ arguments[ 0 ], "items.button" ] );
      -		}
      -		if ( typeof arguments[ 0 ] === "object" && arguments[ 0 ].items ) {
      -			arguments[ 0 ].items = {
      -				button: arguments[ 0 ].items
      -			};
      -		}
      -		return this.controlgroup.apply( this, arguments );
      -	};
      -}
      -
      -return $.ui.button;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/checkboxradio.js b/bower_components/jquery-ui/ui/widgets/checkboxradio.js
      deleted file mode 100644
      index ee70d848bb..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/checkboxradio.js
      +++ /dev/null
      @@ -1,286 +0,0 @@
      -/*!
      - * jQuery UI Checkboxradio 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Checkboxradio
      -//>>group: Widgets
      -//>>description: Enhances a form with multiple themeable checkboxes or radio buttons.
      -//>>docs: http://api.jqueryui.com/checkboxradio/
      -//>>demos: http://jqueryui.com/checkboxradio/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/button.css
      -//>>css.structure: ../../themes/base/checkboxradio.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../escape-selector",
      -			"../form-reset-mixin",
      -			"../labels",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.checkboxradio", [ $.ui.formResetMixin, {
      -	version: "1.12.1",
      -	options: {
      -		disabled: null,
      -		label: null,
      -		icon: true,
      -		classes: {
      -			"ui-checkboxradio-label": "ui-corner-all",
      -			"ui-checkboxradio-icon": "ui-corner-all"
      -		}
      -	},
      -
      -	_getCreateOptions: function() {
      -		var disabled, labels;
      -		var that = this;
      -		var options = this._super() || {};
      -
      -		// We read the type here, because it makes more sense to throw a element type error first,
      -		// rather then the error for lack of a label. Often if its the wrong type, it
      -		// won't have a label (e.g. calling on a div, btn, etc)
      -		this._readType();
      -
      -		labels = this.element.labels();
      -
      -		// If there are multiple labels, use the last one
      -		this.label = $( labels[ labels.length - 1 ] );
      -		if ( !this.label.length ) {
      -			$.error( "No label found for checkboxradio widget" );
      -		}
      -
      -		this.originalLabel = "";
      -
      -		// We need to get the label text but this may also need to make sure it does not contain the
      -		// input itself.
      -		this.label.contents().not( this.element[ 0 ] ).each( function() {
      -
      -			// The label contents could be text, html, or a mix. We concat each element to get a
      -			// string representation of the label, without the input as part of it.
      -			that.originalLabel += this.nodeType === 3 ? $( this ).text() : this.outerHTML;
      -		} );
      -
      -		// Set the label option if we found label text
      -		if ( this.originalLabel ) {
      -			options.label = this.originalLabel;
      -		}
      -
      -		disabled = this.element[ 0 ].disabled;
      -		if ( disabled != null ) {
      -			options.disabled = disabled;
      -		}
      -		return options;
      -	},
      -
      -	_create: function() {
      -		var checked = this.element[ 0 ].checked;
      -
      -		this._bindFormResetHandler();
      -
      -		if ( this.options.disabled == null ) {
      -			this.options.disabled = this.element[ 0 ].disabled;
      -		}
      -
      -		this._setOption( "disabled", this.options.disabled );
      -		this._addClass( "ui-checkboxradio", "ui-helper-hidden-accessible" );
      -		this._addClass( this.label, "ui-checkboxradio-label", "ui-button ui-widget" );
      -
      -		if ( this.type === "radio" ) {
      -			this._addClass( this.label, "ui-checkboxradio-radio-label" );
      -		}
      -
      -		if ( this.options.label && this.options.label !== this.originalLabel ) {
      -			this._updateLabel();
      -		} else if ( this.originalLabel ) {
      -			this.options.label = this.originalLabel;
      -		}
      -
      -		this._enhance();
      -
      -		if ( checked ) {
      -			this._addClass( this.label, "ui-checkboxradio-checked", "ui-state-active" );
      -			if ( this.icon ) {
      -				this._addClass( this.icon, null, "ui-state-hover" );
      -			}
      -		}
      -
      -		this._on( {
      -			change: "_toggleClasses",
      -			focus: function() {
      -				this._addClass( this.label, null, "ui-state-focus ui-visual-focus" );
      -			},
      -			blur: function() {
      -				this._removeClass( this.label, null, "ui-state-focus ui-visual-focus" );
      -			}
      -		} );
      -	},
      -
      -	_readType: function() {
      -		var nodeName = this.element[ 0 ].nodeName.toLowerCase();
      -		this.type = this.element[ 0 ].type;
      -		if ( nodeName !== "input" || !/radio|checkbox/.test( this.type ) ) {
      -			$.error( "Can't create checkboxradio on element.nodeName=" + nodeName +
      -				" and element.type=" + this.type );
      -		}
      -	},
      -
      -	// Support jQuery Mobile enhanced option
      -	_enhance: function() {
      -		this._updateIcon( this.element[ 0 ].checked );
      -	},
      -
      -	widget: function() {
      -		return this.label;
      -	},
      -
      -	_getRadioGroup: function() {
      -		var group;
      -		var name = this.element[ 0 ].name;
      -		var nameSelector = "input[name='" + $.ui.escapeSelector( name ) + "']";
      -
      -		if ( !name ) {
      -			return $( [] );
      -		}
      -
      -		if ( this.form.length ) {
      -			group = $( this.form[ 0 ].elements ).filter( nameSelector );
      -		} else {
      -
      -			// Not inside a form, check all inputs that also are not inside a form
      -			group = $( nameSelector ).filter( function() {
      -				return $( this ).form().length === 0;
      -			} );
      -		}
      -
      -		return group.not( this.element );
      -	},
      -
      -	_toggleClasses: function() {
      -		var checked = this.element[ 0 ].checked;
      -		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
      -
      -		if ( this.options.icon && this.type === "checkbox" ) {
      -			this._toggleClass( this.icon, null, "ui-icon-check ui-state-checked", checked )
      -				._toggleClass( this.icon, null, "ui-icon-blank", !checked );
      -		}
      -
      -		if ( this.type === "radio" ) {
      -			this._getRadioGroup()
      -				.each( function() {
      -					var instance = $( this ).checkboxradio( "instance" );
      -
      -					if ( instance ) {
      -						instance._removeClass( instance.label,
      -							"ui-checkboxradio-checked", "ui-state-active" );
      -					}
      -				} );
      -		}
      -	},
      -
      -	_destroy: function() {
      -		this._unbindFormResetHandler();
      -
      -		if ( this.icon ) {
      -			this.icon.remove();
      -			this.iconSpace.remove();
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -
      -		// We don't allow the value to be set to nothing
      -		if ( key === "label" && !value ) {
      -			return;
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "disabled" ) {
      -			this._toggleClass( this.label, null, "ui-state-disabled", value );
      -			this.element[ 0 ].disabled = value;
      -
      -			// Don't refresh when setting disabled
      -			return;
      -		}
      -		this.refresh();
      -	},
      -
      -	_updateIcon: function( checked ) {
      -		var toAdd = "ui-icon ui-icon-background ";
      -
      -		if ( this.options.icon ) {
      -			if ( !this.icon ) {
      -				this.icon = $( "<span>" );
      -				this.iconSpace = $( "<span> </span>" );
      -				this._addClass( this.iconSpace, "ui-checkboxradio-icon-space" );
      -			}
      -
      -			if ( this.type === "checkbox" ) {
      -				toAdd += checked ? "ui-icon-check ui-state-checked" : "ui-icon-blank";
      -				this._removeClass( this.icon, null, checked ? "ui-icon-blank" : "ui-icon-check" );
      -			} else {
      -				toAdd += "ui-icon-blank";
      -			}
      -			this._addClass( this.icon, "ui-checkboxradio-icon", toAdd );
      -			if ( !checked ) {
      -				this._removeClass( this.icon, null, "ui-icon-check ui-state-checked" );
      -			}
      -			this.icon.prependTo( this.label ).after( this.iconSpace );
      -		} else if ( this.icon !== undefined ) {
      -			this.icon.remove();
      -			this.iconSpace.remove();
      -			delete this.icon;
      -		}
      -	},
      -
      -	_updateLabel: function() {
      -
      -		// Remove the contents of the label ( minus the icon, icon space, and input )
      -		var contents = this.label.contents().not( this.element[ 0 ] );
      -		if ( this.icon ) {
      -			contents = contents.not( this.icon[ 0 ] );
      -		}
      -		if ( this.iconSpace ) {
      -			contents = contents.not( this.iconSpace[ 0 ] );
      -		}
      -		contents.remove();
      -
      -		this.label.append( this.options.label );
      -	},
      -
      -	refresh: function() {
      -		var checked = this.element[ 0 ].checked,
      -			isDisabled = this.element[ 0 ].disabled;
      -
      -		this._updateIcon( checked );
      -		this._toggleClass( this.label, "ui-checkboxradio-checked", "ui-state-active", checked );
      -		if ( this.options.label !== null ) {
      -			this._updateLabel();
      -		}
      -
      -		if ( isDisabled !== this.options.disabled ) {
      -			this._setOptions( { "disabled": isDisabled } );
      -		}
      -	}
      -
      -} ] );
      -
      -return $.ui.checkboxradio;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/controlgroup.js b/bower_components/jquery-ui/ui/widgets/controlgroup.js
      deleted file mode 100644
      index b8234fb4a4..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/controlgroup.js
      +++ /dev/null
      @@ -1,298 +0,0 @@
      -/*!
      - * jQuery UI Controlgroup 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Controlgroup
      -//>>group: Widgets
      -//>>description: Visually groups form control widgets
      -//>>docs: http://api.jqueryui.com/controlgroup/
      -//>>demos: http://jqueryui.com/controlgroup/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/controlgroup.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -var controlgroupCornerRegex = /ui-corner-([a-z]){2,6}/g;
      -
      -return $.widget( "ui.controlgroup", {
      -	version: "1.12.1",
      -	defaultElement: "<div>",
      -	options: {
      -		direction: "horizontal",
      -		disabled: null,
      -		onlyVisible: true,
      -		items: {
      -			"button": "input[type=button], input[type=submit], input[type=reset], button, a",
      -			"controlgroupLabel": ".ui-controlgroup-label",
      -			"checkboxradio": "input[type='checkbox'], input[type='radio']",
      -			"selectmenu": "select",
      -			"spinner": ".ui-spinner-input"
      -		}
      -	},
      -
      -	_create: function() {
      -		this._enhance();
      -	},
      -
      -	// To support the enhanced option in jQuery Mobile, we isolate DOM manipulation
      -	_enhance: function() {
      -		this.element.attr( "role", "toolbar" );
      -		this.refresh();
      -	},
      -
      -	_destroy: function() {
      -		this._callChildMethod( "destroy" );
      -		this.childWidgets.removeData( "ui-controlgroup-data" );
      -		this.element.removeAttr( "role" );
      -		if ( this.options.items.controlgroupLabel ) {
      -			this.element
      -				.find( this.options.items.controlgroupLabel )
      -				.find( ".ui-controlgroup-label-contents" )
      -				.contents().unwrap();
      -		}
      -	},
      -
      -	_initWidgets: function() {
      -		var that = this,
      -			childWidgets = [];
      -
      -		// First we iterate over each of the items options
      -		$.each( this.options.items, function( widget, selector ) {
      -			var labels;
      -			var options = {};
      -
      -			// Make sure the widget has a selector set
      -			if ( !selector ) {
      -				return;
      -			}
      -
      -			if ( widget === "controlgroupLabel" ) {
      -				labels = that.element.find( selector );
      -				labels.each( function() {
      -					var element = $( this );
      -
      -					if ( element.children( ".ui-controlgroup-label-contents" ).length ) {
      -						return;
      -					}
      -					element.contents()
      -						.wrapAll( "<span class='ui-controlgroup-label-contents'></span>" );
      -				} );
      -				that._addClass( labels, null, "ui-widget ui-widget-content ui-state-default" );
      -				childWidgets = childWidgets.concat( labels.get() );
      -				return;
      -			}
      -
      -			// Make sure the widget actually exists
      -			if ( !$.fn[ widget ] ) {
      -				return;
      -			}
      -
      -			// We assume everything is in the middle to start because we can't determine
      -			// first / last elements until all enhancments are done.
      -			if ( that[ "_" + widget + "Options" ] ) {
      -				options = that[ "_" + widget + "Options" ]( "middle" );
      -			} else {
      -				options = { classes: {} };
      -			}
      -
      -			// Find instances of this widget inside controlgroup and init them
      -			that.element
      -				.find( selector )
      -				.each( function() {
      -					var element = $( this );
      -					var instance = element[ widget ]( "instance" );
      -
      -					// We need to clone the default options for this type of widget to avoid
      -					// polluting the variable options which has a wider scope than a single widget.
      -					var instanceOptions = $.widget.extend( {}, options );
      -
      -					// If the button is the child of a spinner ignore it
      -					// TODO: Find a more generic solution
      -					if ( widget === "button" && element.parent( ".ui-spinner" ).length ) {
      -						return;
      -					}
      -
      -					// Create the widget if it doesn't exist
      -					if ( !instance ) {
      -						instance = element[ widget ]()[ widget ]( "instance" );
      -					}
      -					if ( instance ) {
      -						instanceOptions.classes =
      -							that._resolveClassesValues( instanceOptions.classes, instance );
      -					}
      -					element[ widget ]( instanceOptions );
      -
      -					// Store an instance of the controlgroup to be able to reference
      -					// from the outermost element for changing options and refresh
      -					var widgetElement = element[ widget ]( "widget" );
      -					$.data( widgetElement[ 0 ], "ui-controlgroup-data",
      -						instance ? instance : element[ widget ]( "instance" ) );
      -
      -					childWidgets.push( widgetElement[ 0 ] );
      -				} );
      -		} );
      -
      -		this.childWidgets = $( $.unique( childWidgets ) );
      -		this._addClass( this.childWidgets, "ui-controlgroup-item" );
      -	},
      -
      -	_callChildMethod: function( method ) {
      -		this.childWidgets.each( function() {
      -			var element = $( this ),
      -				data = element.data( "ui-controlgroup-data" );
      -			if ( data && data[ method ] ) {
      -				data[ method ]();
      -			}
      -		} );
      -	},
      -
      -	_updateCornerClass: function( element, position ) {
      -		var remove = "ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all";
      -		var add = this._buildSimpleOptions( position, "label" ).classes.label;
      -
      -		this._removeClass( element, null, remove );
      -		this._addClass( element, null, add );
      -	},
      -
      -	_buildSimpleOptions: function( position, key ) {
      -		var direction = this.options.direction === "vertical";
      -		var result = {
      -			classes: {}
      -		};
      -		result.classes[ key ] = {
      -			"middle": "",
      -			"first": "ui-corner-" + ( direction ? "top" : "left" ),
      -			"last": "ui-corner-" + ( direction ? "bottom" : "right" ),
      -			"only": "ui-corner-all"
      -		}[ position ];
      -
      -		return result;
      -	},
      -
      -	_spinnerOptions: function( position ) {
      -		var options = this._buildSimpleOptions( position, "ui-spinner" );
      -
      -		options.classes[ "ui-spinner-up" ] = "";
      -		options.classes[ "ui-spinner-down" ] = "";
      -
      -		return options;
      -	},
      -
      -	_buttonOptions: function( position ) {
      -		return this._buildSimpleOptions( position, "ui-button" );
      -	},
      -
      -	_checkboxradioOptions: function( position ) {
      -		return this._buildSimpleOptions( position, "ui-checkboxradio-label" );
      -	},
      -
      -	_selectmenuOptions: function( position ) {
      -		var direction = this.options.direction === "vertical";
      -		return {
      -			width: direction ? "auto" : false,
      -			classes: {
      -				middle: {
      -					"ui-selectmenu-button-open": "",
      -					"ui-selectmenu-button-closed": ""
      -				},
      -				first: {
      -					"ui-selectmenu-button-open": "ui-corner-" + ( direction ? "top" : "tl" ),
      -					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "top" : "left" )
      -				},
      -				last: {
      -					"ui-selectmenu-button-open": direction ? "" : "ui-corner-tr",
      -					"ui-selectmenu-button-closed": "ui-corner-" + ( direction ? "bottom" : "right" )
      -				},
      -				only: {
      -					"ui-selectmenu-button-open": "ui-corner-top",
      -					"ui-selectmenu-button-closed": "ui-corner-all"
      -				}
      -
      -			}[ position ]
      -		};
      -	},
      -
      -	_resolveClassesValues: function( classes, instance ) {
      -		var result = {};
      -		$.each( classes, function( key ) {
      -			var current = instance.options.classes[ key ] || "";
      -			current = $.trim( current.replace( controlgroupCornerRegex, "" ) );
      -			result[ key ] = ( current + " " + classes[ key ] ).replace( /\s+/g, " " );
      -		} );
      -		return result;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "direction" ) {
      -			this._removeClass( "ui-controlgroup-" + this.options.direction );
      -		}
      -
      -		this._super( key, value );
      -		if ( key === "disabled" ) {
      -			this._callChildMethod( value ? "disable" : "enable" );
      -			return;
      -		}
      -
      -		this.refresh();
      -	},
      -
      -	refresh: function() {
      -		var children,
      -			that = this;
      -
      -		this._addClass( "ui-controlgroup ui-controlgroup-" + this.options.direction );
      -
      -		if ( this.options.direction === "horizontal" ) {
      -			this._addClass( null, "ui-helper-clearfix" );
      -		}
      -		this._initWidgets();
      -
      -		children = this.childWidgets;
      -
      -		// We filter here because we need to track all childWidgets not just the visible ones
      -		if ( this.options.onlyVisible ) {
      -			children = children.filter( ":visible" );
      -		}
      -
      -		if ( children.length ) {
      -
      -			// We do this last because we need to make sure all enhancment is done
      -			// before determining first and last
      -			$.each( [ "first", "last" ], function( index, value ) {
      -				var instance = children[ value ]().data( "ui-controlgroup-data" );
      -
      -				if ( instance && that[ "_" + instance.widgetName + "Options" ] ) {
      -					var options = that[ "_" + instance.widgetName + "Options" ](
      -						children.length === 1 ? "only" : value
      -					);
      -					options.classes = that._resolveClassesValues( options.classes, instance );
      -					instance.element[ instance.widgetName ]( options );
      -				} else {
      -					that._updateCornerClass( children[ value ](), value );
      -				}
      -			} );
      -
      -			// Finally call the refresh method on each of the child widgets.
      -			this._callChildMethod( "refresh" );
      -		}
      -	}
      -} );
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/datepicker.js b/bower_components/jquery-ui/ui/widgets/datepicker.js
      deleted file mode 100644
      index 8b6a4f4ecd..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/datepicker.js
      +++ /dev/null
      @@ -1,2120 +0,0 @@
      -// jscs:disable maximumLineLength
      -/* jscs:disable requireCamelCaseOrUpperCaseIdentifiers */
      -/*!
      - * jQuery UI Datepicker 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Datepicker
      -//>>group: Widgets
      -//>>description: Displays a calendar from an input or inline for selecting dates.
      -//>>docs: http://api.jqueryui.com/datepicker/
      -//>>demos: http://jqueryui.com/datepicker/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/datepicker.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../keycode"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.extend( $.ui, { datepicker: { version: "1.12.1" } } );
      -
      -var datepicker_instActive;
      -
      -function datepicker_getZindex( elem ) {
      -	var position, value;
      -	while ( elem.length && elem[ 0 ] !== document ) {
      -
      -		// Ignore z-index if position is set to a value where z-index is ignored by the browser
      -		// This makes behavior of this function consistent across browsers
      -		// WebKit always returns auto if the element is positioned
      -		position = elem.css( "position" );
      -		if ( position === "absolute" || position === "relative" || position === "fixed" ) {
      -
      -			// IE returns 0 when zIndex is not specified
      -			// other browsers return a string
      -			// we ignore the case of nested elements with an explicit value of 0
      -			// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
      -			value = parseInt( elem.css( "zIndex" ), 10 );
      -			if ( !isNaN( value ) && value !== 0 ) {
      -				return value;
      -			}
      -		}
      -		elem = elem.parent();
      -	}
      -
      -	return 0;
      -}
      -/* Date picker manager.
      -   Use the singleton instance of this class, $.datepicker, to interact with the date picker.
      -   Settings for (groups of) date pickers are maintained in an instance object,
      -   allowing multiple different settings on the same page. */
      -
      -function Datepicker() {
      -	this._curInst = null; // The current instance in use
      -	this._keyEvent = false; // If the last event was a key event
      -	this._disabledInputs = []; // List of date picker inputs that have been disabled
      -	this._datepickerShowing = false; // True if the popup picker is showing , false if not
      -	this._inDialog = false; // True if showing within a "dialog", false if not
      -	this._mainDivId = "ui-datepicker-div"; // The ID of the main datepicker division
      -	this._inlineClass = "ui-datepicker-inline"; // The name of the inline marker class
      -	this._appendClass = "ui-datepicker-append"; // The name of the append marker class
      -	this._triggerClass = "ui-datepicker-trigger"; // The name of the trigger marker class
      -	this._dialogClass = "ui-datepicker-dialog"; // The name of the dialog marker class
      -	this._disableClass = "ui-datepicker-disabled"; // The name of the disabled covering marker class
      -	this._unselectableClass = "ui-datepicker-unselectable"; // The name of the unselectable cell marker class
      -	this._currentClass = "ui-datepicker-current-day"; // The name of the current day marker class
      -	this._dayOverClass = "ui-datepicker-days-cell-over"; // The name of the day hover marker class
      -	this.regional = []; // Available regional settings, indexed by language code
      -	this.regional[ "" ] = { // Default regional settings
      -		closeText: "Done", // Display text for close link
      -		prevText: "Prev", // Display text for previous month link
      -		nextText: "Next", // Display text for next month link
      -		currentText: "Today", // Display text for current month link
      -		monthNames: [ "January","February","March","April","May","June",
      -			"July","August","September","October","November","December" ], // Names of months for drop-down and formatting
      -		monthNamesShort: [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ], // For formatting
      -		dayNames: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], // For formatting
      -		dayNamesShort: [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], // For formatting
      -		dayNamesMin: [ "Su","Mo","Tu","We","Th","Fr","Sa" ], // Column headings for days starting at Sunday
      -		weekHeader: "Wk", // Column header for week of the year
      -		dateFormat: "mm/dd/yy", // See format options on parseDate
      -		firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
      -		isRTL: false, // True if right-to-left language, false if left-to-right
      -		showMonthAfterYear: false, // True if the year select precedes month, false for month then year
      -		yearSuffix: "" // Additional text to append to the year in the month headers
      -	};
      -	this._defaults = { // Global defaults for all the date picker instances
      -		showOn: "focus", // "focus" for popup on focus,
      -			// "button" for trigger button, or "both" for either
      -		showAnim: "fadeIn", // Name of jQuery animation for popup
      -		showOptions: {}, // Options for enhanced animations
      -		defaultDate: null, // Used when field is blank: actual date,
      -			// +/-number for offset from today, null for today
      -		appendText: "", // Display text following the input box, e.g. showing the format
      -		buttonText: "...", // Text for trigger button
      -		buttonImage: "", // URL for trigger button image
      -		buttonImageOnly: false, // True if the image appears alone, false if it appears on a button
      -		hideIfNoPrevNext: false, // True to hide next/previous month links
      -			// if not applicable, false to just disable them
      -		navigationAsDateFormat: false, // True if date formatting applied to prev/today/next links
      -		gotoCurrent: false, // True if today link goes back to current selection instead
      -		changeMonth: false, // True if month can be selected directly, false if only prev/next
      -		changeYear: false, // True if year can be selected directly, false if only prev/next
      -		yearRange: "c-10:c+10", // Range of years to display in drop-down,
      -			// either relative to today's year (-nn:+nn), relative to currently displayed year
      -			// (c-nn:c+nn), absolute (nnnn:nnnn), or a combination of the above (nnnn:-n)
      -		showOtherMonths: false, // True to show dates in other months, false to leave blank
      -		selectOtherMonths: false, // True to allow selection of dates in other months, false for unselectable
      -		showWeek: false, // True to show week of the year, false to not show it
      -		calculateWeek: this.iso8601Week, // How to calculate the week of the year,
      -			// takes a Date and returns the number of the week for it
      -		shortYearCutoff: "+10", // Short year values < this are in the current century,
      -			// > this are in the previous century,
      -			// string value starting with "+" for current year + value
      -		minDate: null, // The earliest selectable date, or null for no limit
      -		maxDate: null, // The latest selectable date, or null for no limit
      -		duration: "fast", // Duration of display/closure
      -		beforeShowDay: null, // Function that takes a date and returns an array with
      -			// [0] = true if selectable, false if not, [1] = custom CSS class name(s) or "",
      -			// [2] = cell title (optional), e.g. $.datepicker.noWeekends
      -		beforeShow: null, // Function that takes an input field and
      -			// returns a set of custom settings for the date picker
      -		onSelect: null, // Define a callback function when a date is selected
      -		onChangeMonthYear: null, // Define a callback function when the month or year is changed
      -		onClose: null, // Define a callback function when the datepicker is closed
      -		numberOfMonths: 1, // Number of months to show at a time
      -		showCurrentAtPos: 0, // The position in multipe months at which to show the current month (starting at 0)
      -		stepMonths: 1, // Number of months to step back/forward
      -		stepBigMonths: 12, // Number of months to step back/forward for the big links
      -		altField: "", // Selector for an alternate field to store selected dates into
      -		altFormat: "", // The date format to use for the alternate field
      -		constrainInput: true, // The input is constrained by the current date format
      -		showButtonPanel: false, // True to show button panel, false to not show it
      -		autoSize: false, // True to size the input for the date format, false to leave as is
      -		disabled: false // The initial disabled state
      -	};
      -	$.extend( this._defaults, this.regional[ "" ] );
      -	this.regional.en = $.extend( true, {}, this.regional[ "" ] );
      -	this.regional[ "en-US" ] = $.extend( true, {}, this.regional.en );
      -	this.dpDiv = datepicker_bindHover( $( "<div id='" + this._mainDivId + "' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) );
      -}
      -
      -$.extend( Datepicker.prototype, {
      -	/* Class name added to elements to indicate already configured with a date picker. */
      -	markerClassName: "hasDatepicker",
      -
      -	//Keep track of the maximum number of rows displayed (see #7043)
      -	maxRows: 4,
      -
      -	// TODO rename to "widget" when switching to widget factory
      -	_widgetDatepicker: function() {
      -		return this.dpDiv;
      -	},
      -
      -	/* Override the default settings for all instances of the date picker.
      -	 * @param  settings  object - the new settings to use as defaults (anonymous object)
      -	 * @return the manager object
      -	 */
      -	setDefaults: function( settings ) {
      -		datepicker_extendRemove( this._defaults, settings || {} );
      -		return this;
      -	},
      -
      -	/* Attach the date picker to a jQuery selection.
      -	 * @param  target	element - the target input field or division or span
      -	 * @param  settings  object - the new settings to use for this date picker instance (anonymous)
      -	 */
      -	_attachDatepicker: function( target, settings ) {
      -		var nodeName, inline, inst;
      -		nodeName = target.nodeName.toLowerCase();
      -		inline = ( nodeName === "div" || nodeName === "span" );
      -		if ( !target.id ) {
      -			this.uuid += 1;
      -			target.id = "dp" + this.uuid;
      -		}
      -		inst = this._newInst( $( target ), inline );
      -		inst.settings = $.extend( {}, settings || {} );
      -		if ( nodeName === "input" ) {
      -			this._connectDatepicker( target, inst );
      -		} else if ( inline ) {
      -			this._inlineDatepicker( target, inst );
      -		}
      -	},
      -
      -	/* Create a new instance object. */
      -	_newInst: function( target, inline ) {
      -		var id = target[ 0 ].id.replace( /([^A-Za-z0-9_\-])/g, "\\\\$1" ); // escape jQuery meta chars
      -		return { id: id, input: target, // associated target
      -			selectedDay: 0, selectedMonth: 0, selectedYear: 0, // current selection
      -			drawMonth: 0, drawYear: 0, // month being drawn
      -			inline: inline, // is datepicker inline or not
      -			dpDiv: ( !inline ? this.dpDiv : // presentation div
      -			datepicker_bindHover( $( "<div class='" + this._inlineClass + " ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>" ) ) ) };
      -	},
      -
      -	/* Attach the date picker to an input field. */
      -	_connectDatepicker: function( target, inst ) {
      -		var input = $( target );
      -		inst.append = $( [] );
      -		inst.trigger = $( [] );
      -		if ( input.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -		this._attachments( input, inst );
      -		input.addClass( this.markerClassName ).on( "keydown", this._doKeyDown ).
      -			on( "keypress", this._doKeyPress ).on( "keyup", this._doKeyUp );
      -		this._autoSize( inst );
      -		$.data( target, "datepicker", inst );
      -
      -		//If disabled option is true, disable the datepicker once it has been attached to the input (see ticket #5665)
      -		if ( inst.settings.disabled ) {
      -			this._disableDatepicker( target );
      -		}
      -	},
      -
      -	/* Make attachments based on settings. */
      -	_attachments: function( input, inst ) {
      -		var showOn, buttonText, buttonImage,
      -			appendText = this._get( inst, "appendText" ),
      -			isRTL = this._get( inst, "isRTL" );
      -
      -		if ( inst.append ) {
      -			inst.append.remove();
      -		}
      -		if ( appendText ) {
      -			inst.append = $( "<span class='" + this._appendClass + "'>" + appendText + "</span>" );
      -			input[ isRTL ? "before" : "after" ]( inst.append );
      -		}
      -
      -		input.off( "focus", this._showDatepicker );
      -
      -		if ( inst.trigger ) {
      -			inst.trigger.remove();
      -		}
      -
      -		showOn = this._get( inst, "showOn" );
      -		if ( showOn === "focus" || showOn === "both" ) { // pop-up date picker when in the marked field
      -			input.on( "focus", this._showDatepicker );
      -		}
      -		if ( showOn === "button" || showOn === "both" ) { // pop-up date picker when button clicked
      -			buttonText = this._get( inst, "buttonText" );
      -			buttonImage = this._get( inst, "buttonImage" );
      -			inst.trigger = $( this._get( inst, "buttonImageOnly" ) ?
      -				$( "<img/>" ).addClass( this._triggerClass ).
      -					attr( { src: buttonImage, alt: buttonText, title: buttonText } ) :
      -				$( "<button type='button'></button>" ).addClass( this._triggerClass ).
      -					html( !buttonImage ? buttonText : $( "<img/>" ).attr(
      -					{ src:buttonImage, alt:buttonText, title:buttonText } ) ) );
      -			input[ isRTL ? "before" : "after" ]( inst.trigger );
      -			inst.trigger.on( "click", function() {
      -				if ( $.datepicker._datepickerShowing && $.datepicker._lastInput === input[ 0 ] ) {
      -					$.datepicker._hideDatepicker();
      -				} else if ( $.datepicker._datepickerShowing && $.datepicker._lastInput !== input[ 0 ] ) {
      -					$.datepicker._hideDatepicker();
      -					$.datepicker._showDatepicker( input[ 0 ] );
      -				} else {
      -					$.datepicker._showDatepicker( input[ 0 ] );
      -				}
      -				return false;
      -			} );
      -		}
      -	},
      -
      -	/* Apply the maximum length for the date format. */
      -	_autoSize: function( inst ) {
      -		if ( this._get( inst, "autoSize" ) && !inst.inline ) {
      -			var findMax, max, maxI, i,
      -				date = new Date( 2009, 12 - 1, 20 ), // Ensure double digits
      -				dateFormat = this._get( inst, "dateFormat" );
      -
      -			if ( dateFormat.match( /[DM]/ ) ) {
      -				findMax = function( names ) {
      -					max = 0;
      -					maxI = 0;
      -					for ( i = 0; i < names.length; i++ ) {
      -						if ( names[ i ].length > max ) {
      -							max = names[ i ].length;
      -							maxI = i;
      -						}
      -					}
      -					return maxI;
      -				};
      -				date.setMonth( findMax( this._get( inst, ( dateFormat.match( /MM/ ) ?
      -					"monthNames" : "monthNamesShort" ) ) ) );
      -				date.setDate( findMax( this._get( inst, ( dateFormat.match( /DD/ ) ?
      -					"dayNames" : "dayNamesShort" ) ) ) + 20 - date.getDay() );
      -			}
      -			inst.input.attr( "size", this._formatDate( inst, date ).length );
      -		}
      -	},
      -
      -	/* Attach an inline date picker to a div. */
      -	_inlineDatepicker: function( target, inst ) {
      -		var divSpan = $( target );
      -		if ( divSpan.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -		divSpan.addClass( this.markerClassName ).append( inst.dpDiv );
      -		$.data( target, "datepicker", inst );
      -		this._setDate( inst, this._getDefaultDate( inst ), true );
      -		this._updateDatepicker( inst );
      -		this._updateAlternate( inst );
      -
      -		//If disabled option is true, disable the datepicker before showing it (see ticket #5665)
      -		if ( inst.settings.disabled ) {
      -			this._disableDatepicker( target );
      -		}
      -
      -		// Set display:block in place of inst.dpDiv.show() which won't work on disconnected elements
      -		// http://bugs.jqueryui.com/ticket/7552 - A Datepicker created on a detached div has zero height
      -		inst.dpDiv.css( "display", "block" );
      -	},
      -
      -	/* Pop-up the date picker in a "dialog" box.
      -	 * @param  input element - ignored
      -	 * @param  date	string or Date - the initial date to display
      -	 * @param  onSelect  function - the function to call when a date is selected
      -	 * @param  settings  object - update the dialog date picker instance's settings (anonymous object)
      -	 * @param  pos int[2] - coordinates for the dialog's position within the screen or
      -	 *					event - with x/y coordinates or
      -	 *					leave empty for default (screen centre)
      -	 * @return the manager object
      -	 */
      -	_dialogDatepicker: function( input, date, onSelect, settings, pos ) {
      -		var id, browserWidth, browserHeight, scrollX, scrollY,
      -			inst = this._dialogInst; // internal instance
      -
      -		if ( !inst ) {
      -			this.uuid += 1;
      -			id = "dp" + this.uuid;
      -			this._dialogInput = $( "<input type='text' id='" + id +
      -				"' style='position: absolute; top: -100px; width: 0px;'/>" );
      -			this._dialogInput.on( "keydown", this._doKeyDown );
      -			$( "body" ).append( this._dialogInput );
      -			inst = this._dialogInst = this._newInst( this._dialogInput, false );
      -			inst.settings = {};
      -			$.data( this._dialogInput[ 0 ], "datepicker", inst );
      -		}
      -		datepicker_extendRemove( inst.settings, settings || {} );
      -		date = ( date && date.constructor === Date ? this._formatDate( inst, date ) : date );
      -		this._dialogInput.val( date );
      -
      -		this._pos = ( pos ? ( pos.length ? pos : [ pos.pageX, pos.pageY ] ) : null );
      -		if ( !this._pos ) {
      -			browserWidth = document.documentElement.clientWidth;
      -			browserHeight = document.documentElement.clientHeight;
      -			scrollX = document.documentElement.scrollLeft || document.body.scrollLeft;
      -			scrollY = document.documentElement.scrollTop || document.body.scrollTop;
      -			this._pos = // should use actual width/height below
      -				[ ( browserWidth / 2 ) - 100 + scrollX, ( browserHeight / 2 ) - 150 + scrollY ];
      -		}
      -
      -		// Move input on screen for focus, but hidden behind dialog
      -		this._dialogInput.css( "left", ( this._pos[ 0 ] + 20 ) + "px" ).css( "top", this._pos[ 1 ] + "px" );
      -		inst.settings.onSelect = onSelect;
      -		this._inDialog = true;
      -		this.dpDiv.addClass( this._dialogClass );
      -		this._showDatepicker( this._dialogInput[ 0 ] );
      -		if ( $.blockUI ) {
      -			$.blockUI( this.dpDiv );
      -		}
      -		$.data( this._dialogInput[ 0 ], "datepicker", inst );
      -		return this;
      -	},
      -
      -	/* Detach a datepicker from its control.
      -	 * @param  target	element - the target input field or division or span
      -	 */
      -	_destroyDatepicker: function( target ) {
      -		var nodeName,
      -			$target = $( target ),
      -			inst = $.data( target, "datepicker" );
      -
      -		if ( !$target.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -
      -		nodeName = target.nodeName.toLowerCase();
      -		$.removeData( target, "datepicker" );
      -		if ( nodeName === "input" ) {
      -			inst.append.remove();
      -			inst.trigger.remove();
      -			$target.removeClass( this.markerClassName ).
      -				off( "focus", this._showDatepicker ).
      -				off( "keydown", this._doKeyDown ).
      -				off( "keypress", this._doKeyPress ).
      -				off( "keyup", this._doKeyUp );
      -		} else if ( nodeName === "div" || nodeName === "span" ) {
      -			$target.removeClass( this.markerClassName ).empty();
      -		}
      -
      -		if ( datepicker_instActive === inst ) {
      -			datepicker_instActive = null;
      -		}
      -	},
      -
      -	/* Enable the date picker to a jQuery selection.
      -	 * @param  target	element - the target input field or division or span
      -	 */
      -	_enableDatepicker: function( target ) {
      -		var nodeName, inline,
      -			$target = $( target ),
      -			inst = $.data( target, "datepicker" );
      -
      -		if ( !$target.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -
      -		nodeName = target.nodeName.toLowerCase();
      -		if ( nodeName === "input" ) {
      -			target.disabled = false;
      -			inst.trigger.filter( "button" ).
      -				each( function() { this.disabled = false; } ).end().
      -				filter( "img" ).css( { opacity: "1.0", cursor: "" } );
      -		} else if ( nodeName === "div" || nodeName === "span" ) {
      -			inline = $target.children( "." + this._inlineClass );
      -			inline.children().removeClass( "ui-state-disabled" );
      -			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
      -				prop( "disabled", false );
      -		}
      -		this._disabledInputs = $.map( this._disabledInputs,
      -			function( value ) { return ( value === target ? null : value ); } ); // delete entry
      -	},
      -
      -	/* Disable the date picker to a jQuery selection.
      -	 * @param  target	element - the target input field or division or span
      -	 */
      -	_disableDatepicker: function( target ) {
      -		var nodeName, inline,
      -			$target = $( target ),
      -			inst = $.data( target, "datepicker" );
      -
      -		if ( !$target.hasClass( this.markerClassName ) ) {
      -			return;
      -		}
      -
      -		nodeName = target.nodeName.toLowerCase();
      -		if ( nodeName === "input" ) {
      -			target.disabled = true;
      -			inst.trigger.filter( "button" ).
      -				each( function() { this.disabled = true; } ).end().
      -				filter( "img" ).css( { opacity: "0.5", cursor: "default" } );
      -		} else if ( nodeName === "div" || nodeName === "span" ) {
      -			inline = $target.children( "." + this._inlineClass );
      -			inline.children().addClass( "ui-state-disabled" );
      -			inline.find( "select.ui-datepicker-month, select.ui-datepicker-year" ).
      -				prop( "disabled", true );
      -		}
      -		this._disabledInputs = $.map( this._disabledInputs,
      -			function( value ) { return ( value === target ? null : value ); } ); // delete entry
      -		this._disabledInputs[ this._disabledInputs.length ] = target;
      -	},
      -
      -	/* Is the first field in a jQuery collection disabled as a datepicker?
      -	 * @param  target	element - the target input field or division or span
      -	 * @return boolean - true if disabled, false if enabled
      -	 */
      -	_isDisabledDatepicker: function( target ) {
      -		if ( !target ) {
      -			return false;
      -		}
      -		for ( var i = 0; i < this._disabledInputs.length; i++ ) {
      -			if ( this._disabledInputs[ i ] === target ) {
      -				return true;
      -			}
      -		}
      -		return false;
      -	},
      -
      -	/* Retrieve the instance data for the target control.
      -	 * @param  target  element - the target input field or division or span
      -	 * @return  object - the associated instance data
      -	 * @throws  error if a jQuery problem getting data
      -	 */
      -	_getInst: function( target ) {
      -		try {
      -			return $.data( target, "datepicker" );
      -		}
      -		catch ( err ) {
      -			throw "Missing instance data for this datepicker";
      -		}
      -	},
      -
      -	/* Update or retrieve the settings for a date picker attached to an input field or division.
      -	 * @param  target  element - the target input field or division or span
      -	 * @param  name	object - the new settings to update or
      -	 *				string - the name of the setting to change or retrieve,
      -	 *				when retrieving also "all" for all instance settings or
      -	 *				"defaults" for all global defaults
      -	 * @param  value   any - the new value for the setting
      -	 *				(omit if above is an object or to retrieve a value)
      -	 */
      -	_optionDatepicker: function( target, name, value ) {
      -		var settings, date, minDate, maxDate,
      -			inst = this._getInst( target );
      -
      -		if ( arguments.length === 2 && typeof name === "string" ) {
      -			return ( name === "defaults" ? $.extend( {}, $.datepicker._defaults ) :
      -				( inst ? ( name === "all" ? $.extend( {}, inst.settings ) :
      -				this._get( inst, name ) ) : null ) );
      -		}
      -
      -		settings = name || {};
      -		if ( typeof name === "string" ) {
      -			settings = {};
      -			settings[ name ] = value;
      -		}
      -
      -		if ( inst ) {
      -			if ( this._curInst === inst ) {
      -				this._hideDatepicker();
      -			}
      -
      -			date = this._getDateDatepicker( target, true );
      -			minDate = this._getMinMaxDate( inst, "min" );
      -			maxDate = this._getMinMaxDate( inst, "max" );
      -			datepicker_extendRemove( inst.settings, settings );
      -
      -			// reformat the old minDate/maxDate values if dateFormat changes and a new minDate/maxDate isn't provided
      -			if ( minDate !== null && settings.dateFormat !== undefined && settings.minDate === undefined ) {
      -				inst.settings.minDate = this._formatDate( inst, minDate );
      -			}
      -			if ( maxDate !== null && settings.dateFormat !== undefined && settings.maxDate === undefined ) {
      -				inst.settings.maxDate = this._formatDate( inst, maxDate );
      -			}
      -			if ( "disabled" in settings ) {
      -				if ( settings.disabled ) {
      -					this._disableDatepicker( target );
      -				} else {
      -					this._enableDatepicker( target );
      -				}
      -			}
      -			this._attachments( $( target ), inst );
      -			this._autoSize( inst );
      -			this._setDate( inst, date );
      -			this._updateAlternate( inst );
      -			this._updateDatepicker( inst );
      -		}
      -	},
      -
      -	// Change method deprecated
      -	_changeDatepicker: function( target, name, value ) {
      -		this._optionDatepicker( target, name, value );
      -	},
      -
      -	/* Redraw the date picker attached to an input field or division.
      -	 * @param  target  element - the target input field or division or span
      -	 */
      -	_refreshDatepicker: function( target ) {
      -		var inst = this._getInst( target );
      -		if ( inst ) {
      -			this._updateDatepicker( inst );
      -		}
      -	},
      -
      -	/* Set the dates for a jQuery selection.
      -	 * @param  target element - the target input field or division or span
      -	 * @param  date	Date - the new date
      -	 */
      -	_setDateDatepicker: function( target, date ) {
      -		var inst = this._getInst( target );
      -		if ( inst ) {
      -			this._setDate( inst, date );
      -			this._updateDatepicker( inst );
      -			this._updateAlternate( inst );
      -		}
      -	},
      -
      -	/* Get the date(s) for the first entry in a jQuery selection.
      -	 * @param  target element - the target input field or division or span
      -	 * @param  noDefault boolean - true if no default date is to be used
      -	 * @return Date - the current date
      -	 */
      -	_getDateDatepicker: function( target, noDefault ) {
      -		var inst = this._getInst( target );
      -		if ( inst && !inst.inline ) {
      -			this._setDateFromField( inst, noDefault );
      -		}
      -		return ( inst ? this._getDate( inst ) : null );
      -	},
      -
      -	/* Handle keystrokes. */
      -	_doKeyDown: function( event ) {
      -		var onSelect, dateStr, sel,
      -			inst = $.datepicker._getInst( event.target ),
      -			handled = true,
      -			isRTL = inst.dpDiv.is( ".ui-datepicker-rtl" );
      -
      -		inst._keyEvent = true;
      -		if ( $.datepicker._datepickerShowing ) {
      -			switch ( event.keyCode ) {
      -				case 9: $.datepicker._hideDatepicker();
      -						handled = false;
      -						break; // hide on tab out
      -				case 13: sel = $( "td." + $.datepicker._dayOverClass + ":not(." +
      -									$.datepicker._currentClass + ")", inst.dpDiv );
      -						if ( sel[ 0 ] ) {
      -							$.datepicker._selectDay( event.target, inst.selectedMonth, inst.selectedYear, sel[ 0 ] );
      -						}
      -
      -						onSelect = $.datepicker._get( inst, "onSelect" );
      -						if ( onSelect ) {
      -							dateStr = $.datepicker._formatDate( inst );
      -
      -							// Trigger custom callback
      -							onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );
      -						} else {
      -							$.datepicker._hideDatepicker();
      -						}
      -
      -						return false; // don't submit the form
      -				case 27: $.datepicker._hideDatepicker();
      -						break; // hide on escape
      -				case 33: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -							-$.datepicker._get( inst, "stepBigMonths" ) :
      -							-$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						break; // previous month/year on page up/+ ctrl
      -				case 34: $.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -							+$.datepicker._get( inst, "stepBigMonths" ) :
      -							+$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						break; // next month/year on page down/+ ctrl
      -				case 35: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._clearDate( event.target );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // clear on ctrl or command +end
      -				case 36: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._gotoToday( event.target );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // current on ctrl or command +home
      -				case 37: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, ( isRTL ? +1 : -1 ), "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -
      -						// -1 day on ctrl or command +left
      -						if ( event.originalEvent.altKey ) {
      -							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -								-$.datepicker._get( inst, "stepBigMonths" ) :
      -								-$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						}
      -
      -						// next month/year on alt +left on Mac
      -						break;
      -				case 38: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, -7, "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // -1 week on ctrl or command +up
      -				case 39: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, ( isRTL ? -1 : +1 ), "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -
      -						// +1 day on ctrl or command +right
      -						if ( event.originalEvent.altKey ) {
      -							$.datepicker._adjustDate( event.target, ( event.ctrlKey ?
      -								+$.datepicker._get( inst, "stepBigMonths" ) :
      -								+$.datepicker._get( inst, "stepMonths" ) ), "M" );
      -						}
      -
      -						// next month/year on alt +right
      -						break;
      -				case 40: if ( event.ctrlKey || event.metaKey ) {
      -							$.datepicker._adjustDate( event.target, +7, "D" );
      -						}
      -						handled = event.ctrlKey || event.metaKey;
      -						break; // +1 week on ctrl or command +down
      -				default: handled = false;
      -			}
      -		} else if ( event.keyCode === 36 && event.ctrlKey ) { // display the date picker on ctrl+home
      -			$.datepicker._showDatepicker( this );
      -		} else {
      -			handled = false;
      -		}
      -
      -		if ( handled ) {
      -			event.preventDefault();
      -			event.stopPropagation();
      -		}
      -	},
      -
      -	/* Filter entered characters - based on date format. */
      -	_doKeyPress: function( event ) {
      -		var chars, chr,
      -			inst = $.datepicker._getInst( event.target );
      -
      -		if ( $.datepicker._get( inst, "constrainInput" ) ) {
      -			chars = $.datepicker._possibleChars( $.datepicker._get( inst, "dateFormat" ) );
      -			chr = String.fromCharCode( event.charCode == null ? event.keyCode : event.charCode );
      -			return event.ctrlKey || event.metaKey || ( chr < " " || !chars || chars.indexOf( chr ) > -1 );
      -		}
      -	},
      -
      -	/* Synchronise manual entry and field/alternate field. */
      -	_doKeyUp: function( event ) {
      -		var date,
      -			inst = $.datepicker._getInst( event.target );
      -
      -		if ( inst.input.val() !== inst.lastVal ) {
      -			try {
      -				date = $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
      -					( inst.input ? inst.input.val() : null ),
      -					$.datepicker._getFormatConfig( inst ) );
      -
      -				if ( date ) { // only if valid
      -					$.datepicker._setDateFromField( inst );
      -					$.datepicker._updateAlternate( inst );
      -					$.datepicker._updateDatepicker( inst );
      -				}
      -			}
      -			catch ( err ) {
      -			}
      -		}
      -		return true;
      -	},
      -
      -	/* Pop-up the date picker for a given input field.
      -	 * If false returned from beforeShow event handler do not show.
      -	 * @param  input  element - the input field attached to the date picker or
      -	 *					event - if triggered by focus
      -	 */
      -	_showDatepicker: function( input ) {
      -		input = input.target || input;
      -		if ( input.nodeName.toLowerCase() !== "input" ) { // find from button/image trigger
      -			input = $( "input", input.parentNode )[ 0 ];
      -		}
      -
      -		if ( $.datepicker._isDisabledDatepicker( input ) || $.datepicker._lastInput === input ) { // already here
      -			return;
      -		}
      -
      -		var inst, beforeShow, beforeShowSettings, isFixed,
      -			offset, showAnim, duration;
      -
      -		inst = $.datepicker._getInst( input );
      -		if ( $.datepicker._curInst && $.datepicker._curInst !== inst ) {
      -			$.datepicker._curInst.dpDiv.stop( true, true );
      -			if ( inst && $.datepicker._datepickerShowing ) {
      -				$.datepicker._hideDatepicker( $.datepicker._curInst.input[ 0 ] );
      -			}
      -		}
      -
      -		beforeShow = $.datepicker._get( inst, "beforeShow" );
      -		beforeShowSettings = beforeShow ? beforeShow.apply( input, [ input, inst ] ) : {};
      -		if ( beforeShowSettings === false ) {
      -			return;
      -		}
      -		datepicker_extendRemove( inst.settings, beforeShowSettings );
      -
      -		inst.lastVal = null;
      -		$.datepicker._lastInput = input;
      -		$.datepicker._setDateFromField( inst );
      -
      -		if ( $.datepicker._inDialog ) { // hide cursor
      -			input.value = "";
      -		}
      -		if ( !$.datepicker._pos ) { // position below input
      -			$.datepicker._pos = $.datepicker._findPos( input );
      -			$.datepicker._pos[ 1 ] += input.offsetHeight; // add the height
      -		}
      -
      -		isFixed = false;
      -		$( input ).parents().each( function() {
      -			isFixed |= $( this ).css( "position" ) === "fixed";
      -			return !isFixed;
      -		} );
      -
      -		offset = { left: $.datepicker._pos[ 0 ], top: $.datepicker._pos[ 1 ] };
      -		$.datepicker._pos = null;
      -
      -		//to avoid flashes on Firefox
      -		inst.dpDiv.empty();
      -
      -		// determine sizing offscreen
      -		inst.dpDiv.css( { position: "absolute", display: "block", top: "-1000px" } );
      -		$.datepicker._updateDatepicker( inst );
      -
      -		// fix width for dynamic number of date pickers
      -		// and adjust position before showing
      -		offset = $.datepicker._checkOffset( inst, offset, isFixed );
      -		inst.dpDiv.css( { position: ( $.datepicker._inDialog && $.blockUI ?
      -			"static" : ( isFixed ? "fixed" : "absolute" ) ), display: "none",
      -			left: offset.left + "px", top: offset.top + "px" } );
      -
      -		if ( !inst.inline ) {
      -			showAnim = $.datepicker._get( inst, "showAnim" );
      -			duration = $.datepicker._get( inst, "duration" );
      -			inst.dpDiv.css( "z-index", datepicker_getZindex( $( input ) ) + 1 );
      -			$.datepicker._datepickerShowing = true;
      -
      -			if ( $.effects && $.effects.effect[ showAnim ] ) {
      -				inst.dpDiv.show( showAnim, $.datepicker._get( inst, "showOptions" ), duration );
      -			} else {
      -				inst.dpDiv[ showAnim || "show" ]( showAnim ? duration : null );
      -			}
      -
      -			if ( $.datepicker._shouldFocusInput( inst ) ) {
      -				inst.input.trigger( "focus" );
      -			}
      -
      -			$.datepicker._curInst = inst;
      -		}
      -	},
      -
      -	/* Generate the date picker content. */
      -	_updateDatepicker: function( inst ) {
      -		this.maxRows = 4; //Reset the max number of rows being displayed (see #7043)
      -		datepicker_instActive = inst; // for delegate hover events
      -		inst.dpDiv.empty().append( this._generateHTML( inst ) );
      -		this._attachHandlers( inst );
      -
      -		var origyearshtml,
      -			numMonths = this._getNumberOfMonths( inst ),
      -			cols = numMonths[ 1 ],
      -			width = 17,
      -			activeCell = inst.dpDiv.find( "." + this._dayOverClass + " a" );
      -
      -		if ( activeCell.length > 0 ) {
      -			datepicker_handleMouseover.apply( activeCell.get( 0 ) );
      -		}
      -
      -		inst.dpDiv.removeClass( "ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4" ).width( "" );
      -		if ( cols > 1 ) {
      -			inst.dpDiv.addClass( "ui-datepicker-multi-" + cols ).css( "width", ( width * cols ) + "em" );
      -		}
      -		inst.dpDiv[ ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ? "add" : "remove" ) +
      -			"Class" ]( "ui-datepicker-multi" );
      -		inst.dpDiv[ ( this._get( inst, "isRTL" ) ? "add" : "remove" ) +
      -			"Class" ]( "ui-datepicker-rtl" );
      -
      -		if ( inst === $.datepicker._curInst && $.datepicker._datepickerShowing && $.datepicker._shouldFocusInput( inst ) ) {
      -			inst.input.trigger( "focus" );
      -		}
      -
      -		// Deffered render of the years select (to avoid flashes on Firefox)
      -		if ( inst.yearshtml ) {
      -			origyearshtml = inst.yearshtml;
      -			setTimeout( function() {
      -
      -				//assure that inst.yearshtml didn't change.
      -				if ( origyearshtml === inst.yearshtml && inst.yearshtml ) {
      -					inst.dpDiv.find( "select.ui-datepicker-year:first" ).replaceWith( inst.yearshtml );
      -				}
      -				origyearshtml = inst.yearshtml = null;
      -			}, 0 );
      -		}
      -	},
      -
      -	// #6694 - don't focus the input if it's already focused
      -	// this breaks the change event in IE
      -	// Support: IE and jQuery <1.9
      -	_shouldFocusInput: function( inst ) {
      -		return inst.input && inst.input.is( ":visible" ) && !inst.input.is( ":disabled" ) && !inst.input.is( ":focus" );
      -	},
      -
      -	/* Check positioning to remain on screen. */
      -	_checkOffset: function( inst, offset, isFixed ) {
      -		var dpWidth = inst.dpDiv.outerWidth(),
      -			dpHeight = inst.dpDiv.outerHeight(),
      -			inputWidth = inst.input ? inst.input.outerWidth() : 0,
      -			inputHeight = inst.input ? inst.input.outerHeight() : 0,
      -			viewWidth = document.documentElement.clientWidth + ( isFixed ? 0 : $( document ).scrollLeft() ),
      -			viewHeight = document.documentElement.clientHeight + ( isFixed ? 0 : $( document ).scrollTop() );
      -
      -		offset.left -= ( this._get( inst, "isRTL" ) ? ( dpWidth - inputWidth ) : 0 );
      -		offset.left -= ( isFixed && offset.left === inst.input.offset().left ) ? $( document ).scrollLeft() : 0;
      -		offset.top -= ( isFixed && offset.top === ( inst.input.offset().top + inputHeight ) ) ? $( document ).scrollTop() : 0;
      -
      -		// Now check if datepicker is showing outside window viewport - move to a better place if so.
      -		offset.left -= Math.min( offset.left, ( offset.left + dpWidth > viewWidth && viewWidth > dpWidth ) ?
      -			Math.abs( offset.left + dpWidth - viewWidth ) : 0 );
      -		offset.top -= Math.min( offset.top, ( offset.top + dpHeight > viewHeight && viewHeight > dpHeight ) ?
      -			Math.abs( dpHeight + inputHeight ) : 0 );
      -
      -		return offset;
      -	},
      -
      -	/* Find an object's position on the screen. */
      -	_findPos: function( obj ) {
      -		var position,
      -			inst = this._getInst( obj ),
      -			isRTL = this._get( inst, "isRTL" );
      -
      -		while ( obj && ( obj.type === "hidden" || obj.nodeType !== 1 || $.expr.filters.hidden( obj ) ) ) {
      -			obj = obj[ isRTL ? "previousSibling" : "nextSibling" ];
      -		}
      -
      -		position = $( obj ).offset();
      -		return [ position.left, position.top ];
      -	},
      -
      -	/* Hide the date picker from view.
      -	 * @param  input  element - the input field attached to the date picker
      -	 */
      -	_hideDatepicker: function( input ) {
      -		var showAnim, duration, postProcess, onClose,
      -			inst = this._curInst;
      -
      -		if ( !inst || ( input && inst !== $.data( input, "datepicker" ) ) ) {
      -			return;
      -		}
      -
      -		if ( this._datepickerShowing ) {
      -			showAnim = this._get( inst, "showAnim" );
      -			duration = this._get( inst, "duration" );
      -			postProcess = function() {
      -				$.datepicker._tidyDialog( inst );
      -			};
      -
      -			// DEPRECATED: after BC for 1.8.x $.effects[ showAnim ] is not needed
      -			if ( $.effects && ( $.effects.effect[ showAnim ] || $.effects[ showAnim ] ) ) {
      -				inst.dpDiv.hide( showAnim, $.datepicker._get( inst, "showOptions" ), duration, postProcess );
      -			} else {
      -				inst.dpDiv[ ( showAnim === "slideDown" ? "slideUp" :
      -					( showAnim === "fadeIn" ? "fadeOut" : "hide" ) ) ]( ( showAnim ? duration : null ), postProcess );
      -			}
      -
      -			if ( !showAnim ) {
      -				postProcess();
      -			}
      -			this._datepickerShowing = false;
      -
      -			onClose = this._get( inst, "onClose" );
      -			if ( onClose ) {
      -				onClose.apply( ( inst.input ? inst.input[ 0 ] : null ), [ ( inst.input ? inst.input.val() : "" ), inst ] );
      -			}
      -
      -			this._lastInput = null;
      -			if ( this._inDialog ) {
      -				this._dialogInput.css( { position: "absolute", left: "0", top: "-100px" } );
      -				if ( $.blockUI ) {
      -					$.unblockUI();
      -					$( "body" ).append( this.dpDiv );
      -				}
      -			}
      -			this._inDialog = false;
      -		}
      -	},
      -
      -	/* Tidy up after a dialog display. */
      -	_tidyDialog: function( inst ) {
      -		inst.dpDiv.removeClass( this._dialogClass ).off( ".ui-datepicker-calendar" );
      -	},
      -
      -	/* Close date picker if clicked elsewhere. */
      -	_checkExternalClick: function( event ) {
      -		if ( !$.datepicker._curInst ) {
      -			return;
      -		}
      -
      -		var $target = $( event.target ),
      -			inst = $.datepicker._getInst( $target[ 0 ] );
      -
      -		if ( ( ( $target[ 0 ].id !== $.datepicker._mainDivId &&
      -				$target.parents( "#" + $.datepicker._mainDivId ).length === 0 &&
      -				!$target.hasClass( $.datepicker.markerClassName ) &&
      -				!$target.closest( "." + $.datepicker._triggerClass ).length &&
      -				$.datepicker._datepickerShowing && !( $.datepicker._inDialog && $.blockUI ) ) ) ||
      -			( $target.hasClass( $.datepicker.markerClassName ) && $.datepicker._curInst !== inst ) ) {
      -				$.datepicker._hideDatepicker();
      -		}
      -	},
      -
      -	/* Adjust one of the date sub-fields. */
      -	_adjustDate: function( id, offset, period ) {
      -		var target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		if ( this._isDisabledDatepicker( target[ 0 ] ) ) {
      -			return;
      -		}
      -		this._adjustInstDate( inst, offset +
      -			( period === "M" ? this._get( inst, "showCurrentAtPos" ) : 0 ), // undo positioning
      -			period );
      -		this._updateDatepicker( inst );
      -	},
      -
      -	/* Action for current link. */
      -	_gotoToday: function( id ) {
      -		var date,
      -			target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		if ( this._get( inst, "gotoCurrent" ) && inst.currentDay ) {
      -			inst.selectedDay = inst.currentDay;
      -			inst.drawMonth = inst.selectedMonth = inst.currentMonth;
      -			inst.drawYear = inst.selectedYear = inst.currentYear;
      -		} else {
      -			date = new Date();
      -			inst.selectedDay = date.getDate();
      -			inst.drawMonth = inst.selectedMonth = date.getMonth();
      -			inst.drawYear = inst.selectedYear = date.getFullYear();
      -		}
      -		this._notifyChange( inst );
      -		this._adjustDate( target );
      -	},
      -
      -	/* Action for selecting a new month/year. */
      -	_selectMonthYear: function( id, select, period ) {
      -		var target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		inst[ "selected" + ( period === "M" ? "Month" : "Year" ) ] =
      -		inst[ "draw" + ( period === "M" ? "Month" : "Year" ) ] =
      -			parseInt( select.options[ select.selectedIndex ].value, 10 );
      -
      -		this._notifyChange( inst );
      -		this._adjustDate( target );
      -	},
      -
      -	/* Action for selecting a day. */
      -	_selectDay: function( id, month, year, td ) {
      -		var inst,
      -			target = $( id );
      -
      -		if ( $( td ).hasClass( this._unselectableClass ) || this._isDisabledDatepicker( target[ 0 ] ) ) {
      -			return;
      -		}
      -
      -		inst = this._getInst( target[ 0 ] );
      -		inst.selectedDay = inst.currentDay = $( "a", td ).html();
      -		inst.selectedMonth = inst.currentMonth = month;
      -		inst.selectedYear = inst.currentYear = year;
      -		this._selectDate( id, this._formatDate( inst,
      -			inst.currentDay, inst.currentMonth, inst.currentYear ) );
      -	},
      -
      -	/* Erase the input field and hide the date picker. */
      -	_clearDate: function( id ) {
      -		var target = $( id );
      -		this._selectDate( target, "" );
      -	},
      -
      -	/* Update the input field with the selected date. */
      -	_selectDate: function( id, dateStr ) {
      -		var onSelect,
      -			target = $( id ),
      -			inst = this._getInst( target[ 0 ] );
      -
      -		dateStr = ( dateStr != null ? dateStr : this._formatDate( inst ) );
      -		if ( inst.input ) {
      -			inst.input.val( dateStr );
      -		}
      -		this._updateAlternate( inst );
      -
      -		onSelect = this._get( inst, "onSelect" );
      -		if ( onSelect ) {
      -			onSelect.apply( ( inst.input ? inst.input[ 0 ] : null ), [ dateStr, inst ] );  // trigger custom callback
      -		} else if ( inst.input ) {
      -			inst.input.trigger( "change" ); // fire the change event
      -		}
      -
      -		if ( inst.inline ) {
      -			this._updateDatepicker( inst );
      -		} else {
      -			this._hideDatepicker();
      -			this._lastInput = inst.input[ 0 ];
      -			if ( typeof( inst.input[ 0 ] ) !== "object" ) {
      -				inst.input.trigger( "focus" ); // restore focus
      -			}
      -			this._lastInput = null;
      -		}
      -	},
      -
      -	/* Update any alternate field to synchronise with the main field. */
      -	_updateAlternate: function( inst ) {
      -		var altFormat, date, dateStr,
      -			altField = this._get( inst, "altField" );
      -
      -		if ( altField ) { // update alternate field too
      -			altFormat = this._get( inst, "altFormat" ) || this._get( inst, "dateFormat" );
      -			date = this._getDate( inst );
      -			dateStr = this.formatDate( altFormat, date, this._getFormatConfig( inst ) );
      -			$( altField ).val( dateStr );
      -		}
      -	},
      -
      -	/* Set as beforeShowDay function to prevent selection of weekends.
      -	 * @param  date  Date - the date to customise
      -	 * @return [boolean, string] - is this date selectable?, what is its CSS class?
      -	 */
      -	noWeekends: function( date ) {
      -		var day = date.getDay();
      -		return [ ( day > 0 && day < 6 ), "" ];
      -	},
      -
      -	/* Set as calculateWeek to determine the week of the year based on the ISO 8601 definition.
      -	 * @param  date  Date - the date to get the week for
      -	 * @return  number - the number of the week within the year that contains this date
      -	 */
      -	iso8601Week: function( date ) {
      -		var time,
      -			checkDate = new Date( date.getTime() );
      -
      -		// Find Thursday of this week starting on Monday
      -		checkDate.setDate( checkDate.getDate() + 4 - ( checkDate.getDay() || 7 ) );
      -
      -		time = checkDate.getTime();
      -		checkDate.setMonth( 0 ); // Compare with Jan 1
      -		checkDate.setDate( 1 );
      -		return Math.floor( Math.round( ( time - checkDate ) / 86400000 ) / 7 ) + 1;
      -	},
      -
      -	/* Parse a string value into a date object.
      -	 * See formatDate below for the possible formats.
      -	 *
      -	 * @param  format string - the expected format of the date
      -	 * @param  value string - the date in the above format
      -	 * @param  settings Object - attributes include:
      -	 *					shortYearCutoff  number - the cutoff year for determining the century (optional)
      -	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
      -	 *					dayNames		string[7] - names of the days from Sunday (optional)
      -	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
      -	 *					monthNames		string[12] - names of the months (optional)
      -	 * @return  Date - the extracted date value or null if value is blank
      -	 */
      -	parseDate: function( format, value, settings ) {
      -		if ( format == null || value == null ) {
      -			throw "Invalid arguments";
      -		}
      -
      -		value = ( typeof value === "object" ? value.toString() : value + "" );
      -		if ( value === "" ) {
      -			return null;
      -		}
      -
      -		var iFormat, dim, extra,
      -			iValue = 0,
      -			shortYearCutoffTemp = ( settings ? settings.shortYearCutoff : null ) || this._defaults.shortYearCutoff,
      -			shortYearCutoff = ( typeof shortYearCutoffTemp !== "string" ? shortYearCutoffTemp :
      -				new Date().getFullYear() % 100 + parseInt( shortYearCutoffTemp, 10 ) ),
      -			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
      -			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
      -			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
      -			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
      -			year = -1,
      -			month = -1,
      -			day = -1,
      -			doy = -1,
      -			literal = false,
      -			date,
      -
      -			// Check whether a format character is doubled
      -			lookAhead = function( match ) {
      -				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
      -				if ( matches ) {
      -					iFormat++;
      -				}
      -				return matches;
      -			},
      -
      -			// Extract a number from the string value
      -			getNumber = function( match ) {
      -				var isDoubled = lookAhead( match ),
      -					size = ( match === "@" ? 14 : ( match === "!" ? 20 :
      -					( match === "y" && isDoubled ? 4 : ( match === "o" ? 3 : 2 ) ) ) ),
      -					minSize = ( match === "y" ? size : 1 ),
      -					digits = new RegExp( "^\\d{" + minSize + "," + size + "}" ),
      -					num = value.substring( iValue ).match( digits );
      -				if ( !num ) {
      -					throw "Missing number at position " + iValue;
      -				}
      -				iValue += num[ 0 ].length;
      -				return parseInt( num[ 0 ], 10 );
      -			},
      -
      -			// Extract a name from the string value and convert to an index
      -			getName = function( match, shortNames, longNames ) {
      -				var index = -1,
      -					names = $.map( lookAhead( match ) ? longNames : shortNames, function( v, k ) {
      -						return [ [ k, v ] ];
      -					} ).sort( function( a, b ) {
      -						return -( a[ 1 ].length - b[ 1 ].length );
      -					} );
      -
      -				$.each( names, function( i, pair ) {
      -					var name = pair[ 1 ];
      -					if ( value.substr( iValue, name.length ).toLowerCase() === name.toLowerCase() ) {
      -						index = pair[ 0 ];
      -						iValue += name.length;
      -						return false;
      -					}
      -				} );
      -				if ( index !== -1 ) {
      -					return index + 1;
      -				} else {
      -					throw "Unknown name at position " + iValue;
      -				}
      -			},
      -
      -			// Confirm that a literal character matches the string value
      -			checkLiteral = function() {
      -				if ( value.charAt( iValue ) !== format.charAt( iFormat ) ) {
      -					throw "Unexpected literal at position " + iValue;
      -				}
      -				iValue++;
      -			};
      -
      -		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
      -			if ( literal ) {
      -				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
      -					literal = false;
      -				} else {
      -					checkLiteral();
      -				}
      -			} else {
      -				switch ( format.charAt( iFormat ) ) {
      -					case "d":
      -						day = getNumber( "d" );
      -						break;
      -					case "D":
      -						getName( "D", dayNamesShort, dayNames );
      -						break;
      -					case "o":
      -						doy = getNumber( "o" );
      -						break;
      -					case "m":
      -						month = getNumber( "m" );
      -						break;
      -					case "M":
      -						month = getName( "M", monthNamesShort, monthNames );
      -						break;
      -					case "y":
      -						year = getNumber( "y" );
      -						break;
      -					case "@":
      -						date = new Date( getNumber( "@" ) );
      -						year = date.getFullYear();
      -						month = date.getMonth() + 1;
      -						day = date.getDate();
      -						break;
      -					case "!":
      -						date = new Date( ( getNumber( "!" ) - this._ticksTo1970 ) / 10000 );
      -						year = date.getFullYear();
      -						month = date.getMonth() + 1;
      -						day = date.getDate();
      -						break;
      -					case "'":
      -						if ( lookAhead( "'" ) ) {
      -							checkLiteral();
      -						} else {
      -							literal = true;
      -						}
      -						break;
      -					default:
      -						checkLiteral();
      -				}
      -			}
      -		}
      -
      -		if ( iValue < value.length ) {
      -			extra = value.substr( iValue );
      -			if ( !/^\s+/.test( extra ) ) {
      -				throw "Extra/unparsed characters found in date: " + extra;
      -			}
      -		}
      -
      -		if ( year === -1 ) {
      -			year = new Date().getFullYear();
      -		} else if ( year < 100 ) {
      -			year += new Date().getFullYear() - new Date().getFullYear() % 100 +
      -				( year <= shortYearCutoff ? 0 : -100 );
      -		}
      -
      -		if ( doy > -1 ) {
      -			month = 1;
      -			day = doy;
      -			do {
      -				dim = this._getDaysInMonth( year, month - 1 );
      -				if ( day <= dim ) {
      -					break;
      -				}
      -				month++;
      -				day -= dim;
      -			} while ( true );
      -		}
      -
      -		date = this._daylightSavingAdjust( new Date( year, month - 1, day ) );
      -		if ( date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day ) {
      -			throw "Invalid date"; // E.g. 31/02/00
      -		}
      -		return date;
      -	},
      -
      -	/* Standard date formats. */
      -	ATOM: "yy-mm-dd", // RFC 3339 (ISO 8601)
      -	COOKIE: "D, dd M yy",
      -	ISO_8601: "yy-mm-dd",
      -	RFC_822: "D, d M y",
      -	RFC_850: "DD, dd-M-y",
      -	RFC_1036: "D, d M y",
      -	RFC_1123: "D, d M yy",
      -	RFC_2822: "D, d M yy",
      -	RSS: "D, d M y", // RFC 822
      -	TICKS: "!",
      -	TIMESTAMP: "@",
      -	W3C: "yy-mm-dd", // ISO 8601
      -
      -	_ticksTo1970: ( ( ( 1970 - 1 ) * 365 + Math.floor( 1970 / 4 ) - Math.floor( 1970 / 100 ) +
      -		Math.floor( 1970 / 400 ) ) * 24 * 60 * 60 * 10000000 ),
      -
      -	/* Format a date object into a string value.
      -	 * The format can be combinations of the following:
      -	 * d  - day of month (no leading zero)
      -	 * dd - day of month (two digit)
      -	 * o  - day of year (no leading zeros)
      -	 * oo - day of year (three digit)
      -	 * D  - day name short
      -	 * DD - day name long
      -	 * m  - month of year (no leading zero)
      -	 * mm - month of year (two digit)
      -	 * M  - month name short
      -	 * MM - month name long
      -	 * y  - year (two digit)
      -	 * yy - year (four digit)
      -	 * @ - Unix timestamp (ms since 01/01/1970)
      -	 * ! - Windows ticks (100ns since 01/01/0001)
      -	 * "..." - literal text
      -	 * '' - single quote
      -	 *
      -	 * @param  format string - the desired format of the date
      -	 * @param  date Date - the date value to format
      -	 * @param  settings Object - attributes include:
      -	 *					dayNamesShort	string[7] - abbreviated names of the days from Sunday (optional)
      -	 *					dayNames		string[7] - names of the days from Sunday (optional)
      -	 *					monthNamesShort string[12] - abbreviated names of the months (optional)
      -	 *					monthNames		string[12] - names of the months (optional)
      -	 * @return  string - the date in the above format
      -	 */
      -	formatDate: function( format, date, settings ) {
      -		if ( !date ) {
      -			return "";
      -		}
      -
      -		var iFormat,
      -			dayNamesShort = ( settings ? settings.dayNamesShort : null ) || this._defaults.dayNamesShort,
      -			dayNames = ( settings ? settings.dayNames : null ) || this._defaults.dayNames,
      -			monthNamesShort = ( settings ? settings.monthNamesShort : null ) || this._defaults.monthNamesShort,
      -			monthNames = ( settings ? settings.monthNames : null ) || this._defaults.monthNames,
      -
      -			// Check whether a format character is doubled
      -			lookAhead = function( match ) {
      -				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
      -				if ( matches ) {
      -					iFormat++;
      -				}
      -				return matches;
      -			},
      -
      -			// Format a number, with leading zero if necessary
      -			formatNumber = function( match, value, len ) {
      -				var num = "" + value;
      -				if ( lookAhead( match ) ) {
      -					while ( num.length < len ) {
      -						num = "0" + num;
      -					}
      -				}
      -				return num;
      -			},
      -
      -			// Format a name, short or long as requested
      -			formatName = function( match, value, shortNames, longNames ) {
      -				return ( lookAhead( match ) ? longNames[ value ] : shortNames[ value ] );
      -			},
      -			output = "",
      -			literal = false;
      -
      -		if ( date ) {
      -			for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
      -				if ( literal ) {
      -					if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
      -						literal = false;
      -					} else {
      -						output += format.charAt( iFormat );
      -					}
      -				} else {
      -					switch ( format.charAt( iFormat ) ) {
      -						case "d":
      -							output += formatNumber( "d", date.getDate(), 2 );
      -							break;
      -						case "D":
      -							output += formatName( "D", date.getDay(), dayNamesShort, dayNames );
      -							break;
      -						case "o":
      -							output += formatNumber( "o",
      -								Math.round( ( new Date( date.getFullYear(), date.getMonth(), date.getDate() ).getTime() - new Date( date.getFullYear(), 0, 0 ).getTime() ) / 86400000 ), 3 );
      -							break;
      -						case "m":
      -							output += formatNumber( "m", date.getMonth() + 1, 2 );
      -							break;
      -						case "M":
      -							output += formatName( "M", date.getMonth(), monthNamesShort, monthNames );
      -							break;
      -						case "y":
      -							output += ( lookAhead( "y" ) ? date.getFullYear() :
      -								( date.getFullYear() % 100 < 10 ? "0" : "" ) + date.getFullYear() % 100 );
      -							break;
      -						case "@":
      -							output += date.getTime();
      -							break;
      -						case "!":
      -							output += date.getTime() * 10000 + this._ticksTo1970;
      -							break;
      -						case "'":
      -							if ( lookAhead( "'" ) ) {
      -								output += "'";
      -							} else {
      -								literal = true;
      -							}
      -							break;
      -						default:
      -							output += format.charAt( iFormat );
      -					}
      -				}
      -			}
      -		}
      -		return output;
      -	},
      -
      -	/* Extract all possible characters from the date format. */
      -	_possibleChars: function( format ) {
      -		var iFormat,
      -			chars = "",
      -			literal = false,
      -
      -			// Check whether a format character is doubled
      -			lookAhead = function( match ) {
      -				var matches = ( iFormat + 1 < format.length && format.charAt( iFormat + 1 ) === match );
      -				if ( matches ) {
      -					iFormat++;
      -				}
      -				return matches;
      -			};
      -
      -		for ( iFormat = 0; iFormat < format.length; iFormat++ ) {
      -			if ( literal ) {
      -				if ( format.charAt( iFormat ) === "'" && !lookAhead( "'" ) ) {
      -					literal = false;
      -				} else {
      -					chars += format.charAt( iFormat );
      -				}
      -			} else {
      -				switch ( format.charAt( iFormat ) ) {
      -					case "d": case "m": case "y": case "@":
      -						chars += "0123456789";
      -						break;
      -					case "D": case "M":
      -						return null; // Accept anything
      -					case "'":
      -						if ( lookAhead( "'" ) ) {
      -							chars += "'";
      -						} else {
      -							literal = true;
      -						}
      -						break;
      -					default:
      -						chars += format.charAt( iFormat );
      -				}
      -			}
      -		}
      -		return chars;
      -	},
      -
      -	/* Get a setting value, defaulting if necessary. */
      -	_get: function( inst, name ) {
      -		return inst.settings[ name ] !== undefined ?
      -			inst.settings[ name ] : this._defaults[ name ];
      -	},
      -
      -	/* Parse existing date and initialise date picker. */
      -	_setDateFromField: function( inst, noDefault ) {
      -		if ( inst.input.val() === inst.lastVal ) {
      -			return;
      -		}
      -
      -		var dateFormat = this._get( inst, "dateFormat" ),
      -			dates = inst.lastVal = inst.input ? inst.input.val() : null,
      -			defaultDate = this._getDefaultDate( inst ),
      -			date = defaultDate,
      -			settings = this._getFormatConfig( inst );
      -
      -		try {
      -			date = this.parseDate( dateFormat, dates, settings ) || defaultDate;
      -		} catch ( event ) {
      -			dates = ( noDefault ? "" : dates );
      -		}
      -		inst.selectedDay = date.getDate();
      -		inst.drawMonth = inst.selectedMonth = date.getMonth();
      -		inst.drawYear = inst.selectedYear = date.getFullYear();
      -		inst.currentDay = ( dates ? date.getDate() : 0 );
      -		inst.currentMonth = ( dates ? date.getMonth() : 0 );
      -		inst.currentYear = ( dates ? date.getFullYear() : 0 );
      -		this._adjustInstDate( inst );
      -	},
      -
      -	/* Retrieve the default date shown on opening. */
      -	_getDefaultDate: function( inst ) {
      -		return this._restrictMinMax( inst,
      -			this._determineDate( inst, this._get( inst, "defaultDate" ), new Date() ) );
      -	},
      -
      -	/* A date may be specified as an exact value or a relative one. */
      -	_determineDate: function( inst, date, defaultDate ) {
      -		var offsetNumeric = function( offset ) {
      -				var date = new Date();
      -				date.setDate( date.getDate() + offset );
      -				return date;
      -			},
      -			offsetString = function( offset ) {
      -				try {
      -					return $.datepicker.parseDate( $.datepicker._get( inst, "dateFormat" ),
      -						offset, $.datepicker._getFormatConfig( inst ) );
      -				}
      -				catch ( e ) {
      -
      -					// Ignore
      -				}
      -
      -				var date = ( offset.toLowerCase().match( /^c/ ) ?
      -					$.datepicker._getDate( inst ) : null ) || new Date(),
      -					year = date.getFullYear(),
      -					month = date.getMonth(),
      -					day = date.getDate(),
      -					pattern = /([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,
      -					matches = pattern.exec( offset );
      -
      -				while ( matches ) {
      -					switch ( matches[ 2 ] || "d" ) {
      -						case "d" : case "D" :
      -							day += parseInt( matches[ 1 ], 10 ); break;
      -						case "w" : case "W" :
      -							day += parseInt( matches[ 1 ], 10 ) * 7; break;
      -						case "m" : case "M" :
      -							month += parseInt( matches[ 1 ], 10 );
      -							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
      -							break;
      -						case "y": case "Y" :
      -							year += parseInt( matches[ 1 ], 10 );
      -							day = Math.min( day, $.datepicker._getDaysInMonth( year, month ) );
      -							break;
      -					}
      -					matches = pattern.exec( offset );
      -				}
      -				return new Date( year, month, day );
      -			},
      -			newDate = ( date == null || date === "" ? defaultDate : ( typeof date === "string" ? offsetString( date ) :
      -				( typeof date === "number" ? ( isNaN( date ) ? defaultDate : offsetNumeric( date ) ) : new Date( date.getTime() ) ) ) );
      -
      -		newDate = ( newDate && newDate.toString() === "Invalid Date" ? defaultDate : newDate );
      -		if ( newDate ) {
      -			newDate.setHours( 0 );
      -			newDate.setMinutes( 0 );
      -			newDate.setSeconds( 0 );
      -			newDate.setMilliseconds( 0 );
      -		}
      -		return this._daylightSavingAdjust( newDate );
      -	},
      -
      -	/* Handle switch to/from daylight saving.
      -	 * Hours may be non-zero on daylight saving cut-over:
      -	 * > 12 when midnight changeover, but then cannot generate
      -	 * midnight datetime, so jump to 1AM, otherwise reset.
      -	 * @param  date  (Date) the date to check
      -	 * @return  (Date) the corrected date
      -	 */
      -	_daylightSavingAdjust: function( date ) {
      -		if ( !date ) {
      -			return null;
      -		}
      -		date.setHours( date.getHours() > 12 ? date.getHours() + 2 : 0 );
      -		return date;
      -	},
      -
      -	/* Set the date(s) directly. */
      -	_setDate: function( inst, date, noChange ) {
      -		var clear = !date,
      -			origMonth = inst.selectedMonth,
      -			origYear = inst.selectedYear,
      -			newDate = this._restrictMinMax( inst, this._determineDate( inst, date, new Date() ) );
      -
      -		inst.selectedDay = inst.currentDay = newDate.getDate();
      -		inst.drawMonth = inst.selectedMonth = inst.currentMonth = newDate.getMonth();
      -		inst.drawYear = inst.selectedYear = inst.currentYear = newDate.getFullYear();
      -		if ( ( origMonth !== inst.selectedMonth || origYear !== inst.selectedYear ) && !noChange ) {
      -			this._notifyChange( inst );
      -		}
      -		this._adjustInstDate( inst );
      -		if ( inst.input ) {
      -			inst.input.val( clear ? "" : this._formatDate( inst ) );
      -		}
      -	},
      -
      -	/* Retrieve the date(s) directly. */
      -	_getDate: function( inst ) {
      -		var startDate = ( !inst.currentYear || ( inst.input && inst.input.val() === "" ) ? null :
      -			this._daylightSavingAdjust( new Date(
      -			inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
      -			return startDate;
      -	},
      -
      -	/* Attach the onxxx handlers.  These are declared statically so
      -	 * they work with static code transformers like Caja.
      -	 */
      -	_attachHandlers: function( inst ) {
      -		var stepMonths = this._get( inst, "stepMonths" ),
      -			id = "#" + inst.id.replace( /\\\\/g, "\\" );
      -		inst.dpDiv.find( "[data-handler]" ).map( function() {
      -			var handler = {
      -				prev: function() {
      -					$.datepicker._adjustDate( id, -stepMonths, "M" );
      -				},
      -				next: function() {
      -					$.datepicker._adjustDate( id, +stepMonths, "M" );
      -				},
      -				hide: function() {
      -					$.datepicker._hideDatepicker();
      -				},
      -				today: function() {
      -					$.datepicker._gotoToday( id );
      -				},
      -				selectDay: function() {
      -					$.datepicker._selectDay( id, +this.getAttribute( "data-month" ), +this.getAttribute( "data-year" ), this );
      -					return false;
      -				},
      -				selectMonth: function() {
      -					$.datepicker._selectMonthYear( id, this, "M" );
      -					return false;
      -				},
      -				selectYear: function() {
      -					$.datepicker._selectMonthYear( id, this, "Y" );
      -					return false;
      -				}
      -			};
      -			$( this ).on( this.getAttribute( "data-event" ), handler[ this.getAttribute( "data-handler" ) ] );
      -		} );
      -	},
      -
      -	/* Generate the HTML for the current state of the date picker. */
      -	_generateHTML: function( inst ) {
      -		var maxDraw, prevText, prev, nextText, next, currentText, gotoDate,
      -			controls, buttonPanel, firstDay, showWeek, dayNames, dayNamesMin,
      -			monthNames, monthNamesShort, beforeShowDay, showOtherMonths,
      -			selectOtherMonths, defaultDate, html, dow, row, group, col, selectedDate,
      -			cornerClass, calender, thead, day, daysInMonth, leadDays, curRows, numRows,
      -			printDate, dRow, tbody, daySettings, otherMonth, unselectable,
      -			tempDate = new Date(),
      -			today = this._daylightSavingAdjust(
      -				new Date( tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate() ) ), // clear time
      -			isRTL = this._get( inst, "isRTL" ),
      -			showButtonPanel = this._get( inst, "showButtonPanel" ),
      -			hideIfNoPrevNext = this._get( inst, "hideIfNoPrevNext" ),
      -			navigationAsDateFormat = this._get( inst, "navigationAsDateFormat" ),
      -			numMonths = this._getNumberOfMonths( inst ),
      -			showCurrentAtPos = this._get( inst, "showCurrentAtPos" ),
      -			stepMonths = this._get( inst, "stepMonths" ),
      -			isMultiMonth = ( numMonths[ 0 ] !== 1 || numMonths[ 1 ] !== 1 ),
      -			currentDate = this._daylightSavingAdjust( ( !inst.currentDay ? new Date( 9999, 9, 9 ) :
      -				new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) ),
      -			minDate = this._getMinMaxDate( inst, "min" ),
      -			maxDate = this._getMinMaxDate( inst, "max" ),
      -			drawMonth = inst.drawMonth - showCurrentAtPos,
      -			drawYear = inst.drawYear;
      -
      -		if ( drawMonth < 0 ) {
      -			drawMonth += 12;
      -			drawYear--;
      -		}
      -		if ( maxDate ) {
      -			maxDraw = this._daylightSavingAdjust( new Date( maxDate.getFullYear(),
      -				maxDate.getMonth() - ( numMonths[ 0 ] * numMonths[ 1 ] ) + 1, maxDate.getDate() ) );
      -			maxDraw = ( minDate && maxDraw < minDate ? minDate : maxDraw );
      -			while ( this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 ) ) > maxDraw ) {
      -				drawMonth--;
      -				if ( drawMonth < 0 ) {
      -					drawMonth = 11;
      -					drawYear--;
      -				}
      -			}
      -		}
      -		inst.drawMonth = drawMonth;
      -		inst.drawYear = drawYear;
      -
      -		prevText = this._get( inst, "prevText" );
      -		prevText = ( !navigationAsDateFormat ? prevText : this.formatDate( prevText,
      -			this._daylightSavingAdjust( new Date( drawYear, drawMonth - stepMonths, 1 ) ),
      -			this._getFormatConfig( inst ) ) );
      -
      -		prev = ( this._canAdjustMonth( inst, -1, drawYear, drawMonth ) ?
      -			"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click'" +
      -			" title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" :
      -			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='" + prevText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "e" : "w" ) + "'>" + prevText + "</span></a>" ) );
      -
      -		nextText = this._get( inst, "nextText" );
      -		nextText = ( !navigationAsDateFormat ? nextText : this.formatDate( nextText,
      -			this._daylightSavingAdjust( new Date( drawYear, drawMonth + stepMonths, 1 ) ),
      -			this._getFormatConfig( inst ) ) );
      -
      -		next = ( this._canAdjustMonth( inst, +1, drawYear, drawMonth ) ?
      -			"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click'" +
      -			" title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" :
      -			( hideIfNoPrevNext ? "" : "<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='" + nextText + "'><span class='ui-icon ui-icon-circle-triangle-" + ( isRTL ? "w" : "e" ) + "'>" + nextText + "</span></a>" ) );
      -
      -		currentText = this._get( inst, "currentText" );
      -		gotoDate = ( this._get( inst, "gotoCurrent" ) && inst.currentDay ? currentDate : today );
      -		currentText = ( !navigationAsDateFormat ? currentText :
      -			this.formatDate( currentText, gotoDate, this._getFormatConfig( inst ) ) );
      -
      -		controls = ( !inst.inline ? "<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>" +
      -			this._get( inst, "closeText" ) + "</button>" : "" );
      -
      -		buttonPanel = ( showButtonPanel ) ? "<div class='ui-datepicker-buttonpane ui-widget-content'>" + ( isRTL ? controls : "" ) +
      -			( this._isInRange( inst, gotoDate ) ? "<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'" +
      -			">" + currentText + "</button>" : "" ) + ( isRTL ? "" : controls ) + "</div>" : "";
      -
      -		firstDay = parseInt( this._get( inst, "firstDay" ), 10 );
      -		firstDay = ( isNaN( firstDay ) ? 0 : firstDay );
      -
      -		showWeek = this._get( inst, "showWeek" );
      -		dayNames = this._get( inst, "dayNames" );
      -		dayNamesMin = this._get( inst, "dayNamesMin" );
      -		monthNames = this._get( inst, "monthNames" );
      -		monthNamesShort = this._get( inst, "monthNamesShort" );
      -		beforeShowDay = this._get( inst, "beforeShowDay" );
      -		showOtherMonths = this._get( inst, "showOtherMonths" );
      -		selectOtherMonths = this._get( inst, "selectOtherMonths" );
      -		defaultDate = this._getDefaultDate( inst );
      -		html = "";
      -
      -		for ( row = 0; row < numMonths[ 0 ]; row++ ) {
      -			group = "";
      -			this.maxRows = 4;
      -			for ( col = 0; col < numMonths[ 1 ]; col++ ) {
      -				selectedDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, inst.selectedDay ) );
      -				cornerClass = " ui-corner-all";
      -				calender = "";
      -				if ( isMultiMonth ) {
      -					calender += "<div class='ui-datepicker-group";
      -					if ( numMonths[ 1 ] > 1 ) {
      -						switch ( col ) {
      -							case 0: calender += " ui-datepicker-group-first";
      -								cornerClass = " ui-corner-" + ( isRTL ? "right" : "left" ); break;
      -							case numMonths[ 1 ] - 1: calender += " ui-datepicker-group-last";
      -								cornerClass = " ui-corner-" + ( isRTL ? "left" : "right" ); break;
      -							default: calender += " ui-datepicker-group-middle"; cornerClass = ""; break;
      -						}
      -					}
      -					calender += "'>";
      -				}
      -				calender += "<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix" + cornerClass + "'>" +
      -					( /all|left/.test( cornerClass ) && row === 0 ? ( isRTL ? next : prev ) : "" ) +
      -					( /all|right/.test( cornerClass ) && row === 0 ? ( isRTL ? prev : next ) : "" ) +
      -					this._generateMonthYearHeader( inst, drawMonth, drawYear, minDate, maxDate,
      -					row > 0 || col > 0, monthNames, monthNamesShort ) + // draw month headers
      -					"</div><table class='ui-datepicker-calendar'><thead>" +
      -					"<tr>";
      -				thead = ( showWeek ? "<th class='ui-datepicker-week-col'>" + this._get( inst, "weekHeader" ) + "</th>" : "" );
      -				for ( dow = 0; dow < 7; dow++ ) { // days of the week
      -					day = ( dow + firstDay ) % 7;
      -					thead += "<th scope='col'" + ( ( dow + firstDay + 6 ) % 7 >= 5 ? " class='ui-datepicker-week-end'" : "" ) + ">" +
      -						"<span title='" + dayNames[ day ] + "'>" + dayNamesMin[ day ] + "</span></th>";
      -				}
      -				calender += thead + "</tr></thead><tbody>";
      -				daysInMonth = this._getDaysInMonth( drawYear, drawMonth );
      -				if ( drawYear === inst.selectedYear && drawMonth === inst.selectedMonth ) {
      -					inst.selectedDay = Math.min( inst.selectedDay, daysInMonth );
      -				}
      -				leadDays = ( this._getFirstDayOfMonth( drawYear, drawMonth ) - firstDay + 7 ) % 7;
      -				curRows = Math.ceil( ( leadDays + daysInMonth ) / 7 ); // calculate the number of rows to generate
      -				numRows = ( isMultiMonth ? this.maxRows > curRows ? this.maxRows : curRows : curRows ); //If multiple months, use the higher number of rows (see #7043)
      -				this.maxRows = numRows;
      -				printDate = this._daylightSavingAdjust( new Date( drawYear, drawMonth, 1 - leadDays ) );
      -				for ( dRow = 0; dRow < numRows; dRow++ ) { // create date picker rows
      -					calender += "<tr>";
      -					tbody = ( !showWeek ? "" : "<td class='ui-datepicker-week-col'>" +
      -						this._get( inst, "calculateWeek" )( printDate ) + "</td>" );
      -					for ( dow = 0; dow < 7; dow++ ) { // create date picker days
      -						daySettings = ( beforeShowDay ?
      -							beforeShowDay.apply( ( inst.input ? inst.input[ 0 ] : null ), [ printDate ] ) : [ true, "" ] );
      -						otherMonth = ( printDate.getMonth() !== drawMonth );
      -						unselectable = ( otherMonth && !selectOtherMonths ) || !daySettings[ 0 ] ||
      -							( minDate && printDate < minDate ) || ( maxDate && printDate > maxDate );
      -						tbody += "<td class='" +
      -							( ( dow + firstDay + 6 ) % 7 >= 5 ? " ui-datepicker-week-end" : "" ) + // highlight weekends
      -							( otherMonth ? " ui-datepicker-other-month" : "" ) + // highlight days from other months
      -							( ( printDate.getTime() === selectedDate.getTime() && drawMonth === inst.selectedMonth && inst._keyEvent ) || // user pressed key
      -							( defaultDate.getTime() === printDate.getTime() && defaultDate.getTime() === selectedDate.getTime() ) ?
      -
      -							// or defaultDate is current printedDate and defaultDate is selectedDate
      -							" " + this._dayOverClass : "" ) + // highlight selected day
      -							( unselectable ? " " + this._unselectableClass + " ui-state-disabled" : "" ) +  // highlight unselectable days
      -							( otherMonth && !showOtherMonths ? "" : " " + daySettings[ 1 ] + // highlight custom dates
      -							( printDate.getTime() === currentDate.getTime() ? " " + this._currentClass : "" ) + // highlight selected day
      -							( printDate.getTime() === today.getTime() ? " ui-datepicker-today" : "" ) ) + "'" + // highlight today (if different)
      -							( ( !otherMonth || showOtherMonths ) && daySettings[ 2 ] ? " title='" + daySettings[ 2 ].replace( /'/g, "&#39;" ) + "'" : "" ) + // cell title
      -							( unselectable ? "" : " data-handler='selectDay' data-event='click' data-month='" + printDate.getMonth() + "' data-year='" + printDate.getFullYear() + "'" ) + ">" + // actions
      -							( otherMonth && !showOtherMonths ? "&#xa0;" : // display for other months
      -							( unselectable ? "<span class='ui-state-default'>" + printDate.getDate() + "</span>" : "<a class='ui-state-default" +
      -							( printDate.getTime() === today.getTime() ? " ui-state-highlight" : "" ) +
      -							( printDate.getTime() === currentDate.getTime() ? " ui-state-active" : "" ) + // highlight selected day
      -							( otherMonth ? " ui-priority-secondary" : "" ) + // distinguish dates from other months
      -							"' href='#'>" + printDate.getDate() + "</a>" ) ) + "</td>"; // display selectable date
      -						printDate.setDate( printDate.getDate() + 1 );
      -						printDate = this._daylightSavingAdjust( printDate );
      -					}
      -					calender += tbody + "</tr>";
      -				}
      -				drawMonth++;
      -				if ( drawMonth > 11 ) {
      -					drawMonth = 0;
      -					drawYear++;
      -				}
      -				calender += "</tbody></table>" + ( isMultiMonth ? "</div>" +
      -							( ( numMonths[ 0 ] > 0 && col === numMonths[ 1 ] - 1 ) ? "<div class='ui-datepicker-row-break'></div>" : "" ) : "" );
      -				group += calender;
      -			}
      -			html += group;
      -		}
      -		html += buttonPanel;
      -		inst._keyEvent = false;
      -		return html;
      -	},
      -
      -	/* Generate the month and year header. */
      -	_generateMonthYearHeader: function( inst, drawMonth, drawYear, minDate, maxDate,
      -			secondary, monthNames, monthNamesShort ) {
      -
      -		var inMinYear, inMaxYear, month, years, thisYear, determineYear, year, endYear,
      -			changeMonth = this._get( inst, "changeMonth" ),
      -			changeYear = this._get( inst, "changeYear" ),
      -			showMonthAfterYear = this._get( inst, "showMonthAfterYear" ),
      -			html = "<div class='ui-datepicker-title'>",
      -			monthHtml = "";
      -
      -		// Month selection
      -		if ( secondary || !changeMonth ) {
      -			monthHtml += "<span class='ui-datepicker-month'>" + monthNames[ drawMonth ] + "</span>";
      -		} else {
      -			inMinYear = ( minDate && minDate.getFullYear() === drawYear );
      -			inMaxYear = ( maxDate && maxDate.getFullYear() === drawYear );
      -			monthHtml += "<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";
      -			for ( month = 0; month < 12; month++ ) {
      -				if ( ( !inMinYear || month >= minDate.getMonth() ) && ( !inMaxYear || month <= maxDate.getMonth() ) ) {
      -					monthHtml += "<option value='" + month + "'" +
      -						( month === drawMonth ? " selected='selected'" : "" ) +
      -						">" + monthNamesShort[ month ] + "</option>";
      -				}
      -			}
      -			monthHtml += "</select>";
      -		}
      -
      -		if ( !showMonthAfterYear ) {
      -			html += monthHtml + ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" );
      -		}
      -
      -		// Year selection
      -		if ( !inst.yearshtml ) {
      -			inst.yearshtml = "";
      -			if ( secondary || !changeYear ) {
      -				html += "<span class='ui-datepicker-year'>" + drawYear + "</span>";
      -			} else {
      -
      -				// determine range of years to display
      -				years = this._get( inst, "yearRange" ).split( ":" );
      -				thisYear = new Date().getFullYear();
      -				determineYear = function( value ) {
      -					var year = ( value.match( /c[+\-].*/ ) ? drawYear + parseInt( value.substring( 1 ), 10 ) :
      -						( value.match( /[+\-].*/ ) ? thisYear + parseInt( value, 10 ) :
      -						parseInt( value, 10 ) ) );
      -					return ( isNaN( year ) ? thisYear : year );
      -				};
      -				year = determineYear( years[ 0 ] );
      -				endYear = Math.max( year, determineYear( years[ 1 ] || "" ) );
      -				year = ( minDate ? Math.max( year, minDate.getFullYear() ) : year );
      -				endYear = ( maxDate ? Math.min( endYear, maxDate.getFullYear() ) : endYear );
      -				inst.yearshtml += "<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";
      -				for ( ; year <= endYear; year++ ) {
      -					inst.yearshtml += "<option value='" + year + "'" +
      -						( year === drawYear ? " selected='selected'" : "" ) +
      -						">" + year + "</option>";
      -				}
      -				inst.yearshtml += "</select>";
      -
      -				html += inst.yearshtml;
      -				inst.yearshtml = null;
      -			}
      -		}
      -
      -		html += this._get( inst, "yearSuffix" );
      -		if ( showMonthAfterYear ) {
      -			html += ( secondary || !( changeMonth && changeYear ) ? "&#xa0;" : "" ) + monthHtml;
      -		}
      -		html += "</div>"; // Close datepicker_header
      -		return html;
      -	},
      -
      -	/* Adjust one of the date sub-fields. */
      -	_adjustInstDate: function( inst, offset, period ) {
      -		var year = inst.selectedYear + ( period === "Y" ? offset : 0 ),
      -			month = inst.selectedMonth + ( period === "M" ? offset : 0 ),
      -			day = Math.min( inst.selectedDay, this._getDaysInMonth( year, month ) ) + ( period === "D" ? offset : 0 ),
      -			date = this._restrictMinMax( inst, this._daylightSavingAdjust( new Date( year, month, day ) ) );
      -
      -		inst.selectedDay = date.getDate();
      -		inst.drawMonth = inst.selectedMonth = date.getMonth();
      -		inst.drawYear = inst.selectedYear = date.getFullYear();
      -		if ( period === "M" || period === "Y" ) {
      -			this._notifyChange( inst );
      -		}
      -	},
      -
      -	/* Ensure a date is within any min/max bounds. */
      -	_restrictMinMax: function( inst, date ) {
      -		var minDate = this._getMinMaxDate( inst, "min" ),
      -			maxDate = this._getMinMaxDate( inst, "max" ),
      -			newDate = ( minDate && date < minDate ? minDate : date );
      -		return ( maxDate && newDate > maxDate ? maxDate : newDate );
      -	},
      -
      -	/* Notify change of month/year. */
      -	_notifyChange: function( inst ) {
      -		var onChange = this._get( inst, "onChangeMonthYear" );
      -		if ( onChange ) {
      -			onChange.apply( ( inst.input ? inst.input[ 0 ] : null ),
      -				[ inst.selectedYear, inst.selectedMonth + 1, inst ] );
      -		}
      -	},
      -
      -	/* Determine the number of months to show. */
      -	_getNumberOfMonths: function( inst ) {
      -		var numMonths = this._get( inst, "numberOfMonths" );
      -		return ( numMonths == null ? [ 1, 1 ] : ( typeof numMonths === "number" ? [ 1, numMonths ] : numMonths ) );
      -	},
      -
      -	/* Determine the current maximum date - ensure no time components are set. */
      -	_getMinMaxDate: function( inst, minMax ) {
      -		return this._determineDate( inst, this._get( inst, minMax + "Date" ), null );
      -	},
      -
      -	/* Find the number of days in a given month. */
      -	_getDaysInMonth: function( year, month ) {
      -		return 32 - this._daylightSavingAdjust( new Date( year, month, 32 ) ).getDate();
      -	},
      -
      -	/* Find the day of the week of the first of a month. */
      -	_getFirstDayOfMonth: function( year, month ) {
      -		return new Date( year, month, 1 ).getDay();
      -	},
      -
      -	/* Determines if we should allow a "next/prev" month display change. */
      -	_canAdjustMonth: function( inst, offset, curYear, curMonth ) {
      -		var numMonths = this._getNumberOfMonths( inst ),
      -			date = this._daylightSavingAdjust( new Date( curYear,
      -			curMonth + ( offset < 0 ? offset : numMonths[ 0 ] * numMonths[ 1 ] ), 1 ) );
      -
      -		if ( offset < 0 ) {
      -			date.setDate( this._getDaysInMonth( date.getFullYear(), date.getMonth() ) );
      -		}
      -		return this._isInRange( inst, date );
      -	},
      -
      -	/* Is the given date in the accepted range? */
      -	_isInRange: function( inst, date ) {
      -		var yearSplit, currentYear,
      -			minDate = this._getMinMaxDate( inst, "min" ),
      -			maxDate = this._getMinMaxDate( inst, "max" ),
      -			minYear = null,
      -			maxYear = null,
      -			years = this._get( inst, "yearRange" );
      -			if ( years ) {
      -				yearSplit = years.split( ":" );
      -				currentYear = new Date().getFullYear();
      -				minYear = parseInt( yearSplit[ 0 ], 10 );
      -				maxYear = parseInt( yearSplit[ 1 ], 10 );
      -				if ( yearSplit[ 0 ].match( /[+\-].*/ ) ) {
      -					minYear += currentYear;
      -				}
      -				if ( yearSplit[ 1 ].match( /[+\-].*/ ) ) {
      -					maxYear += currentYear;
      -				}
      -			}
      -
      -		return ( ( !minDate || date.getTime() >= minDate.getTime() ) &&
      -			( !maxDate || date.getTime() <= maxDate.getTime() ) &&
      -			( !minYear || date.getFullYear() >= minYear ) &&
      -			( !maxYear || date.getFullYear() <= maxYear ) );
      -	},
      -
      -	/* Provide the configuration settings for formatting/parsing. */
      -	_getFormatConfig: function( inst ) {
      -		var shortYearCutoff = this._get( inst, "shortYearCutoff" );
      -		shortYearCutoff = ( typeof shortYearCutoff !== "string" ? shortYearCutoff :
      -			new Date().getFullYear() % 100 + parseInt( shortYearCutoff, 10 ) );
      -		return { shortYearCutoff: shortYearCutoff,
      -			dayNamesShort: this._get( inst, "dayNamesShort" ), dayNames: this._get( inst, "dayNames" ),
      -			monthNamesShort: this._get( inst, "monthNamesShort" ), monthNames: this._get( inst, "monthNames" ) };
      -	},
      -
      -	/* Format the given date for display. */
      -	_formatDate: function( inst, day, month, year ) {
      -		if ( !day ) {
      -			inst.currentDay = inst.selectedDay;
      -			inst.currentMonth = inst.selectedMonth;
      -			inst.currentYear = inst.selectedYear;
      -		}
      -		var date = ( day ? ( typeof day === "object" ? day :
      -			this._daylightSavingAdjust( new Date( year, month, day ) ) ) :
      -			this._daylightSavingAdjust( new Date( inst.currentYear, inst.currentMonth, inst.currentDay ) ) );
      -		return this.formatDate( this._get( inst, "dateFormat" ), date, this._getFormatConfig( inst ) );
      -	}
      -} );
      -
      -/*
      - * Bind hover events for datepicker elements.
      - * Done via delegate so the binding only occurs once in the lifetime of the parent div.
      - * Global datepicker_instActive, set by _updateDatepicker allows the handlers to find their way back to the active picker.
      - */
      -function datepicker_bindHover( dpDiv ) {
      -	var selector = "button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";
      -	return dpDiv.on( "mouseout", selector, function() {
      -			$( this ).removeClass( "ui-state-hover" );
      -			if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
      -				$( this ).removeClass( "ui-datepicker-prev-hover" );
      -			}
      -			if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
      -				$( this ).removeClass( "ui-datepicker-next-hover" );
      -			}
      -		} )
      -		.on( "mouseover", selector, datepicker_handleMouseover );
      -}
      -
      -function datepicker_handleMouseover() {
      -	if ( !$.datepicker._isDisabledDatepicker( datepicker_instActive.inline ? datepicker_instActive.dpDiv.parent()[ 0 ] : datepicker_instActive.input[ 0 ] ) ) {
      -		$( this ).parents( ".ui-datepicker-calendar" ).find( "a" ).removeClass( "ui-state-hover" );
      -		$( this ).addClass( "ui-state-hover" );
      -		if ( this.className.indexOf( "ui-datepicker-prev" ) !== -1 ) {
      -			$( this ).addClass( "ui-datepicker-prev-hover" );
      -		}
      -		if ( this.className.indexOf( "ui-datepicker-next" ) !== -1 ) {
      -			$( this ).addClass( "ui-datepicker-next-hover" );
      -		}
      -	}
      -}
      -
      -/* jQuery extend now ignores nulls! */
      -function datepicker_extendRemove( target, props ) {
      -	$.extend( target, props );
      -	for ( var name in props ) {
      -		if ( props[ name ] == null ) {
      -			target[ name ] = props[ name ];
      -		}
      -	}
      -	return target;
      -}
      -
      -/* Invoke the datepicker functionality.
      -   @param  options  string - a command, optionally followed by additional parameters or
      -					Object - settings for attaching new datepicker functionality
      -   @return  jQuery object */
      -$.fn.datepicker = function( options ) {
      -
      -	/* Verify an empty collection wasn't passed - Fixes #6976 */
      -	if ( !this.length ) {
      -		return this;
      -	}
      -
      -	/* Initialise the date picker. */
      -	if ( !$.datepicker.initialized ) {
      -		$( document ).on( "mousedown", $.datepicker._checkExternalClick );
      -		$.datepicker.initialized = true;
      -	}
      -
      -	/* Append datepicker main container to body if not exist. */
      -	if ( $( "#" + $.datepicker._mainDivId ).length === 0 ) {
      -		$( "body" ).append( $.datepicker.dpDiv );
      -	}
      -
      -	var otherArgs = Array.prototype.slice.call( arguments, 1 );
      -	if ( typeof options === "string" && ( options === "isDisabled" || options === "getDate" || options === "widget" ) ) {
      -		return $.datepicker[ "_" + options + "Datepicker" ].
      -			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
      -	}
      -	if ( options === "option" && arguments.length === 2 && typeof arguments[ 1 ] === "string" ) {
      -		return $.datepicker[ "_" + options + "Datepicker" ].
      -			apply( $.datepicker, [ this[ 0 ] ].concat( otherArgs ) );
      -	}
      -	return this.each( function() {
      -		typeof options === "string" ?
      -			$.datepicker[ "_" + options + "Datepicker" ].
      -				apply( $.datepicker, [ this ].concat( otherArgs ) ) :
      -			$.datepicker._attachDatepicker( this, options );
      -	} );
      -};
      -
      -$.datepicker = new Datepicker(); // singleton instance
      -$.datepicker.initialized = false;
      -$.datepicker.uuid = new Date().getTime();
      -$.datepicker.version = "1.12.1";
      -
      -return $.datepicker;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/dialog.js b/bower_components/jquery-ui/ui/widgets/dialog.js
      deleted file mode 100644
      index 27dccd2ad9..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/dialog.js
      +++ /dev/null
      @@ -1,940 +0,0 @@
      -/*!
      - * jQuery UI Dialog 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Dialog
      -//>>group: Widgets
      -//>>description: Displays customizable dialog windows.
      -//>>docs: http://api.jqueryui.com/dialog/
      -//>>demos: http://jqueryui.com/dialog/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/dialog.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./button",
      -			"./draggable",
      -			"./mouse",
      -			"./resizable",
      -			"../focusable",
      -			"../keycode",
      -			"../position",
      -			"../safe-active-element",
      -			"../safe-blur",
      -			"../tabbable",
      -			"../unique-id",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.dialog", {
      -	version: "1.12.1",
      -	options: {
      -		appendTo: "body",
      -		autoOpen: true,
      -		buttons: [],
      -		classes: {
      -			"ui-dialog": "ui-corner-all",
      -			"ui-dialog-titlebar": "ui-corner-all"
      -		},
      -		closeOnEscape: true,
      -		closeText: "Close",
      -		draggable: true,
      -		hide: null,
      -		height: "auto",
      -		maxHeight: null,
      -		maxWidth: null,
      -		minHeight: 150,
      -		minWidth: 150,
      -		modal: false,
      -		position: {
      -			my: "center",
      -			at: "center",
      -			of: window,
      -			collision: "fit",
      -
      -			// Ensure the titlebar is always visible
      -			using: function( pos ) {
      -				var topOffset = $( this ).css( pos ).offset().top;
      -				if ( topOffset < 0 ) {
      -					$( this ).css( "top", pos.top - topOffset );
      -				}
      -			}
      -		},
      -		resizable: true,
      -		show: null,
      -		title: null,
      -		width: 300,
      -
      -		// Callbacks
      -		beforeClose: null,
      -		close: null,
      -		drag: null,
      -		dragStart: null,
      -		dragStop: null,
      -		focus: null,
      -		open: null,
      -		resize: null,
      -		resizeStart: null,
      -		resizeStop: null
      -	},
      -
      -	sizeRelatedOptions: {
      -		buttons: true,
      -		height: true,
      -		maxHeight: true,
      -		maxWidth: true,
      -		minHeight: true,
      -		minWidth: true,
      -		width: true
      -	},
      -
      -	resizableRelatedOptions: {
      -		maxHeight: true,
      -		maxWidth: true,
      -		minHeight: true,
      -		minWidth: true
      -	},
      -
      -	_create: function() {
      -		this.originalCss = {
      -			display: this.element[ 0 ].style.display,
      -			width: this.element[ 0 ].style.width,
      -			minHeight: this.element[ 0 ].style.minHeight,
      -			maxHeight: this.element[ 0 ].style.maxHeight,
      -			height: this.element[ 0 ].style.height
      -		};
      -		this.originalPosition = {
      -			parent: this.element.parent(),
      -			index: this.element.parent().children().index( this.element )
      -		};
      -		this.originalTitle = this.element.attr( "title" );
      -		if ( this.options.title == null && this.originalTitle != null ) {
      -			this.options.title = this.originalTitle;
      -		}
      -
      -		// Dialogs can't be disabled
      -		if ( this.options.disabled ) {
      -			this.options.disabled = false;
      -		}
      -
      -		this._createWrapper();
      -
      -		this.element
      -			.show()
      -			.removeAttr( "title" )
      -			.appendTo( this.uiDialog );
      -
      -		this._addClass( "ui-dialog-content", "ui-widget-content" );
      -
      -		this._createTitlebar();
      -		this._createButtonPane();
      -
      -		if ( this.options.draggable && $.fn.draggable ) {
      -			this._makeDraggable();
      -		}
      -		if ( this.options.resizable && $.fn.resizable ) {
      -			this._makeResizable();
      -		}
      -
      -		this._isOpen = false;
      -
      -		this._trackFocus();
      -	},
      -
      -	_init: function() {
      -		if ( this.options.autoOpen ) {
      -			this.open();
      -		}
      -	},
      -
      -	_appendTo: function() {
      -		var element = this.options.appendTo;
      -		if ( element && ( element.jquery || element.nodeType ) ) {
      -			return $( element );
      -		}
      -		return this.document.find( element || "body" ).eq( 0 );
      -	},
      -
      -	_destroy: function() {
      -		var next,
      -			originalPosition = this.originalPosition;
      -
      -		this._untrackInstance();
      -		this._destroyOverlay();
      -
      -		this.element
      -			.removeUniqueId()
      -			.css( this.originalCss )
      -
      -			// Without detaching first, the following becomes really slow
      -			.detach();
      -
      -		this.uiDialog.remove();
      -
      -		if ( this.originalTitle ) {
      -			this.element.attr( "title", this.originalTitle );
      -		}
      -
      -		next = originalPosition.parent.children().eq( originalPosition.index );
      -
      -		// Don't try to place the dialog next to itself (#8613)
      -		if ( next.length && next[ 0 ] !== this.element[ 0 ] ) {
      -			next.before( this.element );
      -		} else {
      -			originalPosition.parent.append( this.element );
      -		}
      -	},
      -
      -	widget: function() {
      -		return this.uiDialog;
      -	},
      -
      -	disable: $.noop,
      -	enable: $.noop,
      -
      -	close: function( event ) {
      -		var that = this;
      -
      -		if ( !this._isOpen || this._trigger( "beforeClose", event ) === false ) {
      -			return;
      -		}
      -
      -		this._isOpen = false;
      -		this._focusedElement = null;
      -		this._destroyOverlay();
      -		this._untrackInstance();
      -
      -		if ( !this.opener.filter( ":focusable" ).trigger( "focus" ).length ) {
      -
      -			// Hiding a focused element doesn't trigger blur in WebKit
      -			// so in case we have nothing to focus on, explicitly blur the active element
      -			// https://bugs.webkit.org/show_bug.cgi?id=47182
      -			$.ui.safeBlur( $.ui.safeActiveElement( this.document[ 0 ] ) );
      -		}
      -
      -		this._hide( this.uiDialog, this.options.hide, function() {
      -			that._trigger( "close", event );
      -		} );
      -	},
      -
      -	isOpen: function() {
      -		return this._isOpen;
      -	},
      -
      -	moveToTop: function() {
      -		this._moveToTop();
      -	},
      -
      -	_moveToTop: function( event, silent ) {
      -		var moved = false,
      -			zIndices = this.uiDialog.siblings( ".ui-front:visible" ).map( function() {
      -				return +$( this ).css( "z-index" );
      -			} ).get(),
      -			zIndexMax = Math.max.apply( null, zIndices );
      -
      -		if ( zIndexMax >= +this.uiDialog.css( "z-index" ) ) {
      -			this.uiDialog.css( "z-index", zIndexMax + 1 );
      -			moved = true;
      -		}
      -
      -		if ( moved && !silent ) {
      -			this._trigger( "focus", event );
      -		}
      -		return moved;
      -	},
      -
      -	open: function() {
      -		var that = this;
      -		if ( this._isOpen ) {
      -			if ( this._moveToTop() ) {
      -				this._focusTabbable();
      -			}
      -			return;
      -		}
      -
      -		this._isOpen = true;
      -		this.opener = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
      -
      -		this._size();
      -		this._position();
      -		this._createOverlay();
      -		this._moveToTop( null, true );
      -
      -		// Ensure the overlay is moved to the top with the dialog, but only when
      -		// opening. The overlay shouldn't move after the dialog is open so that
      -		// modeless dialogs opened after the modal dialog stack properly.
      -		if ( this.overlay ) {
      -			this.overlay.css( "z-index", this.uiDialog.css( "z-index" ) - 1 );
      -		}
      -
      -		this._show( this.uiDialog, this.options.show, function() {
      -			that._focusTabbable();
      -			that._trigger( "focus" );
      -		} );
      -
      -		// Track the dialog immediately upon openening in case a focus event
      -		// somehow occurs outside of the dialog before an element inside the
      -		// dialog is focused (#10152)
      -		this._makeFocusTarget();
      -
      -		this._trigger( "open" );
      -	},
      -
      -	_focusTabbable: function() {
      -
      -		// Set focus to the first match:
      -		// 1. An element that was focused previously
      -		// 2. First element inside the dialog matching [autofocus]
      -		// 3. Tabbable element inside the content element
      -		// 4. Tabbable element inside the buttonpane
      -		// 5. The close button
      -		// 6. The dialog itself
      -		var hasFocus = this._focusedElement;
      -		if ( !hasFocus ) {
      -			hasFocus = this.element.find( "[autofocus]" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.element.find( ":tabbable" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.uiDialogButtonPane.find( ":tabbable" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.uiDialogTitlebarClose.filter( ":tabbable" );
      -		}
      -		if ( !hasFocus.length ) {
      -			hasFocus = this.uiDialog;
      -		}
      -		hasFocus.eq( 0 ).trigger( "focus" );
      -	},
      -
      -	_keepFocus: function( event ) {
      -		function checkFocus() {
      -			var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
      -				isActive = this.uiDialog[ 0 ] === activeElement ||
      -					$.contains( this.uiDialog[ 0 ], activeElement );
      -			if ( !isActive ) {
      -				this._focusTabbable();
      -			}
      -		}
      -		event.preventDefault();
      -		checkFocus.call( this );
      -
      -		// support: IE
      -		// IE <= 8 doesn't prevent moving focus even with event.preventDefault()
      -		// so we check again later
      -		this._delay( checkFocus );
      -	},
      -
      -	_createWrapper: function() {
      -		this.uiDialog = $( "<div>" )
      -			.hide()
      -			.attr( {
      -
      -				// Setting tabIndex makes the div focusable
      -				tabIndex: -1,
      -				role: "dialog"
      -			} )
      -			.appendTo( this._appendTo() );
      -
      -		this._addClass( this.uiDialog, "ui-dialog", "ui-widget ui-widget-content ui-front" );
      -		this._on( this.uiDialog, {
      -			keydown: function( event ) {
      -				if ( this.options.closeOnEscape && !event.isDefaultPrevented() && event.keyCode &&
      -						event.keyCode === $.ui.keyCode.ESCAPE ) {
      -					event.preventDefault();
      -					this.close( event );
      -					return;
      -				}
      -
      -				// Prevent tabbing out of dialogs
      -				if ( event.keyCode !== $.ui.keyCode.TAB || event.isDefaultPrevented() ) {
      -					return;
      -				}
      -				var tabbables = this.uiDialog.find( ":tabbable" ),
      -					first = tabbables.filter( ":first" ),
      -					last = tabbables.filter( ":last" );
      -
      -				if ( ( event.target === last[ 0 ] || event.target === this.uiDialog[ 0 ] ) &&
      -						!event.shiftKey ) {
      -					this._delay( function() {
      -						first.trigger( "focus" );
      -					} );
      -					event.preventDefault();
      -				} else if ( ( event.target === first[ 0 ] ||
      -						event.target === this.uiDialog[ 0 ] ) && event.shiftKey ) {
      -					this._delay( function() {
      -						last.trigger( "focus" );
      -					} );
      -					event.preventDefault();
      -				}
      -			},
      -			mousedown: function( event ) {
      -				if ( this._moveToTop( event ) ) {
      -					this._focusTabbable();
      -				}
      -			}
      -		} );
      -
      -		// We assume that any existing aria-describedby attribute means
      -		// that the dialog content is marked up properly
      -		// otherwise we brute force the content as the description
      -		if ( !this.element.find( "[aria-describedby]" ).length ) {
      -			this.uiDialog.attr( {
      -				"aria-describedby": this.element.uniqueId().attr( "id" )
      -			} );
      -		}
      -	},
      -
      -	_createTitlebar: function() {
      -		var uiDialogTitle;
      -
      -		this.uiDialogTitlebar = $( "<div>" );
      -		this._addClass( this.uiDialogTitlebar,
      -			"ui-dialog-titlebar", "ui-widget-header ui-helper-clearfix" );
      -		this._on( this.uiDialogTitlebar, {
      -			mousedown: function( event ) {
      -
      -				// Don't prevent click on close button (#8838)
      -				// Focusing a dialog that is partially scrolled out of view
      -				// causes the browser to scroll it into view, preventing the click event
      -				if ( !$( event.target ).closest( ".ui-dialog-titlebar-close" ) ) {
      -
      -					// Dialog isn't getting focus when dragging (#8063)
      -					this.uiDialog.trigger( "focus" );
      -				}
      -			}
      -		} );
      -
      -		// Support: IE
      -		// Use type="button" to prevent enter keypresses in textboxes from closing the
      -		// dialog in IE (#9312)
      -		this.uiDialogTitlebarClose = $( "<button type='button'></button>" )
      -			.button( {
      -				label: $( "<a>" ).text( this.options.closeText ).html(),
      -				icon: "ui-icon-closethick",
      -				showLabel: false
      -			} )
      -			.appendTo( this.uiDialogTitlebar );
      -
      -		this._addClass( this.uiDialogTitlebarClose, "ui-dialog-titlebar-close" );
      -		this._on( this.uiDialogTitlebarClose, {
      -			click: function( event ) {
      -				event.preventDefault();
      -				this.close( event );
      -			}
      -		} );
      -
      -		uiDialogTitle = $( "<span>" ).uniqueId().prependTo( this.uiDialogTitlebar );
      -		this._addClass( uiDialogTitle, "ui-dialog-title" );
      -		this._title( uiDialogTitle );
      -
      -		this.uiDialogTitlebar.prependTo( this.uiDialog );
      -
      -		this.uiDialog.attr( {
      -			"aria-labelledby": uiDialogTitle.attr( "id" )
      -		} );
      -	},
      -
      -	_title: function( title ) {
      -		if ( this.options.title ) {
      -			title.text( this.options.title );
      -		} else {
      -			title.html( "&#160;" );
      -		}
      -	},
      -
      -	_createButtonPane: function() {
      -		this.uiDialogButtonPane = $( "<div>" );
      -		this._addClass( this.uiDialogButtonPane, "ui-dialog-buttonpane",
      -			"ui-widget-content ui-helper-clearfix" );
      -
      -		this.uiButtonSet = $( "<div>" )
      -			.appendTo( this.uiDialogButtonPane );
      -		this._addClass( this.uiButtonSet, "ui-dialog-buttonset" );
      -
      -		this._createButtons();
      -	},
      -
      -	_createButtons: function() {
      -		var that = this,
      -			buttons = this.options.buttons;
      -
      -		// If we already have a button pane, remove it
      -		this.uiDialogButtonPane.remove();
      -		this.uiButtonSet.empty();
      -
      -		if ( $.isEmptyObject( buttons ) || ( $.isArray( buttons ) && !buttons.length ) ) {
      -			this._removeClass( this.uiDialog, "ui-dialog-buttons" );
      -			return;
      -		}
      -
      -		$.each( buttons, function( name, props ) {
      -			var click, buttonOptions;
      -			props = $.isFunction( props ) ?
      -				{ click: props, text: name } :
      -				props;
      -
      -			// Default to a non-submitting button
      -			props = $.extend( { type: "button" }, props );
      -
      -			// Change the context for the click callback to be the main element
      -			click = props.click;
      -			buttonOptions = {
      -				icon: props.icon,
      -				iconPosition: props.iconPosition,
      -				showLabel: props.showLabel,
      -
      -				// Deprecated options
      -				icons: props.icons,
      -				text: props.text
      -			};
      -
      -			delete props.click;
      -			delete props.icon;
      -			delete props.iconPosition;
      -			delete props.showLabel;
      -
      -			// Deprecated options
      -			delete props.icons;
      -			if ( typeof props.text === "boolean" ) {
      -				delete props.text;
      -			}
      -
      -			$( "<button></button>", props )
      -				.button( buttonOptions )
      -				.appendTo( that.uiButtonSet )
      -				.on( "click", function() {
      -					click.apply( that.element[ 0 ], arguments );
      -				} );
      -		} );
      -		this._addClass( this.uiDialog, "ui-dialog-buttons" );
      -		this.uiDialogButtonPane.appendTo( this.uiDialog );
      -	},
      -
      -	_makeDraggable: function() {
      -		var that = this,
      -			options = this.options;
      -
      -		function filteredUi( ui ) {
      -			return {
      -				position: ui.position,
      -				offset: ui.offset
      -			};
      -		}
      -
      -		this.uiDialog.draggable( {
      -			cancel: ".ui-dialog-content, .ui-dialog-titlebar-close",
      -			handle: ".ui-dialog-titlebar",
      -			containment: "document",
      -			start: function( event, ui ) {
      -				that._addClass( $( this ), "ui-dialog-dragging" );
      -				that._blockFrames();
      -				that._trigger( "dragStart", event, filteredUi( ui ) );
      -			},
      -			drag: function( event, ui ) {
      -				that._trigger( "drag", event, filteredUi( ui ) );
      -			},
      -			stop: function( event, ui ) {
      -				var left = ui.offset.left - that.document.scrollLeft(),
      -					top = ui.offset.top - that.document.scrollTop();
      -
      -				options.position = {
      -					my: "left top",
      -					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
      -						"top" + ( top >= 0 ? "+" : "" ) + top,
      -					of: that.window
      -				};
      -				that._removeClass( $( this ), "ui-dialog-dragging" );
      -				that._unblockFrames();
      -				that._trigger( "dragStop", event, filteredUi( ui ) );
      -			}
      -		} );
      -	},
      -
      -	_makeResizable: function() {
      -		var that = this,
      -			options = this.options,
      -			handles = options.resizable,
      -
      -			// .ui-resizable has position: relative defined in the stylesheet
      -			// but dialogs have to use absolute or fixed positioning
      -			position = this.uiDialog.css( "position" ),
      -			resizeHandles = typeof handles === "string" ?
      -				handles :
      -				"n,e,s,w,se,sw,ne,nw";
      -
      -		function filteredUi( ui ) {
      -			return {
      -				originalPosition: ui.originalPosition,
      -				originalSize: ui.originalSize,
      -				position: ui.position,
      -				size: ui.size
      -			};
      -		}
      -
      -		this.uiDialog.resizable( {
      -			cancel: ".ui-dialog-content",
      -			containment: "document",
      -			alsoResize: this.element,
      -			maxWidth: options.maxWidth,
      -			maxHeight: options.maxHeight,
      -			minWidth: options.minWidth,
      -			minHeight: this._minHeight(),
      -			handles: resizeHandles,
      -			start: function( event, ui ) {
      -				that._addClass( $( this ), "ui-dialog-resizing" );
      -				that._blockFrames();
      -				that._trigger( "resizeStart", event, filteredUi( ui ) );
      -			},
      -			resize: function( event, ui ) {
      -				that._trigger( "resize", event, filteredUi( ui ) );
      -			},
      -			stop: function( event, ui ) {
      -				var offset = that.uiDialog.offset(),
      -					left = offset.left - that.document.scrollLeft(),
      -					top = offset.top - that.document.scrollTop();
      -
      -				options.height = that.uiDialog.height();
      -				options.width = that.uiDialog.width();
      -				options.position = {
      -					my: "left top",
      -					at: "left" + ( left >= 0 ? "+" : "" ) + left + " " +
      -						"top" + ( top >= 0 ? "+" : "" ) + top,
      -					of: that.window
      -				};
      -				that._removeClass( $( this ), "ui-dialog-resizing" );
      -				that._unblockFrames();
      -				that._trigger( "resizeStop", event, filteredUi( ui ) );
      -			}
      -		} )
      -			.css( "position", position );
      -	},
      -
      -	_trackFocus: function() {
      -		this._on( this.widget(), {
      -			focusin: function( event ) {
      -				this._makeFocusTarget();
      -				this._focusedElement = $( event.target );
      -			}
      -		} );
      -	},
      -
      -	_makeFocusTarget: function() {
      -		this._untrackInstance();
      -		this._trackingInstances().unshift( this );
      -	},
      -
      -	_untrackInstance: function() {
      -		var instances = this._trackingInstances(),
      -			exists = $.inArray( this, instances );
      -		if ( exists !== -1 ) {
      -			instances.splice( exists, 1 );
      -		}
      -	},
      -
      -	_trackingInstances: function() {
      -		var instances = this.document.data( "ui-dialog-instances" );
      -		if ( !instances ) {
      -			instances = [];
      -			this.document.data( "ui-dialog-instances", instances );
      -		}
      -		return instances;
      -	},
      -
      -	_minHeight: function() {
      -		var options = this.options;
      -
      -		return options.height === "auto" ?
      -			options.minHeight :
      -			Math.min( options.minHeight, options.height );
      -	},
      -
      -	_position: function() {
      -
      -		// Need to show the dialog to get the actual offset in the position plugin
      -		var isVisible = this.uiDialog.is( ":visible" );
      -		if ( !isVisible ) {
      -			this.uiDialog.show();
      -		}
      -		this.uiDialog.position( this.options.position );
      -		if ( !isVisible ) {
      -			this.uiDialog.hide();
      -		}
      -	},
      -
      -	_setOptions: function( options ) {
      -		var that = this,
      -			resize = false,
      -			resizableOptions = {};
      -
      -		$.each( options, function( key, value ) {
      -			that._setOption( key, value );
      -
      -			if ( key in that.sizeRelatedOptions ) {
      -				resize = true;
      -			}
      -			if ( key in that.resizableRelatedOptions ) {
      -				resizableOptions[ key ] = value;
      -			}
      -		} );
      -
      -		if ( resize ) {
      -			this._size();
      -			this._position();
      -		}
      -		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
      -			this.uiDialog.resizable( "option", resizableOptions );
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var isDraggable, isResizable,
      -			uiDialog = this.uiDialog;
      -
      -		if ( key === "disabled" ) {
      -			return;
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "appendTo" ) {
      -			this.uiDialog.appendTo( this._appendTo() );
      -		}
      -
      -		if ( key === "buttons" ) {
      -			this._createButtons();
      -		}
      -
      -		if ( key === "closeText" ) {
      -			this.uiDialogTitlebarClose.button( {
      -
      -				// Ensure that we always pass a string
      -				label: $( "<a>" ).text( "" + this.options.closeText ).html()
      -			} );
      -		}
      -
      -		if ( key === "draggable" ) {
      -			isDraggable = uiDialog.is( ":data(ui-draggable)" );
      -			if ( isDraggable && !value ) {
      -				uiDialog.draggable( "destroy" );
      -			}
      -
      -			if ( !isDraggable && value ) {
      -				this._makeDraggable();
      -			}
      -		}
      -
      -		if ( key === "position" ) {
      -			this._position();
      -		}
      -
      -		if ( key === "resizable" ) {
      -
      -			// currently resizable, becoming non-resizable
      -			isResizable = uiDialog.is( ":data(ui-resizable)" );
      -			if ( isResizable && !value ) {
      -				uiDialog.resizable( "destroy" );
      -			}
      -
      -			// Currently resizable, changing handles
      -			if ( isResizable && typeof value === "string" ) {
      -				uiDialog.resizable( "option", "handles", value );
      -			}
      -
      -			// Currently non-resizable, becoming resizable
      -			if ( !isResizable && value !== false ) {
      -				this._makeResizable();
      -			}
      -		}
      -
      -		if ( key === "title" ) {
      -			this._title( this.uiDialogTitlebar.find( ".ui-dialog-title" ) );
      -		}
      -	},
      -
      -	_size: function() {
      -
      -		// If the user has resized the dialog, the .ui-dialog and .ui-dialog-content
      -		// divs will both have width and height set, so we need to reset them
      -		var nonContentHeight, minContentHeight, maxContentHeight,
      -			options = this.options;
      -
      -		// Reset content sizing
      -		this.element.show().css( {
      -			width: "auto",
      -			minHeight: 0,
      -			maxHeight: "none",
      -			height: 0
      -		} );
      -
      -		if ( options.minWidth > options.width ) {
      -			options.width = options.minWidth;
      -		}
      -
      -		// Reset wrapper sizing
      -		// determine the height of all the non-content elements
      -		nonContentHeight = this.uiDialog.css( {
      -			height: "auto",
      -			width: options.width
      -		} )
      -			.outerHeight();
      -		minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
      -		maxContentHeight = typeof options.maxHeight === "number" ?
      -			Math.max( 0, options.maxHeight - nonContentHeight ) :
      -			"none";
      -
      -		if ( options.height === "auto" ) {
      -			this.element.css( {
      -				minHeight: minContentHeight,
      -				maxHeight: maxContentHeight,
      -				height: "auto"
      -			} );
      -		} else {
      -			this.element.height( Math.max( 0, options.height - nonContentHeight ) );
      -		}
      -
      -		if ( this.uiDialog.is( ":data(ui-resizable)" ) ) {
      -			this.uiDialog.resizable( "option", "minHeight", this._minHeight() );
      -		}
      -	},
      -
      -	_blockFrames: function() {
      -		this.iframeBlocks = this.document.find( "iframe" ).map( function() {
      -			var iframe = $( this );
      -
      -			return $( "<div>" )
      -				.css( {
      -					position: "absolute",
      -					width: iframe.outerWidth(),
      -					height: iframe.outerHeight()
      -				} )
      -				.appendTo( iframe.parent() )
      -				.offset( iframe.offset() )[ 0 ];
      -		} );
      -	},
      -
      -	_unblockFrames: function() {
      -		if ( this.iframeBlocks ) {
      -			this.iframeBlocks.remove();
      -			delete this.iframeBlocks;
      -		}
      -	},
      -
      -	_allowInteraction: function( event ) {
      -		if ( $( event.target ).closest( ".ui-dialog" ).length ) {
      -			return true;
      -		}
      -
      -		// TODO: Remove hack when datepicker implements
      -		// the .ui-front logic (#8989)
      -		return !!$( event.target ).closest( ".ui-datepicker" ).length;
      -	},
      -
      -	_createOverlay: function() {
      -		if ( !this.options.modal ) {
      -			return;
      -		}
      -
      -		// We use a delay in case the overlay is created from an
      -		// event that we're going to be cancelling (#2804)
      -		var isOpening = true;
      -		this._delay( function() {
      -			isOpening = false;
      -		} );
      -
      -		if ( !this.document.data( "ui-dialog-overlays" ) ) {
      -
      -			// Prevent use of anchors and inputs
      -			// Using _on() for an event handler shared across many instances is
      -			// safe because the dialogs stack and must be closed in reverse order
      -			this._on( this.document, {
      -				focusin: function( event ) {
      -					if ( isOpening ) {
      -						return;
      -					}
      -
      -					if ( !this._allowInteraction( event ) ) {
      -						event.preventDefault();
      -						this._trackingInstances()[ 0 ]._focusTabbable();
      -					}
      -				}
      -			} );
      -		}
      -
      -		this.overlay = $( "<div>" )
      -			.appendTo( this._appendTo() );
      -
      -		this._addClass( this.overlay, null, "ui-widget-overlay ui-front" );
      -		this._on( this.overlay, {
      -			mousedown: "_keepFocus"
      -		} );
      -		this.document.data( "ui-dialog-overlays",
      -			( this.document.data( "ui-dialog-overlays" ) || 0 ) + 1 );
      -	},
      -
      -	_destroyOverlay: function() {
      -		if ( !this.options.modal ) {
      -			return;
      -		}
      -
      -		if ( this.overlay ) {
      -			var overlays = this.document.data( "ui-dialog-overlays" ) - 1;
      -
      -			if ( !overlays ) {
      -				this._off( this.document, "focusin" );
      -				this.document.removeData( "ui-dialog-overlays" );
      -			} else {
      -				this.document.data( "ui-dialog-overlays", overlays );
      -			}
      -
      -			this.overlay.remove();
      -			this.overlay = null;
      -		}
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for dialogClass option
      -	$.widget( "ui.dialog", $.ui.dialog, {
      -		options: {
      -			dialogClass: ""
      -		},
      -		_createWrapper: function() {
      -			this._super();
      -			this.uiDialog.addClass( this.options.dialogClass );
      -		},
      -		_setOption: function( key, value ) {
      -			if ( key === "dialogClass" ) {
      -				this.uiDialog
      -					.removeClass( this.options.dialogClass )
      -					.addClass( value );
      -			}
      -			this._superApply( arguments );
      -		}
      -	} );
      -}
      -
      -return $.ui.dialog;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/draggable.js b/bower_components/jquery-ui/ui/widgets/draggable.js
      deleted file mode 100644
      index 8c9775138f..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/draggable.js
      +++ /dev/null
      @@ -1,1250 +0,0 @@
      -/*!
      - * jQuery UI Draggable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Draggable
      -//>>group: Interactions
      -//>>description: Enables dragging functionality for any element.
      -//>>docs: http://api.jqueryui.com/draggable/
      -//>>demos: http://jqueryui.com/draggable/
      -//>>css.structure: ../../themes/base/draggable.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./mouse",
      -			"../data",
      -			"../plugin",
      -			"../safe-active-element",
      -			"../safe-blur",
      -			"../scroll-parent",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.draggable", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "drag",
      -	options: {
      -		addClasses: true,
      -		appendTo: "parent",
      -		axis: false,
      -		connectToSortable: false,
      -		containment: false,
      -		cursor: "auto",
      -		cursorAt: false,
      -		grid: false,
      -		handle: false,
      -		helper: "original",
      -		iframeFix: false,
      -		opacity: false,
      -		refreshPositions: false,
      -		revert: false,
      -		revertDuration: 500,
      -		scope: "default",
      -		scroll: true,
      -		scrollSensitivity: 20,
      -		scrollSpeed: 20,
      -		snap: false,
      -		snapMode: "both",
      -		snapTolerance: 20,
      -		stack: false,
      -		zIndex: false,
      -
      -		// Callbacks
      -		drag: null,
      -		start: null,
      -		stop: null
      -	},
      -	_create: function() {
      -
      -		if ( this.options.helper === "original" ) {
      -			this._setPositionRelative();
      -		}
      -		if ( this.options.addClasses ) {
      -			this._addClass( "ui-draggable" );
      -		}
      -		this._setHandleClassName();
      -
      -		this._mouseInit();
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -		if ( key === "handle" ) {
      -			this._removeHandleClassName();
      -			this._setHandleClassName();
      -		}
      -	},
      -
      -	_destroy: function() {
      -		if ( ( this.helper || this.element ).is( ".ui-draggable-dragging" ) ) {
      -			this.destroyOnClear = true;
      -			return;
      -		}
      -		this._removeHandleClassName();
      -		this._mouseDestroy();
      -	},
      -
      -	_mouseCapture: function( event ) {
      -		var o = this.options;
      -
      -		// Among others, prevent a drag on a resizable-handle
      -		if ( this.helper || o.disabled ||
      -				$( event.target ).closest( ".ui-resizable-handle" ).length > 0 ) {
      -			return false;
      -		}
      -
      -		//Quit if we're not on a valid handle
      -		this.handle = this._getHandle( event );
      -		if ( !this.handle ) {
      -			return false;
      -		}
      -
      -		this._blurActiveElement( event );
      -
      -		this._blockFrames( o.iframeFix === true ? "iframe" : o.iframeFix );
      -
      -		return true;
      -
      -	},
      -
      -	_blockFrames: function( selector ) {
      -		this.iframeBlocks = this.document.find( selector ).map( function() {
      -			var iframe = $( this );
      -
      -			return $( "<div>" )
      -				.css( "position", "absolute" )
      -				.appendTo( iframe.parent() )
      -				.outerWidth( iframe.outerWidth() )
      -				.outerHeight( iframe.outerHeight() )
      -				.offset( iframe.offset() )[ 0 ];
      -		} );
      -	},
      -
      -	_unblockFrames: function() {
      -		if ( this.iframeBlocks ) {
      -			this.iframeBlocks.remove();
      -			delete this.iframeBlocks;
      -		}
      -	},
      -
      -	_blurActiveElement: function( event ) {
      -		var activeElement = $.ui.safeActiveElement( this.document[ 0 ] ),
      -			target = $( event.target );
      -
      -		// Don't blur if the event occurred on an element that is within
      -		// the currently focused element
      -		// See #10527, #12472
      -		if ( target.closest( activeElement ).length ) {
      -			return;
      -		}
      -
      -		// Blur any element that currently has focus, see #4261
      -		$.ui.safeBlur( activeElement );
      -	},
      -
      -	_mouseStart: function( event ) {
      -
      -		var o = this.options;
      -
      -		//Create and append the visible helper
      -		this.helper = this._createHelper( event );
      -
      -		this._addClass( this.helper, "ui-draggable-dragging" );
      -
      -		//Cache the helper size
      -		this._cacheHelperProportions();
      -
      -		//If ddmanager is used for droppables, set the global draggable
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.current = this;
      -		}
      -
      -		/*
      -		 * - Position generation -
      -		 * This block generates everything position related - it's the core of draggables.
      -		 */
      -
      -		//Cache the margins of the original element
      -		this._cacheMargins();
      -
      -		//Store the helper's css position
      -		this.cssPosition = this.helper.css( "position" );
      -		this.scrollParent = this.helper.scrollParent( true );
      -		this.offsetParent = this.helper.offsetParent();
      -		this.hasFixedAncestor = this.helper.parents().filter( function() {
      -				return $( this ).css( "position" ) === "fixed";
      -			} ).length > 0;
      -
      -		//The element's absolute position on the page minus margins
      -		this.positionAbs = this.element.offset();
      -		this._refreshOffsets( event );
      -
      -		//Generate the original position
      -		this.originalPosition = this.position = this._generatePosition( event, false );
      -		this.originalPageX = event.pageX;
      -		this.originalPageY = event.pageY;
      -
      -		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
      -		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
      -
      -		//Set a containment if given in the options
      -		this._setContainment();
      -
      -		//Trigger event + callbacks
      -		if ( this._trigger( "start", event ) === false ) {
      -			this._clear();
      -			return false;
      -		}
      -
      -		//Recache the helper size
      -		this._cacheHelperProportions();
      -
      -		//Prepare the droppable offsets
      -		if ( $.ui.ddmanager && !o.dropBehaviour ) {
      -			$.ui.ddmanager.prepareOffsets( this, event );
      -		}
      -
      -		// Execute the drag once - this causes the helper not to be visible before getting its
      -		// correct position
      -		this._mouseDrag( event, true );
      -
      -		// If the ddmanager is used for droppables, inform the manager that dragging has started
      -		// (see #5003)
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.dragStart( this, event );
      -		}
      -
      -		return true;
      -	},
      -
      -	_refreshOffsets: function( event ) {
      -		this.offset = {
      -			top: this.positionAbs.top - this.margins.top,
      -			left: this.positionAbs.left - this.margins.left,
      -			scroll: false,
      -			parent: this._getParentOffset(),
      -			relative: this._getRelativeOffset()
      -		};
      -
      -		this.offset.click = {
      -			left: event.pageX - this.offset.left,
      -			top: event.pageY - this.offset.top
      -		};
      -	},
      -
      -	_mouseDrag: function( event, noPropagation ) {
      -
      -		// reset any necessary cached properties (see #5009)
      -		if ( this.hasFixedAncestor ) {
      -			this.offset.parent = this._getParentOffset();
      -		}
      -
      -		//Compute the helpers position
      -		this.position = this._generatePosition( event, true );
      -		this.positionAbs = this._convertPositionTo( "absolute" );
      -
      -		//Call plugins and callbacks and use the resulting position if something is returned
      -		if ( !noPropagation ) {
      -			var ui = this._uiHash();
      -			if ( this._trigger( "drag", event, ui ) === false ) {
      -				this._mouseUp( new $.Event( "mouseup", event ) );
      -				return false;
      -			}
      -			this.position = ui.position;
      -		}
      -
      -		this.helper[ 0 ].style.left = this.position.left + "px";
      -		this.helper[ 0 ].style.top = this.position.top + "px";
      -
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.drag( this, event );
      -		}
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -
      -		//If we are using droppables, inform the manager about the drop
      -		var that = this,
      -			dropped = false;
      -		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
      -			dropped = $.ui.ddmanager.drop( this, event );
      -		}
      -
      -		//if a drop comes from outside (a sortable)
      -		if ( this.dropped ) {
      -			dropped = this.dropped;
      -			this.dropped = false;
      -		}
      -
      -		if ( ( this.options.revert === "invalid" && !dropped ) ||
      -				( this.options.revert === "valid" && dropped ) ||
      -				this.options.revert === true || ( $.isFunction( this.options.revert ) &&
      -				this.options.revert.call( this.element, dropped ) )
      -		) {
      -			$( this.helper ).animate(
      -				this.originalPosition,
      -				parseInt( this.options.revertDuration, 10 ),
      -				function() {
      -					if ( that._trigger( "stop", event ) !== false ) {
      -						that._clear();
      -					}
      -				}
      -			);
      -		} else {
      -			if ( this._trigger( "stop", event ) !== false ) {
      -				this._clear();
      -			}
      -		}
      -
      -		return false;
      -	},
      -
      -	_mouseUp: function( event ) {
      -		this._unblockFrames();
      -
      -		// If the ddmanager is used for droppables, inform the manager that dragging has stopped
      -		// (see #5003)
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.dragStop( this, event );
      -		}
      -
      -		// Only need to focus if the event occurred on the draggable itself, see #10527
      -		if ( this.handleElement.is( event.target ) ) {
      -
      -			// The interaction is over; whether or not the click resulted in a drag,
      -			// focus the element
      -			this.element.trigger( "focus" );
      -		}
      -
      -		return $.ui.mouse.prototype._mouseUp.call( this, event );
      -	},
      -
      -	cancel: function() {
      -
      -		if ( this.helper.is( ".ui-draggable-dragging" ) ) {
      -			this._mouseUp( new $.Event( "mouseup", { target: this.element[ 0 ] } ) );
      -		} else {
      -			this._clear();
      -		}
      -
      -		return this;
      -
      -	},
      -
      -	_getHandle: function( event ) {
      -		return this.options.handle ?
      -			!!$( event.target ).closest( this.element.find( this.options.handle ) ).length :
      -			true;
      -	},
      -
      -	_setHandleClassName: function() {
      -		this.handleElement = this.options.handle ?
      -			this.element.find( this.options.handle ) : this.element;
      -		this._addClass( this.handleElement, "ui-draggable-handle" );
      -	},
      -
      -	_removeHandleClassName: function() {
      -		this._removeClass( this.handleElement, "ui-draggable-handle" );
      -	},
      -
      -	_createHelper: function( event ) {
      -
      -		var o = this.options,
      -			helperIsFunction = $.isFunction( o.helper ),
      -			helper = helperIsFunction ?
      -				$( o.helper.apply( this.element[ 0 ], [ event ] ) ) :
      -				( o.helper === "clone" ?
      -					this.element.clone().removeAttr( "id" ) :
      -					this.element );
      -
      -		if ( !helper.parents( "body" ).length ) {
      -			helper.appendTo( ( o.appendTo === "parent" ?
      -				this.element[ 0 ].parentNode :
      -				o.appendTo ) );
      -		}
      -
      -		// Http://bugs.jqueryui.com/ticket/9446
      -		// a helper function can return the original element
      -		// which wouldn't have been set to relative in _create
      -		if ( helperIsFunction && helper[ 0 ] === this.element[ 0 ] ) {
      -			this._setPositionRelative();
      -		}
      -
      -		if ( helper[ 0 ] !== this.element[ 0 ] &&
      -				!( /(fixed|absolute)/ ).test( helper.css( "position" ) ) ) {
      -			helper.css( "position", "absolute" );
      -		}
      -
      -		return helper;
      -
      -	},
      -
      -	_setPositionRelative: function() {
      -		if ( !( /^(?:r|a|f)/ ).test( this.element.css( "position" ) ) ) {
      -			this.element[ 0 ].style.position = "relative";
      -		}
      -	},
      -
      -	_adjustOffsetFromHelper: function( obj ) {
      -		if ( typeof obj === "string" ) {
      -			obj = obj.split( " " );
      -		}
      -		if ( $.isArray( obj ) ) {
      -			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
      -		}
      -		if ( "left" in obj ) {
      -			this.offset.click.left = obj.left + this.margins.left;
      -		}
      -		if ( "right" in obj ) {
      -			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
      -		}
      -		if ( "top" in obj ) {
      -			this.offset.click.top = obj.top + this.margins.top;
      -		}
      -		if ( "bottom" in obj ) {
      -			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
      -		}
      -	},
      -
      -	_isRootNode: function( element ) {
      -		return ( /(html|body)/i ).test( element.tagName ) || element === this.document[ 0 ];
      -	},
      -
      -	_getParentOffset: function() {
      -
      -		//Get the offsetParent and cache its position
      -		var po = this.offsetParent.offset(),
      -			document = this.document[ 0 ];
      -
      -		// This is a special case where we need to modify a offset calculated on start, since the
      -		// following happened:
      -		// 1. The position of the helper is absolute, so it's position is calculated based on the
      -		// next positioned parent
      -		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
      -		// the document, which means that the scroll is included in the initial calculation of the
      -		// offset of the parent, and never recalculated upon drag
      -		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== document &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
      -			po.left += this.scrollParent.scrollLeft();
      -			po.top += this.scrollParent.scrollTop();
      -		}
      -
      -		if ( this._isRootNode( this.offsetParent[ 0 ] ) ) {
      -			po = { top: 0, left: 0 };
      -		}
      -
      -		return {
      -			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
      -			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
      -		};
      -
      -	},
      -
      -	_getRelativeOffset: function() {
      -		if ( this.cssPosition !== "relative" ) {
      -			return { top: 0, left: 0 };
      -		}
      -
      -		var p = this.element.position(),
      -			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
      -
      -		return {
      -			top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
      -				( !scrollIsRootNode ? this.scrollParent.scrollTop() : 0 ),
      -			left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
      -				( !scrollIsRootNode ? this.scrollParent.scrollLeft() : 0 )
      -		};
      -
      -	},
      -
      -	_cacheMargins: function() {
      -		this.margins = {
      -			left: ( parseInt( this.element.css( "marginLeft" ), 10 ) || 0 ),
      -			top: ( parseInt( this.element.css( "marginTop" ), 10 ) || 0 ),
      -			right: ( parseInt( this.element.css( "marginRight" ), 10 ) || 0 ),
      -			bottom: ( parseInt( this.element.css( "marginBottom" ), 10 ) || 0 )
      -		};
      -	},
      -
      -	_cacheHelperProportions: function() {
      -		this.helperProportions = {
      -			width: this.helper.outerWidth(),
      -			height: this.helper.outerHeight()
      -		};
      -	},
      -
      -	_setContainment: function() {
      -
      -		var isUserScrollable, c, ce,
      -			o = this.options,
      -			document = this.document[ 0 ];
      -
      -		this.relativeContainer = null;
      -
      -		if ( !o.containment ) {
      -			this.containment = null;
      -			return;
      -		}
      -
      -		if ( o.containment === "window" ) {
      -			this.containment = [
      -				$( window ).scrollLeft() - this.offset.relative.left - this.offset.parent.left,
      -				$( window ).scrollTop() - this.offset.relative.top - this.offset.parent.top,
      -				$( window ).scrollLeft() + $( window ).width() -
      -					this.helperProportions.width - this.margins.left,
      -				$( window ).scrollTop() +
      -					( $( window ).height() || document.body.parentNode.scrollHeight ) -
      -					this.helperProportions.height - this.margins.top
      -			];
      -			return;
      -		}
      -
      -		if ( o.containment === "document" ) {
      -			this.containment = [
      -				0,
      -				0,
      -				$( document ).width() - this.helperProportions.width - this.margins.left,
      -				( $( document ).height() || document.body.parentNode.scrollHeight ) -
      -					this.helperProportions.height - this.margins.top
      -			];
      -			return;
      -		}
      -
      -		if ( o.containment.constructor === Array ) {
      -			this.containment = o.containment;
      -			return;
      -		}
      -
      -		if ( o.containment === "parent" ) {
      -			o.containment = this.helper[ 0 ].parentNode;
      -		}
      -
      -		c = $( o.containment );
      -		ce = c[ 0 ];
      -
      -		if ( !ce ) {
      -			return;
      -		}
      -
      -		isUserScrollable = /(scroll|auto)/.test( c.css( "overflow" ) );
      -
      -		this.containment = [
      -			( parseInt( c.css( "borderLeftWidth" ), 10 ) || 0 ) +
      -				( parseInt( c.css( "paddingLeft" ), 10 ) || 0 ),
      -			( parseInt( c.css( "borderTopWidth" ), 10 ) || 0 ) +
      -				( parseInt( c.css( "paddingTop" ), 10 ) || 0 ),
      -			( isUserScrollable ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
      -				( parseInt( c.css( "borderRightWidth" ), 10 ) || 0 ) -
      -				( parseInt( c.css( "paddingRight" ), 10 ) || 0 ) -
      -				this.helperProportions.width -
      -				this.margins.left -
      -				this.margins.right,
      -			( isUserScrollable ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
      -				( parseInt( c.css( "borderBottomWidth" ), 10 ) || 0 ) -
      -				( parseInt( c.css( "paddingBottom" ), 10 ) || 0 ) -
      -				this.helperProportions.height -
      -				this.margins.top -
      -				this.margins.bottom
      -		];
      -		this.relativeContainer = c;
      -	},
      -
      -	_convertPositionTo: function( d, pos ) {
      -
      -		if ( !pos ) {
      -			pos = this.position;
      -		}
      -
      -		var mod = d === "absolute" ? 1 : -1,
      -			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] );
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pos.top	+
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top * mod -
      -				( ( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.top :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.top ) ) * mod )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pos.left +
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left * mod	-
      -				( ( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.left :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.left ) ) * mod )
      -			)
      -		};
      -
      -	},
      -
      -	_generatePosition: function( event, constrainPosition ) {
      -
      -		var containment, co, top, left,
      -			o = this.options,
      -			scrollIsRootNode = this._isRootNode( this.scrollParent[ 0 ] ),
      -			pageX = event.pageX,
      -			pageY = event.pageY;
      -
      -		// Cache the scroll
      -		if ( !scrollIsRootNode || !this.offset.scroll ) {
      -			this.offset.scroll = {
      -				top: this.scrollParent.scrollTop(),
      -				left: this.scrollParent.scrollLeft()
      -			};
      -		}
      -
      -		/*
      -		 * - Position constraining -
      -		 * Constrain the position to a mix of grid, containment.
      -		 */
      -
      -		// If we are not dragging yet, we won't check for options
      -		if ( constrainPosition ) {
      -			if ( this.containment ) {
      -				if ( this.relativeContainer ) {
      -					co = this.relativeContainer.offset();
      -					containment = [
      -						this.containment[ 0 ] + co.left,
      -						this.containment[ 1 ] + co.top,
      -						this.containment[ 2 ] + co.left,
      -						this.containment[ 3 ] + co.top
      -					];
      -				} else {
      -					containment = this.containment;
      -				}
      -
      -				if ( event.pageX - this.offset.click.left < containment[ 0 ] ) {
      -					pageX = containment[ 0 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top < containment[ 1 ] ) {
      -					pageY = containment[ 1 ] + this.offset.click.top;
      -				}
      -				if ( event.pageX - this.offset.click.left > containment[ 2 ] ) {
      -					pageX = containment[ 2 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top > containment[ 3 ] ) {
      -					pageY = containment[ 3 ] + this.offset.click.top;
      -				}
      -			}
      -
      -			if ( o.grid ) {
      -
      -				//Check for grid elements set to 0 to prevent divide by 0 error causing invalid
      -				// argument errors in IE (see ticket #6950)
      -				top = o.grid[ 1 ] ? this.originalPageY + Math.round( ( pageY -
      -					this.originalPageY ) / o.grid[ 1 ] ) * o.grid[ 1 ] : this.originalPageY;
      -				pageY = containment ? ( ( top - this.offset.click.top >= containment[ 1 ] ||
      -					top - this.offset.click.top > containment[ 3 ] ) ?
      -						top :
      -						( ( top - this.offset.click.top >= containment[ 1 ] ) ?
      -							top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) : top;
      -
      -				left = o.grid[ 0 ] ? this.originalPageX +
      -					Math.round( ( pageX - this.originalPageX ) / o.grid[ 0 ] ) * o.grid[ 0 ] :
      -					this.originalPageX;
      -				pageX = containment ? ( ( left - this.offset.click.left >= containment[ 0 ] ||
      -					left - this.offset.click.left > containment[ 2 ] ) ?
      -						left :
      -						( ( left - this.offset.click.left >= containment[ 0 ] ) ?
      -							left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) : left;
      -			}
      -
      -			if ( o.axis === "y" ) {
      -				pageX = this.originalPageX;
      -			}
      -
      -			if ( o.axis === "x" ) {
      -				pageY = this.originalPageY;
      -			}
      -		}
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pageY -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.top -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top +
      -				( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.top :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.top ) )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pageX -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.left -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left +
      -				( this.cssPosition === "fixed" ?
      -					-this.offset.scroll.left :
      -					( scrollIsRootNode ? 0 : this.offset.scroll.left ) )
      -			)
      -		};
      -
      -	},
      -
      -	_clear: function() {
      -		this._removeClass( this.helper, "ui-draggable-dragging" );
      -		if ( this.helper[ 0 ] !== this.element[ 0 ] && !this.cancelHelperRemoval ) {
      -			this.helper.remove();
      -		}
      -		this.helper = null;
      -		this.cancelHelperRemoval = false;
      -		if ( this.destroyOnClear ) {
      -			this.destroy();
      -		}
      -	},
      -
      -	// From now on bulk stuff - mainly helpers
      -
      -	_trigger: function( type, event, ui ) {
      -		ui = ui || this._uiHash();
      -		$.ui.plugin.call( this, type, [ event, ui, this ], true );
      -
      -		// Absolute position and offset (see #6884 ) have to be recalculated after plugins
      -		if ( /^(drag|start|stop)/.test( type ) ) {
      -			this.positionAbs = this._convertPositionTo( "absolute" );
      -			ui.offset = this.positionAbs;
      -		}
      -		return $.Widget.prototype._trigger.call( this, type, event, ui );
      -	},
      -
      -	plugins: {},
      -
      -	_uiHash: function() {
      -		return {
      -			helper: this.helper,
      -			position: this.position,
      -			originalPosition: this.originalPosition,
      -			offset: this.positionAbs
      -		};
      -	}
      -
      -} );
      -
      -$.ui.plugin.add( "draggable", "connectToSortable", {
      -	start: function( event, ui, draggable ) {
      -		var uiSortable = $.extend( {}, ui, {
      -			item: draggable.element
      -		} );
      -
      -		draggable.sortables = [];
      -		$( draggable.options.connectToSortable ).each( function() {
      -			var sortable = $( this ).sortable( "instance" );
      -
      -			if ( sortable && !sortable.options.disabled ) {
      -				draggable.sortables.push( sortable );
      -
      -				// RefreshPositions is called at drag start to refresh the containerCache
      -				// which is used in drag. This ensures it's initialized and synchronized
      -				// with any changes that might have happened on the page since initialization.
      -				sortable.refreshPositions();
      -				sortable._trigger( "activate", event, uiSortable );
      -			}
      -		} );
      -	},
      -	stop: function( event, ui, draggable ) {
      -		var uiSortable = $.extend( {}, ui, {
      -			item: draggable.element
      -		} );
      -
      -		draggable.cancelHelperRemoval = false;
      -
      -		$.each( draggable.sortables, function() {
      -			var sortable = this;
      -
      -			if ( sortable.isOver ) {
      -				sortable.isOver = 0;
      -
      -				// Allow this sortable to handle removing the helper
      -				draggable.cancelHelperRemoval = true;
      -				sortable.cancelHelperRemoval = false;
      -
      -				// Use _storedCSS To restore properties in the sortable,
      -				// as this also handles revert (#9675) since the draggable
      -				// may have modified them in unexpected ways (#8809)
      -				sortable._storedCSS = {
      -					position: sortable.placeholder.css( "position" ),
      -					top: sortable.placeholder.css( "top" ),
      -					left: sortable.placeholder.css( "left" )
      -				};
      -
      -				sortable._mouseStop( event );
      -
      -				// Once drag has ended, the sortable should return to using
      -				// its original helper, not the shared helper from draggable
      -				sortable.options.helper = sortable.options._helper;
      -			} else {
      -
      -				// Prevent this Sortable from removing the helper.
      -				// However, don't set the draggable to remove the helper
      -				// either as another connected Sortable may yet handle the removal.
      -				sortable.cancelHelperRemoval = true;
      -
      -				sortable._trigger( "deactivate", event, uiSortable );
      -			}
      -		} );
      -	},
      -	drag: function( event, ui, draggable ) {
      -		$.each( draggable.sortables, function() {
      -			var innermostIntersecting = false,
      -				sortable = this;
      -
      -			// Copy over variables that sortable's _intersectsWith uses
      -			sortable.positionAbs = draggable.positionAbs;
      -			sortable.helperProportions = draggable.helperProportions;
      -			sortable.offset.click = draggable.offset.click;
      -
      -			if ( sortable._intersectsWith( sortable.containerCache ) ) {
      -				innermostIntersecting = true;
      -
      -				$.each( draggable.sortables, function() {
      -
      -					// Copy over variables that sortable's _intersectsWith uses
      -					this.positionAbs = draggable.positionAbs;
      -					this.helperProportions = draggable.helperProportions;
      -					this.offset.click = draggable.offset.click;
      -
      -					if ( this !== sortable &&
      -							this._intersectsWith( this.containerCache ) &&
      -							$.contains( sortable.element[ 0 ], this.element[ 0 ] ) ) {
      -						innermostIntersecting = false;
      -					}
      -
      -					return innermostIntersecting;
      -				} );
      -			}
      -
      -			if ( innermostIntersecting ) {
      -
      -				// If it intersects, we use a little isOver variable and set it once,
      -				// so that the move-in stuff gets fired only once.
      -				if ( !sortable.isOver ) {
      -					sortable.isOver = 1;
      -
      -					// Store draggable's parent in case we need to reappend to it later.
      -					draggable._parent = ui.helper.parent();
      -
      -					sortable.currentItem = ui.helper
      -						.appendTo( sortable.element )
      -						.data( "ui-sortable-item", true );
      -
      -					// Store helper option to later restore it
      -					sortable.options._helper = sortable.options.helper;
      -
      -					sortable.options.helper = function() {
      -						return ui.helper[ 0 ];
      -					};
      -
      -					// Fire the start events of the sortable with our passed browser event,
      -					// and our own helper (so it doesn't create a new one)
      -					event.target = sortable.currentItem[ 0 ];
      -					sortable._mouseCapture( event, true );
      -					sortable._mouseStart( event, true, true );
      -
      -					// Because the browser event is way off the new appended portlet,
      -					// modify necessary variables to reflect the changes
      -					sortable.offset.click.top = draggable.offset.click.top;
      -					sortable.offset.click.left = draggable.offset.click.left;
      -					sortable.offset.parent.left -= draggable.offset.parent.left -
      -						sortable.offset.parent.left;
      -					sortable.offset.parent.top -= draggable.offset.parent.top -
      -						sortable.offset.parent.top;
      -
      -					draggable._trigger( "toSortable", event );
      -
      -					// Inform draggable that the helper is in a valid drop zone,
      -					// used solely in the revert option to handle "valid/invalid".
      -					draggable.dropped = sortable.element;
      -
      -					// Need to refreshPositions of all sortables in the case that
      -					// adding to one sortable changes the location of the other sortables (#9675)
      -					$.each( draggable.sortables, function() {
      -						this.refreshPositions();
      -					} );
      -
      -					// Hack so receive/update callbacks work (mostly)
      -					draggable.currentItem = draggable.element;
      -					sortable.fromOutside = draggable;
      -				}
      -
      -				if ( sortable.currentItem ) {
      -					sortable._mouseDrag( event );
      -
      -					// Copy the sortable's position because the draggable's can potentially reflect
      -					// a relative position, while sortable is always absolute, which the dragged
      -					// element has now become. (#8809)
      -					ui.position = sortable.position;
      -				}
      -			} else {
      -
      -				// If it doesn't intersect with the sortable, and it intersected before,
      -				// we fake the drag stop of the sortable, but make sure it doesn't remove
      -				// the helper by using cancelHelperRemoval.
      -				if ( sortable.isOver ) {
      -
      -					sortable.isOver = 0;
      -					sortable.cancelHelperRemoval = true;
      -
      -					// Calling sortable's mouseStop would trigger a revert,
      -					// so revert must be temporarily false until after mouseStop is called.
      -					sortable.options._revert = sortable.options.revert;
      -					sortable.options.revert = false;
      -
      -					sortable._trigger( "out", event, sortable._uiHash( sortable ) );
      -					sortable._mouseStop( event, true );
      -
      -					// Restore sortable behaviors that were modfied
      -					// when the draggable entered the sortable area (#9481)
      -					sortable.options.revert = sortable.options._revert;
      -					sortable.options.helper = sortable.options._helper;
      -
      -					if ( sortable.placeholder ) {
      -						sortable.placeholder.remove();
      -					}
      -
      -					// Restore and recalculate the draggable's offset considering the sortable
      -					// may have modified them in unexpected ways. (#8809, #10669)
      -					ui.helper.appendTo( draggable._parent );
      -					draggable._refreshOffsets( event );
      -					ui.position = draggable._generatePosition( event, true );
      -
      -					draggable._trigger( "fromSortable", event );
      -
      -					// Inform draggable that the helper is no longer in a valid drop zone
      -					draggable.dropped = false;
      -
      -					// Need to refreshPositions of all sortables just in case removing
      -					// from one sortable changes the location of other sortables (#9675)
      -					$.each( draggable.sortables, function() {
      -						this.refreshPositions();
      -					} );
      -				}
      -			}
      -		} );
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "cursor", {
      -	start: function( event, ui, instance ) {
      -		var t = $( "body" ),
      -			o = instance.options;
      -
      -		if ( t.css( "cursor" ) ) {
      -			o._cursor = t.css( "cursor" );
      -		}
      -		t.css( "cursor", o.cursor );
      -	},
      -	stop: function( event, ui, instance ) {
      -		var o = instance.options;
      -		if ( o._cursor ) {
      -			$( "body" ).css( "cursor", o._cursor );
      -		}
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "opacity", {
      -	start: function( event, ui, instance ) {
      -		var t = $( ui.helper ),
      -			o = instance.options;
      -		if ( t.css( "opacity" ) ) {
      -			o._opacity = t.css( "opacity" );
      -		}
      -		t.css( "opacity", o.opacity );
      -	},
      -	stop: function( event, ui, instance ) {
      -		var o = instance.options;
      -		if ( o._opacity ) {
      -			$( ui.helper ).css( "opacity", o._opacity );
      -		}
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "scroll", {
      -	start: function( event, ui, i ) {
      -		if ( !i.scrollParentNotHidden ) {
      -			i.scrollParentNotHidden = i.helper.scrollParent( false );
      -		}
      -
      -		if ( i.scrollParentNotHidden[ 0 ] !== i.document[ 0 ] &&
      -				i.scrollParentNotHidden[ 0 ].tagName !== "HTML" ) {
      -			i.overflowOffset = i.scrollParentNotHidden.offset();
      -		}
      -	},
      -	drag: function( event, ui, i  ) {
      -
      -		var o = i.options,
      -			scrolled = false,
      -			scrollParent = i.scrollParentNotHidden[ 0 ],
      -			document = i.document[ 0 ];
      -
      -		if ( scrollParent !== document && scrollParent.tagName !== "HTML" ) {
      -			if ( !o.axis || o.axis !== "x" ) {
      -				if ( ( i.overflowOffset.top + scrollParent.offsetHeight ) - event.pageY <
      -						o.scrollSensitivity ) {
      -					scrollParent.scrollTop = scrolled = scrollParent.scrollTop + o.scrollSpeed;
      -				} else if ( event.pageY - i.overflowOffset.top < o.scrollSensitivity ) {
      -					scrollParent.scrollTop = scrolled = scrollParent.scrollTop - o.scrollSpeed;
      -				}
      -			}
      -
      -			if ( !o.axis || o.axis !== "y" ) {
      -				if ( ( i.overflowOffset.left + scrollParent.offsetWidth ) - event.pageX <
      -						o.scrollSensitivity ) {
      -					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft + o.scrollSpeed;
      -				} else if ( event.pageX - i.overflowOffset.left < o.scrollSensitivity ) {
      -					scrollParent.scrollLeft = scrolled = scrollParent.scrollLeft - o.scrollSpeed;
      -				}
      -			}
      -
      -		} else {
      -
      -			if ( !o.axis || o.axis !== "x" ) {
      -				if ( event.pageY - $( document ).scrollTop() < o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollTop( $( document ).scrollTop() - o.scrollSpeed );
      -				} else if ( $( window ).height() - ( event.pageY - $( document ).scrollTop() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollTop( $( document ).scrollTop() + o.scrollSpeed );
      -				}
      -			}
      -
      -			if ( !o.axis || o.axis !== "y" ) {
      -				if ( event.pageX - $( document ).scrollLeft() < o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollLeft(
      -						$( document ).scrollLeft() - o.scrollSpeed
      -					);
      -				} else if ( $( window ).width() - ( event.pageX - $( document ).scrollLeft() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = $( document ).scrollLeft(
      -						$( document ).scrollLeft() + o.scrollSpeed
      -					);
      -				}
      -			}
      -
      -		}
      -
      -		if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
      -			$.ui.ddmanager.prepareOffsets( i, event );
      -		}
      -
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "snap", {
      -	start: function( event, ui, i ) {
      -
      -		var o = i.options;
      -
      -		i.snapElements = [];
      -
      -		$( o.snap.constructor !== String ? ( o.snap.items || ":data(ui-draggable)" ) : o.snap )
      -			.each( function() {
      -				var $t = $( this ),
      -					$o = $t.offset();
      -				if ( this !== i.element[ 0 ] ) {
      -					i.snapElements.push( {
      -						item: this,
      -						width: $t.outerWidth(), height: $t.outerHeight(),
      -						top: $o.top, left: $o.left
      -					} );
      -				}
      -			} );
      -
      -	},
      -	drag: function( event, ui, inst ) {
      -
      -		var ts, bs, ls, rs, l, r, t, b, i, first,
      -			o = inst.options,
      -			d = o.snapTolerance,
      -			x1 = ui.offset.left, x2 = x1 + inst.helperProportions.width,
      -			y1 = ui.offset.top, y2 = y1 + inst.helperProportions.height;
      -
      -		for ( i = inst.snapElements.length - 1; i >= 0; i-- ) {
      -
      -			l = inst.snapElements[ i ].left - inst.margins.left;
      -			r = l + inst.snapElements[ i ].width;
      -			t = inst.snapElements[ i ].top - inst.margins.top;
      -			b = t + inst.snapElements[ i ].height;
      -
      -			if ( x2 < l - d || x1 > r + d || y2 < t - d || y1 > b + d ||
      -					!$.contains( inst.snapElements[ i ].item.ownerDocument,
      -					inst.snapElements[ i ].item ) ) {
      -				if ( inst.snapElements[ i ].snapping ) {
      -					( inst.options.snap.release &&
      -						inst.options.snap.release.call(
      -							inst.element,
      -							event,
      -							$.extend( inst._uiHash(), { snapItem: inst.snapElements[ i ].item } )
      -						) );
      -				}
      -				inst.snapElements[ i ].snapping = false;
      -				continue;
      -			}
      -
      -			if ( o.snapMode !== "inner" ) {
      -				ts = Math.abs( t - y2 ) <= d;
      -				bs = Math.abs( b - y1 ) <= d;
      -				ls = Math.abs( l - x2 ) <= d;
      -				rs = Math.abs( r - x1 ) <= d;
      -				if ( ts ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: t - inst.helperProportions.height,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( bs ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: b,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( ls ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: l - inst.helperProportions.width
      -					} ).left;
      -				}
      -				if ( rs ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: r
      -					} ).left;
      -				}
      -			}
      -
      -			first = ( ts || bs || ls || rs );
      -
      -			if ( o.snapMode !== "outer" ) {
      -				ts = Math.abs( t - y1 ) <= d;
      -				bs = Math.abs( b - y2 ) <= d;
      -				ls = Math.abs( l - x1 ) <= d;
      -				rs = Math.abs( r - x2 ) <= d;
      -				if ( ts ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: t,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( bs ) {
      -					ui.position.top = inst._convertPositionTo( "relative", {
      -						top: b - inst.helperProportions.height,
      -						left: 0
      -					} ).top;
      -				}
      -				if ( ls ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: l
      -					} ).left;
      -				}
      -				if ( rs ) {
      -					ui.position.left = inst._convertPositionTo( "relative", {
      -						top: 0,
      -						left: r - inst.helperProportions.width
      -					} ).left;
      -				}
      -			}
      -
      -			if ( !inst.snapElements[ i ].snapping && ( ts || bs || ls || rs || first ) ) {
      -				( inst.options.snap.snap &&
      -					inst.options.snap.snap.call(
      -						inst.element,
      -						event,
      -						$.extend( inst._uiHash(), {
      -							snapItem: inst.snapElements[ i ].item
      -						} ) ) );
      -			}
      -			inst.snapElements[ i ].snapping = ( ts || bs || ls || rs || first );
      -
      -		}
      -
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "stack", {
      -	start: function( event, ui, instance ) {
      -		var min,
      -			o = instance.options,
      -			group = $.makeArray( $( o.stack ) ).sort( function( a, b ) {
      -				return ( parseInt( $( a ).css( "zIndex" ), 10 ) || 0 ) -
      -					( parseInt( $( b ).css( "zIndex" ), 10 ) || 0 );
      -			} );
      -
      -		if ( !group.length ) { return; }
      -
      -		min = parseInt( $( group[ 0 ] ).css( "zIndex" ), 10 ) || 0;
      -		$( group ).each( function( i ) {
      -			$( this ).css( "zIndex", min + i );
      -		} );
      -		this.css( "zIndex", ( min + group.length ) );
      -	}
      -} );
      -
      -$.ui.plugin.add( "draggable", "zIndex", {
      -	start: function( event, ui, instance ) {
      -		var t = $( ui.helper ),
      -			o = instance.options;
      -
      -		if ( t.css( "zIndex" ) ) {
      -			o._zIndex = t.css( "zIndex" );
      -		}
      -		t.css( "zIndex", o.zIndex );
      -	},
      -	stop: function( event, ui, instance ) {
      -		var o = instance.options;
      -
      -		if ( o._zIndex ) {
      -			$( ui.helper ).css( "zIndex", o._zIndex );
      -		}
      -	}
      -} );
      -
      -return $.ui.draggable;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/droppable.js b/bower_components/jquery-ui/ui/widgets/droppable.js
      deleted file mode 100644
      index 4b932aea39..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/droppable.js
      +++ /dev/null
      @@ -1,497 +0,0 @@
      -/*!
      - * jQuery UI Droppable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Droppable
      -//>>group: Interactions
      -//>>description: Enables drop targets for draggable elements.
      -//>>docs: http://api.jqueryui.com/droppable/
      -//>>demos: http://jqueryui.com/droppable/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./draggable",
      -			"./mouse",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.droppable", {
      -	version: "1.12.1",
      -	widgetEventPrefix: "drop",
      -	options: {
      -		accept: "*",
      -		addClasses: true,
      -		greedy: false,
      -		scope: "default",
      -		tolerance: "intersect",
      -
      -		// Callbacks
      -		activate: null,
      -		deactivate: null,
      -		drop: null,
      -		out: null,
      -		over: null
      -	},
      -	_create: function() {
      -
      -		var proportions,
      -			o = this.options,
      -			accept = o.accept;
      -
      -		this.isover = false;
      -		this.isout = true;
      -
      -		this.accept = $.isFunction( accept ) ? accept : function( d ) {
      -			return d.is( accept );
      -		};
      -
      -		this.proportions = function( /* valueToWrite */ ) {
      -			if ( arguments.length ) {
      -
      -				// Store the droppable's proportions
      -				proportions = arguments[ 0 ];
      -			} else {
      -
      -				// Retrieve or derive the droppable's proportions
      -				return proportions ?
      -					proportions :
      -					proportions = {
      -						width: this.element[ 0 ].offsetWidth,
      -						height: this.element[ 0 ].offsetHeight
      -					};
      -			}
      -		};
      -
      -		this._addToManager( o.scope );
      -
      -		o.addClasses && this._addClass( "ui-droppable" );
      -
      -	},
      -
      -	_addToManager: function( scope ) {
      -
      -		// Add the reference and positions to the manager
      -		$.ui.ddmanager.droppables[ scope ] = $.ui.ddmanager.droppables[ scope ] || [];
      -		$.ui.ddmanager.droppables[ scope ].push( this );
      -	},
      -
      -	_splice: function( drop ) {
      -		var i = 0;
      -		for ( ; i < drop.length; i++ ) {
      -			if ( drop[ i ] === this ) {
      -				drop.splice( i, 1 );
      -			}
      -		}
      -	},
      -
      -	_destroy: function() {
      -		var drop = $.ui.ddmanager.droppables[ this.options.scope ];
      -
      -		this._splice( drop );
      -	},
      -
      -	_setOption: function( key, value ) {
      -
      -		if ( key === "accept" ) {
      -			this.accept = $.isFunction( value ) ? value : function( d ) {
      -				return d.is( value );
      -			};
      -		} else if ( key === "scope" ) {
      -			var drop = $.ui.ddmanager.droppables[ this.options.scope ];
      -
      -			this._splice( drop );
      -			this._addToManager( value );
      -		}
      -
      -		this._super( key, value );
      -	},
      -
      -	_activate: function( event ) {
      -		var draggable = $.ui.ddmanager.current;
      -
      -		this._addActiveClass();
      -		if ( draggable ) {
      -			this._trigger( "activate", event, this.ui( draggable ) );
      -		}
      -	},
      -
      -	_deactivate: function( event ) {
      -		var draggable = $.ui.ddmanager.current;
      -
      -		this._removeActiveClass();
      -		if ( draggable ) {
      -			this._trigger( "deactivate", event, this.ui( draggable ) );
      -		}
      -	},
      -
      -	_over: function( event ) {
      -
      -		var draggable = $.ui.ddmanager.current;
      -
      -		// Bail if draggable and droppable are same element
      -		if ( !draggable || ( draggable.currentItem ||
      -				draggable.element )[ 0 ] === this.element[ 0 ] ) {
      -			return;
      -		}
      -
      -		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
      -				draggable.element ) ) ) {
      -			this._addHoverClass();
      -			this._trigger( "over", event, this.ui( draggable ) );
      -		}
      -
      -	},
      -
      -	_out: function( event ) {
      -
      -		var draggable = $.ui.ddmanager.current;
      -
      -		// Bail if draggable and droppable are same element
      -		if ( !draggable || ( draggable.currentItem ||
      -				draggable.element )[ 0 ] === this.element[ 0 ] ) {
      -			return;
      -		}
      -
      -		if ( this.accept.call( this.element[ 0 ], ( draggable.currentItem ||
      -				draggable.element ) ) ) {
      -			this._removeHoverClass();
      -			this._trigger( "out", event, this.ui( draggable ) );
      -		}
      -
      -	},
      -
      -	_drop: function( event, custom ) {
      -
      -		var draggable = custom || $.ui.ddmanager.current,
      -			childrenIntersection = false;
      -
      -		// Bail if draggable and droppable are same element
      -		if ( !draggable || ( draggable.currentItem ||
      -				draggable.element )[ 0 ] === this.element[ 0 ] ) {
      -			return false;
      -		}
      -
      -		this.element
      -			.find( ":data(ui-droppable)" )
      -			.not( ".ui-draggable-dragging" )
      -			.each( function() {
      -				var inst = $( this ).droppable( "instance" );
      -				if (
      -					inst.options.greedy &&
      -					!inst.options.disabled &&
      -					inst.options.scope === draggable.options.scope &&
      -					inst.accept.call(
      -						inst.element[ 0 ], ( draggable.currentItem || draggable.element )
      -					) &&
      -					intersect(
      -						draggable,
      -						$.extend( inst, { offset: inst.element.offset() } ),
      -						inst.options.tolerance, event
      -					)
      -				) {
      -					childrenIntersection = true;
      -					return false; }
      -			} );
      -		if ( childrenIntersection ) {
      -			return false;
      -		}
      -
      -		if ( this.accept.call( this.element[ 0 ],
      -				( draggable.currentItem || draggable.element ) ) ) {
      -			this._removeActiveClass();
      -			this._removeHoverClass();
      -
      -			this._trigger( "drop", event, this.ui( draggable ) );
      -			return this.element;
      -		}
      -
      -		return false;
      -
      -	},
      -
      -	ui: function( c ) {
      -		return {
      -			draggable: ( c.currentItem || c.element ),
      -			helper: c.helper,
      -			position: c.position,
      -			offset: c.positionAbs
      -		};
      -	},
      -
      -	// Extension points just to make backcompat sane and avoid duplicating logic
      -	// TODO: Remove in 1.13 along with call to it below
      -	_addHoverClass: function() {
      -		this._addClass( "ui-droppable-hover" );
      -	},
      -
      -	_removeHoverClass: function() {
      -		this._removeClass( "ui-droppable-hover" );
      -	},
      -
      -	_addActiveClass: function() {
      -		this._addClass( "ui-droppable-active" );
      -	},
      -
      -	_removeActiveClass: function() {
      -		this._removeClass( "ui-droppable-active" );
      -	}
      -} );
      -
      -var intersect = $.ui.intersect = ( function() {
      -	function isOverAxis( x, reference, size ) {
      -		return ( x >= reference ) && ( x < ( reference + size ) );
      -	}
      -
      -	return function( draggable, droppable, toleranceMode, event ) {
      -
      -		if ( !droppable.offset ) {
      -			return false;
      -		}
      -
      -		var x1 = ( draggable.positionAbs ||
      -				draggable.position.absolute ).left + draggable.margins.left,
      -			y1 = ( draggable.positionAbs ||
      -				draggable.position.absolute ).top + draggable.margins.top,
      -			x2 = x1 + draggable.helperProportions.width,
      -			y2 = y1 + draggable.helperProportions.height,
      -			l = droppable.offset.left,
      -			t = droppable.offset.top,
      -			r = l + droppable.proportions().width,
      -			b = t + droppable.proportions().height;
      -
      -		switch ( toleranceMode ) {
      -		case "fit":
      -			return ( l <= x1 && x2 <= r && t <= y1 && y2 <= b );
      -		case "intersect":
      -			return ( l < x1 + ( draggable.helperProportions.width / 2 ) && // Right Half
      -				x2 - ( draggable.helperProportions.width / 2 ) < r && // Left Half
      -				t < y1 + ( draggable.helperProportions.height / 2 ) && // Bottom Half
      -				y2 - ( draggable.helperProportions.height / 2 ) < b ); // Top Half
      -		case "pointer":
      -			return isOverAxis( event.pageY, t, droppable.proportions().height ) &&
      -				isOverAxis( event.pageX, l, droppable.proportions().width );
      -		case "touch":
      -			return (
      -				( y1 >= t && y1 <= b ) || // Top edge touching
      -				( y2 >= t && y2 <= b ) || // Bottom edge touching
      -				( y1 < t && y2 > b ) // Surrounded vertically
      -			) && (
      -				( x1 >= l && x1 <= r ) || // Left edge touching
      -				( x2 >= l && x2 <= r ) || // Right edge touching
      -				( x1 < l && x2 > r ) // Surrounded horizontally
      -			);
      -		default:
      -			return false;
      -		}
      -	};
      -} )();
      -
      -/*
      -	This manager tracks offsets of draggables and droppables
      -*/
      -$.ui.ddmanager = {
      -	current: null,
      -	droppables: { "default": [] },
      -	prepareOffsets: function( t, event ) {
      -
      -		var i, j,
      -			m = $.ui.ddmanager.droppables[ t.options.scope ] || [],
      -			type = event ? event.type : null, // workaround for #2317
      -			list = ( t.currentItem || t.element ).find( ":data(ui-droppable)" ).addBack();
      -
      -		droppablesLoop: for ( i = 0; i < m.length; i++ ) {
      -
      -			// No disabled and non-accepted
      -			if ( m[ i ].options.disabled || ( t && !m[ i ].accept.call( m[ i ].element[ 0 ],
      -					( t.currentItem || t.element ) ) ) ) {
      -				continue;
      -			}
      -
      -			// Filter out elements in the current dragged item
      -			for ( j = 0; j < list.length; j++ ) {
      -				if ( list[ j ] === m[ i ].element[ 0 ] ) {
      -					m[ i ].proportions().height = 0;
      -					continue droppablesLoop;
      -				}
      -			}
      -
      -			m[ i ].visible = m[ i ].element.css( "display" ) !== "none";
      -			if ( !m[ i ].visible ) {
      -				continue;
      -			}
      -
      -			// Activate the droppable if used directly from draggables
      -			if ( type === "mousedown" ) {
      -				m[ i ]._activate.call( m[ i ], event );
      -			}
      -
      -			m[ i ].offset = m[ i ].element.offset();
      -			m[ i ].proportions( {
      -				width: m[ i ].element[ 0 ].offsetWidth,
      -				height: m[ i ].element[ 0 ].offsetHeight
      -			} );
      -
      -		}
      -
      -	},
      -	drop: function( draggable, event ) {
      -
      -		var dropped = false;
      -
      -		// Create a copy of the droppables in case the list changes during the drop (#9116)
      -		$.each( ( $.ui.ddmanager.droppables[ draggable.options.scope ] || [] ).slice(), function() {
      -
      -			if ( !this.options ) {
      -				return;
      -			}
      -			if ( !this.options.disabled && this.visible &&
      -					intersect( draggable, this, this.options.tolerance, event ) ) {
      -				dropped = this._drop.call( this, event ) || dropped;
      -			}
      -
      -			if ( !this.options.disabled && this.visible && this.accept.call( this.element[ 0 ],
      -					( draggable.currentItem || draggable.element ) ) ) {
      -				this.isout = true;
      -				this.isover = false;
      -				this._deactivate.call( this, event );
      -			}
      -
      -		} );
      -		return dropped;
      -
      -	},
      -	dragStart: function( draggable, event ) {
      -
      -		// Listen for scrolling so that if the dragging causes scrolling the position of the
      -		// droppables can be recalculated (see #5003)
      -		draggable.element.parentsUntil( "body" ).on( "scroll.droppable", function() {
      -			if ( !draggable.options.refreshPositions ) {
      -				$.ui.ddmanager.prepareOffsets( draggable, event );
      -			}
      -		} );
      -	},
      -	drag: function( draggable, event ) {
      -
      -		// If you have a highly dynamic page, you might try this option. It renders positions
      -		// every time you move the mouse.
      -		if ( draggable.options.refreshPositions ) {
      -			$.ui.ddmanager.prepareOffsets( draggable, event );
      -		}
      -
      -		// Run through all droppables and check their positions based on specific tolerance options
      -		$.each( $.ui.ddmanager.droppables[ draggable.options.scope ] || [], function() {
      -
      -			if ( this.options.disabled || this.greedyChild || !this.visible ) {
      -				return;
      -			}
      -
      -			var parentInstance, scope, parent,
      -				intersects = intersect( draggable, this, this.options.tolerance, event ),
      -				c = !intersects && this.isover ?
      -					"isout" :
      -					( intersects && !this.isover ? "isover" : null );
      -			if ( !c ) {
      -				return;
      -			}
      -
      -			if ( this.options.greedy ) {
      -
      -				// find droppable parents with same scope
      -				scope = this.options.scope;
      -				parent = this.element.parents( ":data(ui-droppable)" ).filter( function() {
      -					return $( this ).droppable( "instance" ).options.scope === scope;
      -				} );
      -
      -				if ( parent.length ) {
      -					parentInstance = $( parent[ 0 ] ).droppable( "instance" );
      -					parentInstance.greedyChild = ( c === "isover" );
      -				}
      -			}
      -
      -			// We just moved into a greedy child
      -			if ( parentInstance && c === "isover" ) {
      -				parentInstance.isover = false;
      -				parentInstance.isout = true;
      -				parentInstance._out.call( parentInstance, event );
      -			}
      -
      -			this[ c ] = true;
      -			this[ c === "isout" ? "isover" : "isout" ] = false;
      -			this[ c === "isover" ? "_over" : "_out" ].call( this, event );
      -
      -			// We just moved out of a greedy child
      -			if ( parentInstance && c === "isout" ) {
      -				parentInstance.isout = false;
      -				parentInstance.isover = true;
      -				parentInstance._over.call( parentInstance, event );
      -			}
      -		} );
      -
      -	},
      -	dragStop: function( draggable, event ) {
      -		draggable.element.parentsUntil( "body" ).off( "scroll.droppable" );
      -
      -		// Call prepareOffsets one final time since IE does not fire return scroll events when
      -		// overflow was caused by drag (see #5003)
      -		if ( !draggable.options.refreshPositions ) {
      -			$.ui.ddmanager.prepareOffsets( draggable, event );
      -		}
      -	}
      -};
      -
      -// DEPRECATED
      -// TODO: switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for activeClass and hoverClass options
      -	$.widget( "ui.droppable", $.ui.droppable, {
      -		options: {
      -			hoverClass: false,
      -			activeClass: false
      -		},
      -		_addActiveClass: function() {
      -			this._super();
      -			if ( this.options.activeClass ) {
      -				this.element.addClass( this.options.activeClass );
      -			}
      -		},
      -		_removeActiveClass: function() {
      -			this._super();
      -			if ( this.options.activeClass ) {
      -				this.element.removeClass( this.options.activeClass );
      -			}
      -		},
      -		_addHoverClass: function() {
      -			this._super();
      -			if ( this.options.hoverClass ) {
      -				this.element.addClass( this.options.hoverClass );
      -			}
      -		},
      -		_removeHoverClass: function() {
      -			this._super();
      -			if ( this.options.hoverClass ) {
      -				this.element.removeClass( this.options.hoverClass );
      -			}
      -		}
      -	} );
      -}
      -
      -return $.ui.droppable;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/menu.js b/bower_components/jquery-ui/ui/widgets/menu.js
      deleted file mode 100644
      index fd86527f77..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/menu.js
      +++ /dev/null
      @@ -1,673 +0,0 @@
      -/*!
      - * jQuery UI Menu 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Menu
      -//>>group: Widgets
      -//>>description: Creates nestable menus.
      -//>>docs: http://api.jqueryui.com/menu/
      -//>>demos: http://jqueryui.com/menu/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/menu.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../keycode",
      -			"../position",
      -			"../safe-active-element",
      -			"../unique-id",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.widget( "ui.menu", {
      -	version: "1.12.1",
      -	defaultElement: "<ul>",
      -	delay: 300,
      -	options: {
      -		icons: {
      -			submenu: "ui-icon-caret-1-e"
      -		},
      -		items: "> *",
      -		menus: "ul",
      -		position: {
      -			my: "left top",
      -			at: "right top"
      -		},
      -		role: "menu",
      -
      -		// Callbacks
      -		blur: null,
      -		focus: null,
      -		select: null
      -	},
      -
      -	_create: function() {
      -		this.activeMenu = this.element;
      -
      -		// Flag used to prevent firing of the click handler
      -		// as the event bubbles up through nested menus
      -		this.mouseHandled = false;
      -		this.element
      -			.uniqueId()
      -			.attr( {
      -				role: this.options.role,
      -				tabIndex: 0
      -			} );
      -
      -		this._addClass( "ui-menu", "ui-widget ui-widget-content" );
      -		this._on( {
      -
      -			// Prevent focus from sticking to links inside menu after clicking
      -			// them (focus should always stay on UL during navigation).
      -			"mousedown .ui-menu-item": function( event ) {
      -				event.preventDefault();
      -			},
      -			"click .ui-menu-item": function( event ) {
      -				var target = $( event.target );
      -				var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
      -				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
      -					this.select( event );
      -
      -					// Only set the mouseHandled flag if the event will bubble, see #9469.
      -					if ( !event.isPropagationStopped() ) {
      -						this.mouseHandled = true;
      -					}
      -
      -					// Open submenu on click
      -					if ( target.has( ".ui-menu" ).length ) {
      -						this.expand( event );
      -					} else if ( !this.element.is( ":focus" ) &&
      -							active.closest( ".ui-menu" ).length ) {
      -
      -						// Redirect focus to the menu
      -						this.element.trigger( "focus", [ true ] );
      -
      -						// If the active item is on the top level, let it stay active.
      -						// Otherwise, blur the active item since it is no longer visible.
      -						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
      -							clearTimeout( this.timer );
      -						}
      -					}
      -				}
      -			},
      -			"mouseenter .ui-menu-item": function( event ) {
      -
      -				// Ignore mouse events while typeahead is active, see #10458.
      -				// Prevents focusing the wrong item when typeahead causes a scroll while the mouse
      -				// is over an item in the menu
      -				if ( this.previousFilter ) {
      -					return;
      -				}
      -
      -				var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
      -					target = $( event.currentTarget );
      -
      -				// Ignore bubbled events on parent items, see #11641
      -				if ( actualTarget[ 0 ] !== target[ 0 ] ) {
      -					return;
      -				}
      -
      -				// Remove ui-state-active class from siblings of the newly focused menu item
      -				// to avoid a jump caused by adjacent elements both having a class with a border
      -				this._removeClass( target.siblings().children( ".ui-state-active" ),
      -					null, "ui-state-active" );
      -				this.focus( event, target );
      -			},
      -			mouseleave: "collapseAll",
      -			"mouseleave .ui-menu": "collapseAll",
      -			focus: function( event, keepActiveItem ) {
      -
      -				// If there's already an active item, keep it active
      -				// If not, activate the first item
      -				var item = this.active || this.element.find( this.options.items ).eq( 0 );
      -
      -				if ( !keepActiveItem ) {
      -					this.focus( event, item );
      -				}
      -			},
      -			blur: function( event ) {
      -				this._delay( function() {
      -					var notContained = !$.contains(
      -						this.element[ 0 ],
      -						$.ui.safeActiveElement( this.document[ 0 ] )
      -					);
      -					if ( notContained ) {
      -						this.collapseAll( event );
      -					}
      -				} );
      -			},
      -			keydown: "_keydown"
      -		} );
      -
      -		this.refresh();
      -
      -		// Clicks outside of a menu collapse any open menus
      -		this._on( this.document, {
      -			click: function( event ) {
      -				if ( this._closeOnDocumentClick( event ) ) {
      -					this.collapseAll( event );
      -				}
      -
      -				// Reset the mouseHandled flag
      -				this.mouseHandled = false;
      -			}
      -		} );
      -	},
      -
      -	_destroy: function() {
      -		var items = this.element.find( ".ui-menu-item" )
      -				.removeAttr( "role aria-disabled" ),
      -			submenus = items.children( ".ui-menu-item-wrapper" )
      -				.removeUniqueId()
      -				.removeAttr( "tabIndex role aria-haspopup" );
      -
      -		// Destroy (sub)menus
      -		this.element
      -			.removeAttr( "aria-activedescendant" )
      -			.find( ".ui-menu" ).addBack()
      -				.removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
      -					"tabIndex" )
      -				.removeUniqueId()
      -				.show();
      -
      -		submenus.children().each( function() {
      -			var elem = $( this );
      -			if ( elem.data( "ui-menu-submenu-caret" ) ) {
      -				elem.remove();
      -			}
      -		} );
      -	},
      -
      -	_keydown: function( event ) {
      -		var match, prev, character, skip,
      -			preventDefault = true;
      -
      -		switch ( event.keyCode ) {
      -		case $.ui.keyCode.PAGE_UP:
      -			this.previousPage( event );
      -			break;
      -		case $.ui.keyCode.PAGE_DOWN:
      -			this.nextPage( event );
      -			break;
      -		case $.ui.keyCode.HOME:
      -			this._move( "first", "first", event );
      -			break;
      -		case $.ui.keyCode.END:
      -			this._move( "last", "last", event );
      -			break;
      -		case $.ui.keyCode.UP:
      -			this.previous( event );
      -			break;
      -		case $.ui.keyCode.DOWN:
      -			this.next( event );
      -			break;
      -		case $.ui.keyCode.LEFT:
      -			this.collapse( event );
      -			break;
      -		case $.ui.keyCode.RIGHT:
      -			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
      -				this.expand( event );
      -			}
      -			break;
      -		case $.ui.keyCode.ENTER:
      -		case $.ui.keyCode.SPACE:
      -			this._activate( event );
      -			break;
      -		case $.ui.keyCode.ESCAPE:
      -			this.collapse( event );
      -			break;
      -		default:
      -			preventDefault = false;
      -			prev = this.previousFilter || "";
      -			skip = false;
      -
      -			// Support number pad values
      -			character = event.keyCode >= 96 && event.keyCode <= 105 ?
      -				( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
      -
      -			clearTimeout( this.filterTimer );
      -
      -			if ( character === prev ) {
      -				skip = true;
      -			} else {
      -				character = prev + character;
      -			}
      -
      -			match = this._filterMenuItems( character );
      -			match = skip && match.index( this.active.next() ) !== -1 ?
      -				this.active.nextAll( ".ui-menu-item" ) :
      -				match;
      -
      -			// If no matches on the current filter, reset to the last character pressed
      -			// to move down the menu to the first item that starts with that character
      -			if ( !match.length ) {
      -				character = String.fromCharCode( event.keyCode );
      -				match = this._filterMenuItems( character );
      -			}
      -
      -			if ( match.length ) {
      -				this.focus( event, match );
      -				this.previousFilter = character;
      -				this.filterTimer = this._delay( function() {
      -					delete this.previousFilter;
      -				}, 1000 );
      -			} else {
      -				delete this.previousFilter;
      -			}
      -		}
      -
      -		if ( preventDefault ) {
      -			event.preventDefault();
      -		}
      -	},
      -
      -	_activate: function( event ) {
      -		if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
      -			if ( this.active.children( "[aria-haspopup='true']" ).length ) {
      -				this.expand( event );
      -			} else {
      -				this.select( event );
      -			}
      -		}
      -	},
      -
      -	refresh: function() {
      -		var menus, items, newSubmenus, newItems, newWrappers,
      -			that = this,
      -			icon = this.options.icons.submenu,
      -			submenus = this.element.find( this.options.menus );
      -
      -		this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
      -
      -		// Initialize nested menus
      -		newSubmenus = submenus.filter( ":not(.ui-menu)" )
      -			.hide()
      -			.attr( {
      -				role: this.options.role,
      -				"aria-hidden": "true",
      -				"aria-expanded": "false"
      -			} )
      -			.each( function() {
      -				var menu = $( this ),
      -					item = menu.prev(),
      -					submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
      -
      -				that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
      -				item
      -					.attr( "aria-haspopup", "true" )
      -					.prepend( submenuCaret );
      -				menu.attr( "aria-labelledby", item.attr( "id" ) );
      -			} );
      -
      -		this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
      -
      -		menus = submenus.add( this.element );
      -		items = menus.find( this.options.items );
      -
      -		// Initialize menu-items containing spaces and/or dashes only as dividers
      -		items.not( ".ui-menu-item" ).each( function() {
      -			var item = $( this );
      -			if ( that._isDivider( item ) ) {
      -				that._addClass( item, "ui-menu-divider", "ui-widget-content" );
      -			}
      -		} );
      -
      -		// Don't refresh list items that are already adapted
      -		newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
      -		newWrappers = newItems.children()
      -			.not( ".ui-menu" )
      -				.uniqueId()
      -				.attr( {
      -					tabIndex: -1,
      -					role: this._itemRole()
      -				} );
      -		this._addClass( newItems, "ui-menu-item" )
      -			._addClass( newWrappers, "ui-menu-item-wrapper" );
      -
      -		// Add aria-disabled attribute to any disabled menu item
      -		items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
      -
      -		// If the active item has been removed, blur the menu
      -		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
      -			this.blur();
      -		}
      -	},
      -
      -	_itemRole: function() {
      -		return {
      -			menu: "menuitem",
      -			listbox: "option"
      -		}[ this.options.role ];
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "icons" ) {
      -			var icons = this.element.find( ".ui-menu-icon" );
      -			this._removeClass( icons, null, this.options.icons.submenu )
      -				._addClass( icons, null, value.submenu );
      -		}
      -		this._super( key, value );
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.element.attr( "aria-disabled", String( value ) );
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -	},
      -
      -	focus: function( event, item ) {
      -		var nested, focused, activeParent;
      -		this.blur( event, event && event.type === "focus" );
      -
      -		this._scrollIntoView( item );
      -
      -		this.active = item.first();
      -
      -		focused = this.active.children( ".ui-menu-item-wrapper" );
      -		this._addClass( focused, null, "ui-state-active" );
      -
      -		// Only update aria-activedescendant if there's a role
      -		// otherwise we assume focus is managed elsewhere
      -		if ( this.options.role ) {
      -			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
      -		}
      -
      -		// Highlight active parent menu item, if any
      -		activeParent = this.active
      -			.parent()
      -				.closest( ".ui-menu-item" )
      -					.children( ".ui-menu-item-wrapper" );
      -		this._addClass( activeParent, null, "ui-state-active" );
      -
      -		if ( event && event.type === "keydown" ) {
      -			this._close();
      -		} else {
      -			this.timer = this._delay( function() {
      -				this._close();
      -			}, this.delay );
      -		}
      -
      -		nested = item.children( ".ui-menu" );
      -		if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
      -			this._startOpening( nested );
      -		}
      -		this.activeMenu = item.parent();
      -
      -		this._trigger( "focus", event, { item: item } );
      -	},
      -
      -	_scrollIntoView: function( item ) {
      -		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
      -		if ( this._hasScroll() ) {
      -			borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
      -			paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
      -			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
      -			scroll = this.activeMenu.scrollTop();
      -			elementHeight = this.activeMenu.height();
      -			itemHeight = item.outerHeight();
      -
      -			if ( offset < 0 ) {
      -				this.activeMenu.scrollTop( scroll + offset );
      -			} else if ( offset + itemHeight > elementHeight ) {
      -				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
      -			}
      -		}
      -	},
      -
      -	blur: function( event, fromFocus ) {
      -		if ( !fromFocus ) {
      -			clearTimeout( this.timer );
      -		}
      -
      -		if ( !this.active ) {
      -			return;
      -		}
      -
      -		this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
      -			null, "ui-state-active" );
      -
      -		this._trigger( "blur", event, { item: this.active } );
      -		this.active = null;
      -	},
      -
      -	_startOpening: function( submenu ) {
      -		clearTimeout( this.timer );
      -
      -		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
      -		// shift in the submenu position when mousing over the caret icon
      -		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
      -			return;
      -		}
      -
      -		this.timer = this._delay( function() {
      -			this._close();
      -			this._open( submenu );
      -		}, this.delay );
      -	},
      -
      -	_open: function( submenu ) {
      -		var position = $.extend( {
      -			of: this.active
      -		}, this.options.position );
      -
      -		clearTimeout( this.timer );
      -		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
      -			.hide()
      -			.attr( "aria-hidden", "true" );
      -
      -		submenu
      -			.show()
      -			.removeAttr( "aria-hidden" )
      -			.attr( "aria-expanded", "true" )
      -			.position( position );
      -	},
      -
      -	collapseAll: function( event, all ) {
      -		clearTimeout( this.timer );
      -		this.timer = this._delay( function() {
      -
      -			// If we were passed an event, look for the submenu that contains the event
      -			var currentMenu = all ? this.element :
      -				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
      -
      -			// If we found no valid submenu ancestor, use the main menu to close all
      -			// sub menus anyway
      -			if ( !currentMenu.length ) {
      -				currentMenu = this.element;
      -			}
      -
      -			this._close( currentMenu );
      -
      -			this.blur( event );
      -
      -			// Work around active item staying active after menu is blurred
      -			this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
      -
      -			this.activeMenu = currentMenu;
      -		}, this.delay );
      -	},
      -
      -	// With no arguments, closes the currently active menu - if nothing is active
      -	// it closes all menus.  If passed an argument, it will search for menus BELOW
      -	_close: function( startMenu ) {
      -		if ( !startMenu ) {
      -			startMenu = this.active ? this.active.parent() : this.element;
      -		}
      -
      -		startMenu.find( ".ui-menu" )
      -			.hide()
      -			.attr( "aria-hidden", "true" )
      -			.attr( "aria-expanded", "false" );
      -	},
      -
      -	_closeOnDocumentClick: function( event ) {
      -		return !$( event.target ).closest( ".ui-menu" ).length;
      -	},
      -
      -	_isDivider: function( item ) {
      -
      -		// Match hyphen, em dash, en dash
      -		return !/[^\-\u2014\u2013\s]/.test( item.text() );
      -	},
      -
      -	collapse: function( event ) {
      -		var newItem = this.active &&
      -			this.active.parent().closest( ".ui-menu-item", this.element );
      -		if ( newItem && newItem.length ) {
      -			this._close();
      -			this.focus( event, newItem );
      -		}
      -	},
      -
      -	expand: function( event ) {
      -		var newItem = this.active &&
      -			this.active
      -				.children( ".ui-menu " )
      -					.find( this.options.items )
      -						.first();
      -
      -		if ( newItem && newItem.length ) {
      -			this._open( newItem.parent() );
      -
      -			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
      -			this._delay( function() {
      -				this.focus( event, newItem );
      -			} );
      -		}
      -	},
      -
      -	next: function( event ) {
      -		this._move( "next", "first", event );
      -	},
      -
      -	previous: function( event ) {
      -		this._move( "prev", "last", event );
      -	},
      -
      -	isFirstItem: function() {
      -		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
      -	},
      -
      -	isLastItem: function() {
      -		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
      -	},
      -
      -	_move: function( direction, filter, event ) {
      -		var next;
      -		if ( this.active ) {
      -			if ( direction === "first" || direction === "last" ) {
      -				next = this.active
      -					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
      -					.eq( -1 );
      -			} else {
      -				next = this.active
      -					[ direction + "All" ]( ".ui-menu-item" )
      -					.eq( 0 );
      -			}
      -		}
      -		if ( !next || !next.length || !this.active ) {
      -			next = this.activeMenu.find( this.options.items )[ filter ]();
      -		}
      -
      -		this.focus( event, next );
      -	},
      -
      -	nextPage: function( event ) {
      -		var item, base, height;
      -
      -		if ( !this.active ) {
      -			this.next( event );
      -			return;
      -		}
      -		if ( this.isLastItem() ) {
      -			return;
      -		}
      -		if ( this._hasScroll() ) {
      -			base = this.active.offset().top;
      -			height = this.element.height();
      -			this.active.nextAll( ".ui-menu-item" ).each( function() {
      -				item = $( this );
      -				return item.offset().top - base - height < 0;
      -			} );
      -
      -			this.focus( event, item );
      -		} else {
      -			this.focus( event, this.activeMenu.find( this.options.items )
      -				[ !this.active ? "first" : "last" ]() );
      -		}
      -	},
      -
      -	previousPage: function( event ) {
      -		var item, base, height;
      -		if ( !this.active ) {
      -			this.next( event );
      -			return;
      -		}
      -		if ( this.isFirstItem() ) {
      -			return;
      -		}
      -		if ( this._hasScroll() ) {
      -			base = this.active.offset().top;
      -			height = this.element.height();
      -			this.active.prevAll( ".ui-menu-item" ).each( function() {
      -				item = $( this );
      -				return item.offset().top - base + height > 0;
      -			} );
      -
      -			this.focus( event, item );
      -		} else {
      -			this.focus( event, this.activeMenu.find( this.options.items ).first() );
      -		}
      -	},
      -
      -	_hasScroll: function() {
      -		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
      -	},
      -
      -	select: function( event ) {
      -
      -		// TODO: It should never be possible to not have an active item at this
      -		// point, but the tests don't trigger mouseenter before click.
      -		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
      -		var ui = { item: this.active };
      -		if ( !this.active.has( ".ui-menu" ).length ) {
      -			this.collapseAll( event, true );
      -		}
      -		this._trigger( "select", event, ui );
      -	},
      -
      -	_filterMenuItems: function( character ) {
      -		var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
      -			regex = new RegExp( "^" + escapedCharacter, "i" );
      -
      -		return this.activeMenu
      -			.find( this.options.items )
      -
      -				// Only match on items, not dividers or other content (#10571)
      -				.filter( ".ui-menu-item" )
      -					.filter( function() {
      -						return regex.test(
      -							$.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
      -					} );
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/mouse.js b/bower_components/jquery-ui/ui/widgets/mouse.js
      deleted file mode 100644
      index 11a201aa28..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/mouse.js
      +++ /dev/null
      @@ -1,226 +0,0 @@
      -/*!
      - * jQuery UI Mouse 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Mouse
      -//>>group: Widgets
      -//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.
      -//>>docs: http://api.jqueryui.com/mouse/
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../ie",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -var mouseHandled = false;
      -$( document ).on( "mouseup", function() {
      -	mouseHandled = false;
      -} );
      -
      -return $.widget( "ui.mouse", {
      -	version: "1.12.1",
      -	options: {
      -		cancel: "input, textarea, button, select, option",
      -		distance: 1,
      -		delay: 0
      -	},
      -	_mouseInit: function() {
      -		var that = this;
      -
      -		this.element
      -			.on( "mousedown." + this.widgetName, function( event ) {
      -				return that._mouseDown( event );
      -			} )
      -			.on( "click." + this.widgetName, function( event ) {
      -				if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) {
      -					$.removeData( event.target, that.widgetName + ".preventClickEvent" );
      -					event.stopImmediatePropagation();
      -					return false;
      -				}
      -			} );
      -
      -		this.started = false;
      -	},
      -
      -	// TODO: make sure destroying one instance of mouse doesn't mess with
      -	// other instances of mouse
      -	_mouseDestroy: function() {
      -		this.element.off( "." + this.widgetName );
      -		if ( this._mouseMoveDelegate ) {
      -			this.document
      -				.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
      -				.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
      -		}
      -	},
      -
      -	_mouseDown: function( event ) {
      -
      -		// don't let more than one widget handle mouseStart
      -		if ( mouseHandled ) {
      -			return;
      -		}
      -
      -		this._mouseMoved = false;
      -
      -		// We may have missed mouseup (out of window)
      -		( this._mouseStarted && this._mouseUp( event ) );
      -
      -		this._mouseDownEvent = event;
      -
      -		var that = this,
      -			btnIsLeft = ( event.which === 1 ),
      -
      -			// event.target.nodeName works around a bug in IE 8 with
      -			// disabled inputs (#7620)
      -			elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ?
      -				$( event.target ).closest( this.options.cancel ).length : false );
      -		if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {
      -			return true;
      -		}
      -
      -		this.mouseDelayMet = !this.options.delay;
      -		if ( !this.mouseDelayMet ) {
      -			this._mouseDelayTimer = setTimeout( function() {
      -				that.mouseDelayMet = true;
      -			}, this.options.delay );
      -		}
      -
      -		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
      -			this._mouseStarted = ( this._mouseStart( event ) !== false );
      -			if ( !this._mouseStarted ) {
      -				event.preventDefault();
      -				return true;
      -			}
      -		}
      -
      -		// Click event may never have fired (Gecko & Opera)
      -		if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) {
      -			$.removeData( event.target, this.widgetName + ".preventClickEvent" );
      -		}
      -
      -		// These delegates are required to keep context
      -		this._mouseMoveDelegate = function( event ) {
      -			return that._mouseMove( event );
      -		};
      -		this._mouseUpDelegate = function( event ) {
      -			return that._mouseUp( event );
      -		};
      -
      -		this.document
      -			.on( "mousemove." + this.widgetName, this._mouseMoveDelegate )
      -			.on( "mouseup." + this.widgetName, this._mouseUpDelegate );
      -
      -		event.preventDefault();
      -
      -		mouseHandled = true;
      -		return true;
      -	},
      -
      -	_mouseMove: function( event ) {
      -
      -		// Only check for mouseups outside the document if you've moved inside the document
      -		// at least once. This prevents the firing of mouseup in the case of IE<9, which will
      -		// fire a mousemove event if content is placed under the cursor. See #7778
      -		// Support: IE <9
      -		if ( this._mouseMoved ) {
      -
      -			// IE mouseup check - mouseup happened when mouse was out of window
      -			if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&
      -					!event.button ) {
      -				return this._mouseUp( event );
      -
      -			// Iframe mouseup check - mouseup occurred in another document
      -			} else if ( !event.which ) {
      -
      -				// Support: Safari <=8 - 9
      -				// Safari sets which to 0 if you press any of the following keys
      -				// during a drag (#14461)
      -				if ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||
      -						event.originalEvent.metaKey || event.originalEvent.shiftKey ) {
      -					this.ignoreMissingWhich = true;
      -				} else if ( !this.ignoreMissingWhich ) {
      -					return this._mouseUp( event );
      -				}
      -			}
      -		}
      -
      -		if ( event.which || event.button ) {
      -			this._mouseMoved = true;
      -		}
      -
      -		if ( this._mouseStarted ) {
      -			this._mouseDrag( event );
      -			return event.preventDefault();
      -		}
      -
      -		if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {
      -			this._mouseStarted =
      -				( this._mouseStart( this._mouseDownEvent, event ) !== false );
      -			( this._mouseStarted ? this._mouseDrag( event ) : this._mouseUp( event ) );
      -		}
      -
      -		return !this._mouseStarted;
      -	},
      -
      -	_mouseUp: function( event ) {
      -		this.document
      -			.off( "mousemove." + this.widgetName, this._mouseMoveDelegate )
      -			.off( "mouseup." + this.widgetName, this._mouseUpDelegate );
      -
      -		if ( this._mouseStarted ) {
      -			this._mouseStarted = false;
      -
      -			if ( event.target === this._mouseDownEvent.target ) {
      -				$.data( event.target, this.widgetName + ".preventClickEvent", true );
      -			}
      -
      -			this._mouseStop( event );
      -		}
      -
      -		if ( this._mouseDelayTimer ) {
      -			clearTimeout( this._mouseDelayTimer );
      -			delete this._mouseDelayTimer;
      -		}
      -
      -		this.ignoreMissingWhich = false;
      -		mouseHandled = false;
      -		event.preventDefault();
      -	},
      -
      -	_mouseDistanceMet: function( event ) {
      -		return ( Math.max(
      -				Math.abs( this._mouseDownEvent.pageX - event.pageX ),
      -				Math.abs( this._mouseDownEvent.pageY - event.pageY )
      -			) >= this.options.distance
      -		);
      -	},
      -
      -	_mouseDelayMet: function( /* event */ ) {
      -		return this.mouseDelayMet;
      -	},
      -
      -	// These are placeholder methods, to be overriden by extending plugin
      -	_mouseStart: function( /* event */ ) {},
      -	_mouseDrag: function( /* event */ ) {},
      -	_mouseStop: function( /* event */ ) {},
      -	_mouseCapture: function( /* event */ ) { return true; }
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/progressbar.js b/bower_components/jquery-ui/ui/widgets/progressbar.js
      deleted file mode 100644
      index 89beb58704..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/progressbar.js
      +++ /dev/null
      @@ -1,178 +0,0 @@
      -/*!
      - * jQuery UI Progressbar 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Progressbar
      -//>>group: Widgets
      -// jscs:disable maximumLineLength
      -//>>description: Displays a status indicator for loading state, standard percentage, and other progress indicators.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/progressbar/
      -//>>demos: http://jqueryui.com/progressbar/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/progressbar.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.widget( "ui.progressbar", {
      -	version: "1.12.1",
      -	options: {
      -		classes: {
      -			"ui-progressbar": "ui-corner-all",
      -			"ui-progressbar-value": "ui-corner-left",
      -			"ui-progressbar-complete": "ui-corner-right"
      -		},
      -		max: 100,
      -		value: 0,
      -
      -		change: null,
      -		complete: null
      -	},
      -
      -	min: 0,
      -
      -	_create: function() {
      -
      -		// Constrain initial value
      -		this.oldValue = this.options.value = this._constrainedValue();
      -
      -		this.element.attr( {
      -
      -			// Only set static values; aria-valuenow and aria-valuemax are
      -			// set inside _refreshValue()
      -			role: "progressbar",
      -			"aria-valuemin": this.min
      -		} );
      -		this._addClass( "ui-progressbar", "ui-widget ui-widget-content" );
      -
      -		this.valueDiv = $( "<div>" ).appendTo( this.element );
      -		this._addClass( this.valueDiv, "ui-progressbar-value", "ui-widget-header" );
      -		this._refreshValue();
      -	},
      -
      -	_destroy: function() {
      -		this.element.removeAttr( "role aria-valuemin aria-valuemax aria-valuenow" );
      -
      -		this.valueDiv.remove();
      -	},
      -
      -	value: function( newValue ) {
      -		if ( newValue === undefined ) {
      -			return this.options.value;
      -		}
      -
      -		this.options.value = this._constrainedValue( newValue );
      -		this._refreshValue();
      -	},
      -
      -	_constrainedValue: function( newValue ) {
      -		if ( newValue === undefined ) {
      -			newValue = this.options.value;
      -		}
      -
      -		this.indeterminate = newValue === false;
      -
      -		// Sanitize value
      -		if ( typeof newValue !== "number" ) {
      -			newValue = 0;
      -		}
      -
      -		return this.indeterminate ? false :
      -			Math.min( this.options.max, Math.max( this.min, newValue ) );
      -	},
      -
      -	_setOptions: function( options ) {
      -
      -		// Ensure "value" option is set after other values (like max)
      -		var value = options.value;
      -		delete options.value;
      -
      -		this._super( options );
      -
      -		this.options.value = this._constrainedValue( value );
      -		this._refreshValue();
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "max" ) {
      -
      -			// Don't allow a max less than min
      -			value = Math.max( this.min, value );
      -		}
      -		this._super( key, value );
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.element.attr( "aria-disabled", value );
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -	},
      -
      -	_percentage: function() {
      -		return this.indeterminate ?
      -			100 :
      -			100 * ( this.options.value - this.min ) / ( this.options.max - this.min );
      -	},
      -
      -	_refreshValue: function() {
      -		var value = this.options.value,
      -			percentage = this._percentage();
      -
      -		this.valueDiv
      -			.toggle( this.indeterminate || value > this.min )
      -			.width( percentage.toFixed( 0 ) + "%" );
      -
      -		this
      -			._toggleClass( this.valueDiv, "ui-progressbar-complete", null,
      -				value === this.options.max )
      -			._toggleClass( "ui-progressbar-indeterminate", null, this.indeterminate );
      -
      -		if ( this.indeterminate ) {
      -			this.element.removeAttr( "aria-valuenow" );
      -			if ( !this.overlayDiv ) {
      -				this.overlayDiv = $( "<div>" ).appendTo( this.valueDiv );
      -				this._addClass( this.overlayDiv, "ui-progressbar-overlay" );
      -			}
      -		} else {
      -			this.element.attr( {
      -				"aria-valuemax": this.options.max,
      -				"aria-valuenow": value
      -			} );
      -			if ( this.overlayDiv ) {
      -				this.overlayDiv.remove();
      -				this.overlayDiv = null;
      -			}
      -		}
      -
      -		if ( this.oldValue !== value ) {
      -			this.oldValue = value;
      -			this._trigger( "change" );
      -		}
      -		if ( value === this.options.max ) {
      -			this._trigger( "complete" );
      -		}
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/resizable.js b/bower_components/jquery-ui/ui/widgets/resizable.js
      deleted file mode 100644
      index 741664281d..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/resizable.js
      +++ /dev/null
      @@ -1,1201 +0,0 @@
      -/*!
      - * jQuery UI Resizable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Resizable
      -//>>group: Interactions
      -//>>description: Enables resize functionality for any element.
      -//>>docs: http://api.jqueryui.com/resizable/
      -//>>demos: http://jqueryui.com/resizable/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/resizable.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./mouse",
      -			"../disable-selection",
      -			"../plugin",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.resizable", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "resize",
      -	options: {
      -		alsoResize: false,
      -		animate: false,
      -		animateDuration: "slow",
      -		animateEasing: "swing",
      -		aspectRatio: false,
      -		autoHide: false,
      -		classes: {
      -			"ui-resizable-se": "ui-icon ui-icon-gripsmall-diagonal-se"
      -		},
      -		containment: false,
      -		ghost: false,
      -		grid: false,
      -		handles: "e,s,se",
      -		helper: false,
      -		maxHeight: null,
      -		maxWidth: null,
      -		minHeight: 10,
      -		minWidth: 10,
      -
      -		// See #7960
      -		zIndex: 90,
      -
      -		// Callbacks
      -		resize: null,
      -		start: null,
      -		stop: null
      -	},
      -
      -	_num: function( value ) {
      -		return parseFloat( value ) || 0;
      -	},
      -
      -	_isNumber: function( value ) {
      -		return !isNaN( parseFloat( value ) );
      -	},
      -
      -	_hasScroll: function( el, a ) {
      -
      -		if ( $( el ).css( "overflow" ) === "hidden" ) {
      -			return false;
      -		}
      -
      -		var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
      -			has = false;
      -
      -		if ( el[ scroll ] > 0 ) {
      -			return true;
      -		}
      -
      -		// TODO: determine which cases actually cause this to happen
      -		// if the element doesn't have the scroll set, see if it's possible to
      -		// set the scroll
      -		el[ scroll ] = 1;
      -		has = ( el[ scroll ] > 0 );
      -		el[ scroll ] = 0;
      -		return has;
      -	},
      -
      -	_create: function() {
      -
      -		var margins,
      -			o = this.options,
      -			that = this;
      -		this._addClass( "ui-resizable" );
      -
      -		$.extend( this, {
      -			_aspectRatio: !!( o.aspectRatio ),
      -			aspectRatio: o.aspectRatio,
      -			originalElement: this.element,
      -			_proportionallyResizeElements: [],
      -			_helper: o.helper || o.ghost || o.animate ? o.helper || "ui-resizable-helper" : null
      -		} );
      -
      -		// Wrap the element if it cannot hold child nodes
      -		if ( this.element[ 0 ].nodeName.match( /^(canvas|textarea|input|select|button|img)$/i ) ) {
      -
      -			this.element.wrap(
      -				$( "<div class='ui-wrapper' style='overflow: hidden;'></div>" ).css( {
      -					position: this.element.css( "position" ),
      -					width: this.element.outerWidth(),
      -					height: this.element.outerHeight(),
      -					top: this.element.css( "top" ),
      -					left: this.element.css( "left" )
      -				} )
      -			);
      -
      -			this.element = this.element.parent().data(
      -				"ui-resizable", this.element.resizable( "instance" )
      -			);
      -
      -			this.elementIsWrapper = true;
      -
      -			margins = {
      -				marginTop: this.originalElement.css( "marginTop" ),
      -				marginRight: this.originalElement.css( "marginRight" ),
      -				marginBottom: this.originalElement.css( "marginBottom" ),
      -				marginLeft: this.originalElement.css( "marginLeft" )
      -			};
      -
      -			this.element.css( margins );
      -			this.originalElement.css( "margin", 0 );
      -
      -			// support: Safari
      -			// Prevent Safari textarea resize
      -			this.originalResizeStyle = this.originalElement.css( "resize" );
      -			this.originalElement.css( "resize", "none" );
      -
      -			this._proportionallyResizeElements.push( this.originalElement.css( {
      -				position: "static",
      -				zoom: 1,
      -				display: "block"
      -			} ) );
      -
      -			// Support: IE9
      -			// avoid IE jump (hard set the margin)
      -			this.originalElement.css( margins );
      -
      -			this._proportionallyResize();
      -		}
      -
      -		this._setupHandles();
      -
      -		if ( o.autoHide ) {
      -			$( this.element )
      -				.on( "mouseenter", function() {
      -					if ( o.disabled ) {
      -						return;
      -					}
      -					that._removeClass( "ui-resizable-autohide" );
      -					that._handles.show();
      -				} )
      -				.on( "mouseleave", function() {
      -					if ( o.disabled ) {
      -						return;
      -					}
      -					if ( !that.resizing ) {
      -						that._addClass( "ui-resizable-autohide" );
      -						that._handles.hide();
      -					}
      -				} );
      -		}
      -
      -		this._mouseInit();
      -	},
      -
      -	_destroy: function() {
      -
      -		this._mouseDestroy();
      -
      -		var wrapper,
      -			_destroy = function( exp ) {
      -				$( exp )
      -					.removeData( "resizable" )
      -					.removeData( "ui-resizable" )
      -					.off( ".resizable" )
      -					.find( ".ui-resizable-handle" )
      -						.remove();
      -			};
      -
      -		// TODO: Unwrap at same DOM position
      -		if ( this.elementIsWrapper ) {
      -			_destroy( this.element );
      -			wrapper = this.element;
      -			this.originalElement.css( {
      -				position: wrapper.css( "position" ),
      -				width: wrapper.outerWidth(),
      -				height: wrapper.outerHeight(),
      -				top: wrapper.css( "top" ),
      -				left: wrapper.css( "left" )
      -			} ).insertAfter( wrapper );
      -			wrapper.remove();
      -		}
      -
      -		this.originalElement.css( "resize", this.originalResizeStyle );
      -		_destroy( this.originalElement );
      -
      -		return this;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -
      -		switch ( key ) {
      -		case "handles":
      -			this._removeHandles();
      -			this._setupHandles();
      -			break;
      -		default:
      -			break;
      -		}
      -	},
      -
      -	_setupHandles: function() {
      -		var o = this.options, handle, i, n, hname, axis, that = this;
      -		this.handles = o.handles ||
      -			( !$( ".ui-resizable-handle", this.element ).length ?
      -				"e,s,se" : {
      -					n: ".ui-resizable-n",
      -					e: ".ui-resizable-e",
      -					s: ".ui-resizable-s",
      -					w: ".ui-resizable-w",
      -					se: ".ui-resizable-se",
      -					sw: ".ui-resizable-sw",
      -					ne: ".ui-resizable-ne",
      -					nw: ".ui-resizable-nw"
      -				} );
      -
      -		this._handles = $();
      -		if ( this.handles.constructor === String ) {
      -
      -			if ( this.handles === "all" ) {
      -				this.handles = "n,e,s,w,se,sw,ne,nw";
      -			}
      -
      -			n = this.handles.split( "," );
      -			this.handles = {};
      -
      -			for ( i = 0; i < n.length; i++ ) {
      -
      -				handle = $.trim( n[ i ] );
      -				hname = "ui-resizable-" + handle;
      -				axis = $( "<div>" );
      -				this._addClass( axis, "ui-resizable-handle " + hname );
      -
      -				axis.css( { zIndex: o.zIndex } );
      -
      -				this.handles[ handle ] = ".ui-resizable-" + handle;
      -				this.element.append( axis );
      -			}
      -
      -		}
      -
      -		this._renderAxis = function( target ) {
      -
      -			var i, axis, padPos, padWrapper;
      -
      -			target = target || this.element;
      -
      -			for ( i in this.handles ) {
      -
      -				if ( this.handles[ i ].constructor === String ) {
      -					this.handles[ i ] = this.element.children( this.handles[ i ] ).first().show();
      -				} else if ( this.handles[ i ].jquery || this.handles[ i ].nodeType ) {
      -					this.handles[ i ] = $( this.handles[ i ] );
      -					this._on( this.handles[ i ], { "mousedown": that._mouseDown } );
      -				}
      -
      -				if ( this.elementIsWrapper &&
      -						this.originalElement[ 0 ]
      -							.nodeName
      -							.match( /^(textarea|input|select|button)$/i ) ) {
      -					axis = $( this.handles[ i ], this.element );
      -
      -					padWrapper = /sw|ne|nw|se|n|s/.test( i ) ?
      -						axis.outerHeight() :
      -						axis.outerWidth();
      -
      -					padPos = [ "padding",
      -						/ne|nw|n/.test( i ) ? "Top" :
      -						/se|sw|s/.test( i ) ? "Bottom" :
      -						/^e$/.test( i ) ? "Right" : "Left" ].join( "" );
      -
      -					target.css( padPos, padWrapper );
      -
      -					this._proportionallyResize();
      -				}
      -
      -				this._handles = this._handles.add( this.handles[ i ] );
      -			}
      -		};
      -
      -		// TODO: make renderAxis a prototype function
      -		this._renderAxis( this.element );
      -
      -		this._handles = this._handles.add( this.element.find( ".ui-resizable-handle" ) );
      -		this._handles.disableSelection();
      -
      -		this._handles.on( "mouseover", function() {
      -			if ( !that.resizing ) {
      -				if ( this.className ) {
      -					axis = this.className.match( /ui-resizable-(se|sw|ne|nw|n|e|s|w)/i );
      -				}
      -				that.axis = axis && axis[ 1 ] ? axis[ 1 ] : "se";
      -			}
      -		} );
      -
      -		if ( o.autoHide ) {
      -			this._handles.hide();
      -			this._addClass( "ui-resizable-autohide" );
      -		}
      -	},
      -
      -	_removeHandles: function() {
      -		this._handles.remove();
      -	},
      -
      -	_mouseCapture: function( event ) {
      -		var i, handle,
      -			capture = false;
      -
      -		for ( i in this.handles ) {
      -			handle = $( this.handles[ i ] )[ 0 ];
      -			if ( handle === event.target || $.contains( handle, event.target ) ) {
      -				capture = true;
      -			}
      -		}
      -
      -		return !this.options.disabled && capture;
      -	},
      -
      -	_mouseStart: function( event ) {
      -
      -		var curleft, curtop, cursor,
      -			o = this.options,
      -			el = this.element;
      -
      -		this.resizing = true;
      -
      -		this._renderProxy();
      -
      -		curleft = this._num( this.helper.css( "left" ) );
      -		curtop = this._num( this.helper.css( "top" ) );
      -
      -		if ( o.containment ) {
      -			curleft += $( o.containment ).scrollLeft() || 0;
      -			curtop += $( o.containment ).scrollTop() || 0;
      -		}
      -
      -		this.offset = this.helper.offset();
      -		this.position = { left: curleft, top: curtop };
      -
      -		this.size = this._helper ? {
      -				width: this.helper.width(),
      -				height: this.helper.height()
      -			} : {
      -				width: el.width(),
      -				height: el.height()
      -			};
      -
      -		this.originalSize = this._helper ? {
      -				width: el.outerWidth(),
      -				height: el.outerHeight()
      -			} : {
      -				width: el.width(),
      -				height: el.height()
      -			};
      -
      -		this.sizeDiff = {
      -			width: el.outerWidth() - el.width(),
      -			height: el.outerHeight() - el.height()
      -		};
      -
      -		this.originalPosition = { left: curleft, top: curtop };
      -		this.originalMousePosition = { left: event.pageX, top: event.pageY };
      -
      -		this.aspectRatio = ( typeof o.aspectRatio === "number" ) ?
      -			o.aspectRatio :
      -			( ( this.originalSize.width / this.originalSize.height ) || 1 );
      -
      -		cursor = $( ".ui-resizable-" + this.axis ).css( "cursor" );
      -		$( "body" ).css( "cursor", cursor === "auto" ? this.axis + "-resize" : cursor );
      -
      -		this._addClass( "ui-resizable-resizing" );
      -		this._propagate( "start", event );
      -		return true;
      -	},
      -
      -	_mouseDrag: function( event ) {
      -
      -		var data, props,
      -			smp = this.originalMousePosition,
      -			a = this.axis,
      -			dx = ( event.pageX - smp.left ) || 0,
      -			dy = ( event.pageY - smp.top ) || 0,
      -			trigger = this._change[ a ];
      -
      -		this._updatePrevProperties();
      -
      -		if ( !trigger ) {
      -			return false;
      -		}
      -
      -		data = trigger.apply( this, [ event, dx, dy ] );
      -
      -		this._updateVirtualBoundaries( event.shiftKey );
      -		if ( this._aspectRatio || event.shiftKey ) {
      -			data = this._updateRatio( data, event );
      -		}
      -
      -		data = this._respectSize( data, event );
      -
      -		this._updateCache( data );
      -
      -		this._propagate( "resize", event );
      -
      -		props = this._applyChanges();
      -
      -		if ( !this._helper && this._proportionallyResizeElements.length ) {
      -			this._proportionallyResize();
      -		}
      -
      -		if ( !$.isEmptyObject( props ) ) {
      -			this._updatePrevProperties();
      -			this._trigger( "resize", event, this.ui() );
      -			this._applyChanges();
      -		}
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -
      -		this.resizing = false;
      -		var pr, ista, soffseth, soffsetw, s, left, top,
      -			o = this.options, that = this;
      -
      -		if ( this._helper ) {
      -
      -			pr = this._proportionallyResizeElements;
      -			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName );
      -			soffseth = ista && this._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height;
      -			soffsetw = ista ? 0 : that.sizeDiff.width;
      -
      -			s = {
      -				width: ( that.helper.width()  - soffsetw ),
      -				height: ( that.helper.height() - soffseth )
      -			};
      -			left = ( parseFloat( that.element.css( "left" ) ) +
      -				( that.position.left - that.originalPosition.left ) ) || null;
      -			top = ( parseFloat( that.element.css( "top" ) ) +
      -				( that.position.top - that.originalPosition.top ) ) || null;
      -
      -			if ( !o.animate ) {
      -				this.element.css( $.extend( s, { top: top, left: left } ) );
      -			}
      -
      -			that.helper.height( that.size.height );
      -			that.helper.width( that.size.width );
      -
      -			if ( this._helper && !o.animate ) {
      -				this._proportionallyResize();
      -			}
      -		}
      -
      -		$( "body" ).css( "cursor", "auto" );
      -
      -		this._removeClass( "ui-resizable-resizing" );
      -
      -		this._propagate( "stop", event );
      -
      -		if ( this._helper ) {
      -			this.helper.remove();
      -		}
      -
      -		return false;
      -
      -	},
      -
      -	_updatePrevProperties: function() {
      -		this.prevPosition = {
      -			top: this.position.top,
      -			left: this.position.left
      -		};
      -		this.prevSize = {
      -			width: this.size.width,
      -			height: this.size.height
      -		};
      -	},
      -
      -	_applyChanges: function() {
      -		var props = {};
      -
      -		if ( this.position.top !== this.prevPosition.top ) {
      -			props.top = this.position.top + "px";
      -		}
      -		if ( this.position.left !== this.prevPosition.left ) {
      -			props.left = this.position.left + "px";
      -		}
      -		if ( this.size.width !== this.prevSize.width ) {
      -			props.width = this.size.width + "px";
      -		}
      -		if ( this.size.height !== this.prevSize.height ) {
      -			props.height = this.size.height + "px";
      -		}
      -
      -		this.helper.css( props );
      -
      -		return props;
      -	},
      -
      -	_updateVirtualBoundaries: function( forceAspectRatio ) {
      -		var pMinWidth, pMaxWidth, pMinHeight, pMaxHeight, b,
      -			o = this.options;
      -
      -		b = {
      -			minWidth: this._isNumber( o.minWidth ) ? o.minWidth : 0,
      -			maxWidth: this._isNumber( o.maxWidth ) ? o.maxWidth : Infinity,
      -			minHeight: this._isNumber( o.minHeight ) ? o.minHeight : 0,
      -			maxHeight: this._isNumber( o.maxHeight ) ? o.maxHeight : Infinity
      -		};
      -
      -		if ( this._aspectRatio || forceAspectRatio ) {
      -			pMinWidth = b.minHeight * this.aspectRatio;
      -			pMinHeight = b.minWidth / this.aspectRatio;
      -			pMaxWidth = b.maxHeight * this.aspectRatio;
      -			pMaxHeight = b.maxWidth / this.aspectRatio;
      -
      -			if ( pMinWidth > b.minWidth ) {
      -				b.minWidth = pMinWidth;
      -			}
      -			if ( pMinHeight > b.minHeight ) {
      -				b.minHeight = pMinHeight;
      -			}
      -			if ( pMaxWidth < b.maxWidth ) {
      -				b.maxWidth = pMaxWidth;
      -			}
      -			if ( pMaxHeight < b.maxHeight ) {
      -				b.maxHeight = pMaxHeight;
      -			}
      -		}
      -		this._vBoundaries = b;
      -	},
      -
      -	_updateCache: function( data ) {
      -		this.offset = this.helper.offset();
      -		if ( this._isNumber( data.left ) ) {
      -			this.position.left = data.left;
      -		}
      -		if ( this._isNumber( data.top ) ) {
      -			this.position.top = data.top;
      -		}
      -		if ( this._isNumber( data.height ) ) {
      -			this.size.height = data.height;
      -		}
      -		if ( this._isNumber( data.width ) ) {
      -			this.size.width = data.width;
      -		}
      -	},
      -
      -	_updateRatio: function( data ) {
      -
      -		var cpos = this.position,
      -			csize = this.size,
      -			a = this.axis;
      -
      -		if ( this._isNumber( data.height ) ) {
      -			data.width = ( data.height * this.aspectRatio );
      -		} else if ( this._isNumber( data.width ) ) {
      -			data.height = ( data.width / this.aspectRatio );
      -		}
      -
      -		if ( a === "sw" ) {
      -			data.left = cpos.left + ( csize.width - data.width );
      -			data.top = null;
      -		}
      -		if ( a === "nw" ) {
      -			data.top = cpos.top + ( csize.height - data.height );
      -			data.left = cpos.left + ( csize.width - data.width );
      -		}
      -
      -		return data;
      -	},
      -
      -	_respectSize: function( data ) {
      -
      -		var o = this._vBoundaries,
      -			a = this.axis,
      -			ismaxw = this._isNumber( data.width ) && o.maxWidth && ( o.maxWidth < data.width ),
      -			ismaxh = this._isNumber( data.height ) && o.maxHeight && ( o.maxHeight < data.height ),
      -			isminw = this._isNumber( data.width ) && o.minWidth && ( o.minWidth > data.width ),
      -			isminh = this._isNumber( data.height ) && o.minHeight && ( o.minHeight > data.height ),
      -			dw = this.originalPosition.left + this.originalSize.width,
      -			dh = this.originalPosition.top + this.originalSize.height,
      -			cw = /sw|nw|w/.test( a ), ch = /nw|ne|n/.test( a );
      -		if ( isminw ) {
      -			data.width = o.minWidth;
      -		}
      -		if ( isminh ) {
      -			data.height = o.minHeight;
      -		}
      -		if ( ismaxw ) {
      -			data.width = o.maxWidth;
      -		}
      -		if ( ismaxh ) {
      -			data.height = o.maxHeight;
      -		}
      -
      -		if ( isminw && cw ) {
      -			data.left = dw - o.minWidth;
      -		}
      -		if ( ismaxw && cw ) {
      -			data.left = dw - o.maxWidth;
      -		}
      -		if ( isminh && ch ) {
      -			data.top = dh - o.minHeight;
      -		}
      -		if ( ismaxh && ch ) {
      -			data.top = dh - o.maxHeight;
      -		}
      -
      -		// Fixing jump error on top/left - bug #2330
      -		if ( !data.width && !data.height && !data.left && data.top ) {
      -			data.top = null;
      -		} else if ( !data.width && !data.height && !data.top && data.left ) {
      -			data.left = null;
      -		}
      -
      -		return data;
      -	},
      -
      -	_getPaddingPlusBorderDimensions: function( element ) {
      -		var i = 0,
      -			widths = [],
      -			borders = [
      -				element.css( "borderTopWidth" ),
      -				element.css( "borderRightWidth" ),
      -				element.css( "borderBottomWidth" ),
      -				element.css( "borderLeftWidth" )
      -			],
      -			paddings = [
      -				element.css( "paddingTop" ),
      -				element.css( "paddingRight" ),
      -				element.css( "paddingBottom" ),
      -				element.css( "paddingLeft" )
      -			];
      -
      -		for ( ; i < 4; i++ ) {
      -			widths[ i ] = ( parseFloat( borders[ i ] ) || 0 );
      -			widths[ i ] += ( parseFloat( paddings[ i ] ) || 0 );
      -		}
      -
      -		return {
      -			height: widths[ 0 ] + widths[ 2 ],
      -			width: widths[ 1 ] + widths[ 3 ]
      -		};
      -	},
      -
      -	_proportionallyResize: function() {
      -
      -		if ( !this._proportionallyResizeElements.length ) {
      -			return;
      -		}
      -
      -		var prel,
      -			i = 0,
      -			element = this.helper || this.element;
      -
      -		for ( ; i < this._proportionallyResizeElements.length; i++ ) {
      -
      -			prel = this._proportionallyResizeElements[ i ];
      -
      -			// TODO: Seems like a bug to cache this.outerDimensions
      -			// considering that we are in a loop.
      -			if ( !this.outerDimensions ) {
      -				this.outerDimensions = this._getPaddingPlusBorderDimensions( prel );
      -			}
      -
      -			prel.css( {
      -				height: ( element.height() - this.outerDimensions.height ) || 0,
      -				width: ( element.width() - this.outerDimensions.width ) || 0
      -			} );
      -
      -		}
      -
      -	},
      -
      -	_renderProxy: function() {
      -
      -		var el = this.element, o = this.options;
      -		this.elementOffset = el.offset();
      -
      -		if ( this._helper ) {
      -
      -			this.helper = this.helper || $( "<div style='overflow:hidden;'></div>" );
      -
      -			this._addClass( this.helper, this._helper );
      -			this.helper.css( {
      -				width: this.element.outerWidth(),
      -				height: this.element.outerHeight(),
      -				position: "absolute",
      -				left: this.elementOffset.left + "px",
      -				top: this.elementOffset.top + "px",
      -				zIndex: ++o.zIndex //TODO: Don't modify option
      -			} );
      -
      -			this.helper
      -				.appendTo( "body" )
      -				.disableSelection();
      -
      -		} else {
      -			this.helper = this.element;
      -		}
      -
      -	},
      -
      -	_change: {
      -		e: function( event, dx ) {
      -			return { width: this.originalSize.width + dx };
      -		},
      -		w: function( event, dx ) {
      -			var cs = this.originalSize, sp = this.originalPosition;
      -			return { left: sp.left + dx, width: cs.width - dx };
      -		},
      -		n: function( event, dx, dy ) {
      -			var cs = this.originalSize, sp = this.originalPosition;
      -			return { top: sp.top + dy, height: cs.height - dy };
      -		},
      -		s: function( event, dx, dy ) {
      -			return { height: this.originalSize.height + dy };
      -		},
      -		se: function( event, dx, dy ) {
      -			return $.extend( this._change.s.apply( this, arguments ),
      -				this._change.e.apply( this, [ event, dx, dy ] ) );
      -		},
      -		sw: function( event, dx, dy ) {
      -			return $.extend( this._change.s.apply( this, arguments ),
      -				this._change.w.apply( this, [ event, dx, dy ] ) );
      -		},
      -		ne: function( event, dx, dy ) {
      -			return $.extend( this._change.n.apply( this, arguments ),
      -				this._change.e.apply( this, [ event, dx, dy ] ) );
      -		},
      -		nw: function( event, dx, dy ) {
      -			return $.extend( this._change.n.apply( this, arguments ),
      -				this._change.w.apply( this, [ event, dx, dy ] ) );
      -		}
      -	},
      -
      -	_propagate: function( n, event ) {
      -		$.ui.plugin.call( this, n, [ event, this.ui() ] );
      -		( n !== "resize" && this._trigger( n, event, this.ui() ) );
      -	},
      -
      -	plugins: {},
      -
      -	ui: function() {
      -		return {
      -			originalElement: this.originalElement,
      -			element: this.element,
      -			helper: this.helper,
      -			position: this.position,
      -			size: this.size,
      -			originalSize: this.originalSize,
      -			originalPosition: this.originalPosition
      -		};
      -	}
      -
      -} );
      -
      -/*
      - * Resizable Extensions
      - */
      -
      -$.ui.plugin.add( "resizable", "animate", {
      -
      -	stop: function( event ) {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			pr = that._proportionallyResizeElements,
      -			ista = pr.length && ( /textarea/i ).test( pr[ 0 ].nodeName ),
      -			soffseth = ista && that._hasScroll( pr[ 0 ], "left" ) ? 0 : that.sizeDiff.height,
      -			soffsetw = ista ? 0 : that.sizeDiff.width,
      -			style = {
      -				width: ( that.size.width - soffsetw ),
      -				height: ( that.size.height - soffseth )
      -			},
      -			left = ( parseFloat( that.element.css( "left" ) ) +
      -				( that.position.left - that.originalPosition.left ) ) || null,
      -			top = ( parseFloat( that.element.css( "top" ) ) +
      -				( that.position.top - that.originalPosition.top ) ) || null;
      -
      -		that.element.animate(
      -			$.extend( style, top && left ? { top: top, left: left } : {} ), {
      -				duration: o.animateDuration,
      -				easing: o.animateEasing,
      -				step: function() {
      -
      -					var data = {
      -						width: parseFloat( that.element.css( "width" ) ),
      -						height: parseFloat( that.element.css( "height" ) ),
      -						top: parseFloat( that.element.css( "top" ) ),
      -						left: parseFloat( that.element.css( "left" ) )
      -					};
      -
      -					if ( pr && pr.length ) {
      -						$( pr[ 0 ] ).css( { width: data.width, height: data.height } );
      -					}
      -
      -					// Propagating resize, and updating values for each animation step
      -					that._updateCache( data );
      -					that._propagate( "resize", event );
      -
      -				}
      -			}
      -		);
      -	}
      -
      -} );
      -
      -$.ui.plugin.add( "resizable", "containment", {
      -
      -	start: function() {
      -		var element, p, co, ch, cw, width, height,
      -			that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			el = that.element,
      -			oc = o.containment,
      -			ce = ( oc instanceof $ ) ?
      -				oc.get( 0 ) :
      -				( /parent/.test( oc ) ) ? el.parent().get( 0 ) : oc;
      -
      -		if ( !ce ) {
      -			return;
      -		}
      -
      -		that.containerElement = $( ce );
      -
      -		if ( /document/.test( oc ) || oc === document ) {
      -			that.containerOffset = {
      -				left: 0,
      -				top: 0
      -			};
      -			that.containerPosition = {
      -				left: 0,
      -				top: 0
      -			};
      -
      -			that.parentData = {
      -				element: $( document ),
      -				left: 0,
      -				top: 0,
      -				width: $( document ).width(),
      -				height: $( document ).height() || document.body.parentNode.scrollHeight
      -			};
      -		} else {
      -			element = $( ce );
      -			p = [];
      -			$( [ "Top", "Right", "Left", "Bottom" ] ).each( function( i, name ) {
      -				p[ i ] = that._num( element.css( "padding" + name ) );
      -			} );
      -
      -			that.containerOffset = element.offset();
      -			that.containerPosition = element.position();
      -			that.containerSize = {
      -				height: ( element.innerHeight() - p[ 3 ] ),
      -				width: ( element.innerWidth() - p[ 1 ] )
      -			};
      -
      -			co = that.containerOffset;
      -			ch = that.containerSize.height;
      -			cw = that.containerSize.width;
      -			width = ( that._hasScroll ( ce, "left" ) ? ce.scrollWidth : cw );
      -			height = ( that._hasScroll ( ce ) ? ce.scrollHeight : ch ) ;
      -
      -			that.parentData = {
      -				element: ce,
      -				left: co.left,
      -				top: co.top,
      -				width: width,
      -				height: height
      -			};
      -		}
      -	},
      -
      -	resize: function( event ) {
      -		var woset, hoset, isParent, isOffsetRelative,
      -			that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			co = that.containerOffset,
      -			cp = that.position,
      -			pRatio = that._aspectRatio || event.shiftKey,
      -			cop = {
      -				top: 0,
      -				left: 0
      -			},
      -			ce = that.containerElement,
      -			continueResize = true;
      -
      -		if ( ce[ 0 ] !== document && ( /static/ ).test( ce.css( "position" ) ) ) {
      -			cop = co;
      -		}
      -
      -		if ( cp.left < ( that._helper ? co.left : 0 ) ) {
      -			that.size.width = that.size.width +
      -				( that._helper ?
      -					( that.position.left - co.left ) :
      -					( that.position.left - cop.left ) );
      -
      -			if ( pRatio ) {
      -				that.size.height = that.size.width / that.aspectRatio;
      -				continueResize = false;
      -			}
      -			that.position.left = o.helper ? co.left : 0;
      -		}
      -
      -		if ( cp.top < ( that._helper ? co.top : 0 ) ) {
      -			that.size.height = that.size.height +
      -				( that._helper ?
      -					( that.position.top - co.top ) :
      -					that.position.top );
      -
      -			if ( pRatio ) {
      -				that.size.width = that.size.height * that.aspectRatio;
      -				continueResize = false;
      -			}
      -			that.position.top = that._helper ? co.top : 0;
      -		}
      -
      -		isParent = that.containerElement.get( 0 ) === that.element.parent().get( 0 );
      -		isOffsetRelative = /relative|absolute/.test( that.containerElement.css( "position" ) );
      -
      -		if ( isParent && isOffsetRelative ) {
      -			that.offset.left = that.parentData.left + that.position.left;
      -			that.offset.top = that.parentData.top + that.position.top;
      -		} else {
      -			that.offset.left = that.element.offset().left;
      -			that.offset.top = that.element.offset().top;
      -		}
      -
      -		woset = Math.abs( that.sizeDiff.width +
      -			( that._helper ?
      -				that.offset.left - cop.left :
      -				( that.offset.left - co.left ) ) );
      -
      -		hoset = Math.abs( that.sizeDiff.height +
      -			( that._helper ?
      -				that.offset.top - cop.top :
      -				( that.offset.top - co.top ) ) );
      -
      -		if ( woset + that.size.width >= that.parentData.width ) {
      -			that.size.width = that.parentData.width - woset;
      -			if ( pRatio ) {
      -				that.size.height = that.size.width / that.aspectRatio;
      -				continueResize = false;
      -			}
      -		}
      -
      -		if ( hoset + that.size.height >= that.parentData.height ) {
      -			that.size.height = that.parentData.height - hoset;
      -			if ( pRatio ) {
      -				that.size.width = that.size.height * that.aspectRatio;
      -				continueResize = false;
      -			}
      -		}
      -
      -		if ( !continueResize ) {
      -			that.position.left = that.prevPosition.left;
      -			that.position.top = that.prevPosition.top;
      -			that.size.width = that.prevSize.width;
      -			that.size.height = that.prevSize.height;
      -		}
      -	},
      -
      -	stop: function() {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			co = that.containerOffset,
      -			cop = that.containerPosition,
      -			ce = that.containerElement,
      -			helper = $( that.helper ),
      -			ho = helper.offset(),
      -			w = helper.outerWidth() - that.sizeDiff.width,
      -			h = helper.outerHeight() - that.sizeDiff.height;
      -
      -		if ( that._helper && !o.animate && ( /relative/ ).test( ce.css( "position" ) ) ) {
      -			$( this ).css( {
      -				left: ho.left - cop.left - co.left,
      -				width: w,
      -				height: h
      -			} );
      -		}
      -
      -		if ( that._helper && !o.animate && ( /static/ ).test( ce.css( "position" ) ) ) {
      -			$( this ).css( {
      -				left: ho.left - cop.left - co.left,
      -				width: w,
      -				height: h
      -			} );
      -		}
      -	}
      -} );
      -
      -$.ui.plugin.add( "resizable", "alsoResize", {
      -
      -	start: function() {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options;
      -
      -		$( o.alsoResize ).each( function() {
      -			var el = $( this );
      -			el.data( "ui-resizable-alsoresize", {
      -				width: parseFloat( el.width() ), height: parseFloat( el.height() ),
      -				left: parseFloat( el.css( "left" ) ), top: parseFloat( el.css( "top" ) )
      -			} );
      -		} );
      -	},
      -
      -	resize: function( event, ui ) {
      -		var that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			os = that.originalSize,
      -			op = that.originalPosition,
      -			delta = {
      -				height: ( that.size.height - os.height ) || 0,
      -				width: ( that.size.width - os.width ) || 0,
      -				top: ( that.position.top - op.top ) || 0,
      -				left: ( that.position.left - op.left ) || 0
      -			};
      -
      -			$( o.alsoResize ).each( function() {
      -				var el = $( this ), start = $( this ).data( "ui-resizable-alsoresize" ), style = {},
      -					css = el.parents( ui.originalElement[ 0 ] ).length ?
      -							[ "width", "height" ] :
      -							[ "width", "height", "top", "left" ];
      -
      -				$.each( css, function( i, prop ) {
      -					var sum = ( start[ prop ] || 0 ) + ( delta[ prop ] || 0 );
      -					if ( sum && sum >= 0 ) {
      -						style[ prop ] = sum || null;
      -					}
      -				} );
      -
      -				el.css( style );
      -			} );
      -	},
      -
      -	stop: function() {
      -		$( this ).removeData( "ui-resizable-alsoresize" );
      -	}
      -} );
      -
      -$.ui.plugin.add( "resizable", "ghost", {
      -
      -	start: function() {
      -
      -		var that = $( this ).resizable( "instance" ), cs = that.size;
      -
      -		that.ghost = that.originalElement.clone();
      -		that.ghost.css( {
      -			opacity: 0.25,
      -			display: "block",
      -			position: "relative",
      -			height: cs.height,
      -			width: cs.width,
      -			margin: 0,
      -			left: 0,
      -			top: 0
      -		} );
      -
      -		that._addClass( that.ghost, "ui-resizable-ghost" );
      -
      -		// DEPRECATED
      -		// TODO: remove after 1.12
      -		if ( $.uiBackCompat !== false && typeof that.options.ghost === "string" ) {
      -
      -			// Ghost option
      -			that.ghost.addClass( this.options.ghost );
      -		}
      -
      -		that.ghost.appendTo( that.helper );
      -
      -	},
      -
      -	resize: function() {
      -		var that = $( this ).resizable( "instance" );
      -		if ( that.ghost ) {
      -			that.ghost.css( {
      -				position: "relative",
      -				height: that.size.height,
      -				width: that.size.width
      -			} );
      -		}
      -	},
      -
      -	stop: function() {
      -		var that = $( this ).resizable( "instance" );
      -		if ( that.ghost && that.helper ) {
      -			that.helper.get( 0 ).removeChild( that.ghost.get( 0 ) );
      -		}
      -	}
      -
      -} );
      -
      -$.ui.plugin.add( "resizable", "grid", {
      -
      -	resize: function() {
      -		var outerDimensions,
      -			that = $( this ).resizable( "instance" ),
      -			o = that.options,
      -			cs = that.size,
      -			os = that.originalSize,
      -			op = that.originalPosition,
      -			a = that.axis,
      -			grid = typeof o.grid === "number" ? [ o.grid, o.grid ] : o.grid,
      -			gridX = ( grid[ 0 ] || 1 ),
      -			gridY = ( grid[ 1 ] || 1 ),
      -			ox = Math.round( ( cs.width - os.width ) / gridX ) * gridX,
      -			oy = Math.round( ( cs.height - os.height ) / gridY ) * gridY,
      -			newWidth = os.width + ox,
      -			newHeight = os.height + oy,
      -			isMaxWidth = o.maxWidth && ( o.maxWidth < newWidth ),
      -			isMaxHeight = o.maxHeight && ( o.maxHeight < newHeight ),
      -			isMinWidth = o.minWidth && ( o.minWidth > newWidth ),
      -			isMinHeight = o.minHeight && ( o.minHeight > newHeight );
      -
      -		o.grid = grid;
      -
      -		if ( isMinWidth ) {
      -			newWidth += gridX;
      -		}
      -		if ( isMinHeight ) {
      -			newHeight += gridY;
      -		}
      -		if ( isMaxWidth ) {
      -			newWidth -= gridX;
      -		}
      -		if ( isMaxHeight ) {
      -			newHeight -= gridY;
      -		}
      -
      -		if ( /^(se|s|e)$/.test( a ) ) {
      -			that.size.width = newWidth;
      -			that.size.height = newHeight;
      -		} else if ( /^(ne)$/.test( a ) ) {
      -			that.size.width = newWidth;
      -			that.size.height = newHeight;
      -			that.position.top = op.top - oy;
      -		} else if ( /^(sw)$/.test( a ) ) {
      -			that.size.width = newWidth;
      -			that.size.height = newHeight;
      -			that.position.left = op.left - ox;
      -		} else {
      -			if ( newHeight - gridY <= 0 || newWidth - gridX <= 0 ) {
      -				outerDimensions = that._getPaddingPlusBorderDimensions( this );
      -			}
      -
      -			if ( newHeight - gridY > 0 ) {
      -				that.size.height = newHeight;
      -				that.position.top = op.top - oy;
      -			} else {
      -				newHeight = gridY - outerDimensions.height;
      -				that.size.height = newHeight;
      -				that.position.top = op.top + os.height - newHeight;
      -			}
      -			if ( newWidth - gridX > 0 ) {
      -				that.size.width = newWidth;
      -				that.position.left = op.left - ox;
      -			} else {
      -				newWidth = gridX - outerDimensions.width;
      -				that.size.width = newWidth;
      -				that.position.left = op.left + os.width - newWidth;
      -			}
      -		}
      -	}
      -
      -} );
      -
      -return $.ui.resizable;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/selectable.js b/bower_components/jquery-ui/ui/widgets/selectable.js
      deleted file mode 100644
      index 205f0cbacf..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/selectable.js
      +++ /dev/null
      @@ -1,310 +0,0 @@
      -/*!
      - * jQuery UI Selectable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Selectable
      -//>>group: Interactions
      -//>>description: Allows groups of elements to be selected with the mouse.
      -//>>docs: http://api.jqueryui.com/selectable/
      -//>>demos: http://jqueryui.com/selectable/
      -//>>css.structure: ../../themes/base/selectable.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./mouse",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.widget( "ui.selectable", $.ui.mouse, {
      -	version: "1.12.1",
      -	options: {
      -		appendTo: "body",
      -		autoRefresh: true,
      -		distance: 0,
      -		filter: "*",
      -		tolerance: "touch",
      -
      -		// Callbacks
      -		selected: null,
      -		selecting: null,
      -		start: null,
      -		stop: null,
      -		unselected: null,
      -		unselecting: null
      -	},
      -	_create: function() {
      -		var that = this;
      -
      -		this._addClass( "ui-selectable" );
      -
      -		this.dragged = false;
      -
      -		// Cache selectee children based on filter
      -		this.refresh = function() {
      -			that.elementPos = $( that.element[ 0 ] ).offset();
      -			that.selectees = $( that.options.filter, that.element[ 0 ] );
      -			that._addClass( that.selectees, "ui-selectee" );
      -			that.selectees.each( function() {
      -				var $this = $( this ),
      -					selecteeOffset = $this.offset(),
      -					pos = {
      -						left: selecteeOffset.left - that.elementPos.left,
      -						top: selecteeOffset.top - that.elementPos.top
      -					};
      -				$.data( this, "selectable-item", {
      -					element: this,
      -					$element: $this,
      -					left: pos.left,
      -					top: pos.top,
      -					right: pos.left + $this.outerWidth(),
      -					bottom: pos.top + $this.outerHeight(),
      -					startselected: false,
      -					selected: $this.hasClass( "ui-selected" ),
      -					selecting: $this.hasClass( "ui-selecting" ),
      -					unselecting: $this.hasClass( "ui-unselecting" )
      -				} );
      -			} );
      -		};
      -		this.refresh();
      -
      -		this._mouseInit();
      -
      -		this.helper = $( "<div>" );
      -		this._addClass( this.helper, "ui-selectable-helper" );
      -	},
      -
      -	_destroy: function() {
      -		this.selectees.removeData( "selectable-item" );
      -		this._mouseDestroy();
      -	},
      -
      -	_mouseStart: function( event ) {
      -		var that = this,
      -			options = this.options;
      -
      -		this.opos = [ event.pageX, event.pageY ];
      -		this.elementPos = $( this.element[ 0 ] ).offset();
      -
      -		if ( this.options.disabled ) {
      -			return;
      -		}
      -
      -		this.selectees = $( options.filter, this.element[ 0 ] );
      -
      -		this._trigger( "start", event );
      -
      -		$( options.appendTo ).append( this.helper );
      -
      -		// position helper (lasso)
      -		this.helper.css( {
      -			"left": event.pageX,
      -			"top": event.pageY,
      -			"width": 0,
      -			"height": 0
      -		} );
      -
      -		if ( options.autoRefresh ) {
      -			this.refresh();
      -		}
      -
      -		this.selectees.filter( ".ui-selected" ).each( function() {
      -			var selectee = $.data( this, "selectable-item" );
      -			selectee.startselected = true;
      -			if ( !event.metaKey && !event.ctrlKey ) {
      -				that._removeClass( selectee.$element, "ui-selected" );
      -				selectee.selected = false;
      -				that._addClass( selectee.$element, "ui-unselecting" );
      -				selectee.unselecting = true;
      -
      -				// selectable UNSELECTING callback
      -				that._trigger( "unselecting", event, {
      -					unselecting: selectee.element
      -				} );
      -			}
      -		} );
      -
      -		$( event.target ).parents().addBack().each( function() {
      -			var doSelect,
      -				selectee = $.data( this, "selectable-item" );
      -			if ( selectee ) {
      -				doSelect = ( !event.metaKey && !event.ctrlKey ) ||
      -					!selectee.$element.hasClass( "ui-selected" );
      -				that._removeClass( selectee.$element, doSelect ? "ui-unselecting" : "ui-selected" )
      -					._addClass( selectee.$element, doSelect ? "ui-selecting" : "ui-unselecting" );
      -				selectee.unselecting = !doSelect;
      -				selectee.selecting = doSelect;
      -				selectee.selected = doSelect;
      -
      -				// selectable (UN)SELECTING callback
      -				if ( doSelect ) {
      -					that._trigger( "selecting", event, {
      -						selecting: selectee.element
      -					} );
      -				} else {
      -					that._trigger( "unselecting", event, {
      -						unselecting: selectee.element
      -					} );
      -				}
      -				return false;
      -			}
      -		} );
      -
      -	},
      -
      -	_mouseDrag: function( event ) {
      -
      -		this.dragged = true;
      -
      -		if ( this.options.disabled ) {
      -			return;
      -		}
      -
      -		var tmp,
      -			that = this,
      -			options = this.options,
      -			x1 = this.opos[ 0 ],
      -			y1 = this.opos[ 1 ],
      -			x2 = event.pageX,
      -			y2 = event.pageY;
      -
      -		if ( x1 > x2 ) { tmp = x2; x2 = x1; x1 = tmp; }
      -		if ( y1 > y2 ) { tmp = y2; y2 = y1; y1 = tmp; }
      -		this.helper.css( { left: x1, top: y1, width: x2 - x1, height: y2 - y1 } );
      -
      -		this.selectees.each( function() {
      -			var selectee = $.data( this, "selectable-item" ),
      -				hit = false,
      -				offset = {};
      -
      -			//prevent helper from being selected if appendTo: selectable
      -			if ( !selectee || selectee.element === that.element[ 0 ] ) {
      -				return;
      -			}
      -
      -			offset.left   = selectee.left   + that.elementPos.left;
      -			offset.right  = selectee.right  + that.elementPos.left;
      -			offset.top    = selectee.top    + that.elementPos.top;
      -			offset.bottom = selectee.bottom + that.elementPos.top;
      -
      -			if ( options.tolerance === "touch" ) {
      -				hit = ( !( offset.left > x2 || offset.right < x1 || offset.top > y2 ||
      -                    offset.bottom < y1 ) );
      -			} else if ( options.tolerance === "fit" ) {
      -				hit = ( offset.left > x1 && offset.right < x2 && offset.top > y1 &&
      -                    offset.bottom < y2 );
      -			}
      -
      -			if ( hit ) {
      -
      -				// SELECT
      -				if ( selectee.selected ) {
      -					that._removeClass( selectee.$element, "ui-selected" );
      -					selectee.selected = false;
      -				}
      -				if ( selectee.unselecting ) {
      -					that._removeClass( selectee.$element, "ui-unselecting" );
      -					selectee.unselecting = false;
      -				}
      -				if ( !selectee.selecting ) {
      -					that._addClass( selectee.$element, "ui-selecting" );
      -					selectee.selecting = true;
      -
      -					// selectable SELECTING callback
      -					that._trigger( "selecting", event, {
      -						selecting: selectee.element
      -					} );
      -				}
      -			} else {
      -
      -				// UNSELECT
      -				if ( selectee.selecting ) {
      -					if ( ( event.metaKey || event.ctrlKey ) && selectee.startselected ) {
      -						that._removeClass( selectee.$element, "ui-selecting" );
      -						selectee.selecting = false;
      -						that._addClass( selectee.$element, "ui-selected" );
      -						selectee.selected = true;
      -					} else {
      -						that._removeClass( selectee.$element, "ui-selecting" );
      -						selectee.selecting = false;
      -						if ( selectee.startselected ) {
      -							that._addClass( selectee.$element, "ui-unselecting" );
      -							selectee.unselecting = true;
      -						}
      -
      -						// selectable UNSELECTING callback
      -						that._trigger( "unselecting", event, {
      -							unselecting: selectee.element
      -						} );
      -					}
      -				}
      -				if ( selectee.selected ) {
      -					if ( !event.metaKey && !event.ctrlKey && !selectee.startselected ) {
      -						that._removeClass( selectee.$element, "ui-selected" );
      -						selectee.selected = false;
      -
      -						that._addClass( selectee.$element, "ui-unselecting" );
      -						selectee.unselecting = true;
      -
      -						// selectable UNSELECTING callback
      -						that._trigger( "unselecting", event, {
      -							unselecting: selectee.element
      -						} );
      -					}
      -				}
      -			}
      -		} );
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -		var that = this;
      -
      -		this.dragged = false;
      -
      -		$( ".ui-unselecting", this.element[ 0 ] ).each( function() {
      -			var selectee = $.data( this, "selectable-item" );
      -			that._removeClass( selectee.$element, "ui-unselecting" );
      -			selectee.unselecting = false;
      -			selectee.startselected = false;
      -			that._trigger( "unselected", event, {
      -				unselected: selectee.element
      -			} );
      -		} );
      -		$( ".ui-selecting", this.element[ 0 ] ).each( function() {
      -			var selectee = $.data( this, "selectable-item" );
      -			that._removeClass( selectee.$element, "ui-selecting" )
      -				._addClass( selectee.$element, "ui-selected" );
      -			selectee.selecting = false;
      -			selectee.selected = true;
      -			selectee.startselected = true;
      -			that._trigger( "selected", event, {
      -				selected: selectee.element
      -			} );
      -		} );
      -		this._trigger( "stop", event );
      -
      -		this.helper.remove();
      -
      -		return false;
      -	}
      -
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/selectmenu.js b/bower_components/jquery-ui/ui/widgets/selectmenu.js
      deleted file mode 100644
      index e7cec577fc..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/selectmenu.js
      +++ /dev/null
      @@ -1,687 +0,0 @@
      -/*!
      - * jQuery UI Selectmenu 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Selectmenu
      -//>>group: Widgets
      -// jscs:disable maximumLineLength
      -//>>description: Duplicates and extends the functionality of a native HTML select element, allowing it to be customizable in behavior and appearance far beyond the limitations of a native select.
      -// jscs:enable maximumLineLength
      -//>>docs: http://api.jqueryui.com/selectmenu/
      -//>>demos: http://jqueryui.com/selectmenu/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/selectmenu.css, ../../themes/base/button.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./menu",
      -			"../escape-selector",
      -			"../form-reset-mixin",
      -			"../keycode",
      -			"../labels",
      -			"../position",
      -			"../unique-id",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.widget( "ui.selectmenu", [ $.ui.formResetMixin, {
      -	version: "1.12.1",
      -	defaultElement: "<select>",
      -	options: {
      -		appendTo: null,
      -		classes: {
      -			"ui-selectmenu-button-open": "ui-corner-top",
      -			"ui-selectmenu-button-closed": "ui-corner-all"
      -		},
      -		disabled: null,
      -		icons: {
      -			button: "ui-icon-triangle-1-s"
      -		},
      -		position: {
      -			my: "left top",
      -			at: "left bottom",
      -			collision: "none"
      -		},
      -		width: false,
      -
      -		// Callbacks
      -		change: null,
      -		close: null,
      -		focus: null,
      -		open: null,
      -		select: null
      -	},
      -
      -	_create: function() {
      -		var selectmenuId = this.element.uniqueId().attr( "id" );
      -		this.ids = {
      -			element: selectmenuId,
      -			button: selectmenuId + "-button",
      -			menu: selectmenuId + "-menu"
      -		};
      -
      -		this._drawButton();
      -		this._drawMenu();
      -		this._bindFormResetHandler();
      -
      -		this._rendered = false;
      -		this.menuItems = $();
      -	},
      -
      -	_drawButton: function() {
      -		var icon,
      -			that = this,
      -			item = this._parseOption(
      -				this.element.find( "option:selected" ),
      -				this.element[ 0 ].selectedIndex
      -			);
      -
      -		// Associate existing label with the new button
      -		this.labels = this.element.labels().attr( "for", this.ids.button );
      -		this._on( this.labels, {
      -			click: function( event ) {
      -				this.button.focus();
      -				event.preventDefault();
      -			}
      -		} );
      -
      -		// Hide original select element
      -		this.element.hide();
      -
      -		// Create button
      -		this.button = $( "<span>", {
      -			tabindex: this.options.disabled ? -1 : 0,
      -			id: this.ids.button,
      -			role: "combobox",
      -			"aria-expanded": "false",
      -			"aria-autocomplete": "list",
      -			"aria-owns": this.ids.menu,
      -			"aria-haspopup": "true",
      -			title: this.element.attr( "title" )
      -		} )
      -			.insertAfter( this.element );
      -
      -		this._addClass( this.button, "ui-selectmenu-button ui-selectmenu-button-closed",
      -			"ui-button ui-widget" );
      -
      -		icon = $( "<span>" ).appendTo( this.button );
      -		this._addClass( icon, "ui-selectmenu-icon", "ui-icon " + this.options.icons.button );
      -		this.buttonItem = this._renderButtonItem( item )
      -			.appendTo( this.button );
      -
      -		if ( this.options.width !== false ) {
      -			this._resizeButton();
      -		}
      -
      -		this._on( this.button, this._buttonEvents );
      -		this.button.one( "focusin", function() {
      -
      -			// Delay rendering the menu items until the button receives focus.
      -			// The menu may have already been rendered via a programmatic open.
      -			if ( !that._rendered ) {
      -				that._refreshMenu();
      -			}
      -		} );
      -	},
      -
      -	_drawMenu: function() {
      -		var that = this;
      -
      -		// Create menu
      -		this.menu = $( "<ul>", {
      -			"aria-hidden": "true",
      -			"aria-labelledby": this.ids.button,
      -			id: this.ids.menu
      -		} );
      -
      -		// Wrap menu
      -		this.menuWrap = $( "<div>" ).append( this.menu );
      -		this._addClass( this.menuWrap, "ui-selectmenu-menu", "ui-front" );
      -		this.menuWrap.appendTo( this._appendTo() );
      -
      -		// Initialize menu widget
      -		this.menuInstance = this.menu
      -			.menu( {
      -				classes: {
      -					"ui-menu": "ui-corner-bottom"
      -				},
      -				role: "listbox",
      -				select: function( event, ui ) {
      -					event.preventDefault();
      -
      -					// Support: IE8
      -					// If the item was selected via a click, the text selection
      -					// will be destroyed in IE
      -					that._setSelection();
      -
      -					that._select( ui.item.data( "ui-selectmenu-item" ), event );
      -				},
      -				focus: function( event, ui ) {
      -					var item = ui.item.data( "ui-selectmenu-item" );
      -
      -					// Prevent inital focus from firing and check if its a newly focused item
      -					if ( that.focusIndex != null && item.index !== that.focusIndex ) {
      -						that._trigger( "focus", event, { item: item } );
      -						if ( !that.isOpen ) {
      -							that._select( item, event );
      -						}
      -					}
      -					that.focusIndex = item.index;
      -
      -					that.button.attr( "aria-activedescendant",
      -						that.menuItems.eq( item.index ).attr( "id" ) );
      -				}
      -			} )
      -			.menu( "instance" );
      -
      -		// Don't close the menu on mouseleave
      -		this.menuInstance._off( this.menu, "mouseleave" );
      -
      -		// Cancel the menu's collapseAll on document click
      -		this.menuInstance._closeOnDocumentClick = function() {
      -			return false;
      -		};
      -
      -		// Selects often contain empty items, but never contain dividers
      -		this.menuInstance._isDivider = function() {
      -			return false;
      -		};
      -	},
      -
      -	refresh: function() {
      -		this._refreshMenu();
      -		this.buttonItem.replaceWith(
      -			this.buttonItem = this._renderButtonItem(
      -
      -				// Fall back to an empty object in case there are no options
      -				this._getSelectedItem().data( "ui-selectmenu-item" ) || {}
      -			)
      -		);
      -		if ( this.options.width === null ) {
      -			this._resizeButton();
      -		}
      -	},
      -
      -	_refreshMenu: function() {
      -		var item,
      -			options = this.element.find( "option" );
      -
      -		this.menu.empty();
      -
      -		this._parseOptions( options );
      -		this._renderMenu( this.menu, this.items );
      -
      -		this.menuInstance.refresh();
      -		this.menuItems = this.menu.find( "li" )
      -			.not( ".ui-selectmenu-optgroup" )
      -				.find( ".ui-menu-item-wrapper" );
      -
      -		this._rendered = true;
      -
      -		if ( !options.length ) {
      -			return;
      -		}
      -
      -		item = this._getSelectedItem();
      -
      -		// Update the menu to have the correct item focused
      -		this.menuInstance.focus( null, item );
      -		this._setAria( item.data( "ui-selectmenu-item" ) );
      -
      -		// Set disabled state
      -		this._setOption( "disabled", this.element.prop( "disabled" ) );
      -	},
      -
      -	open: function( event ) {
      -		if ( this.options.disabled ) {
      -			return;
      -		}
      -
      -		// If this is the first time the menu is being opened, render the items
      -		if ( !this._rendered ) {
      -			this._refreshMenu();
      -		} else {
      -
      -			// Menu clears focus on close, reset focus to selected item
      -			this._removeClass( this.menu.find( ".ui-state-active" ), null, "ui-state-active" );
      -			this.menuInstance.focus( null, this._getSelectedItem() );
      -		}
      -
      -		// If there are no options, don't open the menu
      -		if ( !this.menuItems.length ) {
      -			return;
      -		}
      -
      -		this.isOpen = true;
      -		this._toggleAttr();
      -		this._resizeMenu();
      -		this._position();
      -
      -		this._on( this.document, this._documentClick );
      -
      -		this._trigger( "open", event );
      -	},
      -
      -	_position: function() {
      -		this.menuWrap.position( $.extend( { of: this.button }, this.options.position ) );
      -	},
      -
      -	close: function( event ) {
      -		if ( !this.isOpen ) {
      -			return;
      -		}
      -
      -		this.isOpen = false;
      -		this._toggleAttr();
      -
      -		this.range = null;
      -		this._off( this.document );
      -
      -		this._trigger( "close", event );
      -	},
      -
      -	widget: function() {
      -		return this.button;
      -	},
      -
      -	menuWidget: function() {
      -		return this.menu;
      -	},
      -
      -	_renderButtonItem: function( item ) {
      -		var buttonItem = $( "<span>" );
      -
      -		this._setText( buttonItem, item.label );
      -		this._addClass( buttonItem, "ui-selectmenu-text" );
      -
      -		return buttonItem;
      -	},
      -
      -	_renderMenu: function( ul, items ) {
      -		var that = this,
      -			currentOptgroup = "";
      -
      -		$.each( items, function( index, item ) {
      -			var li;
      -
      -			if ( item.optgroup !== currentOptgroup ) {
      -				li = $( "<li>", {
      -					text: item.optgroup
      -				} );
      -				that._addClass( li, "ui-selectmenu-optgroup", "ui-menu-divider" +
      -					( item.element.parent( "optgroup" ).prop( "disabled" ) ?
      -						" ui-state-disabled" :
      -						"" ) );
      -
      -				li.appendTo( ul );
      -
      -				currentOptgroup = item.optgroup;
      -			}
      -
      -			that._renderItemData( ul, item );
      -		} );
      -	},
      -
      -	_renderItemData: function( ul, item ) {
      -		return this._renderItem( ul, item ).data( "ui-selectmenu-item", item );
      -	},
      -
      -	_renderItem: function( ul, item ) {
      -		var li = $( "<li>" ),
      -			wrapper = $( "<div>", {
      -				title: item.element.attr( "title" )
      -			} );
      -
      -		if ( item.disabled ) {
      -			this._addClass( li, null, "ui-state-disabled" );
      -		}
      -		this._setText( wrapper, item.label );
      -
      -		return li.append( wrapper ).appendTo( ul );
      -	},
      -
      -	_setText: function( element, value ) {
      -		if ( value ) {
      -			element.text( value );
      -		} else {
      -			element.html( "&#160;" );
      -		}
      -	},
      -
      -	_move: function( direction, event ) {
      -		var item, next,
      -			filter = ".ui-menu-item";
      -
      -		if ( this.isOpen ) {
      -			item = this.menuItems.eq( this.focusIndex ).parent( "li" );
      -		} else {
      -			item = this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
      -			filter += ":not(.ui-state-disabled)";
      -		}
      -
      -		if ( direction === "first" || direction === "last" ) {
      -			next = item[ direction === "first" ? "prevAll" : "nextAll" ]( filter ).eq( -1 );
      -		} else {
      -			next = item[ direction + "All" ]( filter ).eq( 0 );
      -		}
      -
      -		if ( next.length ) {
      -			this.menuInstance.focus( event, next );
      -		}
      -	},
      -
      -	_getSelectedItem: function() {
      -		return this.menuItems.eq( this.element[ 0 ].selectedIndex ).parent( "li" );
      -	},
      -
      -	_toggle: function( event ) {
      -		this[ this.isOpen ? "close" : "open" ]( event );
      -	},
      -
      -	_setSelection: function() {
      -		var selection;
      -
      -		if ( !this.range ) {
      -			return;
      -		}
      -
      -		if ( window.getSelection ) {
      -			selection = window.getSelection();
      -			selection.removeAllRanges();
      -			selection.addRange( this.range );
      -
      -		// Support: IE8
      -		} else {
      -			this.range.select();
      -		}
      -
      -		// Support: IE
      -		// Setting the text selection kills the button focus in IE, but
      -		// restoring the focus doesn't kill the selection.
      -		this.button.focus();
      -	},
      -
      -	_documentClick: {
      -		mousedown: function( event ) {
      -			if ( !this.isOpen ) {
      -				return;
      -			}
      -
      -			if ( !$( event.target ).closest( ".ui-selectmenu-menu, #" +
      -					$.ui.escapeSelector( this.ids.button ) ).length ) {
      -				this.close( event );
      -			}
      -		}
      -	},
      -
      -	_buttonEvents: {
      -
      -		// Prevent text selection from being reset when interacting with the selectmenu (#10144)
      -		mousedown: function() {
      -			var selection;
      -
      -			if ( window.getSelection ) {
      -				selection = window.getSelection();
      -				if ( selection.rangeCount ) {
      -					this.range = selection.getRangeAt( 0 );
      -				}
      -
      -			// Support: IE8
      -			} else {
      -				this.range = document.selection.createRange();
      -			}
      -		},
      -
      -		click: function( event ) {
      -			this._setSelection();
      -			this._toggle( event );
      -		},
      -
      -		keydown: function( event ) {
      -			var preventDefault = true;
      -			switch ( event.keyCode ) {
      -			case $.ui.keyCode.TAB:
      -			case $.ui.keyCode.ESCAPE:
      -				this.close( event );
      -				preventDefault = false;
      -				break;
      -			case $.ui.keyCode.ENTER:
      -				if ( this.isOpen ) {
      -					this._selectFocusedItem( event );
      -				}
      -				break;
      -			case $.ui.keyCode.UP:
      -				if ( event.altKey ) {
      -					this._toggle( event );
      -				} else {
      -					this._move( "prev", event );
      -				}
      -				break;
      -			case $.ui.keyCode.DOWN:
      -				if ( event.altKey ) {
      -					this._toggle( event );
      -				} else {
      -					this._move( "next", event );
      -				}
      -				break;
      -			case $.ui.keyCode.SPACE:
      -				if ( this.isOpen ) {
      -					this._selectFocusedItem( event );
      -				} else {
      -					this._toggle( event );
      -				}
      -				break;
      -			case $.ui.keyCode.LEFT:
      -				this._move( "prev", event );
      -				break;
      -			case $.ui.keyCode.RIGHT:
      -				this._move( "next", event );
      -				break;
      -			case $.ui.keyCode.HOME:
      -			case $.ui.keyCode.PAGE_UP:
      -				this._move( "first", event );
      -				break;
      -			case $.ui.keyCode.END:
      -			case $.ui.keyCode.PAGE_DOWN:
      -				this._move( "last", event );
      -				break;
      -			default:
      -				this.menu.trigger( event );
      -				preventDefault = false;
      -			}
      -
      -			if ( preventDefault ) {
      -				event.preventDefault();
      -			}
      -		}
      -	},
      -
      -	_selectFocusedItem: function( event ) {
      -		var item = this.menuItems.eq( this.focusIndex ).parent( "li" );
      -		if ( !item.hasClass( "ui-state-disabled" ) ) {
      -			this._select( item.data( "ui-selectmenu-item" ), event );
      -		}
      -	},
      -
      -	_select: function( item, event ) {
      -		var oldIndex = this.element[ 0 ].selectedIndex;
      -
      -		// Change native select element
      -		this.element[ 0 ].selectedIndex = item.index;
      -		this.buttonItem.replaceWith( this.buttonItem = this._renderButtonItem( item ) );
      -		this._setAria( item );
      -		this._trigger( "select", event, { item: item } );
      -
      -		if ( item.index !== oldIndex ) {
      -			this._trigger( "change", event, { item: item } );
      -		}
      -
      -		this.close( event );
      -	},
      -
      -	_setAria: function( item ) {
      -		var id = this.menuItems.eq( item.index ).attr( "id" );
      -
      -		this.button.attr( {
      -			"aria-labelledby": id,
      -			"aria-activedescendant": id
      -		} );
      -		this.menu.attr( "aria-activedescendant", id );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "icons" ) {
      -			var icon = this.button.find( "span.ui-icon" );
      -			this._removeClass( icon, null, this.options.icons.button )
      -				._addClass( icon, null, value.button );
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "appendTo" ) {
      -			this.menuWrap.appendTo( this._appendTo() );
      -		}
      -
      -		if ( key === "width" ) {
      -			this._resizeButton();
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this.menuInstance.option( "disabled", value );
      -		this.button.attr( "aria-disabled", value );
      -		this._toggleClass( this.button, null, "ui-state-disabled", value );
      -
      -		this.element.prop( "disabled", value );
      -		if ( value ) {
      -			this.button.attr( "tabindex", -1 );
      -			this.close();
      -		} else {
      -			this.button.attr( "tabindex", 0 );
      -		}
      -	},
      -
      -	_appendTo: function() {
      -		var element = this.options.appendTo;
      -
      -		if ( element ) {
      -			element = element.jquery || element.nodeType ?
      -				$( element ) :
      -				this.document.find( element ).eq( 0 );
      -		}
      -
      -		if ( !element || !element[ 0 ] ) {
      -			element = this.element.closest( ".ui-front, dialog" );
      -		}
      -
      -		if ( !element.length ) {
      -			element = this.document[ 0 ].body;
      -		}
      -
      -		return element;
      -	},
      -
      -	_toggleAttr: function() {
      -		this.button.attr( "aria-expanded", this.isOpen );
      -
      -		// We can't use two _toggleClass() calls here, because we need to make sure
      -		// we always remove classes first and add them second, otherwise if both classes have the
      -		// same theme class, it will be removed after we add it.
      -		this._removeClass( this.button, "ui-selectmenu-button-" +
      -			( this.isOpen ? "closed" : "open" ) )
      -			._addClass( this.button, "ui-selectmenu-button-" +
      -				( this.isOpen ? "open" : "closed" ) )
      -			._toggleClass( this.menuWrap, "ui-selectmenu-open", null, this.isOpen );
      -
      -		this.menu.attr( "aria-hidden", !this.isOpen );
      -	},
      -
      -	_resizeButton: function() {
      -		var width = this.options.width;
      -
      -		// For `width: false`, just remove inline style and stop
      -		if ( width === false ) {
      -			this.button.css( "width", "" );
      -			return;
      -		}
      -
      -		// For `width: null`, match the width of the original element
      -		if ( width === null ) {
      -			width = this.element.show().outerWidth();
      -			this.element.hide();
      -		}
      -
      -		this.button.outerWidth( width );
      -	},
      -
      -	_resizeMenu: function() {
      -		this.menu.outerWidth( Math.max(
      -			this.button.outerWidth(),
      -
      -			// Support: IE10
      -			// IE10 wraps long text (possibly a rounding bug)
      -			// so we add 1px to avoid the wrapping
      -			this.menu.width( "" ).outerWidth() + 1
      -		) );
      -	},
      -
      -	_getCreateOptions: function() {
      -		var options = this._super();
      -
      -		options.disabled = this.element.prop( "disabled" );
      -
      -		return options;
      -	},
      -
      -	_parseOptions: function( options ) {
      -		var that = this,
      -			data = [];
      -		options.each( function( index, item ) {
      -			data.push( that._parseOption( $( item ), index ) );
      -		} );
      -		this.items = data;
      -	},
      -
      -	_parseOption: function( option, index ) {
      -		var optgroup = option.parent( "optgroup" );
      -
      -		return {
      -			element: option,
      -			index: index,
      -			value: option.val(),
      -			label: option.text(),
      -			optgroup: optgroup.attr( "label" ) || "",
      -			disabled: optgroup.prop( "disabled" ) || option.prop( "disabled" )
      -		};
      -	},
      -
      -	_destroy: function() {
      -		this._unbindFormResetHandler();
      -		this.menuWrap.remove();
      -		this.button.remove();
      -		this.element.show();
      -		this.element.removeUniqueId();
      -		this.labels.attr( "for", this.ids.element );
      -	}
      -} ] );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/slider.js b/bower_components/jquery-ui/ui/widgets/slider.js
      deleted file mode 100644
      index dc5e66d1fa..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/slider.js
      +++ /dev/null
      @@ -1,752 +0,0 @@
      -/*!
      - * jQuery UI Slider 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Slider
      -//>>group: Widgets
      -//>>description: Displays a flexible slider with ranges and accessibility via keyboard.
      -//>>docs: http://api.jqueryui.com/slider/
      -//>>demos: http://jqueryui.com/slider/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/slider.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./mouse",
      -			"../keycode",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.widget( "ui.slider", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "slide",
      -
      -	options: {
      -		animate: false,
      -		classes: {
      -			"ui-slider": "ui-corner-all",
      -			"ui-slider-handle": "ui-corner-all",
      -
      -			// Note: ui-widget-header isn't the most fittingly semantic framework class for this
      -			// element, but worked best visually with a variety of themes
      -			"ui-slider-range": "ui-corner-all ui-widget-header"
      -		},
      -		distance: 0,
      -		max: 100,
      -		min: 0,
      -		orientation: "horizontal",
      -		range: false,
      -		step: 1,
      -		value: 0,
      -		values: null,
      -
      -		// Callbacks
      -		change: null,
      -		slide: null,
      -		start: null,
      -		stop: null
      -	},
      -
      -	// Number of pages in a slider
      -	// (how many times can you page up/down to go through the whole range)
      -	numPages: 5,
      -
      -	_create: function() {
      -		this._keySliding = false;
      -		this._mouseSliding = false;
      -		this._animateOff = true;
      -		this._handleIndex = null;
      -		this._detectOrientation();
      -		this._mouseInit();
      -		this._calculateNewMax();
      -
      -		this._addClass( "ui-slider ui-slider-" + this.orientation,
      -			"ui-widget ui-widget-content" );
      -
      -		this._refresh();
      -
      -		this._animateOff = false;
      -	},
      -
      -	_refresh: function() {
      -		this._createRange();
      -		this._createHandles();
      -		this._setupEvents();
      -		this._refreshValue();
      -	},
      -
      -	_createHandles: function() {
      -		var i, handleCount,
      -			options = this.options,
      -			existingHandles = this.element.find( ".ui-slider-handle" ),
      -			handle = "<span tabindex='0'></span>",
      -			handles = [];
      -
      -		handleCount = ( options.values && options.values.length ) || 1;
      -
      -		if ( existingHandles.length > handleCount ) {
      -			existingHandles.slice( handleCount ).remove();
      -			existingHandles = existingHandles.slice( 0, handleCount );
      -		}
      -
      -		for ( i = existingHandles.length; i < handleCount; i++ ) {
      -			handles.push( handle );
      -		}
      -
      -		this.handles = existingHandles.add( $( handles.join( "" ) ).appendTo( this.element ) );
      -
      -		this._addClass( this.handles, "ui-slider-handle", "ui-state-default" );
      -
      -		this.handle = this.handles.eq( 0 );
      -
      -		this.handles.each( function( i ) {
      -			$( this )
      -				.data( "ui-slider-handle-index", i )
      -				.attr( "tabIndex", 0 );
      -		} );
      -	},
      -
      -	_createRange: function() {
      -		var options = this.options;
      -
      -		if ( options.range ) {
      -			if ( options.range === true ) {
      -				if ( !options.values ) {
      -					options.values = [ this._valueMin(), this._valueMin() ];
      -				} else if ( options.values.length && options.values.length !== 2 ) {
      -					options.values = [ options.values[ 0 ], options.values[ 0 ] ];
      -				} else if ( $.isArray( options.values ) ) {
      -					options.values = options.values.slice( 0 );
      -				}
      -			}
      -
      -			if ( !this.range || !this.range.length ) {
      -				this.range = $( "<div>" )
      -					.appendTo( this.element );
      -
      -				this._addClass( this.range, "ui-slider-range" );
      -			} else {
      -				this._removeClass( this.range, "ui-slider-range-min ui-slider-range-max" );
      -
      -				// Handle range switching from true to min/max
      -				this.range.css( {
      -					"left": "",
      -					"bottom": ""
      -				} );
      -			}
      -			if ( options.range === "min" || options.range === "max" ) {
      -				this._addClass( this.range, "ui-slider-range-" + options.range );
      -			}
      -		} else {
      -			if ( this.range ) {
      -				this.range.remove();
      -			}
      -			this.range = null;
      -		}
      -	},
      -
      -	_setupEvents: function() {
      -		this._off( this.handles );
      -		this._on( this.handles, this._handleEvents );
      -		this._hoverable( this.handles );
      -		this._focusable( this.handles );
      -	},
      -
      -	_destroy: function() {
      -		this.handles.remove();
      -		if ( this.range ) {
      -			this.range.remove();
      -		}
      -
      -		this._mouseDestroy();
      -	},
      -
      -	_mouseCapture: function( event ) {
      -		var position, normValue, distance, closestHandle, index, allowed, offset, mouseOverHandle,
      -			that = this,
      -			o = this.options;
      -
      -		if ( o.disabled ) {
      -			return false;
      -		}
      -
      -		this.elementSize = {
      -			width: this.element.outerWidth(),
      -			height: this.element.outerHeight()
      -		};
      -		this.elementOffset = this.element.offset();
      -
      -		position = { x: event.pageX, y: event.pageY };
      -		normValue = this._normValueFromMouse( position );
      -		distance = this._valueMax() - this._valueMin() + 1;
      -		this.handles.each( function( i ) {
      -			var thisDistance = Math.abs( normValue - that.values( i ) );
      -			if ( ( distance > thisDistance ) ||
      -				( distance === thisDistance &&
      -					( i === that._lastChangedValue || that.values( i ) === o.min ) ) ) {
      -				distance = thisDistance;
      -				closestHandle = $( this );
      -				index = i;
      -			}
      -		} );
      -
      -		allowed = this._start( event, index );
      -		if ( allowed === false ) {
      -			return false;
      -		}
      -		this._mouseSliding = true;
      -
      -		this._handleIndex = index;
      -
      -		this._addClass( closestHandle, null, "ui-state-active" );
      -		closestHandle.trigger( "focus" );
      -
      -		offset = closestHandle.offset();
      -		mouseOverHandle = !$( event.target ).parents().addBack().is( ".ui-slider-handle" );
      -		this._clickOffset = mouseOverHandle ? { left: 0, top: 0 } : {
      -			left: event.pageX - offset.left - ( closestHandle.width() / 2 ),
      -			top: event.pageY - offset.top -
      -				( closestHandle.height() / 2 ) -
      -				( parseInt( closestHandle.css( "borderTopWidth" ), 10 ) || 0 ) -
      -				( parseInt( closestHandle.css( "borderBottomWidth" ), 10 ) || 0 ) +
      -				( parseInt( closestHandle.css( "marginTop" ), 10 ) || 0 )
      -		};
      -
      -		if ( !this.handles.hasClass( "ui-state-hover" ) ) {
      -			this._slide( event, index, normValue );
      -		}
      -		this._animateOff = true;
      -		return true;
      -	},
      -
      -	_mouseStart: function() {
      -		return true;
      -	},
      -
      -	_mouseDrag: function( event ) {
      -		var position = { x: event.pageX, y: event.pageY },
      -			normValue = this._normValueFromMouse( position );
      -
      -		this._slide( event, this._handleIndex, normValue );
      -
      -		return false;
      -	},
      -
      -	_mouseStop: function( event ) {
      -		this._removeClass( this.handles, null, "ui-state-active" );
      -		this._mouseSliding = false;
      -
      -		this._stop( event, this._handleIndex );
      -		this._change( event, this._handleIndex );
      -
      -		this._handleIndex = null;
      -		this._clickOffset = null;
      -		this._animateOff = false;
      -
      -		return false;
      -	},
      -
      -	_detectOrientation: function() {
      -		this.orientation = ( this.options.orientation === "vertical" ) ? "vertical" : "horizontal";
      -	},
      -
      -	_normValueFromMouse: function( position ) {
      -		var pixelTotal,
      -			pixelMouse,
      -			percentMouse,
      -			valueTotal,
      -			valueMouse;
      -
      -		if ( this.orientation === "horizontal" ) {
      -			pixelTotal = this.elementSize.width;
      -			pixelMouse = position.x - this.elementOffset.left -
      -				( this._clickOffset ? this._clickOffset.left : 0 );
      -		} else {
      -			pixelTotal = this.elementSize.height;
      -			pixelMouse = position.y - this.elementOffset.top -
      -				( this._clickOffset ? this._clickOffset.top : 0 );
      -		}
      -
      -		percentMouse = ( pixelMouse / pixelTotal );
      -		if ( percentMouse > 1 ) {
      -			percentMouse = 1;
      -		}
      -		if ( percentMouse < 0 ) {
      -			percentMouse = 0;
      -		}
      -		if ( this.orientation === "vertical" ) {
      -			percentMouse = 1 - percentMouse;
      -		}
      -
      -		valueTotal = this._valueMax() - this._valueMin();
      -		valueMouse = this._valueMin() + percentMouse * valueTotal;
      -
      -		return this._trimAlignValue( valueMouse );
      -	},
      -
      -	_uiHash: function( index, value, values ) {
      -		var uiHash = {
      -			handle: this.handles[ index ],
      -			handleIndex: index,
      -			value: value !== undefined ? value : this.value()
      -		};
      -
      -		if ( this._hasMultipleValues() ) {
      -			uiHash.value = value !== undefined ? value : this.values( index );
      -			uiHash.values = values || this.values();
      -		}
      -
      -		return uiHash;
      -	},
      -
      -	_hasMultipleValues: function() {
      -		return this.options.values && this.options.values.length;
      -	},
      -
      -	_start: function( event, index ) {
      -		return this._trigger( "start", event, this._uiHash( index ) );
      -	},
      -
      -	_slide: function( event, index, newVal ) {
      -		var allowed, otherVal,
      -			currentValue = this.value(),
      -			newValues = this.values();
      -
      -		if ( this._hasMultipleValues() ) {
      -			otherVal = this.values( index ? 0 : 1 );
      -			currentValue = this.values( index );
      -
      -			if ( this.options.values.length === 2 && this.options.range === true ) {
      -				newVal =  index === 0 ? Math.min( otherVal, newVal ) : Math.max( otherVal, newVal );
      -			}
      -
      -			newValues[ index ] = newVal;
      -		}
      -
      -		if ( newVal === currentValue ) {
      -			return;
      -		}
      -
      -		allowed = this._trigger( "slide", event, this._uiHash( index, newVal, newValues ) );
      -
      -		// A slide can be canceled by returning false from the slide callback
      -		if ( allowed === false ) {
      -			return;
      -		}
      -
      -		if ( this._hasMultipleValues() ) {
      -			this.values( index, newVal );
      -		} else {
      -			this.value( newVal );
      -		}
      -	},
      -
      -	_stop: function( event, index ) {
      -		this._trigger( "stop", event, this._uiHash( index ) );
      -	},
      -
      -	_change: function( event, index ) {
      -		if ( !this._keySliding && !this._mouseSliding ) {
      -
      -			//store the last changed value index for reference when handles overlap
      -			this._lastChangedValue = index;
      -			this._trigger( "change", event, this._uiHash( index ) );
      -		}
      -	},
      -
      -	value: function( newValue ) {
      -		if ( arguments.length ) {
      -			this.options.value = this._trimAlignValue( newValue );
      -			this._refreshValue();
      -			this._change( null, 0 );
      -			return;
      -		}
      -
      -		return this._value();
      -	},
      -
      -	values: function( index, newValue ) {
      -		var vals,
      -			newValues,
      -			i;
      -
      -		if ( arguments.length > 1 ) {
      -			this.options.values[ index ] = this._trimAlignValue( newValue );
      -			this._refreshValue();
      -			this._change( null, index );
      -			return;
      -		}
      -
      -		if ( arguments.length ) {
      -			if ( $.isArray( arguments[ 0 ] ) ) {
      -				vals = this.options.values;
      -				newValues = arguments[ 0 ];
      -				for ( i = 0; i < vals.length; i += 1 ) {
      -					vals[ i ] = this._trimAlignValue( newValues[ i ] );
      -					this._change( null, i );
      -				}
      -				this._refreshValue();
      -			} else {
      -				if ( this._hasMultipleValues() ) {
      -					return this._values( index );
      -				} else {
      -					return this.value();
      -				}
      -			}
      -		} else {
      -			return this._values();
      -		}
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var i,
      -			valsLength = 0;
      -
      -		if ( key === "range" && this.options.range === true ) {
      -			if ( value === "min" ) {
      -				this.options.value = this._values( 0 );
      -				this.options.values = null;
      -			} else if ( value === "max" ) {
      -				this.options.value = this._values( this.options.values.length - 1 );
      -				this.options.values = null;
      -			}
      -		}
      -
      -		if ( $.isArray( this.options.values ) ) {
      -			valsLength = this.options.values.length;
      -		}
      -
      -		this._super( key, value );
      -
      -		switch ( key ) {
      -			case "orientation":
      -				this._detectOrientation();
      -				this._removeClass( "ui-slider-horizontal ui-slider-vertical" )
      -					._addClass( "ui-slider-" + this.orientation );
      -				this._refreshValue();
      -				if ( this.options.range ) {
      -					this._refreshRange( value );
      -				}
      -
      -				// Reset positioning from previous orientation
      -				this.handles.css( value === "horizontal" ? "bottom" : "left", "" );
      -				break;
      -			case "value":
      -				this._animateOff = true;
      -				this._refreshValue();
      -				this._change( null, 0 );
      -				this._animateOff = false;
      -				break;
      -			case "values":
      -				this._animateOff = true;
      -				this._refreshValue();
      -
      -				// Start from the last handle to prevent unreachable handles (#9046)
      -				for ( i = valsLength - 1; i >= 0; i-- ) {
      -					this._change( null, i );
      -				}
      -				this._animateOff = false;
      -				break;
      -			case "step":
      -			case "min":
      -			case "max":
      -				this._animateOff = true;
      -				this._calculateNewMax();
      -				this._refreshValue();
      -				this._animateOff = false;
      -				break;
      -			case "range":
      -				this._animateOff = true;
      -				this._refresh();
      -				this._animateOff = false;
      -				break;
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this._toggleClass( null, "ui-state-disabled", !!value );
      -	},
      -
      -	//internal value getter
      -	// _value() returns value trimmed by min and max, aligned by step
      -	_value: function() {
      -		var val = this.options.value;
      -		val = this._trimAlignValue( val );
      -
      -		return val;
      -	},
      -
      -	//internal values getter
      -	// _values() returns array of values trimmed by min and max, aligned by step
      -	// _values( index ) returns single value trimmed by min and max, aligned by step
      -	_values: function( index ) {
      -		var val,
      -			vals,
      -			i;
      -
      -		if ( arguments.length ) {
      -			val = this.options.values[ index ];
      -			val = this._trimAlignValue( val );
      -
      -			return val;
      -		} else if ( this._hasMultipleValues() ) {
      -
      -			// .slice() creates a copy of the array
      -			// this copy gets trimmed by min and max and then returned
      -			vals = this.options.values.slice();
      -			for ( i = 0; i < vals.length; i += 1 ) {
      -				vals[ i ] = this._trimAlignValue( vals[ i ] );
      -			}
      -
      -			return vals;
      -		} else {
      -			return [];
      -		}
      -	},
      -
      -	// Returns the step-aligned value that val is closest to, between (inclusive) min and max
      -	_trimAlignValue: function( val ) {
      -		if ( val <= this._valueMin() ) {
      -			return this._valueMin();
      -		}
      -		if ( val >= this._valueMax() ) {
      -			return this._valueMax();
      -		}
      -		var step = ( this.options.step > 0 ) ? this.options.step : 1,
      -			valModStep = ( val - this._valueMin() ) % step,
      -			alignValue = val - valModStep;
      -
      -		if ( Math.abs( valModStep ) * 2 >= step ) {
      -			alignValue += ( valModStep > 0 ) ? step : ( -step );
      -		}
      -
      -		// Since JavaScript has problems with large floats, round
      -		// the final value to 5 digits after the decimal point (see #4124)
      -		return parseFloat( alignValue.toFixed( 5 ) );
      -	},
      -
      -	_calculateNewMax: function() {
      -		var max = this.options.max,
      -			min = this._valueMin(),
      -			step = this.options.step,
      -			aboveMin = Math.round( ( max - min ) / step ) * step;
      -		max = aboveMin + min;
      -		if ( max > this.options.max ) {
      -
      -			//If max is not divisible by step, rounding off may increase its value
      -			max -= step;
      -		}
      -		this.max = parseFloat( max.toFixed( this._precision() ) );
      -	},
      -
      -	_precision: function() {
      -		var precision = this._precisionOf( this.options.step );
      -		if ( this.options.min !== null ) {
      -			precision = Math.max( precision, this._precisionOf( this.options.min ) );
      -		}
      -		return precision;
      -	},
      -
      -	_precisionOf: function( num ) {
      -		var str = num.toString(),
      -			decimal = str.indexOf( "." );
      -		return decimal === -1 ? 0 : str.length - decimal - 1;
      -	},
      -
      -	_valueMin: function() {
      -		return this.options.min;
      -	},
      -
      -	_valueMax: function() {
      -		return this.max;
      -	},
      -
      -	_refreshRange: function( orientation ) {
      -		if ( orientation === "vertical" ) {
      -			this.range.css( { "width": "", "left": "" } );
      -		}
      -		if ( orientation === "horizontal" ) {
      -			this.range.css( { "height": "", "bottom": "" } );
      -		}
      -	},
      -
      -	_refreshValue: function() {
      -		var lastValPercent, valPercent, value, valueMin, valueMax,
      -			oRange = this.options.range,
      -			o = this.options,
      -			that = this,
      -			animate = ( !this._animateOff ) ? o.animate : false,
      -			_set = {};
      -
      -		if ( this._hasMultipleValues() ) {
      -			this.handles.each( function( i ) {
      -				valPercent = ( that.values( i ) - that._valueMin() ) / ( that._valueMax() -
      -					that._valueMin() ) * 100;
      -				_set[ that.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
      -				$( this ).stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
      -				if ( that.options.range === true ) {
      -					if ( that.orientation === "horizontal" ) {
      -						if ( i === 0 ) {
      -							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -								left: valPercent + "%"
      -							}, o.animate );
      -						}
      -						if ( i === 1 ) {
      -							that.range[ animate ? "animate" : "css" ]( {
      -								width: ( valPercent - lastValPercent ) + "%"
      -							}, {
      -								queue: false,
      -								duration: o.animate
      -							} );
      -						}
      -					} else {
      -						if ( i === 0 ) {
      -							that.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -								bottom: ( valPercent ) + "%"
      -							}, o.animate );
      -						}
      -						if ( i === 1 ) {
      -							that.range[ animate ? "animate" : "css" ]( {
      -								height: ( valPercent - lastValPercent ) + "%"
      -							}, {
      -								queue: false,
      -								duration: o.animate
      -							} );
      -						}
      -					}
      -				}
      -				lastValPercent = valPercent;
      -			} );
      -		} else {
      -			value = this.value();
      -			valueMin = this._valueMin();
      -			valueMax = this._valueMax();
      -			valPercent = ( valueMax !== valueMin ) ?
      -					( value - valueMin ) / ( valueMax - valueMin ) * 100 :
      -					0;
      -			_set[ this.orientation === "horizontal" ? "left" : "bottom" ] = valPercent + "%";
      -			this.handle.stop( 1, 1 )[ animate ? "animate" : "css" ]( _set, o.animate );
      -
      -			if ( oRange === "min" && this.orientation === "horizontal" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					width: valPercent + "%"
      -				}, o.animate );
      -			}
      -			if ( oRange === "max" && this.orientation === "horizontal" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					width: ( 100 - valPercent ) + "%"
      -				}, o.animate );
      -			}
      -			if ( oRange === "min" && this.orientation === "vertical" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					height: valPercent + "%"
      -				}, o.animate );
      -			}
      -			if ( oRange === "max" && this.orientation === "vertical" ) {
      -				this.range.stop( 1, 1 )[ animate ? "animate" : "css" ]( {
      -					height: ( 100 - valPercent ) + "%"
      -				}, o.animate );
      -			}
      -		}
      -	},
      -
      -	_handleEvents: {
      -		keydown: function( event ) {
      -			var allowed, curVal, newVal, step,
      -				index = $( event.target ).data( "ui-slider-handle-index" );
      -
      -			switch ( event.keyCode ) {
      -				case $.ui.keyCode.HOME:
      -				case $.ui.keyCode.END:
      -				case $.ui.keyCode.PAGE_UP:
      -				case $.ui.keyCode.PAGE_DOWN:
      -				case $.ui.keyCode.UP:
      -				case $.ui.keyCode.RIGHT:
      -				case $.ui.keyCode.DOWN:
      -				case $.ui.keyCode.LEFT:
      -					event.preventDefault();
      -					if ( !this._keySliding ) {
      -						this._keySliding = true;
      -						this._addClass( $( event.target ), null, "ui-state-active" );
      -						allowed = this._start( event, index );
      -						if ( allowed === false ) {
      -							return;
      -						}
      -					}
      -					break;
      -			}
      -
      -			step = this.options.step;
      -			if ( this._hasMultipleValues() ) {
      -				curVal = newVal = this.values( index );
      -			} else {
      -				curVal = newVal = this.value();
      -			}
      -
      -			switch ( event.keyCode ) {
      -				case $.ui.keyCode.HOME:
      -					newVal = this._valueMin();
      -					break;
      -				case $.ui.keyCode.END:
      -					newVal = this._valueMax();
      -					break;
      -				case $.ui.keyCode.PAGE_UP:
      -					newVal = this._trimAlignValue(
      -						curVal + ( ( this._valueMax() - this._valueMin() ) / this.numPages )
      -					);
      -					break;
      -				case $.ui.keyCode.PAGE_DOWN:
      -					newVal = this._trimAlignValue(
      -						curVal - ( ( this._valueMax() - this._valueMin() ) / this.numPages ) );
      -					break;
      -				case $.ui.keyCode.UP:
      -				case $.ui.keyCode.RIGHT:
      -					if ( curVal === this._valueMax() ) {
      -						return;
      -					}
      -					newVal = this._trimAlignValue( curVal + step );
      -					break;
      -				case $.ui.keyCode.DOWN:
      -				case $.ui.keyCode.LEFT:
      -					if ( curVal === this._valueMin() ) {
      -						return;
      -					}
      -					newVal = this._trimAlignValue( curVal - step );
      -					break;
      -			}
      -
      -			this._slide( event, index, newVal );
      -		},
      -		keyup: function( event ) {
      -			var index = $( event.target ).data( "ui-slider-handle-index" );
      -
      -			if ( this._keySliding ) {
      -				this._keySliding = false;
      -				this._stop( event, index );
      -				this._change( event, index );
      -				this._removeClass( $( event.target ), null, "ui-state-active" );
      -			}
      -		}
      -	}
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/sortable.js b/bower_components/jquery-ui/ui/widgets/sortable.js
      deleted file mode 100644
      index 33c2fb7665..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/sortable.js
      +++ /dev/null
      @@ -1,1554 +0,0 @@
      -/*!
      - * jQuery UI Sortable 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Sortable
      -//>>group: Interactions
      -//>>description: Enables items in a list to be sorted using the mouse.
      -//>>docs: http://api.jqueryui.com/sortable/
      -//>>demos: http://jqueryui.com/sortable/
      -//>>css.structure: ../../themes/base/sortable.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./mouse",
      -			"../data",
      -			"../ie",
      -			"../scroll-parent",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -return $.widget( "ui.sortable", $.ui.mouse, {
      -	version: "1.12.1",
      -	widgetEventPrefix: "sort",
      -	ready: false,
      -	options: {
      -		appendTo: "parent",
      -		axis: false,
      -		connectWith: false,
      -		containment: false,
      -		cursor: "auto",
      -		cursorAt: false,
      -		dropOnEmpty: true,
      -		forcePlaceholderSize: false,
      -		forceHelperSize: false,
      -		grid: false,
      -		handle: false,
      -		helper: "original",
      -		items: "> *",
      -		opacity: false,
      -		placeholder: false,
      -		revert: false,
      -		scroll: true,
      -		scrollSensitivity: 20,
      -		scrollSpeed: 20,
      -		scope: "default",
      -		tolerance: "intersect",
      -		zIndex: 1000,
      -
      -		// Callbacks
      -		activate: null,
      -		beforeStop: null,
      -		change: null,
      -		deactivate: null,
      -		out: null,
      -		over: null,
      -		receive: null,
      -		remove: null,
      -		sort: null,
      -		start: null,
      -		stop: null,
      -		update: null
      -	},
      -
      -	_isOverAxis: function( x, reference, size ) {
      -		return ( x >= reference ) && ( x < ( reference + size ) );
      -	},
      -
      -	_isFloating: function( item ) {
      -		return ( /left|right/ ).test( item.css( "float" ) ) ||
      -			( /inline|table-cell/ ).test( item.css( "display" ) );
      -	},
      -
      -	_create: function() {
      -		this.containerCache = {};
      -		this._addClass( "ui-sortable" );
      -
      -		//Get the items
      -		this.refresh();
      -
      -		//Let's determine the parent's offset
      -		this.offset = this.element.offset();
      -
      -		//Initialize mouse events for interaction
      -		this._mouseInit();
      -
      -		this._setHandleClassName();
      -
      -		//We're ready to go
      -		this.ready = true;
      -
      -	},
      -
      -	_setOption: function( key, value ) {
      -		this._super( key, value );
      -
      -		if ( key === "handle" ) {
      -			this._setHandleClassName();
      -		}
      -	},
      -
      -	_setHandleClassName: function() {
      -		var that = this;
      -		this._removeClass( this.element.find( ".ui-sortable-handle" ), "ui-sortable-handle" );
      -		$.each( this.items, function() {
      -			that._addClass(
      -				this.instance.options.handle ?
      -					this.item.find( this.instance.options.handle ) :
      -					this.item,
      -				"ui-sortable-handle"
      -			);
      -		} );
      -	},
      -
      -	_destroy: function() {
      -		this._mouseDestroy();
      -
      -		for ( var i = this.items.length - 1; i >= 0; i-- ) {
      -			this.items[ i ].item.removeData( this.widgetName + "-item" );
      -		}
      -
      -		return this;
      -	},
      -
      -	_mouseCapture: function( event, overrideHandle ) {
      -		var currentItem = null,
      -			validHandle = false,
      -			that = this;
      -
      -		if ( this.reverting ) {
      -			return false;
      -		}
      -
      -		if ( this.options.disabled || this.options.type === "static" ) {
      -			return false;
      -		}
      -
      -		//We have to refresh the items data once first
      -		this._refreshItems( event );
      -
      -		//Find out if the clicked node (or one of its parents) is a actual item in this.items
      -		$( event.target ).parents().each( function() {
      -			if ( $.data( this, that.widgetName + "-item" ) === that ) {
      -				currentItem = $( this );
      -				return false;
      -			}
      -		} );
      -		if ( $.data( event.target, that.widgetName + "-item" ) === that ) {
      -			currentItem = $( event.target );
      -		}
      -
      -		if ( !currentItem ) {
      -			return false;
      -		}
      -		if ( this.options.handle && !overrideHandle ) {
      -			$( this.options.handle, currentItem ).find( "*" ).addBack().each( function() {
      -				if ( this === event.target ) {
      -					validHandle = true;
      -				}
      -			} );
      -			if ( !validHandle ) {
      -				return false;
      -			}
      -		}
      -
      -		this.currentItem = currentItem;
      -		this._removeCurrentsFromItems();
      -		return true;
      -
      -	},
      -
      -	_mouseStart: function( event, overrideHandle, noActivation ) {
      -
      -		var i, body,
      -			o = this.options;
      -
      -		this.currentContainer = this;
      -
      -		//We only need to call refreshPositions, because the refreshItems call has been moved to
      -		// mouseCapture
      -		this.refreshPositions();
      -
      -		//Create and append the visible helper
      -		this.helper = this._createHelper( event );
      -
      -		//Cache the helper size
      -		this._cacheHelperProportions();
      -
      -		/*
      -		 * - Position generation -
      -		 * This block generates everything position related - it's the core of draggables.
      -		 */
      -
      -		//Cache the margins of the original element
      -		this._cacheMargins();
      -
      -		//Get the next scrolling parent
      -		this.scrollParent = this.helper.scrollParent();
      -
      -		//The element's absolute position on the page minus margins
      -		this.offset = this.currentItem.offset();
      -		this.offset = {
      -			top: this.offset.top - this.margins.top,
      -			left: this.offset.left - this.margins.left
      -		};
      -
      -		$.extend( this.offset, {
      -			click: { //Where the click happened, relative to the element
      -				left: event.pageX - this.offset.left,
      -				top: event.pageY - this.offset.top
      -			},
      -			parent: this._getParentOffset(),
      -
      -			// This is a relative to absolute position minus the actual position calculation -
      -			// only used for relative positioned helper
      -			relative: this._getRelativeOffset()
      -		} );
      -
      -		// Only after we got the offset, we can change the helper's position to absolute
      -		// TODO: Still need to figure out a way to make relative sorting possible
      -		this.helper.css( "position", "absolute" );
      -		this.cssPosition = this.helper.css( "position" );
      -
      -		//Generate the original position
      -		this.originalPosition = this._generatePosition( event );
      -		this.originalPageX = event.pageX;
      -		this.originalPageY = event.pageY;
      -
      -		//Adjust the mouse offset relative to the helper if "cursorAt" is supplied
      -		( o.cursorAt && this._adjustOffsetFromHelper( o.cursorAt ) );
      -
      -		//Cache the former DOM position
      -		this.domPosition = {
      -			prev: this.currentItem.prev()[ 0 ],
      -			parent: this.currentItem.parent()[ 0 ]
      -		};
      -
      -		// If the helper is not the original, hide the original so it's not playing any role during
      -		// the drag, won't cause anything bad this way
      -		if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
      -			this.currentItem.hide();
      -		}
      -
      -		//Create the placeholder
      -		this._createPlaceholder();
      -
      -		//Set a containment if given in the options
      -		if ( o.containment ) {
      -			this._setContainment();
      -		}
      -
      -		if ( o.cursor && o.cursor !== "auto" ) { // cursor option
      -			body = this.document.find( "body" );
      -
      -			// Support: IE
      -			this.storedCursor = body.css( "cursor" );
      -			body.css( "cursor", o.cursor );
      -
      -			this.storedStylesheet =
      -				$( "<style>*{ cursor: " + o.cursor + " !important; }</style>" ).appendTo( body );
      -		}
      -
      -		if ( o.opacity ) { // opacity option
      -			if ( this.helper.css( "opacity" ) ) {
      -				this._storedOpacity = this.helper.css( "opacity" );
      -			}
      -			this.helper.css( "opacity", o.opacity );
      -		}
      -
      -		if ( o.zIndex ) { // zIndex option
      -			if ( this.helper.css( "zIndex" ) ) {
      -				this._storedZIndex = this.helper.css( "zIndex" );
      -			}
      -			this.helper.css( "zIndex", o.zIndex );
      -		}
      -
      -		//Prepare scrolling
      -		if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				this.scrollParent[ 0 ].tagName !== "HTML" ) {
      -			this.overflowOffset = this.scrollParent.offset();
      -		}
      -
      -		//Call callbacks
      -		this._trigger( "start", event, this._uiHash() );
      -
      -		//Recache the helper size
      -		if ( !this._preserveHelperProportions ) {
      -			this._cacheHelperProportions();
      -		}
      -
      -		//Post "activate" events to possible containers
      -		if ( !noActivation ) {
      -			for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -				this.containers[ i ]._trigger( "activate", event, this._uiHash( this ) );
      -			}
      -		}
      -
      -		//Prepare possible droppables
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.current = this;
      -		}
      -
      -		if ( $.ui.ddmanager && !o.dropBehaviour ) {
      -			$.ui.ddmanager.prepareOffsets( this, event );
      -		}
      -
      -		this.dragging = true;
      -
      -		this._addClass( this.helper, "ui-sortable-helper" );
      -
      -		// Execute the drag once - this causes the helper not to be visiblebefore getting its
      -		// correct position
      -		this._mouseDrag( event );
      -		return true;
      -
      -	},
      -
      -	_mouseDrag: function( event ) {
      -		var i, item, itemElement, intersection,
      -			o = this.options,
      -			scrolled = false;
      -
      -		//Compute the helpers position
      -		this.position = this._generatePosition( event );
      -		this.positionAbs = this._convertPositionTo( "absolute" );
      -
      -		if ( !this.lastPositionAbs ) {
      -			this.lastPositionAbs = this.positionAbs;
      -		}
      -
      -		//Do scrolling
      -		if ( this.options.scroll ) {
      -			if ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -					this.scrollParent[ 0 ].tagName !== "HTML" ) {
      -
      -				if ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -
      -						event.pageY < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollTop =
      -						scrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;
      -				} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollTop =
      -						scrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;
      -				}
      -
      -				if ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -
      -						event.pageX < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollLeft = scrolled =
      -						this.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;
      -				} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {
      -					this.scrollParent[ 0 ].scrollLeft = scrolled =
      -						this.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;
      -				}
      -
      -			} else {
      -
      -				if ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {
      -					scrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );
      -				} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );
      -				}
      -
      -				if ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {
      -					scrolled = this.document.scrollLeft(
      -						this.document.scrollLeft() - o.scrollSpeed
      -					);
      -				} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <
      -						o.scrollSensitivity ) {
      -					scrolled = this.document.scrollLeft(
      -						this.document.scrollLeft() + o.scrollSpeed
      -					);
      -				}
      -
      -			}
      -
      -			if ( scrolled !== false && $.ui.ddmanager && !o.dropBehaviour ) {
      -				$.ui.ddmanager.prepareOffsets( this, event );
      -			}
      -		}
      -
      -		//Regenerate the absolute position used for position checks
      -		this.positionAbs = this._convertPositionTo( "absolute" );
      -
      -		//Set the helper position
      -		if ( !this.options.axis || this.options.axis !== "y" ) {
      -			this.helper[ 0 ].style.left = this.position.left + "px";
      -		}
      -		if ( !this.options.axis || this.options.axis !== "x" ) {
      -			this.helper[ 0 ].style.top = this.position.top + "px";
      -		}
      -
      -		//Rearrange
      -		for ( i = this.items.length - 1; i >= 0; i-- ) {
      -
      -			//Cache variables and intersection, continue if no intersection
      -			item = this.items[ i ];
      -			itemElement = item.item[ 0 ];
      -			intersection = this._intersectsWithPointer( item );
      -			if ( !intersection ) {
      -				continue;
      -			}
      -
      -			// Only put the placeholder inside the current Container, skip all
      -			// items from other containers. This works because when moving
      -			// an item from one container to another the
      -			// currentContainer is switched before the placeholder is moved.
      -			//
      -			// Without this, moving items in "sub-sortables" can cause
      -			// the placeholder to jitter between the outer and inner container.
      -			if ( item.instance !== this.currentContainer ) {
      -				continue;
      -			}
      -
      -			// Cannot intersect with itself
      -			// no useless actions that have been done before
      -			// no action if the item moved is the parent of the item checked
      -			if ( itemElement !== this.currentItem[ 0 ] &&
      -				this.placeholder[ intersection === 1 ? "next" : "prev" ]()[ 0 ] !== itemElement &&
      -				!$.contains( this.placeholder[ 0 ], itemElement ) &&
      -				( this.options.type === "semi-dynamic" ?
      -					!$.contains( this.element[ 0 ], itemElement ) :
      -					true
      -				)
      -			) {
      -
      -				this.direction = intersection === 1 ? "down" : "up";
      -
      -				if ( this.options.tolerance === "pointer" || this._intersectsWithSides( item ) ) {
      -					this._rearrange( event, item );
      -				} else {
      -					break;
      -				}
      -
      -				this._trigger( "change", event, this._uiHash() );
      -				break;
      -			}
      -		}
      -
      -		//Post events to containers
      -		this._contactContainers( event );
      -
      -		//Interconnect with droppables
      -		if ( $.ui.ddmanager ) {
      -			$.ui.ddmanager.drag( this, event );
      -		}
      -
      -		//Call callbacks
      -		this._trigger( "sort", event, this._uiHash() );
      -
      -		this.lastPositionAbs = this.positionAbs;
      -		return false;
      -
      -	},
      -
      -	_mouseStop: function( event, noPropagation ) {
      -
      -		if ( !event ) {
      -			return;
      -		}
      -
      -		//If we are using droppables, inform the manager about the drop
      -		if ( $.ui.ddmanager && !this.options.dropBehaviour ) {
      -			$.ui.ddmanager.drop( this, event );
      -		}
      -
      -		if ( this.options.revert ) {
      -			var that = this,
      -				cur = this.placeholder.offset(),
      -				axis = this.options.axis,
      -				animation = {};
      -
      -			if ( !axis || axis === "x" ) {
      -				animation.left = cur.left - this.offset.parent.left - this.margins.left +
      -					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
      -						0 :
      -						this.offsetParent[ 0 ].scrollLeft
      -					);
      -			}
      -			if ( !axis || axis === "y" ) {
      -				animation.top = cur.top - this.offset.parent.top - this.margins.top +
      -					( this.offsetParent[ 0 ] === this.document[ 0 ].body ?
      -						0 :
      -						this.offsetParent[ 0 ].scrollTop
      -					);
      -			}
      -			this.reverting = true;
      -			$( this.helper ).animate(
      -				animation,
      -				parseInt( this.options.revert, 10 ) || 500,
      -				function() {
      -					that._clear( event );
      -				}
      -			);
      -		} else {
      -			this._clear( event, noPropagation );
      -		}
      -
      -		return false;
      -
      -	},
      -
      -	cancel: function() {
      -
      -		if ( this.dragging ) {
      -
      -			this._mouseUp( new $.Event( "mouseup", { target: null } ) );
      -
      -			if ( this.options.helper === "original" ) {
      -				this.currentItem.css( this._storedCSS );
      -				this._removeClass( this.currentItem, "ui-sortable-helper" );
      -			} else {
      -				this.currentItem.show();
      -			}
      -
      -			//Post deactivating events to containers
      -			for ( var i = this.containers.length - 1; i >= 0; i-- ) {
      -				this.containers[ i ]._trigger( "deactivate", null, this._uiHash( this ) );
      -				if ( this.containers[ i ].containerCache.over ) {
      -					this.containers[ i ]._trigger( "out", null, this._uiHash( this ) );
      -					this.containers[ i ].containerCache.over = 0;
      -				}
      -			}
      -
      -		}
      -
      -		if ( this.placeholder ) {
      -
      -			//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
      -			// it unbinds ALL events from the original node!
      -			if ( this.placeholder[ 0 ].parentNode ) {
      -				this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
      -			}
      -			if ( this.options.helper !== "original" && this.helper &&
      -					this.helper[ 0 ].parentNode ) {
      -				this.helper.remove();
      -			}
      -
      -			$.extend( this, {
      -				helper: null,
      -				dragging: false,
      -				reverting: false,
      -				_noFinalSort: null
      -			} );
      -
      -			if ( this.domPosition.prev ) {
      -				$( this.domPosition.prev ).after( this.currentItem );
      -			} else {
      -				$( this.domPosition.parent ).prepend( this.currentItem );
      -			}
      -		}
      -
      -		return this;
      -
      -	},
      -
      -	serialize: function( o ) {
      -
      -		var items = this._getItemsAsjQuery( o && o.connected ),
      -			str = [];
      -		o = o || {};
      -
      -		$( items ).each( function() {
      -			var res = ( $( o.item || this ).attr( o.attribute || "id" ) || "" )
      -				.match( o.expression || ( /(.+)[\-=_](.+)/ ) );
      -			if ( res ) {
      -				str.push(
      -					( o.key || res[ 1 ] + "[]" ) +
      -					"=" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );
      -			}
      -		} );
      -
      -		if ( !str.length && o.key ) {
      -			str.push( o.key + "=" );
      -		}
      -
      -		return str.join( "&" );
      -
      -	},
      -
      -	toArray: function( o ) {
      -
      -		var items = this._getItemsAsjQuery( o && o.connected ),
      -			ret = [];
      -
      -		o = o || {};
      -
      -		items.each( function() {
      -			ret.push( $( o.item || this ).attr( o.attribute || "id" ) || "" );
      -		} );
      -		return ret;
      -
      -	},
      -
      -	/* Be careful with the following core functions */
      -	_intersectsWith: function( item ) {
      -
      -		var x1 = this.positionAbs.left,
      -			x2 = x1 + this.helperProportions.width,
      -			y1 = this.positionAbs.top,
      -			y2 = y1 + this.helperProportions.height,
      -			l = item.left,
      -			r = l + item.width,
      -			t = item.top,
      -			b = t + item.height,
      -			dyClick = this.offset.click.top,
      -			dxClick = this.offset.click.left,
      -			isOverElementHeight = ( this.options.axis === "x" ) || ( ( y1 + dyClick ) > t &&
      -				( y1 + dyClick ) < b ),
      -			isOverElementWidth = ( this.options.axis === "y" ) || ( ( x1 + dxClick ) > l &&
      -				( x1 + dxClick ) < r ),
      -			isOverElement = isOverElementHeight && isOverElementWidth;
      -
      -		if ( this.options.tolerance === "pointer" ||
      -			this.options.forcePointerForContainers ||
      -			( this.options.tolerance !== "pointer" &&
      -				this.helperProportions[ this.floating ? "width" : "height" ] >
      -				item[ this.floating ? "width" : "height" ] )
      -		) {
      -			return isOverElement;
      -		} else {
      -
      -			return ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half
      -				x2 - ( this.helperProportions.width / 2 ) < r && // Left Half
      -				t < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half
      -				y2 - ( this.helperProportions.height / 2 ) < b ); // Top Half
      -
      -		}
      -	},
      -
      -	_intersectsWithPointer: function( item ) {
      -		var verticalDirection, horizontalDirection,
      -			isOverElementHeight = ( this.options.axis === "x" ) ||
      -				this._isOverAxis(
      -					this.positionAbs.top + this.offset.click.top, item.top, item.height ),
      -			isOverElementWidth = ( this.options.axis === "y" ) ||
      -				this._isOverAxis(
      -					this.positionAbs.left + this.offset.click.left, item.left, item.width ),
      -			isOverElement = isOverElementHeight && isOverElementWidth;
      -
      -		if ( !isOverElement ) {
      -			return false;
      -		}
      -
      -		verticalDirection = this._getDragVerticalDirection();
      -		horizontalDirection = this._getDragHorizontalDirection();
      -
      -		return this.floating ?
      -			( ( horizontalDirection === "right" || verticalDirection === "down" ) ? 2 : 1 )
      -			: ( verticalDirection && ( verticalDirection === "down" ? 2 : 1 ) );
      -
      -	},
      -
      -	_intersectsWithSides: function( item ) {
      -
      -		var isOverBottomHalf = this._isOverAxis( this.positionAbs.top +
      -				this.offset.click.top, item.top + ( item.height / 2 ), item.height ),
      -			isOverRightHalf = this._isOverAxis( this.positionAbs.left +
      -				this.offset.click.left, item.left + ( item.width / 2 ), item.width ),
      -			verticalDirection = this._getDragVerticalDirection(),
      -			horizontalDirection = this._getDragHorizontalDirection();
      -
      -		if ( this.floating && horizontalDirection ) {
      -			return ( ( horizontalDirection === "right" && isOverRightHalf ) ||
      -				( horizontalDirection === "left" && !isOverRightHalf ) );
      -		} else {
      -			return verticalDirection && ( ( verticalDirection === "down" && isOverBottomHalf ) ||
      -				( verticalDirection === "up" && !isOverBottomHalf ) );
      -		}
      -
      -	},
      -
      -	_getDragVerticalDirection: function() {
      -		var delta = this.positionAbs.top - this.lastPositionAbs.top;
      -		return delta !== 0 && ( delta > 0 ? "down" : "up" );
      -	},
      -
      -	_getDragHorizontalDirection: function() {
      -		var delta = this.positionAbs.left - this.lastPositionAbs.left;
      -		return delta !== 0 && ( delta > 0 ? "right" : "left" );
      -	},
      -
      -	refresh: function( event ) {
      -		this._refreshItems( event );
      -		this._setHandleClassName();
      -		this.refreshPositions();
      -		return this;
      -	},
      -
      -	_connectWith: function() {
      -		var options = this.options;
      -		return options.connectWith.constructor === String ?
      -			[ options.connectWith ] :
      -			options.connectWith;
      -	},
      -
      -	_getItemsAsjQuery: function( connected ) {
      -
      -		var i, j, cur, inst,
      -			items = [],
      -			queries = [],
      -			connectWith = this._connectWith();
      -
      -		if ( connectWith && connected ) {
      -			for ( i = connectWith.length - 1; i >= 0; i-- ) {
      -				cur = $( connectWith[ i ], this.document[ 0 ] );
      -				for ( j = cur.length - 1; j >= 0; j-- ) {
      -					inst = $.data( cur[ j ], this.widgetFullName );
      -					if ( inst && inst !== this && !inst.options.disabled ) {
      -						queries.push( [ $.isFunction( inst.options.items ) ?
      -							inst.options.items.call( inst.element ) :
      -							$( inst.options.items, inst.element )
      -								.not( ".ui-sortable-helper" )
      -								.not( ".ui-sortable-placeholder" ), inst ] );
      -					}
      -				}
      -			}
      -		}
      -
      -		queries.push( [ $.isFunction( this.options.items ) ?
      -			this.options.items
      -				.call( this.element, null, { options: this.options, item: this.currentItem } ) :
      -			$( this.options.items, this.element )
      -				.not( ".ui-sortable-helper" )
      -				.not( ".ui-sortable-placeholder" ), this ] );
      -
      -		function addItems() {
      -			items.push( this );
      -		}
      -		for ( i = queries.length - 1; i >= 0; i-- ) {
      -			queries[ i ][ 0 ].each( addItems );
      -		}
      -
      -		return $( items );
      -
      -	},
      -
      -	_removeCurrentsFromItems: function() {
      -
      -		var list = this.currentItem.find( ":data(" + this.widgetName + "-item)" );
      -
      -		this.items = $.grep( this.items, function( item ) {
      -			for ( var j = 0; j < list.length; j++ ) {
      -				if ( list[ j ] === item.item[ 0 ] ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		} );
      -
      -	},
      -
      -	_refreshItems: function( event ) {
      -
      -		this.items = [];
      -		this.containers = [ this ];
      -
      -		var i, j, cur, inst, targetData, _queries, item, queriesLength,
      -			items = this.items,
      -			queries = [ [ $.isFunction( this.options.items ) ?
      -				this.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :
      -				$( this.options.items, this.element ), this ] ],
      -			connectWith = this._connectWith();
      -
      -		//Shouldn't be run the first time through due to massive slow-down
      -		if ( connectWith && this.ready ) {
      -			for ( i = connectWith.length - 1; i >= 0; i-- ) {
      -				cur = $( connectWith[ i ], this.document[ 0 ] );
      -				for ( j = cur.length - 1; j >= 0; j-- ) {
      -					inst = $.data( cur[ j ], this.widgetFullName );
      -					if ( inst && inst !== this && !inst.options.disabled ) {
      -						queries.push( [ $.isFunction( inst.options.items ) ?
      -							inst.options.items
      -								.call( inst.element[ 0 ], event, { item: this.currentItem } ) :
      -							$( inst.options.items, inst.element ), inst ] );
      -						this.containers.push( inst );
      -					}
      -				}
      -			}
      -		}
      -
      -		for ( i = queries.length - 1; i >= 0; i-- ) {
      -			targetData = queries[ i ][ 1 ];
      -			_queries = queries[ i ][ 0 ];
      -
      -			for ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {
      -				item = $( _queries[ j ] );
      -
      -				// Data for target checking (mouse manager)
      -				item.data( this.widgetName + "-item", targetData );
      -
      -				items.push( {
      -					item: item,
      -					instance: targetData,
      -					width: 0, height: 0,
      -					left: 0, top: 0
      -				} );
      -			}
      -		}
      -
      -	},
      -
      -	refreshPositions: function( fast ) {
      -
      -		// Determine whether items are being displayed horizontally
      -		this.floating = this.items.length ?
      -			this.options.axis === "x" || this._isFloating( this.items[ 0 ].item ) :
      -			false;
      -
      -		//This has to be redone because due to the item being moved out/into the offsetParent,
      -		// the offsetParent's position will change
      -		if ( this.offsetParent && this.helper ) {
      -			this.offset.parent = this._getParentOffset();
      -		}
      -
      -		var i, item, t, p;
      -
      -		for ( i = this.items.length - 1; i >= 0; i-- ) {
      -			item = this.items[ i ];
      -
      -			//We ignore calculating positions of all connected containers when we're not over them
      -			if ( item.instance !== this.currentContainer && this.currentContainer &&
      -					item.item[ 0 ] !== this.currentItem[ 0 ] ) {
      -				continue;
      -			}
      -
      -			t = this.options.toleranceElement ?
      -				$( this.options.toleranceElement, item.item ) :
      -				item.item;
      -
      -			if ( !fast ) {
      -				item.width = t.outerWidth();
      -				item.height = t.outerHeight();
      -			}
      -
      -			p = t.offset();
      -			item.left = p.left;
      -			item.top = p.top;
      -		}
      -
      -		if ( this.options.custom && this.options.custom.refreshContainers ) {
      -			this.options.custom.refreshContainers.call( this );
      -		} else {
      -			for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -				p = this.containers[ i ].element.offset();
      -				this.containers[ i ].containerCache.left = p.left;
      -				this.containers[ i ].containerCache.top = p.top;
      -				this.containers[ i ].containerCache.width =
      -					this.containers[ i ].element.outerWidth();
      -				this.containers[ i ].containerCache.height =
      -					this.containers[ i ].element.outerHeight();
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	_createPlaceholder: function( that ) {
      -		that = that || this;
      -		var className,
      -			o = that.options;
      -
      -		if ( !o.placeholder || o.placeholder.constructor === String ) {
      -			className = o.placeholder;
      -			o.placeholder = {
      -				element: function() {
      -
      -					var nodeName = that.currentItem[ 0 ].nodeName.toLowerCase(),
      -						element = $( "<" + nodeName + ">", that.document[ 0 ] );
      -
      -						that._addClass( element, "ui-sortable-placeholder",
      -								className || that.currentItem[ 0 ].className )
      -							._removeClass( element, "ui-sortable-helper" );
      -
      -					if ( nodeName === "tbody" ) {
      -						that._createTrPlaceholder(
      -							that.currentItem.find( "tr" ).eq( 0 ),
      -							$( "<tr>", that.document[ 0 ] ).appendTo( element )
      -						);
      -					} else if ( nodeName === "tr" ) {
      -						that._createTrPlaceholder( that.currentItem, element );
      -					} else if ( nodeName === "img" ) {
      -						element.attr( "src", that.currentItem.attr( "src" ) );
      -					}
      -
      -					if ( !className ) {
      -						element.css( "visibility", "hidden" );
      -					}
      -
      -					return element;
      -				},
      -				update: function( container, p ) {
      -
      -					// 1. If a className is set as 'placeholder option, we don't force sizes -
      -					// the class is responsible for that
      -					// 2. The option 'forcePlaceholderSize can be enabled to force it even if a
      -					// class name is specified
      -					if ( className && !o.forcePlaceholderSize ) {
      -						return;
      -					}
      -
      -					//If the element doesn't have a actual height by itself (without styles coming
      -					// from a stylesheet), it receives the inline height from the dragged item
      -					if ( !p.height() ) {
      -						p.height(
      -							that.currentItem.innerHeight() -
      -							parseInt( that.currentItem.css( "paddingTop" ) || 0, 10 ) -
      -							parseInt( that.currentItem.css( "paddingBottom" ) || 0, 10 ) );
      -					}
      -					if ( !p.width() ) {
      -						p.width(
      -							that.currentItem.innerWidth() -
      -							parseInt( that.currentItem.css( "paddingLeft" ) || 0, 10 ) -
      -							parseInt( that.currentItem.css( "paddingRight" ) || 0, 10 ) );
      -					}
      -				}
      -			};
      -		}
      -
      -		//Create the placeholder
      -		that.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );
      -
      -		//Append it after the actual current item
      -		that.currentItem.after( that.placeholder );
      -
      -		//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)
      -		o.placeholder.update( that, that.placeholder );
      -
      -	},
      -
      -	_createTrPlaceholder: function( sourceTr, targetTr ) {
      -		var that = this;
      -
      -		sourceTr.children().each( function() {
      -			$( "<td>&#160;</td>", that.document[ 0 ] )
      -				.attr( "colspan", $( this ).attr( "colspan" ) || 1 )
      -				.appendTo( targetTr );
      -		} );
      -	},
      -
      -	_contactContainers: function( event ) {
      -		var i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,
      -			floating, axis,
      -			innermostContainer = null,
      -			innermostIndex = null;
      -
      -		// Get innermost container that intersects with item
      -		for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -
      -			// Never consider a container that's located within the item itself
      -			if ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {
      -				continue;
      -			}
      -
      -			if ( this._intersectsWith( this.containers[ i ].containerCache ) ) {
      -
      -				// If we've already found a container and it's more "inner" than this, then continue
      -				if ( innermostContainer &&
      -						$.contains(
      -							this.containers[ i ].element[ 0 ],
      -							innermostContainer.element[ 0 ] ) ) {
      -					continue;
      -				}
      -
      -				innermostContainer = this.containers[ i ];
      -				innermostIndex = i;
      -
      -			} else {
      -
      -				// container doesn't intersect. trigger "out" event if necessary
      -				if ( this.containers[ i ].containerCache.over ) {
      -					this.containers[ i ]._trigger( "out", event, this._uiHash( this ) );
      -					this.containers[ i ].containerCache.over = 0;
      -				}
      -			}
      -
      -		}
      -
      -		// If no intersecting containers found, return
      -		if ( !innermostContainer ) {
      -			return;
      -		}
      -
      -		// Move the item into the container if it's not there already
      -		if ( this.containers.length === 1 ) {
      -			if ( !this.containers[ innermostIndex ].containerCache.over ) {
      -				this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
      -				this.containers[ innermostIndex ].containerCache.over = 1;
      -			}
      -		} else {
      -
      -			// When entering a new container, we will find the item with the least distance and
      -			// append our item near it
      -			dist = 10000;
      -			itemWithLeastDistance = null;
      -			floating = innermostContainer.floating || this._isFloating( this.currentItem );
      -			posProperty = floating ? "left" : "top";
      -			sizeProperty = floating ? "width" : "height";
      -			axis = floating ? "pageX" : "pageY";
      -
      -			for ( j = this.items.length - 1; j >= 0; j-- ) {
      -				if ( !$.contains(
      -						this.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )
      -				) {
      -					continue;
      -				}
      -				if ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {
      -					continue;
      -				}
      -
      -				cur = this.items[ j ].item.offset()[ posProperty ];
      -				nearBottom = false;
      -				if ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {
      -					nearBottom = true;
      -				}
      -
      -				if ( Math.abs( event[ axis ] - cur ) < dist ) {
      -					dist = Math.abs( event[ axis ] - cur );
      -					itemWithLeastDistance = this.items[ j ];
      -					this.direction = nearBottom ? "up" : "down";
      -				}
      -			}
      -
      -			//Check if dropOnEmpty is enabled
      -			if ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {
      -				return;
      -			}
      -
      -			if ( this.currentContainer === this.containers[ innermostIndex ] ) {
      -				if ( !this.currentContainer.containerCache.over ) {
      -					this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash() );
      -					this.currentContainer.containerCache.over = 1;
      -				}
      -				return;
      -			}
      -
      -			itemWithLeastDistance ?
      -				this._rearrange( event, itemWithLeastDistance, null, true ) :
      -				this._rearrange( event, null, this.containers[ innermostIndex ].element, true );
      -			this._trigger( "change", event, this._uiHash() );
      -			this.containers[ innermostIndex ]._trigger( "change", event, this._uiHash( this ) );
      -			this.currentContainer = this.containers[ innermostIndex ];
      -
      -			//Update the placeholder
      -			this.options.placeholder.update( this.currentContainer, this.placeholder );
      -
      -			this.containers[ innermostIndex ]._trigger( "over", event, this._uiHash( this ) );
      -			this.containers[ innermostIndex ].containerCache.over = 1;
      -		}
      -
      -	},
      -
      -	_createHelper: function( event ) {
      -
      -		var o = this.options,
      -			helper = $.isFunction( o.helper ) ?
      -				$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :
      -				( o.helper === "clone" ? this.currentItem.clone() : this.currentItem );
      -
      -		//Add the helper to the DOM if that didn't happen already
      -		if ( !helper.parents( "body" ).length ) {
      -			$( o.appendTo !== "parent" ?
      -				o.appendTo :
      -				this.currentItem[ 0 ].parentNode )[ 0 ].appendChild( helper[ 0 ] );
      -		}
      -
      -		if ( helper[ 0 ] === this.currentItem[ 0 ] ) {
      -			this._storedCSS = {
      -				width: this.currentItem[ 0 ].style.width,
      -				height: this.currentItem[ 0 ].style.height,
      -				position: this.currentItem.css( "position" ),
      -				top: this.currentItem.css( "top" ),
      -				left: this.currentItem.css( "left" )
      -			};
      -		}
      -
      -		if ( !helper[ 0 ].style.width || o.forceHelperSize ) {
      -			helper.width( this.currentItem.width() );
      -		}
      -		if ( !helper[ 0 ].style.height || o.forceHelperSize ) {
      -			helper.height( this.currentItem.height() );
      -		}
      -
      -		return helper;
      -
      -	},
      -
      -	_adjustOffsetFromHelper: function( obj ) {
      -		if ( typeof obj === "string" ) {
      -			obj = obj.split( " " );
      -		}
      -		if ( $.isArray( obj ) ) {
      -			obj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };
      -		}
      -		if ( "left" in obj ) {
      -			this.offset.click.left = obj.left + this.margins.left;
      -		}
      -		if ( "right" in obj ) {
      -			this.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;
      -		}
      -		if ( "top" in obj ) {
      -			this.offset.click.top = obj.top + this.margins.top;
      -		}
      -		if ( "bottom" in obj ) {
      -			this.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;
      -		}
      -	},
      -
      -	_getParentOffset: function() {
      -
      -		//Get the offsetParent and cache its position
      -		this.offsetParent = this.helper.offsetParent();
      -		var po = this.offsetParent.offset();
      -
      -		// This is a special case where we need to modify a offset calculated on start, since the
      -		// following happened:
      -		// 1. The position of the helper is absolute, so it's position is calculated based on the
      -		// next positioned parent
      -		// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't
      -		// the document, which means that the scroll is included in the initial calculation of the
      -		// offset of the parent, and never recalculated upon drag
      -		if ( this.cssPosition === "absolute" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {
      -			po.left += this.scrollParent.scrollLeft();
      -			po.top += this.scrollParent.scrollTop();
      -		}
      -
      -		// This needs to be actually done for all browsers, since pageX/pageY includes this
      -		// information with an ugly IE fix
      -		if ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||
      -				( this.offsetParent[ 0 ].tagName &&
      -				this.offsetParent[ 0 ].tagName.toLowerCase() === "html" && $.ui.ie ) ) {
      -			po = { top: 0, left: 0 };
      -		}
      -
      -		return {
      -			top: po.top + ( parseInt( this.offsetParent.css( "borderTopWidth" ), 10 ) || 0 ),
      -			left: po.left + ( parseInt( this.offsetParent.css( "borderLeftWidth" ), 10 ) || 0 )
      -		};
      -
      -	},
      -
      -	_getRelativeOffset: function() {
      -
      -		if ( this.cssPosition === "relative" ) {
      -			var p = this.currentItem.position();
      -			return {
      -				top: p.top - ( parseInt( this.helper.css( "top" ), 10 ) || 0 ) +
      -					this.scrollParent.scrollTop(),
      -				left: p.left - ( parseInt( this.helper.css( "left" ), 10 ) || 0 ) +
      -					this.scrollParent.scrollLeft()
      -			};
      -		} else {
      -			return { top: 0, left: 0 };
      -		}
      -
      -	},
      -
      -	_cacheMargins: function() {
      -		this.margins = {
      -			left: ( parseInt( this.currentItem.css( "marginLeft" ), 10 ) || 0 ),
      -			top: ( parseInt( this.currentItem.css( "marginTop" ), 10 ) || 0 )
      -		};
      -	},
      -
      -	_cacheHelperProportions: function() {
      -		this.helperProportions = {
      -			width: this.helper.outerWidth(),
      -			height: this.helper.outerHeight()
      -		};
      -	},
      -
      -	_setContainment: function() {
      -
      -		var ce, co, over,
      -			o = this.options;
      -		if ( o.containment === "parent" ) {
      -			o.containment = this.helper[ 0 ].parentNode;
      -		}
      -		if ( o.containment === "document" || o.containment === "window" ) {
      -			this.containment = [
      -				0 - this.offset.relative.left - this.offset.parent.left,
      -				0 - this.offset.relative.top - this.offset.parent.top,
      -				o.containment === "document" ?
      -					this.document.width() :
      -					this.window.width() - this.helperProportions.width - this.margins.left,
      -				( o.containment === "document" ?
      -					( this.document.height() || document.body.parentNode.scrollHeight ) :
      -					this.window.height() || this.document[ 0 ].body.parentNode.scrollHeight
      -				) - this.helperProportions.height - this.margins.top
      -			];
      -		}
      -
      -		if ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {
      -			ce = $( o.containment )[ 0 ];
      -			co = $( o.containment ).offset();
      -			over = ( $( ce ).css( "overflow" ) !== "hidden" );
      -
      -			this.containment = [
      -				co.left + ( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) +
      -					( parseInt( $( ce ).css( "paddingLeft" ), 10 ) || 0 ) - this.margins.left,
      -				co.top + ( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) +
      -					( parseInt( $( ce ).css( "paddingTop" ), 10 ) || 0 ) - this.margins.top,
      -				co.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -
      -					( parseInt( $( ce ).css( "borderLeftWidth" ), 10 ) || 0 ) -
      -					( parseInt( $( ce ).css( "paddingRight" ), 10 ) || 0 ) -
      -					this.helperProportions.width - this.margins.left,
      -				co.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -
      -					( parseInt( $( ce ).css( "borderTopWidth" ), 10 ) || 0 ) -
      -					( parseInt( $( ce ).css( "paddingBottom" ), 10 ) || 0 ) -
      -					this.helperProportions.height - this.margins.top
      -			];
      -		}
      -
      -	},
      -
      -	_convertPositionTo: function( d, pos ) {
      -
      -		if ( !pos ) {
      -			pos = this.position;
      -		}
      -		var mod = d === "absolute" ? 1 : -1,
      -			scroll = this.cssPosition === "absolute" &&
      -				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
      -					this.offsetParent :
      -					this.scrollParent,
      -			scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pos.top	+
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top * mod -
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollTop() :
      -					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pos.left +
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left * mod +
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left * mod	-
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :
      -					scroll.scrollLeft() ) * mod )
      -			)
      -		};
      -
      -	},
      -
      -	_generatePosition: function( event ) {
      -
      -		var top, left,
      -			o = this.options,
      -			pageX = event.pageX,
      -			pageY = event.pageY,
      -			scroll = this.cssPosition === "absolute" &&
      -				!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?
      -					this.offsetParent :
      -					this.scrollParent,
      -				scrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );
      -
      -		// This is another very weird special case that only happens for relative elements:
      -		// 1. If the css position is relative
      -		// 2. and the scroll parent is the document or similar to the offset parent
      -		// we have to refresh the relative offset during the scroll so there are no jumps
      -		if ( this.cssPosition === "relative" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&
      -				this.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {
      -			this.offset.relative = this._getRelativeOffset();
      -		}
      -
      -		/*
      -		 * - Position constraining -
      -		 * Constrain the position to a mix of grid, containment.
      -		 */
      -
      -		if ( this.originalPosition ) { //If we are not dragging yet, we won't check for options
      -
      -			if ( this.containment ) {
      -				if ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {
      -					pageX = this.containment[ 0 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {
      -					pageY = this.containment[ 1 ] + this.offset.click.top;
      -				}
      -				if ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {
      -					pageX = this.containment[ 2 ] + this.offset.click.left;
      -				}
      -				if ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {
      -					pageY = this.containment[ 3 ] + this.offset.click.top;
      -				}
      -			}
      -
      -			if ( o.grid ) {
      -				top = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /
      -					o.grid[ 1 ] ) * o.grid[ 1 ];
      -				pageY = this.containment ?
      -					( ( top - this.offset.click.top >= this.containment[ 1 ] &&
      -						top - this.offset.click.top <= this.containment[ 3 ] ) ?
      -							top :
      -							( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?
      -								top - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :
      -								top;
      -
      -				left = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /
      -					o.grid[ 0 ] ) * o.grid[ 0 ];
      -				pageX = this.containment ?
      -					( ( left - this.offset.click.left >= this.containment[ 0 ] &&
      -						left - this.offset.click.left <= this.containment[ 2 ] ) ?
      -							left :
      -							( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?
      -								left - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :
      -								left;
      -			}
      -
      -		}
      -
      -		return {
      -			top: (
      -
      -				// The absolute mouse position
      -				pageY -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.top -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.top -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.top +
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollTop() :
      -					( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )
      -			),
      -			left: (
      -
      -				// The absolute mouse position
      -				pageX -
      -
      -				// Click offset (relative to the element)
      -				this.offset.click.left -
      -
      -				// Only for relative positioned nodes: Relative offset from element to offset parent
      -				this.offset.relative.left -
      -
      -				// The offsetParent's offset without borders (offset + border)
      -				this.offset.parent.left +
      -				( ( this.cssPosition === "fixed" ?
      -					-this.scrollParent.scrollLeft() :
      -					scrollIsRootNode ? 0 : scroll.scrollLeft() ) )
      -			)
      -		};
      -
      -	},
      -
      -	_rearrange: function( event, i, a, hardRefresh ) {
      -
      -		a ? a[ 0 ].appendChild( this.placeholder[ 0 ] ) :
      -			i.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],
      -				( this.direction === "down" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );
      -
      -		//Various things done here to improve the performance:
      -		// 1. we create a setTimeout, that calls refreshPositions
      -		// 2. on the instance, we have a counter variable, that get's higher after every append
      -		// 3. on the local scope, we copy the counter variable, and check in the timeout,
      -		// if it's still the same
      -		// 4. this lets only the last addition to the timeout stack through
      -		this.counter = this.counter ? ++this.counter : 1;
      -		var counter = this.counter;
      -
      -		this._delay( function() {
      -			if ( counter === this.counter ) {
      -
      -				//Precompute after each DOM insertion, NOT on mousemove
      -				this.refreshPositions( !hardRefresh );
      -			}
      -		} );
      -
      -	},
      -
      -	_clear: function( event, noPropagation ) {
      -
      -		this.reverting = false;
      -
      -		// We delay all events that have to be triggered to after the point where the placeholder
      -		// has been removed and everything else normalized again
      -		var i,
      -			delayedTriggers = [];
      -
      -		// We first have to update the dom position of the actual currentItem
      -		// Note: don't do it if the current item is already removed (by a user), or it gets
      -		// reappended (see #4088)
      -		if ( !this._noFinalSort && this.currentItem.parent().length ) {
      -			this.placeholder.before( this.currentItem );
      -		}
      -		this._noFinalSort = null;
      -
      -		if ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {
      -			for ( i in this._storedCSS ) {
      -				if ( this._storedCSS[ i ] === "auto" || this._storedCSS[ i ] === "static" ) {
      -					this._storedCSS[ i ] = "";
      -				}
      -			}
      -			this.currentItem.css( this._storedCSS );
      -			this._removeClass( this.currentItem, "ui-sortable-helper" );
      -		} else {
      -			this.currentItem.show();
      -		}
      -
      -		if ( this.fromOutside && !noPropagation ) {
      -			delayedTriggers.push( function( event ) {
      -				this._trigger( "receive", event, this._uiHash( this.fromOutside ) );
      -			} );
      -		}
      -		if ( ( this.fromOutside ||
      -				this.domPosition.prev !==
      -				this.currentItem.prev().not( ".ui-sortable-helper" )[ 0 ] ||
      -				this.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {
      -
      -			// Trigger update callback if the DOM position has changed
      -			delayedTriggers.push( function( event ) {
      -				this._trigger( "update", event, this._uiHash() );
      -			} );
      -		}
      -
      -		// Check if the items Container has Changed and trigger appropriate
      -		// events.
      -		if ( this !== this.currentContainer ) {
      -			if ( !noPropagation ) {
      -				delayedTriggers.push( function( event ) {
      -					this._trigger( "remove", event, this._uiHash() );
      -				} );
      -				delayedTriggers.push( ( function( c ) {
      -					return function( event ) {
      -						c._trigger( "receive", event, this._uiHash( this ) );
      -					};
      -				} ).call( this, this.currentContainer ) );
      -				delayedTriggers.push( ( function( c ) {
      -					return function( event ) {
      -						c._trigger( "update", event, this._uiHash( this ) );
      -					};
      -				} ).call( this, this.currentContainer ) );
      -			}
      -		}
      -
      -		//Post events to containers
      -		function delayEvent( type, instance, container ) {
      -			return function( event ) {
      -				container._trigger( type, event, instance._uiHash( instance ) );
      -			};
      -		}
      -		for ( i = this.containers.length - 1; i >= 0; i-- ) {
      -			if ( !noPropagation ) {
      -				delayedTriggers.push( delayEvent( "deactivate", this, this.containers[ i ] ) );
      -			}
      -			if ( this.containers[ i ].containerCache.over ) {
      -				delayedTriggers.push( delayEvent( "out", this, this.containers[ i ] ) );
      -				this.containers[ i ].containerCache.over = 0;
      -			}
      -		}
      -
      -		//Do what was originally in plugins
      -		if ( this.storedCursor ) {
      -			this.document.find( "body" ).css( "cursor", this.storedCursor );
      -			this.storedStylesheet.remove();
      -		}
      -		if ( this._storedOpacity ) {
      -			this.helper.css( "opacity", this._storedOpacity );
      -		}
      -		if ( this._storedZIndex ) {
      -			this.helper.css( "zIndex", this._storedZIndex === "auto" ? "" : this._storedZIndex );
      -		}
      -
      -		this.dragging = false;
      -
      -		if ( !noPropagation ) {
      -			this._trigger( "beforeStop", event, this._uiHash() );
      -		}
      -
      -		//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,
      -		// it unbinds ALL events from the original node!
      -		this.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );
      -
      -		if ( !this.cancelHelperRemoval ) {
      -			if ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {
      -				this.helper.remove();
      -			}
      -			this.helper = null;
      -		}
      -
      -		if ( !noPropagation ) {
      -			for ( i = 0; i < delayedTriggers.length; i++ ) {
      -
      -				// Trigger all delayed events
      -				delayedTriggers[ i ].call( this, event );
      -			}
      -			this._trigger( "stop", event, this._uiHash() );
      -		}
      -
      -		this.fromOutside = false;
      -		return !this.cancelHelperRemoval;
      -
      -	},
      -
      -	_trigger: function() {
      -		if ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {
      -			this.cancel();
      -		}
      -	},
      -
      -	_uiHash: function( _inst ) {
      -		var inst = _inst || this;
      -		return {
      -			helper: inst.helper,
      -			placeholder: inst.placeholder || $( [] ),
      -			position: inst.position,
      -			originalPosition: inst.originalPosition,
      -			offset: inst.positionAbs,
      -			item: inst.currentItem,
      -			sender: _inst ? _inst.element : null
      -		};
      -	}
      -
      -} );
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/spinner.js b/bower_components/jquery-ui/ui/widgets/spinner.js
      deleted file mode 100644
      index c59fc57eeb..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/spinner.js
      +++ /dev/null
      @@ -1,575 +0,0 @@
      -/*!
      - * jQuery UI Spinner 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Spinner
      -//>>group: Widgets
      -//>>description: Displays buttons to easily input numbers via the keyboard or mouse.
      -//>>docs: http://api.jqueryui.com/spinner/
      -//>>demos: http://jqueryui.com/spinner/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/spinner.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"./button",
      -			"../version",
      -			"../keycode",
      -			"../safe-active-element",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -function spinnerModifer( fn ) {
      -	return function() {
      -		var previous = this.element.val();
      -		fn.apply( this, arguments );
      -		this._refresh();
      -		if ( previous !== this.element.val() ) {
      -			this._trigger( "change" );
      -		}
      -	};
      -}
      -
      -$.widget( "ui.spinner", {
      -	version: "1.12.1",
      -	defaultElement: "<input>",
      -	widgetEventPrefix: "spin",
      -	options: {
      -		classes: {
      -			"ui-spinner": "ui-corner-all",
      -			"ui-spinner-down": "ui-corner-br",
      -			"ui-spinner-up": "ui-corner-tr"
      -		},
      -		culture: null,
      -		icons: {
      -			down: "ui-icon-triangle-1-s",
      -			up: "ui-icon-triangle-1-n"
      -		},
      -		incremental: true,
      -		max: null,
      -		min: null,
      -		numberFormat: null,
      -		page: 10,
      -		step: 1,
      -
      -		change: null,
      -		spin: null,
      -		start: null,
      -		stop: null
      -	},
      -
      -	_create: function() {
      -
      -		// handle string values that need to be parsed
      -		this._setOption( "max", this.options.max );
      -		this._setOption( "min", this.options.min );
      -		this._setOption( "step", this.options.step );
      -
      -		// Only format if there is a value, prevents the field from being marked
      -		// as invalid in Firefox, see #9573.
      -		if ( this.value() !== "" ) {
      -
      -			// Format the value, but don't constrain.
      -			this._value( this.element.val(), true );
      -		}
      -
      -		this._draw();
      -		this._on( this._events );
      -		this._refresh();
      -
      -		// Turning off autocomplete prevents the browser from remembering the
      -		// value when navigating through history, so we re-enable autocomplete
      -		// if the page is unloaded before the widget is destroyed. #7790
      -		this._on( this.window, {
      -			beforeunload: function() {
      -				this.element.removeAttr( "autocomplete" );
      -			}
      -		} );
      -	},
      -
      -	_getCreateOptions: function() {
      -		var options = this._super();
      -		var element = this.element;
      -
      -		$.each( [ "min", "max", "step" ], function( i, option ) {
      -			var value = element.attr( option );
      -			if ( value != null && value.length ) {
      -				options[ option ] = value;
      -			}
      -		} );
      -
      -		return options;
      -	},
      -
      -	_events: {
      -		keydown: function( event ) {
      -			if ( this._start( event ) && this._keydown( event ) ) {
      -				event.preventDefault();
      -			}
      -		},
      -		keyup: "_stop",
      -		focus: function() {
      -			this.previous = this.element.val();
      -		},
      -		blur: function( event ) {
      -			if ( this.cancelBlur ) {
      -				delete this.cancelBlur;
      -				return;
      -			}
      -
      -			this._stop();
      -			this._refresh();
      -			if ( this.previous !== this.element.val() ) {
      -				this._trigger( "change", event );
      -			}
      -		},
      -		mousewheel: function( event, delta ) {
      -			if ( !delta ) {
      -				return;
      -			}
      -			if ( !this.spinning && !this._start( event ) ) {
      -				return false;
      -			}
      -
      -			this._spin( ( delta > 0 ? 1 : -1 ) * this.options.step, event );
      -			clearTimeout( this.mousewheelTimer );
      -			this.mousewheelTimer = this._delay( function() {
      -				if ( this.spinning ) {
      -					this._stop( event );
      -				}
      -			}, 100 );
      -			event.preventDefault();
      -		},
      -		"mousedown .ui-spinner-button": function( event ) {
      -			var previous;
      -
      -			// We never want the buttons to have focus; whenever the user is
      -			// interacting with the spinner, the focus should be on the input.
      -			// If the input is focused then this.previous is properly set from
      -			// when the input first received focus. If the input is not focused
      -			// then we need to set this.previous based on the value before spinning.
      -			previous = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] ) ?
      -				this.previous : this.element.val();
      -			function checkFocus() {
      -				var isActive = this.element[ 0 ] === $.ui.safeActiveElement( this.document[ 0 ] );
      -				if ( !isActive ) {
      -					this.element.trigger( "focus" );
      -					this.previous = previous;
      -
      -					// support: IE
      -					// IE sets focus asynchronously, so we need to check if focus
      -					// moved off of the input because the user clicked on the button.
      -					this._delay( function() {
      -						this.previous = previous;
      -					} );
      -				}
      -			}
      -
      -			// Ensure focus is on (or stays on) the text field
      -			event.preventDefault();
      -			checkFocus.call( this );
      -
      -			// Support: IE
      -			// IE doesn't prevent moving focus even with event.preventDefault()
      -			// so we set a flag to know when we should ignore the blur event
      -			// and check (again) if focus moved off of the input.
      -			this.cancelBlur = true;
      -			this._delay( function() {
      -				delete this.cancelBlur;
      -				checkFocus.call( this );
      -			} );
      -
      -			if ( this._start( event ) === false ) {
      -				return;
      -			}
      -
      -			this._repeat( null, $( event.currentTarget )
      -				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
      -		},
      -		"mouseup .ui-spinner-button": "_stop",
      -		"mouseenter .ui-spinner-button": function( event ) {
      -
      -			// button will add ui-state-active if mouse was down while mouseleave and kept down
      -			if ( !$( event.currentTarget ).hasClass( "ui-state-active" ) ) {
      -				return;
      -			}
      -
      -			if ( this._start( event ) === false ) {
      -				return false;
      -			}
      -			this._repeat( null, $( event.currentTarget )
      -				.hasClass( "ui-spinner-up" ) ? 1 : -1, event );
      -		},
      -
      -		// TODO: do we really want to consider this a stop?
      -		// shouldn't we just stop the repeater and wait until mouseup before
      -		// we trigger the stop event?
      -		"mouseleave .ui-spinner-button": "_stop"
      -	},
      -
      -	// Support mobile enhanced option and make backcompat more sane
      -	_enhance: function() {
      -		this.uiSpinner = this.element
      -			.attr( "autocomplete", "off" )
      -			.wrap( "<span>" )
      -			.parent()
      -
      -				// Add buttons
      -				.append(
      -					"<a></a><a></a>"
      -				);
      -	},
      -
      -	_draw: function() {
      -		this._enhance();
      -
      -		this._addClass( this.uiSpinner, "ui-spinner", "ui-widget ui-widget-content" );
      -		this._addClass( "ui-spinner-input" );
      -
      -		this.element.attr( "role", "spinbutton" );
      -
      -		// Button bindings
      -		this.buttons = this.uiSpinner.children( "a" )
      -			.attr( "tabIndex", -1 )
      -			.attr( "aria-hidden", true )
      -			.button( {
      -				classes: {
      -					"ui-button": ""
      -				}
      -			} );
      -
      -		// TODO: Right now button does not support classes this is already updated in button PR
      -		this._removeClass( this.buttons, "ui-corner-all" );
      -
      -		this._addClass( this.buttons.first(), "ui-spinner-button ui-spinner-up" );
      -		this._addClass( this.buttons.last(), "ui-spinner-button ui-spinner-down" );
      -		this.buttons.first().button( {
      -			"icon": this.options.icons.up,
      -			"showLabel": false
      -		} );
      -		this.buttons.last().button( {
      -			"icon": this.options.icons.down,
      -			"showLabel": false
      -		} );
      -
      -		// IE 6 doesn't understand height: 50% for the buttons
      -		// unless the wrapper has an explicit height
      -		if ( this.buttons.height() > Math.ceil( this.uiSpinner.height() * 0.5 ) &&
      -				this.uiSpinner.height() > 0 ) {
      -			this.uiSpinner.height( this.uiSpinner.height() );
      -		}
      -	},
      -
      -	_keydown: function( event ) {
      -		var options = this.options,
      -			keyCode = $.ui.keyCode;
      -
      -		switch ( event.keyCode ) {
      -		case keyCode.UP:
      -			this._repeat( null, 1, event );
      -			return true;
      -		case keyCode.DOWN:
      -			this._repeat( null, -1, event );
      -			return true;
      -		case keyCode.PAGE_UP:
      -			this._repeat( null, options.page, event );
      -			return true;
      -		case keyCode.PAGE_DOWN:
      -			this._repeat( null, -options.page, event );
      -			return true;
      -		}
      -
      -		return false;
      -	},
      -
      -	_start: function( event ) {
      -		if ( !this.spinning && this._trigger( "start", event ) === false ) {
      -			return false;
      -		}
      -
      -		if ( !this.counter ) {
      -			this.counter = 1;
      -		}
      -		this.spinning = true;
      -		return true;
      -	},
      -
      -	_repeat: function( i, steps, event ) {
      -		i = i || 500;
      -
      -		clearTimeout( this.timer );
      -		this.timer = this._delay( function() {
      -			this._repeat( 40, steps, event );
      -		}, i );
      -
      -		this._spin( steps * this.options.step, event );
      -	},
      -
      -	_spin: function( step, event ) {
      -		var value = this.value() || 0;
      -
      -		if ( !this.counter ) {
      -			this.counter = 1;
      -		}
      -
      -		value = this._adjustValue( value + step * this._increment( this.counter ) );
      -
      -		if ( !this.spinning || this._trigger( "spin", event, { value: value } ) !== false ) {
      -			this._value( value );
      -			this.counter++;
      -		}
      -	},
      -
      -	_increment: function( i ) {
      -		var incremental = this.options.incremental;
      -
      -		if ( incremental ) {
      -			return $.isFunction( incremental ) ?
      -				incremental( i ) :
      -				Math.floor( i * i * i / 50000 - i * i / 500 + 17 * i / 200 + 1 );
      -		}
      -
      -		return 1;
      -	},
      -
      -	_precision: function() {
      -		var precision = this._precisionOf( this.options.step );
      -		if ( this.options.min !== null ) {
      -			precision = Math.max( precision, this._precisionOf( this.options.min ) );
      -		}
      -		return precision;
      -	},
      -
      -	_precisionOf: function( num ) {
      -		var str = num.toString(),
      -			decimal = str.indexOf( "." );
      -		return decimal === -1 ? 0 : str.length - decimal - 1;
      -	},
      -
      -	_adjustValue: function( value ) {
      -		var base, aboveMin,
      -			options = this.options;
      -
      -		// Make sure we're at a valid step
      -		// - find out where we are relative to the base (min or 0)
      -		base = options.min !== null ? options.min : 0;
      -		aboveMin = value - base;
      -
      -		// - round to the nearest step
      -		aboveMin = Math.round( aboveMin / options.step ) * options.step;
      -
      -		// - rounding is based on 0, so adjust back to our base
      -		value = base + aboveMin;
      -
      -		// Fix precision from bad JS floating point math
      -		value = parseFloat( value.toFixed( this._precision() ) );
      -
      -		// Clamp the value
      -		if ( options.max !== null && value > options.max ) {
      -			return options.max;
      -		}
      -		if ( options.min !== null && value < options.min ) {
      -			return options.min;
      -		}
      -
      -		return value;
      -	},
      -
      -	_stop: function( event ) {
      -		if ( !this.spinning ) {
      -			return;
      -		}
      -
      -		clearTimeout( this.timer );
      -		clearTimeout( this.mousewheelTimer );
      -		this.counter = 0;
      -		this.spinning = false;
      -		this._trigger( "stop", event );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var prevValue, first, last;
      -
      -		if ( key === "culture" || key === "numberFormat" ) {
      -			prevValue = this._parse( this.element.val() );
      -			this.options[ key ] = value;
      -			this.element.val( this._format( prevValue ) );
      -			return;
      -		}
      -
      -		if ( key === "max" || key === "min" || key === "step" ) {
      -			if ( typeof value === "string" ) {
      -				value = this._parse( value );
      -			}
      -		}
      -		if ( key === "icons" ) {
      -			first = this.buttons.first().find( ".ui-icon" );
      -			this._removeClass( first, null, this.options.icons.up );
      -			this._addClass( first, null, value.up );
      -			last = this.buttons.last().find( ".ui-icon" );
      -			this._removeClass( last, null, this.options.icons.down );
      -			this._addClass( last, null, value.down );
      -		}
      -
      -		this._super( key, value );
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this._super( value );
      -
      -		this._toggleClass( this.uiSpinner, null, "ui-state-disabled", !!value );
      -		this.element.prop( "disabled", !!value );
      -		this.buttons.button( value ? "disable" : "enable" );
      -	},
      -
      -	_setOptions: spinnerModifer( function( options ) {
      -		this._super( options );
      -	} ),
      -
      -	_parse: function( val ) {
      -		if ( typeof val === "string" && val !== "" ) {
      -			val = window.Globalize && this.options.numberFormat ?
      -				Globalize.parseFloat( val, 10, this.options.culture ) : +val;
      -		}
      -		return val === "" || isNaN( val ) ? null : val;
      -	},
      -
      -	_format: function( value ) {
      -		if ( value === "" ) {
      -			return "";
      -		}
      -		return window.Globalize && this.options.numberFormat ?
      -			Globalize.format( value, this.options.numberFormat, this.options.culture ) :
      -			value;
      -	},
      -
      -	_refresh: function() {
      -		this.element.attr( {
      -			"aria-valuemin": this.options.min,
      -			"aria-valuemax": this.options.max,
      -
      -			// TODO: what should we do with values that can't be parsed?
      -			"aria-valuenow": this._parse( this.element.val() )
      -		} );
      -	},
      -
      -	isValid: function() {
      -		var value = this.value();
      -
      -		// Null is invalid
      -		if ( value === null ) {
      -			return false;
      -		}
      -
      -		// If value gets adjusted, it's invalid
      -		return value === this._adjustValue( value );
      -	},
      -
      -	// Update the value without triggering change
      -	_value: function( value, allowAny ) {
      -		var parsed;
      -		if ( value !== "" ) {
      -			parsed = this._parse( value );
      -			if ( parsed !== null ) {
      -				if ( !allowAny ) {
      -					parsed = this._adjustValue( parsed );
      -				}
      -				value = this._format( parsed );
      -			}
      -		}
      -		this.element.val( value );
      -		this._refresh();
      -	},
      -
      -	_destroy: function() {
      -		this.element
      -			.prop( "disabled", false )
      -			.removeAttr( "autocomplete role aria-valuemin aria-valuemax aria-valuenow" );
      -
      -		this.uiSpinner.replaceWith( this.element );
      -	},
      -
      -	stepUp: spinnerModifer( function( steps ) {
      -		this._stepUp( steps );
      -	} ),
      -	_stepUp: function( steps ) {
      -		if ( this._start() ) {
      -			this._spin( ( steps || 1 ) * this.options.step );
      -			this._stop();
      -		}
      -	},
      -
      -	stepDown: spinnerModifer( function( steps ) {
      -		this._stepDown( steps );
      -	} ),
      -	_stepDown: function( steps ) {
      -		if ( this._start() ) {
      -			this._spin( ( steps || 1 ) * -this.options.step );
      -			this._stop();
      -		}
      -	},
      -
      -	pageUp: spinnerModifer( function( pages ) {
      -		this._stepUp( ( pages || 1 ) * this.options.page );
      -	} ),
      -
      -	pageDown: spinnerModifer( function( pages ) {
      -		this._stepDown( ( pages || 1 ) * this.options.page );
      -	} ),
      -
      -	value: function( newVal ) {
      -		if ( !arguments.length ) {
      -			return this._parse( this.element.val() );
      -		}
      -		spinnerModifer( this._value ).call( this, newVal );
      -	},
      -
      -	widget: function() {
      -		return this.uiSpinner;
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for spinner html extension points
      -	$.widget( "ui.spinner", $.ui.spinner, {
      -		_enhance: function() {
      -			this.uiSpinner = this.element
      -				.attr( "autocomplete", "off" )
      -				.wrap( this._uiSpinnerHtml() )
      -				.parent()
      -
      -					// Add buttons
      -					.append( this._buttonHtml() );
      -		},
      -		_uiSpinnerHtml: function() {
      -			return "<span>";
      -		},
      -
      -		_buttonHtml: function() {
      -			return "<a></a><a></a>";
      -		}
      -	} );
      -}
      -
      -return $.ui.spinner;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/tabs.js b/bower_components/jquery-ui/ui/widgets/tabs.js
      deleted file mode 100644
      index 987cb9ef3b..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/tabs.js
      +++ /dev/null
      @@ -1,924 +0,0 @@
      -/*!
      - * jQuery UI Tabs 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Tabs
      -//>>group: Widgets
      -//>>description: Transforms a set of container elements into a tab structure.
      -//>>docs: http://api.jqueryui.com/tabs/
      -//>>demos: http://jqueryui.com/tabs/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/tabs.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../escape-selector",
      -			"../keycode",
      -			"../safe-active-element",
      -			"../unique-id",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.tabs", {
      -	version: "1.12.1",
      -	delay: 300,
      -	options: {
      -		active: null,
      -		classes: {
      -			"ui-tabs": "ui-corner-all",
      -			"ui-tabs-nav": "ui-corner-all",
      -			"ui-tabs-panel": "ui-corner-bottom",
      -			"ui-tabs-tab": "ui-corner-top"
      -		},
      -		collapsible: false,
      -		event: "click",
      -		heightStyle: "content",
      -		hide: null,
      -		show: null,
      -
      -		// Callbacks
      -		activate: null,
      -		beforeActivate: null,
      -		beforeLoad: null,
      -		load: null
      -	},
      -
      -	_isLocal: ( function() {
      -		var rhash = /#.*$/;
      -
      -		return function( anchor ) {
      -			var anchorUrl, locationUrl;
      -
      -			anchorUrl = anchor.href.replace( rhash, "" );
      -			locationUrl = location.href.replace( rhash, "" );
      -
      -			// Decoding may throw an error if the URL isn't UTF-8 (#9518)
      -			try {
      -				anchorUrl = decodeURIComponent( anchorUrl );
      -			} catch ( error ) {}
      -			try {
      -				locationUrl = decodeURIComponent( locationUrl );
      -			} catch ( error ) {}
      -
      -			return anchor.hash.length > 1 && anchorUrl === locationUrl;
      -		};
      -	} )(),
      -
      -	_create: function() {
      -		var that = this,
      -			options = this.options;
      -
      -		this.running = false;
      -
      -		this._addClass( "ui-tabs", "ui-widget ui-widget-content" );
      -		this._toggleClass( "ui-tabs-collapsible", null, options.collapsible );
      -
      -		this._processTabs();
      -		options.active = this._initialActive();
      -
      -		// Take disabling tabs via class attribute from HTML
      -		// into account and update option properly.
      -		if ( $.isArray( options.disabled ) ) {
      -			options.disabled = $.unique( options.disabled.concat(
      -				$.map( this.tabs.filter( ".ui-state-disabled" ), function( li ) {
      -					return that.tabs.index( li );
      -				} )
      -			) ).sort();
      -		}
      -
      -		// Check for length avoids error when initializing empty list
      -		if ( this.options.active !== false && this.anchors.length ) {
      -			this.active = this._findActive( options.active );
      -		} else {
      -			this.active = $();
      -		}
      -
      -		this._refresh();
      -
      -		if ( this.active.length ) {
      -			this.load( options.active );
      -		}
      -	},
      -
      -	_initialActive: function() {
      -		var active = this.options.active,
      -			collapsible = this.options.collapsible,
      -			locationHash = location.hash.substring( 1 );
      -
      -		if ( active === null ) {
      -
      -			// check the fragment identifier in the URL
      -			if ( locationHash ) {
      -				this.tabs.each( function( i, tab ) {
      -					if ( $( tab ).attr( "aria-controls" ) === locationHash ) {
      -						active = i;
      -						return false;
      -					}
      -				} );
      -			}
      -
      -			// Check for a tab marked active via a class
      -			if ( active === null ) {
      -				active = this.tabs.index( this.tabs.filter( ".ui-tabs-active" ) );
      -			}
      -
      -			// No active tab, set to false
      -			if ( active === null || active === -1 ) {
      -				active = this.tabs.length ? 0 : false;
      -			}
      -		}
      -
      -		// Handle numbers: negative, out of range
      -		if ( active !== false ) {
      -			active = this.tabs.index( this.tabs.eq( active ) );
      -			if ( active === -1 ) {
      -				active = collapsible ? false : 0;
      -			}
      -		}
      -
      -		// Don't allow collapsible: false and active: false
      -		if ( !collapsible && active === false && this.anchors.length ) {
      -			active = 0;
      -		}
      -
      -		return active;
      -	},
      -
      -	_getCreateEventData: function() {
      -		return {
      -			tab: this.active,
      -			panel: !this.active.length ? $() : this._getPanelForTab( this.active )
      -		};
      -	},
      -
      -	_tabKeydown: function( event ) {
      -		var focusedTab = $( $.ui.safeActiveElement( this.document[ 0 ] ) ).closest( "li" ),
      -			selectedIndex = this.tabs.index( focusedTab ),
      -			goingForward = true;
      -
      -		if ( this._handlePageNav( event ) ) {
      -			return;
      -		}
      -
      -		switch ( event.keyCode ) {
      -		case $.ui.keyCode.RIGHT:
      -		case $.ui.keyCode.DOWN:
      -			selectedIndex++;
      -			break;
      -		case $.ui.keyCode.UP:
      -		case $.ui.keyCode.LEFT:
      -			goingForward = false;
      -			selectedIndex--;
      -			break;
      -		case $.ui.keyCode.END:
      -			selectedIndex = this.anchors.length - 1;
      -			break;
      -		case $.ui.keyCode.HOME:
      -			selectedIndex = 0;
      -			break;
      -		case $.ui.keyCode.SPACE:
      -
      -			// Activate only, no collapsing
      -			event.preventDefault();
      -			clearTimeout( this.activating );
      -			this._activate( selectedIndex );
      -			return;
      -		case $.ui.keyCode.ENTER:
      -
      -			// Toggle (cancel delayed activation, allow collapsing)
      -			event.preventDefault();
      -			clearTimeout( this.activating );
      -
      -			// Determine if we should collapse or activate
      -			this._activate( selectedIndex === this.options.active ? false : selectedIndex );
      -			return;
      -		default:
      -			return;
      -		}
      -
      -		// Focus the appropriate tab, based on which key was pressed
      -		event.preventDefault();
      -		clearTimeout( this.activating );
      -		selectedIndex = this._focusNextTab( selectedIndex, goingForward );
      -
      -		// Navigating with control/command key will prevent automatic activation
      -		if ( !event.ctrlKey && !event.metaKey ) {
      -
      -			// Update aria-selected immediately so that AT think the tab is already selected.
      -			// Otherwise AT may confuse the user by stating that they need to activate the tab,
      -			// but the tab will already be activated by the time the announcement finishes.
      -			focusedTab.attr( "aria-selected", "false" );
      -			this.tabs.eq( selectedIndex ).attr( "aria-selected", "true" );
      -
      -			this.activating = this._delay( function() {
      -				this.option( "active", selectedIndex );
      -			}, this.delay );
      -		}
      -	},
      -
      -	_panelKeydown: function( event ) {
      -		if ( this._handlePageNav( event ) ) {
      -			return;
      -		}
      -
      -		// Ctrl+up moves focus to the current tab
      -		if ( event.ctrlKey && event.keyCode === $.ui.keyCode.UP ) {
      -			event.preventDefault();
      -			this.active.trigger( "focus" );
      -		}
      -	},
      -
      -	// Alt+page up/down moves focus to the previous/next tab (and activates)
      -	_handlePageNav: function( event ) {
      -		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_UP ) {
      -			this._activate( this._focusNextTab( this.options.active - 1, false ) );
      -			return true;
      -		}
      -		if ( event.altKey && event.keyCode === $.ui.keyCode.PAGE_DOWN ) {
      -			this._activate( this._focusNextTab( this.options.active + 1, true ) );
      -			return true;
      -		}
      -	},
      -
      -	_findNextTab: function( index, goingForward ) {
      -		var lastTabIndex = this.tabs.length - 1;
      -
      -		function constrain() {
      -			if ( index > lastTabIndex ) {
      -				index = 0;
      -			}
      -			if ( index < 0 ) {
      -				index = lastTabIndex;
      -			}
      -			return index;
      -		}
      -
      -		while ( $.inArray( constrain(), this.options.disabled ) !== -1 ) {
      -			index = goingForward ? index + 1 : index - 1;
      -		}
      -
      -		return index;
      -	},
      -
      -	_focusNextTab: function( index, goingForward ) {
      -		index = this._findNextTab( index, goingForward );
      -		this.tabs.eq( index ).trigger( "focus" );
      -		return index;
      -	},
      -
      -	_setOption: function( key, value ) {
      -		if ( key === "active" ) {
      -
      -			// _activate() will handle invalid values and update this.options
      -			this._activate( value );
      -			return;
      -		}
      -
      -		this._super( key, value );
      -
      -		if ( key === "collapsible" ) {
      -			this._toggleClass( "ui-tabs-collapsible", null, value );
      -
      -			// Setting collapsible: false while collapsed; open first panel
      -			if ( !value && this.options.active === false ) {
      -				this._activate( 0 );
      -			}
      -		}
      -
      -		if ( key === "event" ) {
      -			this._setupEvents( value );
      -		}
      -
      -		if ( key === "heightStyle" ) {
      -			this._setupHeightStyle( value );
      -		}
      -	},
      -
      -	_sanitizeSelector: function( hash ) {
      -		return hash ? hash.replace( /[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g, "\\$&" ) : "";
      -	},
      -
      -	refresh: function() {
      -		var options = this.options,
      -			lis = this.tablist.children( ":has(a[href])" );
      -
      -		// Get disabled tabs from class attribute from HTML
      -		// this will get converted to a boolean if needed in _refresh()
      -		options.disabled = $.map( lis.filter( ".ui-state-disabled" ), function( tab ) {
      -			return lis.index( tab );
      -		} );
      -
      -		this._processTabs();
      -
      -		// Was collapsed or no tabs
      -		if ( options.active === false || !this.anchors.length ) {
      -			options.active = false;
      -			this.active = $();
      -
      -		// was active, but active tab is gone
      -		} else if ( this.active.length && !$.contains( this.tablist[ 0 ], this.active[ 0 ] ) ) {
      -
      -			// all remaining tabs are disabled
      -			if ( this.tabs.length === options.disabled.length ) {
      -				options.active = false;
      -				this.active = $();
      -
      -			// activate previous tab
      -			} else {
      -				this._activate( this._findNextTab( Math.max( 0, options.active - 1 ), false ) );
      -			}
      -
      -		// was active, active tab still exists
      -		} else {
      -
      -			// make sure active index is correct
      -			options.active = this.tabs.index( this.active );
      -		}
      -
      -		this._refresh();
      -	},
      -
      -	_refresh: function() {
      -		this._setOptionDisabled( this.options.disabled );
      -		this._setupEvents( this.options.event );
      -		this._setupHeightStyle( this.options.heightStyle );
      -
      -		this.tabs.not( this.active ).attr( {
      -			"aria-selected": "false",
      -			"aria-expanded": "false",
      -			tabIndex: -1
      -		} );
      -		this.panels.not( this._getPanelForTab( this.active ) )
      -			.hide()
      -			.attr( {
      -				"aria-hidden": "true"
      -			} );
      -
      -		// Make sure one tab is in the tab order
      -		if ( !this.active.length ) {
      -			this.tabs.eq( 0 ).attr( "tabIndex", 0 );
      -		} else {
      -			this.active
      -				.attr( {
      -					"aria-selected": "true",
      -					"aria-expanded": "true",
      -					tabIndex: 0
      -				} );
      -			this._addClass( this.active, "ui-tabs-active", "ui-state-active" );
      -			this._getPanelForTab( this.active )
      -				.show()
      -				.attr( {
      -					"aria-hidden": "false"
      -				} );
      -		}
      -	},
      -
      -	_processTabs: function() {
      -		var that = this,
      -			prevTabs = this.tabs,
      -			prevAnchors = this.anchors,
      -			prevPanels = this.panels;
      -
      -		this.tablist = this._getList().attr( "role", "tablist" );
      -		this._addClass( this.tablist, "ui-tabs-nav",
      -			"ui-helper-reset ui-helper-clearfix ui-widget-header" );
      -
      -		// Prevent users from focusing disabled tabs via click
      -		this.tablist
      -			.on( "mousedown" + this.eventNamespace, "> li", function( event ) {
      -				if ( $( this ).is( ".ui-state-disabled" ) ) {
      -					event.preventDefault();
      -				}
      -			} )
      -
      -			// Support: IE <9
      -			// Preventing the default action in mousedown doesn't prevent IE
      -			// from focusing the element, so if the anchor gets focused, blur.
      -			// We don't have to worry about focusing the previously focused
      -			// element since clicking on a non-focusable element should focus
      -			// the body anyway.
      -			.on( "focus" + this.eventNamespace, ".ui-tabs-anchor", function() {
      -				if ( $( this ).closest( "li" ).is( ".ui-state-disabled" ) ) {
      -					this.blur();
      -				}
      -			} );
      -
      -		this.tabs = this.tablist.find( "> li:has(a[href])" )
      -			.attr( {
      -				role: "tab",
      -				tabIndex: -1
      -			} );
      -		this._addClass( this.tabs, "ui-tabs-tab", "ui-state-default" );
      -
      -		this.anchors = this.tabs.map( function() {
      -			return $( "a", this )[ 0 ];
      -		} )
      -			.attr( {
      -				role: "presentation",
      -				tabIndex: -1
      -			} );
      -		this._addClass( this.anchors, "ui-tabs-anchor" );
      -
      -		this.panels = $();
      -
      -		this.anchors.each( function( i, anchor ) {
      -			var selector, panel, panelId,
      -				anchorId = $( anchor ).uniqueId().attr( "id" ),
      -				tab = $( anchor ).closest( "li" ),
      -				originalAriaControls = tab.attr( "aria-controls" );
      -
      -			// Inline tab
      -			if ( that._isLocal( anchor ) ) {
      -				selector = anchor.hash;
      -				panelId = selector.substring( 1 );
      -				panel = that.element.find( that._sanitizeSelector( selector ) );
      -
      -			// remote tab
      -			} else {
      -
      -				// If the tab doesn't already have aria-controls,
      -				// generate an id by using a throw-away element
      -				panelId = tab.attr( "aria-controls" ) || $( {} ).uniqueId()[ 0 ].id;
      -				selector = "#" + panelId;
      -				panel = that.element.find( selector );
      -				if ( !panel.length ) {
      -					panel = that._createPanel( panelId );
      -					panel.insertAfter( that.panels[ i - 1 ] || that.tablist );
      -				}
      -				panel.attr( "aria-live", "polite" );
      -			}
      -
      -			if ( panel.length ) {
      -				that.panels = that.panels.add( panel );
      -			}
      -			if ( originalAriaControls ) {
      -				tab.data( "ui-tabs-aria-controls", originalAriaControls );
      -			}
      -			tab.attr( {
      -				"aria-controls": panelId,
      -				"aria-labelledby": anchorId
      -			} );
      -			panel.attr( "aria-labelledby", anchorId );
      -		} );
      -
      -		this.panels.attr( "role", "tabpanel" );
      -		this._addClass( this.panels, "ui-tabs-panel", "ui-widget-content" );
      -
      -		// Avoid memory leaks (#10056)
      -		if ( prevTabs ) {
      -			this._off( prevTabs.not( this.tabs ) );
      -			this._off( prevAnchors.not( this.anchors ) );
      -			this._off( prevPanels.not( this.panels ) );
      -		}
      -	},
      -
      -	// Allow overriding how to find the list for rare usage scenarios (#7715)
      -	_getList: function() {
      -		return this.tablist || this.element.find( "ol, ul" ).eq( 0 );
      -	},
      -
      -	_createPanel: function( id ) {
      -		return $( "<div>" )
      -			.attr( "id", id )
      -			.data( "ui-tabs-destroy", true );
      -	},
      -
      -	_setOptionDisabled: function( disabled ) {
      -		var currentItem, li, i;
      -
      -		if ( $.isArray( disabled ) ) {
      -			if ( !disabled.length ) {
      -				disabled = false;
      -			} else if ( disabled.length === this.anchors.length ) {
      -				disabled = true;
      -			}
      -		}
      -
      -		// Disable tabs
      -		for ( i = 0; ( li = this.tabs[ i ] ); i++ ) {
      -			currentItem = $( li );
      -			if ( disabled === true || $.inArray( i, disabled ) !== -1 ) {
      -				currentItem.attr( "aria-disabled", "true" );
      -				this._addClass( currentItem, null, "ui-state-disabled" );
      -			} else {
      -				currentItem.removeAttr( "aria-disabled" );
      -				this._removeClass( currentItem, null, "ui-state-disabled" );
      -			}
      -		}
      -
      -		this.options.disabled = disabled;
      -
      -		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null,
      -			disabled === true );
      -	},
      -
      -	_setupEvents: function( event ) {
      -		var events = {};
      -		if ( event ) {
      -			$.each( event.split( " " ), function( index, eventName ) {
      -				events[ eventName ] = "_eventHandler";
      -			} );
      -		}
      -
      -		this._off( this.anchors.add( this.tabs ).add( this.panels ) );
      -
      -		// Always prevent the default action, even when disabled
      -		this._on( true, this.anchors, {
      -			click: function( event ) {
      -				event.preventDefault();
      -			}
      -		} );
      -		this._on( this.anchors, events );
      -		this._on( this.tabs, { keydown: "_tabKeydown" } );
      -		this._on( this.panels, { keydown: "_panelKeydown" } );
      -
      -		this._focusable( this.tabs );
      -		this._hoverable( this.tabs );
      -	},
      -
      -	_setupHeightStyle: function( heightStyle ) {
      -		var maxHeight,
      -			parent = this.element.parent();
      -
      -		if ( heightStyle === "fill" ) {
      -			maxHeight = parent.height();
      -			maxHeight -= this.element.outerHeight() - this.element.height();
      -
      -			this.element.siblings( ":visible" ).each( function() {
      -				var elem = $( this ),
      -					position = elem.css( "position" );
      -
      -				if ( position === "absolute" || position === "fixed" ) {
      -					return;
      -				}
      -				maxHeight -= elem.outerHeight( true );
      -			} );
      -
      -			this.element.children().not( this.panels ).each( function() {
      -				maxHeight -= $( this ).outerHeight( true );
      -			} );
      -
      -			this.panels.each( function() {
      -				$( this ).height( Math.max( 0, maxHeight -
      -					$( this ).innerHeight() + $( this ).height() ) );
      -			} )
      -				.css( "overflow", "auto" );
      -		} else if ( heightStyle === "auto" ) {
      -			maxHeight = 0;
      -			this.panels.each( function() {
      -				maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
      -			} ).height( maxHeight );
      -		}
      -	},
      -
      -	_eventHandler: function( event ) {
      -		var options = this.options,
      -			active = this.active,
      -			anchor = $( event.currentTarget ),
      -			tab = anchor.closest( "li" ),
      -			clickedIsActive = tab[ 0 ] === active[ 0 ],
      -			collapsing = clickedIsActive && options.collapsible,
      -			toShow = collapsing ? $() : this._getPanelForTab( tab ),
      -			toHide = !active.length ? $() : this._getPanelForTab( active ),
      -			eventData = {
      -				oldTab: active,
      -				oldPanel: toHide,
      -				newTab: collapsing ? $() : tab,
      -				newPanel: toShow
      -			};
      -
      -		event.preventDefault();
      -
      -		if ( tab.hasClass( "ui-state-disabled" ) ||
      -
      -				// tab is already loading
      -				tab.hasClass( "ui-tabs-loading" ) ||
      -
      -				// can't switch durning an animation
      -				this.running ||
      -
      -				// click on active header, but not collapsible
      -				( clickedIsActive && !options.collapsible ) ||
      -
      -				// allow canceling activation
      -				( this._trigger( "beforeActivate", event, eventData ) === false ) ) {
      -			return;
      -		}
      -
      -		options.active = collapsing ? false : this.tabs.index( tab );
      -
      -		this.active = clickedIsActive ? $() : tab;
      -		if ( this.xhr ) {
      -			this.xhr.abort();
      -		}
      -
      -		if ( !toHide.length && !toShow.length ) {
      -			$.error( "jQuery UI Tabs: Mismatching fragment identifier." );
      -		}
      -
      -		if ( toShow.length ) {
      -			this.load( this.tabs.index( tab ), event );
      -		}
      -		this._toggle( event, eventData );
      -	},
      -
      -	// Handles show/hide for selecting tabs
      -	_toggle: function( event, eventData ) {
      -		var that = this,
      -			toShow = eventData.newPanel,
      -			toHide = eventData.oldPanel;
      -
      -		this.running = true;
      -
      -		function complete() {
      -			that.running = false;
      -			that._trigger( "activate", event, eventData );
      -		}
      -
      -		function show() {
      -			that._addClass( eventData.newTab.closest( "li" ), "ui-tabs-active", "ui-state-active" );
      -
      -			if ( toShow.length && that.options.show ) {
      -				that._show( toShow, that.options.show, complete );
      -			} else {
      -				toShow.show();
      -				complete();
      -			}
      -		}
      -
      -		// Start out by hiding, then showing, then completing
      -		if ( toHide.length && this.options.hide ) {
      -			this._hide( toHide, this.options.hide, function() {
      -				that._removeClass( eventData.oldTab.closest( "li" ),
      -					"ui-tabs-active", "ui-state-active" );
      -				show();
      -			} );
      -		} else {
      -			this._removeClass( eventData.oldTab.closest( "li" ),
      -				"ui-tabs-active", "ui-state-active" );
      -			toHide.hide();
      -			show();
      -		}
      -
      -		toHide.attr( "aria-hidden", "true" );
      -		eventData.oldTab.attr( {
      -			"aria-selected": "false",
      -			"aria-expanded": "false"
      -		} );
      -
      -		// If we're switching tabs, remove the old tab from the tab order.
      -		// If we're opening from collapsed state, remove the previous tab from the tab order.
      -		// If we're collapsing, then keep the collapsing tab in the tab order.
      -		if ( toShow.length && toHide.length ) {
      -			eventData.oldTab.attr( "tabIndex", -1 );
      -		} else if ( toShow.length ) {
      -			this.tabs.filter( function() {
      -				return $( this ).attr( "tabIndex" ) === 0;
      -			} )
      -				.attr( "tabIndex", -1 );
      -		}
      -
      -		toShow.attr( "aria-hidden", "false" );
      -		eventData.newTab.attr( {
      -			"aria-selected": "true",
      -			"aria-expanded": "true",
      -			tabIndex: 0
      -		} );
      -	},
      -
      -	_activate: function( index ) {
      -		var anchor,
      -			active = this._findActive( index );
      -
      -		// Trying to activate the already active panel
      -		if ( active[ 0 ] === this.active[ 0 ] ) {
      -			return;
      -		}
      -
      -		// Trying to collapse, simulate a click on the current active header
      -		if ( !active.length ) {
      -			active = this.active;
      -		}
      -
      -		anchor = active.find( ".ui-tabs-anchor" )[ 0 ];
      -		this._eventHandler( {
      -			target: anchor,
      -			currentTarget: anchor,
      -			preventDefault: $.noop
      -		} );
      -	},
      -
      -	_findActive: function( index ) {
      -		return index === false ? $() : this.tabs.eq( index );
      -	},
      -
      -	_getIndex: function( index ) {
      -
      -		// meta-function to give users option to provide a href string instead of a numerical index.
      -		if ( typeof index === "string" ) {
      -			index = this.anchors.index( this.anchors.filter( "[href$='" +
      -				$.ui.escapeSelector( index ) + "']" ) );
      -		}
      -
      -		return index;
      -	},
      -
      -	_destroy: function() {
      -		if ( this.xhr ) {
      -			this.xhr.abort();
      -		}
      -
      -		this.tablist
      -			.removeAttr( "role" )
      -			.off( this.eventNamespace );
      -
      -		this.anchors
      -			.removeAttr( "role tabIndex" )
      -			.removeUniqueId();
      -
      -		this.tabs.add( this.panels ).each( function() {
      -			if ( $.data( this, "ui-tabs-destroy" ) ) {
      -				$( this ).remove();
      -			} else {
      -				$( this ).removeAttr( "role tabIndex " +
      -					"aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded" );
      -			}
      -		} );
      -
      -		this.tabs.each( function() {
      -			var li = $( this ),
      -				prev = li.data( "ui-tabs-aria-controls" );
      -			if ( prev ) {
      -				li
      -					.attr( "aria-controls", prev )
      -					.removeData( "ui-tabs-aria-controls" );
      -			} else {
      -				li.removeAttr( "aria-controls" );
      -			}
      -		} );
      -
      -		this.panels.show();
      -
      -		if ( this.options.heightStyle !== "content" ) {
      -			this.panels.css( "height", "" );
      -		}
      -	},
      -
      -	enable: function( index ) {
      -		var disabled = this.options.disabled;
      -		if ( disabled === false ) {
      -			return;
      -		}
      -
      -		if ( index === undefined ) {
      -			disabled = false;
      -		} else {
      -			index = this._getIndex( index );
      -			if ( $.isArray( disabled ) ) {
      -				disabled = $.map( disabled, function( num ) {
      -					return num !== index ? num : null;
      -				} );
      -			} else {
      -				disabled = $.map( this.tabs, function( li, num ) {
      -					return num !== index ? num : null;
      -				} );
      -			}
      -		}
      -		this._setOptionDisabled( disabled );
      -	},
      -
      -	disable: function( index ) {
      -		var disabled = this.options.disabled;
      -		if ( disabled === true ) {
      -			return;
      -		}
      -
      -		if ( index === undefined ) {
      -			disabled = true;
      -		} else {
      -			index = this._getIndex( index );
      -			if ( $.inArray( index, disabled ) !== -1 ) {
      -				return;
      -			}
      -			if ( $.isArray( disabled ) ) {
      -				disabled = $.merge( [ index ], disabled ).sort();
      -			} else {
      -				disabled = [ index ];
      -			}
      -		}
      -		this._setOptionDisabled( disabled );
      -	},
      -
      -	load: function( index, event ) {
      -		index = this._getIndex( index );
      -		var that = this,
      -			tab = this.tabs.eq( index ),
      -			anchor = tab.find( ".ui-tabs-anchor" ),
      -			panel = this._getPanelForTab( tab ),
      -			eventData = {
      -				tab: tab,
      -				panel: panel
      -			},
      -			complete = function( jqXHR, status ) {
      -				if ( status === "abort" ) {
      -					that.panels.stop( false, true );
      -				}
      -
      -				that._removeClass( tab, "ui-tabs-loading" );
      -				panel.removeAttr( "aria-busy" );
      -
      -				if ( jqXHR === that.xhr ) {
      -					delete that.xhr;
      -				}
      -			};
      -
      -		// Not remote
      -		if ( this._isLocal( anchor[ 0 ] ) ) {
      -			return;
      -		}
      -
      -		this.xhr = $.ajax( this._ajaxSettings( anchor, event, eventData ) );
      -
      -		// Support: jQuery <1.8
      -		// jQuery <1.8 returns false if the request is canceled in beforeSend,
      -		// but as of 1.8, $.ajax() always returns a jqXHR object.
      -		if ( this.xhr && this.xhr.statusText !== "canceled" ) {
      -			this._addClass( tab, "ui-tabs-loading" );
      -			panel.attr( "aria-busy", "true" );
      -
      -			this.xhr
      -				.done( function( response, status, jqXHR ) {
      -
      -					// support: jQuery <1.8
      -					// http://bugs.jquery.com/ticket/11778
      -					setTimeout( function() {
      -						panel.html( response );
      -						that._trigger( "load", event, eventData );
      -
      -						complete( jqXHR, status );
      -					}, 1 );
      -				} )
      -				.fail( function( jqXHR, status ) {
      -
      -					// support: jQuery <1.8
      -					// http://bugs.jquery.com/ticket/11778
      -					setTimeout( function() {
      -						complete( jqXHR, status );
      -					}, 1 );
      -				} );
      -		}
      -	},
      -
      -	_ajaxSettings: function( anchor, event, eventData ) {
      -		var that = this;
      -		return {
      -
      -			// Support: IE <11 only
      -			// Strip any hash that exists to prevent errors with the Ajax request
      -			url: anchor.attr( "href" ).replace( /#.*$/, "" ),
      -			beforeSend: function( jqXHR, settings ) {
      -				return that._trigger( "beforeLoad", event,
      -					$.extend( { jqXHR: jqXHR, ajaxSettings: settings }, eventData ) );
      -			}
      -		};
      -	},
      -
      -	_getPanelForTab: function( tab ) {
      -		var id = $( tab ).attr( "aria-controls" );
      -		return this.element.find( this._sanitizeSelector( "#" + id ) );
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: Switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for ui-tab class (now ui-tabs-tab)
      -	$.widget( "ui.tabs", $.ui.tabs, {
      -		_processTabs: function() {
      -			this._superApply( arguments );
      -			this._addClass( this.tabs, "ui-tab" );
      -		}
      -	} );
      -}
      -
      -return $.ui.tabs;
      -
      -} ) );
      diff --git a/bower_components/jquery-ui/ui/widgets/tooltip.js b/bower_components/jquery-ui/ui/widgets/tooltip.js
      deleted file mode 100644
      index f453b456f9..0000000000
      --- a/bower_components/jquery-ui/ui/widgets/tooltip.js
      +++ /dev/null
      @@ -1,520 +0,0 @@
      -/*!
      - * jQuery UI Tooltip 1.12.1
      - * http://jqueryui.com
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license.
      - * http://jquery.org/license
      - */
      -
      -//>>label: Tooltip
      -//>>group: Widgets
      -//>>description: Shows additional information for any element on hover or focus.
      -//>>docs: http://api.jqueryui.com/tooltip/
      -//>>demos: http://jqueryui.com/tooltip/
      -//>>css.structure: ../../themes/base/core.css
      -//>>css.structure: ../../themes/base/tooltip.css
      -//>>css.theme: ../../themes/base/theme.css
      -
      -( function( factory ) {
      -	if ( typeof define === "function" && define.amd ) {
      -
      -		// AMD. Register as an anonymous module.
      -		define( [
      -			"jquery",
      -			"../keycode",
      -			"../position",
      -			"../unique-id",
      -			"../version",
      -			"../widget"
      -		], factory );
      -	} else {
      -
      -		// Browser globals
      -		factory( jQuery );
      -	}
      -}( function( $ ) {
      -
      -$.widget( "ui.tooltip", {
      -	version: "1.12.1",
      -	options: {
      -		classes: {
      -			"ui-tooltip": "ui-corner-all ui-widget-shadow"
      -		},
      -		content: function() {
      -
      -			// support: IE<9, Opera in jQuery <1.7
      -			// .text() can't accept undefined, so coerce to a string
      -			var title = $( this ).attr( "title" ) || "";
      -
      -			// Escape title, since we're going from an attribute to raw HTML
      -			return $( "<a>" ).text( title ).html();
      -		},
      -		hide: true,
      -
      -		// Disabled elements have inconsistent behavior across browsers (#8661)
      -		items: "[title]:not([disabled])",
      -		position: {
      -			my: "left top+15",
      -			at: "left bottom",
      -			collision: "flipfit flip"
      -		},
      -		show: true,
      -		track: false,
      -
      -		// Callbacks
      -		close: null,
      -		open: null
      -	},
      -
      -	_addDescribedBy: function( elem, id ) {
      -		var describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ );
      -		describedby.push( id );
      -		elem
      -			.data( "ui-tooltip-id", id )
      -			.attr( "aria-describedby", $.trim( describedby.join( " " ) ) );
      -	},
      -
      -	_removeDescribedBy: function( elem ) {
      -		var id = elem.data( "ui-tooltip-id" ),
      -			describedby = ( elem.attr( "aria-describedby" ) || "" ).split( /\s+/ ),
      -			index = $.inArray( id, describedby );
      -
      -		if ( index !== -1 ) {
      -			describedby.splice( index, 1 );
      -		}
      -
      -		elem.removeData( "ui-tooltip-id" );
      -		describedby = $.trim( describedby.join( " " ) );
      -		if ( describedby ) {
      -			elem.attr( "aria-describedby", describedby );
      -		} else {
      -			elem.removeAttr( "aria-describedby" );
      -		}
      -	},
      -
      -	_create: function() {
      -		this._on( {
      -			mouseover: "open",
      -			focusin: "open"
      -		} );
      -
      -		// IDs of generated tooltips, needed for destroy
      -		this.tooltips = {};
      -
      -		// IDs of parent tooltips where we removed the title attribute
      -		this.parents = {};
      -
      -		// Append the aria-live region so tooltips announce correctly
      -		this.liveRegion = $( "<div>" )
      -			.attr( {
      -				role: "log",
      -				"aria-live": "assertive",
      -				"aria-relevant": "additions"
      -			} )
      -			.appendTo( this.document[ 0 ].body );
      -		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
      -
      -		this.disabledTitles = $( [] );
      -	},
      -
      -	_setOption: function( key, value ) {
      -		var that = this;
      -
      -		this._super( key, value );
      -
      -		if ( key === "content" ) {
      -			$.each( this.tooltips, function( id, tooltipData ) {
      -				that._updateContent( tooltipData.element );
      -			} );
      -		}
      -	},
      -
      -	_setOptionDisabled: function( value ) {
      -		this[ value ? "_disable" : "_enable" ]();
      -	},
      -
      -	_disable: function() {
      -		var that = this;
      -
      -		// Close open tooltips
      -		$.each( this.tooltips, function( id, tooltipData ) {
      -			var event = $.Event( "blur" );
      -			event.target = event.currentTarget = tooltipData.element[ 0 ];
      -			that.close( event, true );
      -		} );
      -
      -		// Remove title attributes to prevent native tooltips
      -		this.disabledTitles = this.disabledTitles.add(
      -			this.element.find( this.options.items ).addBack()
      -				.filter( function() {
      -					var element = $( this );
      -					if ( element.is( "[title]" ) ) {
      -						return element
      -							.data( "ui-tooltip-title", element.attr( "title" ) )
      -							.removeAttr( "title" );
      -					}
      -				} )
      -		);
      -	},
      -
      -	_enable: function() {
      -
      -		// restore title attributes
      -		this.disabledTitles.each( function() {
      -			var element = $( this );
      -			if ( element.data( "ui-tooltip-title" ) ) {
      -				element.attr( "title", element.data( "ui-tooltip-title" ) );
      -			}
      -		} );
      -		this.disabledTitles = $( [] );
      -	},
      -
      -	open: function( event ) {
      -		var that = this,
      -			target = $( event ? event.target : this.element )
      -
      -				// we need closest here due to mouseover bubbling,
      -				// but always pointing at the same event target
      -				.closest( this.options.items );
      -
      -		// No element to show a tooltip for or the tooltip is already open
      -		if ( !target.length || target.data( "ui-tooltip-id" ) ) {
      -			return;
      -		}
      -
      -		if ( target.attr( "title" ) ) {
      -			target.data( "ui-tooltip-title", target.attr( "title" ) );
      -		}
      -
      -		target.data( "ui-tooltip-open", true );
      -
      -		// Kill parent tooltips, custom or native, for hover
      -		if ( event && event.type === "mouseover" ) {
      -			target.parents().each( function() {
      -				var parent = $( this ),
      -					blurEvent;
      -				if ( parent.data( "ui-tooltip-open" ) ) {
      -					blurEvent = $.Event( "blur" );
      -					blurEvent.target = blurEvent.currentTarget = this;
      -					that.close( blurEvent, true );
      -				}
      -				if ( parent.attr( "title" ) ) {
      -					parent.uniqueId();
      -					that.parents[ this.id ] = {
      -						element: this,
      -						title: parent.attr( "title" )
      -					};
      -					parent.attr( "title", "" );
      -				}
      -			} );
      -		}
      -
      -		this._registerCloseHandlers( event, target );
      -		this._updateContent( target, event );
      -	},
      -
      -	_updateContent: function( target, event ) {
      -		var content,
      -			contentOption = this.options.content,
      -			that = this,
      -			eventType = event ? event.type : null;
      -
      -		if ( typeof contentOption === "string" || contentOption.nodeType ||
      -				contentOption.jquery ) {
      -			return this._open( event, target, contentOption );
      -		}
      -
      -		content = contentOption.call( target[ 0 ], function( response ) {
      -
      -			// IE may instantly serve a cached response for ajax requests
      -			// delay this call to _open so the other call to _open runs first
      -			that._delay( function() {
      -
      -				// Ignore async response if tooltip was closed already
      -				if ( !target.data( "ui-tooltip-open" ) ) {
      -					return;
      -				}
      -
      -				// JQuery creates a special event for focusin when it doesn't
      -				// exist natively. To improve performance, the native event
      -				// object is reused and the type is changed. Therefore, we can't
      -				// rely on the type being correct after the event finished
      -				// bubbling, so we set it back to the previous value. (#8740)
      -				if ( event ) {
      -					event.type = eventType;
      -				}
      -				this._open( event, target, response );
      -			} );
      -		} );
      -		if ( content ) {
      -			this._open( event, target, content );
      -		}
      -	},
      -
      -	_open: function( event, target, content ) {
      -		var tooltipData, tooltip, delayedShow, a11yContent,
      -			positionOption = $.extend( {}, this.options.position );
      -
      -		if ( !content ) {
      -			return;
      -		}
      -
      -		// Content can be updated multiple times. If the tooltip already
      -		// exists, then just update the content and bail.
      -		tooltipData = this._find( target );
      -		if ( tooltipData ) {
      -			tooltipData.tooltip.find( ".ui-tooltip-content" ).html( content );
      -			return;
      -		}
      -
      -		// If we have a title, clear it to prevent the native tooltip
      -		// we have to check first to avoid defining a title if none exists
      -		// (we don't want to cause an element to start matching [title])
      -		//
      -		// We use removeAttr only for key events, to allow IE to export the correct
      -		// accessible attributes. For mouse events, set to empty string to avoid
      -		// native tooltip showing up (happens only when removing inside mouseover).
      -		if ( target.is( "[title]" ) ) {
      -			if ( event && event.type === "mouseover" ) {
      -				target.attr( "title", "" );
      -			} else {
      -				target.removeAttr( "title" );
      -			}
      -		}
      -
      -		tooltipData = this._tooltip( target );
      -		tooltip = tooltipData.tooltip;
      -		this._addDescribedBy( target, tooltip.attr( "id" ) );
      -		tooltip.find( ".ui-tooltip-content" ).html( content );
      -
      -		// Support: Voiceover on OS X, JAWS on IE <= 9
      -		// JAWS announces deletions even when aria-relevant="additions"
      -		// Voiceover will sometimes re-read the entire log region's contents from the beginning
      -		this.liveRegion.children().hide();
      -		a11yContent = $( "<div>" ).html( tooltip.find( ".ui-tooltip-content" ).html() );
      -		a11yContent.removeAttr( "name" ).find( "[name]" ).removeAttr( "name" );
      -		a11yContent.removeAttr( "id" ).find( "[id]" ).removeAttr( "id" );
      -		a11yContent.appendTo( this.liveRegion );
      -
      -		function position( event ) {
      -			positionOption.of = event;
      -			if ( tooltip.is( ":hidden" ) ) {
      -				return;
      -			}
      -			tooltip.position( positionOption );
      -		}
      -		if ( this.options.track && event && /^mouse/.test( event.type ) ) {
      -			this._on( this.document, {
      -				mousemove: position
      -			} );
      -
      -			// trigger once to override element-relative positioning
      -			position( event );
      -		} else {
      -			tooltip.position( $.extend( {
      -				of: target
      -			}, this.options.position ) );
      -		}
      -
      -		tooltip.hide();
      -
      -		this._show( tooltip, this.options.show );
      -
      -		// Handle tracking tooltips that are shown with a delay (#8644). As soon
      -		// as the tooltip is visible, position the tooltip using the most recent
      -		// event.
      -		// Adds the check to add the timers only when both delay and track options are set (#14682)
      -		if ( this.options.track && this.options.show && this.options.show.delay ) {
      -			delayedShow = this.delayedShow = setInterval( function() {
      -				if ( tooltip.is( ":visible" ) ) {
      -					position( positionOption.of );
      -					clearInterval( delayedShow );
      -				}
      -			}, $.fx.interval );
      -		}
      -
      -		this._trigger( "open", event, { tooltip: tooltip } );
      -	},
      -
      -	_registerCloseHandlers: function( event, target ) {
      -		var events = {
      -			keyup: function( event ) {
      -				if ( event.keyCode === $.ui.keyCode.ESCAPE ) {
      -					var fakeEvent = $.Event( event );
      -					fakeEvent.currentTarget = target[ 0 ];
      -					this.close( fakeEvent, true );
      -				}
      -			}
      -		};
      -
      -		// Only bind remove handler for delegated targets. Non-delegated
      -		// tooltips will handle this in destroy.
      -		if ( target[ 0 ] !== this.element[ 0 ] ) {
      -			events.remove = function() {
      -				this._removeTooltip( this._find( target ).tooltip );
      -			};
      -		}
      -
      -		if ( !event || event.type === "mouseover" ) {
      -			events.mouseleave = "close";
      -		}
      -		if ( !event || event.type === "focusin" ) {
      -			events.focusout = "close";
      -		}
      -		this._on( true, target, events );
      -	},
      -
      -	close: function( event ) {
      -		var tooltip,
      -			that = this,
      -			target = $( event ? event.currentTarget : this.element ),
      -			tooltipData = this._find( target );
      -
      -		// The tooltip may already be closed
      -		if ( !tooltipData ) {
      -
      -			// We set ui-tooltip-open immediately upon open (in open()), but only set the
      -			// additional data once there's actually content to show (in _open()). So even if the
      -			// tooltip doesn't have full data, we always remove ui-tooltip-open in case we're in
      -			// the period between open() and _open().
      -			target.removeData( "ui-tooltip-open" );
      -			return;
      -		}
      -
      -		tooltip = tooltipData.tooltip;
      -
      -		// Disabling closes the tooltip, so we need to track when we're closing
      -		// to avoid an infinite loop in case the tooltip becomes disabled on close
      -		if ( tooltipData.closing ) {
      -			return;
      -		}
      -
      -		// Clear the interval for delayed tracking tooltips
      -		clearInterval( this.delayedShow );
      -
      -		// Only set title if we had one before (see comment in _open())
      -		// If the title attribute has changed since open(), don't restore
      -		if ( target.data( "ui-tooltip-title" ) && !target.attr( "title" ) ) {
      -			target.attr( "title", target.data( "ui-tooltip-title" ) );
      -		}
      -
      -		this._removeDescribedBy( target );
      -
      -		tooltipData.hiding = true;
      -		tooltip.stop( true );
      -		this._hide( tooltip, this.options.hide, function() {
      -			that._removeTooltip( $( this ) );
      -		} );
      -
      -		target.removeData( "ui-tooltip-open" );
      -		this._off( target, "mouseleave focusout keyup" );
      -
      -		// Remove 'remove' binding only on delegated targets
      -		if ( target[ 0 ] !== this.element[ 0 ] ) {
      -			this._off( target, "remove" );
      -		}
      -		this._off( this.document, "mousemove" );
      -
      -		if ( event && event.type === "mouseleave" ) {
      -			$.each( this.parents, function( id, parent ) {
      -				$( parent.element ).attr( "title", parent.title );
      -				delete that.parents[ id ];
      -			} );
      -		}
      -
      -		tooltipData.closing = true;
      -		this._trigger( "close", event, { tooltip: tooltip } );
      -		if ( !tooltipData.hiding ) {
      -			tooltipData.closing = false;
      -		}
      -	},
      -
      -	_tooltip: function( element ) {
      -		var tooltip = $( "<div>" ).attr( "role", "tooltip" ),
      -			content = $( "<div>" ).appendTo( tooltip ),
      -			id = tooltip.uniqueId().attr( "id" );
      -
      -		this._addClass( content, "ui-tooltip-content" );
      -		this._addClass( tooltip, "ui-tooltip", "ui-widget ui-widget-content" );
      -
      -		tooltip.appendTo( this._appendTo( element ) );
      -
      -		return this.tooltips[ id ] = {
      -			element: element,
      -			tooltip: tooltip
      -		};
      -	},
      -
      -	_find: function( target ) {
      -		var id = target.data( "ui-tooltip-id" );
      -		return id ? this.tooltips[ id ] : null;
      -	},
      -
      -	_removeTooltip: function( tooltip ) {
      -		tooltip.remove();
      -		delete this.tooltips[ tooltip.attr( "id" ) ];
      -	},
      -
      -	_appendTo: function( target ) {
      -		var element = target.closest( ".ui-front, dialog" );
      -
      -		if ( !element.length ) {
      -			element = this.document[ 0 ].body;
      -		}
      -
      -		return element;
      -	},
      -
      -	_destroy: function() {
      -		var that = this;
      -
      -		// Close open tooltips
      -		$.each( this.tooltips, function( id, tooltipData ) {
      -
      -			// Delegate to close method to handle common cleanup
      -			var event = $.Event( "blur" ),
      -				element = tooltipData.element;
      -			event.target = event.currentTarget = element[ 0 ];
      -			that.close( event, true );
      -
      -			// Remove immediately; destroying an open tooltip doesn't use the
      -			// hide animation
      -			$( "#" + id ).remove();
      -
      -			// Restore the title
      -			if ( element.data( "ui-tooltip-title" ) ) {
      -
      -				// If the title attribute has changed since open(), don't restore
      -				if ( !element.attr( "title" ) ) {
      -					element.attr( "title", element.data( "ui-tooltip-title" ) );
      -				}
      -				element.removeData( "ui-tooltip-title" );
      -			}
      -		} );
      -		this.liveRegion.remove();
      -	}
      -} );
      -
      -// DEPRECATED
      -// TODO: Switch return back to widget declaration at top of file when this is removed
      -if ( $.uiBackCompat !== false ) {
      -
      -	// Backcompat for tooltipClass option
      -	$.widget( "ui.tooltip", $.ui.tooltip, {
      -		options: {
      -			tooltipClass: null
      -		},
      -		_tooltip: function() {
      -			var tooltipData = this._superApply( arguments );
      -			if ( this.options.tooltipClass ) {
      -				tooltipData.tooltip.addClass( this.options.tooltipClass );
      -			}
      -			return tooltipData;
      -		}
      -	} );
      -}
      -
      -return $.ui.tooltip;
      -
      -} ) );
      diff --git a/bower_components/jquery.iframe-transport/.bower.json b/bower_components/jquery.iframe-transport/.bower.json
      deleted file mode 100644
      index 7a3c177219..0000000000
      --- a/bower_components/jquery.iframe-transport/.bower.json
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -{
      -  "name": "jquery.iframe-transport",
      -  "version": "1.0.1",
      -  "homepage": "https://cmlenz.github.io/jquery-iframe-transport/",
      -  "authors": [
      -    "Christopher Lenz <cmlenz@gmail.com>"
      -  ],
      -  "description": "jQuery plugin that implements an iframe transport so that ajax calls support the uploading of files using standard HTML file input fields",
      -  "main": "jquery.iframe-transport.js",
      -  "dependencies": {
      -    "jquery": ">=1.6"
      -  },
      -  "keywords": [
      -    "jquery",
      -    "iframe",
      -    "upload",
      -    "file",
      -    "form",
      -    "ajax"
      -  ],
      -  "license": "MIT",
      -  "ignore": [
      -    "**/.*",
      -    "node_modules",
      -    "bower_components",
      -    "Gruntfile.js"
      -  ],
      -  "_release": "1.0.1",
      -  "_resolution": {
      -    "type": "version",
      -    "tag": "v1.0.1",
      -    "commit": "f9a5446f5f8a9d7bc4659ea9c49349b1f585316b"
      -  },
      -  "_source": "https://github.com/cmlenz/jquery-iframe-transport.git",
      -  "_target": "^1.0.1",
      -  "_originalSource": "jquery.iframe-transport",
      -  "_direct": true
      -}
      \ No newline at end of file
      diff --git a/bower_components/jquery.iframe-transport/LICENSE b/bower_components/jquery.iframe-transport/LICENSE
      deleted file mode 100644
      index 4fb2fda86c..0000000000
      --- a/bower_components/jquery.iframe-transport/LICENSE
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -The MIT License
      -
      -Copyright (c) 2014 Christopher Lenz
      -
      -Permission is hereby granted, free of charge, to any person obtaining a copy
      -of this software and associated documentation files (the "Software"), to deal
      -in the Software without restriction, including without limitation the rights
      -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      -copies of the Software, and to permit persons to whom the Software is
      -furnished to do so, subject to the following conditions:
      -
      -The above copyright notice and this permission notice shall be included in
      -all copies or substantial portions of the Software.
      -
      -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
      -THE SOFTWARE.
      diff --git a/bower_components/jquery.iframe-transport/README.md b/bower_components/jquery.iframe-transport/README.md
      deleted file mode 100644
      index 786ddcc44d..0000000000
      --- a/bower_components/jquery.iframe-transport/README.md
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -# jQuery Iframe Transport
      -
      -jQuery Ajax transport plugin for iframe-based file uploads. For documentation, see:
      -
      -[https://cmlenz.github.io/jquery-iframe-transport/](https://cmlenz.github.io/jquery-iframe-transport/)
      -
      -# Demo
      -
      -To run the included simple demo application, you'll need [node.js](http://nodejs.org/).
      -
      -In the `jquery-iframe-transport` source directory, run:
      -
      -    $ npm install
      -
      -That should download and install all dependencies required for the build, including running the demo app. Then simply run:
      -
      -    $ grunt connect
      -
      -Point your browser to http://localhost:3000/ and you should be able to play with the demo.
      diff --git a/bower_components/jquery.iframe-transport/bower.json b/bower_components/jquery.iframe-transport/bower.json
      deleted file mode 100644
      index 30e3a22298..0000000000
      --- a/bower_components/jquery.iframe-transport/bower.json
      +++ /dev/null
      @@ -1,28 +0,0 @@
      -{
      -  "name": "jquery.iframe-transport",
      -  "version": "1.0.0",
      -  "homepage": "https://cmlenz.github.io/jquery-iframe-transport/",
      -  "authors": [
      -    "Christopher Lenz <cmlenz@gmail.com>"
      -  ],
      -  "description": "jQuery plugin that implements an iframe transport so that ajax calls support the uploading of files using standard HTML file input fields",
      -  "main": "jquery.iframe-transport.js",
      -  "dependencies": {
      -    "jquery": ">=1.6"
      -  },
      -  "keywords": [
      -    "jquery",
      -    "iframe",
      -    "upload",
      -    "file",
      -    "form",
      -    "ajax"
      -  ],
      -  "license": "MIT",
      -  "ignore": [
      -    "**/.*",
      -    "node_modules",
      -    "bower_components",
      -    "Gruntfile.js"
      -  ]
      -}
      diff --git a/bower_components/jquery.iframe-transport/demo/client.js b/bower_components/jquery.iframe-transport/demo/client.js
      deleted file mode 100644
      index 6e1da38c54..0000000000
      --- a/bower_components/jquery.iframe-transport/demo/client.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -(function($) {
      -  'use strict';
      -
      -  $('form').on('click', 'button[type=submit]', function(evt) {
      -    var form = $(this.form).addClass('loading');
      -    evt.preventDefault();
      -    $.ajax(form.prop('action'), {
      -      data: form.find('textarea').serializeArray(),
      -      dataType: 'json',
      -      files: form.find(':file'),
      -      iframe: true,
      -      processData: false
      -    }).always(function() {
      -      form.removeClass('loading');
      -    }).done(function(data) {
      -      console.log(data);
      -      $.each(data.files, function(idx, file) {
      -        $('<li class="list-group-item">' +
      -          '<h4 class="list-group-item-heading"></h4>' +
      -          '<p class="list-group-item-text"><span class="size"></span>, <span class="mime"></span></p>' +
      -          '<blockquote class="list-group-item-text comment"></blockquote></li>')
      -          .find('h4').text(file.originalFilename).end()
      -          .find('.size').text(formatSize(file.size)).end()
      -          .find('.mime').text(file.headers['content-type']).end()
      -          .find('.comment').text(data.comment || '').end()
      -          .appendTo('#filelist');
      -      });
      -      form.find(':file').val('');
      -    });
      -  });
      -
      -  function formatSize(size) {
      -    var units = ['B', 'KB', 'MB', 'GB'],
      -        idx = 0;
      -    if (!size) {
      -      return '0 bytes';
      -    }
      -    while (size >= 1024) {
      -      size /= 1024;
      -      idx++;
      -    }
      -    return size.toFixed(0) + ' ' + units[idx];
      -  }
      -
      -})(jQuery);
      diff --git a/bower_components/jquery.iframe-transport/demo/index.html b/bower_components/jquery.iframe-transport/demo/index.html
      deleted file mode 100644
      index bc1232392c..0000000000
      --- a/bower_components/jquery.iframe-transport/demo/index.html
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -  <head>
      -    <title>jQuery Iframe Transport Demo</title>
      -    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
      -    <style>
      -      form.loading { background: url(spinner.gif) 100% 0 no-repeat; }
      -    </style>
      -  </head>
      -  <body>
      -    <div class="container">
      -      <div class="page-header">
      -        <h1>jQuery Iframe Transport Demo</h1>
      -      </div>
      -      <p class="help-block">
      -        This is a simple example showing a file upload field that gets
      -        transmitted asynchronously using the iframe transport. Just choose one or
      -        more files, and they will be uploaded to the server (but not stored). After
      -        one upload has completed, you can upload more files.
      -      </p>
      -      <p class="help-block">
      -        Please note that this example needs to run via
      -        <code>grunt connect</code>, as uploads require a server-side
      -        component to work properly.
      -      </p>
      -      <div class="panel panel-default">
      -        <div class="panel-body">
      -          <form role="form" id="upload" action="/upload" method="post" enctype="multipart/form-data">
      -            <div class="form-group">
      -              <label for="file-field">Select files to upload:</label>
      -              <input type="file" id="file-field" name="file" multiple>
      -            </div>
      -            <div class="form-group">
      -              <label for="comment-field">Comment:</label>
      -              <textarea name="comment" id="comment-field" class="form-control"
      -                placeholder="Enter comment" rows="2" cols="50"></textarea>
      -            </div>
      -            <div class="form-group">
      -              <button type="submit" class="btn btn-default btn-submit">Upload</button>
      -            </div>
      -          </form>
      -        </div>
      -      </div>
      -      <ul id="filelist" class="list-group"></ul>
      -    </div>
      -  </body>
      -  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.js"></script>
      -  <script src="jquery.iframe-transport.js"></script>
      -  <script src="client.js"></script>
      -</html>
      diff --git a/bower_components/jquery.iframe-transport/demo/layout.css b/bower_components/jquery.iframe-transport/demo/layout.css
      deleted file mode 100644
      index 34dc588ae7..0000000000
      --- a/bower_components/jquery.iframe-transport/demo/layout.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -form.loading { background: url(spinner.gif) 100% 0 no-repeat; }
      diff --git a/bower_components/jquery.iframe-transport/demo/spinner.gif b/bower_components/jquery.iframe-transport/demo/spinner.gif
      deleted file mode 100644
      index 5b33f7e54f4e55b6b8774d86d96895db9af044b4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1849
      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
      EAHN$8j{pDw
      
      diff --git a/bower_components/jquery.iframe-transport/jquery.iframe-transport.js b/bower_components/jquery.iframe-transport/jquery.iframe-transport.js
      deleted file mode 100644
      index 289c5cd486..0000000000
      --- a/bower_components/jquery.iframe-transport/jquery.iframe-transport.js
      +++ /dev/null
      @@ -1,247 +0,0 @@
      -// This [jQuery](https://jquery.com/) plugin implements an `<iframe>`
      -// [transport](https://api.jquery.com/jQuery.ajax/#extending-ajax) so that
      -// `$.ajax()` calls support the uploading of files using standard HTML file
      -// input fields. This is done by switching the exchange from `XMLHttpRequest`
      -// to a hidden `iframe` element containing a form that is submitted.
      -
      -// The [source for the plugin](https://github.com/cmlenz/jquery-iframe-transport)
      -// is available on [Github](https://github.com/) and licensed under the [MIT
      -// license](https://github.com/cmlenz/jquery-iframe-transport/blob/master/LICENSE).
      -
      -// ## Usage
      -
      -// To use this plugin, you simply add an `iframe` option with the value `true`
      -// to the Ajax settings an `$.ajax()` call, and specify the file fields to
      -// include in the submssion using the `files` option, which can be a selector,
      -// jQuery object, or a list of DOM elements containing one or more
      -// `<input type="file">` elements:
      -
      -//     $("#myform").submit(function() {
      -//         $.ajax(this.action, {
      -//             files: $(":file", this),
      -//             iframe: true
      -//         }).complete(function(data) {
      -//             console.log(data);
      -//         });
      -//     });
      -
      -// The plugin will construct hidden `<iframe>` and `<form>` elements, add the
      -// file field(s) to that form, submit the form, and process the response.
      -
      -// If you want to include other form fields in the form submission, include
      -// them in the `data` option, and set the `processData` option to `false`:
      -
      -//     $("#myform").submit(function() {
      -//         $.ajax(this.action, {
      -//             data: $(":text", this).serializeArray(),
      -//             files: $(":file", this),
      -//             iframe: true,
      -//             processData: false
      -//         }).complete(function(data) {
      -//             console.log(data);
      -//         });
      -//     });
      -
      -// ### Response Data Types
      -
      -// As the transport does not have access to the HTTP headers of the server
      -// response, it is not as simple to make use of the automatic content type
      -// detection provided by jQuery as with regular XHR. If you can't set the
      -// expected response data type (for example because it may vary depending on
      -// the outcome of processing by the server), you will need to employ a
      -// workaround on the server side: Send back an HTML document containing just a
      -// `<textarea>` element with a `data-type` attribute that specifies the MIME
      -// type, and put the actual payload in the textarea:
      -
      -//     <textarea data-type="application/json">
      -//       {"ok": true, "message": "Thanks so much"}
      -//     </textarea>
      -
      -// The iframe transport plugin will detect this and pass the value of the
      -// `data-type` attribute on to jQuery as if it was the "Content-Type" response
      -// header, thereby enabling the same kind of conversions that jQuery applies
      -// to regular responses. For the example above you should get a Javascript
      -// object as the `data` parameter of the `complete` callback, with the
      -// properties `ok: true` and `message: "Thanks so much"`.
      -
      -// ### Handling Server Errors
      -
      -// Another problem with using an `iframe` for file uploads is that it is
      -// impossible for the javascript code to determine the HTTP status code of the
      -// servers response. Effectively, all of the calls you make will look like they
      -// are getting successful responses, and thus invoke the `done()` or
      -// `complete()` callbacks. You can only communicate problems using the content
      -// of the response payload. For example, consider using a JSON response such as
      -// the following to indicate a problem with an uploaded file:
      -
      -//     <textarea data-type="application/json">
      -//       {"ok": false, "message": "Please only upload reasonably sized files."}
      -//     </textarea>
      -
      -// ### Compatibility
      -
      -// This plugin has primarily been tested on Safari 5 (or later), Firefox 4 (or
      -// later), and Internet Explorer (all the way back to version 6). While I
      -// haven't found any issues with it so far, I'm fairly sure it still doesn't
      -// work around all the quirks in all different browsers. But the code is still
      -// pretty simple overall, so you should be able to fix it and contribute a
      -// patch :)
      -
      -// ## Annotated Source
      -
      -(function($, undefined) {
      -  "use strict";
      -
      -  // Register a prefilter that checks whether the `iframe` option is set, and
      -  // switches to the "iframe" data type if it is `true`.
      -  $.ajaxPrefilter(function(options, origOptions, jqXHR) {
      -    if (options.iframe) {
      -      options.originalURL = options.url;
      -      return "iframe";
      -    }
      -  });
      -
      -  // Register a transport for the "iframe" data type. It will only activate
      -  // when the "files" option has been set to a non-empty list of enabled file
      -  // inputs.
      -  $.ajaxTransport("iframe", function(options, origOptions, jqXHR) {
      -    var form = null,
      -        iframe = null,
      -        name = "iframe-" + $.now(),
      -        files = $(options.files).filter(":file:enabled"),
      -        markers = null,
      -        accepts = null;
      -
      -    // This function gets called after a successful submission or an abortion
      -    // and should revert all changes made to the page to enable the
      -    // submission via this transport.
      -    function cleanUp() {
      -      files.each(function(i, file) {
      -        var $file = $(file);
      -        $file.data("clone").replaceWith($file);
      -      });
      -      form.remove();
      -      iframe.one("load", function() { iframe.remove(); });
      -      iframe.attr("src", "about:blank");
      -    }
      -
      -    // Remove "iframe" from the data types list so that further processing is
      -    // based on the content type returned by the server, without attempting an
      -    // (unsupported) conversion from "iframe" to the actual type.
      -    options.dataTypes.shift();
      -
      -    // Use the data from the original AJAX options, as it doesn't seem to be 
      -    // copied over since jQuery 1.7.
      -    // See https://github.com/cmlenz/jquery-iframe-transport/issues/6
      -    options.data = origOptions.data;
      -
      -    if (files.length) {
      -      form = $("<form enctype='multipart/form-data' method='post'></form>").
      -        hide().attr({action: options.originalURL, target: name});
      -
      -      // If there is any additional data specified via the `data` option,
      -      // we add it as hidden fields to the form. This (currently) requires
      -      // the `processData` option to be set to false so that the data doesn't
      -      // get serialized to a string.
      -      if (typeof(options.data) === "string" && options.data.length > 0) {
      -        $.error("data must not be serialized");
      -      }
      -      $.each(options.data || {}, function(name, value) {
      -        if ($.isPlainObject(value)) {
      -          name = value.name;
      -          value = value.value;
      -        }
      -        $("<input type='hidden' />").attr({name:  name, value: value}).
      -          appendTo(form);
      -      });
      -
      -      // Add a hidden `X-Requested-With` field with the value `IFrame` to the
      -      // field, to help server-side code to determine that the upload happened
      -      // through this transport.
      -      $("<input type='hidden' value='IFrame' name='X-Requested-With' />").
      -        appendTo(form);
      -
      -      // Borrowed straight from the JQuery source.
      -      // Provides a way of specifying the accepted data type similar to the
      -      // HTTP "Accept" header
      -      if (options.dataTypes[0] && options.accepts[options.dataTypes[0]]) {
      -        accepts = options.accepts[options.dataTypes[0]] +
      -                  (options.dataTypes[0] !== "*" ? ", */*; q=0.01" : "");
      -      } else {
      -        accepts = options.accepts["*"];
      -      }
      -      $("<input type='hidden' name='X-HTTP-Accept'>").
      -        attr("value", accepts).appendTo(form);
      -
      -      // Move the file fields into the hidden form, but first remember their
      -      // original locations in the document by replacing them with disabled
      -      // clones. This should also avoid introducing unwanted changes to the
      -      // page layout during submission.
      -      markers = files.after(function(idx) {
      -        var $this = $(this),
      -            $clone = $this.clone().prop("disabled", true);
      -        $this.data("clone", $clone);
      -        return $clone;
      -      }).next();
      -      files.appendTo(form);
      -
      -      return {
      -
      -        // The `send` function is called by jQuery when the request should be
      -        // sent.
      -        send: function(headers, completeCallback) {
      -          iframe = $("<iframe src='about:blank' name='" + name +
      -            "' id='" + name + "' style='display:none'></iframe>");
      -
      -          // The first load event gets fired after the iframe has been injected
      -          // into the DOM, and is used to prepare the actual submission.
      -          iframe.one("load", function() {
      -
      -            // The second load event gets fired when the response to the form
      -            // submission is received. The implementation detects whether the
      -            // actual payload is embedded in a `<textarea>` element, and
      -            // prepares the required conversions to be made in that case.
      -            iframe.one("load", function() {
      -              var doc = this.contentWindow ? this.contentWindow.document :
      -                (this.contentDocument ? this.contentDocument : this.document),
      -                root = doc.documentElement ? doc.documentElement : doc.body,
      -                textarea = root.getElementsByTagName("textarea")[0],
      -                type = textarea && textarea.getAttribute("data-type") || null,
      -                status = textarea && textarea.getAttribute("data-status") || 200,
      -                statusText = textarea && textarea.getAttribute("data-statusText") || "OK",
      -                content = {
      -                  html: root.innerHTML,
      -                  text: type ?
      -                    textarea.value :
      -                    root ? (root.textContent || root.innerText) : null
      -                };
      -              cleanUp();
      -              completeCallback(status, statusText, content, type ?
      -                ("Content-Type: " + type) :
      -                null);
      -            });
      -
      -            // Now that the load handler has been set up, submit the form.
      -            form[0].submit();
      -          });
      -
      -          // After everything has been set up correctly, the form and iframe
      -          // get injected into the DOM so that the submission can be
      -          // initiated.
      -          $("body").append(form, iframe);
      -        },
      -
      -        // The `abort` function is called by jQuery when the request should be
      -        // aborted.
      -        abort: function() {
      -          if (iframe !== null) {
      -            iframe.unbind("load").attr("src", "about:blank");
      -            cleanUp();
      -          }
      -        }
      -
      -      };
      -    }
      -  });
      -
      -})(jQuery);
      diff --git a/bower_components/jquery.iframe-transport/package.json b/bower_components/jquery.iframe-transport/package.json
      deleted file mode 100644
      index 31fb669437..0000000000
      --- a/bower_components/jquery.iframe-transport/package.json
      +++ /dev/null
      @@ -1,28 +0,0 @@
      -{
      -  "name": "jquery.iframe-transport",
      -  "version": "1.0.0",
      -  "description": "jQuery plugin that implements an iframe transport so that ajax calls support the uploading of files using standard HTML file input fields",
      -  "main": "jquery.iframe-transport.js",
      -  "directories": {
      -    "demo": "demo"
      -  },
      -  "repository": {
      -    "type": "git",
      -    "url": "http://github.com/cmlenz/jquery-iframe-transport"
      -  },
      -  "author": "Christopher Lenz",
      -  "license": "MIT",
      -  "readmeFilename": "README.md",
      -  "devDependencies": {
      -    "grunt": "~0.4.1",
      -    "grunt-contrib-clean": "~0.5.0",
      -    "grunt-contrib-connect": "~0.7.1",
      -    "grunt-contrib-copy": "~0.5.0",
      -    "grunt-contrib-jshint": "~0.9.2",
      -    "grunt-contrib-uglify": "~0.4.0",
      -    "grunt-docco": "~0.3.3",
      -    "grunt-gh-pages": "~0.9.1",
      -    "grunt-shell": "~0.6.4",
      -    "multiparty": "~3.2.4"
      -  }
      -}
      diff --git a/bower_components/jquery/.bower.json b/bower_components/jquery/.bower.json
      deleted file mode 100644
      index 878da023e1..0000000000
      --- a/bower_components/jquery/.bower.json
      +++ /dev/null
      @@ -1,25 +0,0 @@
      -{
      -  "name": "jquery",
      -  "main": "dist/jquery.js",
      -  "license": "MIT",
      -  "ignore": [
      -    "package.json"
      -  ],
      -  "keywords": [
      -    "jquery",
      -    "javascript",
      -    "browser",
      -    "library"
      -  ],
      -  "homepage": "https://github.com/jquery/jquery-dist",
      -  "version": "3.1.1",
      -  "_release": "3.1.1",
      -  "_resolution": {
      -    "type": "version",
      -    "tag": "3.1.1",
      -    "commit": "1b30f3ad466ebf2714d47eda34dbd7fdf6849fe3"
      -  },
      -  "_source": "https://github.com/jquery/jquery-dist.git",
      -  "_target": ">=1.6",
      -  "_originalSource": "jquery"
      -}
      \ No newline at end of file
      diff --git a/bower_components/jquery/AUTHORS.txt b/bower_components/jquery/AUTHORS.txt
      deleted file mode 100644
      index 334363deaa..0000000000
      --- a/bower_components/jquery/AUTHORS.txt
      +++ /dev/null
      @@ -1,295 +0,0 @@
      -Authors ordered by first contribution.
      -
      -John Resig <jeresig@gmail.com>
      -Gilles van den Hoven <gilles0181@gmail.com>
      -Michael Geary <mike@geary.com>
      -Stefan Petre <stefan.petre@gmail.com>
      -Yehuda Katz <wycats@gmail.com>
      -Corey Jewett <cj@syntheticplayground.com>
      -Klaus Hartl <klaus.hartl@gmail.com>
      -Franck Marcia <franck.marcia@gmail.com>
      -Jörn Zaefferer <joern.zaefferer@gmail.com>
      -Paul Bakaus <paul.bakaus@gmail.com>
      -Brandon Aaron <brandon.aaron@gmail.com>
      -Mike Alsup <malsup@gmail.com>
      -Dave Methvin <dave.methvin@gmail.com>
      -Ed Engelhardt <edengelhardt@gmail.com>
      -Sean Catchpole <littlecooldude@gmail.com>
      -Paul Mclanahan <pmclanahan@gmail.com>
      -David Serduke <davidserduke@gmail.com>
      -Richard D. Worth <rdworth@gmail.com>
      -Scott González <scott.gonzalez@gmail.com>
      -Ariel Flesler <aflesler@gmail.com>
      -Jon Evans <jon@springyweb.com>
      -TJ Holowaychuk <tj@vision-media.ca>
      -Michael Bensoussan <mickey@seesmic.com>
      -Robert Katić <robert.katic@gmail.com>
      -Louis-Rémi Babé <lrbabe@gmail.com>
      -Earle Castledine <mrspeaker@gmail.com>
      -Damian Janowski <damian.janowski@gmail.com>
      -Rich Dougherty <rich@rd.gen.nz>
      -Kim Dalsgaard <kim@kimdalsgaard.com>
      -Andrea Giammarchi <andrea.giammarchi@gmail.com>
      -Mark Gibson <jollytoad@gmail.com>
      -Karl Swedberg <kswedberg@gmail.com>
      -Justin Meyer <justinbmeyer@gmail.com>
      -Ben Alman <cowboy@rj3.net>
      -James Padolsey <cla@padolsey.net>
      -David Petersen <public@petersendidit.com>
      -Batiste Bieler <batiste.bieler@gmail.com>
      -Alexander Farkas <info@corrupt-system.de>
      -Rick Waldron <waldron.rick@gmail.com>
      -Filipe Fortes <filipe@fortes.com>
      -Neeraj Singh <neerajdotname@gmail.com>
      -Paul Irish <paul.irish@gmail.com>
      -Iraê Carvalho <irae@irae.pro.br>
      -Matt Curry <matt@pseudocoder.com>
      -Michael Monteleone <michael@michaelmonteleone.net>
      -Noah Sloan <noah.sloan@gmail.com>
      -Tom Viner <github@viner.tv>
      -Douglas Neiner <doug@dougneiner.com>
      -Adam J. Sontag <ajpiano@ajpiano.com>
      -Dave Reed <dareed@microsoft.com>
      -Ralph Whitbeck <ralph.whitbeck@gmail.com>
      -Carl Fürstenberg <azatoth@gmail.com>
      -Jacob Wright <jacwright@gmail.com>
      -J. Ryan Stinnett <jryans@gmail.com>
      -unknown <Igen005@.upcorp.ad.uprr.com>
      -temp01 <temp01irc@gmail.com>
      -Heungsub Lee <h@subl.ee>
      -Colin Snover <github.com@zetafleet.com>
      -Ryan W Tenney <ryan@10e.us>
      -Pinhook <contact@pinhooklabs.com>
      -Ron Otten <r.j.g.otten@gmail.com>
      -Jephte Clain <Jephte.Clain@univ-reunion.fr>
      -Anton Matzneller <obhvsbypqghgc@gmail.com>
      -Alex Sexton <AlexSexton@gmail.com>
      -Dan Heberden <danheberden@gmail.com>
      -Henri Wiechers <hwiechers@gmail.com>
      -Russell Holbrook <russell.holbrook@patch.com>
      -Julian Aubourg <aubourg.julian@gmail.com>
      -Gianni Alessandro Chiappetta <gianni@runlevel6.org>
      -Scott Jehl <scottjehl@gmail.com>
      -James Burke <jrburke@gmail.com>
      -Jonas Pfenniger <jonas@pfenniger.name>
      -Xavi Ramirez <xavi.rmz@gmail.com>
      -Jared Grippe <jared@deadlyicon.com>
      -Sylvester Keil <sylvester@keil.or.at>
      -Brandon Sterne <bsterne@mozilla.com>
      -Mathias Bynens <mathias@qiwi.be>
      -Timmy Willison <4timmywil@gmail.com>
      -Corey Frang <gnarf37@gmail.com>
      -Digitalxero <digitalxero>
      -Anton Kovalyov <anton@kovalyov.net>
      -David Murdoch <david@davidmurdoch.com>
      -Josh Varner <josh.varner@gmail.com>
      -Charles McNulty <cmcnulty@kznf.com>
      -Jordan Boesch <jboesch26@gmail.com>
      -Jess Thrysoee <jess@thrysoee.dk>
      -Michael Murray <m@murz.net>
      -Lee Carpenter <elcarpie@gmail.com>
      -Alexis Abril <me@alexisabril.com>
      -Rob Morgan <robbym@gmail.com>
      -John Firebaugh <john_firebaugh@bigfix.com>
      -Sam Bisbee <sam@sbisbee.com>
      -Gilmore Davidson <gilmoreorless@gmail.com>
      -Brian Brennan <me@brianlovesthings.com>
      -Xavier Montillet <xavierm02.net@gmail.com>
      -Daniel Pihlstrom <sciolist.se@gmail.com>
      -Sahab Yazdani <sahab.yazdani+github@gmail.com>
      -avaly <github-com@agachi.name>
      -Scott Hughes <hi@scott-hughes.me>
      -Mike Sherov <mike.sherov@gmail.com>
      -Greg Hazel <ghazel@gmail.com>
      -Schalk Neethling <schalk@ossreleasefeed.com>
      -Denis Knauf <Denis.Knauf@gmail.com>
      -Timo Tijhof <krinklemail@gmail.com>
      -Steen Nielsen <swinedk@gmail.com>
      -Anton Ryzhov <anton@ryzhov.me>
      -Shi Chuan <shichuanr@gmail.com>
      -Berker Peksag <berker.peksag@gmail.com>
      -Toby Brain <tobyb@freshview.com>
      -Matt Mueller <mattmuelle@gmail.com>
      -Justin <drakefjustin@gmail.com>
      -Daniel Herman <daniel.c.herman@gmail.com>
      -Oleg Gaidarenko <markelog@gmail.com>
      -Richard Gibson <richard.gibson@gmail.com>
      -Rafaël Blais Masson <rafbmasson@gmail.com>
      -cmc3cn <59194618@qq.com>
      -Joe Presbrey <presbrey@gmail.com>
      -Sindre Sorhus <sindresorhus@gmail.com>
      -Arne de Bree <arne@bukkie.nl>
      -Vladislav Zarakovsky <vlad.zar@gmail.com>
      -Andrew E Monat <amonat@gmail.com>
      -Oskari <admin@o-programs.com>
      -Joao Henrique de Andrade Bruni <joaohbruni@yahoo.com.br>
      -tsinha <tsinha@Anthonys-MacBook-Pro.local>
      -Matt Farmer <matt@frmr.me>
      -Trey Hunner <treyhunner@gmail.com>
      -Jason Moon <jmoon@socialcast.com>
      -Jeffery To <jeffery.to@gmail.com>
      -Kris Borchers <kris.borchers@gmail.com>
      -Vladimir Zhuravlev <private.face@gmail.com>
      -Jacob Thornton <jacobthornton@gmail.com>
      -Chad Killingsworth <chadkillingsworth@missouristate.edu>
      -Nowres Rafid <nowres.rafed@gmail.com>
      -David Benjamin <davidben@mit.edu>
      -Uri Gilad <antishok@gmail.com>
      -Chris Faulkner <thefaulkner@gmail.com>
      -Elijah Manor <elijah.manor@gmail.com>
      -Daniel Chatfield <chatfielddaniel@gmail.com>
      -Nikita Govorov <nikita.govorov@gmail.com>
      -Wesley Walser <waw325@gmail.com>
      -Mike Pennisi <mike@mikepennisi.com>
      -Markus Staab <markus.staab@redaxo.de>
      -Dave Riddle <david@joyvuu.com>
      -Callum Macrae <callum@lynxphp.com>
      -Benjamin Truyman <bentruyman@gmail.com>
      -James Huston <james@jameshuston.net>
      -Erick Ruiz de Chávez <erickrdch@gmail.com>
      -David Bonner <dbonner@cogolabs.com>
      -Akintayo Akinwunmi <aakinwunmi@judge.com>
      -MORGAN <morgan@morgangraphics.com>
      -Ismail Khair <ismail.khair@gmail.com>
      -Carl Danley <carldanley@gmail.com>
      -Mike Petrovich <michael.c.petrovich@gmail.com>
      -Greg Lavallee <greglavallee@wapolabs.com>
      -Daniel Gálvez <dgalvez@editablething.com>
      -Sai Lung Wong <sai.wong@huffingtonpost.com>
      -Tom H Fuertes <TomFuertes@gmail.com>
      -Roland Eckl <eckl.roland@googlemail.com>
      -Jay Merrifield <fracmak@gmail.com>
      -Allen J Schmidt Jr <cobrasoft@gmail.com>
      -Jonathan Sampson <jjdsampson@gmail.com>
      -Marcel Greter <marcel.greter@ocbnet.ch>
      -Matthias Jäggli <matthias.jaeggli@gmail.com>
      -David Fox <dfoxinator@gmail.com>
      -Yiming He <yiminghe@gmail.com>
      -Devin Cooper <cooper.semantics@gmail.com>
      -Paul Ramos <paul.b.ramos@gmail.com>
      -Rod Vagg <rod@vagg.org>
      -Bennett Sorbo <bsorbo@gmail.com>
      -Sebastian Burkhard <sebi.burkhard@gmail.com>
      -Zachary Adam Kaplan <razic@viralkitty.com>
      -nanto_vi <nanto@moon.email.ne.jp>
      -nanto <nanto@moon.email.ne.jp>
      -Danil Somsikov <danilasomsikov@gmail.com>
      -Ryunosuke SATO <tricknotes.rs@gmail.com>
      -Jean Boussier <jean.boussier@gmail.com>
      -Adam Coulombe <me@adam.co>
      -Andrew Plummer <plummer.andrew@gmail.com>
      -Mark Raddatz <mraddatz@gmail.com>
      -Isaac Z. Schlueter <i@izs.me>
      -Karl Sieburg <ksieburg@yahoo.com>
      -Pascal Borreli <pascal@borreli.com>
      -Nguyen Phuc Lam <ruado1987@gmail.com>
      -Dmitry Gusev <dmitry.gusev@gmail.com>
      -Michał Gołębiowski <m.goleb@gmail.com>
      -Li Xudong <istonelee@gmail.com>
      -Steven Benner <admin@stevenbenner.com>
      -Tom H Fuertes <tomfuertes@gmail.com>
      -Renato Oliveira dos Santos <ros3@cin.ufpe.br>
      -ros3cin <ros3@cin.ufpe.br>
      -Jason Bedard <jason+jquery@jbedard.ca>
      -Kyle Robinson Young <kyle@dontkry.com>
      -Chris Talkington <chris@talkingtontech.com>
      -Eddie Monge <eddie@eddiemonge.com>
      -Terry Jones <terry@jon.es>
      -Jason Merino <jasonmerino@gmail.com>
      -Jeremy Dunck <jdunck@gmail.com>
      -Chris Price <price.c@gmail.com>
      -Guy Bedford <guybedford@gmail.com>
      -Amey Sakhadeo <me@ameyms.com>
      -Mike Sidorov <mikes.ekb@gmail.com>
      -Anthony Ryan <anthonyryan1@gmail.com>
      -Dominik D. Geyer <dominik.geyer@gmail.com>
      -George Kats <katsgeorgeek@gmail.com>
      -Lihan Li <frankieteardrop@gmail.com>
      -Ronny Springer <springer.ronny@gmail.com>
      -Chris Antaki <ChrisAntaki@gmail.com>
      -Marian Sollmann <marian.sollmann@cargomedia.ch>
      -njhamann <njhamann@gmail.com>
      -Ilya Kantor <iliakan@gmail.com>
      -David Hong <d.hong@me.com>
      -John Paul <john@johnkpaul.com>
      -Jakob Stoeck <jakob@pokermania.de>
      -Christopher Jones <chris@cjqed.com>
      -Forbes Lindesay <forbes@lindesay.co.uk>
      -S. Andrew Sheppard <andrew@wq.io>
      -Leonardo Balter <leonardo.balter@gmail.com>
      -Roman Reiß <me@silverwind.io>
      -Benjy Cui <benjytrys@gmail.com>
      -Rodrigo Rosenfeld Rosas <rr.rosas@gmail.com>
      -John Hoven <hovenj@gmail.com>
      -Philip Jägenstedt <philip@foolip.org>
      -Christian Kosmowski <ksmwsk@gmail.com>
      -Liang Peng <poppinlp@gmail.com>
      -TJ VanToll <tj.vantoll@gmail.com>
      -Senya Pugach <upisfree@outlook.com>
      -Aurelio De Rosa <aurelioderosa@gmail.com>
      -Nazar Mokrynskyi <nazar@mokrynskyi.com>
      -Amit Merchant <bullredeyes@gmail.com>
      -Jason Bedard <jason+github@jbedard.ca>
      -Arthur Verschaeve <contact@arthurverschaeve.be>
      -Dan Hart <danhart@notonthehighstreet.com>
      -Bin Xin <rhyzix@gmail.com>
      -David Corbacho <davidcorbacho@gmail.com>
      -Veaceslav Grimalschi <grimalschi@yandex.ru>
      -Daniel Husar <dano.husar@gmail.com>
      -Frederic Hemberger <mail@frederic-hemberger.de>
      -Ben Toews <mastahyeti@gmail.com>
      -Aditya Raghavan <araghavan3@gmail.com>
      -Victor Homyakov <vkhomyackov@gmail.com>
      -Shivaji Varma <contact@shivajivarma.com>
      -Nicolas HENRY <icewil@gmail.com>
      -Anne-Gaelle Colom <coloma@westminster.ac.uk>
      -George Mauer <gmauer@gmail.com>
      -Leonardo Braga <leonardo.braga@gmail.com>
      -Stephen Edgar <stephen@netweb.com.au>
      -Thomas Tortorini <thomastortorini@gmail.com>
      -Winston Howes <winstonhowes@gmail.com>
      -Jon Hester <jon.d.hester@gmail.com>
      -Alexander O'Mara <me@alexomara.com>
      -Bastian Buchholz <buchholz.bastian@googlemail.com>
      -Arthur Stolyar <nekr.fabula@gmail.com>
      -Calvin Metcalf <calvin.metcalf@gmail.com>
      -Mu Haibao <mhbseal@163.com>
      -Richard McDaniel <rm0026@uah.edu>
      -Chris Rebert <github@rebertia.com>
      -Gabriel Schulhof <gabriel.schulhof@intel.com>
      -Gilad Peleg <giladp007@gmail.com>
      -Martin Naumann <martin@geekonaut.de>
      -Marek Lewandowski <m.lewandowski@cksource.com>
      -Bruno Pérel <brunoperel@gmail.com>
      -Reed Loden <reed@reedloden.com>
      -Daniel Nill <daniellnill@gmail.com>
      -Yongwoo Jeon <yongwoo.jeon@navercorp.com>
      -Sean Henderson <seanh.za@gmail.com>
      -Richard Kraaijenhagen <stdin+git@riichard.com>
      -Connor Atherton <c.liam.atherton@gmail.com>
      -Gary Ye <garysye@gmail.com>
      -Christian Grete <webmaster@christiangrete.com>
      -Liza Ramo <liza.h.ramo@gmail.com>
      -Julian Alexander Murillo <julian.alexander.murillo@gmail.com>
      -Joelle Fleurantin <joasqueeniebee@gmail.com>
      -Jae Sung Park <alberto.park@gmail.com>
      -Jun Sun <klsforever@gmail.com>
      -Josh Soref <apache@soref.com>
      -Henry Wong <henryw4k@gmail.com>
      -Jon Dufresne <jon.dufresne@gmail.com>
      -Martijn W. van der Lee <martijn@vanderlee.com>
      -Devin Wilson <dwilson6.github@gmail.com>
      -Steve Mao <maochenyan@gmail.com>
      -Zack Hall <zackhall@outlook.com>
      -Bernhard M. Wiedemann <jquerybmw@lsmod.de>
      -Todor Prikumov <tono_pr@abv.bg>
      -Jha Naman <createnaman@gmail.com>
      -William Robinet <william.robinet@conostix.com>
      -Alexander Lisianoi <all3fox@gmail.com>
      -Vitaliy Terziev <vitaliyterziev@gmail.com>
      -Joe Trumbull <trumbull.j@gmail.com>
      -Alexander K <xpyro@ya.ru>
      -Damian Senn <jquery@topaxi.codes>
      -Ralin Chimev <ralin.chimev@gmail.com>
      -Felipe Sateler <fsateler@gmail.com>
      -Christophe Tafani-Dereeper <christophetd@hotmail.fr>
      diff --git a/bower_components/jquery/LICENSE.txt b/bower_components/jquery/LICENSE.txt
      deleted file mode 100644
      index 5312a4c864..0000000000
      --- a/bower_components/jquery/LICENSE.txt
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -Copyright jQuery Foundation and other contributors, https://jquery.org/
      -
      -This software consists of voluntary contributions made by many
      -individuals. For exact contribution history, see the revision history
      -available at https://github.com/jquery/jquery
      -
      -The following license applies to all parts of this software except as
      -documented below:
      -
      -====
      -
      -Permission is hereby granted, free of charge, to any person obtaining
      -a copy of this software and associated documentation files (the
      -"Software"), to deal in the Software without restriction, including
      -without limitation the rights to use, copy, modify, merge, publish,
      -distribute, sublicense, and/or sell copies of the Software, and to
      -permit persons to whom the Software is furnished to do so, subject to
      -the following conditions:
      -
      -The above copyright notice and this permission notice shall be
      -included in all copies or substantial portions of the Software.
      -
      -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
      -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
      -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
      -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
      -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
      -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
      -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
      -
      -====
      -
      -All files located in the node_modules and external directories are
      -externally maintained libraries used by this software which have their
      -own licenses; we recommend you read them, as their terms may differ from
      -the terms above.
      diff --git a/bower_components/jquery/README.md b/bower_components/jquery/README.md
      deleted file mode 100644
      index ba3174a778..0000000000
      --- a/bower_components/jquery/README.md
      +++ /dev/null
      @@ -1,65 +0,0 @@
      -# jQuery
      -
      -> jQuery is a fast, small, and feature-rich JavaScript library.
      -
      -For information on how to get started and how to use jQuery, please see [jQuery's documentation](http://api.jquery.com/).
      -For source files and issues, please visit the [jQuery repo](https://github.com/jquery/jquery).
      -
      -## Including jQuery
      -
      -Below are some of the most common ways to include jQuery.
      -
      -### Browser
      -
      -#### Script tag
      -
      -```html
      -<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
      -```
      -
      -#### Babel
      -
      -[Babel](http://babeljs.io/) is a next generation JavaScript compiler. One of the features is the ability to use ES6/ES2015 modules now, even though browsers do not yet support this feature natively.
      -
      -```js
      -import $ from "jquery";
      -```
      -
      -#### Browserify/Webpack
      -
      -There are several ways to use [Browserify](http://browserify.org/) and [Webpack](https://webpack.github.io/). For more information on using these tools, please refer to the corresponding project's documention. In the script, including jQuery will usually look like this...
      -
      -```js
      -var $ = require("jquery");
      -```
      -
      -#### AMD (Asynchronous Module Definition)
      -
      -AMD is a module format built for the browser. For more information, we recommend [require.js' documentation](http://requirejs.org/docs/whyamd.html).
      -
      -```js
      -define(["jquery"], function($) {
      -
      -});
      -```
      -
      -### Node
      -
      -To include jQuery in [Node](nodejs.org), first install with npm.
      -
      -```sh
      -npm install jquery
      -```
      -
      -For jQuery to work in Node, a window with a document is required. Since no such window exists natively in Node, one can be mocked by tools such as [jsdom](https://github.com/tmpvar/jsdom). This can be useful for testing purposes.
      -
      -```js
      -require("jsdom").env("", function(err, window) {
      -	if (err) {
      -		console.error(err);
      -		return;
      -	}
      -
      -	var $ = require("jquery")(window);
      -});
      -```
      diff --git a/bower_components/jquery/bower.json b/bower_components/jquery/bower.json
      deleted file mode 100644
      index 95798d5ada..0000000000
      --- a/bower_components/jquery/bower.json
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -{
      -  "name": "jquery",
      -  "main": "dist/jquery.js",
      -  "license": "MIT",
      -  "ignore": [
      -    "package.json"
      -  ],
      -  "keywords": [
      -    "jquery",
      -    "javascript",
      -    "browser",
      -    "library"
      -  ]
      -}
      \ No newline at end of file
      diff --git a/bower_components/jquery/dist/core.js b/bower_components/jquery/dist/core.js
      deleted file mode 100644
      index 4c8a4ab44b..0000000000
      --- a/bower_components/jquery/dist/core.js
      +++ /dev/null
      @@ -1,482 +0,0 @@
      -/* global Symbol */
      -// Defining this global in .eslintrc.json would create a danger of using the global
      -// unguarded in another place, it seems safer to define global only for this module
      -
      -define( [
      -	"./var/arr",
      -	"./var/document",
      -	"./var/getProto",
      -	"./var/slice",
      -	"./var/concat",
      -	"./var/push",
      -	"./var/indexOf",
      -	"./var/class2type",
      -	"./var/toString",
      -	"./var/hasOwn",
      -	"./var/fnToString",
      -	"./var/ObjectFunctionString",
      -	"./var/support",
      -	"./core/DOMEval"
      -], function( arr, document, getProto, slice, concat, push, indexOf,
      -	class2type, toString, hasOwn, fnToString, ObjectFunctionString,
      -	support, DOMEval ) {
      -
      -"use strict";
      -
      -var
      -	version = "3.1.1",
      -
      -	// Define a local copy of jQuery
      -	jQuery = function( selector, context ) {
      -
      -		// The jQuery object is actually just the init constructor 'enhanced'
      -		// Need init if jQuery is called (just allow error to be thrown if not included)
      -		return new jQuery.fn.init( selector, context );
      -	},
      -
      -	// Support: Android <=4.0 only
      -	// Make sure we trim BOM and NBSP
      -	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
      -
      -	// Matches dashed string for camelizing
      -	rmsPrefix = /^-ms-/,
      -	rdashAlpha = /-([a-z])/g,
      -
      -	// Used by jQuery.camelCase as callback to replace()
      -	fcamelCase = function( all, letter ) {
      -		return letter.toUpperCase();
      -	};
      -
      -jQuery.fn = jQuery.prototype = {
      -
      -	// The current version of jQuery being used
      -	jquery: version,
      -
      -	constructor: jQuery,
      -
      -	// The default length of a jQuery object is 0
      -	length: 0,
      -
      -	toArray: function() {
      -		return slice.call( this );
      -	},
      -
      -	// Get the Nth element in the matched element set OR
      -	// Get the whole matched element set as a clean array
      -	get: function( num ) {
      -
      -		// Return all the elements in a clean array
      -		if ( num == null ) {
      -			return slice.call( this );
      -		}
      -
      -		// Return just the one element from the set
      -		return num < 0 ? this[ num + this.length ] : this[ num ];
      -	},
      -
      -	// Take an array of elements and push it onto the stack
      -	// (returning the new matched element set)
      -	pushStack: function( elems ) {
      -
      -		// Build a new jQuery matched element set
      -		var ret = jQuery.merge( this.constructor(), elems );
      -
      -		// Add the old object onto the stack (as a reference)
      -		ret.prevObject = this;
      -
      -		// Return the newly-formed element set
      -		return ret;
      -	},
      -
      -	// Execute a callback for every element in the matched set.
      -	each: function( callback ) {
      -		return jQuery.each( this, callback );
      -	},
      -
      -	map: function( callback ) {
      -		return this.pushStack( jQuery.map( this, function( elem, i ) {
      -			return callback.call( elem, i, elem );
      -		} ) );
      -	},
      -
      -	slice: function() {
      -		return this.pushStack( slice.apply( this, arguments ) );
      -	},
      -
      -	first: function() {
      -		return this.eq( 0 );
      -	},
      -
      -	last: function() {
      -		return this.eq( -1 );
      -	},
      -
      -	eq: function( i ) {
      -		var len = this.length,
      -			j = +i + ( i < 0 ? len : 0 );
      -		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
      -	},
      -
      -	end: function() {
      -		return this.prevObject || this.constructor();
      -	},
      -
      -	// For internal use only.
      -	// Behaves like an Array's method, not like a jQuery method.
      -	push: push,
      -	sort: arr.sort,
      -	splice: arr.splice
      -};
      -
      -jQuery.extend = jQuery.fn.extend = function() {
      -	var options, name, src, copy, copyIsArray, clone,
      -		target = arguments[ 0 ] || {},
      -		i = 1,
      -		length = arguments.length,
      -		deep = false;
      -
      -	// Handle a deep copy situation
      -	if ( typeof target === "boolean" ) {
      -		deep = target;
      -
      -		// Skip the boolean and the target
      -		target = arguments[ i ] || {};
      -		i++;
      -	}
      -
      -	// Handle case when target is a string or something (possible in deep copy)
      -	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
      -		target = {};
      -	}
      -
      -	// Extend jQuery itself if only one argument is passed
      -	if ( i === length ) {
      -		target = this;
      -		i--;
      -	}
      -
      -	for ( ; i < length; i++ ) {
      -
      -		// Only deal with non-null/undefined values
      -		if ( ( options = arguments[ i ] ) != null ) {
      -
      -			// Extend the base object
      -			for ( name in options ) {
      -				src = target[ name ];
      -				copy = options[ name ];
      -
      -				// Prevent never-ending loop
      -				if ( target === copy ) {
      -					continue;
      -				}
      -
      -				// Recurse if we're merging plain objects or arrays
      -				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
      -					( copyIsArray = jQuery.isArray( copy ) ) ) ) {
      -
      -					if ( copyIsArray ) {
      -						copyIsArray = false;
      -						clone = src && jQuery.isArray( src ) ? src : [];
      -
      -					} else {
      -						clone = src && jQuery.isPlainObject( src ) ? src : {};
      -					}
      -
      -					// Never move original objects, clone them
      -					target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -				// Don't bring in undefined values
      -				} else if ( copy !== undefined ) {
      -					target[ name ] = copy;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Return the modified object
      -	return target;
      -};
      -
      -jQuery.extend( {
      -
      -	// Unique for each copy of jQuery on the page
      -	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
      -
      -	// Assume jQuery is ready without the ready module
      -	isReady: true,
      -
      -	error: function( msg ) {
      -		throw new Error( msg );
      -	},
      -
      -	noop: function() {},
      -
      -	isFunction: function( obj ) {
      -		return jQuery.type( obj ) === "function";
      -	},
      -
      -	isArray: Array.isArray,
      -
      -	isWindow: function( obj ) {
      -		return obj != null && obj === obj.window;
      -	},
      -
      -	isNumeric: function( obj ) {
      -
      -		// As of jQuery 3.0, isNumeric is limited to
      -		// strings and numbers (primitives or objects)
      -		// that can be coerced to finite numbers (gh-2662)
      -		var type = jQuery.type( obj );
      -		return ( type === "number" || type === "string" ) &&
      -
      -			// parseFloat NaNs numeric-cast false positives ("")
      -			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
      -			// subtraction forces infinities to NaN
      -			!isNaN( obj - parseFloat( obj ) );
      -	},
      -
      -	isPlainObject: function( obj ) {
      -		var proto, Ctor;
      -
      -		// Detect obvious negatives
      -		// Use toString instead of jQuery.type to catch host objects
      -		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
      -			return false;
      -		}
      -
      -		proto = getProto( obj );
      -
      -		// Objects with no prototype (e.g., `Object.create( null )`) are plain
      -		if ( !proto ) {
      -			return true;
      -		}
      -
      -		// Objects with prototype are plain iff they were constructed by a global Object function
      -		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
      -		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
      -	},
      -
      -	isEmptyObject: function( obj ) {
      -
      -		/* eslint-disable no-unused-vars */
      -		// See https://github.com/eslint/eslint/issues/6125
      -		var name;
      -
      -		for ( name in obj ) {
      -			return false;
      -		}
      -		return true;
      -	},
      -
      -	type: function( obj ) {
      -		if ( obj == null ) {
      -			return obj + "";
      -		}
      -
      -		// Support: Android <=2.3 only (functionish RegExp)
      -		return typeof obj === "object" || typeof obj === "function" ?
      -			class2type[ toString.call( obj ) ] || "object" :
      -			typeof obj;
      -	},
      -
      -	// Evaluates a script in a global context
      -	globalEval: function( code ) {
      -		DOMEval( code );
      -	},
      -
      -	// Convert dashed to camelCase; used by the css and data modules
      -	// Support: IE <=9 - 11, Edge 12 - 13
      -	// Microsoft forgot to hump their vendor prefix (#9572)
      -	camelCase: function( string ) {
      -		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -	},
      -
      -	nodeName: function( elem, name ) {
      -		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
      -	},
      -
      -	each: function( obj, callback ) {
      -		var length, i = 0;
      -
      -		if ( isArrayLike( obj ) ) {
      -			length = obj.length;
      -			for ( ; i < length; i++ ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		} else {
      -			for ( i in obj ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		}
      -
      -		return obj;
      -	},
      -
      -	// Support: Android <=4.0 only
      -	trim: function( text ) {
      -		return text == null ?
      -			"" :
      -			( text + "" ).replace( rtrim, "" );
      -	},
      -
      -	// results is for internal usage only
      -	makeArray: function( arr, results ) {
      -		var ret = results || [];
      -
      -		if ( arr != null ) {
      -			if ( isArrayLike( Object( arr ) ) ) {
      -				jQuery.merge( ret,
      -					typeof arr === "string" ?
      -					[ arr ] : arr
      -				);
      -			} else {
      -				push.call( ret, arr );
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	inArray: function( elem, arr, i ) {
      -		return arr == null ? -1 : indexOf.call( arr, elem, i );
      -	},
      -
      -	// Support: Android <=4.0 only, PhantomJS 1 only
      -	// push.apply(_, arraylike) throws on ancient WebKit
      -	merge: function( first, second ) {
      -		var len = +second.length,
      -			j = 0,
      -			i = first.length;
      -
      -		for ( ; j < len; j++ ) {
      -			first[ i++ ] = second[ j ];
      -		}
      -
      -		first.length = i;
      -
      -		return first;
      -	},
      -
      -	grep: function( elems, callback, invert ) {
      -		var callbackInverse,
      -			matches = [],
      -			i = 0,
      -			length = elems.length,
      -			callbackExpect = !invert;
      -
      -		// Go through the array, only saving the items
      -		// that pass the validator function
      -		for ( ; i < length; i++ ) {
      -			callbackInverse = !callback( elems[ i ], i );
      -			if ( callbackInverse !== callbackExpect ) {
      -				matches.push( elems[ i ] );
      -			}
      -		}
      -
      -		return matches;
      -	},
      -
      -	// arg is for internal usage only
      -	map: function( elems, callback, arg ) {
      -		var length, value,
      -			i = 0,
      -			ret = [];
      -
      -		// Go through the array, translating each of the items to their new values
      -		if ( isArrayLike( elems ) ) {
      -			length = elems.length;
      -			for ( ; i < length; i++ ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -
      -		// Go through every key on the object,
      -		} else {
      -			for ( i in elems ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -		}
      -
      -		// Flatten any nested arrays
      -		return concat.apply( [], ret );
      -	},
      -
      -	// A global GUID counter for objects
      -	guid: 1,
      -
      -	// Bind a function to a context, optionally partially applying any
      -	// arguments.
      -	proxy: function( fn, context ) {
      -		var tmp, args, proxy;
      -
      -		if ( typeof context === "string" ) {
      -			tmp = fn[ context ];
      -			context = fn;
      -			fn = tmp;
      -		}
      -
      -		// Quick check to determine if target is callable, in the spec
      -		// this throws a TypeError, but we will just return undefined.
      -		if ( !jQuery.isFunction( fn ) ) {
      -			return undefined;
      -		}
      -
      -		// Simulated bind
      -		args = slice.call( arguments, 2 );
      -		proxy = function() {
      -			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
      -		};
      -
      -		// Set the guid of unique handler to the same of original handler, so it can be removed
      -		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
      -
      -		return proxy;
      -	},
      -
      -	now: Date.now,
      -
      -	// jQuery.support is not used in Core but other projects attach their
      -	// properties to it so it needs to exist.
      -	support: support
      -} );
      -
      -if ( typeof Symbol === "function" ) {
      -	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
      -}
      -
      -// Populate the class2type map
      -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
      -function( i, name ) {
      -	class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -} );
      -
      -function isArrayLike( obj ) {
      -
      -	// Support: real iOS 8.2 only (not reproducible in simulator)
      -	// `in` check used to prevent JIT error (gh-2145)
      -	// hasOwn isn't used here due to false negatives
      -	// regarding Nodelist length in IE
      -	var length = !!obj && "length" in obj && obj.length,
      -		type = jQuery.type( obj );
      -
      -	if ( type === "function" || jQuery.isWindow( obj ) ) {
      -		return false;
      -	}
      -
      -	return type === "array" || length === 0 ||
      -		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
      -}
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/dist/jquery.js b/bower_components/jquery/dist/jquery.js
      deleted file mode 100644
      index 072e308110..0000000000
      --- a/bower_components/jquery/dist/jquery.js
      +++ /dev/null
      @@ -1,10220 +0,0 @@
      -/*!
      - * jQuery JavaScript Library v3.1.1
      - * https://jquery.com/
      - *
      - * Includes Sizzle.js
      - * https://sizzlejs.com/
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * https://jquery.org/license
      - *
      - * Date: 2016-09-22T22:30Z
      - */
      -( function( global, factory ) {
      -
      -	"use strict";
      -
      -	if ( typeof module === "object" && typeof module.exports === "object" ) {
      -
      -		// For CommonJS and CommonJS-like environments where a proper `window`
      -		// is present, execute the factory and get jQuery.
      -		// For environments that do not have a `window` with a `document`
      -		// (such as Node.js), expose a factory as module.exports.
      -		// This accentuates the need for the creation of a real `window`.
      -		// e.g. var jQuery = require("jquery")(window);
      -		// See ticket #14549 for more info.
      -		module.exports = global.document ?
      -			factory( global, true ) :
      -			function( w ) {
      -				if ( !w.document ) {
      -					throw new Error( "jQuery requires a window with a document" );
      -				}
      -				return factory( w );
      -			};
      -	} else {
      -		factory( global );
      -	}
      -
      -// Pass this if window is not defined yet
      -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
      -
      -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
      -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
      -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
      -// enough that all such attempts are guarded in a try block.
      -"use strict";
      -
      -var arr = [];
      -
      -var document = window.document;
      -
      -var getProto = Object.getPrototypeOf;
      -
      -var slice = arr.slice;
      -
      -var concat = arr.concat;
      -
      -var push = arr.push;
      -
      -var indexOf = arr.indexOf;
      -
      -var class2type = {};
      -
      -var toString = class2type.toString;
      -
      -var hasOwn = class2type.hasOwnProperty;
      -
      -var fnToString = hasOwn.toString;
      -
      -var ObjectFunctionString = fnToString.call( Object );
      -
      -var support = {};
      -
      -
      -
      -	function DOMEval( code, doc ) {
      -		doc = doc || document;
      -
      -		var script = doc.createElement( "script" );
      -
      -		script.text = code;
      -		doc.head.appendChild( script ).parentNode.removeChild( script );
      -	}
      -/* global Symbol */
      -// Defining this global in .eslintrc.json would create a danger of using the global
      -// unguarded in another place, it seems safer to define global only for this module
      -
      -
      -
      -var
      -	version = "3.1.1",
      -
      -	// Define a local copy of jQuery
      -	jQuery = function( selector, context ) {
      -
      -		// The jQuery object is actually just the init constructor 'enhanced'
      -		// Need init if jQuery is called (just allow error to be thrown if not included)
      -		return new jQuery.fn.init( selector, context );
      -	},
      -
      -	// Support: Android <=4.0 only
      -	// Make sure we trim BOM and NBSP
      -	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
      -
      -	// Matches dashed string for camelizing
      -	rmsPrefix = /^-ms-/,
      -	rdashAlpha = /-([a-z])/g,
      -
      -	// Used by jQuery.camelCase as callback to replace()
      -	fcamelCase = function( all, letter ) {
      -		return letter.toUpperCase();
      -	};
      -
      -jQuery.fn = jQuery.prototype = {
      -
      -	// The current version of jQuery being used
      -	jquery: version,
      -
      -	constructor: jQuery,
      -
      -	// The default length of a jQuery object is 0
      -	length: 0,
      -
      -	toArray: function() {
      -		return slice.call( this );
      -	},
      -
      -	// Get the Nth element in the matched element set OR
      -	// Get the whole matched element set as a clean array
      -	get: function( num ) {
      -
      -		// Return all the elements in a clean array
      -		if ( num == null ) {
      -			return slice.call( this );
      -		}
      -
      -		// Return just the one element from the set
      -		return num < 0 ? this[ num + this.length ] : this[ num ];
      -	},
      -
      -	// Take an array of elements and push it onto the stack
      -	// (returning the new matched element set)
      -	pushStack: function( elems ) {
      -
      -		// Build a new jQuery matched element set
      -		var ret = jQuery.merge( this.constructor(), elems );
      -
      -		// Add the old object onto the stack (as a reference)
      -		ret.prevObject = this;
      -
      -		// Return the newly-formed element set
      -		return ret;
      -	},
      -
      -	// Execute a callback for every element in the matched set.
      -	each: function( callback ) {
      -		return jQuery.each( this, callback );
      -	},
      -
      -	map: function( callback ) {
      -		return this.pushStack( jQuery.map( this, function( elem, i ) {
      -			return callback.call( elem, i, elem );
      -		} ) );
      -	},
      -
      -	slice: function() {
      -		return this.pushStack( slice.apply( this, arguments ) );
      -	},
      -
      -	first: function() {
      -		return this.eq( 0 );
      -	},
      -
      -	last: function() {
      -		return this.eq( -1 );
      -	},
      -
      -	eq: function( i ) {
      -		var len = this.length,
      -			j = +i + ( i < 0 ? len : 0 );
      -		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
      -	},
      -
      -	end: function() {
      -		return this.prevObject || this.constructor();
      -	},
      -
      -	// For internal use only.
      -	// Behaves like an Array's method, not like a jQuery method.
      -	push: push,
      -	sort: arr.sort,
      -	splice: arr.splice
      -};
      -
      -jQuery.extend = jQuery.fn.extend = function() {
      -	var options, name, src, copy, copyIsArray, clone,
      -		target = arguments[ 0 ] || {},
      -		i = 1,
      -		length = arguments.length,
      -		deep = false;
      -
      -	// Handle a deep copy situation
      -	if ( typeof target === "boolean" ) {
      -		deep = target;
      -
      -		// Skip the boolean and the target
      -		target = arguments[ i ] || {};
      -		i++;
      -	}
      -
      -	// Handle case when target is a string or something (possible in deep copy)
      -	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
      -		target = {};
      -	}
      -
      -	// Extend jQuery itself if only one argument is passed
      -	if ( i === length ) {
      -		target = this;
      -		i--;
      -	}
      -
      -	for ( ; i < length; i++ ) {
      -
      -		// Only deal with non-null/undefined values
      -		if ( ( options = arguments[ i ] ) != null ) {
      -
      -			// Extend the base object
      -			for ( name in options ) {
      -				src = target[ name ];
      -				copy = options[ name ];
      -
      -				// Prevent never-ending loop
      -				if ( target === copy ) {
      -					continue;
      -				}
      -
      -				// Recurse if we're merging plain objects or arrays
      -				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
      -					( copyIsArray = jQuery.isArray( copy ) ) ) ) {
      -
      -					if ( copyIsArray ) {
      -						copyIsArray = false;
      -						clone = src && jQuery.isArray( src ) ? src : [];
      -
      -					} else {
      -						clone = src && jQuery.isPlainObject( src ) ? src : {};
      -					}
      -
      -					// Never move original objects, clone them
      -					target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -				// Don't bring in undefined values
      -				} else if ( copy !== undefined ) {
      -					target[ name ] = copy;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Return the modified object
      -	return target;
      -};
      -
      -jQuery.extend( {
      -
      -	// Unique for each copy of jQuery on the page
      -	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
      -
      -	// Assume jQuery is ready without the ready module
      -	isReady: true,
      -
      -	error: function( msg ) {
      -		throw new Error( msg );
      -	},
      -
      -	noop: function() {},
      -
      -	isFunction: function( obj ) {
      -		return jQuery.type( obj ) === "function";
      -	},
      -
      -	isArray: Array.isArray,
      -
      -	isWindow: function( obj ) {
      -		return obj != null && obj === obj.window;
      -	},
      -
      -	isNumeric: function( obj ) {
      -
      -		// As of jQuery 3.0, isNumeric is limited to
      -		// strings and numbers (primitives or objects)
      -		// that can be coerced to finite numbers (gh-2662)
      -		var type = jQuery.type( obj );
      -		return ( type === "number" || type === "string" ) &&
      -
      -			// parseFloat NaNs numeric-cast false positives ("")
      -			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
      -			// subtraction forces infinities to NaN
      -			!isNaN( obj - parseFloat( obj ) );
      -	},
      -
      -	isPlainObject: function( obj ) {
      -		var proto, Ctor;
      -
      -		// Detect obvious negatives
      -		// Use toString instead of jQuery.type to catch host objects
      -		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
      -			return false;
      -		}
      -
      -		proto = getProto( obj );
      -
      -		// Objects with no prototype (e.g., `Object.create( null )`) are plain
      -		if ( !proto ) {
      -			return true;
      -		}
      -
      -		// Objects with prototype are plain iff they were constructed by a global Object function
      -		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
      -		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
      -	},
      -
      -	isEmptyObject: function( obj ) {
      -
      -		/* eslint-disable no-unused-vars */
      -		// See https://github.com/eslint/eslint/issues/6125
      -		var name;
      -
      -		for ( name in obj ) {
      -			return false;
      -		}
      -		return true;
      -	},
      -
      -	type: function( obj ) {
      -		if ( obj == null ) {
      -			return obj + "";
      -		}
      -
      -		// Support: Android <=2.3 only (functionish RegExp)
      -		return typeof obj === "object" || typeof obj === "function" ?
      -			class2type[ toString.call( obj ) ] || "object" :
      -			typeof obj;
      -	},
      -
      -	// Evaluates a script in a global context
      -	globalEval: function( code ) {
      -		DOMEval( code );
      -	},
      -
      -	// Convert dashed to camelCase; used by the css and data modules
      -	// Support: IE <=9 - 11, Edge 12 - 13
      -	// Microsoft forgot to hump their vendor prefix (#9572)
      -	camelCase: function( string ) {
      -		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -	},
      -
      -	nodeName: function( elem, name ) {
      -		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
      -	},
      -
      -	each: function( obj, callback ) {
      -		var length, i = 0;
      -
      -		if ( isArrayLike( obj ) ) {
      -			length = obj.length;
      -			for ( ; i < length; i++ ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		} else {
      -			for ( i in obj ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		}
      -
      -		return obj;
      -	},
      -
      -	// Support: Android <=4.0 only
      -	trim: function( text ) {
      -		return text == null ?
      -			"" :
      -			( text + "" ).replace( rtrim, "" );
      -	},
      -
      -	// results is for internal usage only
      -	makeArray: function( arr, results ) {
      -		var ret = results || [];
      -
      -		if ( arr != null ) {
      -			if ( isArrayLike( Object( arr ) ) ) {
      -				jQuery.merge( ret,
      -					typeof arr === "string" ?
      -					[ arr ] : arr
      -				);
      -			} else {
      -				push.call( ret, arr );
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	inArray: function( elem, arr, i ) {
      -		return arr == null ? -1 : indexOf.call( arr, elem, i );
      -	},
      -
      -	// Support: Android <=4.0 only, PhantomJS 1 only
      -	// push.apply(_, arraylike) throws on ancient WebKit
      -	merge: function( first, second ) {
      -		var len = +second.length,
      -			j = 0,
      -			i = first.length;
      -
      -		for ( ; j < len; j++ ) {
      -			first[ i++ ] = second[ j ];
      -		}
      -
      -		first.length = i;
      -
      -		return first;
      -	},
      -
      -	grep: function( elems, callback, invert ) {
      -		var callbackInverse,
      -			matches = [],
      -			i = 0,
      -			length = elems.length,
      -			callbackExpect = !invert;
      -
      -		// Go through the array, only saving the items
      -		// that pass the validator function
      -		for ( ; i < length; i++ ) {
      -			callbackInverse = !callback( elems[ i ], i );
      -			if ( callbackInverse !== callbackExpect ) {
      -				matches.push( elems[ i ] );
      -			}
      -		}
      -
      -		return matches;
      -	},
      -
      -	// arg is for internal usage only
      -	map: function( elems, callback, arg ) {
      -		var length, value,
      -			i = 0,
      -			ret = [];
      -
      -		// Go through the array, translating each of the items to their new values
      -		if ( isArrayLike( elems ) ) {
      -			length = elems.length;
      -			for ( ; i < length; i++ ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -
      -		// Go through every key on the object,
      -		} else {
      -			for ( i in elems ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -		}
      -
      -		// Flatten any nested arrays
      -		return concat.apply( [], ret );
      -	},
      -
      -	// A global GUID counter for objects
      -	guid: 1,
      -
      -	// Bind a function to a context, optionally partially applying any
      -	// arguments.
      -	proxy: function( fn, context ) {
      -		var tmp, args, proxy;
      -
      -		if ( typeof context === "string" ) {
      -			tmp = fn[ context ];
      -			context = fn;
      -			fn = tmp;
      -		}
      -
      -		// Quick check to determine if target is callable, in the spec
      -		// this throws a TypeError, but we will just return undefined.
      -		if ( !jQuery.isFunction( fn ) ) {
      -			return undefined;
      -		}
      -
      -		// Simulated bind
      -		args = slice.call( arguments, 2 );
      -		proxy = function() {
      -			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
      -		};
      -
      -		// Set the guid of unique handler to the same of original handler, so it can be removed
      -		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
      -
      -		return proxy;
      -	},
      -
      -	now: Date.now,
      -
      -	// jQuery.support is not used in Core but other projects attach their
      -	// properties to it so it needs to exist.
      -	support: support
      -} );
      -
      -if ( typeof Symbol === "function" ) {
      -	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
      -}
      -
      -// Populate the class2type map
      -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
      -function( i, name ) {
      -	class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -} );
      -
      -function isArrayLike( obj ) {
      -
      -	// Support: real iOS 8.2 only (not reproducible in simulator)
      -	// `in` check used to prevent JIT error (gh-2145)
      -	// hasOwn isn't used here due to false negatives
      -	// regarding Nodelist length in IE
      -	var length = !!obj && "length" in obj && obj.length,
      -		type = jQuery.type( obj );
      -
      -	if ( type === "function" || jQuery.isWindow( obj ) ) {
      -		return false;
      -	}
      -
      -	return type === "array" || length === 0 ||
      -		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
      -}
      -var Sizzle =
      -/*!
      - * Sizzle CSS Selector Engine v2.3.3
      - * https://sizzlejs.com/
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * http://jquery.org/license
      - *
      - * Date: 2016-08-08
      - */
      -(function( window ) {
      -
      -var i,
      -	support,
      -	Expr,
      -	getText,
      -	isXML,
      -	tokenize,
      -	compile,
      -	select,
      -	outermostContext,
      -	sortInput,
      -	hasDuplicate,
      -
      -	// Local document vars
      -	setDocument,
      -	document,
      -	docElem,
      -	documentIsHTML,
      -	rbuggyQSA,
      -	rbuggyMatches,
      -	matches,
      -	contains,
      -
      -	// Instance-specific data
      -	expando = "sizzle" + 1 * new Date(),
      -	preferredDoc = window.document,
      -	dirruns = 0,
      -	done = 0,
      -	classCache = createCache(),
      -	tokenCache = createCache(),
      -	compilerCache = createCache(),
      -	sortOrder = function( a, b ) {
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -		}
      -		return 0;
      -	},
      -
      -	// Instance methods
      -	hasOwn = ({}).hasOwnProperty,
      -	arr = [],
      -	pop = arr.pop,
      -	push_native = arr.push,
      -	push = arr.push,
      -	slice = arr.slice,
      -	// Use a stripped-down indexOf as it's faster than native
      -	// https://jsperf.com/thor-indexof-vs-for/5
      -	indexOf = function( list, elem ) {
      -		var i = 0,
      -			len = list.length;
      -		for ( ; i < len; i++ ) {
      -			if ( list[i] === elem ) {
      -				return i;
      -			}
      -		}
      -		return -1;
      -	},
      -
      -	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
      -
      -	// Regular expressions
      -
      -	// http://www.w3.org/TR/css3-selectors/#whitespace
      -	whitespace = "[\\x20\\t\\r\\n\\f]",
      -
      -	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
      -	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
      -
      -	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
      -	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
      -		// Operator (capture 2)
      -		"*([*^$|!~]?=)" + whitespace +
      -		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
      -		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
      -		"*\\]",
      -
      -	pseudos = ":(" + identifier + ")(?:\\((" +
      -		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
      -		// 1. quoted (capture 3; capture 4 or capture 5)
      -		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
      -		// 2. simple (capture 6)
      -		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
      -		// 3. anything else (capture 2)
      -		".*" +
      -		")\\)|)",
      -
      -	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
      -	rwhitespace = new RegExp( whitespace + "+", "g" ),
      -	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
      -
      -	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
      -	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
      -
      -	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
      -
      -	rpseudo = new RegExp( pseudos ),
      -	ridentifier = new RegExp( "^" + identifier + "$" ),
      -
      -	matchExpr = {
      -		"ID": new RegExp( "^#(" + identifier + ")" ),
      -		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
      -		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
      -		"ATTR": new RegExp( "^" + attributes ),
      -		"PSEUDO": new RegExp( "^" + pseudos ),
      -		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
      -			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
      -			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
      -		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
      -		// For use in libraries implementing .is()
      -		// We use this for POS matching in `select`
      -		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
      -			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
      -	},
      -
      -	rinputs = /^(?:input|select|textarea|button)$/i,
      -	rheader = /^h\d$/i,
      -
      -	rnative = /^[^{]+\{\s*\[native \w/,
      -
      -	// Easily-parseable/retrievable ID or TAG or CLASS selectors
      -	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
      -
      -	rsibling = /[+~]/,
      -
      -	// CSS escapes
      -	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
      -	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
      -	funescape = function( _, escaped, escapedWhitespace ) {
      -		var high = "0x" + escaped - 0x10000;
      -		// NaN means non-codepoint
      -		// Support: Firefox<24
      -		// Workaround erroneous numeric interpretation of +"0x"
      -		return high !== high || escapedWhitespace ?
      -			escaped :
      -			high < 0 ?
      -				// BMP codepoint
      -				String.fromCharCode( high + 0x10000 ) :
      -				// Supplemental Plane codepoint (surrogate pair)
      -				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
      -	},
      -
      -	// CSS string/identifier serialization
      -	// https://drafts.csswg.org/cssom/#common-serializing-idioms
      -	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
      -	fcssescape = function( ch, asCodePoint ) {
      -		if ( asCodePoint ) {
      -
      -			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
      -			if ( ch === "\0" ) {
      -				return "\uFFFD";
      -			}
      -
      -			// Control characters and (dependent upon position) numbers get escaped as code points
      -			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
      -		}
      -
      -		// Other potentially-special ASCII characters get backslash-escaped
      -		return "\\" + ch;
      -	},
      -
      -	// Used for iframes
      -	// See setDocument()
      -	// Removing the function wrapper causes a "Permission Denied"
      -	// error in IE
      -	unloadHandler = function() {
      -		setDocument();
      -	},
      -
      -	disabledAncestor = addCombinator(
      -		function( elem ) {
      -			return elem.disabled === true && ("form" in elem || "label" in elem);
      -		},
      -		{ dir: "parentNode", next: "legend" }
      -	);
      -
      -// Optimize for push.apply( _, NodeList )
      -try {
      -	push.apply(
      -		(arr = slice.call( preferredDoc.childNodes )),
      -		preferredDoc.childNodes
      -	);
      -	// Support: Android<4.0
      -	// Detect silently failing push.apply
      -	arr[ preferredDoc.childNodes.length ].nodeType;
      -} catch ( e ) {
      -	push = { apply: arr.length ?
      -
      -		// Leverage slice if possible
      -		function( target, els ) {
      -			push_native.apply( target, slice.call(els) );
      -		} :
      -
      -		// Support: IE<9
      -		// Otherwise append directly
      -		function( target, els ) {
      -			var j = target.length,
      -				i = 0;
      -			// Can't trust NodeList.length
      -			while ( (target[j++] = els[i++]) ) {}
      -			target.length = j - 1;
      -		}
      -	};
      -}
      -
      -function Sizzle( selector, context, results, seed ) {
      -	var m, i, elem, nid, match, groups, newSelector,
      -		newContext = context && context.ownerDocument,
      -
      -		// nodeType defaults to 9, since context defaults to document
      -		nodeType = context ? context.nodeType : 9;
      -
      -	results = results || [];
      -
      -	// Return early from calls with invalid selector or context
      -	if ( typeof selector !== "string" || !selector ||
      -		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
      -
      -		return results;
      -	}
      -
      -	// Try to shortcut find operations (as opposed to filters) in HTML documents
      -	if ( !seed ) {
      -
      -		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
      -			setDocument( context );
      -		}
      -		context = context || document;
      -
      -		if ( documentIsHTML ) {
      -
      -			// If the selector is sufficiently simple, try using a "get*By*" DOM method
      -			// (excepting DocumentFragment context, where the methods don't exist)
      -			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
      -
      -				// ID selector
      -				if ( (m = match[1]) ) {
      -
      -					// Document context
      -					if ( nodeType === 9 ) {
      -						if ( (elem = context.getElementById( m )) ) {
      -
      -							// Support: IE, Opera, Webkit
      -							// TODO: identify versions
      -							// getElementById can match elements by name instead of ID
      -							if ( elem.id === m ) {
      -								results.push( elem );
      -								return results;
      -							}
      -						} else {
      -							return results;
      -						}
      -
      -					// Element context
      -					} else {
      -
      -						// Support: IE, Opera, Webkit
      -						// TODO: identify versions
      -						// getElementById can match elements by name instead of ID
      -						if ( newContext && (elem = newContext.getElementById( m )) &&
      -							contains( context, elem ) &&
      -							elem.id === m ) {
      -
      -							results.push( elem );
      -							return results;
      -						}
      -					}
      -
      -				// Type selector
      -				} else if ( match[2] ) {
      -					push.apply( results, context.getElementsByTagName( selector ) );
      -					return results;
      -
      -				// Class selector
      -				} else if ( (m = match[3]) && support.getElementsByClassName &&
      -					context.getElementsByClassName ) {
      -
      -					push.apply( results, context.getElementsByClassName( m ) );
      -					return results;
      -				}
      -			}
      -
      -			// Take advantage of querySelectorAll
      -			if ( support.qsa &&
      -				!compilerCache[ selector + " " ] &&
      -				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
      -
      -				if ( nodeType !== 1 ) {
      -					newContext = context;
      -					newSelector = selector;
      -
      -				// qSA looks outside Element context, which is not what we want
      -				// Thanks to Andrew Dupont for this workaround technique
      -				// Support: IE <=8
      -				// Exclude object elements
      -				} else if ( context.nodeName.toLowerCase() !== "object" ) {
      -
      -					// Capture the context ID, setting it first if necessary
      -					if ( (nid = context.getAttribute( "id" )) ) {
      -						nid = nid.replace( rcssescape, fcssescape );
      -					} else {
      -						context.setAttribute( "id", (nid = expando) );
      -					}
      -
      -					// Prefix every selector in the list
      -					groups = tokenize( selector );
      -					i = groups.length;
      -					while ( i-- ) {
      -						groups[i] = "#" + nid + " " + toSelector( groups[i] );
      -					}
      -					newSelector = groups.join( "," );
      -
      -					// Expand context for sibling selectors
      -					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
      -						context;
      -				}
      -
      -				if ( newSelector ) {
      -					try {
      -						push.apply( results,
      -							newContext.querySelectorAll( newSelector )
      -						);
      -						return results;
      -					} catch ( qsaError ) {
      -					} finally {
      -						if ( nid === expando ) {
      -							context.removeAttribute( "id" );
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	// All others
      -	return select( selector.replace( rtrim, "$1" ), context, results, seed );
      -}
      -
      -/**
      - * Create key-value caches of limited size
      - * @returns {function(string, object)} Returns the Object data after storing it on itself with
      - *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
      - *	deleting the oldest entry
      - */
      -function createCache() {
      -	var keys = [];
      -
      -	function cache( key, value ) {
      -		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
      -		if ( keys.push( key + " " ) > Expr.cacheLength ) {
      -			// Only keep the most recent entries
      -			delete cache[ keys.shift() ];
      -		}
      -		return (cache[ key + " " ] = value);
      -	}
      -	return cache;
      -}
      -
      -/**
      - * Mark a function for special use by Sizzle
      - * @param {Function} fn The function to mark
      - */
      -function markFunction( fn ) {
      -	fn[ expando ] = true;
      -	return fn;
      -}
      -
      -/**
      - * Support testing using an element
      - * @param {Function} fn Passed the created element and returns a boolean result
      - */
      -function assert( fn ) {
      -	var el = document.createElement("fieldset");
      -
      -	try {
      -		return !!fn( el );
      -	} catch (e) {
      -		return false;
      -	} finally {
      -		// Remove from its parent by default
      -		if ( el.parentNode ) {
      -			el.parentNode.removeChild( el );
      -		}
      -		// release memory in IE
      -		el = null;
      -	}
      -}
      -
      -/**
      - * Adds the same handler for all of the specified attrs
      - * @param {String} attrs Pipe-separated list of attributes
      - * @param {Function} handler The method that will be applied
      - */
      -function addHandle( attrs, handler ) {
      -	var arr = attrs.split("|"),
      -		i = arr.length;
      -
      -	while ( i-- ) {
      -		Expr.attrHandle[ arr[i] ] = handler;
      -	}
      -}
      -
      -/**
      - * Checks document order of two siblings
      - * @param {Element} a
      - * @param {Element} b
      - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
      - */
      -function siblingCheck( a, b ) {
      -	var cur = b && a,
      -		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
      -			a.sourceIndex - b.sourceIndex;
      -
      -	// Use IE sourceIndex if available on both nodes
      -	if ( diff ) {
      -		return diff;
      -	}
      -
      -	// Check if b follows a
      -	if ( cur ) {
      -		while ( (cur = cur.nextSibling) ) {
      -			if ( cur === b ) {
      -				return -1;
      -			}
      -		}
      -	}
      -
      -	return a ? 1 : -1;
      -}
      -
      -/**
      - * Returns a function to use in pseudos for input types
      - * @param {String} type
      - */
      -function createInputPseudo( type ) {
      -	return function( elem ) {
      -		var name = elem.nodeName.toLowerCase();
      -		return name === "input" && elem.type === type;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for buttons
      - * @param {String} type
      - */
      -function createButtonPseudo( type ) {
      -	return function( elem ) {
      -		var name = elem.nodeName.toLowerCase();
      -		return (name === "input" || name === "button") && elem.type === type;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for :enabled/:disabled
      - * @param {Boolean} disabled true for :disabled; false for :enabled
      - */
      -function createDisabledPseudo( disabled ) {
      -
      -	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
      -	return function( elem ) {
      -
      -		// Only certain elements can match :enabled or :disabled
      -		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
      -		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
      -		if ( "form" in elem ) {
      -
      -			// Check for inherited disabledness on relevant non-disabled elements:
      -			// * listed form-associated elements in a disabled fieldset
      -			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
      -			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
      -			// * option elements in a disabled optgroup
      -			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
      -			// All such elements have a "form" property.
      -			if ( elem.parentNode && elem.disabled === false ) {
      -
      -				// Option elements defer to a parent optgroup if present
      -				if ( "label" in elem ) {
      -					if ( "label" in elem.parentNode ) {
      -						return elem.parentNode.disabled === disabled;
      -					} else {
      -						return elem.disabled === disabled;
      -					}
      -				}
      -
      -				// Support: IE 6 - 11
      -				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
      -				return elem.isDisabled === disabled ||
      -
      -					// Where there is no isDisabled, check manually
      -					/* jshint -W018 */
      -					elem.isDisabled !== !disabled &&
      -						disabledAncestor( elem ) === disabled;
      -			}
      -
      -			return elem.disabled === disabled;
      -
      -		// Try to winnow out elements that can't be disabled before trusting the disabled property.
      -		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
      -		// even exist on them, let alone have a boolean value.
      -		} else if ( "label" in elem ) {
      -			return elem.disabled === disabled;
      -		}
      -
      -		// Remaining elements are neither :enabled nor :disabled
      -		return false;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for positionals
      - * @param {Function} fn
      - */
      -function createPositionalPseudo( fn ) {
      -	return markFunction(function( argument ) {
      -		argument = +argument;
      -		return markFunction(function( seed, matches ) {
      -			var j,
      -				matchIndexes = fn( [], seed.length, argument ),
      -				i = matchIndexes.length;
      -
      -			// Match elements found at the specified indexes
      -			while ( i-- ) {
      -				if ( seed[ (j = matchIndexes[i]) ] ) {
      -					seed[j] = !(matches[j] = seed[j]);
      -				}
      -			}
      -		});
      -	});
      -}
      -
      -/**
      - * Checks a node for validity as a Sizzle context
      - * @param {Element|Object=} context
      - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
      - */
      -function testContext( context ) {
      -	return context && typeof context.getElementsByTagName !== "undefined" && context;
      -}
      -
      -// Expose support vars for convenience
      -support = Sizzle.support = {};
      -
      -/**
      - * Detects XML nodes
      - * @param {Element|Object} elem An element or a document
      - * @returns {Boolean} True iff elem is a non-HTML XML node
      - */
      -isXML = Sizzle.isXML = function( elem ) {
      -	// documentElement is verified for cases where it doesn't yet exist
      -	// (such as loading iframes in IE - #4833)
      -	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
      -	return documentElement ? documentElement.nodeName !== "HTML" : false;
      -};
      -
      -/**
      - * Sets document-related variables once based on the current document
      - * @param {Element|Object} [doc] An element or document object to use to set the document
      - * @returns {Object} Returns the current document
      - */
      -setDocument = Sizzle.setDocument = function( node ) {
      -	var hasCompare, subWindow,
      -		doc = node ? node.ownerDocument || node : preferredDoc;
      -
      -	// Return early if doc is invalid or already selected
      -	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
      -		return document;
      -	}
      -
      -	// Update global variables
      -	document = doc;
      -	docElem = document.documentElement;
      -	documentIsHTML = !isXML( document );
      -
      -	// Support: IE 9-11, Edge
      -	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
      -	if ( preferredDoc !== document &&
      -		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
      -
      -		// Support: IE 11, Edge
      -		if ( subWindow.addEventListener ) {
      -			subWindow.addEventListener( "unload", unloadHandler, false );
      -
      -		// Support: IE 9 - 10 only
      -		} else if ( subWindow.attachEvent ) {
      -			subWindow.attachEvent( "onunload", unloadHandler );
      -		}
      -	}
      -
      -	/* Attributes
      -	---------------------------------------------------------------------- */
      -
      -	// Support: IE<8
      -	// Verify that getAttribute really returns attributes and not properties
      -	// (excepting IE8 booleans)
      -	support.attributes = assert(function( el ) {
      -		el.className = "i";
      -		return !el.getAttribute("className");
      -	});
      -
      -	/* getElement(s)By*
      -	---------------------------------------------------------------------- */
      -
      -	// Check if getElementsByTagName("*") returns only elements
      -	support.getElementsByTagName = assert(function( el ) {
      -		el.appendChild( document.createComment("") );
      -		return !el.getElementsByTagName("*").length;
      -	});
      -
      -	// Support: IE<9
      -	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
      -
      -	// Support: IE<10
      -	// Check if getElementById returns elements by name
      -	// The broken getElementById methods don't pick up programmatically-set names,
      -	// so use a roundabout getElementsByName test
      -	support.getById = assert(function( el ) {
      -		docElem.appendChild( el ).id = expando;
      -		return !document.getElementsByName || !document.getElementsByName( expando ).length;
      -	});
      -
      -	// ID filter and find
      -	if ( support.getById ) {
      -		Expr.filter["ID"] = function( id ) {
      -			var attrId = id.replace( runescape, funescape );
      -			return function( elem ) {
      -				return elem.getAttribute("id") === attrId;
      -			};
      -		};
      -		Expr.find["ID"] = function( id, context ) {
      -			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
      -				var elem = context.getElementById( id );
      -				return elem ? [ elem ] : [];
      -			}
      -		};
      -	} else {
      -		Expr.filter["ID"] =  function( id ) {
      -			var attrId = id.replace( runescape, funescape );
      -			return function( elem ) {
      -				var node = typeof elem.getAttributeNode !== "undefined" &&
      -					elem.getAttributeNode("id");
      -				return node && node.value === attrId;
      -			};
      -		};
      -
      -		// Support: IE 6 - 7 only
      -		// getElementById is not reliable as a find shortcut
      -		Expr.find["ID"] = function( id, context ) {
      -			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
      -				var node, i, elems,
      -					elem = context.getElementById( id );
      -
      -				if ( elem ) {
      -
      -					// Verify the id attribute
      -					node = elem.getAttributeNode("id");
      -					if ( node && node.value === id ) {
      -						return [ elem ];
      -					}
      -
      -					// Fall back on getElementsByName
      -					elems = context.getElementsByName( id );
      -					i = 0;
      -					while ( (elem = elems[i++]) ) {
      -						node = elem.getAttributeNode("id");
      -						if ( node && node.value === id ) {
      -							return [ elem ];
      -						}
      -					}
      -				}
      -
      -				return [];
      -			}
      -		};
      -	}
      -
      -	// Tag
      -	Expr.find["TAG"] = support.getElementsByTagName ?
      -		function( tag, context ) {
      -			if ( typeof context.getElementsByTagName !== "undefined" ) {
      -				return context.getElementsByTagName( tag );
      -
      -			// DocumentFragment nodes don't have gEBTN
      -			} else if ( support.qsa ) {
      -				return context.querySelectorAll( tag );
      -			}
      -		} :
      -
      -		function( tag, context ) {
      -			var elem,
      -				tmp = [],
      -				i = 0,
      -				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
      -				results = context.getElementsByTagName( tag );
      -
      -			// Filter out possible comments
      -			if ( tag === "*" ) {
      -				while ( (elem = results[i++]) ) {
      -					if ( elem.nodeType === 1 ) {
      -						tmp.push( elem );
      -					}
      -				}
      -
      -				return tmp;
      -			}
      -			return results;
      -		};
      -
      -	// Class
      -	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
      -		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
      -			return context.getElementsByClassName( className );
      -		}
      -	};
      -
      -	/* QSA/matchesSelector
      -	---------------------------------------------------------------------- */
      -
      -	// QSA and matchesSelector support
      -
      -	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
      -	rbuggyMatches = [];
      -
      -	// qSa(:focus) reports false when true (Chrome 21)
      -	// We allow this because of a bug in IE8/9 that throws an error
      -	// whenever `document.activeElement` is accessed on an iframe
      -	// So, we allow :focus to pass through QSA all the time to avoid the IE error
      -	// See https://bugs.jquery.com/ticket/13378
      -	rbuggyQSA = [];
      -
      -	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
      -		// Build QSA regex
      -		// Regex strategy adopted from Diego Perini
      -		assert(function( el ) {
      -			// Select is set to empty string on purpose
      -			// This is to test IE's treatment of not explicitly
      -			// setting a boolean content attribute,
      -			// since its presence should be enough
      -			// https://bugs.jquery.com/ticket/12359
      -			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
      -				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
      -				"<option selected=''></option></select>";
      -
      -			// Support: IE8, Opera 11-12.16
      -			// Nothing should be selected when empty strings follow ^= or $= or *=
      -			// The test attribute must be unknown in Opera but "safe" for WinRT
      -			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
      -			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
      -				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
      -			}
      -
      -			// Support: IE8
      -			// Boolean attributes and "value" are not treated correctly
      -			if ( !el.querySelectorAll("[selected]").length ) {
      -				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
      -			}
      -
      -			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
      -			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
      -				rbuggyQSA.push("~=");
      -			}
      -
      -			// Webkit/Opera - :checked should return selected option elements
      -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -			// IE8 throws error here and will not see later tests
      -			if ( !el.querySelectorAll(":checked").length ) {
      -				rbuggyQSA.push(":checked");
      -			}
      -
      -			// Support: Safari 8+, iOS 8+
      -			// https://bugs.webkit.org/show_bug.cgi?id=136851
      -			// In-page `selector#id sibling-combinator selector` fails
      -			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
      -				rbuggyQSA.push(".#.+[+~]");
      -			}
      -		});
      -
      -		assert(function( el ) {
      -			el.innerHTML = "<a href='' disabled='disabled'></a>" +
      -				"<select disabled='disabled'><option/></select>";
      -
      -			// Support: Windows 8 Native Apps
      -			// The type and name attributes are restricted during .innerHTML assignment
      -			var input = document.createElement("input");
      -			input.setAttribute( "type", "hidden" );
      -			el.appendChild( input ).setAttribute( "name", "D" );
      -
      -			// Support: IE8
      -			// Enforce case-sensitivity of name attribute
      -			if ( el.querySelectorAll("[name=d]").length ) {
      -				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
      -			}
      -
      -			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
      -			// IE8 throws error here and will not see later tests
      -			if ( el.querySelectorAll(":enabled").length !== 2 ) {
      -				rbuggyQSA.push( ":enabled", ":disabled" );
      -			}
      -
      -			// Support: IE9-11+
      -			// IE's :disabled selector does not pick up the children of disabled fieldsets
      -			docElem.appendChild( el ).disabled = true;
      -			if ( el.querySelectorAll(":disabled").length !== 2 ) {
      -				rbuggyQSA.push( ":enabled", ":disabled" );
      -			}
      -
      -			// Opera 10-11 does not throw on post-comma invalid pseudos
      -			el.querySelectorAll("*,:x");
      -			rbuggyQSA.push(",.*:");
      -		});
      -	}
      -
      -	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
      -		docElem.webkitMatchesSelector ||
      -		docElem.mozMatchesSelector ||
      -		docElem.oMatchesSelector ||
      -		docElem.msMatchesSelector) )) ) {
      -
      -		assert(function( el ) {
      -			// Check to see if it's possible to do matchesSelector
      -			// on a disconnected node (IE 9)
      -			support.disconnectedMatch = matches.call( el, "*" );
      -
      -			// This should fail with an exception
      -			// Gecko does not error, returns false instead
      -			matches.call( el, "[s!='']:x" );
      -			rbuggyMatches.push( "!=", pseudos );
      -		});
      -	}
      -
      -	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
      -	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
      -
      -	/* Contains
      -	---------------------------------------------------------------------- */
      -	hasCompare = rnative.test( docElem.compareDocumentPosition );
      -
      -	// Element contains another
      -	// Purposefully self-exclusive
      -	// As in, an element does not contain itself
      -	contains = hasCompare || rnative.test( docElem.contains ) ?
      -		function( a, b ) {
      -			var adown = a.nodeType === 9 ? a.documentElement : a,
      -				bup = b && b.parentNode;
      -			return a === bup || !!( bup && bup.nodeType === 1 && (
      -				adown.contains ?
      -					adown.contains( bup ) :
      -					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
      -			));
      -		} :
      -		function( a, b ) {
      -			if ( b ) {
      -				while ( (b = b.parentNode) ) {
      -					if ( b === a ) {
      -						return true;
      -					}
      -				}
      -			}
      -			return false;
      -		};
      -
      -	/* Sorting
      -	---------------------------------------------------------------------- */
      -
      -	// Document order sorting
      -	sortOrder = hasCompare ?
      -	function( a, b ) {
      -
      -		// Flag for duplicate removal
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -		}
      -
      -		// Sort on method existence if only one input has compareDocumentPosition
      -		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
      -		if ( compare ) {
      -			return compare;
      -		}
      -
      -		// Calculate position if both inputs belong to the same document
      -		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
      -			a.compareDocumentPosition( b ) :
      -
      -			// Otherwise we know they are disconnected
      -			1;
      -
      -		// Disconnected nodes
      -		if ( compare & 1 ||
      -			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
      -
      -			// Choose the first element that is related to our preferred document
      -			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
      -				return -1;
      -			}
      -			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
      -				return 1;
      -			}
      -
      -			// Maintain original order
      -			return sortInput ?
      -				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
      -				0;
      -		}
      -
      -		return compare & 4 ? -1 : 1;
      -	} :
      -	function( a, b ) {
      -		// Exit early if the nodes are identical
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -		}
      -
      -		var cur,
      -			i = 0,
      -			aup = a.parentNode,
      -			bup = b.parentNode,
      -			ap = [ a ],
      -			bp = [ b ];
      -
      -		// Parentless nodes are either documents or disconnected
      -		if ( !aup || !bup ) {
      -			return a === document ? -1 :
      -				b === document ? 1 :
      -				aup ? -1 :
      -				bup ? 1 :
      -				sortInput ?
      -				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
      -				0;
      -
      -		// If the nodes are siblings, we can do a quick check
      -		} else if ( aup === bup ) {
      -			return siblingCheck( a, b );
      -		}
      -
      -		// Otherwise we need full lists of their ancestors for comparison
      -		cur = a;
      -		while ( (cur = cur.parentNode) ) {
      -			ap.unshift( cur );
      -		}
      -		cur = b;
      -		while ( (cur = cur.parentNode) ) {
      -			bp.unshift( cur );
      -		}
      -
      -		// Walk down the tree looking for a discrepancy
      -		while ( ap[i] === bp[i] ) {
      -			i++;
      -		}
      -
      -		return i ?
      -			// Do a sibling check if the nodes have a common ancestor
      -			siblingCheck( ap[i], bp[i] ) :
      -
      -			// Otherwise nodes in our document sort first
      -			ap[i] === preferredDoc ? -1 :
      -			bp[i] === preferredDoc ? 1 :
      -			0;
      -	};
      -
      -	return document;
      -};
      -
      -Sizzle.matches = function( expr, elements ) {
      -	return Sizzle( expr, null, null, elements );
      -};
      -
      -Sizzle.matchesSelector = function( elem, expr ) {
      -	// Set document vars if needed
      -	if ( ( elem.ownerDocument || elem ) !== document ) {
      -		setDocument( elem );
      -	}
      -
      -	// Make sure that attribute selectors are quoted
      -	expr = expr.replace( rattributeQuotes, "='$1']" );
      -
      -	if ( support.matchesSelector && documentIsHTML &&
      -		!compilerCache[ expr + " " ] &&
      -		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
      -		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
      -
      -		try {
      -			var ret = matches.call( elem, expr );
      -
      -			// IE 9's matchesSelector returns false on disconnected nodes
      -			if ( ret || support.disconnectedMatch ||
      -					// As well, disconnected nodes are said to be in a document
      -					// fragment in IE 9
      -					elem.document && elem.document.nodeType !== 11 ) {
      -				return ret;
      -			}
      -		} catch (e) {}
      -	}
      -
      -	return Sizzle( expr, document, null, [ elem ] ).length > 0;
      -};
      -
      -Sizzle.contains = function( context, elem ) {
      -	// Set document vars if needed
      -	if ( ( context.ownerDocument || context ) !== document ) {
      -		setDocument( context );
      -	}
      -	return contains( context, elem );
      -};
      -
      -Sizzle.attr = function( elem, name ) {
      -	// Set document vars if needed
      -	if ( ( elem.ownerDocument || elem ) !== document ) {
      -		setDocument( elem );
      -	}
      -
      -	var fn = Expr.attrHandle[ name.toLowerCase() ],
      -		// Don't get fooled by Object.prototype properties (jQuery #13807)
      -		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
      -			fn( elem, name, !documentIsHTML ) :
      -			undefined;
      -
      -	return val !== undefined ?
      -		val :
      -		support.attributes || !documentIsHTML ?
      -			elem.getAttribute( name ) :
      -			(val = elem.getAttributeNode(name)) && val.specified ?
      -				val.value :
      -				null;
      -};
      -
      -Sizzle.escape = function( sel ) {
      -	return (sel + "").replace( rcssescape, fcssescape );
      -};
      -
      -Sizzle.error = function( msg ) {
      -	throw new Error( "Syntax error, unrecognized expression: " + msg );
      -};
      -
      -/**
      - * Document sorting and removing duplicates
      - * @param {ArrayLike} results
      - */
      -Sizzle.uniqueSort = function( results ) {
      -	var elem,
      -		duplicates = [],
      -		j = 0,
      -		i = 0;
      -
      -	// Unless we *know* we can detect duplicates, assume their presence
      -	hasDuplicate = !support.detectDuplicates;
      -	sortInput = !support.sortStable && results.slice( 0 );
      -	results.sort( sortOrder );
      -
      -	if ( hasDuplicate ) {
      -		while ( (elem = results[i++]) ) {
      -			if ( elem === results[ i ] ) {
      -				j = duplicates.push( i );
      -			}
      -		}
      -		while ( j-- ) {
      -			results.splice( duplicates[ j ], 1 );
      -		}
      -	}
      -
      -	// Clear input after sorting to release objects
      -	// See https://github.com/jquery/sizzle/pull/225
      -	sortInput = null;
      -
      -	return results;
      -};
      -
      -/**
      - * Utility function for retrieving the text value of an array of DOM nodes
      - * @param {Array|Element} elem
      - */
      -getText = Sizzle.getText = function( elem ) {
      -	var node,
      -		ret = "",
      -		i = 0,
      -		nodeType = elem.nodeType;
      -
      -	if ( !nodeType ) {
      -		// If no nodeType, this is expected to be an array
      -		while ( (node = elem[i++]) ) {
      -			// Do not traverse comment nodes
      -			ret += getText( node );
      -		}
      -	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -		// Use textContent for elements
      -		// innerText usage removed for consistency of new lines (jQuery #11153)
      -		if ( typeof elem.textContent === "string" ) {
      -			return elem.textContent;
      -		} else {
      -			// Traverse its children
      -			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -				ret += getText( elem );
      -			}
      -		}
      -	} else if ( nodeType === 3 || nodeType === 4 ) {
      -		return elem.nodeValue;
      -	}
      -	// Do not include comment or processing instruction nodes
      -
      -	return ret;
      -};
      -
      -Expr = Sizzle.selectors = {
      -
      -	// Can be adjusted by the user
      -	cacheLength: 50,
      -
      -	createPseudo: markFunction,
      -
      -	match: matchExpr,
      -
      -	attrHandle: {},
      -
      -	find: {},
      -
      -	relative: {
      -		">": { dir: "parentNode", first: true },
      -		" ": { dir: "parentNode" },
      -		"+": { dir: "previousSibling", first: true },
      -		"~": { dir: "previousSibling" }
      -	},
      -
      -	preFilter: {
      -		"ATTR": function( match ) {
      -			match[1] = match[1].replace( runescape, funescape );
      -
      -			// Move the given value to match[3] whether quoted or unquoted
      -			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
      -
      -			if ( match[2] === "~=" ) {
      -				match[3] = " " + match[3] + " ";
      -			}
      -
      -			return match.slice( 0, 4 );
      -		},
      -
      -		"CHILD": function( match ) {
      -			/* matches from matchExpr["CHILD"]
      -				1 type (only|nth|...)
      -				2 what (child|of-type)
      -				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
      -				4 xn-component of xn+y argument ([+-]?\d*n|)
      -				5 sign of xn-component
      -				6 x of xn-component
      -				7 sign of y-component
      -				8 y of y-component
      -			*/
      -			match[1] = match[1].toLowerCase();
      -
      -			if ( match[1].slice( 0, 3 ) === "nth" ) {
      -				// nth-* requires argument
      -				if ( !match[3] ) {
      -					Sizzle.error( match[0] );
      -				}
      -
      -				// numeric x and y parameters for Expr.filter.CHILD
      -				// remember that false/true cast respectively to 0/1
      -				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
      -				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
      -
      -			// other types prohibit arguments
      -			} else if ( match[3] ) {
      -				Sizzle.error( match[0] );
      -			}
      -
      -			return match;
      -		},
      -
      -		"PSEUDO": function( match ) {
      -			var excess,
      -				unquoted = !match[6] && match[2];
      -
      -			if ( matchExpr["CHILD"].test( match[0] ) ) {
      -				return null;
      -			}
      -
      -			// Accept quoted arguments as-is
      -			if ( match[3] ) {
      -				match[2] = match[4] || match[5] || "";
      -
      -			// Strip excess characters from unquoted arguments
      -			} else if ( unquoted && rpseudo.test( unquoted ) &&
      -				// Get excess from tokenize (recursively)
      -				(excess = tokenize( unquoted, true )) &&
      -				// advance to the next closing parenthesis
      -				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
      -
      -				// excess is a negative index
      -				match[0] = match[0].slice( 0, excess );
      -				match[2] = unquoted.slice( 0, excess );
      -			}
      -
      -			// Return only captures needed by the pseudo filter method (type and argument)
      -			return match.slice( 0, 3 );
      -		}
      -	},
      -
      -	filter: {
      -
      -		"TAG": function( nodeNameSelector ) {
      -			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
      -			return nodeNameSelector === "*" ?
      -				function() { return true; } :
      -				function( elem ) {
      -					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
      -				};
      -		},
      -
      -		"CLASS": function( className ) {
      -			var pattern = classCache[ className + " " ];
      -
      -			return pattern ||
      -				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
      -				classCache( className, function( elem ) {
      -					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
      -				});
      -		},
      -
      -		"ATTR": function( name, operator, check ) {
      -			return function( elem ) {
      -				var result = Sizzle.attr( elem, name );
      -
      -				if ( result == null ) {
      -					return operator === "!=";
      -				}
      -				if ( !operator ) {
      -					return true;
      -				}
      -
      -				result += "";
      -
      -				return operator === "=" ? result === check :
      -					operator === "!=" ? result !== check :
      -					operator === "^=" ? check && result.indexOf( check ) === 0 :
      -					operator === "*=" ? check && result.indexOf( check ) > -1 :
      -					operator === "$=" ? check && result.slice( -check.length ) === check :
      -					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
      -					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
      -					false;
      -			};
      -		},
      -
      -		"CHILD": function( type, what, argument, first, last ) {
      -			var simple = type.slice( 0, 3 ) !== "nth",
      -				forward = type.slice( -4 ) !== "last",
      -				ofType = what === "of-type";
      -
      -			return first === 1 && last === 0 ?
      -
      -				// Shortcut for :nth-*(n)
      -				function( elem ) {
      -					return !!elem.parentNode;
      -				} :
      -
      -				function( elem, context, xml ) {
      -					var cache, uniqueCache, outerCache, node, nodeIndex, start,
      -						dir = simple !== forward ? "nextSibling" : "previousSibling",
      -						parent = elem.parentNode,
      -						name = ofType && elem.nodeName.toLowerCase(),
      -						useCache = !xml && !ofType,
      -						diff = false;
      -
      -					if ( parent ) {
      -
      -						// :(first|last|only)-(child|of-type)
      -						if ( simple ) {
      -							while ( dir ) {
      -								node = elem;
      -								while ( (node = node[ dir ]) ) {
      -									if ( ofType ?
      -										node.nodeName.toLowerCase() === name :
      -										node.nodeType === 1 ) {
      -
      -										return false;
      -									}
      -								}
      -								// Reverse direction for :only-* (if we haven't yet done so)
      -								start = dir = type === "only" && !start && "nextSibling";
      -							}
      -							return true;
      -						}
      -
      -						start = [ forward ? parent.firstChild : parent.lastChild ];
      -
      -						// non-xml :nth-child(...) stores cache data on `parent`
      -						if ( forward && useCache ) {
      -
      -							// Seek `elem` from a previously-cached index
      -
      -							// ...in a gzip-friendly way
      -							node = parent;
      -							outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -							// Support: IE <9 only
      -							// Defend against cloned attroperties (jQuery gh-1709)
      -							uniqueCache = outerCache[ node.uniqueID ] ||
      -								(outerCache[ node.uniqueID ] = {});
      -
      -							cache = uniqueCache[ type ] || [];
      -							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
      -							diff = nodeIndex && cache[ 2 ];
      -							node = nodeIndex && parent.childNodes[ nodeIndex ];
      -
      -							while ( (node = ++nodeIndex && node && node[ dir ] ||
      -
      -								// Fallback to seeking `elem` from the start
      -								(diff = nodeIndex = 0) || start.pop()) ) {
      -
      -								// When found, cache indexes on `parent` and break
      -								if ( node.nodeType === 1 && ++diff && node === elem ) {
      -									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
      -									break;
      -								}
      -							}
      -
      -						} else {
      -							// Use previously-cached element index if available
      -							if ( useCache ) {
      -								// ...in a gzip-friendly way
      -								node = elem;
      -								outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -								// Support: IE <9 only
      -								// Defend against cloned attroperties (jQuery gh-1709)
      -								uniqueCache = outerCache[ node.uniqueID ] ||
      -									(outerCache[ node.uniqueID ] = {});
      -
      -								cache = uniqueCache[ type ] || [];
      -								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
      -								diff = nodeIndex;
      -							}
      -
      -							// xml :nth-child(...)
      -							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
      -							if ( diff === false ) {
      -								// Use the same loop as above to seek `elem` from the start
      -								while ( (node = ++nodeIndex && node && node[ dir ] ||
      -									(diff = nodeIndex = 0) || start.pop()) ) {
      -
      -									if ( ( ofType ?
      -										node.nodeName.toLowerCase() === name :
      -										node.nodeType === 1 ) &&
      -										++diff ) {
      -
      -										// Cache the index of each encountered element
      -										if ( useCache ) {
      -											outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -											// Support: IE <9 only
      -											// Defend against cloned attroperties (jQuery gh-1709)
      -											uniqueCache = outerCache[ node.uniqueID ] ||
      -												(outerCache[ node.uniqueID ] = {});
      -
      -											uniqueCache[ type ] = [ dirruns, diff ];
      -										}
      -
      -										if ( node === elem ) {
      -											break;
      -										}
      -									}
      -								}
      -							}
      -						}
      -
      -						// Incorporate the offset, then check against cycle size
      -						diff -= last;
      -						return diff === first || ( diff % first === 0 && diff / first >= 0 );
      -					}
      -				};
      -		},
      -
      -		"PSEUDO": function( pseudo, argument ) {
      -			// pseudo-class names are case-insensitive
      -			// http://www.w3.org/TR/selectors/#pseudo-classes
      -			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
      -			// Remember that setFilters inherits from pseudos
      -			var args,
      -				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
      -					Sizzle.error( "unsupported pseudo: " + pseudo );
      -
      -			// The user may use createPseudo to indicate that
      -			// arguments are needed to create the filter function
      -			// just as Sizzle does
      -			if ( fn[ expando ] ) {
      -				return fn( argument );
      -			}
      -
      -			// But maintain support for old signatures
      -			if ( fn.length > 1 ) {
      -				args = [ pseudo, pseudo, "", argument ];
      -				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
      -					markFunction(function( seed, matches ) {
      -						var idx,
      -							matched = fn( seed, argument ),
      -							i = matched.length;
      -						while ( i-- ) {
      -							idx = indexOf( seed, matched[i] );
      -							seed[ idx ] = !( matches[ idx ] = matched[i] );
      -						}
      -					}) :
      -					function( elem ) {
      -						return fn( elem, 0, args );
      -					};
      -			}
      -
      -			return fn;
      -		}
      -	},
      -
      -	pseudos: {
      -		// Potentially complex pseudos
      -		"not": markFunction(function( selector ) {
      -			// Trim the selector passed to compile
      -			// to avoid treating leading and trailing
      -			// spaces as combinators
      -			var input = [],
      -				results = [],
      -				matcher = compile( selector.replace( rtrim, "$1" ) );
      -
      -			return matcher[ expando ] ?
      -				markFunction(function( seed, matches, context, xml ) {
      -					var elem,
      -						unmatched = matcher( seed, null, xml, [] ),
      -						i = seed.length;
      -
      -					// Match elements unmatched by `matcher`
      -					while ( i-- ) {
      -						if ( (elem = unmatched[i]) ) {
      -							seed[i] = !(matches[i] = elem);
      -						}
      -					}
      -				}) :
      -				function( elem, context, xml ) {
      -					input[0] = elem;
      -					matcher( input, null, xml, results );
      -					// Don't keep the element (issue #299)
      -					input[0] = null;
      -					return !results.pop();
      -				};
      -		}),
      -
      -		"has": markFunction(function( selector ) {
      -			return function( elem ) {
      -				return Sizzle( selector, elem ).length > 0;
      -			};
      -		}),
      -
      -		"contains": markFunction(function( text ) {
      -			text = text.replace( runescape, funescape );
      -			return function( elem ) {
      -				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
      -			};
      -		}),
      -
      -		// "Whether an element is represented by a :lang() selector
      -		// is based solely on the element's language value
      -		// being equal to the identifier C,
      -		// or beginning with the identifier C immediately followed by "-".
      -		// The matching of C against the element's language value is performed case-insensitively.
      -		// The identifier C does not have to be a valid language name."
      -		// http://www.w3.org/TR/selectors/#lang-pseudo
      -		"lang": markFunction( function( lang ) {
      -			// lang value must be a valid identifier
      -			if ( !ridentifier.test(lang || "") ) {
      -				Sizzle.error( "unsupported lang: " + lang );
      -			}
      -			lang = lang.replace( runescape, funescape ).toLowerCase();
      -			return function( elem ) {
      -				var elemLang;
      -				do {
      -					if ( (elemLang = documentIsHTML ?
      -						elem.lang :
      -						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
      -
      -						elemLang = elemLang.toLowerCase();
      -						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
      -					}
      -				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
      -				return false;
      -			};
      -		}),
      -
      -		// Miscellaneous
      -		"target": function( elem ) {
      -			var hash = window.location && window.location.hash;
      -			return hash && hash.slice( 1 ) === elem.id;
      -		},
      -
      -		"root": function( elem ) {
      -			return elem === docElem;
      -		},
      -
      -		"focus": function( elem ) {
      -			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
      -		},
      -
      -		// Boolean properties
      -		"enabled": createDisabledPseudo( false ),
      -		"disabled": createDisabledPseudo( true ),
      -
      -		"checked": function( elem ) {
      -			// In CSS3, :checked should return both checked and selected elements
      -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -			var nodeName = elem.nodeName.toLowerCase();
      -			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
      -		},
      -
      -		"selected": function( elem ) {
      -			// Accessing this property makes selected-by-default
      -			// options in Safari work properly
      -			if ( elem.parentNode ) {
      -				elem.parentNode.selectedIndex;
      -			}
      -
      -			return elem.selected === true;
      -		},
      -
      -		// Contents
      -		"empty": function( elem ) {
      -			// http://www.w3.org/TR/selectors/#empty-pseudo
      -			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
      -			//   but not by others (comment: 8; processing instruction: 7; etc.)
      -			// nodeType < 6 works because attributes (2) do not appear as children
      -			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -				if ( elem.nodeType < 6 ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		},
      -
      -		"parent": function( elem ) {
      -			return !Expr.pseudos["empty"]( elem );
      -		},
      -
      -		// Element/input types
      -		"header": function( elem ) {
      -			return rheader.test( elem.nodeName );
      -		},
      -
      -		"input": function( elem ) {
      -			return rinputs.test( elem.nodeName );
      -		},
      -
      -		"button": function( elem ) {
      -			var name = elem.nodeName.toLowerCase();
      -			return name === "input" && elem.type === "button" || name === "button";
      -		},
      -
      -		"text": function( elem ) {
      -			var attr;
      -			return elem.nodeName.toLowerCase() === "input" &&
      -				elem.type === "text" &&
      -
      -				// Support: IE<8
      -				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
      -				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
      -		},
      -
      -		// Position-in-collection
      -		"first": createPositionalPseudo(function() {
      -			return [ 0 ];
      -		}),
      -
      -		"last": createPositionalPseudo(function( matchIndexes, length ) {
      -			return [ length - 1 ];
      -		}),
      -
      -		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			return [ argument < 0 ? argument + length : argument ];
      -		}),
      -
      -		"even": createPositionalPseudo(function( matchIndexes, length ) {
      -			var i = 0;
      -			for ( ; i < length; i += 2 ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"odd": createPositionalPseudo(function( matchIndexes, length ) {
      -			var i = 1;
      -			for ( ; i < length; i += 2 ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			var i = argument < 0 ? argument + length : argument;
      -			for ( ; --i >= 0; ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			var i = argument < 0 ? argument + length : argument;
      -			for ( ; ++i < length; ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		})
      -	}
      -};
      -
      -Expr.pseudos["nth"] = Expr.pseudos["eq"];
      -
      -// Add button/input type pseudos
      -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
      -	Expr.pseudos[ i ] = createInputPseudo( i );
      -}
      -for ( i in { submit: true, reset: true } ) {
      -	Expr.pseudos[ i ] = createButtonPseudo( i );
      -}
      -
      -// Easy API for creating new setFilters
      -function setFilters() {}
      -setFilters.prototype = Expr.filters = Expr.pseudos;
      -Expr.setFilters = new setFilters();
      -
      -tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
      -	var matched, match, tokens, type,
      -		soFar, groups, preFilters,
      -		cached = tokenCache[ selector + " " ];
      -
      -	if ( cached ) {
      -		return parseOnly ? 0 : cached.slice( 0 );
      -	}
      -
      -	soFar = selector;
      -	groups = [];
      -	preFilters = Expr.preFilter;
      -
      -	while ( soFar ) {
      -
      -		// Comma and first run
      -		if ( !matched || (match = rcomma.exec( soFar )) ) {
      -			if ( match ) {
      -				// Don't consume trailing commas as valid
      -				soFar = soFar.slice( match[0].length ) || soFar;
      -			}
      -			groups.push( (tokens = []) );
      -		}
      -
      -		matched = false;
      -
      -		// Combinators
      -		if ( (match = rcombinators.exec( soFar )) ) {
      -			matched = match.shift();
      -			tokens.push({
      -				value: matched,
      -				// Cast descendant combinators to space
      -				type: match[0].replace( rtrim, " " )
      -			});
      -			soFar = soFar.slice( matched.length );
      -		}
      -
      -		// Filters
      -		for ( type in Expr.filter ) {
      -			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
      -				(match = preFilters[ type ]( match ))) ) {
      -				matched = match.shift();
      -				tokens.push({
      -					value: matched,
      -					type: type,
      -					matches: match
      -				});
      -				soFar = soFar.slice( matched.length );
      -			}
      -		}
      -
      -		if ( !matched ) {
      -			break;
      -		}
      -	}
      -
      -	// Return the length of the invalid excess
      -	// if we're just parsing
      -	// Otherwise, throw an error or return tokens
      -	return parseOnly ?
      -		soFar.length :
      -		soFar ?
      -			Sizzle.error( selector ) :
      -			// Cache the tokens
      -			tokenCache( selector, groups ).slice( 0 );
      -};
      -
      -function toSelector( tokens ) {
      -	var i = 0,
      -		len = tokens.length,
      -		selector = "";
      -	for ( ; i < len; i++ ) {
      -		selector += tokens[i].value;
      -	}
      -	return selector;
      -}
      -
      -function addCombinator( matcher, combinator, base ) {
      -	var dir = combinator.dir,
      -		skip = combinator.next,
      -		key = skip || dir,
      -		checkNonElements = base && key === "parentNode",
      -		doneName = done++;
      -
      -	return combinator.first ?
      -		// Check against closest ancestor/preceding element
      -		function( elem, context, xml ) {
      -			while ( (elem = elem[ dir ]) ) {
      -				if ( elem.nodeType === 1 || checkNonElements ) {
      -					return matcher( elem, context, xml );
      -				}
      -			}
      -			return false;
      -		} :
      -
      -		// Check against all ancestor/preceding elements
      -		function( elem, context, xml ) {
      -			var oldCache, uniqueCache, outerCache,
      -				newCache = [ dirruns, doneName ];
      -
      -			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
      -			if ( xml ) {
      -				while ( (elem = elem[ dir ]) ) {
      -					if ( elem.nodeType === 1 || checkNonElements ) {
      -						if ( matcher( elem, context, xml ) ) {
      -							return true;
      -						}
      -					}
      -				}
      -			} else {
      -				while ( (elem = elem[ dir ]) ) {
      -					if ( elem.nodeType === 1 || checkNonElements ) {
      -						outerCache = elem[ expando ] || (elem[ expando ] = {});
      -
      -						// Support: IE <9 only
      -						// Defend against cloned attroperties (jQuery gh-1709)
      -						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
      -
      -						if ( skip && skip === elem.nodeName.toLowerCase() ) {
      -							elem = elem[ dir ] || elem;
      -						} else if ( (oldCache = uniqueCache[ key ]) &&
      -							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
      -
      -							// Assign to newCache so results back-propagate to previous elements
      -							return (newCache[ 2 ] = oldCache[ 2 ]);
      -						} else {
      -							// Reuse newcache so results back-propagate to previous elements
      -							uniqueCache[ key ] = newCache;
      -
      -							// A match means we're done; a fail means we have to keep checking
      -							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
      -								return true;
      -							}
      -						}
      -					}
      -				}
      -			}
      -			return false;
      -		};
      -}
      -
      -function elementMatcher( matchers ) {
      -	return matchers.length > 1 ?
      -		function( elem, context, xml ) {
      -			var i = matchers.length;
      -			while ( i-- ) {
      -				if ( !matchers[i]( elem, context, xml ) ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		} :
      -		matchers[0];
      -}
      -
      -function multipleContexts( selector, contexts, results ) {
      -	var i = 0,
      -		len = contexts.length;
      -	for ( ; i < len; i++ ) {
      -		Sizzle( selector, contexts[i], results );
      -	}
      -	return results;
      -}
      -
      -function condense( unmatched, map, filter, context, xml ) {
      -	var elem,
      -		newUnmatched = [],
      -		i = 0,
      -		len = unmatched.length,
      -		mapped = map != null;
      -
      -	for ( ; i < len; i++ ) {
      -		if ( (elem = unmatched[i]) ) {
      -			if ( !filter || filter( elem, context, xml ) ) {
      -				newUnmatched.push( elem );
      -				if ( mapped ) {
      -					map.push( i );
      -				}
      -			}
      -		}
      -	}
      -
      -	return newUnmatched;
      -}
      -
      -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
      -	if ( postFilter && !postFilter[ expando ] ) {
      -		postFilter = setMatcher( postFilter );
      -	}
      -	if ( postFinder && !postFinder[ expando ] ) {
      -		postFinder = setMatcher( postFinder, postSelector );
      -	}
      -	return markFunction(function( seed, results, context, xml ) {
      -		var temp, i, elem,
      -			preMap = [],
      -			postMap = [],
      -			preexisting = results.length,
      -
      -			// Get initial elements from seed or context
      -			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
      -
      -			// Prefilter to get matcher input, preserving a map for seed-results synchronization
      -			matcherIn = preFilter && ( seed || !selector ) ?
      -				condense( elems, preMap, preFilter, context, xml ) :
      -				elems,
      -
      -			matcherOut = matcher ?
      -				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
      -				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
      -
      -					// ...intermediate processing is necessary
      -					[] :
      -
      -					// ...otherwise use results directly
      -					results :
      -				matcherIn;
      -
      -		// Find primary matches
      -		if ( matcher ) {
      -			matcher( matcherIn, matcherOut, context, xml );
      -		}
      -
      -		// Apply postFilter
      -		if ( postFilter ) {
      -			temp = condense( matcherOut, postMap );
      -			postFilter( temp, [], context, xml );
      -
      -			// Un-match failing elements by moving them back to matcherIn
      -			i = temp.length;
      -			while ( i-- ) {
      -				if ( (elem = temp[i]) ) {
      -					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
      -				}
      -			}
      -		}
      -
      -		if ( seed ) {
      -			if ( postFinder || preFilter ) {
      -				if ( postFinder ) {
      -					// Get the final matcherOut by condensing this intermediate into postFinder contexts
      -					temp = [];
      -					i = matcherOut.length;
      -					while ( i-- ) {
      -						if ( (elem = matcherOut[i]) ) {
      -							// Restore matcherIn since elem is not yet a final match
      -							temp.push( (matcherIn[i] = elem) );
      -						}
      -					}
      -					postFinder( null, (matcherOut = []), temp, xml );
      -				}
      -
      -				// Move matched elements from seed to results to keep them synchronized
      -				i = matcherOut.length;
      -				while ( i-- ) {
      -					if ( (elem = matcherOut[i]) &&
      -						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
      -
      -						seed[temp] = !(results[temp] = elem);
      -					}
      -				}
      -			}
      -
      -		// Add elements to results, through postFinder if defined
      -		} else {
      -			matcherOut = condense(
      -				matcherOut === results ?
      -					matcherOut.splice( preexisting, matcherOut.length ) :
      -					matcherOut
      -			);
      -			if ( postFinder ) {
      -				postFinder( null, results, matcherOut, xml );
      -			} else {
      -				push.apply( results, matcherOut );
      -			}
      -		}
      -	});
      -}
      -
      -function matcherFromTokens( tokens ) {
      -	var checkContext, matcher, j,
      -		len = tokens.length,
      -		leadingRelative = Expr.relative[ tokens[0].type ],
      -		implicitRelative = leadingRelative || Expr.relative[" "],
      -		i = leadingRelative ? 1 : 0,
      -
      -		// The foundational matcher ensures that elements are reachable from top-level context(s)
      -		matchContext = addCombinator( function( elem ) {
      -			return elem === checkContext;
      -		}, implicitRelative, true ),
      -		matchAnyContext = addCombinator( function( elem ) {
      -			return indexOf( checkContext, elem ) > -1;
      -		}, implicitRelative, true ),
      -		matchers = [ function( elem, context, xml ) {
      -			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
      -				(checkContext = context).nodeType ?
      -					matchContext( elem, context, xml ) :
      -					matchAnyContext( elem, context, xml ) );
      -			// Avoid hanging onto element (issue #299)
      -			checkContext = null;
      -			return ret;
      -		} ];
      -
      -	for ( ; i < len; i++ ) {
      -		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
      -			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
      -		} else {
      -			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
      -
      -			// Return special upon seeing a positional matcher
      -			if ( matcher[ expando ] ) {
      -				// Find the next relative operator (if any) for proper handling
      -				j = ++i;
      -				for ( ; j < len; j++ ) {
      -					if ( Expr.relative[ tokens[j].type ] ) {
      -						break;
      -					}
      -				}
      -				return setMatcher(
      -					i > 1 && elementMatcher( matchers ),
      -					i > 1 && toSelector(
      -						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
      -						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
      -					).replace( rtrim, "$1" ),
      -					matcher,
      -					i < j && matcherFromTokens( tokens.slice( i, j ) ),
      -					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
      -					j < len && toSelector( tokens )
      -				);
      -			}
      -			matchers.push( matcher );
      -		}
      -	}
      -
      -	return elementMatcher( matchers );
      -}
      -
      -function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
      -	var bySet = setMatchers.length > 0,
      -		byElement = elementMatchers.length > 0,
      -		superMatcher = function( seed, context, xml, results, outermost ) {
      -			var elem, j, matcher,
      -				matchedCount = 0,
      -				i = "0",
      -				unmatched = seed && [],
      -				setMatched = [],
      -				contextBackup = outermostContext,
      -				// We must always have either seed elements or outermost context
      -				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
      -				// Use integer dirruns iff this is the outermost matcher
      -				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
      -				len = elems.length;
      -
      -			if ( outermost ) {
      -				outermostContext = context === document || context || outermost;
      -			}
      -
      -			// Add elements passing elementMatchers directly to results
      -			// Support: IE<9, Safari
      -			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
      -			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
      -				if ( byElement && elem ) {
      -					j = 0;
      -					if ( !context && elem.ownerDocument !== document ) {
      -						setDocument( elem );
      -						xml = !documentIsHTML;
      -					}
      -					while ( (matcher = elementMatchers[j++]) ) {
      -						if ( matcher( elem, context || document, xml) ) {
      -							results.push( elem );
      -							break;
      -						}
      -					}
      -					if ( outermost ) {
      -						dirruns = dirrunsUnique;
      -					}
      -				}
      -
      -				// Track unmatched elements for set filters
      -				if ( bySet ) {
      -					// They will have gone through all possible matchers
      -					if ( (elem = !matcher && elem) ) {
      -						matchedCount--;
      -					}
      -
      -					// Lengthen the array for every element, matched or not
      -					if ( seed ) {
      -						unmatched.push( elem );
      -					}
      -				}
      -			}
      -
      -			// `i` is now the count of elements visited above, and adding it to `matchedCount`
      -			// makes the latter nonnegative.
      -			matchedCount += i;
      -
      -			// Apply set filters to unmatched elements
      -			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
      -			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
      -			// no element matchers and no seed.
      -			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
      -			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
      -			// numerically zero.
      -			if ( bySet && i !== matchedCount ) {
      -				j = 0;
      -				while ( (matcher = setMatchers[j++]) ) {
      -					matcher( unmatched, setMatched, context, xml );
      -				}
      -
      -				if ( seed ) {
      -					// Reintegrate element matches to eliminate the need for sorting
      -					if ( matchedCount > 0 ) {
      -						while ( i-- ) {
      -							if ( !(unmatched[i] || setMatched[i]) ) {
      -								setMatched[i] = pop.call( results );
      -							}
      -						}
      -					}
      -
      -					// Discard index placeholder values to get only actual matches
      -					setMatched = condense( setMatched );
      -				}
      -
      -				// Add matches to results
      -				push.apply( results, setMatched );
      -
      -				// Seedless set matches succeeding multiple successful matchers stipulate sorting
      -				if ( outermost && !seed && setMatched.length > 0 &&
      -					( matchedCount + setMatchers.length ) > 1 ) {
      -
      -					Sizzle.uniqueSort( results );
      -				}
      -			}
      -
      -			// Override manipulation of globals by nested matchers
      -			if ( outermost ) {
      -				dirruns = dirrunsUnique;
      -				outermostContext = contextBackup;
      -			}
      -
      -			return unmatched;
      -		};
      -
      -	return bySet ?
      -		markFunction( superMatcher ) :
      -		superMatcher;
      -}
      -
      -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
      -	var i,
      -		setMatchers = [],
      -		elementMatchers = [],
      -		cached = compilerCache[ selector + " " ];
      -
      -	if ( !cached ) {
      -		// Generate a function of recursive functions that can be used to check each element
      -		if ( !match ) {
      -			match = tokenize( selector );
      -		}
      -		i = match.length;
      -		while ( i-- ) {
      -			cached = matcherFromTokens( match[i] );
      -			if ( cached[ expando ] ) {
      -				setMatchers.push( cached );
      -			} else {
      -				elementMatchers.push( cached );
      -			}
      -		}
      -
      -		// Cache the compiled function
      -		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
      -
      -		// Save selector and tokenization
      -		cached.selector = selector;
      -	}
      -	return cached;
      -};
      -
      -/**
      - * A low-level selection function that works with Sizzle's compiled
      - *  selector functions
      - * @param {String|Function} selector A selector or a pre-compiled
      - *  selector function built with Sizzle.compile
      - * @param {Element} context
      - * @param {Array} [results]
      - * @param {Array} [seed] A set of elements to match against
      - */
      -select = Sizzle.select = function( selector, context, results, seed ) {
      -	var i, tokens, token, type, find,
      -		compiled = typeof selector === "function" && selector,
      -		match = !seed && tokenize( (selector = compiled.selector || selector) );
      -
      -	results = results || [];
      -
      -	// Try to minimize operations if there is only one selector in the list and no seed
      -	// (the latter of which guarantees us context)
      -	if ( match.length === 1 ) {
      -
      -		// Reduce context if the leading compound selector is an ID
      -		tokens = match[0] = match[0].slice( 0 );
      -		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
      -				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
      -
      -			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
      -			if ( !context ) {
      -				return results;
      -
      -			// Precompiled matchers will still verify ancestry, so step up a level
      -			} else if ( compiled ) {
      -				context = context.parentNode;
      -			}
      -
      -			selector = selector.slice( tokens.shift().value.length );
      -		}
      -
      -		// Fetch a seed set for right-to-left matching
      -		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
      -		while ( i-- ) {
      -			token = tokens[i];
      -
      -			// Abort if we hit a combinator
      -			if ( Expr.relative[ (type = token.type) ] ) {
      -				break;
      -			}
      -			if ( (find = Expr.find[ type ]) ) {
      -				// Search, expanding context for leading sibling combinators
      -				if ( (seed = find(
      -					token.matches[0].replace( runescape, funescape ),
      -					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
      -				)) ) {
      -
      -					// If seed is empty or no tokens remain, we can return early
      -					tokens.splice( i, 1 );
      -					selector = seed.length && toSelector( tokens );
      -					if ( !selector ) {
      -						push.apply( results, seed );
      -						return results;
      -					}
      -
      -					break;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Compile and execute a filtering function if one is not provided
      -	// Provide `match` to avoid retokenization if we modified the selector above
      -	( compiled || compile( selector, match ) )(
      -		seed,
      -		context,
      -		!documentIsHTML,
      -		results,
      -		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
      -	);
      -	return results;
      -};
      -
      -// One-time assignments
      -
      -// Sort stability
      -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
      -
      -// Support: Chrome 14-35+
      -// Always assume duplicates if they aren't passed to the comparison function
      -support.detectDuplicates = !!hasDuplicate;
      -
      -// Initialize against the default document
      -setDocument();
      -
      -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
      -// Detached nodes confoundingly follow *each other*
      -support.sortDetached = assert(function( el ) {
      -	// Should return 1, but returns 4 (following)
      -	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
      -});
      -
      -// Support: IE<8
      -// Prevent attribute/property "interpolation"
      -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
      -if ( !assert(function( el ) {
      -	el.innerHTML = "<a href='#'></a>";
      -	return el.firstChild.getAttribute("href") === "#" ;
      -}) ) {
      -	addHandle( "type|href|height|width", function( elem, name, isXML ) {
      -		if ( !isXML ) {
      -			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
      -		}
      -	});
      -}
      -
      -// Support: IE<9
      -// Use defaultValue in place of getAttribute("value")
      -if ( !support.attributes || !assert(function( el ) {
      -	el.innerHTML = "<input/>";
      -	el.firstChild.setAttribute( "value", "" );
      -	return el.firstChild.getAttribute( "value" ) === "";
      -}) ) {
      -	addHandle( "value", function( elem, name, isXML ) {
      -		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
      -			return elem.defaultValue;
      -		}
      -	});
      -}
      -
      -// Support: IE<9
      -// Use getAttributeNode to fetch booleans when getAttribute lies
      -if ( !assert(function( el ) {
      -	return el.getAttribute("disabled") == null;
      -}) ) {
      -	addHandle( booleans, function( elem, name, isXML ) {
      -		var val;
      -		if ( !isXML ) {
      -			return elem[ name ] === true ? name.toLowerCase() :
      -					(val = elem.getAttributeNode( name )) && val.specified ?
      -					val.value :
      -				null;
      -		}
      -	});
      -}
      -
      -return Sizzle;
      -
      -})( window );
      -
      -
      -
      -jQuery.find = Sizzle;
      -jQuery.expr = Sizzle.selectors;
      -
      -// Deprecated
      -jQuery.expr[ ":" ] = jQuery.expr.pseudos;
      -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
      -jQuery.text = Sizzle.getText;
      -jQuery.isXMLDoc = Sizzle.isXML;
      -jQuery.contains = Sizzle.contains;
      -jQuery.escapeSelector = Sizzle.escape;
      -
      -
      -
      -
      -var dir = function( elem, dir, until ) {
      -	var matched = [],
      -		truncate = until !== undefined;
      -
      -	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
      -		if ( elem.nodeType === 1 ) {
      -			if ( truncate && jQuery( elem ).is( until ) ) {
      -				break;
      -			}
      -			matched.push( elem );
      -		}
      -	}
      -	return matched;
      -};
      -
      -
      -var siblings = function( n, elem ) {
      -	var matched = [];
      -
      -	for ( ; n; n = n.nextSibling ) {
      -		if ( n.nodeType === 1 && n !== elem ) {
      -			matched.push( n );
      -		}
      -	}
      -
      -	return matched;
      -};
      -
      -
      -var rneedsContext = jQuery.expr.match.needsContext;
      -
      -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
      -
      -
      -
      -var risSimple = /^.[^:#\[\.,]*$/;
      -
      -// Implement the identical functionality for filter and not
      -function winnow( elements, qualifier, not ) {
      -	if ( jQuery.isFunction( qualifier ) ) {
      -		return jQuery.grep( elements, function( elem, i ) {
      -			return !!qualifier.call( elem, i, elem ) !== not;
      -		} );
      -	}
      -
      -	// Single element
      -	if ( qualifier.nodeType ) {
      -		return jQuery.grep( elements, function( elem ) {
      -			return ( elem === qualifier ) !== not;
      -		} );
      -	}
      -
      -	// Arraylike of elements (jQuery, arguments, Array)
      -	if ( typeof qualifier !== "string" ) {
      -		return jQuery.grep( elements, function( elem ) {
      -			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
      -		} );
      -	}
      -
      -	// Simple selector that can be filtered directly, removing non-Elements
      -	if ( risSimple.test( qualifier ) ) {
      -		return jQuery.filter( qualifier, elements, not );
      -	}
      -
      -	// Complex selector, compare the two sets, removing non-Elements
      -	qualifier = jQuery.filter( qualifier, elements );
      -	return jQuery.grep( elements, function( elem ) {
      -		return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
      -	} );
      -}
      -
      -jQuery.filter = function( expr, elems, not ) {
      -	var elem = elems[ 0 ];
      -
      -	if ( not ) {
      -		expr = ":not(" + expr + ")";
      -	}
      -
      -	if ( elems.length === 1 && elem.nodeType === 1 ) {
      -		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
      -	}
      -
      -	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
      -		return elem.nodeType === 1;
      -	} ) );
      -};
      -
      -jQuery.fn.extend( {
      -	find: function( selector ) {
      -		var i, ret,
      -			len = this.length,
      -			self = this;
      -
      -		if ( typeof selector !== "string" ) {
      -			return this.pushStack( jQuery( selector ).filter( function() {
      -				for ( i = 0; i < len; i++ ) {
      -					if ( jQuery.contains( self[ i ], this ) ) {
      -						return true;
      -					}
      -				}
      -			} ) );
      -		}
      -
      -		ret = this.pushStack( [] );
      -
      -		for ( i = 0; i < len; i++ ) {
      -			jQuery.find( selector, self[ i ], ret );
      -		}
      -
      -		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
      -	},
      -	filter: function( selector ) {
      -		return this.pushStack( winnow( this, selector || [], false ) );
      -	},
      -	not: function( selector ) {
      -		return this.pushStack( winnow( this, selector || [], true ) );
      -	},
      -	is: function( selector ) {
      -		return !!winnow(
      -			this,
      -
      -			// If this is a positional/relative selector, check membership in the returned set
      -			// so $("p:first").is("p:last") won't return true for a doc with two "p".
      -			typeof selector === "string" && rneedsContext.test( selector ) ?
      -				jQuery( selector ) :
      -				selector || [],
      -			false
      -		).length;
      -	}
      -} );
      -
      -
      -// Initialize a jQuery object
      -
      -
      -// A central reference to the root jQuery(document)
      -var rootjQuery,
      -
      -	// A simple way to check for HTML strings
      -	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
      -	// Strict HTML recognition (#11290: must start with <)
      -	// Shortcut simple #id case for speed
      -	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
      -
      -	init = jQuery.fn.init = function( selector, context, root ) {
      -		var match, elem;
      -
      -		// HANDLE: $(""), $(null), $(undefined), $(false)
      -		if ( !selector ) {
      -			return this;
      -		}
      -
      -		// Method init() accepts an alternate rootjQuery
      -		// so migrate can support jQuery.sub (gh-2101)
      -		root = root || rootjQuery;
      -
      -		// Handle HTML strings
      -		if ( typeof selector === "string" ) {
      -			if ( selector[ 0 ] === "<" &&
      -				selector[ selector.length - 1 ] === ">" &&
      -				selector.length >= 3 ) {
      -
      -				// Assume that strings that start and end with <> are HTML and skip the regex check
      -				match = [ null, selector, null ];
      -
      -			} else {
      -				match = rquickExpr.exec( selector );
      -			}
      -
      -			// Match html or make sure no context is specified for #id
      -			if ( match && ( match[ 1 ] || !context ) ) {
      -
      -				// HANDLE: $(html) -> $(array)
      -				if ( match[ 1 ] ) {
      -					context = context instanceof jQuery ? context[ 0 ] : context;
      -
      -					// Option to run scripts is true for back-compat
      -					// Intentionally let the error be thrown if parseHTML is not present
      -					jQuery.merge( this, jQuery.parseHTML(
      -						match[ 1 ],
      -						context && context.nodeType ? context.ownerDocument || context : document,
      -						true
      -					) );
      -
      -					// HANDLE: $(html, props)
      -					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
      -						for ( match in context ) {
      -
      -							// Properties of context are called as methods if possible
      -							if ( jQuery.isFunction( this[ match ] ) ) {
      -								this[ match ]( context[ match ] );
      -
      -							// ...and otherwise set as attributes
      -							} else {
      -								this.attr( match, context[ match ] );
      -							}
      -						}
      -					}
      -
      -					return this;
      -
      -				// HANDLE: $(#id)
      -				} else {
      -					elem = document.getElementById( match[ 2 ] );
      -
      -					if ( elem ) {
      -
      -						// Inject the element directly into the jQuery object
      -						this[ 0 ] = elem;
      -						this.length = 1;
      -					}
      -					return this;
      -				}
      -
      -			// HANDLE: $(expr, $(...))
      -			} else if ( !context || context.jquery ) {
      -				return ( context || root ).find( selector );
      -
      -			// HANDLE: $(expr, context)
      -			// (which is just equivalent to: $(context).find(expr)
      -			} else {
      -				return this.constructor( context ).find( selector );
      -			}
      -
      -		// HANDLE: $(DOMElement)
      -		} else if ( selector.nodeType ) {
      -			this[ 0 ] = selector;
      -			this.length = 1;
      -			return this;
      -
      -		// HANDLE: $(function)
      -		// Shortcut for document ready
      -		} else if ( jQuery.isFunction( selector ) ) {
      -			return root.ready !== undefined ?
      -				root.ready( selector ) :
      -
      -				// Execute immediately if ready is not present
      -				selector( jQuery );
      -		}
      -
      -		return jQuery.makeArray( selector, this );
      -	};
      -
      -// Give the init function the jQuery prototype for later instantiation
      -init.prototype = jQuery.fn;
      -
      -// Initialize central reference
      -rootjQuery = jQuery( document );
      -
      -
      -var rparentsprev = /^(?:parents|prev(?:Until|All))/,
      -
      -	// Methods guaranteed to produce a unique set when starting from a unique set
      -	guaranteedUnique = {
      -		children: true,
      -		contents: true,
      -		next: true,
      -		prev: true
      -	};
      -
      -jQuery.fn.extend( {
      -	has: function( target ) {
      -		var targets = jQuery( target, this ),
      -			l = targets.length;
      -
      -		return this.filter( function() {
      -			var i = 0;
      -			for ( ; i < l; i++ ) {
      -				if ( jQuery.contains( this, targets[ i ] ) ) {
      -					return true;
      -				}
      -			}
      -		} );
      -	},
      -
      -	closest: function( selectors, context ) {
      -		var cur,
      -			i = 0,
      -			l = this.length,
      -			matched = [],
      -			targets = typeof selectors !== "string" && jQuery( selectors );
      -
      -		// Positional selectors never match, since there's no _selection_ context
      -		if ( !rneedsContext.test( selectors ) ) {
      -			for ( ; i < l; i++ ) {
      -				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
      -
      -					// Always skip document fragments
      -					if ( cur.nodeType < 11 && ( targets ?
      -						targets.index( cur ) > -1 :
      -
      -						// Don't pass non-elements to Sizzle
      -						cur.nodeType === 1 &&
      -							jQuery.find.matchesSelector( cur, selectors ) ) ) {
      -
      -						matched.push( cur );
      -						break;
      -					}
      -				}
      -			}
      -		}
      -
      -		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
      -	},
      -
      -	// Determine the position of an element within the set
      -	index: function( elem ) {
      -
      -		// No argument, return index in parent
      -		if ( !elem ) {
      -			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
      -		}
      -
      -		// Index in selector
      -		if ( typeof elem === "string" ) {
      -			return indexOf.call( jQuery( elem ), this[ 0 ] );
      -		}
      -
      -		// Locate the position of the desired element
      -		return indexOf.call( this,
      -
      -			// If it receives a jQuery object, the first element is used
      -			elem.jquery ? elem[ 0 ] : elem
      -		);
      -	},
      -
      -	add: function( selector, context ) {
      -		return this.pushStack(
      -			jQuery.uniqueSort(
      -				jQuery.merge( this.get(), jQuery( selector, context ) )
      -			)
      -		);
      -	},
      -
      -	addBack: function( selector ) {
      -		return this.add( selector == null ?
      -			this.prevObject : this.prevObject.filter( selector )
      -		);
      -	}
      -} );
      -
      -function sibling( cur, dir ) {
      -	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
      -	return cur;
      -}
      -
      -jQuery.each( {
      -	parent: function( elem ) {
      -		var parent = elem.parentNode;
      -		return parent && parent.nodeType !== 11 ? parent : null;
      -	},
      -	parents: function( elem ) {
      -		return dir( elem, "parentNode" );
      -	},
      -	parentsUntil: function( elem, i, until ) {
      -		return dir( elem, "parentNode", until );
      -	},
      -	next: function( elem ) {
      -		return sibling( elem, "nextSibling" );
      -	},
      -	prev: function( elem ) {
      -		return sibling( elem, "previousSibling" );
      -	},
      -	nextAll: function( elem ) {
      -		return dir( elem, "nextSibling" );
      -	},
      -	prevAll: function( elem ) {
      -		return dir( elem, "previousSibling" );
      -	},
      -	nextUntil: function( elem, i, until ) {
      -		return dir( elem, "nextSibling", until );
      -	},
      -	prevUntil: function( elem, i, until ) {
      -		return dir( elem, "previousSibling", until );
      -	},
      -	siblings: function( elem ) {
      -		return siblings( ( elem.parentNode || {} ).firstChild, elem );
      -	},
      -	children: function( elem ) {
      -		return siblings( elem.firstChild );
      -	},
      -	contents: function( elem ) {
      -		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
      -	}
      -}, function( name, fn ) {
      -	jQuery.fn[ name ] = function( until, selector ) {
      -		var matched = jQuery.map( this, fn, until );
      -
      -		if ( name.slice( -5 ) !== "Until" ) {
      -			selector = until;
      -		}
      -
      -		if ( selector && typeof selector === "string" ) {
      -			matched = jQuery.filter( selector, matched );
      -		}
      -
      -		if ( this.length > 1 ) {
      -
      -			// Remove duplicates
      -			if ( !guaranteedUnique[ name ] ) {
      -				jQuery.uniqueSort( matched );
      -			}
      -
      -			// Reverse order for parents* and prev-derivatives
      -			if ( rparentsprev.test( name ) ) {
      -				matched.reverse();
      -			}
      -		}
      -
      -		return this.pushStack( matched );
      -	};
      -} );
      -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
      -
      -
      -
      -// Convert String-formatted options into Object-formatted ones
      -function createOptions( options ) {
      -	var object = {};
      -	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
      -		object[ flag ] = true;
      -	} );
      -	return object;
      -}
      -
      -/*
      - * Create a callback list using the following parameters:
      - *
      - *	options: an optional list of space-separated options that will change how
      - *			the callback list behaves or a more traditional option object
      - *
      - * By default a callback list will act like an event callback list and can be
      - * "fired" multiple times.
      - *
      - * Possible options:
      - *
      - *	once:			will ensure the callback list can only be fired once (like a Deferred)
      - *
      - *	memory:			will keep track of previous values and will call any callback added
      - *					after the list has been fired right away with the latest "memorized"
      - *					values (like a Deferred)
      - *
      - *	unique:			will ensure a callback can only be added once (no duplicate in the list)
      - *
      - *	stopOnFalse:	interrupt callings when a callback returns false
      - *
      - */
      -jQuery.Callbacks = function( options ) {
      -
      -	// Convert options from String-formatted to Object-formatted if needed
      -	// (we check in cache first)
      -	options = typeof options === "string" ?
      -		createOptions( options ) :
      -		jQuery.extend( {}, options );
      -
      -	var // Flag to know if list is currently firing
      -		firing,
      -
      -		// Last fire value for non-forgettable lists
      -		memory,
      -
      -		// Flag to know if list was already fired
      -		fired,
      -
      -		// Flag to prevent firing
      -		locked,
      -
      -		// Actual callback list
      -		list = [],
      -
      -		// Queue of execution data for repeatable lists
      -		queue = [],
      -
      -		// Index of currently firing callback (modified by add/remove as needed)
      -		firingIndex = -1,
      -
      -		// Fire callbacks
      -		fire = function() {
      -
      -			// Enforce single-firing
      -			locked = options.once;
      -
      -			// Execute callbacks for all pending executions,
      -			// respecting firingIndex overrides and runtime changes
      -			fired = firing = true;
      -			for ( ; queue.length; firingIndex = -1 ) {
      -				memory = queue.shift();
      -				while ( ++firingIndex < list.length ) {
      -
      -					// Run callback and check for early termination
      -					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
      -						options.stopOnFalse ) {
      -
      -						// Jump to end and forget the data so .add doesn't re-fire
      -						firingIndex = list.length;
      -						memory = false;
      -					}
      -				}
      -			}
      -
      -			// Forget the data if we're done with it
      -			if ( !options.memory ) {
      -				memory = false;
      -			}
      -
      -			firing = false;
      -
      -			// Clean up if we're done firing for good
      -			if ( locked ) {
      -
      -				// Keep an empty list if we have data for future add calls
      -				if ( memory ) {
      -					list = [];
      -
      -				// Otherwise, this object is spent
      -				} else {
      -					list = "";
      -				}
      -			}
      -		},
      -
      -		// Actual Callbacks object
      -		self = {
      -
      -			// Add a callback or a collection of callbacks to the list
      -			add: function() {
      -				if ( list ) {
      -
      -					// If we have memory from a past run, we should fire after adding
      -					if ( memory && !firing ) {
      -						firingIndex = list.length - 1;
      -						queue.push( memory );
      -					}
      -
      -					( function add( args ) {
      -						jQuery.each( args, function( _, arg ) {
      -							if ( jQuery.isFunction( arg ) ) {
      -								if ( !options.unique || !self.has( arg ) ) {
      -									list.push( arg );
      -								}
      -							} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
      -
      -								// Inspect recursively
      -								add( arg );
      -							}
      -						} );
      -					} )( arguments );
      -
      -					if ( memory && !firing ) {
      -						fire();
      -					}
      -				}
      -				return this;
      -			},
      -
      -			// Remove a callback from the list
      -			remove: function() {
      -				jQuery.each( arguments, function( _, arg ) {
      -					var index;
      -					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
      -						list.splice( index, 1 );
      -
      -						// Handle firing indexes
      -						if ( index <= firingIndex ) {
      -							firingIndex--;
      -						}
      -					}
      -				} );
      -				return this;
      -			},
      -
      -			// Check if a given callback is in the list.
      -			// If no argument is given, return whether or not list has callbacks attached.
      -			has: function( fn ) {
      -				return fn ?
      -					jQuery.inArray( fn, list ) > -1 :
      -					list.length > 0;
      -			},
      -
      -			// Remove all callbacks from the list
      -			empty: function() {
      -				if ( list ) {
      -					list = [];
      -				}
      -				return this;
      -			},
      -
      -			// Disable .fire and .add
      -			// Abort any current/pending executions
      -			// Clear all callbacks and values
      -			disable: function() {
      -				locked = queue = [];
      -				list = memory = "";
      -				return this;
      -			},
      -			disabled: function() {
      -				return !list;
      -			},
      -
      -			// Disable .fire
      -			// Also disable .add unless we have memory (since it would have no effect)
      -			// Abort any pending executions
      -			lock: function() {
      -				locked = queue = [];
      -				if ( !memory && !firing ) {
      -					list = memory = "";
      -				}
      -				return this;
      -			},
      -			locked: function() {
      -				return !!locked;
      -			},
      -
      -			// Call all callbacks with the given context and arguments
      -			fireWith: function( context, args ) {
      -				if ( !locked ) {
      -					args = args || [];
      -					args = [ context, args.slice ? args.slice() : args ];
      -					queue.push( args );
      -					if ( !firing ) {
      -						fire();
      -					}
      -				}
      -				return this;
      -			},
      -
      -			// Call all the callbacks with the given arguments
      -			fire: function() {
      -				self.fireWith( this, arguments );
      -				return this;
      -			},
      -
      -			// To know if the callbacks have already been called at least once
      -			fired: function() {
      -				return !!fired;
      -			}
      -		};
      -
      -	return self;
      -};
      -
      -
      -function Identity( v ) {
      -	return v;
      -}
      -function Thrower( ex ) {
      -	throw ex;
      -}
      -
      -function adoptValue( value, resolve, reject ) {
      -	var method;
      -
      -	try {
      -
      -		// Check for promise aspect first to privilege synchronous behavior
      -		if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
      -			method.call( value ).done( resolve ).fail( reject );
      -
      -		// Other thenables
      -		} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
      -			method.call( value, resolve, reject );
      -
      -		// Other non-thenables
      -		} else {
      -
      -			// Support: Android 4.0 only
      -			// Strict mode functions invoked without .call/.apply get global-object context
      -			resolve.call( undefined, value );
      -		}
      -
      -	// For Promises/A+, convert exceptions into rejections
      -	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
      -	// Deferred#then to conditionally suppress rejection.
      -	} catch ( value ) {
      -
      -		// Support: Android 4.0 only
      -		// Strict mode functions invoked without .call/.apply get global-object context
      -		reject.call( undefined, value );
      -	}
      -}
      -
      -jQuery.extend( {
      -
      -	Deferred: function( func ) {
      -		var tuples = [
      -
      -				// action, add listener, callbacks,
      -				// ... .then handlers, argument index, [final state]
      -				[ "notify", "progress", jQuery.Callbacks( "memory" ),
      -					jQuery.Callbacks( "memory" ), 2 ],
      -				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
      -					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
      -				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
      -					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
      -			],
      -			state = "pending",
      -			promise = {
      -				state: function() {
      -					return state;
      -				},
      -				always: function() {
      -					deferred.done( arguments ).fail( arguments );
      -					return this;
      -				},
      -				"catch": function( fn ) {
      -					return promise.then( null, fn );
      -				},
      -
      -				// Keep pipe for back-compat
      -				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
      -					var fns = arguments;
      -
      -					return jQuery.Deferred( function( newDefer ) {
      -						jQuery.each( tuples, function( i, tuple ) {
      -
      -							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
      -							var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
      -
      -							// deferred.progress(function() { bind to newDefer or newDefer.notify })
      -							// deferred.done(function() { bind to newDefer or newDefer.resolve })
      -							// deferred.fail(function() { bind to newDefer or newDefer.reject })
      -							deferred[ tuple[ 1 ] ]( function() {
      -								var returned = fn && fn.apply( this, arguments );
      -								if ( returned && jQuery.isFunction( returned.promise ) ) {
      -									returned.promise()
      -										.progress( newDefer.notify )
      -										.done( newDefer.resolve )
      -										.fail( newDefer.reject );
      -								} else {
      -									newDefer[ tuple[ 0 ] + "With" ](
      -										this,
      -										fn ? [ returned ] : arguments
      -									);
      -								}
      -							} );
      -						} );
      -						fns = null;
      -					} ).promise();
      -				},
      -				then: function( onFulfilled, onRejected, onProgress ) {
      -					var maxDepth = 0;
      -					function resolve( depth, deferred, handler, special ) {
      -						return function() {
      -							var that = this,
      -								args = arguments,
      -								mightThrow = function() {
      -									var returned, then;
      -
      -									// Support: Promises/A+ section 2.3.3.3.3
      -									// https://promisesaplus.com/#point-59
      -									// Ignore double-resolution attempts
      -									if ( depth < maxDepth ) {
      -										return;
      -									}
      -
      -									returned = handler.apply( that, args );
      -
      -									// Support: Promises/A+ section 2.3.1
      -									// https://promisesaplus.com/#point-48
      -									if ( returned === deferred.promise() ) {
      -										throw new TypeError( "Thenable self-resolution" );
      -									}
      -
      -									// Support: Promises/A+ sections 2.3.3.1, 3.5
      -									// https://promisesaplus.com/#point-54
      -									// https://promisesaplus.com/#point-75
      -									// Retrieve `then` only once
      -									then = returned &&
      -
      -										// Support: Promises/A+ section 2.3.4
      -										// https://promisesaplus.com/#point-64
      -										// Only check objects and functions for thenability
      -										( typeof returned === "object" ||
      -											typeof returned === "function" ) &&
      -										returned.then;
      -
      -									// Handle a returned thenable
      -									if ( jQuery.isFunction( then ) ) {
      -
      -										// Special processors (notify) just wait for resolution
      -										if ( special ) {
      -											then.call(
      -												returned,
      -												resolve( maxDepth, deferred, Identity, special ),
      -												resolve( maxDepth, deferred, Thrower, special )
      -											);
      -
      -										// Normal processors (resolve) also hook into progress
      -										} else {
      -
      -											// ...and disregard older resolution values
      -											maxDepth++;
      -
      -											then.call(
      -												returned,
      -												resolve( maxDepth, deferred, Identity, special ),
      -												resolve( maxDepth, deferred, Thrower, special ),
      -												resolve( maxDepth, deferred, Identity,
      -													deferred.notifyWith )
      -											);
      -										}
      -
      -									// Handle all other returned values
      -									} else {
      -
      -										// Only substitute handlers pass on context
      -										// and multiple values (non-spec behavior)
      -										if ( handler !== Identity ) {
      -											that = undefined;
      -											args = [ returned ];
      -										}
      -
      -										// Process the value(s)
      -										// Default process is resolve
      -										( special || deferred.resolveWith )( that, args );
      -									}
      -								},
      -
      -								// Only normal processors (resolve) catch and reject exceptions
      -								process = special ?
      -									mightThrow :
      -									function() {
      -										try {
      -											mightThrow();
      -										} catch ( e ) {
      -
      -											if ( jQuery.Deferred.exceptionHook ) {
      -												jQuery.Deferred.exceptionHook( e,
      -													process.stackTrace );
      -											}
      -
      -											// Support: Promises/A+ section 2.3.3.3.4.1
      -											// https://promisesaplus.com/#point-61
      -											// Ignore post-resolution exceptions
      -											if ( depth + 1 >= maxDepth ) {
      -
      -												// Only substitute handlers pass on context
      -												// and multiple values (non-spec behavior)
      -												if ( handler !== Thrower ) {
      -													that = undefined;
      -													args = [ e ];
      -												}
      -
      -												deferred.rejectWith( that, args );
      -											}
      -										}
      -									};
      -
      -							// Support: Promises/A+ section 2.3.3.3.1
      -							// https://promisesaplus.com/#point-57
      -							// Re-resolve promises immediately to dodge false rejection from
      -							// subsequent errors
      -							if ( depth ) {
      -								process();
      -							} else {
      -
      -								// Call an optional hook to record the stack, in case of exception
      -								// since it's otherwise lost when execution goes async
      -								if ( jQuery.Deferred.getStackHook ) {
      -									process.stackTrace = jQuery.Deferred.getStackHook();
      -								}
      -								window.setTimeout( process );
      -							}
      -						};
      -					}
      -
      -					return jQuery.Deferred( function( newDefer ) {
      -
      -						// progress_handlers.add( ... )
      -						tuples[ 0 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onProgress ) ?
      -									onProgress :
      -									Identity,
      -								newDefer.notifyWith
      -							)
      -						);
      -
      -						// fulfilled_handlers.add( ... )
      -						tuples[ 1 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onFulfilled ) ?
      -									onFulfilled :
      -									Identity
      -							)
      -						);
      -
      -						// rejected_handlers.add( ... )
      -						tuples[ 2 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onRejected ) ?
      -									onRejected :
      -									Thrower
      -							)
      -						);
      -					} ).promise();
      -				},
      -
      -				// Get a promise for this deferred
      -				// If obj is provided, the promise aspect is added to the object
      -				promise: function( obj ) {
      -					return obj != null ? jQuery.extend( obj, promise ) : promise;
      -				}
      -			},
      -			deferred = {};
      -
      -		// Add list-specific methods
      -		jQuery.each( tuples, function( i, tuple ) {
      -			var list = tuple[ 2 ],
      -				stateString = tuple[ 5 ];
      -
      -			// promise.progress = list.add
      -			// promise.done = list.add
      -			// promise.fail = list.add
      -			promise[ tuple[ 1 ] ] = list.add;
      -
      -			// Handle state
      -			if ( stateString ) {
      -				list.add(
      -					function() {
      -
      -						// state = "resolved" (i.e., fulfilled)
      -						// state = "rejected"
      -						state = stateString;
      -					},
      -
      -					// rejected_callbacks.disable
      -					// fulfilled_callbacks.disable
      -					tuples[ 3 - i ][ 2 ].disable,
      -
      -					// progress_callbacks.lock
      -					tuples[ 0 ][ 2 ].lock
      -				);
      -			}
      -
      -			// progress_handlers.fire
      -			// fulfilled_handlers.fire
      -			// rejected_handlers.fire
      -			list.add( tuple[ 3 ].fire );
      -
      -			// deferred.notify = function() { deferred.notifyWith(...) }
      -			// deferred.resolve = function() { deferred.resolveWith(...) }
      -			// deferred.reject = function() { deferred.rejectWith(...) }
      -			deferred[ tuple[ 0 ] ] = function() {
      -				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
      -				return this;
      -			};
      -
      -			// deferred.notifyWith = list.fireWith
      -			// deferred.resolveWith = list.fireWith
      -			// deferred.rejectWith = list.fireWith
      -			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
      -		} );
      -
      -		// Make the deferred a promise
      -		promise.promise( deferred );
      -
      -		// Call given func if any
      -		if ( func ) {
      -			func.call( deferred, deferred );
      -		}
      -
      -		// All done!
      -		return deferred;
      -	},
      -
      -	// Deferred helper
      -	when: function( singleValue ) {
      -		var
      -
      -			// count of uncompleted subordinates
      -			remaining = arguments.length,
      -
      -			// count of unprocessed arguments
      -			i = remaining,
      -
      -			// subordinate fulfillment data
      -			resolveContexts = Array( i ),
      -			resolveValues = slice.call( arguments ),
      -
      -			// the master Deferred
      -			master = jQuery.Deferred(),
      -
      -			// subordinate callback factory
      -			updateFunc = function( i ) {
      -				return function( value ) {
      -					resolveContexts[ i ] = this;
      -					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
      -					if ( !( --remaining ) ) {
      -						master.resolveWith( resolveContexts, resolveValues );
      -					}
      -				};
      -			};
      -
      -		// Single- and empty arguments are adopted like Promise.resolve
      -		if ( remaining <= 1 ) {
      -			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
      -
      -			// Use .then() to unwrap secondary thenables (cf. gh-3000)
      -			if ( master.state() === "pending" ||
      -				jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
      -
      -				return master.then();
      -			}
      -		}
      -
      -		// Multiple arguments are aggregated like Promise.all array elements
      -		while ( i-- ) {
      -			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
      -		}
      -
      -		return master.promise();
      -	}
      -} );
      -
      -
      -// These usually indicate a programmer mistake during development,
      -// warn about them ASAP rather than swallowing them by default.
      -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
      -
      -jQuery.Deferred.exceptionHook = function( error, stack ) {
      -
      -	// Support: IE 8 - 9 only
      -	// Console exists when dev tools are open, which can happen at any time
      -	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
      -		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
      -	}
      -};
      -
      -
      -
      -
      -jQuery.readyException = function( error ) {
      -	window.setTimeout( function() {
      -		throw error;
      -	} );
      -};
      -
      -
      -
      -
      -// The deferred used on DOM ready
      -var readyList = jQuery.Deferred();
      -
      -jQuery.fn.ready = function( fn ) {
      -
      -	readyList
      -		.then( fn )
      -
      -		// Wrap jQuery.readyException in a function so that the lookup
      -		// happens at the time of error handling instead of callback
      -		// registration.
      -		.catch( function( error ) {
      -			jQuery.readyException( error );
      -		} );
      -
      -	return this;
      -};
      -
      -jQuery.extend( {
      -
      -	// Is the DOM ready to be used? Set to true once it occurs.
      -	isReady: false,
      -
      -	// A counter to track how many items to wait for before
      -	// the ready event fires. See #6781
      -	readyWait: 1,
      -
      -	// Hold (or release) the ready event
      -	holdReady: function( hold ) {
      -		if ( hold ) {
      -			jQuery.readyWait++;
      -		} else {
      -			jQuery.ready( true );
      -		}
      -	},
      -
      -	// Handle when the DOM is ready
      -	ready: function( wait ) {
      -
      -		// Abort if there are pending holds or we're already ready
      -		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
      -			return;
      -		}
      -
      -		// Remember that the DOM is ready
      -		jQuery.isReady = true;
      -
      -		// If a normal DOM Ready event fired, decrement, and wait if need be
      -		if ( wait !== true && --jQuery.readyWait > 0 ) {
      -			return;
      -		}
      -
      -		// If there are functions bound, to execute
      -		readyList.resolveWith( document, [ jQuery ] );
      -	}
      -} );
      -
      -jQuery.ready.then = readyList.then;
      -
      -// The ready event handler and self cleanup method
      -function completed() {
      -	document.removeEventListener( "DOMContentLoaded", completed );
      -	window.removeEventListener( "load", completed );
      -	jQuery.ready();
      -}
      -
      -// Catch cases where $(document).ready() is called
      -// after the browser event has already occurred.
      -// Support: IE <=9 - 10 only
      -// Older IE sometimes signals "interactive" too soon
      -if ( document.readyState === "complete" ||
      -	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
      -
      -	// Handle it asynchronously to allow scripts the opportunity to delay ready
      -	window.setTimeout( jQuery.ready );
      -
      -} else {
      -
      -	// Use the handy event callback
      -	document.addEventListener( "DOMContentLoaded", completed );
      -
      -	// A fallback to window.onload, that will always work
      -	window.addEventListener( "load", completed );
      -}
      -
      -
      -
      -
      -// Multifunctional method to get and set values of a collection
      -// The value/s can optionally be executed if it's a function
      -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
      -	var i = 0,
      -		len = elems.length,
      -		bulk = key == null;
      -
      -	// Sets many values
      -	if ( jQuery.type( key ) === "object" ) {
      -		chainable = true;
      -		for ( i in key ) {
      -			access( elems, fn, i, key[ i ], true, emptyGet, raw );
      -		}
      -
      -	// Sets one value
      -	} else if ( value !== undefined ) {
      -		chainable = true;
      -
      -		if ( !jQuery.isFunction( value ) ) {
      -			raw = true;
      -		}
      -
      -		if ( bulk ) {
      -
      -			// Bulk operations run against the entire set
      -			if ( raw ) {
      -				fn.call( elems, value );
      -				fn = null;
      -
      -			// ...except when executing function values
      -			} else {
      -				bulk = fn;
      -				fn = function( elem, key, value ) {
      -					return bulk.call( jQuery( elem ), value );
      -				};
      -			}
      -		}
      -
      -		if ( fn ) {
      -			for ( ; i < len; i++ ) {
      -				fn(
      -					elems[ i ], key, raw ?
      -					value :
      -					value.call( elems[ i ], i, fn( elems[ i ], key ) )
      -				);
      -			}
      -		}
      -	}
      -
      -	if ( chainable ) {
      -		return elems;
      -	}
      -
      -	// Gets
      -	if ( bulk ) {
      -		return fn.call( elems );
      -	}
      -
      -	return len ? fn( elems[ 0 ], key ) : emptyGet;
      -};
      -var acceptData = function( owner ) {
      -
      -	// Accepts only:
      -	//  - Node
      -	//    - Node.ELEMENT_NODE
      -	//    - Node.DOCUMENT_NODE
      -	//  - Object
      -	//    - Any
      -	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
      -};
      -
      -
      -
      -
      -function Data() {
      -	this.expando = jQuery.expando + Data.uid++;
      -}
      -
      -Data.uid = 1;
      -
      -Data.prototype = {
      -
      -	cache: function( owner ) {
      -
      -		// Check if the owner object already has a cache
      -		var value = owner[ this.expando ];
      -
      -		// If not, create one
      -		if ( !value ) {
      -			value = {};
      -
      -			// We can accept data for non-element nodes in modern browsers,
      -			// but we should not, see #8335.
      -			// Always return an empty object.
      -			if ( acceptData( owner ) ) {
      -
      -				// If it is a node unlikely to be stringify-ed or looped over
      -				// use plain assignment
      -				if ( owner.nodeType ) {
      -					owner[ this.expando ] = value;
      -
      -				// Otherwise secure it in a non-enumerable property
      -				// configurable must be true to allow the property to be
      -				// deleted when data is removed
      -				} else {
      -					Object.defineProperty( owner, this.expando, {
      -						value: value,
      -						configurable: true
      -					} );
      -				}
      -			}
      -		}
      -
      -		return value;
      -	},
      -	set: function( owner, data, value ) {
      -		var prop,
      -			cache = this.cache( owner );
      -
      -		// Handle: [ owner, key, value ] args
      -		// Always use camelCase key (gh-2257)
      -		if ( typeof data === "string" ) {
      -			cache[ jQuery.camelCase( data ) ] = value;
      -
      -		// Handle: [ owner, { properties } ] args
      -		} else {
      -
      -			// Copy the properties one-by-one to the cache object
      -			for ( prop in data ) {
      -				cache[ jQuery.camelCase( prop ) ] = data[ prop ];
      -			}
      -		}
      -		return cache;
      -	},
      -	get: function( owner, key ) {
      -		return key === undefined ?
      -			this.cache( owner ) :
      -
      -			// Always use camelCase key (gh-2257)
      -			owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
      -	},
      -	access: function( owner, key, value ) {
      -
      -		// In cases where either:
      -		//
      -		//   1. No key was specified
      -		//   2. A string key was specified, but no value provided
      -		//
      -		// Take the "read" path and allow the get method to determine
      -		// which value to return, respectively either:
      -		//
      -		//   1. The entire cache object
      -		//   2. The data stored at the key
      -		//
      -		if ( key === undefined ||
      -				( ( key && typeof key === "string" ) && value === undefined ) ) {
      -
      -			return this.get( owner, key );
      -		}
      -
      -		// When the key is not a string, or both a key and value
      -		// are specified, set or extend (existing objects) with either:
      -		//
      -		//   1. An object of properties
      -		//   2. A key and value
      -		//
      -		this.set( owner, key, value );
      -
      -		// Since the "set" path can have two possible entry points
      -		// return the expected data based on which path was taken[*]
      -		return value !== undefined ? value : key;
      -	},
      -	remove: function( owner, key ) {
      -		var i,
      -			cache = owner[ this.expando ];
      -
      -		if ( cache === undefined ) {
      -			return;
      -		}
      -
      -		if ( key !== undefined ) {
      -
      -			// Support array or space separated string of keys
      -			if ( jQuery.isArray( key ) ) {
      -
      -				// If key is an array of keys...
      -				// We always set camelCase keys, so remove that.
      -				key = key.map( jQuery.camelCase );
      -			} else {
      -				key = jQuery.camelCase( key );
      -
      -				// If a key with the spaces exists, use it.
      -				// Otherwise, create an array by matching non-whitespace
      -				key = key in cache ?
      -					[ key ] :
      -					( key.match( rnothtmlwhite ) || [] );
      -			}
      -
      -			i = key.length;
      -
      -			while ( i-- ) {
      -				delete cache[ key[ i ] ];
      -			}
      -		}
      -
      -		// Remove the expando if there's no more data
      -		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
      -
      -			// Support: Chrome <=35 - 45
      -			// Webkit & Blink performance suffers when deleting properties
      -			// from DOM nodes, so set to undefined instead
      -			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
      -			if ( owner.nodeType ) {
      -				owner[ this.expando ] = undefined;
      -			} else {
      -				delete owner[ this.expando ];
      -			}
      -		}
      -	},
      -	hasData: function( owner ) {
      -		var cache = owner[ this.expando ];
      -		return cache !== undefined && !jQuery.isEmptyObject( cache );
      -	}
      -};
      -var dataPriv = new Data();
      -
      -var dataUser = new Data();
      -
      -
      -
      -//	Implementation Summary
      -//
      -//	1. Enforce API surface and semantic compatibility with 1.9.x branch
      -//	2. Improve the module's maintainability by reducing the storage
      -//		paths to a single mechanism.
      -//	3. Use the same single mechanism to support "private" and "user" data.
      -//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
      -//	5. Avoid exposing implementation details on user objects (eg. expando properties)
      -//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
      -
      -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
      -	rmultiDash = /[A-Z]/g;
      -
      -function getData( data ) {
      -	if ( data === "true" ) {
      -		return true;
      -	}
      -
      -	if ( data === "false" ) {
      -		return false;
      -	}
      -
      -	if ( data === "null" ) {
      -		return null;
      -	}
      -
      -	// Only convert to a number if it doesn't change the string
      -	if ( data === +data + "" ) {
      -		return +data;
      -	}
      -
      -	if ( rbrace.test( data ) ) {
      -		return JSON.parse( data );
      -	}
      -
      -	return data;
      -}
      -
      -function dataAttr( elem, key, data ) {
      -	var name;
      -
      -	// If nothing was found internally, try to fetch any
      -	// data from the HTML5 data-* attribute
      -	if ( data === undefined && elem.nodeType === 1 ) {
      -		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
      -		data = elem.getAttribute( name );
      -
      -		if ( typeof data === "string" ) {
      -			try {
      -				data = getData( data );
      -			} catch ( e ) {}
      -
      -			// Make sure we set the data so it isn't changed later
      -			dataUser.set( elem, key, data );
      -		} else {
      -			data = undefined;
      -		}
      -	}
      -	return data;
      -}
      -
      -jQuery.extend( {
      -	hasData: function( elem ) {
      -		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
      -	},
      -
      -	data: function( elem, name, data ) {
      -		return dataUser.access( elem, name, data );
      -	},
      -
      -	removeData: function( elem, name ) {
      -		dataUser.remove( elem, name );
      -	},
      -
      -	// TODO: Now that all calls to _data and _removeData have been replaced
      -	// with direct calls to dataPriv methods, these can be deprecated.
      -	_data: function( elem, name, data ) {
      -		return dataPriv.access( elem, name, data );
      -	},
      -
      -	_removeData: function( elem, name ) {
      -		dataPriv.remove( elem, name );
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	data: function( key, value ) {
      -		var i, name, data,
      -			elem = this[ 0 ],
      -			attrs = elem && elem.attributes;
      -
      -		// Gets all values
      -		if ( key === undefined ) {
      -			if ( this.length ) {
      -				data = dataUser.get( elem );
      -
      -				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
      -					i = attrs.length;
      -					while ( i-- ) {
      -
      -						// Support: IE 11 only
      -						// The attrs elements can be null (#14894)
      -						if ( attrs[ i ] ) {
      -							name = attrs[ i ].name;
      -							if ( name.indexOf( "data-" ) === 0 ) {
      -								name = jQuery.camelCase( name.slice( 5 ) );
      -								dataAttr( elem, name, data[ name ] );
      -							}
      -						}
      -					}
      -					dataPriv.set( elem, "hasDataAttrs", true );
      -				}
      -			}
      -
      -			return data;
      -		}
      -
      -		// Sets multiple values
      -		if ( typeof key === "object" ) {
      -			return this.each( function() {
      -				dataUser.set( this, key );
      -			} );
      -		}
      -
      -		return access( this, function( value ) {
      -			var data;
      -
      -			// The calling jQuery object (element matches) is not empty
      -			// (and therefore has an element appears at this[ 0 ]) and the
      -			// `value` parameter was not undefined. An empty jQuery object
      -			// will result in `undefined` for elem = this[ 0 ] which will
      -			// throw an exception if an attempt to read a data cache is made.
      -			if ( elem && value === undefined ) {
      -
      -				// Attempt to get data from the cache
      -				// The key will always be camelCased in Data
      -				data = dataUser.get( elem, key );
      -				if ( data !== undefined ) {
      -					return data;
      -				}
      -
      -				// Attempt to "discover" the data in
      -				// HTML5 custom data-* attrs
      -				data = dataAttr( elem, key );
      -				if ( data !== undefined ) {
      -					return data;
      -				}
      -
      -				// We tried really hard, but the data doesn't exist.
      -				return;
      -			}
      -
      -			// Set the data...
      -			this.each( function() {
      -
      -				// We always store the camelCased key
      -				dataUser.set( this, key, value );
      -			} );
      -		}, null, value, arguments.length > 1, null, true );
      -	},
      -
      -	removeData: function( key ) {
      -		return this.each( function() {
      -			dataUser.remove( this, key );
      -		} );
      -	}
      -} );
      -
      -
      -jQuery.extend( {
      -	queue: function( elem, type, data ) {
      -		var queue;
      -
      -		if ( elem ) {
      -			type = ( type || "fx" ) + "queue";
      -			queue = dataPriv.get( elem, type );
      -
      -			// Speed up dequeue by getting out quickly if this is just a lookup
      -			if ( data ) {
      -				if ( !queue || jQuery.isArray( data ) ) {
      -					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
      -				} else {
      -					queue.push( data );
      -				}
      -			}
      -			return queue || [];
      -		}
      -	},
      -
      -	dequeue: function( elem, type ) {
      -		type = type || "fx";
      -
      -		var queue = jQuery.queue( elem, type ),
      -			startLength = queue.length,
      -			fn = queue.shift(),
      -			hooks = jQuery._queueHooks( elem, type ),
      -			next = function() {
      -				jQuery.dequeue( elem, type );
      -			};
      -
      -		// If the fx queue is dequeued, always remove the progress sentinel
      -		if ( fn === "inprogress" ) {
      -			fn = queue.shift();
      -			startLength--;
      -		}
      -
      -		if ( fn ) {
      -
      -			// Add a progress sentinel to prevent the fx queue from being
      -			// automatically dequeued
      -			if ( type === "fx" ) {
      -				queue.unshift( "inprogress" );
      -			}
      -
      -			// Clear up the last queue stop function
      -			delete hooks.stop;
      -			fn.call( elem, next, hooks );
      -		}
      -
      -		if ( !startLength && hooks ) {
      -			hooks.empty.fire();
      -		}
      -	},
      -
      -	// Not public - generate a queueHooks object, or return the current one
      -	_queueHooks: function( elem, type ) {
      -		var key = type + "queueHooks";
      -		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
      -			empty: jQuery.Callbacks( "once memory" ).add( function() {
      -				dataPriv.remove( elem, [ type + "queue", key ] );
      -			} )
      -		} );
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	queue: function( type, data ) {
      -		var setter = 2;
      -
      -		if ( typeof type !== "string" ) {
      -			data = type;
      -			type = "fx";
      -			setter--;
      -		}
      -
      -		if ( arguments.length < setter ) {
      -			return jQuery.queue( this[ 0 ], type );
      -		}
      -
      -		return data === undefined ?
      -			this :
      -			this.each( function() {
      -				var queue = jQuery.queue( this, type, data );
      -
      -				// Ensure a hooks for this queue
      -				jQuery._queueHooks( this, type );
      -
      -				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
      -					jQuery.dequeue( this, type );
      -				}
      -			} );
      -	},
      -	dequeue: function( type ) {
      -		return this.each( function() {
      -			jQuery.dequeue( this, type );
      -		} );
      -	},
      -	clearQueue: function( type ) {
      -		return this.queue( type || "fx", [] );
      -	},
      -
      -	// Get a promise resolved when queues of a certain type
      -	// are emptied (fx is the type by default)
      -	promise: function( type, obj ) {
      -		var tmp,
      -			count = 1,
      -			defer = jQuery.Deferred(),
      -			elements = this,
      -			i = this.length,
      -			resolve = function() {
      -				if ( !( --count ) ) {
      -					defer.resolveWith( elements, [ elements ] );
      -				}
      -			};
      -
      -		if ( typeof type !== "string" ) {
      -			obj = type;
      -			type = undefined;
      -		}
      -		type = type || "fx";
      -
      -		while ( i-- ) {
      -			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
      -			if ( tmp && tmp.empty ) {
      -				count++;
      -				tmp.empty.add( resolve );
      -			}
      -		}
      -		resolve();
      -		return defer.promise( obj );
      -	}
      -} );
      -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
      -
      -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
      -
      -
      -var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
      -
      -var isHiddenWithinTree = function( elem, el ) {
      -
      -		// isHiddenWithinTree might be called from jQuery#filter function;
      -		// in that case, element will be second argument
      -		elem = el || elem;
      -
      -		// Inline style trumps all
      -		return elem.style.display === "none" ||
      -			elem.style.display === "" &&
      -
      -			// Otherwise, check computed style
      -			// Support: Firefox <=43 - 45
      -			// Disconnected elements can have computed display: none, so first confirm that elem is
      -			// in the document.
      -			jQuery.contains( elem.ownerDocument, elem ) &&
      -
      -			jQuery.css( elem, "display" ) === "none";
      -	};
      -
      -var swap = function( elem, options, callback, args ) {
      -	var ret, name,
      -		old = {};
      -
      -	// Remember the old values, and insert the new ones
      -	for ( name in options ) {
      -		old[ name ] = elem.style[ name ];
      -		elem.style[ name ] = options[ name ];
      -	}
      -
      -	ret = callback.apply( elem, args || [] );
      -
      -	// Revert the old values
      -	for ( name in options ) {
      -		elem.style[ name ] = old[ name ];
      -	}
      -
      -	return ret;
      -};
      -
      -
      -
      -
      -function adjustCSS( elem, prop, valueParts, tween ) {
      -	var adjusted,
      -		scale = 1,
      -		maxIterations = 20,
      -		currentValue = tween ?
      -			function() {
      -				return tween.cur();
      -			} :
      -			function() {
      -				return jQuery.css( elem, prop, "" );
      -			},
      -		initial = currentValue(),
      -		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
      -
      -		// Starting value computation is required for potential unit mismatches
      -		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
      -			rcssNum.exec( jQuery.css( elem, prop ) );
      -
      -	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
      -
      -		// Trust units reported by jQuery.css
      -		unit = unit || initialInUnit[ 3 ];
      -
      -		// Make sure we update the tween properties later on
      -		valueParts = valueParts || [];
      -
      -		// Iteratively approximate from a nonzero starting point
      -		initialInUnit = +initial || 1;
      -
      -		do {
      -
      -			// If previous iteration zeroed out, double until we get *something*.
      -			// Use string for doubling so we don't accidentally see scale as unchanged below
      -			scale = scale || ".5";
      -
      -			// Adjust and apply
      -			initialInUnit = initialInUnit / scale;
      -			jQuery.style( elem, prop, initialInUnit + unit );
      -
      -		// Update scale, tolerating zero or NaN from tween.cur()
      -		// Break the loop if scale is unchanged or perfect, or if we've just had enough.
      -		} while (
      -			scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
      -		);
      -	}
      -
      -	if ( valueParts ) {
      -		initialInUnit = +initialInUnit || +initial || 0;
      -
      -		// Apply relative offset (+=/-=) if specified
      -		adjusted = valueParts[ 1 ] ?
      -			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
      -			+valueParts[ 2 ];
      -		if ( tween ) {
      -			tween.unit = unit;
      -			tween.start = initialInUnit;
      -			tween.end = adjusted;
      -		}
      -	}
      -	return adjusted;
      -}
      -
      -
      -var defaultDisplayMap = {};
      -
      -function getDefaultDisplay( elem ) {
      -	var temp,
      -		doc = elem.ownerDocument,
      -		nodeName = elem.nodeName,
      -		display = defaultDisplayMap[ nodeName ];
      -
      -	if ( display ) {
      -		return display;
      -	}
      -
      -	temp = doc.body.appendChild( doc.createElement( nodeName ) );
      -	display = jQuery.css( temp, "display" );
      -
      -	temp.parentNode.removeChild( temp );
      -
      -	if ( display === "none" ) {
      -		display = "block";
      -	}
      -	defaultDisplayMap[ nodeName ] = display;
      -
      -	return display;
      -}
      -
      -function showHide( elements, show ) {
      -	var display, elem,
      -		values = [],
      -		index = 0,
      -		length = elements.length;
      -
      -	// Determine new display value for elements that need to change
      -	for ( ; index < length; index++ ) {
      -		elem = elements[ index ];
      -		if ( !elem.style ) {
      -			continue;
      -		}
      -
      -		display = elem.style.display;
      -		if ( show ) {
      -
      -			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
      -			// check is required in this first loop unless we have a nonempty display value (either
      -			// inline or about-to-be-restored)
      -			if ( display === "none" ) {
      -				values[ index ] = dataPriv.get( elem, "display" ) || null;
      -				if ( !values[ index ] ) {
      -					elem.style.display = "";
      -				}
      -			}
      -			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
      -				values[ index ] = getDefaultDisplay( elem );
      -			}
      -		} else {
      -			if ( display !== "none" ) {
      -				values[ index ] = "none";
      -
      -				// Remember what we're overwriting
      -				dataPriv.set( elem, "display", display );
      -			}
      -		}
      -	}
      -
      -	// Set the display of the elements in a second loop to avoid constant reflow
      -	for ( index = 0; index < length; index++ ) {
      -		if ( values[ index ] != null ) {
      -			elements[ index ].style.display = values[ index ];
      -		}
      -	}
      -
      -	return elements;
      -}
      -
      -jQuery.fn.extend( {
      -	show: function() {
      -		return showHide( this, true );
      -	},
      -	hide: function() {
      -		return showHide( this );
      -	},
      -	toggle: function( state ) {
      -		if ( typeof state === "boolean" ) {
      -			return state ? this.show() : this.hide();
      -		}
      -
      -		return this.each( function() {
      -			if ( isHiddenWithinTree( this ) ) {
      -				jQuery( this ).show();
      -			} else {
      -				jQuery( this ).hide();
      -			}
      -		} );
      -	}
      -} );
      -var rcheckableType = ( /^(?:checkbox|radio)$/i );
      -
      -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
      -
      -var rscriptType = ( /^$|\/(?:java|ecma)script/i );
      -
      -
      -
      -// We have to close these tags to support XHTML (#13200)
      -var wrapMap = {
      -
      -	// Support: IE <=9 only
      -	option: [ 1, "<select multiple='multiple'>", "</select>" ],
      -
      -	// XHTML parsers do not magically insert elements in the
      -	// same way that tag soup parsers do. So we cannot shorten
      -	// this by omitting <tbody> or other required elements.
      -	thead: [ 1, "<table>", "</table>" ],
      -	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
      -	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
      -	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
      -
      -	_default: [ 0, "", "" ]
      -};
      -
      -// Support: IE <=9 only
      -wrapMap.optgroup = wrapMap.option;
      -
      -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
      -wrapMap.th = wrapMap.td;
      -
      -
      -function getAll( context, tag ) {
      -
      -	// Support: IE <=9 - 11 only
      -	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
      -	var ret;
      -
      -	if ( typeof context.getElementsByTagName !== "undefined" ) {
      -		ret = context.getElementsByTagName( tag || "*" );
      -
      -	} else if ( typeof context.querySelectorAll !== "undefined" ) {
      -		ret = context.querySelectorAll( tag || "*" );
      -
      -	} else {
      -		ret = [];
      -	}
      -
      -	if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
      -		return jQuery.merge( [ context ], ret );
      -	}
      -
      -	return ret;
      -}
      -
      -
      -// Mark scripts as having already been evaluated
      -function setGlobalEval( elems, refElements ) {
      -	var i = 0,
      -		l = elems.length;
      -
      -	for ( ; i < l; i++ ) {
      -		dataPriv.set(
      -			elems[ i ],
      -			"globalEval",
      -			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
      -		);
      -	}
      -}
      -
      -
      -var rhtml = /<|&#?\w+;/;
      -
      -function buildFragment( elems, context, scripts, selection, ignored ) {
      -	var elem, tmp, tag, wrap, contains, j,
      -		fragment = context.createDocumentFragment(),
      -		nodes = [],
      -		i = 0,
      -		l = elems.length;
      -
      -	for ( ; i < l; i++ ) {
      -		elem = elems[ i ];
      -
      -		if ( elem || elem === 0 ) {
      -
      -			// Add nodes directly
      -			if ( jQuery.type( elem ) === "object" ) {
      -
      -				// Support: Android <=4.0 only, PhantomJS 1 only
      -				// push.apply(_, arraylike) throws on ancient WebKit
      -				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
      -
      -			// Convert non-html into a text node
      -			} else if ( !rhtml.test( elem ) ) {
      -				nodes.push( context.createTextNode( elem ) );
      -
      -			// Convert html into DOM nodes
      -			} else {
      -				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
      -
      -				// Deserialize a standard representation
      -				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
      -				wrap = wrapMap[ tag ] || wrapMap._default;
      -				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
      -
      -				// Descend through wrappers to the right content
      -				j = wrap[ 0 ];
      -				while ( j-- ) {
      -					tmp = tmp.lastChild;
      -				}
      -
      -				// Support: Android <=4.0 only, PhantomJS 1 only
      -				// push.apply(_, arraylike) throws on ancient WebKit
      -				jQuery.merge( nodes, tmp.childNodes );
      -
      -				// Remember the top-level container
      -				tmp = fragment.firstChild;
      -
      -				// Ensure the created nodes are orphaned (#12392)
      -				tmp.textContent = "";
      -			}
      -		}
      -	}
      -
      -	// Remove wrapper from fragment
      -	fragment.textContent = "";
      -
      -	i = 0;
      -	while ( ( elem = nodes[ i++ ] ) ) {
      -
      -		// Skip elements already in the context collection (trac-4087)
      -		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
      -			if ( ignored ) {
      -				ignored.push( elem );
      -			}
      -			continue;
      -		}
      -
      -		contains = jQuery.contains( elem.ownerDocument, elem );
      -
      -		// Append to fragment
      -		tmp = getAll( fragment.appendChild( elem ), "script" );
      -
      -		// Preserve script evaluation history
      -		if ( contains ) {
      -			setGlobalEval( tmp );
      -		}
      -
      -		// Capture executables
      -		if ( scripts ) {
      -			j = 0;
      -			while ( ( elem = tmp[ j++ ] ) ) {
      -				if ( rscriptType.test( elem.type || "" ) ) {
      -					scripts.push( elem );
      -				}
      -			}
      -		}
      -	}
      -
      -	return fragment;
      -}
      -
      -
      -( function() {
      -	var fragment = document.createDocumentFragment(),
      -		div = fragment.appendChild( document.createElement( "div" ) ),
      -		input = document.createElement( "input" );
      -
      -	// Support: Android 4.0 - 4.3 only
      -	// Check state lost if the name is set (#11217)
      -	// Support: Windows Web Apps (WWA)
      -	// `name` and `type` must use .setAttribute for WWA (#14901)
      -	input.setAttribute( "type", "radio" );
      -	input.setAttribute( "checked", "checked" );
      -	input.setAttribute( "name", "t" );
      -
      -	div.appendChild( input );
      -
      -	// Support: Android <=4.1 only
      -	// Older WebKit doesn't clone checked state correctly in fragments
      -	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
      -
      -	// Support: IE <=11 only
      -	// Make sure textarea (and checkbox) defaultValue is properly cloned
      -	div.innerHTML = "<textarea>x</textarea>";
      -	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
      -} )();
      -var documentElement = document.documentElement;
      -
      -
      -
      -var
      -	rkeyEvent = /^key/,
      -	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
      -	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
      -
      -function returnTrue() {
      -	return true;
      -}
      -
      -function returnFalse() {
      -	return false;
      -}
      -
      -// Support: IE <=9 only
      -// See #13393 for more info
      -function safeActiveElement() {
      -	try {
      -		return document.activeElement;
      -	} catch ( err ) { }
      -}
      -
      -function on( elem, types, selector, data, fn, one ) {
      -	var origFn, type;
      -
      -	// Types can be a map of types/handlers
      -	if ( typeof types === "object" ) {
      -
      -		// ( types-Object, selector, data )
      -		if ( typeof selector !== "string" ) {
      -
      -			// ( types-Object, data )
      -			data = data || selector;
      -			selector = undefined;
      -		}
      -		for ( type in types ) {
      -			on( elem, type, selector, data, types[ type ], one );
      -		}
      -		return elem;
      -	}
      -
      -	if ( data == null && fn == null ) {
      -
      -		// ( types, fn )
      -		fn = selector;
      -		data = selector = undefined;
      -	} else if ( fn == null ) {
      -		if ( typeof selector === "string" ) {
      -
      -			// ( types, selector, fn )
      -			fn = data;
      -			data = undefined;
      -		} else {
      -
      -			// ( types, data, fn )
      -			fn = data;
      -			data = selector;
      -			selector = undefined;
      -		}
      -	}
      -	if ( fn === false ) {
      -		fn = returnFalse;
      -	} else if ( !fn ) {
      -		return elem;
      -	}
      -
      -	if ( one === 1 ) {
      -		origFn = fn;
      -		fn = function( event ) {
      -
      -			// Can use an empty set, since event contains the info
      -			jQuery().off( event );
      -			return origFn.apply( this, arguments );
      -		};
      -
      -		// Use same guid so caller can remove using origFn
      -		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
      -	}
      -	return elem.each( function() {
      -		jQuery.event.add( this, types, fn, data, selector );
      -	} );
      -}
      -
      -/*
      - * Helper functions for managing events -- not part of the public interface.
      - * Props to Dean Edwards' addEvent library for many of the ideas.
      - */
      -jQuery.event = {
      -
      -	global: {},
      -
      -	add: function( elem, types, handler, data, selector ) {
      -
      -		var handleObjIn, eventHandle, tmp,
      -			events, t, handleObj,
      -			special, handlers, type, namespaces, origType,
      -			elemData = dataPriv.get( elem );
      -
      -		// Don't attach events to noData or text/comment nodes (but allow plain objects)
      -		if ( !elemData ) {
      -			return;
      -		}
      -
      -		// Caller can pass in an object of custom data in lieu of the handler
      -		if ( handler.handler ) {
      -			handleObjIn = handler;
      -			handler = handleObjIn.handler;
      -			selector = handleObjIn.selector;
      -		}
      -
      -		// Ensure that invalid selectors throw exceptions at attach time
      -		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
      -		if ( selector ) {
      -			jQuery.find.matchesSelector( documentElement, selector );
      -		}
      -
      -		// Make sure that the handler has a unique ID, used to find/remove it later
      -		if ( !handler.guid ) {
      -			handler.guid = jQuery.guid++;
      -		}
      -
      -		// Init the element's event structure and main handler, if this is the first
      -		if ( !( events = elemData.events ) ) {
      -			events = elemData.events = {};
      -		}
      -		if ( !( eventHandle = elemData.handle ) ) {
      -			eventHandle = elemData.handle = function( e ) {
      -
      -				// Discard the second event of a jQuery.event.trigger() and
      -				// when an event is called after a page has unloaded
      -				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
      -					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
      -			};
      -		}
      -
      -		// Handle multiple events separated by a space
      -		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
      -		t = types.length;
      -		while ( t-- ) {
      -			tmp = rtypenamespace.exec( types[ t ] ) || [];
      -			type = origType = tmp[ 1 ];
      -			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
      -
      -			// There *must* be a type, no attaching namespace-only handlers
      -			if ( !type ) {
      -				continue;
      -			}
      -
      -			// If event changes its type, use the special event handlers for the changed type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// If selector defined, determine special event api type, otherwise given type
      -			type = ( selector ? special.delegateType : special.bindType ) || type;
      -
      -			// Update special based on newly reset type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// handleObj is passed to all event handlers
      -			handleObj = jQuery.extend( {
      -				type: type,
      -				origType: origType,
      -				data: data,
      -				handler: handler,
      -				guid: handler.guid,
      -				selector: selector,
      -				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
      -				namespace: namespaces.join( "." )
      -			}, handleObjIn );
      -
      -			// Init the event handler queue if we're the first
      -			if ( !( handlers = events[ type ] ) ) {
      -				handlers = events[ type ] = [];
      -				handlers.delegateCount = 0;
      -
      -				// Only use addEventListener if the special events handler returns false
      -				if ( !special.setup ||
      -					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
      -
      -					if ( elem.addEventListener ) {
      -						elem.addEventListener( type, eventHandle );
      -					}
      -				}
      -			}
      -
      -			if ( special.add ) {
      -				special.add.call( elem, handleObj );
      -
      -				if ( !handleObj.handler.guid ) {
      -					handleObj.handler.guid = handler.guid;
      -				}
      -			}
      -
      -			// Add to the element's handler list, delegates in front
      -			if ( selector ) {
      -				handlers.splice( handlers.delegateCount++, 0, handleObj );
      -			} else {
      -				handlers.push( handleObj );
      -			}
      -
      -			// Keep track of which events have ever been used, for event optimization
      -			jQuery.event.global[ type ] = true;
      -		}
      -
      -	},
      -
      -	// Detach an event or set of events from an element
      -	remove: function( elem, types, handler, selector, mappedTypes ) {
      -
      -		var j, origCount, tmp,
      -			events, t, handleObj,
      -			special, handlers, type, namespaces, origType,
      -			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
      -
      -		if ( !elemData || !( events = elemData.events ) ) {
      -			return;
      -		}
      -
      -		// Once for each type.namespace in types; type may be omitted
      -		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
      -		t = types.length;
      -		while ( t-- ) {
      -			tmp = rtypenamespace.exec( types[ t ] ) || [];
      -			type = origType = tmp[ 1 ];
      -			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
      -
      -			// Unbind all events (on this namespace, if provided) for the element
      -			if ( !type ) {
      -				for ( type in events ) {
      -					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
      -				}
      -				continue;
      -			}
      -
      -			special = jQuery.event.special[ type ] || {};
      -			type = ( selector ? special.delegateType : special.bindType ) || type;
      -			handlers = events[ type ] || [];
      -			tmp = tmp[ 2 ] &&
      -				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
      -
      -			// Remove matching events
      -			origCount = j = handlers.length;
      -			while ( j-- ) {
      -				handleObj = handlers[ j ];
      -
      -				if ( ( mappedTypes || origType === handleObj.origType ) &&
      -					( !handler || handler.guid === handleObj.guid ) &&
      -					( !tmp || tmp.test( handleObj.namespace ) ) &&
      -					( !selector || selector === handleObj.selector ||
      -						selector === "**" && handleObj.selector ) ) {
      -					handlers.splice( j, 1 );
      -
      -					if ( handleObj.selector ) {
      -						handlers.delegateCount--;
      -					}
      -					if ( special.remove ) {
      -						special.remove.call( elem, handleObj );
      -					}
      -				}
      -			}
      -
      -			// Remove generic event handler if we removed something and no more handlers exist
      -			// (avoids potential for endless recursion during removal of special event handlers)
      -			if ( origCount && !handlers.length ) {
      -				if ( !special.teardown ||
      -					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
      -
      -					jQuery.removeEvent( elem, type, elemData.handle );
      -				}
      -
      -				delete events[ type ];
      -			}
      -		}
      -
      -		// Remove data and the expando if it's no longer used
      -		if ( jQuery.isEmptyObject( events ) ) {
      -			dataPriv.remove( elem, "handle events" );
      -		}
      -	},
      -
      -	dispatch: function( nativeEvent ) {
      -
      -		// Make a writable jQuery.Event from the native event object
      -		var event = jQuery.event.fix( nativeEvent );
      -
      -		var i, j, ret, matched, handleObj, handlerQueue,
      -			args = new Array( arguments.length ),
      -			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
      -			special = jQuery.event.special[ event.type ] || {};
      -
      -		// Use the fix-ed jQuery.Event rather than the (read-only) native event
      -		args[ 0 ] = event;
      -
      -		for ( i = 1; i < arguments.length; i++ ) {
      -			args[ i ] = arguments[ i ];
      -		}
      -
      -		event.delegateTarget = this;
      -
      -		// Call the preDispatch hook for the mapped type, and let it bail if desired
      -		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
      -			return;
      -		}
      -
      -		// Determine handlers
      -		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
      -
      -		// Run delegates first; they may want to stop propagation beneath us
      -		i = 0;
      -		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
      -			event.currentTarget = matched.elem;
      -
      -			j = 0;
      -			while ( ( handleObj = matched.handlers[ j++ ] ) &&
      -				!event.isImmediatePropagationStopped() ) {
      -
      -				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
      -				// a subset or equal to those in the bound event (both can have no namespace).
      -				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
      -
      -					event.handleObj = handleObj;
      -					event.data = handleObj.data;
      -
      -					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
      -						handleObj.handler ).apply( matched.elem, args );
      -
      -					if ( ret !== undefined ) {
      -						if ( ( event.result = ret ) === false ) {
      -							event.preventDefault();
      -							event.stopPropagation();
      -						}
      -					}
      -				}
      -			}
      -		}
      -
      -		// Call the postDispatch hook for the mapped type
      -		if ( special.postDispatch ) {
      -			special.postDispatch.call( this, event );
      -		}
      -
      -		return event.result;
      -	},
      -
      -	handlers: function( event, handlers ) {
      -		var i, handleObj, sel, matchedHandlers, matchedSelectors,
      -			handlerQueue = [],
      -			delegateCount = handlers.delegateCount,
      -			cur = event.target;
      -
      -		// Find delegate handlers
      -		if ( delegateCount &&
      -
      -			// Support: IE <=9
      -			// Black-hole SVG <use> instance trees (trac-13180)
      -			cur.nodeType &&
      -
      -			// Support: Firefox <=42
      -			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
      -			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
      -			// Support: IE 11 only
      -			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
      -			!( event.type === "click" && event.button >= 1 ) ) {
      -
      -			for ( ; cur !== this; cur = cur.parentNode || this ) {
      -
      -				// Don't check non-elements (#13208)
      -				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
      -				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
      -					matchedHandlers = [];
      -					matchedSelectors = {};
      -					for ( i = 0; i < delegateCount; i++ ) {
      -						handleObj = handlers[ i ];
      -
      -						// Don't conflict with Object.prototype properties (#13203)
      -						sel = handleObj.selector + " ";
      -
      -						if ( matchedSelectors[ sel ] === undefined ) {
      -							matchedSelectors[ sel ] = handleObj.needsContext ?
      -								jQuery( sel, this ).index( cur ) > -1 :
      -								jQuery.find( sel, this, null, [ cur ] ).length;
      -						}
      -						if ( matchedSelectors[ sel ] ) {
      -							matchedHandlers.push( handleObj );
      -						}
      -					}
      -					if ( matchedHandlers.length ) {
      -						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
      -					}
      -				}
      -			}
      -		}
      -
      -		// Add the remaining (directly-bound) handlers
      -		cur = this;
      -		if ( delegateCount < handlers.length ) {
      -			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
      -		}
      -
      -		return handlerQueue;
      -	},
      -
      -	addProp: function( name, hook ) {
      -		Object.defineProperty( jQuery.Event.prototype, name, {
      -			enumerable: true,
      -			configurable: true,
      -
      -			get: jQuery.isFunction( hook ) ?
      -				function() {
      -					if ( this.originalEvent ) {
      -							return hook( this.originalEvent );
      -					}
      -				} :
      -				function() {
      -					if ( this.originalEvent ) {
      -							return this.originalEvent[ name ];
      -					}
      -				},
      -
      -			set: function( value ) {
      -				Object.defineProperty( this, name, {
      -					enumerable: true,
      -					configurable: true,
      -					writable: true,
      -					value: value
      -				} );
      -			}
      -		} );
      -	},
      -
      -	fix: function( originalEvent ) {
      -		return originalEvent[ jQuery.expando ] ?
      -			originalEvent :
      -			new jQuery.Event( originalEvent );
      -	},
      -
      -	special: {
      -		load: {
      -
      -			// Prevent triggered image.load events from bubbling to window.load
      -			noBubble: true
      -		},
      -		focus: {
      -
      -			// Fire native event if possible so blur/focus sequence is correct
      -			trigger: function() {
      -				if ( this !== safeActiveElement() && this.focus ) {
      -					this.focus();
      -					return false;
      -				}
      -			},
      -			delegateType: "focusin"
      -		},
      -		blur: {
      -			trigger: function() {
      -				if ( this === safeActiveElement() && this.blur ) {
      -					this.blur();
      -					return false;
      -				}
      -			},
      -			delegateType: "focusout"
      -		},
      -		click: {
      -
      -			// For checkbox, fire native event so checked state will be right
      -			trigger: function() {
      -				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
      -					this.click();
      -					return false;
      -				}
      -			},
      -
      -			// For cross-browser consistency, don't fire native .click() on links
      -			_default: function( event ) {
      -				return jQuery.nodeName( event.target, "a" );
      -			}
      -		},
      -
      -		beforeunload: {
      -			postDispatch: function( event ) {
      -
      -				// Support: Firefox 20+
      -				// Firefox doesn't alert if the returnValue field is not set.
      -				if ( event.result !== undefined && event.originalEvent ) {
      -					event.originalEvent.returnValue = event.result;
      -				}
      -			}
      -		}
      -	}
      -};
      -
      -jQuery.removeEvent = function( elem, type, handle ) {
      -
      -	// This "if" is needed for plain objects
      -	if ( elem.removeEventListener ) {
      -		elem.removeEventListener( type, handle );
      -	}
      -};
      -
      -jQuery.Event = function( src, props ) {
      -
      -	// Allow instantiation without the 'new' keyword
      -	if ( !( this instanceof jQuery.Event ) ) {
      -		return new jQuery.Event( src, props );
      -	}
      -
      -	// Event object
      -	if ( src && src.type ) {
      -		this.originalEvent = src;
      -		this.type = src.type;
      -
      -		// Events bubbling up the document may have been marked as prevented
      -		// by a handler lower down the tree; reflect the correct value.
      -		this.isDefaultPrevented = src.defaultPrevented ||
      -				src.defaultPrevented === undefined &&
      -
      -				// Support: Android <=2.3 only
      -				src.returnValue === false ?
      -			returnTrue :
      -			returnFalse;
      -
      -		// Create target properties
      -		// Support: Safari <=6 - 7 only
      -		// Target should not be a text node (#504, #13143)
      -		this.target = ( src.target && src.target.nodeType === 3 ) ?
      -			src.target.parentNode :
      -			src.target;
      -
      -		this.currentTarget = src.currentTarget;
      -		this.relatedTarget = src.relatedTarget;
      -
      -	// Event type
      -	} else {
      -		this.type = src;
      -	}
      -
      -	// Put explicitly provided properties onto the event object
      -	if ( props ) {
      -		jQuery.extend( this, props );
      -	}
      -
      -	// Create a timestamp if incoming event doesn't have one
      -	this.timeStamp = src && src.timeStamp || jQuery.now();
      -
      -	// Mark it as fixed
      -	this[ jQuery.expando ] = true;
      -};
      -
      -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
      -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      -jQuery.Event.prototype = {
      -	constructor: jQuery.Event,
      -	isDefaultPrevented: returnFalse,
      -	isPropagationStopped: returnFalse,
      -	isImmediatePropagationStopped: returnFalse,
      -	isSimulated: false,
      -
      -	preventDefault: function() {
      -		var e = this.originalEvent;
      -
      -		this.isDefaultPrevented = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.preventDefault();
      -		}
      -	},
      -	stopPropagation: function() {
      -		var e = this.originalEvent;
      -
      -		this.isPropagationStopped = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.stopPropagation();
      -		}
      -	},
      -	stopImmediatePropagation: function() {
      -		var e = this.originalEvent;
      -
      -		this.isImmediatePropagationStopped = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.stopImmediatePropagation();
      -		}
      -
      -		this.stopPropagation();
      -	}
      -};
      -
      -// Includes all common event props including KeyEvent and MouseEvent specific props
      -jQuery.each( {
      -	altKey: true,
      -	bubbles: true,
      -	cancelable: true,
      -	changedTouches: true,
      -	ctrlKey: true,
      -	detail: true,
      -	eventPhase: true,
      -	metaKey: true,
      -	pageX: true,
      -	pageY: true,
      -	shiftKey: true,
      -	view: true,
      -	"char": true,
      -	charCode: true,
      -	key: true,
      -	keyCode: true,
      -	button: true,
      -	buttons: true,
      -	clientX: true,
      -	clientY: true,
      -	offsetX: true,
      -	offsetY: true,
      -	pointerId: true,
      -	pointerType: true,
      -	screenX: true,
      -	screenY: true,
      -	targetTouches: true,
      -	toElement: true,
      -	touches: true,
      -
      -	which: function( event ) {
      -		var button = event.button;
      -
      -		// Add which for key events
      -		if ( event.which == null && rkeyEvent.test( event.type ) ) {
      -			return event.charCode != null ? event.charCode : event.keyCode;
      -		}
      -
      -		// Add which for click: 1 === left; 2 === middle; 3 === right
      -		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
      -			if ( button & 1 ) {
      -				return 1;
      -			}
      -
      -			if ( button & 2 ) {
      -				return 3;
      -			}
      -
      -			if ( button & 4 ) {
      -				return 2;
      -			}
      -
      -			return 0;
      -		}
      -
      -		return event.which;
      -	}
      -}, jQuery.event.addProp );
      -
      -// Create mouseenter/leave events using mouseover/out and event-time checks
      -// so that event delegation works in jQuery.
      -// Do the same for pointerenter/pointerleave and pointerover/pointerout
      -//
      -// Support: Safari 7 only
      -// Safari sends mouseenter too often; see:
      -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
      -// for the description of the bug (it existed in older Chrome versions as well).
      -jQuery.each( {
      -	mouseenter: "mouseover",
      -	mouseleave: "mouseout",
      -	pointerenter: "pointerover",
      -	pointerleave: "pointerout"
      -}, function( orig, fix ) {
      -	jQuery.event.special[ orig ] = {
      -		delegateType: fix,
      -		bindType: fix,
      -
      -		handle: function( event ) {
      -			var ret,
      -				target = this,
      -				related = event.relatedTarget,
      -				handleObj = event.handleObj;
      -
      -			// For mouseenter/leave call the handler if related is outside the target.
      -			// NB: No relatedTarget if the mouse left/entered the browser window
      -			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
      -				event.type = handleObj.origType;
      -				ret = handleObj.handler.apply( this, arguments );
      -				event.type = fix;
      -			}
      -			return ret;
      -		}
      -	};
      -} );
      -
      -jQuery.fn.extend( {
      -
      -	on: function( types, selector, data, fn ) {
      -		return on( this, types, selector, data, fn );
      -	},
      -	one: function( types, selector, data, fn ) {
      -		return on( this, types, selector, data, fn, 1 );
      -	},
      -	off: function( types, selector, fn ) {
      -		var handleObj, type;
      -		if ( types && types.preventDefault && types.handleObj ) {
      -
      -			// ( event )  dispatched jQuery.Event
      -			handleObj = types.handleObj;
      -			jQuery( types.delegateTarget ).off(
      -				handleObj.namespace ?
      -					handleObj.origType + "." + handleObj.namespace :
      -					handleObj.origType,
      -				handleObj.selector,
      -				handleObj.handler
      -			);
      -			return this;
      -		}
      -		if ( typeof types === "object" ) {
      -
      -			// ( types-object [, selector] )
      -			for ( type in types ) {
      -				this.off( type, selector, types[ type ] );
      -			}
      -			return this;
      -		}
      -		if ( selector === false || typeof selector === "function" ) {
      -
      -			// ( types [, fn] )
      -			fn = selector;
      -			selector = undefined;
      -		}
      -		if ( fn === false ) {
      -			fn = returnFalse;
      -		}
      -		return this.each( function() {
      -			jQuery.event.remove( this, types, fn, selector );
      -		} );
      -	}
      -} );
      -
      -
      -var
      -
      -	/* eslint-disable max-len */
      -
      -	// See https://github.com/eslint/eslint/issues/3229
      -	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
      -
      -	/* eslint-enable */
      -
      -	// Support: IE <=10 - 11, Edge 12 - 13
      -	// In IE/Edge using regex groups here causes severe slowdowns.
      -	// See https://connect.microsoft.com/IE/feedback/details/1736512/
      -	rnoInnerhtml = /<script|<style|<link/i,
      -
      -	// checked="checked" or checked
      -	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
      -	rscriptTypeMasked = /^true\/(.*)/,
      -	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
      -
      -function manipulationTarget( elem, content ) {
      -	if ( jQuery.nodeName( elem, "table" ) &&
      -		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
      -
      -		return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
      -	}
      -
      -	return elem;
      -}
      -
      -// Replace/restore the type attribute of script elements for safe DOM manipulation
      -function disableScript( elem ) {
      -	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
      -	return elem;
      -}
      -function restoreScript( elem ) {
      -	var match = rscriptTypeMasked.exec( elem.type );
      -
      -	if ( match ) {
      -		elem.type = match[ 1 ];
      -	} else {
      -		elem.removeAttribute( "type" );
      -	}
      -
      -	return elem;
      -}
      -
      -function cloneCopyEvent( src, dest ) {
      -	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
      -
      -	if ( dest.nodeType !== 1 ) {
      -		return;
      -	}
      -
      -	// 1. Copy private data: events, handlers, etc.
      -	if ( dataPriv.hasData( src ) ) {
      -		pdataOld = dataPriv.access( src );
      -		pdataCur = dataPriv.set( dest, pdataOld );
      -		events = pdataOld.events;
      -
      -		if ( events ) {
      -			delete pdataCur.handle;
      -			pdataCur.events = {};
      -
      -			for ( type in events ) {
      -				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
      -					jQuery.event.add( dest, type, events[ type ][ i ] );
      -				}
      -			}
      -		}
      -	}
      -
      -	// 2. Copy user data
      -	if ( dataUser.hasData( src ) ) {
      -		udataOld = dataUser.access( src );
      -		udataCur = jQuery.extend( {}, udataOld );
      -
      -		dataUser.set( dest, udataCur );
      -	}
      -}
      -
      -// Fix IE bugs, see support tests
      -function fixInput( src, dest ) {
      -	var nodeName = dest.nodeName.toLowerCase();
      -
      -	// Fails to persist the checked state of a cloned checkbox or radio button.
      -	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
      -		dest.checked = src.checked;
      -
      -	// Fails to return the selected option to the default selected state when cloning options
      -	} else if ( nodeName === "input" || nodeName === "textarea" ) {
      -		dest.defaultValue = src.defaultValue;
      -	}
      -}
      -
      -function domManip( collection, args, callback, ignored ) {
      -
      -	// Flatten any nested arrays
      -	args = concat.apply( [], args );
      -
      -	var fragment, first, scripts, hasScripts, node, doc,
      -		i = 0,
      -		l = collection.length,
      -		iNoClone = l - 1,
      -		value = args[ 0 ],
      -		isFunction = jQuery.isFunction( value );
      -
      -	// We can't cloneNode fragments that contain checked, in WebKit
      -	if ( isFunction ||
      -			( l > 1 && typeof value === "string" &&
      -				!support.checkClone && rchecked.test( value ) ) ) {
      -		return collection.each( function( index ) {
      -			var self = collection.eq( index );
      -			if ( isFunction ) {
      -				args[ 0 ] = value.call( this, index, self.html() );
      -			}
      -			domManip( self, args, callback, ignored );
      -		} );
      -	}
      -
      -	if ( l ) {
      -		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
      -		first = fragment.firstChild;
      -
      -		if ( fragment.childNodes.length === 1 ) {
      -			fragment = first;
      -		}
      -
      -		// Require either new content or an interest in ignored elements to invoke the callback
      -		if ( first || ignored ) {
      -			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
      -			hasScripts = scripts.length;
      -
      -			// Use the original fragment for the last item
      -			// instead of the first because it can end up
      -			// being emptied incorrectly in certain situations (#8070).
      -			for ( ; i < l; i++ ) {
      -				node = fragment;
      -
      -				if ( i !== iNoClone ) {
      -					node = jQuery.clone( node, true, true );
      -
      -					// Keep references to cloned scripts for later restoration
      -					if ( hasScripts ) {
      -
      -						// Support: Android <=4.0 only, PhantomJS 1 only
      -						// push.apply(_, arraylike) throws on ancient WebKit
      -						jQuery.merge( scripts, getAll( node, "script" ) );
      -					}
      -				}
      -
      -				callback.call( collection[ i ], node, i );
      -			}
      -
      -			if ( hasScripts ) {
      -				doc = scripts[ scripts.length - 1 ].ownerDocument;
      -
      -				// Reenable scripts
      -				jQuery.map( scripts, restoreScript );
      -
      -				// Evaluate executable scripts on first document insertion
      -				for ( i = 0; i < hasScripts; i++ ) {
      -					node = scripts[ i ];
      -					if ( rscriptType.test( node.type || "" ) &&
      -						!dataPriv.access( node, "globalEval" ) &&
      -						jQuery.contains( doc, node ) ) {
      -
      -						if ( node.src ) {
      -
      -							// Optional AJAX dependency, but won't run scripts if not present
      -							if ( jQuery._evalUrl ) {
      -								jQuery._evalUrl( node.src );
      -							}
      -						} else {
      -							DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	return collection;
      -}
      -
      -function remove( elem, selector, keepData ) {
      -	var node,
      -		nodes = selector ? jQuery.filter( selector, elem ) : elem,
      -		i = 0;
      -
      -	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
      -		if ( !keepData && node.nodeType === 1 ) {
      -			jQuery.cleanData( getAll( node ) );
      -		}
      -
      -		if ( node.parentNode ) {
      -			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
      -				setGlobalEval( getAll( node, "script" ) );
      -			}
      -			node.parentNode.removeChild( node );
      -		}
      -	}
      -
      -	return elem;
      -}
      -
      -jQuery.extend( {
      -	htmlPrefilter: function( html ) {
      -		return html.replace( rxhtmlTag, "<$1></$2>" );
      -	},
      -
      -	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
      -		var i, l, srcElements, destElements,
      -			clone = elem.cloneNode( true ),
      -			inPage = jQuery.contains( elem.ownerDocument, elem );
      -
      -		// Fix IE cloning issues
      -		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
      -				!jQuery.isXMLDoc( elem ) ) {
      -
      -			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
      -			destElements = getAll( clone );
      -			srcElements = getAll( elem );
      -
      -			for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -				fixInput( srcElements[ i ], destElements[ i ] );
      -			}
      -		}
      -
      -		// Copy the events from the original to the clone
      -		if ( dataAndEvents ) {
      -			if ( deepDataAndEvents ) {
      -				srcElements = srcElements || getAll( elem );
      -				destElements = destElements || getAll( clone );
      -
      -				for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
      -				}
      -			} else {
      -				cloneCopyEvent( elem, clone );
      -			}
      -		}
      -
      -		// Preserve script evaluation history
      -		destElements = getAll( clone, "script" );
      -		if ( destElements.length > 0 ) {
      -			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
      -		}
      -
      -		// Return the cloned set
      -		return clone;
      -	},
      -
      -	cleanData: function( elems ) {
      -		var data, elem, type,
      -			special = jQuery.event.special,
      -			i = 0;
      -
      -		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
      -			if ( acceptData( elem ) ) {
      -				if ( ( data = elem[ dataPriv.expando ] ) ) {
      -					if ( data.events ) {
      -						for ( type in data.events ) {
      -							if ( special[ type ] ) {
      -								jQuery.event.remove( elem, type );
      -
      -							// This is a shortcut to avoid jQuery.event.remove's overhead
      -							} else {
      -								jQuery.removeEvent( elem, type, data.handle );
      -							}
      -						}
      -					}
      -
      -					// Support: Chrome <=35 - 45+
      -					// Assign undefined instead of using delete, see Data#remove
      -					elem[ dataPriv.expando ] = undefined;
      -				}
      -				if ( elem[ dataUser.expando ] ) {
      -
      -					// Support: Chrome <=35 - 45+
      -					// Assign undefined instead of using delete, see Data#remove
      -					elem[ dataUser.expando ] = undefined;
      -				}
      -			}
      -		}
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	detach: function( selector ) {
      -		return remove( this, selector, true );
      -	},
      -
      -	remove: function( selector ) {
      -		return remove( this, selector );
      -	},
      -
      -	text: function( value ) {
      -		return access( this, function( value ) {
      -			return value === undefined ?
      -				jQuery.text( this ) :
      -				this.empty().each( function() {
      -					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -						this.textContent = value;
      -					}
      -				} );
      -		}, null, value, arguments.length );
      -	},
      -
      -	append: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -				var target = manipulationTarget( this, elem );
      -				target.appendChild( elem );
      -			}
      -		} );
      -	},
      -
      -	prepend: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -				var target = manipulationTarget( this, elem );
      -				target.insertBefore( elem, target.firstChild );
      -			}
      -		} );
      -	},
      -
      -	before: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.parentNode ) {
      -				this.parentNode.insertBefore( elem, this );
      -			}
      -		} );
      -	},
      -
      -	after: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.parentNode ) {
      -				this.parentNode.insertBefore( elem, this.nextSibling );
      -			}
      -		} );
      -	},
      -
      -	empty: function() {
      -		var elem,
      -			i = 0;
      -
      -		for ( ; ( elem = this[ i ] ) != null; i++ ) {
      -			if ( elem.nodeType === 1 ) {
      -
      -				// Prevent memory leaks
      -				jQuery.cleanData( getAll( elem, false ) );
      -
      -				// Remove any remaining nodes
      -				elem.textContent = "";
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	clone: function( dataAndEvents, deepDataAndEvents ) {
      -		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
      -		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
      -
      -		return this.map( function() {
      -			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
      -		} );
      -	},
      -
      -	html: function( value ) {
      -		return access( this, function( value ) {
      -			var elem = this[ 0 ] || {},
      -				i = 0,
      -				l = this.length;
      -
      -			if ( value === undefined && elem.nodeType === 1 ) {
      -				return elem.innerHTML;
      -			}
      -
      -			// See if we can take a shortcut and just use innerHTML
      -			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
      -				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
      -
      -				value = jQuery.htmlPrefilter( value );
      -
      -				try {
      -					for ( ; i < l; i++ ) {
      -						elem = this[ i ] || {};
      -
      -						// Remove element nodes and prevent memory leaks
      -						if ( elem.nodeType === 1 ) {
      -							jQuery.cleanData( getAll( elem, false ) );
      -							elem.innerHTML = value;
      -						}
      -					}
      -
      -					elem = 0;
      -
      -				// If using innerHTML throws an exception, use the fallback method
      -				} catch ( e ) {}
      -			}
      -
      -			if ( elem ) {
      -				this.empty().append( value );
      -			}
      -		}, null, value, arguments.length );
      -	},
      -
      -	replaceWith: function() {
      -		var ignored = [];
      -
      -		// Make the changes, replacing each non-ignored context element with the new content
      -		return domManip( this, arguments, function( elem ) {
      -			var parent = this.parentNode;
      -
      -			if ( jQuery.inArray( this, ignored ) < 0 ) {
      -				jQuery.cleanData( getAll( this ) );
      -				if ( parent ) {
      -					parent.replaceChild( elem, this );
      -				}
      -			}
      -
      -		// Force callback invocation
      -		}, ignored );
      -	}
      -} );
      -
      -jQuery.each( {
      -	appendTo: "append",
      -	prependTo: "prepend",
      -	insertBefore: "before",
      -	insertAfter: "after",
      -	replaceAll: "replaceWith"
      -}, function( name, original ) {
      -	jQuery.fn[ name ] = function( selector ) {
      -		var elems,
      -			ret = [],
      -			insert = jQuery( selector ),
      -			last = insert.length - 1,
      -			i = 0;
      -
      -		for ( ; i <= last; i++ ) {
      -			elems = i === last ? this : this.clone( true );
      -			jQuery( insert[ i ] )[ original ]( elems );
      -
      -			// Support: Android <=4.0 only, PhantomJS 1 only
      -			// .get() because push.apply(_, arraylike) throws on ancient WebKit
      -			push.apply( ret, elems.get() );
      -		}
      -
      -		return this.pushStack( ret );
      -	};
      -} );
      -var rmargin = ( /^margin/ );
      -
      -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
      -
      -var getStyles = function( elem ) {
      -
      -		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
      -		// IE throws on elements created in popups
      -		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
      -		var view = elem.ownerDocument.defaultView;
      -
      -		if ( !view || !view.opener ) {
      -			view = window;
      -		}
      -
      -		return view.getComputedStyle( elem );
      -	};
      -
      -
      -
      -( function() {
      -
      -	// Executing both pixelPosition & boxSizingReliable tests require only one layout
      -	// so they're executed at the same time to save the second computation.
      -	function computeStyleTests() {
      -
      -		// This is a singleton, we need to execute it only once
      -		if ( !div ) {
      -			return;
      -		}
      -
      -		div.style.cssText =
      -			"box-sizing:border-box;" +
      -			"position:relative;display:block;" +
      -			"margin:auto;border:1px;padding:1px;" +
      -			"top:1%;width:50%";
      -		div.innerHTML = "";
      -		documentElement.appendChild( container );
      -
      -		var divStyle = window.getComputedStyle( div );
      -		pixelPositionVal = divStyle.top !== "1%";
      -
      -		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
      -		reliableMarginLeftVal = divStyle.marginLeft === "2px";
      -		boxSizingReliableVal = divStyle.width === "4px";
      -
      -		// Support: Android 4.0 - 4.3 only
      -		// Some styles come back with percentage values, even though they shouldn't
      -		div.style.marginRight = "50%";
      -		pixelMarginRightVal = divStyle.marginRight === "4px";
      -
      -		documentElement.removeChild( container );
      -
      -		// Nullify the div so it wouldn't be stored in the memory and
      -		// it will also be a sign that checks already performed
      -		div = null;
      -	}
      -
      -	var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
      -		container = document.createElement( "div" ),
      -		div = document.createElement( "div" );
      -
      -	// Finish early in limited (non-browser) environments
      -	if ( !div.style ) {
      -		return;
      -	}
      -
      -	// Support: IE <=9 - 11 only
      -	// Style of cloned element affects source element cloned (#8908)
      -	div.style.backgroundClip = "content-box";
      -	div.cloneNode( true ).style.backgroundClip = "";
      -	support.clearCloneStyle = div.style.backgroundClip === "content-box";
      -
      -	container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
      -		"padding:0;margin-top:1px;position:absolute";
      -	container.appendChild( div );
      -
      -	jQuery.extend( support, {
      -		pixelPosition: function() {
      -			computeStyleTests();
      -			return pixelPositionVal;
      -		},
      -		boxSizingReliable: function() {
      -			computeStyleTests();
      -			return boxSizingReliableVal;
      -		},
      -		pixelMarginRight: function() {
      -			computeStyleTests();
      -			return pixelMarginRightVal;
      -		},
      -		reliableMarginLeft: function() {
      -			computeStyleTests();
      -			return reliableMarginLeftVal;
      -		}
      -	} );
      -} )();
      -
      -
      -function curCSS( elem, name, computed ) {
      -	var width, minWidth, maxWidth, ret,
      -		style = elem.style;
      -
      -	computed = computed || getStyles( elem );
      -
      -	// Support: IE <=9 only
      -	// getPropertyValue is only needed for .css('filter') (#12537)
      -	if ( computed ) {
      -		ret = computed.getPropertyValue( name ) || computed[ name ];
      -
      -		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
      -			ret = jQuery.style( elem, name );
      -		}
      -
      -		// A tribute to the "awesome hack by Dean Edwards"
      -		// Android Browser returns percentage for some values,
      -		// but width seems to be reliably pixels.
      -		// This is against the CSSOM draft spec:
      -		// https://drafts.csswg.org/cssom/#resolved-values
      -		if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
      -
      -			// Remember the original values
      -			width = style.width;
      -			minWidth = style.minWidth;
      -			maxWidth = style.maxWidth;
      -
      -			// Put in the new values to get a computed value out
      -			style.minWidth = style.maxWidth = style.width = ret;
      -			ret = computed.width;
      -
      -			// Revert the changed values
      -			style.width = width;
      -			style.minWidth = minWidth;
      -			style.maxWidth = maxWidth;
      -		}
      -	}
      -
      -	return ret !== undefined ?
      -
      -		// Support: IE <=9 - 11 only
      -		// IE returns zIndex value as an integer.
      -		ret + "" :
      -		ret;
      -}
      -
      -
      -function addGetHookIf( conditionFn, hookFn ) {
      -
      -	// Define the hook, we'll check on the first run if it's really needed.
      -	return {
      -		get: function() {
      -			if ( conditionFn() ) {
      -
      -				// Hook not needed (or it's not possible to use it due
      -				// to missing dependency), remove it.
      -				delete this.get;
      -				return;
      -			}
      -
      -			// Hook needed; redefine it so that the support test is not executed again.
      -			return ( this.get = hookFn ).apply( this, arguments );
      -		}
      -	};
      -}
      -
      -
      -var
      -
      -	// Swappable if display is none or starts with table
      -	// except "table", "table-cell", or "table-caption"
      -	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
      -	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
      -	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
      -	cssNormalTransform = {
      -		letterSpacing: "0",
      -		fontWeight: "400"
      -	},
      -
      -	cssPrefixes = [ "Webkit", "Moz", "ms" ],
      -	emptyStyle = document.createElement( "div" ).style;
      -
      -// Return a css property mapped to a potentially vendor prefixed property
      -function vendorPropName( name ) {
      -
      -	// Shortcut for names that are not vendor prefixed
      -	if ( name in emptyStyle ) {
      -		return name;
      -	}
      -
      -	// Check for vendor prefixed names
      -	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
      -		i = cssPrefixes.length;
      -
      -	while ( i-- ) {
      -		name = cssPrefixes[ i ] + capName;
      -		if ( name in emptyStyle ) {
      -			return name;
      -		}
      -	}
      -}
      -
      -function setPositiveNumber( elem, value, subtract ) {
      -
      -	// Any relative (+/-) values have already been
      -	// normalized at this point
      -	var matches = rcssNum.exec( value );
      -	return matches ?
      -
      -		// Guard against undefined "subtract", e.g., when used as in cssHooks
      -		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
      -		value;
      -}
      -
      -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
      -	var i,
      -		val = 0;
      -
      -	// If we already have the right measurement, avoid augmentation
      -	if ( extra === ( isBorderBox ? "border" : "content" ) ) {
      -		i = 4;
      -
      -	// Otherwise initialize for horizontal or vertical properties
      -	} else {
      -		i = name === "width" ? 1 : 0;
      -	}
      -
      -	for ( ; i < 4; i += 2 ) {
      -
      -		// Both box models exclude margin, so add it if we want it
      -		if ( extra === "margin" ) {
      -			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
      -		}
      -
      -		if ( isBorderBox ) {
      -
      -			// border-box includes padding, so remove it if we want content
      -			if ( extra === "content" ) {
      -				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -			}
      -
      -			// At this point, extra isn't border nor margin, so remove border
      -			if ( extra !== "margin" ) {
      -				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -			}
      -		} else {
      -
      -			// At this point, extra isn't content, so add padding
      -			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -
      -			// At this point, extra isn't content nor padding, so add border
      -			if ( extra !== "padding" ) {
      -				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -			}
      -		}
      -	}
      -
      -	return val;
      -}
      -
      -function getWidthOrHeight( elem, name, extra ) {
      -
      -	// Start with offset property, which is equivalent to the border-box value
      -	var val,
      -		valueIsBorderBox = true,
      -		styles = getStyles( elem ),
      -		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
      -
      -	// Support: IE <=11 only
      -	// Running getBoundingClientRect on a disconnected node
      -	// in IE throws an error.
      -	if ( elem.getClientRects().length ) {
      -		val = elem.getBoundingClientRect()[ name ];
      -	}
      -
      -	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
      -	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
      -	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
      -	if ( val <= 0 || val == null ) {
      -
      -		// Fall back to computed then uncomputed css if necessary
      -		val = curCSS( elem, name, styles );
      -		if ( val < 0 || val == null ) {
      -			val = elem.style[ name ];
      -		}
      -
      -		// Computed unit is not pixels. Stop here and return.
      -		if ( rnumnonpx.test( val ) ) {
      -			return val;
      -		}
      -
      -		// Check for style in case a browser which returns unreliable values
      -		// for getComputedStyle silently falls back to the reliable elem.style
      -		valueIsBorderBox = isBorderBox &&
      -			( support.boxSizingReliable() || val === elem.style[ name ] );
      -
      -		// Normalize "", auto, and prepare for extra
      -		val = parseFloat( val ) || 0;
      -	}
      -
      -	// Use the active box-sizing model to add/subtract irrelevant styles
      -	return ( val +
      -		augmentWidthOrHeight(
      -			elem,
      -			name,
      -			extra || ( isBorderBox ? "border" : "content" ),
      -			valueIsBorderBox,
      -			styles
      -		)
      -	) + "px";
      -}
      -
      -jQuery.extend( {
      -
      -	// Add in style property hooks for overriding the default
      -	// behavior of getting and setting a style property
      -	cssHooks: {
      -		opacity: {
      -			get: function( elem, computed ) {
      -				if ( computed ) {
      -
      -					// We should always get a number back from opacity
      -					var ret = curCSS( elem, "opacity" );
      -					return ret === "" ? "1" : ret;
      -				}
      -			}
      -		}
      -	},
      -
      -	// Don't automatically add "px" to these possibly-unitless properties
      -	cssNumber: {
      -		"animationIterationCount": true,
      -		"columnCount": true,
      -		"fillOpacity": true,
      -		"flexGrow": true,
      -		"flexShrink": true,
      -		"fontWeight": true,
      -		"lineHeight": true,
      -		"opacity": true,
      -		"order": true,
      -		"orphans": true,
      -		"widows": true,
      -		"zIndex": true,
      -		"zoom": true
      -	},
      -
      -	// Add in properties whose names you wish to fix before
      -	// setting or getting the value
      -	cssProps: {
      -		"float": "cssFloat"
      -	},
      -
      -	// Get and set the style property on a DOM Node
      -	style: function( elem, name, value, extra ) {
      -
      -		// Don't set styles on text and comment nodes
      -		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
      -			return;
      -		}
      -
      -		// Make sure that we're working with the right name
      -		var ret, type, hooks,
      -			origName = jQuery.camelCase( name ),
      -			style = elem.style;
      -
      -		name = jQuery.cssProps[ origName ] ||
      -			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
      -
      -		// Gets hook for the prefixed version, then unprefixed version
      -		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -		// Check if we're setting a value
      -		if ( value !== undefined ) {
      -			type = typeof value;
      -
      -			// Convert "+=" or "-=" to relative numbers (#7345)
      -			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
      -				value = adjustCSS( elem, name, ret );
      -
      -				// Fixes bug #9237
      -				type = "number";
      -			}
      -
      -			// Make sure that null and NaN values aren't set (#7116)
      -			if ( value == null || value !== value ) {
      -				return;
      -			}
      -
      -			// If a number was passed in, add the unit (except for certain CSS properties)
      -			if ( type === "number" ) {
      -				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
      -			}
      -
      -			// background-* props affect original clone's values
      -			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
      -				style[ name ] = "inherit";
      -			}
      -
      -			// If a hook was provided, use that value, otherwise just set the specified value
      -			if ( !hooks || !( "set" in hooks ) ||
      -				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
      -
      -				style[ name ] = value;
      -			}
      -
      -		} else {
      -
      -			// If a hook was provided get the non-computed value from there
      -			if ( hooks && "get" in hooks &&
      -				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
      -
      -				return ret;
      -			}
      -
      -			// Otherwise just get the value from the style object
      -			return style[ name ];
      -		}
      -	},
      -
      -	css: function( elem, name, extra, styles ) {
      -		var val, num, hooks,
      -			origName = jQuery.camelCase( name );
      -
      -		// Make sure that we're working with the right name
      -		name = jQuery.cssProps[ origName ] ||
      -			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
      -
      -		// Try prefixed name followed by the unprefixed name
      -		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -		// If a hook was provided get the computed value from there
      -		if ( hooks && "get" in hooks ) {
      -			val = hooks.get( elem, true, extra );
      -		}
      -
      -		// Otherwise, if a way to get the computed value exists, use that
      -		if ( val === undefined ) {
      -			val = curCSS( elem, name, styles );
      -		}
      -
      -		// Convert "normal" to computed value
      -		if ( val === "normal" && name in cssNormalTransform ) {
      -			val = cssNormalTransform[ name ];
      -		}
      -
      -		// Make numeric if forced or a qualifier was provided and val looks numeric
      -		if ( extra === "" || extra ) {
      -			num = parseFloat( val );
      -			return extra === true || isFinite( num ) ? num || 0 : val;
      -		}
      -		return val;
      -	}
      -} );
      -
      -jQuery.each( [ "height", "width" ], function( i, name ) {
      -	jQuery.cssHooks[ name ] = {
      -		get: function( elem, computed, extra ) {
      -			if ( computed ) {
      -
      -				// Certain elements can have dimension info if we invisibly show them
      -				// but it must have a current display style that would benefit
      -				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
      -
      -					// Support: Safari 8+
      -					// Table columns in Safari have non-zero offsetWidth & zero
      -					// getBoundingClientRect().width unless display is changed.
      -					// Support: IE <=11 only
      -					// Running getBoundingClientRect on a disconnected node
      -					// in IE throws an error.
      -					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
      -						swap( elem, cssShow, function() {
      -							return getWidthOrHeight( elem, name, extra );
      -						} ) :
      -						getWidthOrHeight( elem, name, extra );
      -			}
      -		},
      -
      -		set: function( elem, value, extra ) {
      -			var matches,
      -				styles = extra && getStyles( elem ),
      -				subtract = extra && augmentWidthOrHeight(
      -					elem,
      -					name,
      -					extra,
      -					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
      -					styles
      -				);
      -
      -			// Convert to pixels if value adjustment is needed
      -			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
      -				( matches[ 3 ] || "px" ) !== "px" ) {
      -
      -				elem.style[ name ] = value;
      -				value = jQuery.css( elem, name );
      -			}
      -
      -			return setPositiveNumber( elem, value, subtract );
      -		}
      -	};
      -} );
      -
      -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
      -	function( elem, computed ) {
      -		if ( computed ) {
      -			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
      -				elem.getBoundingClientRect().left -
      -					swap( elem, { marginLeft: 0 }, function() {
      -						return elem.getBoundingClientRect().left;
      -					} )
      -				) + "px";
      -		}
      -	}
      -);
      -
      -// These hooks are used by animate to expand properties
      -jQuery.each( {
      -	margin: "",
      -	padding: "",
      -	border: "Width"
      -}, function( prefix, suffix ) {
      -	jQuery.cssHooks[ prefix + suffix ] = {
      -		expand: function( value ) {
      -			var i = 0,
      -				expanded = {},
      -
      -				// Assumes a single number if not a string
      -				parts = typeof value === "string" ? value.split( " " ) : [ value ];
      -
      -			for ( ; i < 4; i++ ) {
      -				expanded[ prefix + cssExpand[ i ] + suffix ] =
      -					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
      -			}
      -
      -			return expanded;
      -		}
      -	};
      -
      -	if ( !rmargin.test( prefix ) ) {
      -		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	css: function( name, value ) {
      -		return access( this, function( elem, name, value ) {
      -			var styles, len,
      -				map = {},
      -				i = 0;
      -
      -			if ( jQuery.isArray( name ) ) {
      -				styles = getStyles( elem );
      -				len = name.length;
      -
      -				for ( ; i < len; i++ ) {
      -					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
      -				}
      -
      -				return map;
      -			}
      -
      -			return value !== undefined ?
      -				jQuery.style( elem, name, value ) :
      -				jQuery.css( elem, name );
      -		}, name, value, arguments.length > 1 );
      -	}
      -} );
      -
      -
      -function Tween( elem, options, prop, end, easing ) {
      -	return new Tween.prototype.init( elem, options, prop, end, easing );
      -}
      -jQuery.Tween = Tween;
      -
      -Tween.prototype = {
      -	constructor: Tween,
      -	init: function( elem, options, prop, end, easing, unit ) {
      -		this.elem = elem;
      -		this.prop = prop;
      -		this.easing = easing || jQuery.easing._default;
      -		this.options = options;
      -		this.start = this.now = this.cur();
      -		this.end = end;
      -		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
      -	},
      -	cur: function() {
      -		var hooks = Tween.propHooks[ this.prop ];
      -
      -		return hooks && hooks.get ?
      -			hooks.get( this ) :
      -			Tween.propHooks._default.get( this );
      -	},
      -	run: function( percent ) {
      -		var eased,
      -			hooks = Tween.propHooks[ this.prop ];
      -
      -		if ( this.options.duration ) {
      -			this.pos = eased = jQuery.easing[ this.easing ](
      -				percent, this.options.duration * percent, 0, 1, this.options.duration
      -			);
      -		} else {
      -			this.pos = eased = percent;
      -		}
      -		this.now = ( this.end - this.start ) * eased + this.start;
      -
      -		if ( this.options.step ) {
      -			this.options.step.call( this.elem, this.now, this );
      -		}
      -
      -		if ( hooks && hooks.set ) {
      -			hooks.set( this );
      -		} else {
      -			Tween.propHooks._default.set( this );
      -		}
      -		return this;
      -	}
      -};
      -
      -Tween.prototype.init.prototype = Tween.prototype;
      -
      -Tween.propHooks = {
      -	_default: {
      -		get: function( tween ) {
      -			var result;
      -
      -			// Use a property on the element directly when it is not a DOM element,
      -			// or when there is no matching style property that exists.
      -			if ( tween.elem.nodeType !== 1 ||
      -				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
      -				return tween.elem[ tween.prop ];
      -			}
      -
      -			// Passing an empty string as a 3rd parameter to .css will automatically
      -			// attempt a parseFloat and fallback to a string if the parse fails.
      -			// Simple values such as "10px" are parsed to Float;
      -			// complex values such as "rotate(1rad)" are returned as-is.
      -			result = jQuery.css( tween.elem, tween.prop, "" );
      -
      -			// Empty strings, null, undefined and "auto" are converted to 0.
      -			return !result || result === "auto" ? 0 : result;
      -		},
      -		set: function( tween ) {
      -
      -			// Use step hook for back compat.
      -			// Use cssHook if its there.
      -			// Use .style if available and use plain properties where available.
      -			if ( jQuery.fx.step[ tween.prop ] ) {
      -				jQuery.fx.step[ tween.prop ]( tween );
      -			} else if ( tween.elem.nodeType === 1 &&
      -				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
      -					jQuery.cssHooks[ tween.prop ] ) ) {
      -				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
      -			} else {
      -				tween.elem[ tween.prop ] = tween.now;
      -			}
      -		}
      -	}
      -};
      -
      -// Support: IE <=9 only
      -// Panic based approach to setting things on disconnected nodes
      -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
      -	set: function( tween ) {
      -		if ( tween.elem.nodeType && tween.elem.parentNode ) {
      -			tween.elem[ tween.prop ] = tween.now;
      -		}
      -	}
      -};
      -
      -jQuery.easing = {
      -	linear: function( p ) {
      -		return p;
      -	},
      -	swing: function( p ) {
      -		return 0.5 - Math.cos( p * Math.PI ) / 2;
      -	},
      -	_default: "swing"
      -};
      -
      -jQuery.fx = Tween.prototype.init;
      -
      -// Back compat <1.8 extension point
      -jQuery.fx.step = {};
      -
      -
      -
      -
      -var
      -	fxNow, timerId,
      -	rfxtypes = /^(?:toggle|show|hide)$/,
      -	rrun = /queueHooks$/;
      -
      -function raf() {
      -	if ( timerId ) {
      -		window.requestAnimationFrame( raf );
      -		jQuery.fx.tick();
      -	}
      -}
      -
      -// Animations created synchronously will run synchronously
      -function createFxNow() {
      -	window.setTimeout( function() {
      -		fxNow = undefined;
      -	} );
      -	return ( fxNow = jQuery.now() );
      -}
      -
      -// Generate parameters to create a standard animation
      -function genFx( type, includeWidth ) {
      -	var which,
      -		i = 0,
      -		attrs = { height: type };
      -
      -	// If we include width, step value is 1 to do all cssExpand values,
      -	// otherwise step value is 2 to skip over Left and Right
      -	includeWidth = includeWidth ? 1 : 0;
      -	for ( ; i < 4; i += 2 - includeWidth ) {
      -		which = cssExpand[ i ];
      -		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
      -	}
      -
      -	if ( includeWidth ) {
      -		attrs.opacity = attrs.width = type;
      -	}
      -
      -	return attrs;
      -}
      -
      -function createTween( value, prop, animation ) {
      -	var tween,
      -		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
      -		index = 0,
      -		length = collection.length;
      -	for ( ; index < length; index++ ) {
      -		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
      -
      -			// We're done with this property
      -			return tween;
      -		}
      -	}
      -}
      -
      -function defaultPrefilter( elem, props, opts ) {
      -	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
      -		isBox = "width" in props || "height" in props,
      -		anim = this,
      -		orig = {},
      -		style = elem.style,
      -		hidden = elem.nodeType && isHiddenWithinTree( elem ),
      -		dataShow = dataPriv.get( elem, "fxshow" );
      -
      -	// Queue-skipping animations hijack the fx hooks
      -	if ( !opts.queue ) {
      -		hooks = jQuery._queueHooks( elem, "fx" );
      -		if ( hooks.unqueued == null ) {
      -			hooks.unqueued = 0;
      -			oldfire = hooks.empty.fire;
      -			hooks.empty.fire = function() {
      -				if ( !hooks.unqueued ) {
      -					oldfire();
      -				}
      -			};
      -		}
      -		hooks.unqueued++;
      -
      -		anim.always( function() {
      -
      -			// Ensure the complete handler is called before this completes
      -			anim.always( function() {
      -				hooks.unqueued--;
      -				if ( !jQuery.queue( elem, "fx" ).length ) {
      -					hooks.empty.fire();
      -				}
      -			} );
      -		} );
      -	}
      -
      -	// Detect show/hide animations
      -	for ( prop in props ) {
      -		value = props[ prop ];
      -		if ( rfxtypes.test( value ) ) {
      -			delete props[ prop ];
      -			toggle = toggle || value === "toggle";
      -			if ( value === ( hidden ? "hide" : "show" ) ) {
      -
      -				// Pretend to be hidden if this is a "show" and
      -				// there is still data from a stopped show/hide
      -				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
      -					hidden = true;
      -
      -				// Ignore all other no-op show/hide data
      -				} else {
      -					continue;
      -				}
      -			}
      -			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
      -		}
      -	}
      -
      -	// Bail out if this is a no-op like .hide().hide()
      -	propTween = !jQuery.isEmptyObject( props );
      -	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
      -		return;
      -	}
      -
      -	// Restrict "overflow" and "display" styles during box animations
      -	if ( isBox && elem.nodeType === 1 ) {
      -
      -		// Support: IE <=9 - 11, Edge 12 - 13
      -		// Record all 3 overflow attributes because IE does not infer the shorthand
      -		// from identically-valued overflowX and overflowY
      -		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
      -
      -		// Identify a display type, preferring old show/hide data over the CSS cascade
      -		restoreDisplay = dataShow && dataShow.display;
      -		if ( restoreDisplay == null ) {
      -			restoreDisplay = dataPriv.get( elem, "display" );
      -		}
      -		display = jQuery.css( elem, "display" );
      -		if ( display === "none" ) {
      -			if ( restoreDisplay ) {
      -				display = restoreDisplay;
      -			} else {
      -
      -				// Get nonempty value(s) by temporarily forcing visibility
      -				showHide( [ elem ], true );
      -				restoreDisplay = elem.style.display || restoreDisplay;
      -				display = jQuery.css( elem, "display" );
      -				showHide( [ elem ] );
      -			}
      -		}
      -
      -		// Animate inline elements as inline-block
      -		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
      -			if ( jQuery.css( elem, "float" ) === "none" ) {
      -
      -				// Restore the original display value at the end of pure show/hide animations
      -				if ( !propTween ) {
      -					anim.done( function() {
      -						style.display = restoreDisplay;
      -					} );
      -					if ( restoreDisplay == null ) {
      -						display = style.display;
      -						restoreDisplay = display === "none" ? "" : display;
      -					}
      -				}
      -				style.display = "inline-block";
      -			}
      -		}
      -	}
      -
      -	if ( opts.overflow ) {
      -		style.overflow = "hidden";
      -		anim.always( function() {
      -			style.overflow = opts.overflow[ 0 ];
      -			style.overflowX = opts.overflow[ 1 ];
      -			style.overflowY = opts.overflow[ 2 ];
      -		} );
      -	}
      -
      -	// Implement show/hide animations
      -	propTween = false;
      -	for ( prop in orig ) {
      -
      -		// General show/hide setup for this element animation
      -		if ( !propTween ) {
      -			if ( dataShow ) {
      -				if ( "hidden" in dataShow ) {
      -					hidden = dataShow.hidden;
      -				}
      -			} else {
      -				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
      -			}
      -
      -			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
      -			if ( toggle ) {
      -				dataShow.hidden = !hidden;
      -			}
      -
      -			// Show elements before animating them
      -			if ( hidden ) {
      -				showHide( [ elem ], true );
      -			}
      -
      -			/* eslint-disable no-loop-func */
      -
      -			anim.done( function() {
      -
      -			/* eslint-enable no-loop-func */
      -
      -				// The final step of a "hide" animation is actually hiding the element
      -				if ( !hidden ) {
      -					showHide( [ elem ] );
      -				}
      -				dataPriv.remove( elem, "fxshow" );
      -				for ( prop in orig ) {
      -					jQuery.style( elem, prop, orig[ prop ] );
      -				}
      -			} );
      -		}
      -
      -		// Per-property setup
      -		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
      -		if ( !( prop in dataShow ) ) {
      -			dataShow[ prop ] = propTween.start;
      -			if ( hidden ) {
      -				propTween.end = propTween.start;
      -				propTween.start = 0;
      -			}
      -		}
      -	}
      -}
      -
      -function propFilter( props, specialEasing ) {
      -	var index, name, easing, value, hooks;
      -
      -	// camelCase, specialEasing and expand cssHook pass
      -	for ( index in props ) {
      -		name = jQuery.camelCase( index );
      -		easing = specialEasing[ name ];
      -		value = props[ index ];
      -		if ( jQuery.isArray( value ) ) {
      -			easing = value[ 1 ];
      -			value = props[ index ] = value[ 0 ];
      -		}
      -
      -		if ( index !== name ) {
      -			props[ name ] = value;
      -			delete props[ index ];
      -		}
      -
      -		hooks = jQuery.cssHooks[ name ];
      -		if ( hooks && "expand" in hooks ) {
      -			value = hooks.expand( value );
      -			delete props[ name ];
      -
      -			// Not quite $.extend, this won't overwrite existing keys.
      -			// Reusing 'index' because we have the correct "name"
      -			for ( index in value ) {
      -				if ( !( index in props ) ) {
      -					props[ index ] = value[ index ];
      -					specialEasing[ index ] = easing;
      -				}
      -			}
      -		} else {
      -			specialEasing[ name ] = easing;
      -		}
      -	}
      -}
      -
      -function Animation( elem, properties, options ) {
      -	var result,
      -		stopped,
      -		index = 0,
      -		length = Animation.prefilters.length,
      -		deferred = jQuery.Deferred().always( function() {
      -
      -			// Don't match elem in the :animated selector
      -			delete tick.elem;
      -		} ),
      -		tick = function() {
      -			if ( stopped ) {
      -				return false;
      -			}
      -			var currentTime = fxNow || createFxNow(),
      -				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
      -
      -				// Support: Android 2.3 only
      -				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
      -				temp = remaining / animation.duration || 0,
      -				percent = 1 - temp,
      -				index = 0,
      -				length = animation.tweens.length;
      -
      -			for ( ; index < length; index++ ) {
      -				animation.tweens[ index ].run( percent );
      -			}
      -
      -			deferred.notifyWith( elem, [ animation, percent, remaining ] );
      -
      -			if ( percent < 1 && length ) {
      -				return remaining;
      -			} else {
      -				deferred.resolveWith( elem, [ animation ] );
      -				return false;
      -			}
      -		},
      -		animation = deferred.promise( {
      -			elem: elem,
      -			props: jQuery.extend( {}, properties ),
      -			opts: jQuery.extend( true, {
      -				specialEasing: {},
      -				easing: jQuery.easing._default
      -			}, options ),
      -			originalProperties: properties,
      -			originalOptions: options,
      -			startTime: fxNow || createFxNow(),
      -			duration: options.duration,
      -			tweens: [],
      -			createTween: function( prop, end ) {
      -				var tween = jQuery.Tween( elem, animation.opts, prop, end,
      -						animation.opts.specialEasing[ prop ] || animation.opts.easing );
      -				animation.tweens.push( tween );
      -				return tween;
      -			},
      -			stop: function( gotoEnd ) {
      -				var index = 0,
      -
      -					// If we are going to the end, we want to run all the tweens
      -					// otherwise we skip this part
      -					length = gotoEnd ? animation.tweens.length : 0;
      -				if ( stopped ) {
      -					return this;
      -				}
      -				stopped = true;
      -				for ( ; index < length; index++ ) {
      -					animation.tweens[ index ].run( 1 );
      -				}
      -
      -				// Resolve when we played the last frame; otherwise, reject
      -				if ( gotoEnd ) {
      -					deferred.notifyWith( elem, [ animation, 1, 0 ] );
      -					deferred.resolveWith( elem, [ animation, gotoEnd ] );
      -				} else {
      -					deferred.rejectWith( elem, [ animation, gotoEnd ] );
      -				}
      -				return this;
      -			}
      -		} ),
      -		props = animation.props;
      -
      -	propFilter( props, animation.opts.specialEasing );
      -
      -	for ( ; index < length; index++ ) {
      -		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
      -		if ( result ) {
      -			if ( jQuery.isFunction( result.stop ) ) {
      -				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
      -					jQuery.proxy( result.stop, result );
      -			}
      -			return result;
      -		}
      -	}
      -
      -	jQuery.map( props, createTween, animation );
      -
      -	if ( jQuery.isFunction( animation.opts.start ) ) {
      -		animation.opts.start.call( elem, animation );
      -	}
      -
      -	jQuery.fx.timer(
      -		jQuery.extend( tick, {
      -			elem: elem,
      -			anim: animation,
      -			queue: animation.opts.queue
      -		} )
      -	);
      -
      -	// attach callbacks from options
      -	return animation.progress( animation.opts.progress )
      -		.done( animation.opts.done, animation.opts.complete )
      -		.fail( animation.opts.fail )
      -		.always( animation.opts.always );
      -}
      -
      -jQuery.Animation = jQuery.extend( Animation, {
      -
      -	tweeners: {
      -		"*": [ function( prop, value ) {
      -			var tween = this.createTween( prop, value );
      -			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
      -			return tween;
      -		} ]
      -	},
      -
      -	tweener: function( props, callback ) {
      -		if ( jQuery.isFunction( props ) ) {
      -			callback = props;
      -			props = [ "*" ];
      -		} else {
      -			props = props.match( rnothtmlwhite );
      -		}
      -
      -		var prop,
      -			index = 0,
      -			length = props.length;
      -
      -		for ( ; index < length; index++ ) {
      -			prop = props[ index ];
      -			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
      -			Animation.tweeners[ prop ].unshift( callback );
      -		}
      -	},
      -
      -	prefilters: [ defaultPrefilter ],
      -
      -	prefilter: function( callback, prepend ) {
      -		if ( prepend ) {
      -			Animation.prefilters.unshift( callback );
      -		} else {
      -			Animation.prefilters.push( callback );
      -		}
      -	}
      -} );
      -
      -jQuery.speed = function( speed, easing, fn ) {
      -	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
      -		complete: fn || !fn && easing ||
      -			jQuery.isFunction( speed ) && speed,
      -		duration: speed,
      -		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
      -	};
      -
      -	// Go to the end state if fx are off or if document is hidden
      -	if ( jQuery.fx.off || document.hidden ) {
      -		opt.duration = 0;
      -
      -	} else {
      -		if ( typeof opt.duration !== "number" ) {
      -			if ( opt.duration in jQuery.fx.speeds ) {
      -				opt.duration = jQuery.fx.speeds[ opt.duration ];
      -
      -			} else {
      -				opt.duration = jQuery.fx.speeds._default;
      -			}
      -		}
      -	}
      -
      -	// Normalize opt.queue - true/undefined/null -> "fx"
      -	if ( opt.queue == null || opt.queue === true ) {
      -		opt.queue = "fx";
      -	}
      -
      -	// Queueing
      -	opt.old = opt.complete;
      -
      -	opt.complete = function() {
      -		if ( jQuery.isFunction( opt.old ) ) {
      -			opt.old.call( this );
      -		}
      -
      -		if ( opt.queue ) {
      -			jQuery.dequeue( this, opt.queue );
      -		}
      -	};
      -
      -	return opt;
      -};
      -
      -jQuery.fn.extend( {
      -	fadeTo: function( speed, to, easing, callback ) {
      -
      -		// Show any hidden elements after setting opacity to 0
      -		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
      -
      -			// Animate to the value specified
      -			.end().animate( { opacity: to }, speed, easing, callback );
      -	},
      -	animate: function( prop, speed, easing, callback ) {
      -		var empty = jQuery.isEmptyObject( prop ),
      -			optall = jQuery.speed( speed, easing, callback ),
      -			doAnimation = function() {
      -
      -				// Operate on a copy of prop so per-property easing won't be lost
      -				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
      -
      -				// Empty animations, or finishing resolves immediately
      -				if ( empty || dataPriv.get( this, "finish" ) ) {
      -					anim.stop( true );
      -				}
      -			};
      -			doAnimation.finish = doAnimation;
      -
      -		return empty || optall.queue === false ?
      -			this.each( doAnimation ) :
      -			this.queue( optall.queue, doAnimation );
      -	},
      -	stop: function( type, clearQueue, gotoEnd ) {
      -		var stopQueue = function( hooks ) {
      -			var stop = hooks.stop;
      -			delete hooks.stop;
      -			stop( gotoEnd );
      -		};
      -
      -		if ( typeof type !== "string" ) {
      -			gotoEnd = clearQueue;
      -			clearQueue = type;
      -			type = undefined;
      -		}
      -		if ( clearQueue && type !== false ) {
      -			this.queue( type || "fx", [] );
      -		}
      -
      -		return this.each( function() {
      -			var dequeue = true,
      -				index = type != null && type + "queueHooks",
      -				timers = jQuery.timers,
      -				data = dataPriv.get( this );
      -
      -			if ( index ) {
      -				if ( data[ index ] && data[ index ].stop ) {
      -					stopQueue( data[ index ] );
      -				}
      -			} else {
      -				for ( index in data ) {
      -					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
      -						stopQueue( data[ index ] );
      -					}
      -				}
      -			}
      -
      -			for ( index = timers.length; index--; ) {
      -				if ( timers[ index ].elem === this &&
      -					( type == null || timers[ index ].queue === type ) ) {
      -
      -					timers[ index ].anim.stop( gotoEnd );
      -					dequeue = false;
      -					timers.splice( index, 1 );
      -				}
      -			}
      -
      -			// Start the next in the queue if the last step wasn't forced.
      -			// Timers currently will call their complete callbacks, which
      -			// will dequeue but only if they were gotoEnd.
      -			if ( dequeue || !gotoEnd ) {
      -				jQuery.dequeue( this, type );
      -			}
      -		} );
      -	},
      -	finish: function( type ) {
      -		if ( type !== false ) {
      -			type = type || "fx";
      -		}
      -		return this.each( function() {
      -			var index,
      -				data = dataPriv.get( this ),
      -				queue = data[ type + "queue" ],
      -				hooks = data[ type + "queueHooks" ],
      -				timers = jQuery.timers,
      -				length = queue ? queue.length : 0;
      -
      -			// Enable finishing flag on private data
      -			data.finish = true;
      -
      -			// Empty the queue first
      -			jQuery.queue( this, type, [] );
      -
      -			if ( hooks && hooks.stop ) {
      -				hooks.stop.call( this, true );
      -			}
      -
      -			// Look for any active animations, and finish them
      -			for ( index = timers.length; index--; ) {
      -				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
      -					timers[ index ].anim.stop( true );
      -					timers.splice( index, 1 );
      -				}
      -			}
      -
      -			// Look for any animations in the old queue and finish them
      -			for ( index = 0; index < length; index++ ) {
      -				if ( queue[ index ] && queue[ index ].finish ) {
      -					queue[ index ].finish.call( this );
      -				}
      -			}
      -
      -			// Turn off finishing flag
      -			delete data.finish;
      -		} );
      -	}
      -} );
      -
      -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
      -	var cssFn = jQuery.fn[ name ];
      -	jQuery.fn[ name ] = function( speed, easing, callback ) {
      -		return speed == null || typeof speed === "boolean" ?
      -			cssFn.apply( this, arguments ) :
      -			this.animate( genFx( name, true ), speed, easing, callback );
      -	};
      -} );
      -
      -// Generate shortcuts for custom animations
      -jQuery.each( {
      -	slideDown: genFx( "show" ),
      -	slideUp: genFx( "hide" ),
      -	slideToggle: genFx( "toggle" ),
      -	fadeIn: { opacity: "show" },
      -	fadeOut: { opacity: "hide" },
      -	fadeToggle: { opacity: "toggle" }
      -}, function( name, props ) {
      -	jQuery.fn[ name ] = function( speed, easing, callback ) {
      -		return this.animate( props, speed, easing, callback );
      -	};
      -} );
      -
      -jQuery.timers = [];
      -jQuery.fx.tick = function() {
      -	var timer,
      -		i = 0,
      -		timers = jQuery.timers;
      -
      -	fxNow = jQuery.now();
      -
      -	for ( ; i < timers.length; i++ ) {
      -		timer = timers[ i ];
      -
      -		// Checks the timer has not already been removed
      -		if ( !timer() && timers[ i ] === timer ) {
      -			timers.splice( i--, 1 );
      -		}
      -	}
      -
      -	if ( !timers.length ) {
      -		jQuery.fx.stop();
      -	}
      -	fxNow = undefined;
      -};
      -
      -jQuery.fx.timer = function( timer ) {
      -	jQuery.timers.push( timer );
      -	if ( timer() ) {
      -		jQuery.fx.start();
      -	} else {
      -		jQuery.timers.pop();
      -	}
      -};
      -
      -jQuery.fx.interval = 13;
      -jQuery.fx.start = function() {
      -	if ( !timerId ) {
      -		timerId = window.requestAnimationFrame ?
      -			window.requestAnimationFrame( raf ) :
      -			window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
      -	}
      -};
      -
      -jQuery.fx.stop = function() {
      -	if ( window.cancelAnimationFrame ) {
      -		window.cancelAnimationFrame( timerId );
      -	} else {
      -		window.clearInterval( timerId );
      -	}
      -
      -	timerId = null;
      -};
      -
      -jQuery.fx.speeds = {
      -	slow: 600,
      -	fast: 200,
      -
      -	// Default speed
      -	_default: 400
      -};
      -
      -
      -// Based off of the plugin by Clint Helfers, with permission.
      -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
      -jQuery.fn.delay = function( time, type ) {
      -	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
      -	type = type || "fx";
      -
      -	return this.queue( type, function( next, hooks ) {
      -		var timeout = window.setTimeout( next, time );
      -		hooks.stop = function() {
      -			window.clearTimeout( timeout );
      -		};
      -	} );
      -};
      -
      -
      -( function() {
      -	var input = document.createElement( "input" ),
      -		select = document.createElement( "select" ),
      -		opt = select.appendChild( document.createElement( "option" ) );
      -
      -	input.type = "checkbox";
      -
      -	// Support: Android <=4.3 only
      -	// Default value for a checkbox should be "on"
      -	support.checkOn = input.value !== "";
      -
      -	// Support: IE <=11 only
      -	// Must access selectedIndex to make default options select
      -	support.optSelected = opt.selected;
      -
      -	// Support: IE <=11 only
      -	// An input loses its value after becoming a radio
      -	input = document.createElement( "input" );
      -	input.value = "t";
      -	input.type = "radio";
      -	support.radioValue = input.value === "t";
      -} )();
      -
      -
      -var boolHook,
      -	attrHandle = jQuery.expr.attrHandle;
      -
      -jQuery.fn.extend( {
      -	attr: function( name, value ) {
      -		return access( this, jQuery.attr, name, value, arguments.length > 1 );
      -	},
      -
      -	removeAttr: function( name ) {
      -		return this.each( function() {
      -			jQuery.removeAttr( this, name );
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	attr: function( elem, name, value ) {
      -		var ret, hooks,
      -			nType = elem.nodeType;
      -
      -		// Don't get/set attributes on text, comment and attribute nodes
      -		if ( nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		// Fallback to prop when attributes are not supported
      -		if ( typeof elem.getAttribute === "undefined" ) {
      -			return jQuery.prop( elem, name, value );
      -		}
      -
      -		// Attribute hooks are determined by the lowercase version
      -		// Grab necessary hook if one is defined
      -		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
      -			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
      -				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
      -		}
      -
      -		if ( value !== undefined ) {
      -			if ( value === null ) {
      -				jQuery.removeAttr( elem, name );
      -				return;
      -			}
      -
      -			if ( hooks && "set" in hooks &&
      -				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
      -				return ret;
      -			}
      -
      -			elem.setAttribute( name, value + "" );
      -			return value;
      -		}
      -
      -		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
      -			return ret;
      -		}
      -
      -		ret = jQuery.find.attr( elem, name );
      -
      -		// Non-existent attributes return null, we normalize to undefined
      -		return ret == null ? undefined : ret;
      -	},
      -
      -	attrHooks: {
      -		type: {
      -			set: function( elem, value ) {
      -				if ( !support.radioValue && value === "radio" &&
      -					jQuery.nodeName( elem, "input" ) ) {
      -					var val = elem.value;
      -					elem.setAttribute( "type", value );
      -					if ( val ) {
      -						elem.value = val;
      -					}
      -					return value;
      -				}
      -			}
      -		}
      -	},
      -
      -	removeAttr: function( elem, value ) {
      -		var name,
      -			i = 0,
      -
      -			// Attribute names can contain non-HTML whitespace characters
      -			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
      -			attrNames = value && value.match( rnothtmlwhite );
      -
      -		if ( attrNames && elem.nodeType === 1 ) {
      -			while ( ( name = attrNames[ i++ ] ) ) {
      -				elem.removeAttribute( name );
      -			}
      -		}
      -	}
      -} );
      -
      -// Hooks for boolean attributes
      -boolHook = {
      -	set: function( elem, value, name ) {
      -		if ( value === false ) {
      -
      -			// Remove boolean attributes when set to false
      -			jQuery.removeAttr( elem, name );
      -		} else {
      -			elem.setAttribute( name, name );
      -		}
      -		return name;
      -	}
      -};
      -
      -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
      -	var getter = attrHandle[ name ] || jQuery.find.attr;
      -
      -	attrHandle[ name ] = function( elem, name, isXML ) {
      -		var ret, handle,
      -			lowercaseName = name.toLowerCase();
      -
      -		if ( !isXML ) {
      -
      -			// Avoid an infinite loop by temporarily removing this function from the getter
      -			handle = attrHandle[ lowercaseName ];
      -			attrHandle[ lowercaseName ] = ret;
      -			ret = getter( elem, name, isXML ) != null ?
      -				lowercaseName :
      -				null;
      -			attrHandle[ lowercaseName ] = handle;
      -		}
      -		return ret;
      -	};
      -} );
      -
      -
      -
      -
      -var rfocusable = /^(?:input|select|textarea|button)$/i,
      -	rclickable = /^(?:a|area)$/i;
      -
      -jQuery.fn.extend( {
      -	prop: function( name, value ) {
      -		return access( this, jQuery.prop, name, value, arguments.length > 1 );
      -	},
      -
      -	removeProp: function( name ) {
      -		return this.each( function() {
      -			delete this[ jQuery.propFix[ name ] || name ];
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	prop: function( elem, name, value ) {
      -		var ret, hooks,
      -			nType = elem.nodeType;
      -
      -		// Don't get/set properties on text, comment and attribute nodes
      -		if ( nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
      -
      -			// Fix name and attach hooks
      -			name = jQuery.propFix[ name ] || name;
      -			hooks = jQuery.propHooks[ name ];
      -		}
      -
      -		if ( value !== undefined ) {
      -			if ( hooks && "set" in hooks &&
      -				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
      -				return ret;
      -			}
      -
      -			return ( elem[ name ] = value );
      -		}
      -
      -		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
      -			return ret;
      -		}
      -
      -		return elem[ name ];
      -	},
      -
      -	propHooks: {
      -		tabIndex: {
      -			get: function( elem ) {
      -
      -				// Support: IE <=9 - 11 only
      -				// elem.tabIndex doesn't always return the
      -				// correct value when it hasn't been explicitly set
      -				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
      -				// Use proper attribute retrieval(#12072)
      -				var tabindex = jQuery.find.attr( elem, "tabindex" );
      -
      -				if ( tabindex ) {
      -					return parseInt( tabindex, 10 );
      -				}
      -
      -				if (
      -					rfocusable.test( elem.nodeName ) ||
      -					rclickable.test( elem.nodeName ) &&
      -					elem.href
      -				) {
      -					return 0;
      -				}
      -
      -				return -1;
      -			}
      -		}
      -	},
      -
      -	propFix: {
      -		"for": "htmlFor",
      -		"class": "className"
      -	}
      -} );
      -
      -// Support: IE <=11 only
      -// Accessing the selectedIndex property
      -// forces the browser to respect setting selected
      -// on the option
      -// The getter ensures a default option is selected
      -// when in an optgroup
      -// eslint rule "no-unused-expressions" is disabled for this code
      -// since it considers such accessions noop
      -if ( !support.optSelected ) {
      -	jQuery.propHooks.selected = {
      -		get: function( elem ) {
      -
      -			/* eslint no-unused-expressions: "off" */
      -
      -			var parent = elem.parentNode;
      -			if ( parent && parent.parentNode ) {
      -				parent.parentNode.selectedIndex;
      -			}
      -			return null;
      -		},
      -		set: function( elem ) {
      -
      -			/* eslint no-unused-expressions: "off" */
      -
      -			var parent = elem.parentNode;
      -			if ( parent ) {
      -				parent.selectedIndex;
      -
      -				if ( parent.parentNode ) {
      -					parent.parentNode.selectedIndex;
      -				}
      -			}
      -		}
      -	};
      -}
      -
      -jQuery.each( [
      -	"tabIndex",
      -	"readOnly",
      -	"maxLength",
      -	"cellSpacing",
      -	"cellPadding",
      -	"rowSpan",
      -	"colSpan",
      -	"useMap",
      -	"frameBorder",
      -	"contentEditable"
      -], function() {
      -	jQuery.propFix[ this.toLowerCase() ] = this;
      -} );
      -
      -
      -
      -
      -	// Strip and collapse whitespace according to HTML spec
      -	// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
      -	function stripAndCollapse( value ) {
      -		var tokens = value.match( rnothtmlwhite ) || [];
      -		return tokens.join( " " );
      -	}
      -
      -
      -function getClass( elem ) {
      -	return elem.getAttribute && elem.getAttribute( "class" ) || "";
      -}
      -
      -jQuery.fn.extend( {
      -	addClass: function( value ) {
      -		var classes, elem, cur, curValue, clazz, j, finalValue,
      -			i = 0;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( j ) {
      -				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
      -			} );
      -		}
      -
      -		if ( typeof value === "string" && value ) {
      -			classes = value.match( rnothtmlwhite ) || [];
      -
      -			while ( ( elem = this[ i++ ] ) ) {
      -				curValue = getClass( elem );
      -				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
      -
      -				if ( cur ) {
      -					j = 0;
      -					while ( ( clazz = classes[ j++ ] ) ) {
      -						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
      -							cur += clazz + " ";
      -						}
      -					}
      -
      -					// Only assign if different to avoid unneeded rendering.
      -					finalValue = stripAndCollapse( cur );
      -					if ( curValue !== finalValue ) {
      -						elem.setAttribute( "class", finalValue );
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	removeClass: function( value ) {
      -		var classes, elem, cur, curValue, clazz, j, finalValue,
      -			i = 0;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( j ) {
      -				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
      -			} );
      -		}
      -
      -		if ( !arguments.length ) {
      -			return this.attr( "class", "" );
      -		}
      -
      -		if ( typeof value === "string" && value ) {
      -			classes = value.match( rnothtmlwhite ) || [];
      -
      -			while ( ( elem = this[ i++ ] ) ) {
      -				curValue = getClass( elem );
      -
      -				// This expression is here for better compressibility (see addClass)
      -				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
      -
      -				if ( cur ) {
      -					j = 0;
      -					while ( ( clazz = classes[ j++ ] ) ) {
      -
      -						// Remove *all* instances
      -						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
      -							cur = cur.replace( " " + clazz + " ", " " );
      -						}
      -					}
      -
      -					// Only assign if different to avoid unneeded rendering.
      -					finalValue = stripAndCollapse( cur );
      -					if ( curValue !== finalValue ) {
      -						elem.setAttribute( "class", finalValue );
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	toggleClass: function( value, stateVal ) {
      -		var type = typeof value;
      -
      -		if ( typeof stateVal === "boolean" && type === "string" ) {
      -			return stateVal ? this.addClass( value ) : this.removeClass( value );
      -		}
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( i ) {
      -				jQuery( this ).toggleClass(
      -					value.call( this, i, getClass( this ), stateVal ),
      -					stateVal
      -				);
      -			} );
      -		}
      -
      -		return this.each( function() {
      -			var className, i, self, classNames;
      -
      -			if ( type === "string" ) {
      -
      -				// Toggle individual class names
      -				i = 0;
      -				self = jQuery( this );
      -				classNames = value.match( rnothtmlwhite ) || [];
      -
      -				while ( ( className = classNames[ i++ ] ) ) {
      -
      -					// Check each className given, space separated list
      -					if ( self.hasClass( className ) ) {
      -						self.removeClass( className );
      -					} else {
      -						self.addClass( className );
      -					}
      -				}
      -
      -			// Toggle whole class name
      -			} else if ( value === undefined || type === "boolean" ) {
      -				className = getClass( this );
      -				if ( className ) {
      -
      -					// Store className if set
      -					dataPriv.set( this, "__className__", className );
      -				}
      -
      -				// If the element has a class name or if we're passed `false`,
      -				// then remove the whole classname (if there was one, the above saved it).
      -				// Otherwise bring back whatever was previously saved (if anything),
      -				// falling back to the empty string if nothing was stored.
      -				if ( this.setAttribute ) {
      -					this.setAttribute( "class",
      -						className || value === false ?
      -						"" :
      -						dataPriv.get( this, "__className__" ) || ""
      -					);
      -				}
      -			}
      -		} );
      -	},
      -
      -	hasClass: function( selector ) {
      -		var className, elem,
      -			i = 0;
      -
      -		className = " " + selector + " ";
      -		while ( ( elem = this[ i++ ] ) ) {
      -			if ( elem.nodeType === 1 &&
      -				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
      -					return true;
      -			}
      -		}
      -
      -		return false;
      -	}
      -} );
      -
      -
      -
      -
      -var rreturn = /\r/g;
      -
      -jQuery.fn.extend( {
      -	val: function( value ) {
      -		var hooks, ret, isFunction,
      -			elem = this[ 0 ];
      -
      -		if ( !arguments.length ) {
      -			if ( elem ) {
      -				hooks = jQuery.valHooks[ elem.type ] ||
      -					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
      -
      -				if ( hooks &&
      -					"get" in hooks &&
      -					( ret = hooks.get( elem, "value" ) ) !== undefined
      -				) {
      -					return ret;
      -				}
      -
      -				ret = elem.value;
      -
      -				// Handle most common string cases
      -				if ( typeof ret === "string" ) {
      -					return ret.replace( rreturn, "" );
      -				}
      -
      -				// Handle cases where value is null/undef or number
      -				return ret == null ? "" : ret;
      -			}
      -
      -			return;
      -		}
      -
      -		isFunction = jQuery.isFunction( value );
      -
      -		return this.each( function( i ) {
      -			var val;
      -
      -			if ( this.nodeType !== 1 ) {
      -				return;
      -			}
      -
      -			if ( isFunction ) {
      -				val = value.call( this, i, jQuery( this ).val() );
      -			} else {
      -				val = value;
      -			}
      -
      -			// Treat null/undefined as ""; convert numbers to string
      -			if ( val == null ) {
      -				val = "";
      -
      -			} else if ( typeof val === "number" ) {
      -				val += "";
      -
      -			} else if ( jQuery.isArray( val ) ) {
      -				val = jQuery.map( val, function( value ) {
      -					return value == null ? "" : value + "";
      -				} );
      -			}
      -
      -			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
      -
      -			// If set returns undefined, fall back to normal setting
      -			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
      -				this.value = val;
      -			}
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	valHooks: {
      -		option: {
      -			get: function( elem ) {
      -
      -				var val = jQuery.find.attr( elem, "value" );
      -				return val != null ?
      -					val :
      -
      -					// Support: IE <=10 - 11 only
      -					// option.text throws exceptions (#14686, #14858)
      -					// Strip and collapse whitespace
      -					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
      -					stripAndCollapse( jQuery.text( elem ) );
      -			}
      -		},
      -		select: {
      -			get: function( elem ) {
      -				var value, option, i,
      -					options = elem.options,
      -					index = elem.selectedIndex,
      -					one = elem.type === "select-one",
      -					values = one ? null : [],
      -					max = one ? index + 1 : options.length;
      -
      -				if ( index < 0 ) {
      -					i = max;
      -
      -				} else {
      -					i = one ? index : 0;
      -				}
      -
      -				// Loop through all the selected options
      -				for ( ; i < max; i++ ) {
      -					option = options[ i ];
      -
      -					// Support: IE <=9 only
      -					// IE8-9 doesn't update selected after form reset (#2551)
      -					if ( ( option.selected || i === index ) &&
      -
      -							// Don't return options that are disabled or in a disabled optgroup
      -							!option.disabled &&
      -							( !option.parentNode.disabled ||
      -								!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
      -
      -						// Get the specific value for the option
      -						value = jQuery( option ).val();
      -
      -						// We don't need an array for one selects
      -						if ( one ) {
      -							return value;
      -						}
      -
      -						// Multi-Selects return an array
      -						values.push( value );
      -					}
      -				}
      -
      -				return values;
      -			},
      -
      -			set: function( elem, value ) {
      -				var optionSet, option,
      -					options = elem.options,
      -					values = jQuery.makeArray( value ),
      -					i = options.length;
      -
      -				while ( i-- ) {
      -					option = options[ i ];
      -
      -					/* eslint-disable no-cond-assign */
      -
      -					if ( option.selected =
      -						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
      -					) {
      -						optionSet = true;
      -					}
      -
      -					/* eslint-enable no-cond-assign */
      -				}
      -
      -				// Force browsers to behave consistently when non-matching value is set
      -				if ( !optionSet ) {
      -					elem.selectedIndex = -1;
      -				}
      -				return values;
      -			}
      -		}
      -	}
      -} );
      -
      -// Radios and checkboxes getter/setter
      -jQuery.each( [ "radio", "checkbox" ], function() {
      -	jQuery.valHooks[ this ] = {
      -		set: function( elem, value ) {
      -			if ( jQuery.isArray( value ) ) {
      -				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
      -			}
      -		}
      -	};
      -	if ( !support.checkOn ) {
      -		jQuery.valHooks[ this ].get = function( elem ) {
      -			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
      -		};
      -	}
      -} );
      -
      -
      -
      -
      -// Return jQuery for attributes-only inclusion
      -
      -
      -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
      -
      -jQuery.extend( jQuery.event, {
      -
      -	trigger: function( event, data, elem, onlyHandlers ) {
      -
      -		var i, cur, tmp, bubbleType, ontype, handle, special,
      -			eventPath = [ elem || document ],
      -			type = hasOwn.call( event, "type" ) ? event.type : event,
      -			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
      -
      -		cur = tmp = elem = elem || document;
      -
      -		// Don't do events on text and comment nodes
      -		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
      -			return;
      -		}
      -
      -		// focus/blur morphs to focusin/out; ensure we're not firing them right now
      -		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
      -			return;
      -		}
      -
      -		if ( type.indexOf( "." ) > -1 ) {
      -
      -			// Namespaced trigger; create a regexp to match event type in handle()
      -			namespaces = type.split( "." );
      -			type = namespaces.shift();
      -			namespaces.sort();
      -		}
      -		ontype = type.indexOf( ":" ) < 0 && "on" + type;
      -
      -		// Caller can pass in a jQuery.Event object, Object, or just an event type string
      -		event = event[ jQuery.expando ] ?
      -			event :
      -			new jQuery.Event( type, typeof event === "object" && event );
      -
      -		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
      -		event.isTrigger = onlyHandlers ? 2 : 3;
      -		event.namespace = namespaces.join( "." );
      -		event.rnamespace = event.namespace ?
      -			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
      -			null;
      -
      -		// Clean up the event in case it is being reused
      -		event.result = undefined;
      -		if ( !event.target ) {
      -			event.target = elem;
      -		}
      -
      -		// Clone any incoming data and prepend the event, creating the handler arg list
      -		data = data == null ?
      -			[ event ] :
      -			jQuery.makeArray( data, [ event ] );
      -
      -		// Allow special events to draw outside the lines
      -		special = jQuery.event.special[ type ] || {};
      -		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
      -			return;
      -		}
      -
      -		// Determine event propagation path in advance, per W3C events spec (#9951)
      -		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
      -		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
      -
      -			bubbleType = special.delegateType || type;
      -			if ( !rfocusMorph.test( bubbleType + type ) ) {
      -				cur = cur.parentNode;
      -			}
      -			for ( ; cur; cur = cur.parentNode ) {
      -				eventPath.push( cur );
      -				tmp = cur;
      -			}
      -
      -			// Only add window if we got to document (e.g., not plain obj or detached DOM)
      -			if ( tmp === ( elem.ownerDocument || document ) ) {
      -				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
      -			}
      -		}
      -
      -		// Fire handlers on the event path
      -		i = 0;
      -		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
      -
      -			event.type = i > 1 ?
      -				bubbleType :
      -				special.bindType || type;
      -
      -			// jQuery handler
      -			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
      -				dataPriv.get( cur, "handle" );
      -			if ( handle ) {
      -				handle.apply( cur, data );
      -			}
      -
      -			// Native handler
      -			handle = ontype && cur[ ontype ];
      -			if ( handle && handle.apply && acceptData( cur ) ) {
      -				event.result = handle.apply( cur, data );
      -				if ( event.result === false ) {
      -					event.preventDefault();
      -				}
      -			}
      -		}
      -		event.type = type;
      -
      -		// If nobody prevented the default action, do it now
      -		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
      -
      -			if ( ( !special._default ||
      -				special._default.apply( eventPath.pop(), data ) === false ) &&
      -				acceptData( elem ) ) {
      -
      -				// Call a native DOM method on the target with the same name as the event.
      -				// Don't do default actions on window, that's where global variables be (#6170)
      -				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
      -
      -					// Don't re-trigger an onFOO event when we call its FOO() method
      -					tmp = elem[ ontype ];
      -
      -					if ( tmp ) {
      -						elem[ ontype ] = null;
      -					}
      -
      -					// Prevent re-triggering of the same event, since we already bubbled it above
      -					jQuery.event.triggered = type;
      -					elem[ type ]();
      -					jQuery.event.triggered = undefined;
      -
      -					if ( tmp ) {
      -						elem[ ontype ] = tmp;
      -					}
      -				}
      -			}
      -		}
      -
      -		return event.result;
      -	},
      -
      -	// Piggyback on a donor event to simulate a different one
      -	// Used only for `focus(in | out)` events
      -	simulate: function( type, elem, event ) {
      -		var e = jQuery.extend(
      -			new jQuery.Event(),
      -			event,
      -			{
      -				type: type,
      -				isSimulated: true
      -			}
      -		);
      -
      -		jQuery.event.trigger( e, null, elem );
      -	}
      -
      -} );
      -
      -jQuery.fn.extend( {
      -
      -	trigger: function( type, data ) {
      -		return this.each( function() {
      -			jQuery.event.trigger( type, data, this );
      -		} );
      -	},
      -	triggerHandler: function( type, data ) {
      -		var elem = this[ 0 ];
      -		if ( elem ) {
      -			return jQuery.event.trigger( type, data, elem, true );
      -		}
      -	}
      -} );
      -
      -
      -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
      -	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
      -	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
      -	function( i, name ) {
      -
      -	// Handle event binding
      -	jQuery.fn[ name ] = function( data, fn ) {
      -		return arguments.length > 0 ?
      -			this.on( name, null, data, fn ) :
      -			this.trigger( name );
      -	};
      -} );
      -
      -jQuery.fn.extend( {
      -	hover: function( fnOver, fnOut ) {
      -		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
      -	}
      -} );
      -
      -
      -
      -
      -support.focusin = "onfocusin" in window;
      -
      -
      -// Support: Firefox <=44
      -// Firefox doesn't have focus(in | out) events
      -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
      -//
      -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
      -// focus(in | out) events fire after focus & blur events,
      -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
      -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
      -if ( !support.focusin ) {
      -	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
      -
      -		// Attach a single capturing handler on the document while someone wants focusin/focusout
      -		var handler = function( event ) {
      -			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
      -		};
      -
      -		jQuery.event.special[ fix ] = {
      -			setup: function() {
      -				var doc = this.ownerDocument || this,
      -					attaches = dataPriv.access( doc, fix );
      -
      -				if ( !attaches ) {
      -					doc.addEventListener( orig, handler, true );
      -				}
      -				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
      -			},
      -			teardown: function() {
      -				var doc = this.ownerDocument || this,
      -					attaches = dataPriv.access( doc, fix ) - 1;
      -
      -				if ( !attaches ) {
      -					doc.removeEventListener( orig, handler, true );
      -					dataPriv.remove( doc, fix );
      -
      -				} else {
      -					dataPriv.access( doc, fix, attaches );
      -				}
      -			}
      -		};
      -	} );
      -}
      -var location = window.location;
      -
      -var nonce = jQuery.now();
      -
      -var rquery = ( /\?/ );
      -
      -
      -
      -// Cross-browser xml parsing
      -jQuery.parseXML = function( data ) {
      -	var xml;
      -	if ( !data || typeof data !== "string" ) {
      -		return null;
      -	}
      -
      -	// Support: IE 9 - 11 only
      -	// IE throws on parseFromString with invalid input.
      -	try {
      -		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
      -	} catch ( e ) {
      -		xml = undefined;
      -	}
      -
      -	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
      -		jQuery.error( "Invalid XML: " + data );
      -	}
      -	return xml;
      -};
      -
      -
      -var
      -	rbracket = /\[\]$/,
      -	rCRLF = /\r?\n/g,
      -	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
      -	rsubmittable = /^(?:input|select|textarea|keygen)/i;
      -
      -function buildParams( prefix, obj, traditional, add ) {
      -	var name;
      -
      -	if ( jQuery.isArray( obj ) ) {
      -
      -		// Serialize array item.
      -		jQuery.each( obj, function( i, v ) {
      -			if ( traditional || rbracket.test( prefix ) ) {
      -
      -				// Treat each array item as a scalar.
      -				add( prefix, v );
      -
      -			} else {
      -
      -				// Item is non-scalar (array or object), encode its numeric index.
      -				buildParams(
      -					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
      -					v,
      -					traditional,
      -					add
      -				);
      -			}
      -		} );
      -
      -	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
      -
      -		// Serialize object item.
      -		for ( name in obj ) {
      -			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
      -		}
      -
      -	} else {
      -
      -		// Serialize scalar item.
      -		add( prefix, obj );
      -	}
      -}
      -
      -// Serialize an array of form elements or a set of
      -// key/values into a query string
      -jQuery.param = function( a, traditional ) {
      -	var prefix,
      -		s = [],
      -		add = function( key, valueOrFunction ) {
      -
      -			// If value is a function, invoke it and use its return value
      -			var value = jQuery.isFunction( valueOrFunction ) ?
      -				valueOrFunction() :
      -				valueOrFunction;
      -
      -			s[ s.length ] = encodeURIComponent( key ) + "=" +
      -				encodeURIComponent( value == null ? "" : value );
      -		};
      -
      -	// If an array was passed in, assume that it is an array of form elements.
      -	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
      -
      -		// Serialize the form elements
      -		jQuery.each( a, function() {
      -			add( this.name, this.value );
      -		} );
      -
      -	} else {
      -
      -		// If traditional, encode the "old" way (the way 1.3.2 or older
      -		// did it), otherwise encode params recursively.
      -		for ( prefix in a ) {
      -			buildParams( prefix, a[ prefix ], traditional, add );
      -		}
      -	}
      -
      -	// Return the resulting serialization
      -	return s.join( "&" );
      -};
      -
      -jQuery.fn.extend( {
      -	serialize: function() {
      -		return jQuery.param( this.serializeArray() );
      -	},
      -	serializeArray: function() {
      -		return this.map( function() {
      -
      -			// Can add propHook for "elements" to filter or add form elements
      -			var elements = jQuery.prop( this, "elements" );
      -			return elements ? jQuery.makeArray( elements ) : this;
      -		} )
      -		.filter( function() {
      -			var type = this.type;
      -
      -			// Use .is( ":disabled" ) so that fieldset[disabled] works
      -			return this.name && !jQuery( this ).is( ":disabled" ) &&
      -				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
      -				( this.checked || !rcheckableType.test( type ) );
      -		} )
      -		.map( function( i, elem ) {
      -			var val = jQuery( this ).val();
      -
      -			if ( val == null ) {
      -				return null;
      -			}
      -
      -			if ( jQuery.isArray( val ) ) {
      -				return jQuery.map( val, function( val ) {
      -					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -				} );
      -			}
      -
      -			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -		} ).get();
      -	}
      -} );
      -
      -
      -var
      -	r20 = /%20/g,
      -	rhash = /#.*$/,
      -	rantiCache = /([?&])_=[^&]*/,
      -	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
      -
      -	// #7653, #8125, #8152: local protocol detection
      -	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
      -	rnoContent = /^(?:GET|HEAD)$/,
      -	rprotocol = /^\/\//,
      -
      -	/* Prefilters
      -	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
      -	 * 2) These are called:
      -	 *    - BEFORE asking for a transport
      -	 *    - AFTER param serialization (s.data is a string if s.processData is true)
      -	 * 3) key is the dataType
      -	 * 4) the catchall symbol "*" can be used
      -	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
      -	 */
      -	prefilters = {},
      -
      -	/* Transports bindings
      -	 * 1) key is the dataType
      -	 * 2) the catchall symbol "*" can be used
      -	 * 3) selection will start with transport dataType and THEN go to "*" if needed
      -	 */
      -	transports = {},
      -
      -	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
      -	allTypes = "*/".concat( "*" ),
      -
      -	// Anchor tag for parsing the document origin
      -	originAnchor = document.createElement( "a" );
      -	originAnchor.href = location.href;
      -
      -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
      -function addToPrefiltersOrTransports( structure ) {
      -
      -	// dataTypeExpression is optional and defaults to "*"
      -	return function( dataTypeExpression, func ) {
      -
      -		if ( typeof dataTypeExpression !== "string" ) {
      -			func = dataTypeExpression;
      -			dataTypeExpression = "*";
      -		}
      -
      -		var dataType,
      -			i = 0,
      -			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
      -
      -		if ( jQuery.isFunction( func ) ) {
      -
      -			// For each dataType in the dataTypeExpression
      -			while ( ( dataType = dataTypes[ i++ ] ) ) {
      -
      -				// Prepend if requested
      -				if ( dataType[ 0 ] === "+" ) {
      -					dataType = dataType.slice( 1 ) || "*";
      -					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
      -
      -				// Otherwise append
      -				} else {
      -					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
      -				}
      -			}
      -		}
      -	};
      -}
      -
      -// Base inspection function for prefilters and transports
      -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
      -
      -	var inspected = {},
      -		seekingTransport = ( structure === transports );
      -
      -	function inspect( dataType ) {
      -		var selected;
      -		inspected[ dataType ] = true;
      -		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
      -			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
      -			if ( typeof dataTypeOrTransport === "string" &&
      -				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
      -
      -				options.dataTypes.unshift( dataTypeOrTransport );
      -				inspect( dataTypeOrTransport );
      -				return false;
      -			} else if ( seekingTransport ) {
      -				return !( selected = dataTypeOrTransport );
      -			}
      -		} );
      -		return selected;
      -	}
      -
      -	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
      -}
      -
      -// A special extend for ajax options
      -// that takes "flat" options (not to be deep extended)
      -// Fixes #9887
      -function ajaxExtend( target, src ) {
      -	var key, deep,
      -		flatOptions = jQuery.ajaxSettings.flatOptions || {};
      -
      -	for ( key in src ) {
      -		if ( src[ key ] !== undefined ) {
      -			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
      -		}
      -	}
      -	if ( deep ) {
      -		jQuery.extend( true, target, deep );
      -	}
      -
      -	return target;
      -}
      -
      -/* Handles responses to an ajax request:
      - * - finds the right dataType (mediates between content-type and expected dataType)
      - * - returns the corresponding response
      - */
      -function ajaxHandleResponses( s, jqXHR, responses ) {
      -
      -	var ct, type, finalDataType, firstDataType,
      -		contents = s.contents,
      -		dataTypes = s.dataTypes;
      -
      -	// Remove auto dataType and get content-type in the process
      -	while ( dataTypes[ 0 ] === "*" ) {
      -		dataTypes.shift();
      -		if ( ct === undefined ) {
      -			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
      -		}
      -	}
      -
      -	// Check if we're dealing with a known content-type
      -	if ( ct ) {
      -		for ( type in contents ) {
      -			if ( contents[ type ] && contents[ type ].test( ct ) ) {
      -				dataTypes.unshift( type );
      -				break;
      -			}
      -		}
      -	}
      -
      -	// Check to see if we have a response for the expected dataType
      -	if ( dataTypes[ 0 ] in responses ) {
      -		finalDataType = dataTypes[ 0 ];
      -	} else {
      -
      -		// Try convertible dataTypes
      -		for ( type in responses ) {
      -			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
      -				finalDataType = type;
      -				break;
      -			}
      -			if ( !firstDataType ) {
      -				firstDataType = type;
      -			}
      -		}
      -
      -		// Or just use first one
      -		finalDataType = finalDataType || firstDataType;
      -	}
      -
      -	// If we found a dataType
      -	// We add the dataType to the list if needed
      -	// and return the corresponding response
      -	if ( finalDataType ) {
      -		if ( finalDataType !== dataTypes[ 0 ] ) {
      -			dataTypes.unshift( finalDataType );
      -		}
      -		return responses[ finalDataType ];
      -	}
      -}
      -
      -/* Chain conversions given the request and the original response
      - * Also sets the responseXXX fields on the jqXHR instance
      - */
      -function ajaxConvert( s, response, jqXHR, isSuccess ) {
      -	var conv2, current, conv, tmp, prev,
      -		converters = {},
      -
      -		// Work with a copy of dataTypes in case we need to modify it for conversion
      -		dataTypes = s.dataTypes.slice();
      -
      -	// Create converters map with lowercased keys
      -	if ( dataTypes[ 1 ] ) {
      -		for ( conv in s.converters ) {
      -			converters[ conv.toLowerCase() ] = s.converters[ conv ];
      -		}
      -	}
      -
      -	current = dataTypes.shift();
      -
      -	// Convert to each sequential dataType
      -	while ( current ) {
      -
      -		if ( s.responseFields[ current ] ) {
      -			jqXHR[ s.responseFields[ current ] ] = response;
      -		}
      -
      -		// Apply the dataFilter if provided
      -		if ( !prev && isSuccess && s.dataFilter ) {
      -			response = s.dataFilter( response, s.dataType );
      -		}
      -
      -		prev = current;
      -		current = dataTypes.shift();
      -
      -		if ( current ) {
      -
      -			// There's only work to do if current dataType is non-auto
      -			if ( current === "*" ) {
      -
      -				current = prev;
      -
      -			// Convert response if prev dataType is non-auto and differs from current
      -			} else if ( prev !== "*" && prev !== current ) {
      -
      -				// Seek a direct converter
      -				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
      -
      -				// If none found, seek a pair
      -				if ( !conv ) {
      -					for ( conv2 in converters ) {
      -
      -						// If conv2 outputs current
      -						tmp = conv2.split( " " );
      -						if ( tmp[ 1 ] === current ) {
      -
      -							// If prev can be converted to accepted input
      -							conv = converters[ prev + " " + tmp[ 0 ] ] ||
      -								converters[ "* " + tmp[ 0 ] ];
      -							if ( conv ) {
      -
      -								// Condense equivalence converters
      -								if ( conv === true ) {
      -									conv = converters[ conv2 ];
      -
      -								// Otherwise, insert the intermediate dataType
      -								} else if ( converters[ conv2 ] !== true ) {
      -									current = tmp[ 0 ];
      -									dataTypes.unshift( tmp[ 1 ] );
      -								}
      -								break;
      -							}
      -						}
      -					}
      -				}
      -
      -				// Apply converter (if not an equivalence)
      -				if ( conv !== true ) {
      -
      -					// Unless errors are allowed to bubble, catch and return them
      -					if ( conv && s.throws ) {
      -						response = conv( response );
      -					} else {
      -						try {
      -							response = conv( response );
      -						} catch ( e ) {
      -							return {
      -								state: "parsererror",
      -								error: conv ? e : "No conversion from " + prev + " to " + current
      -							};
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	return { state: "success", data: response };
      -}
      -
      -jQuery.extend( {
      -
      -	// Counter for holding the number of active queries
      -	active: 0,
      -
      -	// Last-Modified header cache for next request
      -	lastModified: {},
      -	etag: {},
      -
      -	ajaxSettings: {
      -		url: location.href,
      -		type: "GET",
      -		isLocal: rlocalProtocol.test( location.protocol ),
      -		global: true,
      -		processData: true,
      -		async: true,
      -		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      -
      -		/*
      -		timeout: 0,
      -		data: null,
      -		dataType: null,
      -		username: null,
      -		password: null,
      -		cache: null,
      -		throws: false,
      -		traditional: false,
      -		headers: {},
      -		*/
      -
      -		accepts: {
      -			"*": allTypes,
      -			text: "text/plain",
      -			html: "text/html",
      -			xml: "application/xml, text/xml",
      -			json: "application/json, text/javascript"
      -		},
      -
      -		contents: {
      -			xml: /\bxml\b/,
      -			html: /\bhtml/,
      -			json: /\bjson\b/
      -		},
      -
      -		responseFields: {
      -			xml: "responseXML",
      -			text: "responseText",
      -			json: "responseJSON"
      -		},
      -
      -		// Data converters
      -		// Keys separate source (or catchall "*") and destination types with a single space
      -		converters: {
      -
      -			// Convert anything to text
      -			"* text": String,
      -
      -			// Text to html (true = no transformation)
      -			"text html": true,
      -
      -			// Evaluate text as a json expression
      -			"text json": JSON.parse,
      -
      -			// Parse text as xml
      -			"text xml": jQuery.parseXML
      -		},
      -
      -		// For options that shouldn't be deep extended:
      -		// you can add your own custom options here if
      -		// and when you create one that shouldn't be
      -		// deep extended (see ajaxExtend)
      -		flatOptions: {
      -			url: true,
      -			context: true
      -		}
      -	},
      -
      -	// Creates a full fledged settings object into target
      -	// with both ajaxSettings and settings fields.
      -	// If target is omitted, writes into ajaxSettings.
      -	ajaxSetup: function( target, settings ) {
      -		return settings ?
      -
      -			// Building a settings object
      -			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
      -
      -			// Extending ajaxSettings
      -			ajaxExtend( jQuery.ajaxSettings, target );
      -	},
      -
      -	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
      -	ajaxTransport: addToPrefiltersOrTransports( transports ),
      -
      -	// Main method
      -	ajax: function( url, options ) {
      -
      -		// If url is an object, simulate pre-1.5 signature
      -		if ( typeof url === "object" ) {
      -			options = url;
      -			url = undefined;
      -		}
      -
      -		// Force options to be an object
      -		options = options || {};
      -
      -		var transport,
      -
      -			// URL without anti-cache param
      -			cacheURL,
      -
      -			// Response headers
      -			responseHeadersString,
      -			responseHeaders,
      -
      -			// timeout handle
      -			timeoutTimer,
      -
      -			// Url cleanup var
      -			urlAnchor,
      -
      -			// Request state (becomes false upon send and true upon completion)
      -			completed,
      -
      -			// To know if global events are to be dispatched
      -			fireGlobals,
      -
      -			// Loop variable
      -			i,
      -
      -			// uncached part of the url
      -			uncached,
      -
      -			// Create the final options object
      -			s = jQuery.ajaxSetup( {}, options ),
      -
      -			// Callbacks context
      -			callbackContext = s.context || s,
      -
      -			// Context for global events is callbackContext if it is a DOM node or jQuery collection
      -			globalEventContext = s.context &&
      -				( callbackContext.nodeType || callbackContext.jquery ) ?
      -					jQuery( callbackContext ) :
      -					jQuery.event,
      -
      -			// Deferreds
      -			deferred = jQuery.Deferred(),
      -			completeDeferred = jQuery.Callbacks( "once memory" ),
      -
      -			// Status-dependent callbacks
      -			statusCode = s.statusCode || {},
      -
      -			// Headers (they are sent all at once)
      -			requestHeaders = {},
      -			requestHeadersNames = {},
      -
      -			// Default abort message
      -			strAbort = "canceled",
      -
      -			// Fake xhr
      -			jqXHR = {
      -				readyState: 0,
      -
      -				// Builds headers hashtable if needed
      -				getResponseHeader: function( key ) {
      -					var match;
      -					if ( completed ) {
      -						if ( !responseHeaders ) {
      -							responseHeaders = {};
      -							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
      -								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
      -							}
      -						}
      -						match = responseHeaders[ key.toLowerCase() ];
      -					}
      -					return match == null ? null : match;
      -				},
      -
      -				// Raw string
      -				getAllResponseHeaders: function() {
      -					return completed ? responseHeadersString : null;
      -				},
      -
      -				// Caches the header
      -				setRequestHeader: function( name, value ) {
      -					if ( completed == null ) {
      -						name = requestHeadersNames[ name.toLowerCase() ] =
      -							requestHeadersNames[ name.toLowerCase() ] || name;
      -						requestHeaders[ name ] = value;
      -					}
      -					return this;
      -				},
      -
      -				// Overrides response content-type header
      -				overrideMimeType: function( type ) {
      -					if ( completed == null ) {
      -						s.mimeType = type;
      -					}
      -					return this;
      -				},
      -
      -				// Status-dependent callbacks
      -				statusCode: function( map ) {
      -					var code;
      -					if ( map ) {
      -						if ( completed ) {
      -
      -							// Execute the appropriate callbacks
      -							jqXHR.always( map[ jqXHR.status ] );
      -						} else {
      -
      -							// Lazy-add the new callbacks in a way that preserves old ones
      -							for ( code in map ) {
      -								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
      -							}
      -						}
      -					}
      -					return this;
      -				},
      -
      -				// Cancel the request
      -				abort: function( statusText ) {
      -					var finalText = statusText || strAbort;
      -					if ( transport ) {
      -						transport.abort( finalText );
      -					}
      -					done( 0, finalText );
      -					return this;
      -				}
      -			};
      -
      -		// Attach deferreds
      -		deferred.promise( jqXHR );
      -
      -		// Add protocol if not provided (prefilters might expect it)
      -		// Handle falsy url in the settings object (#10093: consistency with old signature)
      -		// We also use the url parameter if available
      -		s.url = ( ( url || s.url || location.href ) + "" )
      -			.replace( rprotocol, location.protocol + "//" );
      -
      -		// Alias method option to type as per ticket #12004
      -		s.type = options.method || options.type || s.method || s.type;
      -
      -		// Extract dataTypes list
      -		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
      -
      -		// A cross-domain request is in order when the origin doesn't match the current origin.
      -		if ( s.crossDomain == null ) {
      -			urlAnchor = document.createElement( "a" );
      -
      -			// Support: IE <=8 - 11, Edge 12 - 13
      -			// IE throws exception on accessing the href property if url is malformed,
      -			// e.g. http://example.com:80x/
      -			try {
      -				urlAnchor.href = s.url;
      -
      -				// Support: IE <=8 - 11 only
      -				// Anchor's host property isn't correctly set when s.url is relative
      -				urlAnchor.href = urlAnchor.href;
      -				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
      -					urlAnchor.protocol + "//" + urlAnchor.host;
      -			} catch ( e ) {
      -
      -				// If there is an error parsing the URL, assume it is crossDomain,
      -				// it can be rejected by the transport if it is invalid
      -				s.crossDomain = true;
      -			}
      -		}
      -
      -		// Convert data if not already a string
      -		if ( s.data && s.processData && typeof s.data !== "string" ) {
      -			s.data = jQuery.param( s.data, s.traditional );
      -		}
      -
      -		// Apply prefilters
      -		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
      -
      -		// If request was aborted inside a prefilter, stop there
      -		if ( completed ) {
      -			return jqXHR;
      -		}
      -
      -		// We can fire global events as of now if asked to
      -		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
      -		fireGlobals = jQuery.event && s.global;
      -
      -		// Watch for a new set of requests
      -		if ( fireGlobals && jQuery.active++ === 0 ) {
      -			jQuery.event.trigger( "ajaxStart" );
      -		}
      -
      -		// Uppercase the type
      -		s.type = s.type.toUpperCase();
      -
      -		// Determine if request has content
      -		s.hasContent = !rnoContent.test( s.type );
      -
      -		// Save the URL in case we're toying with the If-Modified-Since
      -		// and/or If-None-Match header later on
      -		// Remove hash to simplify url manipulation
      -		cacheURL = s.url.replace( rhash, "" );
      -
      -		// More options handling for requests with no content
      -		if ( !s.hasContent ) {
      -
      -			// Remember the hash so we can put it back
      -			uncached = s.url.slice( cacheURL.length );
      -
      -			// If data is available, append data to url
      -			if ( s.data ) {
      -				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
      -
      -				// #9682: remove data so that it's not used in an eventual retry
      -				delete s.data;
      -			}
      -
      -			// Add or update anti-cache param if needed
      -			if ( s.cache === false ) {
      -				cacheURL = cacheURL.replace( rantiCache, "$1" );
      -				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
      -			}
      -
      -			// Put hash and anti-cache on the URL that will be requested (gh-1732)
      -			s.url = cacheURL + uncached;
      -
      -		// Change '%20' to '+' if this is encoded form body content (gh-2658)
      -		} else if ( s.data && s.processData &&
      -			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
      -			s.data = s.data.replace( r20, "+" );
      -		}
      -
      -		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -		if ( s.ifModified ) {
      -			if ( jQuery.lastModified[ cacheURL ] ) {
      -				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
      -			}
      -			if ( jQuery.etag[ cacheURL ] ) {
      -				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
      -			}
      -		}
      -
      -		// Set the correct header, if data is being sent
      -		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
      -			jqXHR.setRequestHeader( "Content-Type", s.contentType );
      -		}
      -
      -		// Set the Accepts header for the server, depending on the dataType
      -		jqXHR.setRequestHeader(
      -			"Accept",
      -			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
      -				s.accepts[ s.dataTypes[ 0 ] ] +
      -					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
      -				s.accepts[ "*" ]
      -		);
      -
      -		// Check for headers option
      -		for ( i in s.headers ) {
      -			jqXHR.setRequestHeader( i, s.headers[ i ] );
      -		}
      -
      -		// Allow custom headers/mimetypes and early abort
      -		if ( s.beforeSend &&
      -			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
      -
      -			// Abort if not done already and return
      -			return jqXHR.abort();
      -		}
      -
      -		// Aborting is no longer a cancellation
      -		strAbort = "abort";
      -
      -		// Install callbacks on deferreds
      -		completeDeferred.add( s.complete );
      -		jqXHR.done( s.success );
      -		jqXHR.fail( s.error );
      -
      -		// Get transport
      -		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
      -
      -		// If no transport, we auto-abort
      -		if ( !transport ) {
      -			done( -1, "No Transport" );
      -		} else {
      -			jqXHR.readyState = 1;
      -
      -			// Send global event
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
      -			}
      -
      -			// If request was aborted inside ajaxSend, stop there
      -			if ( completed ) {
      -				return jqXHR;
      -			}
      -
      -			// Timeout
      -			if ( s.async && s.timeout > 0 ) {
      -				timeoutTimer = window.setTimeout( function() {
      -					jqXHR.abort( "timeout" );
      -				}, s.timeout );
      -			}
      -
      -			try {
      -				completed = false;
      -				transport.send( requestHeaders, done );
      -			} catch ( e ) {
      -
      -				// Rethrow post-completion exceptions
      -				if ( completed ) {
      -					throw e;
      -				}
      -
      -				// Propagate others as results
      -				done( -1, e );
      -			}
      -		}
      -
      -		// Callback for when everything is done
      -		function done( status, nativeStatusText, responses, headers ) {
      -			var isSuccess, success, error, response, modified,
      -				statusText = nativeStatusText;
      -
      -			// Ignore repeat invocations
      -			if ( completed ) {
      -				return;
      -			}
      -
      -			completed = true;
      -
      -			// Clear timeout if it exists
      -			if ( timeoutTimer ) {
      -				window.clearTimeout( timeoutTimer );
      -			}
      -
      -			// Dereference transport for early garbage collection
      -			// (no matter how long the jqXHR object will be used)
      -			transport = undefined;
      -
      -			// Cache response headers
      -			responseHeadersString = headers || "";
      -
      -			// Set readyState
      -			jqXHR.readyState = status > 0 ? 4 : 0;
      -
      -			// Determine if successful
      -			isSuccess = status >= 200 && status < 300 || status === 304;
      -
      -			// Get response data
      -			if ( responses ) {
      -				response = ajaxHandleResponses( s, jqXHR, responses );
      -			}
      -
      -			// Convert no matter what (that way responseXXX fields are always set)
      -			response = ajaxConvert( s, response, jqXHR, isSuccess );
      -
      -			// If successful, handle type chaining
      -			if ( isSuccess ) {
      -
      -				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -				if ( s.ifModified ) {
      -					modified = jqXHR.getResponseHeader( "Last-Modified" );
      -					if ( modified ) {
      -						jQuery.lastModified[ cacheURL ] = modified;
      -					}
      -					modified = jqXHR.getResponseHeader( "etag" );
      -					if ( modified ) {
      -						jQuery.etag[ cacheURL ] = modified;
      -					}
      -				}
      -
      -				// if no content
      -				if ( status === 204 || s.type === "HEAD" ) {
      -					statusText = "nocontent";
      -
      -				// if not modified
      -				} else if ( status === 304 ) {
      -					statusText = "notmodified";
      -
      -				// If we have data, let's convert it
      -				} else {
      -					statusText = response.state;
      -					success = response.data;
      -					error = response.error;
      -					isSuccess = !error;
      -				}
      -			} else {
      -
      -				// Extract error from statusText and normalize for non-aborts
      -				error = statusText;
      -				if ( status || !statusText ) {
      -					statusText = "error";
      -					if ( status < 0 ) {
      -						status = 0;
      -					}
      -				}
      -			}
      -
      -			// Set data for the fake xhr object
      -			jqXHR.status = status;
      -			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
      -
      -			// Success/Error
      -			if ( isSuccess ) {
      -				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
      -			} else {
      -				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
      -			}
      -
      -			// Status-dependent callbacks
      -			jqXHR.statusCode( statusCode );
      -			statusCode = undefined;
      -
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
      -					[ jqXHR, s, isSuccess ? success : error ] );
      -			}
      -
      -			// Complete
      -			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
      -
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
      -
      -				// Handle the global AJAX counter
      -				if ( !( --jQuery.active ) ) {
      -					jQuery.event.trigger( "ajaxStop" );
      -				}
      -			}
      -		}
      -
      -		return jqXHR;
      -	},
      -
      -	getJSON: function( url, data, callback ) {
      -		return jQuery.get( url, data, callback, "json" );
      -	},
      -
      -	getScript: function( url, callback ) {
      -		return jQuery.get( url, undefined, callback, "script" );
      -	}
      -} );
      -
      -jQuery.each( [ "get", "post" ], function( i, method ) {
      -	jQuery[ method ] = function( url, data, callback, type ) {
      -
      -		// Shift arguments if data argument was omitted
      -		if ( jQuery.isFunction( data ) ) {
      -			type = type || callback;
      -			callback = data;
      -			data = undefined;
      -		}
      -
      -		// The url can be an options object (which then must have .url)
      -		return jQuery.ajax( jQuery.extend( {
      -			url: url,
      -			type: method,
      -			dataType: type,
      -			data: data,
      -			success: callback
      -		}, jQuery.isPlainObject( url ) && url ) );
      -	};
      -} );
      -
      -
      -jQuery._evalUrl = function( url ) {
      -	return jQuery.ajax( {
      -		url: url,
      -
      -		// Make this explicit, since user can override this through ajaxSetup (#11264)
      -		type: "GET",
      -		dataType: "script",
      -		cache: true,
      -		async: false,
      -		global: false,
      -		"throws": true
      -	} );
      -};
      -
      -
      -jQuery.fn.extend( {
      -	wrapAll: function( html ) {
      -		var wrap;
      -
      -		if ( this[ 0 ] ) {
      -			if ( jQuery.isFunction( html ) ) {
      -				html = html.call( this[ 0 ] );
      -			}
      -
      -			// The elements to wrap the target around
      -			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
      -
      -			if ( this[ 0 ].parentNode ) {
      -				wrap.insertBefore( this[ 0 ] );
      -			}
      -
      -			wrap.map( function() {
      -				var elem = this;
      -
      -				while ( elem.firstElementChild ) {
      -					elem = elem.firstElementChild;
      -				}
      -
      -				return elem;
      -			} ).append( this );
      -		}
      -
      -		return this;
      -	},
      -
      -	wrapInner: function( html ) {
      -		if ( jQuery.isFunction( html ) ) {
      -			return this.each( function( i ) {
      -				jQuery( this ).wrapInner( html.call( this, i ) );
      -			} );
      -		}
      -
      -		return this.each( function() {
      -			var self = jQuery( this ),
      -				contents = self.contents();
      -
      -			if ( contents.length ) {
      -				contents.wrapAll( html );
      -
      -			} else {
      -				self.append( html );
      -			}
      -		} );
      -	},
      -
      -	wrap: function( html ) {
      -		var isFunction = jQuery.isFunction( html );
      -
      -		return this.each( function( i ) {
      -			jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
      -		} );
      -	},
      -
      -	unwrap: function( selector ) {
      -		this.parent( selector ).not( "body" ).each( function() {
      -			jQuery( this ).replaceWith( this.childNodes );
      -		} );
      -		return this;
      -	}
      -} );
      -
      -
      -jQuery.expr.pseudos.hidden = function( elem ) {
      -	return !jQuery.expr.pseudos.visible( elem );
      -};
      -jQuery.expr.pseudos.visible = function( elem ) {
      -	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
      -};
      -
      -
      -
      -
      -jQuery.ajaxSettings.xhr = function() {
      -	try {
      -		return new window.XMLHttpRequest();
      -	} catch ( e ) {}
      -};
      -
      -var xhrSuccessStatus = {
      -
      -		// File protocol always yields status code 0, assume 200
      -		0: 200,
      -
      -		// Support: IE <=9 only
      -		// #1450: sometimes IE returns 1223 when it should be 204
      -		1223: 204
      -	},
      -	xhrSupported = jQuery.ajaxSettings.xhr();
      -
      -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
      -support.ajax = xhrSupported = !!xhrSupported;
      -
      -jQuery.ajaxTransport( function( options ) {
      -	var callback, errorCallback;
      -
      -	// Cross domain only allowed if supported through XMLHttpRequest
      -	if ( support.cors || xhrSupported && !options.crossDomain ) {
      -		return {
      -			send: function( headers, complete ) {
      -				var i,
      -					xhr = options.xhr();
      -
      -				xhr.open(
      -					options.type,
      -					options.url,
      -					options.async,
      -					options.username,
      -					options.password
      -				);
      -
      -				// Apply custom fields if provided
      -				if ( options.xhrFields ) {
      -					for ( i in options.xhrFields ) {
      -						xhr[ i ] = options.xhrFields[ i ];
      -					}
      -				}
      -
      -				// Override mime type if needed
      -				if ( options.mimeType && xhr.overrideMimeType ) {
      -					xhr.overrideMimeType( options.mimeType );
      -				}
      -
      -				// X-Requested-With header
      -				// For cross-domain requests, seeing as conditions for a preflight are
      -				// akin to a jigsaw puzzle, we simply never set it to be sure.
      -				// (it can always be set on a per-request basis or even using ajaxSetup)
      -				// For same-domain requests, won't change header if already provided.
      -				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
      -					headers[ "X-Requested-With" ] = "XMLHttpRequest";
      -				}
      -
      -				// Set headers
      -				for ( i in headers ) {
      -					xhr.setRequestHeader( i, headers[ i ] );
      -				}
      -
      -				// Callback
      -				callback = function( type ) {
      -					return function() {
      -						if ( callback ) {
      -							callback = errorCallback = xhr.onload =
      -								xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
      -
      -							if ( type === "abort" ) {
      -								xhr.abort();
      -							} else if ( type === "error" ) {
      -
      -								// Support: IE <=9 only
      -								// On a manual native abort, IE9 throws
      -								// errors on any property access that is not readyState
      -								if ( typeof xhr.status !== "number" ) {
      -									complete( 0, "error" );
      -								} else {
      -									complete(
      -
      -										// File: protocol always yields status 0; see #8605, #14207
      -										xhr.status,
      -										xhr.statusText
      -									);
      -								}
      -							} else {
      -								complete(
      -									xhrSuccessStatus[ xhr.status ] || xhr.status,
      -									xhr.statusText,
      -
      -									// Support: IE <=9 only
      -									// IE9 has no XHR2 but throws on binary (trac-11426)
      -									// For XHR2 non-text, let the caller handle it (gh-2498)
      -									( xhr.responseType || "text" ) !== "text"  ||
      -									typeof xhr.responseText !== "string" ?
      -										{ binary: xhr.response } :
      -										{ text: xhr.responseText },
      -									xhr.getAllResponseHeaders()
      -								);
      -							}
      -						}
      -					};
      -				};
      -
      -				// Listen to events
      -				xhr.onload = callback();
      -				errorCallback = xhr.onerror = callback( "error" );
      -
      -				// Support: IE 9 only
      -				// Use onreadystatechange to replace onabort
      -				// to handle uncaught aborts
      -				if ( xhr.onabort !== undefined ) {
      -					xhr.onabort = errorCallback;
      -				} else {
      -					xhr.onreadystatechange = function() {
      -
      -						// Check readyState before timeout as it changes
      -						if ( xhr.readyState === 4 ) {
      -
      -							// Allow onerror to be called first,
      -							// but that will not handle a native abort
      -							// Also, save errorCallback to a variable
      -							// as xhr.onerror cannot be accessed
      -							window.setTimeout( function() {
      -								if ( callback ) {
      -									errorCallback();
      -								}
      -							} );
      -						}
      -					};
      -				}
      -
      -				// Create the abort callback
      -				callback = callback( "abort" );
      -
      -				try {
      -
      -					// Do send the request (this may raise an exception)
      -					xhr.send( options.hasContent && options.data || null );
      -				} catch ( e ) {
      -
      -					// #14683: Only rethrow if this hasn't been notified as an error yet
      -					if ( callback ) {
      -						throw e;
      -					}
      -				}
      -			},
      -
      -			abort: function() {
      -				if ( callback ) {
      -					callback();
      -				}
      -			}
      -		};
      -	}
      -} );
      -
      -
      -
      -
      -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
      -jQuery.ajaxPrefilter( function( s ) {
      -	if ( s.crossDomain ) {
      -		s.contents.script = false;
      -	}
      -} );
      -
      -// Install script dataType
      -jQuery.ajaxSetup( {
      -	accepts: {
      -		script: "text/javascript, application/javascript, " +
      -			"application/ecmascript, application/x-ecmascript"
      -	},
      -	contents: {
      -		script: /\b(?:java|ecma)script\b/
      -	},
      -	converters: {
      -		"text script": function( text ) {
      -			jQuery.globalEval( text );
      -			return text;
      -		}
      -	}
      -} );
      -
      -// Handle cache's special case and crossDomain
      -jQuery.ajaxPrefilter( "script", function( s ) {
      -	if ( s.cache === undefined ) {
      -		s.cache = false;
      -	}
      -	if ( s.crossDomain ) {
      -		s.type = "GET";
      -	}
      -} );
      -
      -// Bind script tag hack transport
      -jQuery.ajaxTransport( "script", function( s ) {
      -
      -	// This transport only deals with cross domain requests
      -	if ( s.crossDomain ) {
      -		var script, callback;
      -		return {
      -			send: function( _, complete ) {
      -				script = jQuery( "<script>" ).prop( {
      -					charset: s.scriptCharset,
      -					src: s.url
      -				} ).on(
      -					"load error",
      -					callback = function( evt ) {
      -						script.remove();
      -						callback = null;
      -						if ( evt ) {
      -							complete( evt.type === "error" ? 404 : 200, evt.type );
      -						}
      -					}
      -				);
      -
      -				// Use native DOM manipulation to avoid our domManip AJAX trickery
      -				document.head.appendChild( script[ 0 ] );
      -			},
      -			abort: function() {
      -				if ( callback ) {
      -					callback();
      -				}
      -			}
      -		};
      -	}
      -} );
      -
      -
      -
      -
      -var oldCallbacks = [],
      -	rjsonp = /(=)\?(?=&|$)|\?\?/;
      -
      -// Default jsonp settings
      -jQuery.ajaxSetup( {
      -	jsonp: "callback",
      -	jsonpCallback: function() {
      -		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
      -		this[ callback ] = true;
      -		return callback;
      -	}
      -} );
      -
      -// Detect, normalize options and install callbacks for jsonp requests
      -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
      -
      -	var callbackName, overwritten, responseContainer,
      -		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
      -			"url" :
      -			typeof s.data === "string" &&
      -				( s.contentType || "" )
      -					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
      -				rjsonp.test( s.data ) && "data"
      -		);
      -
      -	// Handle iff the expected data type is "jsonp" or we have a parameter to set
      -	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
      -
      -		// Get callback name, remembering preexisting value associated with it
      -		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
      -			s.jsonpCallback() :
      -			s.jsonpCallback;
      -
      -		// Insert callback into url or form data
      -		if ( jsonProp ) {
      -			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
      -		} else if ( s.jsonp !== false ) {
      -			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
      -		}
      -
      -		// Use data converter to retrieve json after script execution
      -		s.converters[ "script json" ] = function() {
      -			if ( !responseContainer ) {
      -				jQuery.error( callbackName + " was not called" );
      -			}
      -			return responseContainer[ 0 ];
      -		};
      -
      -		// Force json dataType
      -		s.dataTypes[ 0 ] = "json";
      -
      -		// Install callback
      -		overwritten = window[ callbackName ];
      -		window[ callbackName ] = function() {
      -			responseContainer = arguments;
      -		};
      -
      -		// Clean-up function (fires after converters)
      -		jqXHR.always( function() {
      -
      -			// If previous value didn't exist - remove it
      -			if ( overwritten === undefined ) {
      -				jQuery( window ).removeProp( callbackName );
      -
      -			// Otherwise restore preexisting value
      -			} else {
      -				window[ callbackName ] = overwritten;
      -			}
      -
      -			// Save back as free
      -			if ( s[ callbackName ] ) {
      -
      -				// Make sure that re-using the options doesn't screw things around
      -				s.jsonpCallback = originalSettings.jsonpCallback;
      -
      -				// Save the callback name for future use
      -				oldCallbacks.push( callbackName );
      -			}
      -
      -			// Call if it was a function and we have a response
      -			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
      -				overwritten( responseContainer[ 0 ] );
      -			}
      -
      -			responseContainer = overwritten = undefined;
      -		} );
      -
      -		// Delegate to script
      -		return "script";
      -	}
      -} );
      -
      -
      -
      -
      -// Support: Safari 8 only
      -// In Safari 8 documents created via document.implementation.createHTMLDocument
      -// collapse sibling forms: the second one becomes a child of the first one.
      -// Because of that, this security measure has to be disabled in Safari 8.
      -// https://bugs.webkit.org/show_bug.cgi?id=137337
      -support.createHTMLDocument = ( function() {
      -	var body = document.implementation.createHTMLDocument( "" ).body;
      -	body.innerHTML = "<form></form><form></form>";
      -	return body.childNodes.length === 2;
      -} )();
      -
      -
      -// Argument "data" should be string of html
      -// context (optional): If specified, the fragment will be created in this context,
      -// defaults to document
      -// keepScripts (optional): If true, will include scripts passed in the html string
      -jQuery.parseHTML = function( data, context, keepScripts ) {
      -	if ( typeof data !== "string" ) {
      -		return [];
      -	}
      -	if ( typeof context === "boolean" ) {
      -		keepScripts = context;
      -		context = false;
      -	}
      -
      -	var base, parsed, scripts;
      -
      -	if ( !context ) {
      -
      -		// Stop scripts or inline event handlers from being executed immediately
      -		// by using document.implementation
      -		if ( support.createHTMLDocument ) {
      -			context = document.implementation.createHTMLDocument( "" );
      -
      -			// Set the base href for the created document
      -			// so any parsed elements with URLs
      -			// are based on the document's URL (gh-2965)
      -			base = context.createElement( "base" );
      -			base.href = document.location.href;
      -			context.head.appendChild( base );
      -		} else {
      -			context = document;
      -		}
      -	}
      -
      -	parsed = rsingleTag.exec( data );
      -	scripts = !keepScripts && [];
      -
      -	// Single tag
      -	if ( parsed ) {
      -		return [ context.createElement( parsed[ 1 ] ) ];
      -	}
      -
      -	parsed = buildFragment( [ data ], context, scripts );
      -
      -	if ( scripts && scripts.length ) {
      -		jQuery( scripts ).remove();
      -	}
      -
      -	return jQuery.merge( [], parsed.childNodes );
      -};
      -
      -
      -/**
      - * Load a url into a page
      - */
      -jQuery.fn.load = function( url, params, callback ) {
      -	var selector, type, response,
      -		self = this,
      -		off = url.indexOf( " " );
      -
      -	if ( off > -1 ) {
      -		selector = stripAndCollapse( url.slice( off ) );
      -		url = url.slice( 0, off );
      -	}
      -
      -	// If it's a function
      -	if ( jQuery.isFunction( params ) ) {
      -
      -		// We assume that it's the callback
      -		callback = params;
      -		params = undefined;
      -
      -	// Otherwise, build a param string
      -	} else if ( params && typeof params === "object" ) {
      -		type = "POST";
      -	}
      -
      -	// If we have elements to modify, make the request
      -	if ( self.length > 0 ) {
      -		jQuery.ajax( {
      -			url: url,
      -
      -			// If "type" variable is undefined, then "GET" method will be used.
      -			// Make value of this field explicit since
      -			// user can override it through ajaxSetup method
      -			type: type || "GET",
      -			dataType: "html",
      -			data: params
      -		} ).done( function( responseText ) {
      -
      -			// Save response for use in complete callback
      -			response = arguments;
      -
      -			self.html( selector ?
      -
      -				// If a selector was specified, locate the right elements in a dummy div
      -				// Exclude scripts to avoid IE 'Permission Denied' errors
      -				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
      -
      -				// Otherwise use the full result
      -				responseText );
      -
      -		// If the request succeeds, this function gets "data", "status", "jqXHR"
      -		// but they are ignored because response was set above.
      -		// If it fails, this function gets "jqXHR", "status", "error"
      -		} ).always( callback && function( jqXHR, status ) {
      -			self.each( function() {
      -				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
      -			} );
      -		} );
      -	}
      -
      -	return this;
      -};
      -
      -
      -
      -
      -// Attach a bunch of functions for handling common AJAX events
      -jQuery.each( [
      -	"ajaxStart",
      -	"ajaxStop",
      -	"ajaxComplete",
      -	"ajaxError",
      -	"ajaxSuccess",
      -	"ajaxSend"
      -], function( i, type ) {
      -	jQuery.fn[ type ] = function( fn ) {
      -		return this.on( type, fn );
      -	};
      -} );
      -
      -
      -
      -
      -jQuery.expr.pseudos.animated = function( elem ) {
      -	return jQuery.grep( jQuery.timers, function( fn ) {
      -		return elem === fn.elem;
      -	} ).length;
      -};
      -
      -
      -
      -
      -/**
      - * Gets a window from an element
      - */
      -function getWindow( elem ) {
      -	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
      -}
      -
      -jQuery.offset = {
      -	setOffset: function( elem, options, i ) {
      -		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
      -			position = jQuery.css( elem, "position" ),
      -			curElem = jQuery( elem ),
      -			props = {};
      -
      -		// Set position first, in-case top/left are set even on static elem
      -		if ( position === "static" ) {
      -			elem.style.position = "relative";
      -		}
      -
      -		curOffset = curElem.offset();
      -		curCSSTop = jQuery.css( elem, "top" );
      -		curCSSLeft = jQuery.css( elem, "left" );
      -		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
      -			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
      -
      -		// Need to be able to calculate position if either
      -		// top or left is auto and position is either absolute or fixed
      -		if ( calculatePosition ) {
      -			curPosition = curElem.position();
      -			curTop = curPosition.top;
      -			curLeft = curPosition.left;
      -
      -		} else {
      -			curTop = parseFloat( curCSSTop ) || 0;
      -			curLeft = parseFloat( curCSSLeft ) || 0;
      -		}
      -
      -		if ( jQuery.isFunction( options ) ) {
      -
      -			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
      -			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
      -		}
      -
      -		if ( options.top != null ) {
      -			props.top = ( options.top - curOffset.top ) + curTop;
      -		}
      -		if ( options.left != null ) {
      -			props.left = ( options.left - curOffset.left ) + curLeft;
      -		}
      -
      -		if ( "using" in options ) {
      -			options.using.call( elem, props );
      -
      -		} else {
      -			curElem.css( props );
      -		}
      -	}
      -};
      -
      -jQuery.fn.extend( {
      -	offset: function( options ) {
      -
      -		// Preserve chaining for setter
      -		if ( arguments.length ) {
      -			return options === undefined ?
      -				this :
      -				this.each( function( i ) {
      -					jQuery.offset.setOffset( this, options, i );
      -				} );
      -		}
      -
      -		var docElem, win, rect, doc,
      -			elem = this[ 0 ];
      -
      -		if ( !elem ) {
      -			return;
      -		}
      -
      -		// Support: IE <=11 only
      -		// Running getBoundingClientRect on a
      -		// disconnected node in IE throws an error
      -		if ( !elem.getClientRects().length ) {
      -			return { top: 0, left: 0 };
      -		}
      -
      -		rect = elem.getBoundingClientRect();
      -
      -		// Make sure element is not hidden (display: none)
      -		if ( rect.width || rect.height ) {
      -			doc = elem.ownerDocument;
      -			win = getWindow( doc );
      -			docElem = doc.documentElement;
      -
      -			return {
      -				top: rect.top + win.pageYOffset - docElem.clientTop,
      -				left: rect.left + win.pageXOffset - docElem.clientLeft
      -			};
      -		}
      -
      -		// Return zeros for disconnected and hidden elements (gh-2310)
      -		return rect;
      -	},
      -
      -	position: function() {
      -		if ( !this[ 0 ] ) {
      -			return;
      -		}
      -
      -		var offsetParent, offset,
      -			elem = this[ 0 ],
      -			parentOffset = { top: 0, left: 0 };
      -
      -		// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
      -		// because it is its only offset parent
      -		if ( jQuery.css( elem, "position" ) === "fixed" ) {
      -
      -			// Assume getBoundingClientRect is there when computed position is fixed
      -			offset = elem.getBoundingClientRect();
      -
      -		} else {
      -
      -			// Get *real* offsetParent
      -			offsetParent = this.offsetParent();
      -
      -			// Get correct offsets
      -			offset = this.offset();
      -			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
      -				parentOffset = offsetParent.offset();
      -			}
      -
      -			// Add offsetParent borders
      -			parentOffset = {
      -				top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
      -				left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
      -			};
      -		}
      -
      -		// Subtract parent offsets and element margins
      -		return {
      -			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
      -			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
      -		};
      -	},
      -
      -	// This method will return documentElement in the following cases:
      -	// 1) For the element inside the iframe without offsetParent, this method will return
      -	//    documentElement of the parent window
      -	// 2) For the hidden or detached element
      -	// 3) For body or html element, i.e. in case of the html node - it will return itself
      -	//
      -	// but those exceptions were never presented as a real life use-cases
      -	// and might be considered as more preferable results.
      -	//
      -	// This logic, however, is not guaranteed and can change at any point in the future
      -	offsetParent: function() {
      -		return this.map( function() {
      -			var offsetParent = this.offsetParent;
      -
      -			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
      -				offsetParent = offsetParent.offsetParent;
      -			}
      -
      -			return offsetParent || documentElement;
      -		} );
      -	}
      -} );
      -
      -// Create scrollLeft and scrollTop methods
      -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
      -	var top = "pageYOffset" === prop;
      -
      -	jQuery.fn[ method ] = function( val ) {
      -		return access( this, function( elem, method, val ) {
      -			var win = getWindow( elem );
      -
      -			if ( val === undefined ) {
      -				return win ? win[ prop ] : elem[ method ];
      -			}
      -
      -			if ( win ) {
      -				win.scrollTo(
      -					!top ? val : win.pageXOffset,
      -					top ? val : win.pageYOffset
      -				);
      -
      -			} else {
      -				elem[ method ] = val;
      -			}
      -		}, method, val, arguments.length );
      -	};
      -} );
      -
      -// Support: Safari <=7 - 9.1, Chrome <=37 - 49
      -// Add the top/left cssHooks using jQuery.fn.position
      -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
      -// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
      -// getComputedStyle returns percent when specified for top/left/bottom/right;
      -// rather than make the css module depend on the offset module, just check for it here
      -jQuery.each( [ "top", "left" ], function( i, prop ) {
      -	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
      -		function( elem, computed ) {
      -			if ( computed ) {
      -				computed = curCSS( elem, prop );
      -
      -				// If curCSS returns percentage, fallback to offset
      -				return rnumnonpx.test( computed ) ?
      -					jQuery( elem ).position()[ prop ] + "px" :
      -					computed;
      -			}
      -		}
      -	);
      -} );
      -
      -
      -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
      -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
      -	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
      -		function( defaultExtra, funcName ) {
      -
      -		// Margin is only for outerHeight, outerWidth
      -		jQuery.fn[ funcName ] = function( margin, value ) {
      -			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
      -				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
      -
      -			return access( this, function( elem, type, value ) {
      -				var doc;
      -
      -				if ( jQuery.isWindow( elem ) ) {
      -
      -					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
      -					return funcName.indexOf( "outer" ) === 0 ?
      -						elem[ "inner" + name ] :
      -						elem.document.documentElement[ "client" + name ];
      -				}
      -
      -				// Get document width or height
      -				if ( elem.nodeType === 9 ) {
      -					doc = elem.documentElement;
      -
      -					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
      -					// whichever is greatest
      -					return Math.max(
      -						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
      -						elem.body[ "offset" + name ], doc[ "offset" + name ],
      -						doc[ "client" + name ]
      -					);
      -				}
      -
      -				return value === undefined ?
      -
      -					// Get width or height on the element, requesting but not forcing parseFloat
      -					jQuery.css( elem, type, extra ) :
      -
      -					// Set width or height on the element
      -					jQuery.style( elem, type, value, extra );
      -			}, type, chainable ? margin : undefined, chainable );
      -		};
      -	} );
      -} );
      -
      -
      -jQuery.fn.extend( {
      -
      -	bind: function( types, data, fn ) {
      -		return this.on( types, null, data, fn );
      -	},
      -	unbind: function( types, fn ) {
      -		return this.off( types, null, fn );
      -	},
      -
      -	delegate: function( selector, types, data, fn ) {
      -		return this.on( types, selector, data, fn );
      -	},
      -	undelegate: function( selector, types, fn ) {
      -
      -		// ( namespace ) or ( selector, types [, fn] )
      -		return arguments.length === 1 ?
      -			this.off( selector, "**" ) :
      -			this.off( types, selector || "**", fn );
      -	}
      -} );
      -
      -jQuery.parseJSON = JSON.parse;
      -
      -
      -
      -
      -// Register as a named AMD module, since jQuery can be concatenated with other
      -// files that may use define, but not via a proper concatenation script that
      -// understands anonymous AMD modules. A named AMD is safest and most robust
      -// way to register. Lowercase jquery is used because AMD module names are
      -// derived from file names, and jQuery is normally delivered in a lowercase
      -// file name. Do this after creating the global so that if an AMD module wants
      -// to call noConflict to hide this version of jQuery, it will work.
      -
      -// Note that for maximum portability, libraries that are not jQuery should
      -// declare themselves as anonymous modules, and avoid setting a global if an
      -// AMD loader is present. jQuery is a special case. For more information, see
      -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
      -
      -if ( typeof define === "function" && define.amd ) {
      -	define( "jquery", [], function() {
      -		return jQuery;
      -	} );
      -}
      -
      -
      -
      -
      -var
      -
      -	// Map over jQuery in case of overwrite
      -	_jQuery = window.jQuery,
      -
      -	// Map over the $ in case of overwrite
      -	_$ = window.$;
      -
      -jQuery.noConflict = function( deep ) {
      -	if ( window.$ === jQuery ) {
      -		window.$ = _$;
      -	}
      -
      -	if ( deep && window.jQuery === jQuery ) {
      -		window.jQuery = _jQuery;
      -	}
      -
      -	return jQuery;
      -};
      -
      -// Expose jQuery and $ identifiers, even in AMD
      -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
      -// and CommonJS for browser emulators (#13566)
      -if ( !noGlobal ) {
      -	window.jQuery = window.$ = jQuery;
      -}
      -
      -
      -
      -
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/dist/jquery.min.js b/bower_components/jquery/dist/jquery.min.js
      deleted file mode 100644
      index 4c5be4c0fb..0000000000
      --- a/bower_components/jquery/dist/jquery.min.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
      -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),
      -a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f<g;f++)if(d=e[f].call(c,b,a))return d}function fb(a,b,c){var d,e,f,g,h,i,j,k,l="width"in b||"height"in b,m=this,n={},o=a.style,p=a.nodeType&&ca(a),q=V.get(a,"fxshow");c.queue||(g=r._queueHooks(a,"fx"),null==g.unqueued&&(g.unqueued=0,h=g.empty.fire,g.empty.fire=function(){g.unqueued||h()}),g.unqueued++,m.always(function(){m.always(function(){g.unqueued--,r.queue(a,"fx").length||g.empty.fire()})}));for(d in b)if(e=b[d],_a.test(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}n[d]=q&&q[d]||r.style(a,d)}if(i=!r.isEmptyObject(b),i||!r.isEmptyObject(n)){l&&1===a.nodeType&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=q&&q.display,null==j&&(j=V.get(a,"display")),k=r.css(a,"display"),"none"===k&&(j?k=j:(ha([a],!0),j=a.style.display||j,k=r.css(a,"display"),ha([a]))),("inline"===k||"inline-block"===k&&null!=j)&&"none"===r.css(a,"float")&&(i||(m.done(function(){o.display=j}),null==j&&(k=o.display,j="none"===k?"":k)),o.display="inline-block")),c.overflow&&(o.overflow="hidden",m.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]})),i=!1;for(d in n)i||(q?"hidden"in q&&(p=q.hidden):q=V.access(a,"fxshow",{display:j}),f&&(q.hidden=!p),p&&ha([a],!0),m.done(function(){p||ha([a]),V.remove(a,"fxshow");for(d in n)r.style(a,d,n[d])})),i=eb(p?q[d]:0,d,m),d in q||(q[d]=i.start,p&&(i.end=i.start,i.start=0))}}function gb(a,b){var c,d,e,f,g;for(c in a)if(d=r.camelCase(c),e=b[d],f=a[c],r.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=r.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function hb(a,b,c){var d,e,f=0,g=hb.prefilters.length,h=r.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Za||cb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;g<i;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),f<1&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:r.extend({},b),opts:r.extend(!0,{specialEasing:{},easing:r.easing._default},c),originalProperties:b,originalOptions:c,startTime:Za||cb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=r.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;c<d;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(gb(k,j.opts.specialEasing);f<g;f++)if(d=hb.prefilters[f].call(j,a,k,j.opts))return r.isFunction(d.stop)&&(r._queueHooks(j.elem,j.opts.queue).stop=r.proxy(d.stop,d)),d;return r.map(k,eb,j),r.isFunction(j.opts.start)&&j.opts.start.call(a,j),r.fx.timer(r.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}r.Animation=r.extend(hb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return ea(c.elem,a,aa.exec(b),c),c}]},tweener:function(a,b){r.isFunction(a)?(b=a,a=["*"]):a=a.match(K);for(var c,d=0,e=a.length;d<e;d++)c=a[d],hb.tweeners[c]=hb.tweeners[c]||[],hb.tweeners[c].unshift(b)},prefilters:[fb],prefilter:function(a,b){b?hb.prefilters.unshift(a):hb.prefilters.push(a)}}),r.speed=function(a,b,c){var e=a&&"object"==typeof a?r.extend({},a):{complete:c||!c&&b||r.isFunction(a)&&a,duration:a,easing:c&&b||b&&!r.isFunction(b)&&b};return r.fx.off||d.hidden?e.duration=0:"number"!=typeof e.duration&&(e.duration in r.fx.speeds?e.duration=r.fx.speeds[e.duration]:e.duration=r.fx.speeds._default),null!=e.queue&&e.queue!==!0||(e.queue="fx"),e.old=e.complete,e.complete=function(){r.isFunction(e.old)&&e.old.call(this),e.queue&&r.dequeue(this,e.queue)},e},r.fn.extend({fadeTo:function(a,b,c,d){return this.filter(ca).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=r.isEmptyObject(a),f=r.speed(b,c,d),g=function(){var b=hb(this,r.extend({},a),f);(e||V.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=r.timers,g=V.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&ab.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||r.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=V.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=r.timers,g=d?d.length:0;for(c.finish=!0,r.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;b<g;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),r.each(["toggle","show","hide"],function(a,b){var c=r.fn[b];r.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(db(b,!0),a,d,e)}}),r.each({slideDown:db("show"),slideUp:db("hide"),slideToggle:db("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){r.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),r.timers=[],r.fx.tick=function(){var a,b=0,c=r.timers;for(Za=r.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||r.fx.stop(),Za=void 0},r.fx.timer=function(a){r.timers.push(a),a()?r.fx.start():r.timers.pop()},r.fx.interval=13,r.fx.start=function(){$a||($a=a.requestAnimationFrame?a.requestAnimationFrame(bb):a.setInterval(r.fx.tick,r.fx.interval))},r.fx.stop=function(){a.cancelAnimationFrame?a.cancelAnimationFrame($a):a.clearInterval($a),$a=null},r.fx.speeds={slow:600,fast:200,_default:400},r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var ib,jb=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)),
      -void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("<script>").prop({charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&f("error"===a.type?404:200,a.type)}),d.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Qb=[],Rb=/(=)\?(?=&|$)|\?\?/;r.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Qb.pop()||r.expando+"_"+rb++;return this[a]=!0,a}}),r.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Rb.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Rb.test(b.data)&&"data");if(h||"jsonp"===b.dataTypes[0])return e=b.jsonpCallback=r.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Rb,"$1"+e):b.jsonp!==!1&&(b.url+=(sb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||r.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?r(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Qb.push(e)),g&&r.isFunction(f)&&f(g[0]),g=f=void 0}),"script"}),o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))},r.fn.load=function(a,b,c){var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=mb(a.slice(h)),a=a.slice(0,h)),r.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&r.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?r("<div>").append(r.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},r.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){r.fn[b]=function(a){return this.on(b,a)}}),r.expr.pseudos.animated=function(a){return r.grep(r.timers,function(b){return a===b.elem}).length};function Sb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=Sb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=Sb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),r.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),r.parseJSON=JSON.parse,"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var Tb=a.jQuery,Ub=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=Ub),b&&a.jQuery===r&&(a.jQuery=Tb),r},b||(a.jQuery=a.$=r),r});
      diff --git a/bower_components/jquery/dist/jquery.min.map b/bower_components/jquery/dist/jquery.min.map
      deleted file mode 100644
      index 8c09dd8141..0000000000
      --- a/bower_components/jquery/dist/jquery.min.map
      +++ /dev/null
      @@ -1 +0,0 @@
      -{"version":3,"sources":["jquery.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","DOMEval","code","doc","script","createElement","text","head","appendChild","parentNode","removeChild","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","isNaN","parseFloat","proto","Ctor","isEmptyObject","globalEval","camelCase","string","nodeName","toLowerCase","isArrayLike","trim","makeArray","results","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","value","guid","proxy","tmp","args","now","Date","Symbol","iterator","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","nodeType","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","targets","l","closest","index","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","createOptions","object","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","method","promise","fail","then","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","readyWait","holdReady","hold","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","content","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","width","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","pixelMarginRight","reliableMarginLeft","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","getClientRects","getBoundingClientRect","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","origName","isFinite","left","margin","padding","border","prefix","suffix","expand","expanded","parts","Tween","easing","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rrun","raf","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","defaultPrefilter","opts","oldfire","propTween","restoreDisplay","isBox","anim","hidden","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","timer","complete","*","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","cancelAnimationFrame","clearInterval","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","parseInt","for","class","stripAndCollapse","getClass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","triggerHandler","hover","fnOver","fnOut","focusin","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","firstElementChild","wrapInner","unwrap","visible","offsetWidth","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","onreadystatechange","responseType","responseText","binary","text script","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","rect","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","bind","unbind","delegate","undelegate","parseJSON","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.min.js"}
      \ No newline at end of file
      diff --git a/bower_components/jquery/dist/jquery.slim.js b/bower_components/jquery/dist/jquery.slim.js
      deleted file mode 100644
      index 7c35f7d973..0000000000
      --- a/bower_components/jquery/dist/jquery.slim.js
      +++ /dev/null
      @@ -1,8107 +0,0 @@
      -/*!
      - * jQuery JavaScript Library v3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated
      - * https://jquery.com/
      - *
      - * Includes Sizzle.js
      - * https://sizzlejs.com/
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * https://jquery.org/license
      - *
      - * Date: 2016-09-22T22:30Z
      - */
      -( function( global, factory ) {
      -
      -	"use strict";
      -
      -	if ( typeof module === "object" && typeof module.exports === "object" ) {
      -
      -		// For CommonJS and CommonJS-like environments where a proper `window`
      -		// is present, execute the factory and get jQuery.
      -		// For environments that do not have a `window` with a `document`
      -		// (such as Node.js), expose a factory as module.exports.
      -		// This accentuates the need for the creation of a real `window`.
      -		// e.g. var jQuery = require("jquery")(window);
      -		// See ticket #14549 for more info.
      -		module.exports = global.document ?
      -			factory( global, true ) :
      -			function( w ) {
      -				if ( !w.document ) {
      -					throw new Error( "jQuery requires a window with a document" );
      -				}
      -				return factory( w );
      -			};
      -	} else {
      -		factory( global );
      -	}
      -
      -// Pass this if window is not defined yet
      -} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
      -
      -// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
      -// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
      -// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
      -// enough that all such attempts are guarded in a try block.
      -"use strict";
      -
      -var arr = [];
      -
      -var document = window.document;
      -
      -var getProto = Object.getPrototypeOf;
      -
      -var slice = arr.slice;
      -
      -var concat = arr.concat;
      -
      -var push = arr.push;
      -
      -var indexOf = arr.indexOf;
      -
      -var class2type = {};
      -
      -var toString = class2type.toString;
      -
      -var hasOwn = class2type.hasOwnProperty;
      -
      -var fnToString = hasOwn.toString;
      -
      -var ObjectFunctionString = fnToString.call( Object );
      -
      -var support = {};
      -
      -
      -
      -	function DOMEval( code, doc ) {
      -		doc = doc || document;
      -
      -		var script = doc.createElement( "script" );
      -
      -		script.text = code;
      -		doc.head.appendChild( script ).parentNode.removeChild( script );
      -	}
      -/* global Symbol */
      -// Defining this global in .eslintrc.json would create a danger of using the global
      -// unguarded in another place, it seems safer to define global only for this module
      -
      -
      -
      -var
      -	version = "3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated",
      -
      -	// Define a local copy of jQuery
      -	jQuery = function( selector, context ) {
      -
      -		// The jQuery object is actually just the init constructor 'enhanced'
      -		// Need init if jQuery is called (just allow error to be thrown if not included)
      -		return new jQuery.fn.init( selector, context );
      -	},
      -
      -	// Support: Android <=4.0 only
      -	// Make sure we trim BOM and NBSP
      -	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
      -
      -	// Matches dashed string for camelizing
      -	rmsPrefix = /^-ms-/,
      -	rdashAlpha = /-([a-z])/g,
      -
      -	// Used by jQuery.camelCase as callback to replace()
      -	fcamelCase = function( all, letter ) {
      -		return letter.toUpperCase();
      -	};
      -
      -jQuery.fn = jQuery.prototype = {
      -
      -	// The current version of jQuery being used
      -	jquery: version,
      -
      -	constructor: jQuery,
      -
      -	// The default length of a jQuery object is 0
      -	length: 0,
      -
      -	toArray: function() {
      -		return slice.call( this );
      -	},
      -
      -	// Get the Nth element in the matched element set OR
      -	// Get the whole matched element set as a clean array
      -	get: function( num ) {
      -
      -		// Return all the elements in a clean array
      -		if ( num == null ) {
      -			return slice.call( this );
      -		}
      -
      -		// Return just the one element from the set
      -		return num < 0 ? this[ num + this.length ] : this[ num ];
      -	},
      -
      -	// Take an array of elements and push it onto the stack
      -	// (returning the new matched element set)
      -	pushStack: function( elems ) {
      -
      -		// Build a new jQuery matched element set
      -		var ret = jQuery.merge( this.constructor(), elems );
      -
      -		// Add the old object onto the stack (as a reference)
      -		ret.prevObject = this;
      -
      -		// Return the newly-formed element set
      -		return ret;
      -	},
      -
      -	// Execute a callback for every element in the matched set.
      -	each: function( callback ) {
      -		return jQuery.each( this, callback );
      -	},
      -
      -	map: function( callback ) {
      -		return this.pushStack( jQuery.map( this, function( elem, i ) {
      -			return callback.call( elem, i, elem );
      -		} ) );
      -	},
      -
      -	slice: function() {
      -		return this.pushStack( slice.apply( this, arguments ) );
      -	},
      -
      -	first: function() {
      -		return this.eq( 0 );
      -	},
      -
      -	last: function() {
      -		return this.eq( -1 );
      -	},
      -
      -	eq: function( i ) {
      -		var len = this.length,
      -			j = +i + ( i < 0 ? len : 0 );
      -		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
      -	},
      -
      -	end: function() {
      -		return this.prevObject || this.constructor();
      -	},
      -
      -	// For internal use only.
      -	// Behaves like an Array's method, not like a jQuery method.
      -	push: push,
      -	sort: arr.sort,
      -	splice: arr.splice
      -};
      -
      -jQuery.extend = jQuery.fn.extend = function() {
      -	var options, name, src, copy, copyIsArray, clone,
      -		target = arguments[ 0 ] || {},
      -		i = 1,
      -		length = arguments.length,
      -		deep = false;
      -
      -	// Handle a deep copy situation
      -	if ( typeof target === "boolean" ) {
      -		deep = target;
      -
      -		// Skip the boolean and the target
      -		target = arguments[ i ] || {};
      -		i++;
      -	}
      -
      -	// Handle case when target is a string or something (possible in deep copy)
      -	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
      -		target = {};
      -	}
      -
      -	// Extend jQuery itself if only one argument is passed
      -	if ( i === length ) {
      -		target = this;
      -		i--;
      -	}
      -
      -	for ( ; i < length; i++ ) {
      -
      -		// Only deal with non-null/undefined values
      -		if ( ( options = arguments[ i ] ) != null ) {
      -
      -			// Extend the base object
      -			for ( name in options ) {
      -				src = target[ name ];
      -				copy = options[ name ];
      -
      -				// Prevent never-ending loop
      -				if ( target === copy ) {
      -					continue;
      -				}
      -
      -				// Recurse if we're merging plain objects or arrays
      -				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
      -					( copyIsArray = jQuery.isArray( copy ) ) ) ) {
      -
      -					if ( copyIsArray ) {
      -						copyIsArray = false;
      -						clone = src && jQuery.isArray( src ) ? src : [];
      -
      -					} else {
      -						clone = src && jQuery.isPlainObject( src ) ? src : {};
      -					}
      -
      -					// Never move original objects, clone them
      -					target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -				// Don't bring in undefined values
      -				} else if ( copy !== undefined ) {
      -					target[ name ] = copy;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Return the modified object
      -	return target;
      -};
      -
      -jQuery.extend( {
      -
      -	// Unique for each copy of jQuery on the page
      -	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
      -
      -	// Assume jQuery is ready without the ready module
      -	isReady: true,
      -
      -	error: function( msg ) {
      -		throw new Error( msg );
      -	},
      -
      -	noop: function() {},
      -
      -	isFunction: function( obj ) {
      -		return jQuery.type( obj ) === "function";
      -	},
      -
      -	isArray: Array.isArray,
      -
      -	isWindow: function( obj ) {
      -		return obj != null && obj === obj.window;
      -	},
      -
      -	isNumeric: function( obj ) {
      -
      -		// As of jQuery 3.0, isNumeric is limited to
      -		// strings and numbers (primitives or objects)
      -		// that can be coerced to finite numbers (gh-2662)
      -		var type = jQuery.type( obj );
      -		return ( type === "number" || type === "string" ) &&
      -
      -			// parseFloat NaNs numeric-cast false positives ("")
      -			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
      -			// subtraction forces infinities to NaN
      -			!isNaN( obj - parseFloat( obj ) );
      -	},
      -
      -	isPlainObject: function( obj ) {
      -		var proto, Ctor;
      -
      -		// Detect obvious negatives
      -		// Use toString instead of jQuery.type to catch host objects
      -		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
      -			return false;
      -		}
      -
      -		proto = getProto( obj );
      -
      -		// Objects with no prototype (e.g., `Object.create( null )`) are plain
      -		if ( !proto ) {
      -			return true;
      -		}
      -
      -		// Objects with prototype are plain iff they were constructed by a global Object function
      -		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
      -		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
      -	},
      -
      -	isEmptyObject: function( obj ) {
      -
      -		/* eslint-disable no-unused-vars */
      -		// See https://github.com/eslint/eslint/issues/6125
      -		var name;
      -
      -		for ( name in obj ) {
      -			return false;
      -		}
      -		return true;
      -	},
      -
      -	type: function( obj ) {
      -		if ( obj == null ) {
      -			return obj + "";
      -		}
      -
      -		// Support: Android <=2.3 only (functionish RegExp)
      -		return typeof obj === "object" || typeof obj === "function" ?
      -			class2type[ toString.call( obj ) ] || "object" :
      -			typeof obj;
      -	},
      -
      -	// Evaluates a script in a global context
      -	globalEval: function( code ) {
      -		DOMEval( code );
      -	},
      -
      -	// Convert dashed to camelCase; used by the css and data modules
      -	// Support: IE <=9 - 11, Edge 12 - 13
      -	// Microsoft forgot to hump their vendor prefix (#9572)
      -	camelCase: function( string ) {
      -		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -	},
      -
      -	nodeName: function( elem, name ) {
      -		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
      -	},
      -
      -	each: function( obj, callback ) {
      -		var length, i = 0;
      -
      -		if ( isArrayLike( obj ) ) {
      -			length = obj.length;
      -			for ( ; i < length; i++ ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		} else {
      -			for ( i in obj ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		}
      -
      -		return obj;
      -	},
      -
      -	// Support: Android <=4.0 only
      -	trim: function( text ) {
      -		return text == null ?
      -			"" :
      -			( text + "" ).replace( rtrim, "" );
      -	},
      -
      -	// results is for internal usage only
      -	makeArray: function( arr, results ) {
      -		var ret = results || [];
      -
      -		if ( arr != null ) {
      -			if ( isArrayLike( Object( arr ) ) ) {
      -				jQuery.merge( ret,
      -					typeof arr === "string" ?
      -					[ arr ] : arr
      -				);
      -			} else {
      -				push.call( ret, arr );
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	inArray: function( elem, arr, i ) {
      -		return arr == null ? -1 : indexOf.call( arr, elem, i );
      -	},
      -
      -	// Support: Android <=4.0 only, PhantomJS 1 only
      -	// push.apply(_, arraylike) throws on ancient WebKit
      -	merge: function( first, second ) {
      -		var len = +second.length,
      -			j = 0,
      -			i = first.length;
      -
      -		for ( ; j < len; j++ ) {
      -			first[ i++ ] = second[ j ];
      -		}
      -
      -		first.length = i;
      -
      -		return first;
      -	},
      -
      -	grep: function( elems, callback, invert ) {
      -		var callbackInverse,
      -			matches = [],
      -			i = 0,
      -			length = elems.length,
      -			callbackExpect = !invert;
      -
      -		// Go through the array, only saving the items
      -		// that pass the validator function
      -		for ( ; i < length; i++ ) {
      -			callbackInverse = !callback( elems[ i ], i );
      -			if ( callbackInverse !== callbackExpect ) {
      -				matches.push( elems[ i ] );
      -			}
      -		}
      -
      -		return matches;
      -	},
      -
      -	// arg is for internal usage only
      -	map: function( elems, callback, arg ) {
      -		var length, value,
      -			i = 0,
      -			ret = [];
      -
      -		// Go through the array, translating each of the items to their new values
      -		if ( isArrayLike( elems ) ) {
      -			length = elems.length;
      -			for ( ; i < length; i++ ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -
      -		// Go through every key on the object,
      -		} else {
      -			for ( i in elems ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -		}
      -
      -		// Flatten any nested arrays
      -		return concat.apply( [], ret );
      -	},
      -
      -	// A global GUID counter for objects
      -	guid: 1,
      -
      -	// Bind a function to a context, optionally partially applying any
      -	// arguments.
      -	proxy: function( fn, context ) {
      -		var tmp, args, proxy;
      -
      -		if ( typeof context === "string" ) {
      -			tmp = fn[ context ];
      -			context = fn;
      -			fn = tmp;
      -		}
      -
      -		// Quick check to determine if target is callable, in the spec
      -		// this throws a TypeError, but we will just return undefined.
      -		if ( !jQuery.isFunction( fn ) ) {
      -			return undefined;
      -		}
      -
      -		// Simulated bind
      -		args = slice.call( arguments, 2 );
      -		proxy = function() {
      -			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
      -		};
      -
      -		// Set the guid of unique handler to the same of original handler, so it can be removed
      -		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
      -
      -		return proxy;
      -	},
      -
      -	now: Date.now,
      -
      -	// jQuery.support is not used in Core but other projects attach their
      -	// properties to it so it needs to exist.
      -	support: support
      -} );
      -
      -if ( typeof Symbol === "function" ) {
      -	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
      -}
      -
      -// Populate the class2type map
      -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
      -function( i, name ) {
      -	class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -} );
      -
      -function isArrayLike( obj ) {
      -
      -	// Support: real iOS 8.2 only (not reproducible in simulator)
      -	// `in` check used to prevent JIT error (gh-2145)
      -	// hasOwn isn't used here due to false negatives
      -	// regarding Nodelist length in IE
      -	var length = !!obj && "length" in obj && obj.length,
      -		type = jQuery.type( obj );
      -
      -	if ( type === "function" || jQuery.isWindow( obj ) ) {
      -		return false;
      -	}
      -
      -	return type === "array" || length === 0 ||
      -		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
      -}
      -var Sizzle =
      -/*!
      - * Sizzle CSS Selector Engine v2.3.3
      - * https://sizzlejs.com/
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * http://jquery.org/license
      - *
      - * Date: 2016-08-08
      - */
      -(function( window ) {
      -
      -var i,
      -	support,
      -	Expr,
      -	getText,
      -	isXML,
      -	tokenize,
      -	compile,
      -	select,
      -	outermostContext,
      -	sortInput,
      -	hasDuplicate,
      -
      -	// Local document vars
      -	setDocument,
      -	document,
      -	docElem,
      -	documentIsHTML,
      -	rbuggyQSA,
      -	rbuggyMatches,
      -	matches,
      -	contains,
      -
      -	// Instance-specific data
      -	expando = "sizzle" + 1 * new Date(),
      -	preferredDoc = window.document,
      -	dirruns = 0,
      -	done = 0,
      -	classCache = createCache(),
      -	tokenCache = createCache(),
      -	compilerCache = createCache(),
      -	sortOrder = function( a, b ) {
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -		}
      -		return 0;
      -	},
      -
      -	// Instance methods
      -	hasOwn = ({}).hasOwnProperty,
      -	arr = [],
      -	pop = arr.pop,
      -	push_native = arr.push,
      -	push = arr.push,
      -	slice = arr.slice,
      -	// Use a stripped-down indexOf as it's faster than native
      -	// https://jsperf.com/thor-indexof-vs-for/5
      -	indexOf = function( list, elem ) {
      -		var i = 0,
      -			len = list.length;
      -		for ( ; i < len; i++ ) {
      -			if ( list[i] === elem ) {
      -				return i;
      -			}
      -		}
      -		return -1;
      -	},
      -
      -	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
      -
      -	// Regular expressions
      -
      -	// http://www.w3.org/TR/css3-selectors/#whitespace
      -	whitespace = "[\\x20\\t\\r\\n\\f]",
      -
      -	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
      -	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
      -
      -	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
      -	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
      -		// Operator (capture 2)
      -		"*([*^$|!~]?=)" + whitespace +
      -		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
      -		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
      -		"*\\]",
      -
      -	pseudos = ":(" + identifier + ")(?:\\((" +
      -		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
      -		// 1. quoted (capture 3; capture 4 or capture 5)
      -		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
      -		// 2. simple (capture 6)
      -		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
      -		// 3. anything else (capture 2)
      -		".*" +
      -		")\\)|)",
      -
      -	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
      -	rwhitespace = new RegExp( whitespace + "+", "g" ),
      -	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
      -
      -	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
      -	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
      -
      -	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
      -
      -	rpseudo = new RegExp( pseudos ),
      -	ridentifier = new RegExp( "^" + identifier + "$" ),
      -
      -	matchExpr = {
      -		"ID": new RegExp( "^#(" + identifier + ")" ),
      -		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
      -		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
      -		"ATTR": new RegExp( "^" + attributes ),
      -		"PSEUDO": new RegExp( "^" + pseudos ),
      -		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
      -			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
      -			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
      -		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
      -		// For use in libraries implementing .is()
      -		// We use this for POS matching in `select`
      -		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
      -			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
      -	},
      -
      -	rinputs = /^(?:input|select|textarea|button)$/i,
      -	rheader = /^h\d$/i,
      -
      -	rnative = /^[^{]+\{\s*\[native \w/,
      -
      -	// Easily-parseable/retrievable ID or TAG or CLASS selectors
      -	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
      -
      -	rsibling = /[+~]/,
      -
      -	// CSS escapes
      -	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
      -	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
      -	funescape = function( _, escaped, escapedWhitespace ) {
      -		var high = "0x" + escaped - 0x10000;
      -		// NaN means non-codepoint
      -		// Support: Firefox<24
      -		// Workaround erroneous numeric interpretation of +"0x"
      -		return high !== high || escapedWhitespace ?
      -			escaped :
      -			high < 0 ?
      -				// BMP codepoint
      -				String.fromCharCode( high + 0x10000 ) :
      -				// Supplemental Plane codepoint (surrogate pair)
      -				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
      -	},
      -
      -	// CSS string/identifier serialization
      -	// https://drafts.csswg.org/cssom/#common-serializing-idioms
      -	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
      -	fcssescape = function( ch, asCodePoint ) {
      -		if ( asCodePoint ) {
      -
      -			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
      -			if ( ch === "\0" ) {
      -				return "\uFFFD";
      -			}
      -
      -			// Control characters and (dependent upon position) numbers get escaped as code points
      -			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
      -		}
      -
      -		// Other potentially-special ASCII characters get backslash-escaped
      -		return "\\" + ch;
      -	},
      -
      -	// Used for iframes
      -	// See setDocument()
      -	// Removing the function wrapper causes a "Permission Denied"
      -	// error in IE
      -	unloadHandler = function() {
      -		setDocument();
      -	},
      -
      -	disabledAncestor = addCombinator(
      -		function( elem ) {
      -			return elem.disabled === true && ("form" in elem || "label" in elem);
      -		},
      -		{ dir: "parentNode", next: "legend" }
      -	);
      -
      -// Optimize for push.apply( _, NodeList )
      -try {
      -	push.apply(
      -		(arr = slice.call( preferredDoc.childNodes )),
      -		preferredDoc.childNodes
      -	);
      -	// Support: Android<4.0
      -	// Detect silently failing push.apply
      -	arr[ preferredDoc.childNodes.length ].nodeType;
      -} catch ( e ) {
      -	push = { apply: arr.length ?
      -
      -		// Leverage slice if possible
      -		function( target, els ) {
      -			push_native.apply( target, slice.call(els) );
      -		} :
      -
      -		// Support: IE<9
      -		// Otherwise append directly
      -		function( target, els ) {
      -			var j = target.length,
      -				i = 0;
      -			// Can't trust NodeList.length
      -			while ( (target[j++] = els[i++]) ) {}
      -			target.length = j - 1;
      -		}
      -	};
      -}
      -
      -function Sizzle( selector, context, results, seed ) {
      -	var m, i, elem, nid, match, groups, newSelector,
      -		newContext = context && context.ownerDocument,
      -
      -		// nodeType defaults to 9, since context defaults to document
      -		nodeType = context ? context.nodeType : 9;
      -
      -	results = results || [];
      -
      -	// Return early from calls with invalid selector or context
      -	if ( typeof selector !== "string" || !selector ||
      -		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
      -
      -		return results;
      -	}
      -
      -	// Try to shortcut find operations (as opposed to filters) in HTML documents
      -	if ( !seed ) {
      -
      -		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
      -			setDocument( context );
      -		}
      -		context = context || document;
      -
      -		if ( documentIsHTML ) {
      -
      -			// If the selector is sufficiently simple, try using a "get*By*" DOM method
      -			// (excepting DocumentFragment context, where the methods don't exist)
      -			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
      -
      -				// ID selector
      -				if ( (m = match[1]) ) {
      -
      -					// Document context
      -					if ( nodeType === 9 ) {
      -						if ( (elem = context.getElementById( m )) ) {
      -
      -							// Support: IE, Opera, Webkit
      -							// TODO: identify versions
      -							// getElementById can match elements by name instead of ID
      -							if ( elem.id === m ) {
      -								results.push( elem );
      -								return results;
      -							}
      -						} else {
      -							return results;
      -						}
      -
      -					// Element context
      -					} else {
      -
      -						// Support: IE, Opera, Webkit
      -						// TODO: identify versions
      -						// getElementById can match elements by name instead of ID
      -						if ( newContext && (elem = newContext.getElementById( m )) &&
      -							contains( context, elem ) &&
      -							elem.id === m ) {
      -
      -							results.push( elem );
      -							return results;
      -						}
      -					}
      -
      -				// Type selector
      -				} else if ( match[2] ) {
      -					push.apply( results, context.getElementsByTagName( selector ) );
      -					return results;
      -
      -				// Class selector
      -				} else if ( (m = match[3]) && support.getElementsByClassName &&
      -					context.getElementsByClassName ) {
      -
      -					push.apply( results, context.getElementsByClassName( m ) );
      -					return results;
      -				}
      -			}
      -
      -			// Take advantage of querySelectorAll
      -			if ( support.qsa &&
      -				!compilerCache[ selector + " " ] &&
      -				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
      -
      -				if ( nodeType !== 1 ) {
      -					newContext = context;
      -					newSelector = selector;
      -
      -				// qSA looks outside Element context, which is not what we want
      -				// Thanks to Andrew Dupont for this workaround technique
      -				// Support: IE <=8
      -				// Exclude object elements
      -				} else if ( context.nodeName.toLowerCase() !== "object" ) {
      -
      -					// Capture the context ID, setting it first if necessary
      -					if ( (nid = context.getAttribute( "id" )) ) {
      -						nid = nid.replace( rcssescape, fcssescape );
      -					} else {
      -						context.setAttribute( "id", (nid = expando) );
      -					}
      -
      -					// Prefix every selector in the list
      -					groups = tokenize( selector );
      -					i = groups.length;
      -					while ( i-- ) {
      -						groups[i] = "#" + nid + " " + toSelector( groups[i] );
      -					}
      -					newSelector = groups.join( "," );
      -
      -					// Expand context for sibling selectors
      -					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
      -						context;
      -				}
      -
      -				if ( newSelector ) {
      -					try {
      -						push.apply( results,
      -							newContext.querySelectorAll( newSelector )
      -						);
      -						return results;
      -					} catch ( qsaError ) {
      -					} finally {
      -						if ( nid === expando ) {
      -							context.removeAttribute( "id" );
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	// All others
      -	return select( selector.replace( rtrim, "$1" ), context, results, seed );
      -}
      -
      -/**
      - * Create key-value caches of limited size
      - * @returns {function(string, object)} Returns the Object data after storing it on itself with
      - *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
      - *	deleting the oldest entry
      - */
      -function createCache() {
      -	var keys = [];
      -
      -	function cache( key, value ) {
      -		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
      -		if ( keys.push( key + " " ) > Expr.cacheLength ) {
      -			// Only keep the most recent entries
      -			delete cache[ keys.shift() ];
      -		}
      -		return (cache[ key + " " ] = value);
      -	}
      -	return cache;
      -}
      -
      -/**
      - * Mark a function for special use by Sizzle
      - * @param {Function} fn The function to mark
      - */
      -function markFunction( fn ) {
      -	fn[ expando ] = true;
      -	return fn;
      -}
      -
      -/**
      - * Support testing using an element
      - * @param {Function} fn Passed the created element and returns a boolean result
      - */
      -function assert( fn ) {
      -	var el = document.createElement("fieldset");
      -
      -	try {
      -		return !!fn( el );
      -	} catch (e) {
      -		return false;
      -	} finally {
      -		// Remove from its parent by default
      -		if ( el.parentNode ) {
      -			el.parentNode.removeChild( el );
      -		}
      -		// release memory in IE
      -		el = null;
      -	}
      -}
      -
      -/**
      - * Adds the same handler for all of the specified attrs
      - * @param {String} attrs Pipe-separated list of attributes
      - * @param {Function} handler The method that will be applied
      - */
      -function addHandle( attrs, handler ) {
      -	var arr = attrs.split("|"),
      -		i = arr.length;
      -
      -	while ( i-- ) {
      -		Expr.attrHandle[ arr[i] ] = handler;
      -	}
      -}
      -
      -/**
      - * Checks document order of two siblings
      - * @param {Element} a
      - * @param {Element} b
      - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
      - */
      -function siblingCheck( a, b ) {
      -	var cur = b && a,
      -		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
      -			a.sourceIndex - b.sourceIndex;
      -
      -	// Use IE sourceIndex if available on both nodes
      -	if ( diff ) {
      -		return diff;
      -	}
      -
      -	// Check if b follows a
      -	if ( cur ) {
      -		while ( (cur = cur.nextSibling) ) {
      -			if ( cur === b ) {
      -				return -1;
      -			}
      -		}
      -	}
      -
      -	return a ? 1 : -1;
      -}
      -
      -/**
      - * Returns a function to use in pseudos for input types
      - * @param {String} type
      - */
      -function createInputPseudo( type ) {
      -	return function( elem ) {
      -		var name = elem.nodeName.toLowerCase();
      -		return name === "input" && elem.type === type;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for buttons
      - * @param {String} type
      - */
      -function createButtonPseudo( type ) {
      -	return function( elem ) {
      -		var name = elem.nodeName.toLowerCase();
      -		return (name === "input" || name === "button") && elem.type === type;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for :enabled/:disabled
      - * @param {Boolean} disabled true for :disabled; false for :enabled
      - */
      -function createDisabledPseudo( disabled ) {
      -
      -	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
      -	return function( elem ) {
      -
      -		// Only certain elements can match :enabled or :disabled
      -		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
      -		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
      -		if ( "form" in elem ) {
      -
      -			// Check for inherited disabledness on relevant non-disabled elements:
      -			// * listed form-associated elements in a disabled fieldset
      -			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
      -			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
      -			// * option elements in a disabled optgroup
      -			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
      -			// All such elements have a "form" property.
      -			if ( elem.parentNode && elem.disabled === false ) {
      -
      -				// Option elements defer to a parent optgroup if present
      -				if ( "label" in elem ) {
      -					if ( "label" in elem.parentNode ) {
      -						return elem.parentNode.disabled === disabled;
      -					} else {
      -						return elem.disabled === disabled;
      -					}
      -				}
      -
      -				// Support: IE 6 - 11
      -				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
      -				return elem.isDisabled === disabled ||
      -
      -					// Where there is no isDisabled, check manually
      -					/* jshint -W018 */
      -					elem.isDisabled !== !disabled &&
      -						disabledAncestor( elem ) === disabled;
      -			}
      -
      -			return elem.disabled === disabled;
      -
      -		// Try to winnow out elements that can't be disabled before trusting the disabled property.
      -		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
      -		// even exist on them, let alone have a boolean value.
      -		} else if ( "label" in elem ) {
      -			return elem.disabled === disabled;
      -		}
      -
      -		// Remaining elements are neither :enabled nor :disabled
      -		return false;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for positionals
      - * @param {Function} fn
      - */
      -function createPositionalPseudo( fn ) {
      -	return markFunction(function( argument ) {
      -		argument = +argument;
      -		return markFunction(function( seed, matches ) {
      -			var j,
      -				matchIndexes = fn( [], seed.length, argument ),
      -				i = matchIndexes.length;
      -
      -			// Match elements found at the specified indexes
      -			while ( i-- ) {
      -				if ( seed[ (j = matchIndexes[i]) ] ) {
      -					seed[j] = !(matches[j] = seed[j]);
      -				}
      -			}
      -		});
      -	});
      -}
      -
      -/**
      - * Checks a node for validity as a Sizzle context
      - * @param {Element|Object=} context
      - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
      - */
      -function testContext( context ) {
      -	return context && typeof context.getElementsByTagName !== "undefined" && context;
      -}
      -
      -// Expose support vars for convenience
      -support = Sizzle.support = {};
      -
      -/**
      - * Detects XML nodes
      - * @param {Element|Object} elem An element or a document
      - * @returns {Boolean} True iff elem is a non-HTML XML node
      - */
      -isXML = Sizzle.isXML = function( elem ) {
      -	// documentElement is verified for cases where it doesn't yet exist
      -	// (such as loading iframes in IE - #4833)
      -	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
      -	return documentElement ? documentElement.nodeName !== "HTML" : false;
      -};
      -
      -/**
      - * Sets document-related variables once based on the current document
      - * @param {Element|Object} [doc] An element or document object to use to set the document
      - * @returns {Object} Returns the current document
      - */
      -setDocument = Sizzle.setDocument = function( node ) {
      -	var hasCompare, subWindow,
      -		doc = node ? node.ownerDocument || node : preferredDoc;
      -
      -	// Return early if doc is invalid or already selected
      -	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
      -		return document;
      -	}
      -
      -	// Update global variables
      -	document = doc;
      -	docElem = document.documentElement;
      -	documentIsHTML = !isXML( document );
      -
      -	// Support: IE 9-11, Edge
      -	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
      -	if ( preferredDoc !== document &&
      -		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
      -
      -		// Support: IE 11, Edge
      -		if ( subWindow.addEventListener ) {
      -			subWindow.addEventListener( "unload", unloadHandler, false );
      -
      -		// Support: IE 9 - 10 only
      -		} else if ( subWindow.attachEvent ) {
      -			subWindow.attachEvent( "onunload", unloadHandler );
      -		}
      -	}
      -
      -	/* Attributes
      -	---------------------------------------------------------------------- */
      -
      -	// Support: IE<8
      -	// Verify that getAttribute really returns attributes and not properties
      -	// (excepting IE8 booleans)
      -	support.attributes = assert(function( el ) {
      -		el.className = "i";
      -		return !el.getAttribute("className");
      -	});
      -
      -	/* getElement(s)By*
      -	---------------------------------------------------------------------- */
      -
      -	// Check if getElementsByTagName("*") returns only elements
      -	support.getElementsByTagName = assert(function( el ) {
      -		el.appendChild( document.createComment("") );
      -		return !el.getElementsByTagName("*").length;
      -	});
      -
      -	// Support: IE<9
      -	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
      -
      -	// Support: IE<10
      -	// Check if getElementById returns elements by name
      -	// The broken getElementById methods don't pick up programmatically-set names,
      -	// so use a roundabout getElementsByName test
      -	support.getById = assert(function( el ) {
      -		docElem.appendChild( el ).id = expando;
      -		return !document.getElementsByName || !document.getElementsByName( expando ).length;
      -	});
      -
      -	// ID filter and find
      -	if ( support.getById ) {
      -		Expr.filter["ID"] = function( id ) {
      -			var attrId = id.replace( runescape, funescape );
      -			return function( elem ) {
      -				return elem.getAttribute("id") === attrId;
      -			};
      -		};
      -		Expr.find["ID"] = function( id, context ) {
      -			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
      -				var elem = context.getElementById( id );
      -				return elem ? [ elem ] : [];
      -			}
      -		};
      -	} else {
      -		Expr.filter["ID"] =  function( id ) {
      -			var attrId = id.replace( runescape, funescape );
      -			return function( elem ) {
      -				var node = typeof elem.getAttributeNode !== "undefined" &&
      -					elem.getAttributeNode("id");
      -				return node && node.value === attrId;
      -			};
      -		};
      -
      -		// Support: IE 6 - 7 only
      -		// getElementById is not reliable as a find shortcut
      -		Expr.find["ID"] = function( id, context ) {
      -			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
      -				var node, i, elems,
      -					elem = context.getElementById( id );
      -
      -				if ( elem ) {
      -
      -					// Verify the id attribute
      -					node = elem.getAttributeNode("id");
      -					if ( node && node.value === id ) {
      -						return [ elem ];
      -					}
      -
      -					// Fall back on getElementsByName
      -					elems = context.getElementsByName( id );
      -					i = 0;
      -					while ( (elem = elems[i++]) ) {
      -						node = elem.getAttributeNode("id");
      -						if ( node && node.value === id ) {
      -							return [ elem ];
      -						}
      -					}
      -				}
      -
      -				return [];
      -			}
      -		};
      -	}
      -
      -	// Tag
      -	Expr.find["TAG"] = support.getElementsByTagName ?
      -		function( tag, context ) {
      -			if ( typeof context.getElementsByTagName !== "undefined" ) {
      -				return context.getElementsByTagName( tag );
      -
      -			// DocumentFragment nodes don't have gEBTN
      -			} else if ( support.qsa ) {
      -				return context.querySelectorAll( tag );
      -			}
      -		} :
      -
      -		function( tag, context ) {
      -			var elem,
      -				tmp = [],
      -				i = 0,
      -				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
      -				results = context.getElementsByTagName( tag );
      -
      -			// Filter out possible comments
      -			if ( tag === "*" ) {
      -				while ( (elem = results[i++]) ) {
      -					if ( elem.nodeType === 1 ) {
      -						tmp.push( elem );
      -					}
      -				}
      -
      -				return tmp;
      -			}
      -			return results;
      -		};
      -
      -	// Class
      -	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
      -		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
      -			return context.getElementsByClassName( className );
      -		}
      -	};
      -
      -	/* QSA/matchesSelector
      -	---------------------------------------------------------------------- */
      -
      -	// QSA and matchesSelector support
      -
      -	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
      -	rbuggyMatches = [];
      -
      -	// qSa(:focus) reports false when true (Chrome 21)
      -	// We allow this because of a bug in IE8/9 that throws an error
      -	// whenever `document.activeElement` is accessed on an iframe
      -	// So, we allow :focus to pass through QSA all the time to avoid the IE error
      -	// See https://bugs.jquery.com/ticket/13378
      -	rbuggyQSA = [];
      -
      -	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
      -		// Build QSA regex
      -		// Regex strategy adopted from Diego Perini
      -		assert(function( el ) {
      -			// Select is set to empty string on purpose
      -			// This is to test IE's treatment of not explicitly
      -			// setting a boolean content attribute,
      -			// since its presence should be enough
      -			// https://bugs.jquery.com/ticket/12359
      -			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
      -				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
      -				"<option selected=''></option></select>";
      -
      -			// Support: IE8, Opera 11-12.16
      -			// Nothing should be selected when empty strings follow ^= or $= or *=
      -			// The test attribute must be unknown in Opera but "safe" for WinRT
      -			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
      -			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
      -				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
      -			}
      -
      -			// Support: IE8
      -			// Boolean attributes and "value" are not treated correctly
      -			if ( !el.querySelectorAll("[selected]").length ) {
      -				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
      -			}
      -
      -			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
      -			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
      -				rbuggyQSA.push("~=");
      -			}
      -
      -			// Webkit/Opera - :checked should return selected option elements
      -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -			// IE8 throws error here and will not see later tests
      -			if ( !el.querySelectorAll(":checked").length ) {
      -				rbuggyQSA.push(":checked");
      -			}
      -
      -			// Support: Safari 8+, iOS 8+
      -			// https://bugs.webkit.org/show_bug.cgi?id=136851
      -			// In-page `selector#id sibling-combinator selector` fails
      -			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
      -				rbuggyQSA.push(".#.+[+~]");
      -			}
      -		});
      -
      -		assert(function( el ) {
      -			el.innerHTML = "<a href='' disabled='disabled'></a>" +
      -				"<select disabled='disabled'><option/></select>";
      -
      -			// Support: Windows 8 Native Apps
      -			// The type and name attributes are restricted during .innerHTML assignment
      -			var input = document.createElement("input");
      -			input.setAttribute( "type", "hidden" );
      -			el.appendChild( input ).setAttribute( "name", "D" );
      -
      -			// Support: IE8
      -			// Enforce case-sensitivity of name attribute
      -			if ( el.querySelectorAll("[name=d]").length ) {
      -				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
      -			}
      -
      -			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
      -			// IE8 throws error here and will not see later tests
      -			if ( el.querySelectorAll(":enabled").length !== 2 ) {
      -				rbuggyQSA.push( ":enabled", ":disabled" );
      -			}
      -
      -			// Support: IE9-11+
      -			// IE's :disabled selector does not pick up the children of disabled fieldsets
      -			docElem.appendChild( el ).disabled = true;
      -			if ( el.querySelectorAll(":disabled").length !== 2 ) {
      -				rbuggyQSA.push( ":enabled", ":disabled" );
      -			}
      -
      -			// Opera 10-11 does not throw on post-comma invalid pseudos
      -			el.querySelectorAll("*,:x");
      -			rbuggyQSA.push(",.*:");
      -		});
      -	}
      -
      -	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
      -		docElem.webkitMatchesSelector ||
      -		docElem.mozMatchesSelector ||
      -		docElem.oMatchesSelector ||
      -		docElem.msMatchesSelector) )) ) {
      -
      -		assert(function( el ) {
      -			// Check to see if it's possible to do matchesSelector
      -			// on a disconnected node (IE 9)
      -			support.disconnectedMatch = matches.call( el, "*" );
      -
      -			// This should fail with an exception
      -			// Gecko does not error, returns false instead
      -			matches.call( el, "[s!='']:x" );
      -			rbuggyMatches.push( "!=", pseudos );
      -		});
      -	}
      -
      -	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
      -	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
      -
      -	/* Contains
      -	---------------------------------------------------------------------- */
      -	hasCompare = rnative.test( docElem.compareDocumentPosition );
      -
      -	// Element contains another
      -	// Purposefully self-exclusive
      -	// As in, an element does not contain itself
      -	contains = hasCompare || rnative.test( docElem.contains ) ?
      -		function( a, b ) {
      -			var adown = a.nodeType === 9 ? a.documentElement : a,
      -				bup = b && b.parentNode;
      -			return a === bup || !!( bup && bup.nodeType === 1 && (
      -				adown.contains ?
      -					adown.contains( bup ) :
      -					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
      -			));
      -		} :
      -		function( a, b ) {
      -			if ( b ) {
      -				while ( (b = b.parentNode) ) {
      -					if ( b === a ) {
      -						return true;
      -					}
      -				}
      -			}
      -			return false;
      -		};
      -
      -	/* Sorting
      -	---------------------------------------------------------------------- */
      -
      -	// Document order sorting
      -	sortOrder = hasCompare ?
      -	function( a, b ) {
      -
      -		// Flag for duplicate removal
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -		}
      -
      -		// Sort on method existence if only one input has compareDocumentPosition
      -		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
      -		if ( compare ) {
      -			return compare;
      -		}
      -
      -		// Calculate position if both inputs belong to the same document
      -		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
      -			a.compareDocumentPosition( b ) :
      -
      -			// Otherwise we know they are disconnected
      -			1;
      -
      -		// Disconnected nodes
      -		if ( compare & 1 ||
      -			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
      -
      -			// Choose the first element that is related to our preferred document
      -			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
      -				return -1;
      -			}
      -			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
      -				return 1;
      -			}
      -
      -			// Maintain original order
      -			return sortInput ?
      -				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
      -				0;
      -		}
      -
      -		return compare & 4 ? -1 : 1;
      -	} :
      -	function( a, b ) {
      -		// Exit early if the nodes are identical
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -		}
      -
      -		var cur,
      -			i = 0,
      -			aup = a.parentNode,
      -			bup = b.parentNode,
      -			ap = [ a ],
      -			bp = [ b ];
      -
      -		// Parentless nodes are either documents or disconnected
      -		if ( !aup || !bup ) {
      -			return a === document ? -1 :
      -				b === document ? 1 :
      -				aup ? -1 :
      -				bup ? 1 :
      -				sortInput ?
      -				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
      -				0;
      -
      -		// If the nodes are siblings, we can do a quick check
      -		} else if ( aup === bup ) {
      -			return siblingCheck( a, b );
      -		}
      -
      -		// Otherwise we need full lists of their ancestors for comparison
      -		cur = a;
      -		while ( (cur = cur.parentNode) ) {
      -			ap.unshift( cur );
      -		}
      -		cur = b;
      -		while ( (cur = cur.parentNode) ) {
      -			bp.unshift( cur );
      -		}
      -
      -		// Walk down the tree looking for a discrepancy
      -		while ( ap[i] === bp[i] ) {
      -			i++;
      -		}
      -
      -		return i ?
      -			// Do a sibling check if the nodes have a common ancestor
      -			siblingCheck( ap[i], bp[i] ) :
      -
      -			// Otherwise nodes in our document sort first
      -			ap[i] === preferredDoc ? -1 :
      -			bp[i] === preferredDoc ? 1 :
      -			0;
      -	};
      -
      -	return document;
      -};
      -
      -Sizzle.matches = function( expr, elements ) {
      -	return Sizzle( expr, null, null, elements );
      -};
      -
      -Sizzle.matchesSelector = function( elem, expr ) {
      -	// Set document vars if needed
      -	if ( ( elem.ownerDocument || elem ) !== document ) {
      -		setDocument( elem );
      -	}
      -
      -	// Make sure that attribute selectors are quoted
      -	expr = expr.replace( rattributeQuotes, "='$1']" );
      -
      -	if ( support.matchesSelector && documentIsHTML &&
      -		!compilerCache[ expr + " " ] &&
      -		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
      -		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
      -
      -		try {
      -			var ret = matches.call( elem, expr );
      -
      -			// IE 9's matchesSelector returns false on disconnected nodes
      -			if ( ret || support.disconnectedMatch ||
      -					// As well, disconnected nodes are said to be in a document
      -					// fragment in IE 9
      -					elem.document && elem.document.nodeType !== 11 ) {
      -				return ret;
      -			}
      -		} catch (e) {}
      -	}
      -
      -	return Sizzle( expr, document, null, [ elem ] ).length > 0;
      -};
      -
      -Sizzle.contains = function( context, elem ) {
      -	// Set document vars if needed
      -	if ( ( context.ownerDocument || context ) !== document ) {
      -		setDocument( context );
      -	}
      -	return contains( context, elem );
      -};
      -
      -Sizzle.attr = function( elem, name ) {
      -	// Set document vars if needed
      -	if ( ( elem.ownerDocument || elem ) !== document ) {
      -		setDocument( elem );
      -	}
      -
      -	var fn = Expr.attrHandle[ name.toLowerCase() ],
      -		// Don't get fooled by Object.prototype properties (jQuery #13807)
      -		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
      -			fn( elem, name, !documentIsHTML ) :
      -			undefined;
      -
      -	return val !== undefined ?
      -		val :
      -		support.attributes || !documentIsHTML ?
      -			elem.getAttribute( name ) :
      -			(val = elem.getAttributeNode(name)) && val.specified ?
      -				val.value :
      -				null;
      -};
      -
      -Sizzle.escape = function( sel ) {
      -	return (sel + "").replace( rcssescape, fcssescape );
      -};
      -
      -Sizzle.error = function( msg ) {
      -	throw new Error( "Syntax error, unrecognized expression: " + msg );
      -};
      -
      -/**
      - * Document sorting and removing duplicates
      - * @param {ArrayLike} results
      - */
      -Sizzle.uniqueSort = function( results ) {
      -	var elem,
      -		duplicates = [],
      -		j = 0,
      -		i = 0;
      -
      -	// Unless we *know* we can detect duplicates, assume their presence
      -	hasDuplicate = !support.detectDuplicates;
      -	sortInput = !support.sortStable && results.slice( 0 );
      -	results.sort( sortOrder );
      -
      -	if ( hasDuplicate ) {
      -		while ( (elem = results[i++]) ) {
      -			if ( elem === results[ i ] ) {
      -				j = duplicates.push( i );
      -			}
      -		}
      -		while ( j-- ) {
      -			results.splice( duplicates[ j ], 1 );
      -		}
      -	}
      -
      -	// Clear input after sorting to release objects
      -	// See https://github.com/jquery/sizzle/pull/225
      -	sortInput = null;
      -
      -	return results;
      -};
      -
      -/**
      - * Utility function for retrieving the text value of an array of DOM nodes
      - * @param {Array|Element} elem
      - */
      -getText = Sizzle.getText = function( elem ) {
      -	var node,
      -		ret = "",
      -		i = 0,
      -		nodeType = elem.nodeType;
      -
      -	if ( !nodeType ) {
      -		// If no nodeType, this is expected to be an array
      -		while ( (node = elem[i++]) ) {
      -			// Do not traverse comment nodes
      -			ret += getText( node );
      -		}
      -	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -		// Use textContent for elements
      -		// innerText usage removed for consistency of new lines (jQuery #11153)
      -		if ( typeof elem.textContent === "string" ) {
      -			return elem.textContent;
      -		} else {
      -			// Traverse its children
      -			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -				ret += getText( elem );
      -			}
      -		}
      -	} else if ( nodeType === 3 || nodeType === 4 ) {
      -		return elem.nodeValue;
      -	}
      -	// Do not include comment or processing instruction nodes
      -
      -	return ret;
      -};
      -
      -Expr = Sizzle.selectors = {
      -
      -	// Can be adjusted by the user
      -	cacheLength: 50,
      -
      -	createPseudo: markFunction,
      -
      -	match: matchExpr,
      -
      -	attrHandle: {},
      -
      -	find: {},
      -
      -	relative: {
      -		">": { dir: "parentNode", first: true },
      -		" ": { dir: "parentNode" },
      -		"+": { dir: "previousSibling", first: true },
      -		"~": { dir: "previousSibling" }
      -	},
      -
      -	preFilter: {
      -		"ATTR": function( match ) {
      -			match[1] = match[1].replace( runescape, funescape );
      -
      -			// Move the given value to match[3] whether quoted or unquoted
      -			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
      -
      -			if ( match[2] === "~=" ) {
      -				match[3] = " " + match[3] + " ";
      -			}
      -
      -			return match.slice( 0, 4 );
      -		},
      -
      -		"CHILD": function( match ) {
      -			/* matches from matchExpr["CHILD"]
      -				1 type (only|nth|...)
      -				2 what (child|of-type)
      -				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
      -				4 xn-component of xn+y argument ([+-]?\d*n|)
      -				5 sign of xn-component
      -				6 x of xn-component
      -				7 sign of y-component
      -				8 y of y-component
      -			*/
      -			match[1] = match[1].toLowerCase();
      -
      -			if ( match[1].slice( 0, 3 ) === "nth" ) {
      -				// nth-* requires argument
      -				if ( !match[3] ) {
      -					Sizzle.error( match[0] );
      -				}
      -
      -				// numeric x and y parameters for Expr.filter.CHILD
      -				// remember that false/true cast respectively to 0/1
      -				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
      -				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
      -
      -			// other types prohibit arguments
      -			} else if ( match[3] ) {
      -				Sizzle.error( match[0] );
      -			}
      -
      -			return match;
      -		},
      -
      -		"PSEUDO": function( match ) {
      -			var excess,
      -				unquoted = !match[6] && match[2];
      -
      -			if ( matchExpr["CHILD"].test( match[0] ) ) {
      -				return null;
      -			}
      -
      -			// Accept quoted arguments as-is
      -			if ( match[3] ) {
      -				match[2] = match[4] || match[5] || "";
      -
      -			// Strip excess characters from unquoted arguments
      -			} else if ( unquoted && rpseudo.test( unquoted ) &&
      -				// Get excess from tokenize (recursively)
      -				(excess = tokenize( unquoted, true )) &&
      -				// advance to the next closing parenthesis
      -				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
      -
      -				// excess is a negative index
      -				match[0] = match[0].slice( 0, excess );
      -				match[2] = unquoted.slice( 0, excess );
      -			}
      -
      -			// Return only captures needed by the pseudo filter method (type and argument)
      -			return match.slice( 0, 3 );
      -		}
      -	},
      -
      -	filter: {
      -
      -		"TAG": function( nodeNameSelector ) {
      -			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
      -			return nodeNameSelector === "*" ?
      -				function() { return true; } :
      -				function( elem ) {
      -					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
      -				};
      -		},
      -
      -		"CLASS": function( className ) {
      -			var pattern = classCache[ className + " " ];
      -
      -			return pattern ||
      -				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
      -				classCache( className, function( elem ) {
      -					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
      -				});
      -		},
      -
      -		"ATTR": function( name, operator, check ) {
      -			return function( elem ) {
      -				var result = Sizzle.attr( elem, name );
      -
      -				if ( result == null ) {
      -					return operator === "!=";
      -				}
      -				if ( !operator ) {
      -					return true;
      -				}
      -
      -				result += "";
      -
      -				return operator === "=" ? result === check :
      -					operator === "!=" ? result !== check :
      -					operator === "^=" ? check && result.indexOf( check ) === 0 :
      -					operator === "*=" ? check && result.indexOf( check ) > -1 :
      -					operator === "$=" ? check && result.slice( -check.length ) === check :
      -					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
      -					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
      -					false;
      -			};
      -		},
      -
      -		"CHILD": function( type, what, argument, first, last ) {
      -			var simple = type.slice( 0, 3 ) !== "nth",
      -				forward = type.slice( -4 ) !== "last",
      -				ofType = what === "of-type";
      -
      -			return first === 1 && last === 0 ?
      -
      -				// Shortcut for :nth-*(n)
      -				function( elem ) {
      -					return !!elem.parentNode;
      -				} :
      -
      -				function( elem, context, xml ) {
      -					var cache, uniqueCache, outerCache, node, nodeIndex, start,
      -						dir = simple !== forward ? "nextSibling" : "previousSibling",
      -						parent = elem.parentNode,
      -						name = ofType && elem.nodeName.toLowerCase(),
      -						useCache = !xml && !ofType,
      -						diff = false;
      -
      -					if ( parent ) {
      -
      -						// :(first|last|only)-(child|of-type)
      -						if ( simple ) {
      -							while ( dir ) {
      -								node = elem;
      -								while ( (node = node[ dir ]) ) {
      -									if ( ofType ?
      -										node.nodeName.toLowerCase() === name :
      -										node.nodeType === 1 ) {
      -
      -										return false;
      -									}
      -								}
      -								// Reverse direction for :only-* (if we haven't yet done so)
      -								start = dir = type === "only" && !start && "nextSibling";
      -							}
      -							return true;
      -						}
      -
      -						start = [ forward ? parent.firstChild : parent.lastChild ];
      -
      -						// non-xml :nth-child(...) stores cache data on `parent`
      -						if ( forward && useCache ) {
      -
      -							// Seek `elem` from a previously-cached index
      -
      -							// ...in a gzip-friendly way
      -							node = parent;
      -							outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -							// Support: IE <9 only
      -							// Defend against cloned attroperties (jQuery gh-1709)
      -							uniqueCache = outerCache[ node.uniqueID ] ||
      -								(outerCache[ node.uniqueID ] = {});
      -
      -							cache = uniqueCache[ type ] || [];
      -							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
      -							diff = nodeIndex && cache[ 2 ];
      -							node = nodeIndex && parent.childNodes[ nodeIndex ];
      -
      -							while ( (node = ++nodeIndex && node && node[ dir ] ||
      -
      -								// Fallback to seeking `elem` from the start
      -								(diff = nodeIndex = 0) || start.pop()) ) {
      -
      -								// When found, cache indexes on `parent` and break
      -								if ( node.nodeType === 1 && ++diff && node === elem ) {
      -									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
      -									break;
      -								}
      -							}
      -
      -						} else {
      -							// Use previously-cached element index if available
      -							if ( useCache ) {
      -								// ...in a gzip-friendly way
      -								node = elem;
      -								outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -								// Support: IE <9 only
      -								// Defend against cloned attroperties (jQuery gh-1709)
      -								uniqueCache = outerCache[ node.uniqueID ] ||
      -									(outerCache[ node.uniqueID ] = {});
      -
      -								cache = uniqueCache[ type ] || [];
      -								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
      -								diff = nodeIndex;
      -							}
      -
      -							// xml :nth-child(...)
      -							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
      -							if ( diff === false ) {
      -								// Use the same loop as above to seek `elem` from the start
      -								while ( (node = ++nodeIndex && node && node[ dir ] ||
      -									(diff = nodeIndex = 0) || start.pop()) ) {
      -
      -									if ( ( ofType ?
      -										node.nodeName.toLowerCase() === name :
      -										node.nodeType === 1 ) &&
      -										++diff ) {
      -
      -										// Cache the index of each encountered element
      -										if ( useCache ) {
      -											outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -											// Support: IE <9 only
      -											// Defend against cloned attroperties (jQuery gh-1709)
      -											uniqueCache = outerCache[ node.uniqueID ] ||
      -												(outerCache[ node.uniqueID ] = {});
      -
      -											uniqueCache[ type ] = [ dirruns, diff ];
      -										}
      -
      -										if ( node === elem ) {
      -											break;
      -										}
      -									}
      -								}
      -							}
      -						}
      -
      -						// Incorporate the offset, then check against cycle size
      -						diff -= last;
      -						return diff === first || ( diff % first === 0 && diff / first >= 0 );
      -					}
      -				};
      -		},
      -
      -		"PSEUDO": function( pseudo, argument ) {
      -			// pseudo-class names are case-insensitive
      -			// http://www.w3.org/TR/selectors/#pseudo-classes
      -			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
      -			// Remember that setFilters inherits from pseudos
      -			var args,
      -				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
      -					Sizzle.error( "unsupported pseudo: " + pseudo );
      -
      -			// The user may use createPseudo to indicate that
      -			// arguments are needed to create the filter function
      -			// just as Sizzle does
      -			if ( fn[ expando ] ) {
      -				return fn( argument );
      -			}
      -
      -			// But maintain support for old signatures
      -			if ( fn.length > 1 ) {
      -				args = [ pseudo, pseudo, "", argument ];
      -				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
      -					markFunction(function( seed, matches ) {
      -						var idx,
      -							matched = fn( seed, argument ),
      -							i = matched.length;
      -						while ( i-- ) {
      -							idx = indexOf( seed, matched[i] );
      -							seed[ idx ] = !( matches[ idx ] = matched[i] );
      -						}
      -					}) :
      -					function( elem ) {
      -						return fn( elem, 0, args );
      -					};
      -			}
      -
      -			return fn;
      -		}
      -	},
      -
      -	pseudos: {
      -		// Potentially complex pseudos
      -		"not": markFunction(function( selector ) {
      -			// Trim the selector passed to compile
      -			// to avoid treating leading and trailing
      -			// spaces as combinators
      -			var input = [],
      -				results = [],
      -				matcher = compile( selector.replace( rtrim, "$1" ) );
      -
      -			return matcher[ expando ] ?
      -				markFunction(function( seed, matches, context, xml ) {
      -					var elem,
      -						unmatched = matcher( seed, null, xml, [] ),
      -						i = seed.length;
      -
      -					// Match elements unmatched by `matcher`
      -					while ( i-- ) {
      -						if ( (elem = unmatched[i]) ) {
      -							seed[i] = !(matches[i] = elem);
      -						}
      -					}
      -				}) :
      -				function( elem, context, xml ) {
      -					input[0] = elem;
      -					matcher( input, null, xml, results );
      -					// Don't keep the element (issue #299)
      -					input[0] = null;
      -					return !results.pop();
      -				};
      -		}),
      -
      -		"has": markFunction(function( selector ) {
      -			return function( elem ) {
      -				return Sizzle( selector, elem ).length > 0;
      -			};
      -		}),
      -
      -		"contains": markFunction(function( text ) {
      -			text = text.replace( runescape, funescape );
      -			return function( elem ) {
      -				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
      -			};
      -		}),
      -
      -		// "Whether an element is represented by a :lang() selector
      -		// is based solely on the element's language value
      -		// being equal to the identifier C,
      -		// or beginning with the identifier C immediately followed by "-".
      -		// The matching of C against the element's language value is performed case-insensitively.
      -		// The identifier C does not have to be a valid language name."
      -		// http://www.w3.org/TR/selectors/#lang-pseudo
      -		"lang": markFunction( function( lang ) {
      -			// lang value must be a valid identifier
      -			if ( !ridentifier.test(lang || "") ) {
      -				Sizzle.error( "unsupported lang: " + lang );
      -			}
      -			lang = lang.replace( runescape, funescape ).toLowerCase();
      -			return function( elem ) {
      -				var elemLang;
      -				do {
      -					if ( (elemLang = documentIsHTML ?
      -						elem.lang :
      -						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
      -
      -						elemLang = elemLang.toLowerCase();
      -						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
      -					}
      -				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
      -				return false;
      -			};
      -		}),
      -
      -		// Miscellaneous
      -		"target": function( elem ) {
      -			var hash = window.location && window.location.hash;
      -			return hash && hash.slice( 1 ) === elem.id;
      -		},
      -
      -		"root": function( elem ) {
      -			return elem === docElem;
      -		},
      -
      -		"focus": function( elem ) {
      -			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
      -		},
      -
      -		// Boolean properties
      -		"enabled": createDisabledPseudo( false ),
      -		"disabled": createDisabledPseudo( true ),
      -
      -		"checked": function( elem ) {
      -			// In CSS3, :checked should return both checked and selected elements
      -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -			var nodeName = elem.nodeName.toLowerCase();
      -			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
      -		},
      -
      -		"selected": function( elem ) {
      -			// Accessing this property makes selected-by-default
      -			// options in Safari work properly
      -			if ( elem.parentNode ) {
      -				elem.parentNode.selectedIndex;
      -			}
      -
      -			return elem.selected === true;
      -		},
      -
      -		// Contents
      -		"empty": function( elem ) {
      -			// http://www.w3.org/TR/selectors/#empty-pseudo
      -			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
      -			//   but not by others (comment: 8; processing instruction: 7; etc.)
      -			// nodeType < 6 works because attributes (2) do not appear as children
      -			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -				if ( elem.nodeType < 6 ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		},
      -
      -		"parent": function( elem ) {
      -			return !Expr.pseudos["empty"]( elem );
      -		},
      -
      -		// Element/input types
      -		"header": function( elem ) {
      -			return rheader.test( elem.nodeName );
      -		},
      -
      -		"input": function( elem ) {
      -			return rinputs.test( elem.nodeName );
      -		},
      -
      -		"button": function( elem ) {
      -			var name = elem.nodeName.toLowerCase();
      -			return name === "input" && elem.type === "button" || name === "button";
      -		},
      -
      -		"text": function( elem ) {
      -			var attr;
      -			return elem.nodeName.toLowerCase() === "input" &&
      -				elem.type === "text" &&
      -
      -				// Support: IE<8
      -				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
      -				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
      -		},
      -
      -		// Position-in-collection
      -		"first": createPositionalPseudo(function() {
      -			return [ 0 ];
      -		}),
      -
      -		"last": createPositionalPseudo(function( matchIndexes, length ) {
      -			return [ length - 1 ];
      -		}),
      -
      -		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			return [ argument < 0 ? argument + length : argument ];
      -		}),
      -
      -		"even": createPositionalPseudo(function( matchIndexes, length ) {
      -			var i = 0;
      -			for ( ; i < length; i += 2 ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"odd": createPositionalPseudo(function( matchIndexes, length ) {
      -			var i = 1;
      -			for ( ; i < length; i += 2 ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			var i = argument < 0 ? argument + length : argument;
      -			for ( ; --i >= 0; ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			var i = argument < 0 ? argument + length : argument;
      -			for ( ; ++i < length; ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		})
      -	}
      -};
      -
      -Expr.pseudos["nth"] = Expr.pseudos["eq"];
      -
      -// Add button/input type pseudos
      -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
      -	Expr.pseudos[ i ] = createInputPseudo( i );
      -}
      -for ( i in { submit: true, reset: true } ) {
      -	Expr.pseudos[ i ] = createButtonPseudo( i );
      -}
      -
      -// Easy API for creating new setFilters
      -function setFilters() {}
      -setFilters.prototype = Expr.filters = Expr.pseudos;
      -Expr.setFilters = new setFilters();
      -
      -tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
      -	var matched, match, tokens, type,
      -		soFar, groups, preFilters,
      -		cached = tokenCache[ selector + " " ];
      -
      -	if ( cached ) {
      -		return parseOnly ? 0 : cached.slice( 0 );
      -	}
      -
      -	soFar = selector;
      -	groups = [];
      -	preFilters = Expr.preFilter;
      -
      -	while ( soFar ) {
      -
      -		// Comma and first run
      -		if ( !matched || (match = rcomma.exec( soFar )) ) {
      -			if ( match ) {
      -				// Don't consume trailing commas as valid
      -				soFar = soFar.slice( match[0].length ) || soFar;
      -			}
      -			groups.push( (tokens = []) );
      -		}
      -
      -		matched = false;
      -
      -		// Combinators
      -		if ( (match = rcombinators.exec( soFar )) ) {
      -			matched = match.shift();
      -			tokens.push({
      -				value: matched,
      -				// Cast descendant combinators to space
      -				type: match[0].replace( rtrim, " " )
      -			});
      -			soFar = soFar.slice( matched.length );
      -		}
      -
      -		// Filters
      -		for ( type in Expr.filter ) {
      -			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
      -				(match = preFilters[ type ]( match ))) ) {
      -				matched = match.shift();
      -				tokens.push({
      -					value: matched,
      -					type: type,
      -					matches: match
      -				});
      -				soFar = soFar.slice( matched.length );
      -			}
      -		}
      -
      -		if ( !matched ) {
      -			break;
      -		}
      -	}
      -
      -	// Return the length of the invalid excess
      -	// if we're just parsing
      -	// Otherwise, throw an error or return tokens
      -	return parseOnly ?
      -		soFar.length :
      -		soFar ?
      -			Sizzle.error( selector ) :
      -			// Cache the tokens
      -			tokenCache( selector, groups ).slice( 0 );
      -};
      -
      -function toSelector( tokens ) {
      -	var i = 0,
      -		len = tokens.length,
      -		selector = "";
      -	for ( ; i < len; i++ ) {
      -		selector += tokens[i].value;
      -	}
      -	return selector;
      -}
      -
      -function addCombinator( matcher, combinator, base ) {
      -	var dir = combinator.dir,
      -		skip = combinator.next,
      -		key = skip || dir,
      -		checkNonElements = base && key === "parentNode",
      -		doneName = done++;
      -
      -	return combinator.first ?
      -		// Check against closest ancestor/preceding element
      -		function( elem, context, xml ) {
      -			while ( (elem = elem[ dir ]) ) {
      -				if ( elem.nodeType === 1 || checkNonElements ) {
      -					return matcher( elem, context, xml );
      -				}
      -			}
      -			return false;
      -		} :
      -
      -		// Check against all ancestor/preceding elements
      -		function( elem, context, xml ) {
      -			var oldCache, uniqueCache, outerCache,
      -				newCache = [ dirruns, doneName ];
      -
      -			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
      -			if ( xml ) {
      -				while ( (elem = elem[ dir ]) ) {
      -					if ( elem.nodeType === 1 || checkNonElements ) {
      -						if ( matcher( elem, context, xml ) ) {
      -							return true;
      -						}
      -					}
      -				}
      -			} else {
      -				while ( (elem = elem[ dir ]) ) {
      -					if ( elem.nodeType === 1 || checkNonElements ) {
      -						outerCache = elem[ expando ] || (elem[ expando ] = {});
      -
      -						// Support: IE <9 only
      -						// Defend against cloned attroperties (jQuery gh-1709)
      -						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
      -
      -						if ( skip && skip === elem.nodeName.toLowerCase() ) {
      -							elem = elem[ dir ] || elem;
      -						} else if ( (oldCache = uniqueCache[ key ]) &&
      -							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
      -
      -							// Assign to newCache so results back-propagate to previous elements
      -							return (newCache[ 2 ] = oldCache[ 2 ]);
      -						} else {
      -							// Reuse newcache so results back-propagate to previous elements
      -							uniqueCache[ key ] = newCache;
      -
      -							// A match means we're done; a fail means we have to keep checking
      -							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
      -								return true;
      -							}
      -						}
      -					}
      -				}
      -			}
      -			return false;
      -		};
      -}
      -
      -function elementMatcher( matchers ) {
      -	return matchers.length > 1 ?
      -		function( elem, context, xml ) {
      -			var i = matchers.length;
      -			while ( i-- ) {
      -				if ( !matchers[i]( elem, context, xml ) ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		} :
      -		matchers[0];
      -}
      -
      -function multipleContexts( selector, contexts, results ) {
      -	var i = 0,
      -		len = contexts.length;
      -	for ( ; i < len; i++ ) {
      -		Sizzle( selector, contexts[i], results );
      -	}
      -	return results;
      -}
      -
      -function condense( unmatched, map, filter, context, xml ) {
      -	var elem,
      -		newUnmatched = [],
      -		i = 0,
      -		len = unmatched.length,
      -		mapped = map != null;
      -
      -	for ( ; i < len; i++ ) {
      -		if ( (elem = unmatched[i]) ) {
      -			if ( !filter || filter( elem, context, xml ) ) {
      -				newUnmatched.push( elem );
      -				if ( mapped ) {
      -					map.push( i );
      -				}
      -			}
      -		}
      -	}
      -
      -	return newUnmatched;
      -}
      -
      -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
      -	if ( postFilter && !postFilter[ expando ] ) {
      -		postFilter = setMatcher( postFilter );
      -	}
      -	if ( postFinder && !postFinder[ expando ] ) {
      -		postFinder = setMatcher( postFinder, postSelector );
      -	}
      -	return markFunction(function( seed, results, context, xml ) {
      -		var temp, i, elem,
      -			preMap = [],
      -			postMap = [],
      -			preexisting = results.length,
      -
      -			// Get initial elements from seed or context
      -			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
      -
      -			// Prefilter to get matcher input, preserving a map for seed-results synchronization
      -			matcherIn = preFilter && ( seed || !selector ) ?
      -				condense( elems, preMap, preFilter, context, xml ) :
      -				elems,
      -
      -			matcherOut = matcher ?
      -				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
      -				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
      -
      -					// ...intermediate processing is necessary
      -					[] :
      -
      -					// ...otherwise use results directly
      -					results :
      -				matcherIn;
      -
      -		// Find primary matches
      -		if ( matcher ) {
      -			matcher( matcherIn, matcherOut, context, xml );
      -		}
      -
      -		// Apply postFilter
      -		if ( postFilter ) {
      -			temp = condense( matcherOut, postMap );
      -			postFilter( temp, [], context, xml );
      -
      -			// Un-match failing elements by moving them back to matcherIn
      -			i = temp.length;
      -			while ( i-- ) {
      -				if ( (elem = temp[i]) ) {
      -					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
      -				}
      -			}
      -		}
      -
      -		if ( seed ) {
      -			if ( postFinder || preFilter ) {
      -				if ( postFinder ) {
      -					// Get the final matcherOut by condensing this intermediate into postFinder contexts
      -					temp = [];
      -					i = matcherOut.length;
      -					while ( i-- ) {
      -						if ( (elem = matcherOut[i]) ) {
      -							// Restore matcherIn since elem is not yet a final match
      -							temp.push( (matcherIn[i] = elem) );
      -						}
      -					}
      -					postFinder( null, (matcherOut = []), temp, xml );
      -				}
      -
      -				// Move matched elements from seed to results to keep them synchronized
      -				i = matcherOut.length;
      -				while ( i-- ) {
      -					if ( (elem = matcherOut[i]) &&
      -						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
      -
      -						seed[temp] = !(results[temp] = elem);
      -					}
      -				}
      -			}
      -
      -		// Add elements to results, through postFinder if defined
      -		} else {
      -			matcherOut = condense(
      -				matcherOut === results ?
      -					matcherOut.splice( preexisting, matcherOut.length ) :
      -					matcherOut
      -			);
      -			if ( postFinder ) {
      -				postFinder( null, results, matcherOut, xml );
      -			} else {
      -				push.apply( results, matcherOut );
      -			}
      -		}
      -	});
      -}
      -
      -function matcherFromTokens( tokens ) {
      -	var checkContext, matcher, j,
      -		len = tokens.length,
      -		leadingRelative = Expr.relative[ tokens[0].type ],
      -		implicitRelative = leadingRelative || Expr.relative[" "],
      -		i = leadingRelative ? 1 : 0,
      -
      -		// The foundational matcher ensures that elements are reachable from top-level context(s)
      -		matchContext = addCombinator( function( elem ) {
      -			return elem === checkContext;
      -		}, implicitRelative, true ),
      -		matchAnyContext = addCombinator( function( elem ) {
      -			return indexOf( checkContext, elem ) > -1;
      -		}, implicitRelative, true ),
      -		matchers = [ function( elem, context, xml ) {
      -			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
      -				(checkContext = context).nodeType ?
      -					matchContext( elem, context, xml ) :
      -					matchAnyContext( elem, context, xml ) );
      -			// Avoid hanging onto element (issue #299)
      -			checkContext = null;
      -			return ret;
      -		} ];
      -
      -	for ( ; i < len; i++ ) {
      -		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
      -			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
      -		} else {
      -			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
      -
      -			// Return special upon seeing a positional matcher
      -			if ( matcher[ expando ] ) {
      -				// Find the next relative operator (if any) for proper handling
      -				j = ++i;
      -				for ( ; j < len; j++ ) {
      -					if ( Expr.relative[ tokens[j].type ] ) {
      -						break;
      -					}
      -				}
      -				return setMatcher(
      -					i > 1 && elementMatcher( matchers ),
      -					i > 1 && toSelector(
      -						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
      -						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
      -					).replace( rtrim, "$1" ),
      -					matcher,
      -					i < j && matcherFromTokens( tokens.slice( i, j ) ),
      -					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
      -					j < len && toSelector( tokens )
      -				);
      -			}
      -			matchers.push( matcher );
      -		}
      -	}
      -
      -	return elementMatcher( matchers );
      -}
      -
      -function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
      -	var bySet = setMatchers.length > 0,
      -		byElement = elementMatchers.length > 0,
      -		superMatcher = function( seed, context, xml, results, outermost ) {
      -			var elem, j, matcher,
      -				matchedCount = 0,
      -				i = "0",
      -				unmatched = seed && [],
      -				setMatched = [],
      -				contextBackup = outermostContext,
      -				// We must always have either seed elements or outermost context
      -				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
      -				// Use integer dirruns iff this is the outermost matcher
      -				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
      -				len = elems.length;
      -
      -			if ( outermost ) {
      -				outermostContext = context === document || context || outermost;
      -			}
      -
      -			// Add elements passing elementMatchers directly to results
      -			// Support: IE<9, Safari
      -			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
      -			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
      -				if ( byElement && elem ) {
      -					j = 0;
      -					if ( !context && elem.ownerDocument !== document ) {
      -						setDocument( elem );
      -						xml = !documentIsHTML;
      -					}
      -					while ( (matcher = elementMatchers[j++]) ) {
      -						if ( matcher( elem, context || document, xml) ) {
      -							results.push( elem );
      -							break;
      -						}
      -					}
      -					if ( outermost ) {
      -						dirruns = dirrunsUnique;
      -					}
      -				}
      -
      -				// Track unmatched elements for set filters
      -				if ( bySet ) {
      -					// They will have gone through all possible matchers
      -					if ( (elem = !matcher && elem) ) {
      -						matchedCount--;
      -					}
      -
      -					// Lengthen the array for every element, matched or not
      -					if ( seed ) {
      -						unmatched.push( elem );
      -					}
      -				}
      -			}
      -
      -			// `i` is now the count of elements visited above, and adding it to `matchedCount`
      -			// makes the latter nonnegative.
      -			matchedCount += i;
      -
      -			// Apply set filters to unmatched elements
      -			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
      -			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
      -			// no element matchers and no seed.
      -			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
      -			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
      -			// numerically zero.
      -			if ( bySet && i !== matchedCount ) {
      -				j = 0;
      -				while ( (matcher = setMatchers[j++]) ) {
      -					matcher( unmatched, setMatched, context, xml );
      -				}
      -
      -				if ( seed ) {
      -					// Reintegrate element matches to eliminate the need for sorting
      -					if ( matchedCount > 0 ) {
      -						while ( i-- ) {
      -							if ( !(unmatched[i] || setMatched[i]) ) {
      -								setMatched[i] = pop.call( results );
      -							}
      -						}
      -					}
      -
      -					// Discard index placeholder values to get only actual matches
      -					setMatched = condense( setMatched );
      -				}
      -
      -				// Add matches to results
      -				push.apply( results, setMatched );
      -
      -				// Seedless set matches succeeding multiple successful matchers stipulate sorting
      -				if ( outermost && !seed && setMatched.length > 0 &&
      -					( matchedCount + setMatchers.length ) > 1 ) {
      -
      -					Sizzle.uniqueSort( results );
      -				}
      -			}
      -
      -			// Override manipulation of globals by nested matchers
      -			if ( outermost ) {
      -				dirruns = dirrunsUnique;
      -				outermostContext = contextBackup;
      -			}
      -
      -			return unmatched;
      -		};
      -
      -	return bySet ?
      -		markFunction( superMatcher ) :
      -		superMatcher;
      -}
      -
      -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
      -	var i,
      -		setMatchers = [],
      -		elementMatchers = [],
      -		cached = compilerCache[ selector + " " ];
      -
      -	if ( !cached ) {
      -		// Generate a function of recursive functions that can be used to check each element
      -		if ( !match ) {
      -			match = tokenize( selector );
      -		}
      -		i = match.length;
      -		while ( i-- ) {
      -			cached = matcherFromTokens( match[i] );
      -			if ( cached[ expando ] ) {
      -				setMatchers.push( cached );
      -			} else {
      -				elementMatchers.push( cached );
      -			}
      -		}
      -
      -		// Cache the compiled function
      -		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
      -
      -		// Save selector and tokenization
      -		cached.selector = selector;
      -	}
      -	return cached;
      -};
      -
      -/**
      - * A low-level selection function that works with Sizzle's compiled
      - *  selector functions
      - * @param {String|Function} selector A selector or a pre-compiled
      - *  selector function built with Sizzle.compile
      - * @param {Element} context
      - * @param {Array} [results]
      - * @param {Array} [seed] A set of elements to match against
      - */
      -select = Sizzle.select = function( selector, context, results, seed ) {
      -	var i, tokens, token, type, find,
      -		compiled = typeof selector === "function" && selector,
      -		match = !seed && tokenize( (selector = compiled.selector || selector) );
      -
      -	results = results || [];
      -
      -	// Try to minimize operations if there is only one selector in the list and no seed
      -	// (the latter of which guarantees us context)
      -	if ( match.length === 1 ) {
      -
      -		// Reduce context if the leading compound selector is an ID
      -		tokens = match[0] = match[0].slice( 0 );
      -		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
      -				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
      -
      -			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
      -			if ( !context ) {
      -				return results;
      -
      -			// Precompiled matchers will still verify ancestry, so step up a level
      -			} else if ( compiled ) {
      -				context = context.parentNode;
      -			}
      -
      -			selector = selector.slice( tokens.shift().value.length );
      -		}
      -
      -		// Fetch a seed set for right-to-left matching
      -		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
      -		while ( i-- ) {
      -			token = tokens[i];
      -
      -			// Abort if we hit a combinator
      -			if ( Expr.relative[ (type = token.type) ] ) {
      -				break;
      -			}
      -			if ( (find = Expr.find[ type ]) ) {
      -				// Search, expanding context for leading sibling combinators
      -				if ( (seed = find(
      -					token.matches[0].replace( runescape, funescape ),
      -					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
      -				)) ) {
      -
      -					// If seed is empty or no tokens remain, we can return early
      -					tokens.splice( i, 1 );
      -					selector = seed.length && toSelector( tokens );
      -					if ( !selector ) {
      -						push.apply( results, seed );
      -						return results;
      -					}
      -
      -					break;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Compile and execute a filtering function if one is not provided
      -	// Provide `match` to avoid retokenization if we modified the selector above
      -	( compiled || compile( selector, match ) )(
      -		seed,
      -		context,
      -		!documentIsHTML,
      -		results,
      -		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
      -	);
      -	return results;
      -};
      -
      -// One-time assignments
      -
      -// Sort stability
      -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
      -
      -// Support: Chrome 14-35+
      -// Always assume duplicates if they aren't passed to the comparison function
      -support.detectDuplicates = !!hasDuplicate;
      -
      -// Initialize against the default document
      -setDocument();
      -
      -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
      -// Detached nodes confoundingly follow *each other*
      -support.sortDetached = assert(function( el ) {
      -	// Should return 1, but returns 4 (following)
      -	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
      -});
      -
      -// Support: IE<8
      -// Prevent attribute/property "interpolation"
      -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
      -if ( !assert(function( el ) {
      -	el.innerHTML = "<a href='#'></a>";
      -	return el.firstChild.getAttribute("href") === "#" ;
      -}) ) {
      -	addHandle( "type|href|height|width", function( elem, name, isXML ) {
      -		if ( !isXML ) {
      -			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
      -		}
      -	});
      -}
      -
      -// Support: IE<9
      -// Use defaultValue in place of getAttribute("value")
      -if ( !support.attributes || !assert(function( el ) {
      -	el.innerHTML = "<input/>";
      -	el.firstChild.setAttribute( "value", "" );
      -	return el.firstChild.getAttribute( "value" ) === "";
      -}) ) {
      -	addHandle( "value", function( elem, name, isXML ) {
      -		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
      -			return elem.defaultValue;
      -		}
      -	});
      -}
      -
      -// Support: IE<9
      -// Use getAttributeNode to fetch booleans when getAttribute lies
      -if ( !assert(function( el ) {
      -	return el.getAttribute("disabled") == null;
      -}) ) {
      -	addHandle( booleans, function( elem, name, isXML ) {
      -		var val;
      -		if ( !isXML ) {
      -			return elem[ name ] === true ? name.toLowerCase() :
      -					(val = elem.getAttributeNode( name )) && val.specified ?
      -					val.value :
      -				null;
      -		}
      -	});
      -}
      -
      -return Sizzle;
      -
      -})( window );
      -
      -
      -
      -jQuery.find = Sizzle;
      -jQuery.expr = Sizzle.selectors;
      -
      -// Deprecated
      -jQuery.expr[ ":" ] = jQuery.expr.pseudos;
      -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
      -jQuery.text = Sizzle.getText;
      -jQuery.isXMLDoc = Sizzle.isXML;
      -jQuery.contains = Sizzle.contains;
      -jQuery.escapeSelector = Sizzle.escape;
      -
      -
      -
      -
      -var dir = function( elem, dir, until ) {
      -	var matched = [],
      -		truncate = until !== undefined;
      -
      -	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
      -		if ( elem.nodeType === 1 ) {
      -			if ( truncate && jQuery( elem ).is( until ) ) {
      -				break;
      -			}
      -			matched.push( elem );
      -		}
      -	}
      -	return matched;
      -};
      -
      -
      -var siblings = function( n, elem ) {
      -	var matched = [];
      -
      -	for ( ; n; n = n.nextSibling ) {
      -		if ( n.nodeType === 1 && n !== elem ) {
      -			matched.push( n );
      -		}
      -	}
      -
      -	return matched;
      -};
      -
      -
      -var rneedsContext = jQuery.expr.match.needsContext;
      -
      -var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
      -
      -
      -
      -var risSimple = /^.[^:#\[\.,]*$/;
      -
      -// Implement the identical functionality for filter and not
      -function winnow( elements, qualifier, not ) {
      -	if ( jQuery.isFunction( qualifier ) ) {
      -		return jQuery.grep( elements, function( elem, i ) {
      -			return !!qualifier.call( elem, i, elem ) !== not;
      -		} );
      -	}
      -
      -	// Single element
      -	if ( qualifier.nodeType ) {
      -		return jQuery.grep( elements, function( elem ) {
      -			return ( elem === qualifier ) !== not;
      -		} );
      -	}
      -
      -	// Arraylike of elements (jQuery, arguments, Array)
      -	if ( typeof qualifier !== "string" ) {
      -		return jQuery.grep( elements, function( elem ) {
      -			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
      -		} );
      -	}
      -
      -	// Simple selector that can be filtered directly, removing non-Elements
      -	if ( risSimple.test( qualifier ) ) {
      -		return jQuery.filter( qualifier, elements, not );
      -	}
      -
      -	// Complex selector, compare the two sets, removing non-Elements
      -	qualifier = jQuery.filter( qualifier, elements );
      -	return jQuery.grep( elements, function( elem ) {
      -		return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
      -	} );
      -}
      -
      -jQuery.filter = function( expr, elems, not ) {
      -	var elem = elems[ 0 ];
      -
      -	if ( not ) {
      -		expr = ":not(" + expr + ")";
      -	}
      -
      -	if ( elems.length === 1 && elem.nodeType === 1 ) {
      -		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
      -	}
      -
      -	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
      -		return elem.nodeType === 1;
      -	} ) );
      -};
      -
      -jQuery.fn.extend( {
      -	find: function( selector ) {
      -		var i, ret,
      -			len = this.length,
      -			self = this;
      -
      -		if ( typeof selector !== "string" ) {
      -			return this.pushStack( jQuery( selector ).filter( function() {
      -				for ( i = 0; i < len; i++ ) {
      -					if ( jQuery.contains( self[ i ], this ) ) {
      -						return true;
      -					}
      -				}
      -			} ) );
      -		}
      -
      -		ret = this.pushStack( [] );
      -
      -		for ( i = 0; i < len; i++ ) {
      -			jQuery.find( selector, self[ i ], ret );
      -		}
      -
      -		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
      -	},
      -	filter: function( selector ) {
      -		return this.pushStack( winnow( this, selector || [], false ) );
      -	},
      -	not: function( selector ) {
      -		return this.pushStack( winnow( this, selector || [], true ) );
      -	},
      -	is: function( selector ) {
      -		return !!winnow(
      -			this,
      -
      -			// If this is a positional/relative selector, check membership in the returned set
      -			// so $("p:first").is("p:last") won't return true for a doc with two "p".
      -			typeof selector === "string" && rneedsContext.test( selector ) ?
      -				jQuery( selector ) :
      -				selector || [],
      -			false
      -		).length;
      -	}
      -} );
      -
      -
      -// Initialize a jQuery object
      -
      -
      -// A central reference to the root jQuery(document)
      -var rootjQuery,
      -
      -	// A simple way to check for HTML strings
      -	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
      -	// Strict HTML recognition (#11290: must start with <)
      -	// Shortcut simple #id case for speed
      -	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
      -
      -	init = jQuery.fn.init = function( selector, context, root ) {
      -		var match, elem;
      -
      -		// HANDLE: $(""), $(null), $(undefined), $(false)
      -		if ( !selector ) {
      -			return this;
      -		}
      -
      -		// Method init() accepts an alternate rootjQuery
      -		// so migrate can support jQuery.sub (gh-2101)
      -		root = root || rootjQuery;
      -
      -		// Handle HTML strings
      -		if ( typeof selector === "string" ) {
      -			if ( selector[ 0 ] === "<" &&
      -				selector[ selector.length - 1 ] === ">" &&
      -				selector.length >= 3 ) {
      -
      -				// Assume that strings that start and end with <> are HTML and skip the regex check
      -				match = [ null, selector, null ];
      -
      -			} else {
      -				match = rquickExpr.exec( selector );
      -			}
      -
      -			// Match html or make sure no context is specified for #id
      -			if ( match && ( match[ 1 ] || !context ) ) {
      -
      -				// HANDLE: $(html) -> $(array)
      -				if ( match[ 1 ] ) {
      -					context = context instanceof jQuery ? context[ 0 ] : context;
      -
      -					// Option to run scripts is true for back-compat
      -					// Intentionally let the error be thrown if parseHTML is not present
      -					jQuery.merge( this, jQuery.parseHTML(
      -						match[ 1 ],
      -						context && context.nodeType ? context.ownerDocument || context : document,
      -						true
      -					) );
      -
      -					// HANDLE: $(html, props)
      -					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
      -						for ( match in context ) {
      -
      -							// Properties of context are called as methods if possible
      -							if ( jQuery.isFunction( this[ match ] ) ) {
      -								this[ match ]( context[ match ] );
      -
      -							// ...and otherwise set as attributes
      -							} else {
      -								this.attr( match, context[ match ] );
      -							}
      -						}
      -					}
      -
      -					return this;
      -
      -				// HANDLE: $(#id)
      -				} else {
      -					elem = document.getElementById( match[ 2 ] );
      -
      -					if ( elem ) {
      -
      -						// Inject the element directly into the jQuery object
      -						this[ 0 ] = elem;
      -						this.length = 1;
      -					}
      -					return this;
      -				}
      -
      -			// HANDLE: $(expr, $(...))
      -			} else if ( !context || context.jquery ) {
      -				return ( context || root ).find( selector );
      -
      -			// HANDLE: $(expr, context)
      -			// (which is just equivalent to: $(context).find(expr)
      -			} else {
      -				return this.constructor( context ).find( selector );
      -			}
      -
      -		// HANDLE: $(DOMElement)
      -		} else if ( selector.nodeType ) {
      -			this[ 0 ] = selector;
      -			this.length = 1;
      -			return this;
      -
      -		// HANDLE: $(function)
      -		// Shortcut for document ready
      -		} else if ( jQuery.isFunction( selector ) ) {
      -			return root.ready !== undefined ?
      -				root.ready( selector ) :
      -
      -				// Execute immediately if ready is not present
      -				selector( jQuery );
      -		}
      -
      -		return jQuery.makeArray( selector, this );
      -	};
      -
      -// Give the init function the jQuery prototype for later instantiation
      -init.prototype = jQuery.fn;
      -
      -// Initialize central reference
      -rootjQuery = jQuery( document );
      -
      -
      -var rparentsprev = /^(?:parents|prev(?:Until|All))/,
      -
      -	// Methods guaranteed to produce a unique set when starting from a unique set
      -	guaranteedUnique = {
      -		children: true,
      -		contents: true,
      -		next: true,
      -		prev: true
      -	};
      -
      -jQuery.fn.extend( {
      -	has: function( target ) {
      -		var targets = jQuery( target, this ),
      -			l = targets.length;
      -
      -		return this.filter( function() {
      -			var i = 0;
      -			for ( ; i < l; i++ ) {
      -				if ( jQuery.contains( this, targets[ i ] ) ) {
      -					return true;
      -				}
      -			}
      -		} );
      -	},
      -
      -	closest: function( selectors, context ) {
      -		var cur,
      -			i = 0,
      -			l = this.length,
      -			matched = [],
      -			targets = typeof selectors !== "string" && jQuery( selectors );
      -
      -		// Positional selectors never match, since there's no _selection_ context
      -		if ( !rneedsContext.test( selectors ) ) {
      -			for ( ; i < l; i++ ) {
      -				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
      -
      -					// Always skip document fragments
      -					if ( cur.nodeType < 11 && ( targets ?
      -						targets.index( cur ) > -1 :
      -
      -						// Don't pass non-elements to Sizzle
      -						cur.nodeType === 1 &&
      -							jQuery.find.matchesSelector( cur, selectors ) ) ) {
      -
      -						matched.push( cur );
      -						break;
      -					}
      -				}
      -			}
      -		}
      -
      -		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
      -	},
      -
      -	// Determine the position of an element within the set
      -	index: function( elem ) {
      -
      -		// No argument, return index in parent
      -		if ( !elem ) {
      -			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
      -		}
      -
      -		// Index in selector
      -		if ( typeof elem === "string" ) {
      -			return indexOf.call( jQuery( elem ), this[ 0 ] );
      -		}
      -
      -		// Locate the position of the desired element
      -		return indexOf.call( this,
      -
      -			// If it receives a jQuery object, the first element is used
      -			elem.jquery ? elem[ 0 ] : elem
      -		);
      -	},
      -
      -	add: function( selector, context ) {
      -		return this.pushStack(
      -			jQuery.uniqueSort(
      -				jQuery.merge( this.get(), jQuery( selector, context ) )
      -			)
      -		);
      -	},
      -
      -	addBack: function( selector ) {
      -		return this.add( selector == null ?
      -			this.prevObject : this.prevObject.filter( selector )
      -		);
      -	}
      -} );
      -
      -function sibling( cur, dir ) {
      -	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
      -	return cur;
      -}
      -
      -jQuery.each( {
      -	parent: function( elem ) {
      -		var parent = elem.parentNode;
      -		return parent && parent.nodeType !== 11 ? parent : null;
      -	},
      -	parents: function( elem ) {
      -		return dir( elem, "parentNode" );
      -	},
      -	parentsUntil: function( elem, i, until ) {
      -		return dir( elem, "parentNode", until );
      -	},
      -	next: function( elem ) {
      -		return sibling( elem, "nextSibling" );
      -	},
      -	prev: function( elem ) {
      -		return sibling( elem, "previousSibling" );
      -	},
      -	nextAll: function( elem ) {
      -		return dir( elem, "nextSibling" );
      -	},
      -	prevAll: function( elem ) {
      -		return dir( elem, "previousSibling" );
      -	},
      -	nextUntil: function( elem, i, until ) {
      -		return dir( elem, "nextSibling", until );
      -	},
      -	prevUntil: function( elem, i, until ) {
      -		return dir( elem, "previousSibling", until );
      -	},
      -	siblings: function( elem ) {
      -		return siblings( ( elem.parentNode || {} ).firstChild, elem );
      -	},
      -	children: function( elem ) {
      -		return siblings( elem.firstChild );
      -	},
      -	contents: function( elem ) {
      -		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
      -	}
      -}, function( name, fn ) {
      -	jQuery.fn[ name ] = function( until, selector ) {
      -		var matched = jQuery.map( this, fn, until );
      -
      -		if ( name.slice( -5 ) !== "Until" ) {
      -			selector = until;
      -		}
      -
      -		if ( selector && typeof selector === "string" ) {
      -			matched = jQuery.filter( selector, matched );
      -		}
      -
      -		if ( this.length > 1 ) {
      -
      -			// Remove duplicates
      -			if ( !guaranteedUnique[ name ] ) {
      -				jQuery.uniqueSort( matched );
      -			}
      -
      -			// Reverse order for parents* and prev-derivatives
      -			if ( rparentsprev.test( name ) ) {
      -				matched.reverse();
      -			}
      -		}
      -
      -		return this.pushStack( matched );
      -	};
      -} );
      -var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
      -
      -
      -
      -// Convert String-formatted options into Object-formatted ones
      -function createOptions( options ) {
      -	var object = {};
      -	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
      -		object[ flag ] = true;
      -	} );
      -	return object;
      -}
      -
      -/*
      - * Create a callback list using the following parameters:
      - *
      - *	options: an optional list of space-separated options that will change how
      - *			the callback list behaves or a more traditional option object
      - *
      - * By default a callback list will act like an event callback list and can be
      - * "fired" multiple times.
      - *
      - * Possible options:
      - *
      - *	once:			will ensure the callback list can only be fired once (like a Deferred)
      - *
      - *	memory:			will keep track of previous values and will call any callback added
      - *					after the list has been fired right away with the latest "memorized"
      - *					values (like a Deferred)
      - *
      - *	unique:			will ensure a callback can only be added once (no duplicate in the list)
      - *
      - *	stopOnFalse:	interrupt callings when a callback returns false
      - *
      - */
      -jQuery.Callbacks = function( options ) {
      -
      -	// Convert options from String-formatted to Object-formatted if needed
      -	// (we check in cache first)
      -	options = typeof options === "string" ?
      -		createOptions( options ) :
      -		jQuery.extend( {}, options );
      -
      -	var // Flag to know if list is currently firing
      -		firing,
      -
      -		// Last fire value for non-forgettable lists
      -		memory,
      -
      -		// Flag to know if list was already fired
      -		fired,
      -
      -		// Flag to prevent firing
      -		locked,
      -
      -		// Actual callback list
      -		list = [],
      -
      -		// Queue of execution data for repeatable lists
      -		queue = [],
      -
      -		// Index of currently firing callback (modified by add/remove as needed)
      -		firingIndex = -1,
      -
      -		// Fire callbacks
      -		fire = function() {
      -
      -			// Enforce single-firing
      -			locked = options.once;
      -
      -			// Execute callbacks for all pending executions,
      -			// respecting firingIndex overrides and runtime changes
      -			fired = firing = true;
      -			for ( ; queue.length; firingIndex = -1 ) {
      -				memory = queue.shift();
      -				while ( ++firingIndex < list.length ) {
      -
      -					// Run callback and check for early termination
      -					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
      -						options.stopOnFalse ) {
      -
      -						// Jump to end and forget the data so .add doesn't re-fire
      -						firingIndex = list.length;
      -						memory = false;
      -					}
      -				}
      -			}
      -
      -			// Forget the data if we're done with it
      -			if ( !options.memory ) {
      -				memory = false;
      -			}
      -
      -			firing = false;
      -
      -			// Clean up if we're done firing for good
      -			if ( locked ) {
      -
      -				// Keep an empty list if we have data for future add calls
      -				if ( memory ) {
      -					list = [];
      -
      -				// Otherwise, this object is spent
      -				} else {
      -					list = "";
      -				}
      -			}
      -		},
      -
      -		// Actual Callbacks object
      -		self = {
      -
      -			// Add a callback or a collection of callbacks to the list
      -			add: function() {
      -				if ( list ) {
      -
      -					// If we have memory from a past run, we should fire after adding
      -					if ( memory && !firing ) {
      -						firingIndex = list.length - 1;
      -						queue.push( memory );
      -					}
      -
      -					( function add( args ) {
      -						jQuery.each( args, function( _, arg ) {
      -							if ( jQuery.isFunction( arg ) ) {
      -								if ( !options.unique || !self.has( arg ) ) {
      -									list.push( arg );
      -								}
      -							} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
      -
      -								// Inspect recursively
      -								add( arg );
      -							}
      -						} );
      -					} )( arguments );
      -
      -					if ( memory && !firing ) {
      -						fire();
      -					}
      -				}
      -				return this;
      -			},
      -
      -			// Remove a callback from the list
      -			remove: function() {
      -				jQuery.each( arguments, function( _, arg ) {
      -					var index;
      -					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
      -						list.splice( index, 1 );
      -
      -						// Handle firing indexes
      -						if ( index <= firingIndex ) {
      -							firingIndex--;
      -						}
      -					}
      -				} );
      -				return this;
      -			},
      -
      -			// Check if a given callback is in the list.
      -			// If no argument is given, return whether or not list has callbacks attached.
      -			has: function( fn ) {
      -				return fn ?
      -					jQuery.inArray( fn, list ) > -1 :
      -					list.length > 0;
      -			},
      -
      -			// Remove all callbacks from the list
      -			empty: function() {
      -				if ( list ) {
      -					list = [];
      -				}
      -				return this;
      -			},
      -
      -			// Disable .fire and .add
      -			// Abort any current/pending executions
      -			// Clear all callbacks and values
      -			disable: function() {
      -				locked = queue = [];
      -				list = memory = "";
      -				return this;
      -			},
      -			disabled: function() {
      -				return !list;
      -			},
      -
      -			// Disable .fire
      -			// Also disable .add unless we have memory (since it would have no effect)
      -			// Abort any pending executions
      -			lock: function() {
      -				locked = queue = [];
      -				if ( !memory && !firing ) {
      -					list = memory = "";
      -				}
      -				return this;
      -			},
      -			locked: function() {
      -				return !!locked;
      -			},
      -
      -			// Call all callbacks with the given context and arguments
      -			fireWith: function( context, args ) {
      -				if ( !locked ) {
      -					args = args || [];
      -					args = [ context, args.slice ? args.slice() : args ];
      -					queue.push( args );
      -					if ( !firing ) {
      -						fire();
      -					}
      -				}
      -				return this;
      -			},
      -
      -			// Call all the callbacks with the given arguments
      -			fire: function() {
      -				self.fireWith( this, arguments );
      -				return this;
      -			},
      -
      -			// To know if the callbacks have already been called at least once
      -			fired: function() {
      -				return !!fired;
      -			}
      -		};
      -
      -	return self;
      -};
      -
      -
      -function Identity( v ) {
      -	return v;
      -}
      -function Thrower( ex ) {
      -	throw ex;
      -}
      -
      -function adoptValue( value, resolve, reject ) {
      -	var method;
      -
      -	try {
      -
      -		// Check for promise aspect first to privilege synchronous behavior
      -		if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
      -			method.call( value ).done( resolve ).fail( reject );
      -
      -		// Other thenables
      -		} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
      -			method.call( value, resolve, reject );
      -
      -		// Other non-thenables
      -		} else {
      -
      -			// Support: Android 4.0 only
      -			// Strict mode functions invoked without .call/.apply get global-object context
      -			resolve.call( undefined, value );
      -		}
      -
      -	// For Promises/A+, convert exceptions into rejections
      -	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
      -	// Deferred#then to conditionally suppress rejection.
      -	} catch ( value ) {
      -
      -		// Support: Android 4.0 only
      -		// Strict mode functions invoked without .call/.apply get global-object context
      -		reject.call( undefined, value );
      -	}
      -}
      -
      -jQuery.extend( {
      -
      -	Deferred: function( func ) {
      -		var tuples = [
      -
      -				// action, add listener, callbacks,
      -				// ... .then handlers, argument index, [final state]
      -				[ "notify", "progress", jQuery.Callbacks( "memory" ),
      -					jQuery.Callbacks( "memory" ), 2 ],
      -				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
      -					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
      -				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
      -					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
      -			],
      -			state = "pending",
      -			promise = {
      -				state: function() {
      -					return state;
      -				},
      -				always: function() {
      -					deferred.done( arguments ).fail( arguments );
      -					return this;
      -				},
      -				"catch": function( fn ) {
      -					return promise.then( null, fn );
      -				},
      -
      -				// Keep pipe for back-compat
      -				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
      -					var fns = arguments;
      -
      -					return jQuery.Deferred( function( newDefer ) {
      -						jQuery.each( tuples, function( i, tuple ) {
      -
      -							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
      -							var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
      -
      -							// deferred.progress(function() { bind to newDefer or newDefer.notify })
      -							// deferred.done(function() { bind to newDefer or newDefer.resolve })
      -							// deferred.fail(function() { bind to newDefer or newDefer.reject })
      -							deferred[ tuple[ 1 ] ]( function() {
      -								var returned = fn && fn.apply( this, arguments );
      -								if ( returned && jQuery.isFunction( returned.promise ) ) {
      -									returned.promise()
      -										.progress( newDefer.notify )
      -										.done( newDefer.resolve )
      -										.fail( newDefer.reject );
      -								} else {
      -									newDefer[ tuple[ 0 ] + "With" ](
      -										this,
      -										fn ? [ returned ] : arguments
      -									);
      -								}
      -							} );
      -						} );
      -						fns = null;
      -					} ).promise();
      -				},
      -				then: function( onFulfilled, onRejected, onProgress ) {
      -					var maxDepth = 0;
      -					function resolve( depth, deferred, handler, special ) {
      -						return function() {
      -							var that = this,
      -								args = arguments,
      -								mightThrow = function() {
      -									var returned, then;
      -
      -									// Support: Promises/A+ section 2.3.3.3.3
      -									// https://promisesaplus.com/#point-59
      -									// Ignore double-resolution attempts
      -									if ( depth < maxDepth ) {
      -										return;
      -									}
      -
      -									returned = handler.apply( that, args );
      -
      -									// Support: Promises/A+ section 2.3.1
      -									// https://promisesaplus.com/#point-48
      -									if ( returned === deferred.promise() ) {
      -										throw new TypeError( "Thenable self-resolution" );
      -									}
      -
      -									// Support: Promises/A+ sections 2.3.3.1, 3.5
      -									// https://promisesaplus.com/#point-54
      -									// https://promisesaplus.com/#point-75
      -									// Retrieve `then` only once
      -									then = returned &&
      -
      -										// Support: Promises/A+ section 2.3.4
      -										// https://promisesaplus.com/#point-64
      -										// Only check objects and functions for thenability
      -										( typeof returned === "object" ||
      -											typeof returned === "function" ) &&
      -										returned.then;
      -
      -									// Handle a returned thenable
      -									if ( jQuery.isFunction( then ) ) {
      -
      -										// Special processors (notify) just wait for resolution
      -										if ( special ) {
      -											then.call(
      -												returned,
      -												resolve( maxDepth, deferred, Identity, special ),
      -												resolve( maxDepth, deferred, Thrower, special )
      -											);
      -
      -										// Normal processors (resolve) also hook into progress
      -										} else {
      -
      -											// ...and disregard older resolution values
      -											maxDepth++;
      -
      -											then.call(
      -												returned,
      -												resolve( maxDepth, deferred, Identity, special ),
      -												resolve( maxDepth, deferred, Thrower, special ),
      -												resolve( maxDepth, deferred, Identity,
      -													deferred.notifyWith )
      -											);
      -										}
      -
      -									// Handle all other returned values
      -									} else {
      -
      -										// Only substitute handlers pass on context
      -										// and multiple values (non-spec behavior)
      -										if ( handler !== Identity ) {
      -											that = undefined;
      -											args = [ returned ];
      -										}
      -
      -										// Process the value(s)
      -										// Default process is resolve
      -										( special || deferred.resolveWith )( that, args );
      -									}
      -								},
      -
      -								// Only normal processors (resolve) catch and reject exceptions
      -								process = special ?
      -									mightThrow :
      -									function() {
      -										try {
      -											mightThrow();
      -										} catch ( e ) {
      -
      -											if ( jQuery.Deferred.exceptionHook ) {
      -												jQuery.Deferred.exceptionHook( e,
      -													process.stackTrace );
      -											}
      -
      -											// Support: Promises/A+ section 2.3.3.3.4.1
      -											// https://promisesaplus.com/#point-61
      -											// Ignore post-resolution exceptions
      -											if ( depth + 1 >= maxDepth ) {
      -
      -												// Only substitute handlers pass on context
      -												// and multiple values (non-spec behavior)
      -												if ( handler !== Thrower ) {
      -													that = undefined;
      -													args = [ e ];
      -												}
      -
      -												deferred.rejectWith( that, args );
      -											}
      -										}
      -									};
      -
      -							// Support: Promises/A+ section 2.3.3.3.1
      -							// https://promisesaplus.com/#point-57
      -							// Re-resolve promises immediately to dodge false rejection from
      -							// subsequent errors
      -							if ( depth ) {
      -								process();
      -							} else {
      -
      -								// Call an optional hook to record the stack, in case of exception
      -								// since it's otherwise lost when execution goes async
      -								if ( jQuery.Deferred.getStackHook ) {
      -									process.stackTrace = jQuery.Deferred.getStackHook();
      -								}
      -								window.setTimeout( process );
      -							}
      -						};
      -					}
      -
      -					return jQuery.Deferred( function( newDefer ) {
      -
      -						// progress_handlers.add( ... )
      -						tuples[ 0 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onProgress ) ?
      -									onProgress :
      -									Identity,
      -								newDefer.notifyWith
      -							)
      -						);
      -
      -						// fulfilled_handlers.add( ... )
      -						tuples[ 1 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onFulfilled ) ?
      -									onFulfilled :
      -									Identity
      -							)
      -						);
      -
      -						// rejected_handlers.add( ... )
      -						tuples[ 2 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onRejected ) ?
      -									onRejected :
      -									Thrower
      -							)
      -						);
      -					} ).promise();
      -				},
      -
      -				// Get a promise for this deferred
      -				// If obj is provided, the promise aspect is added to the object
      -				promise: function( obj ) {
      -					return obj != null ? jQuery.extend( obj, promise ) : promise;
      -				}
      -			},
      -			deferred = {};
      -
      -		// Add list-specific methods
      -		jQuery.each( tuples, function( i, tuple ) {
      -			var list = tuple[ 2 ],
      -				stateString = tuple[ 5 ];
      -
      -			// promise.progress = list.add
      -			// promise.done = list.add
      -			// promise.fail = list.add
      -			promise[ tuple[ 1 ] ] = list.add;
      -
      -			// Handle state
      -			if ( stateString ) {
      -				list.add(
      -					function() {
      -
      -						// state = "resolved" (i.e., fulfilled)
      -						// state = "rejected"
      -						state = stateString;
      -					},
      -
      -					// rejected_callbacks.disable
      -					// fulfilled_callbacks.disable
      -					tuples[ 3 - i ][ 2 ].disable,
      -
      -					// progress_callbacks.lock
      -					tuples[ 0 ][ 2 ].lock
      -				);
      -			}
      -
      -			// progress_handlers.fire
      -			// fulfilled_handlers.fire
      -			// rejected_handlers.fire
      -			list.add( tuple[ 3 ].fire );
      -
      -			// deferred.notify = function() { deferred.notifyWith(...) }
      -			// deferred.resolve = function() { deferred.resolveWith(...) }
      -			// deferred.reject = function() { deferred.rejectWith(...) }
      -			deferred[ tuple[ 0 ] ] = function() {
      -				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
      -				return this;
      -			};
      -
      -			// deferred.notifyWith = list.fireWith
      -			// deferred.resolveWith = list.fireWith
      -			// deferred.rejectWith = list.fireWith
      -			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
      -		} );
      -
      -		// Make the deferred a promise
      -		promise.promise( deferred );
      -
      -		// Call given func if any
      -		if ( func ) {
      -			func.call( deferred, deferred );
      -		}
      -
      -		// All done!
      -		return deferred;
      -	},
      -
      -	// Deferred helper
      -	when: function( singleValue ) {
      -		var
      -
      -			// count of uncompleted subordinates
      -			remaining = arguments.length,
      -
      -			// count of unprocessed arguments
      -			i = remaining,
      -
      -			// subordinate fulfillment data
      -			resolveContexts = Array( i ),
      -			resolveValues = slice.call( arguments ),
      -
      -			// the master Deferred
      -			master = jQuery.Deferred(),
      -
      -			// subordinate callback factory
      -			updateFunc = function( i ) {
      -				return function( value ) {
      -					resolveContexts[ i ] = this;
      -					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
      -					if ( !( --remaining ) ) {
      -						master.resolveWith( resolveContexts, resolveValues );
      -					}
      -				};
      -			};
      -
      -		// Single- and empty arguments are adopted like Promise.resolve
      -		if ( remaining <= 1 ) {
      -			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
      -
      -			// Use .then() to unwrap secondary thenables (cf. gh-3000)
      -			if ( master.state() === "pending" ||
      -				jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
      -
      -				return master.then();
      -			}
      -		}
      -
      -		// Multiple arguments are aggregated like Promise.all array elements
      -		while ( i-- ) {
      -			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
      -		}
      -
      -		return master.promise();
      -	}
      -} );
      -
      -
      -// These usually indicate a programmer mistake during development,
      -// warn about them ASAP rather than swallowing them by default.
      -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
      -
      -jQuery.Deferred.exceptionHook = function( error, stack ) {
      -
      -	// Support: IE 8 - 9 only
      -	// Console exists when dev tools are open, which can happen at any time
      -	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
      -		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
      -	}
      -};
      -
      -
      -
      -
      -jQuery.readyException = function( error ) {
      -	window.setTimeout( function() {
      -		throw error;
      -	} );
      -};
      -
      -
      -
      -
      -// The deferred used on DOM ready
      -var readyList = jQuery.Deferred();
      -
      -jQuery.fn.ready = function( fn ) {
      -
      -	readyList
      -		.then( fn )
      -
      -		// Wrap jQuery.readyException in a function so that the lookup
      -		// happens at the time of error handling instead of callback
      -		// registration.
      -		.catch( function( error ) {
      -			jQuery.readyException( error );
      -		} );
      -
      -	return this;
      -};
      -
      -jQuery.extend( {
      -
      -	// Is the DOM ready to be used? Set to true once it occurs.
      -	isReady: false,
      -
      -	// A counter to track how many items to wait for before
      -	// the ready event fires. See #6781
      -	readyWait: 1,
      -
      -	// Hold (or release) the ready event
      -	holdReady: function( hold ) {
      -		if ( hold ) {
      -			jQuery.readyWait++;
      -		} else {
      -			jQuery.ready( true );
      -		}
      -	},
      -
      -	// Handle when the DOM is ready
      -	ready: function( wait ) {
      -
      -		// Abort if there are pending holds or we're already ready
      -		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
      -			return;
      -		}
      -
      -		// Remember that the DOM is ready
      -		jQuery.isReady = true;
      -
      -		// If a normal DOM Ready event fired, decrement, and wait if need be
      -		if ( wait !== true && --jQuery.readyWait > 0 ) {
      -			return;
      -		}
      -
      -		// If there are functions bound, to execute
      -		readyList.resolveWith( document, [ jQuery ] );
      -	}
      -} );
      -
      -jQuery.ready.then = readyList.then;
      -
      -// The ready event handler and self cleanup method
      -function completed() {
      -	document.removeEventListener( "DOMContentLoaded", completed );
      -	window.removeEventListener( "load", completed );
      -	jQuery.ready();
      -}
      -
      -// Catch cases where $(document).ready() is called
      -// after the browser event has already occurred.
      -// Support: IE <=9 - 10 only
      -// Older IE sometimes signals "interactive" too soon
      -if ( document.readyState === "complete" ||
      -	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
      -
      -	// Handle it asynchronously to allow scripts the opportunity to delay ready
      -	window.setTimeout( jQuery.ready );
      -
      -} else {
      -
      -	// Use the handy event callback
      -	document.addEventListener( "DOMContentLoaded", completed );
      -
      -	// A fallback to window.onload, that will always work
      -	window.addEventListener( "load", completed );
      -}
      -
      -
      -
      -
      -// Multifunctional method to get and set values of a collection
      -// The value/s can optionally be executed if it's a function
      -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
      -	var i = 0,
      -		len = elems.length,
      -		bulk = key == null;
      -
      -	// Sets many values
      -	if ( jQuery.type( key ) === "object" ) {
      -		chainable = true;
      -		for ( i in key ) {
      -			access( elems, fn, i, key[ i ], true, emptyGet, raw );
      -		}
      -
      -	// Sets one value
      -	} else if ( value !== undefined ) {
      -		chainable = true;
      -
      -		if ( !jQuery.isFunction( value ) ) {
      -			raw = true;
      -		}
      -
      -		if ( bulk ) {
      -
      -			// Bulk operations run against the entire set
      -			if ( raw ) {
      -				fn.call( elems, value );
      -				fn = null;
      -
      -			// ...except when executing function values
      -			} else {
      -				bulk = fn;
      -				fn = function( elem, key, value ) {
      -					return bulk.call( jQuery( elem ), value );
      -				};
      -			}
      -		}
      -
      -		if ( fn ) {
      -			for ( ; i < len; i++ ) {
      -				fn(
      -					elems[ i ], key, raw ?
      -					value :
      -					value.call( elems[ i ], i, fn( elems[ i ], key ) )
      -				);
      -			}
      -		}
      -	}
      -
      -	if ( chainable ) {
      -		return elems;
      -	}
      -
      -	// Gets
      -	if ( bulk ) {
      -		return fn.call( elems );
      -	}
      -
      -	return len ? fn( elems[ 0 ], key ) : emptyGet;
      -};
      -var acceptData = function( owner ) {
      -
      -	// Accepts only:
      -	//  - Node
      -	//    - Node.ELEMENT_NODE
      -	//    - Node.DOCUMENT_NODE
      -	//  - Object
      -	//    - Any
      -	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
      -};
      -
      -
      -
      -
      -function Data() {
      -	this.expando = jQuery.expando + Data.uid++;
      -}
      -
      -Data.uid = 1;
      -
      -Data.prototype = {
      -
      -	cache: function( owner ) {
      -
      -		// Check if the owner object already has a cache
      -		var value = owner[ this.expando ];
      -
      -		// If not, create one
      -		if ( !value ) {
      -			value = {};
      -
      -			// We can accept data for non-element nodes in modern browsers,
      -			// but we should not, see #8335.
      -			// Always return an empty object.
      -			if ( acceptData( owner ) ) {
      -
      -				// If it is a node unlikely to be stringify-ed or looped over
      -				// use plain assignment
      -				if ( owner.nodeType ) {
      -					owner[ this.expando ] = value;
      -
      -				// Otherwise secure it in a non-enumerable property
      -				// configurable must be true to allow the property to be
      -				// deleted when data is removed
      -				} else {
      -					Object.defineProperty( owner, this.expando, {
      -						value: value,
      -						configurable: true
      -					} );
      -				}
      -			}
      -		}
      -
      -		return value;
      -	},
      -	set: function( owner, data, value ) {
      -		var prop,
      -			cache = this.cache( owner );
      -
      -		// Handle: [ owner, key, value ] args
      -		// Always use camelCase key (gh-2257)
      -		if ( typeof data === "string" ) {
      -			cache[ jQuery.camelCase( data ) ] = value;
      -
      -		// Handle: [ owner, { properties } ] args
      -		} else {
      -
      -			// Copy the properties one-by-one to the cache object
      -			for ( prop in data ) {
      -				cache[ jQuery.camelCase( prop ) ] = data[ prop ];
      -			}
      -		}
      -		return cache;
      -	},
      -	get: function( owner, key ) {
      -		return key === undefined ?
      -			this.cache( owner ) :
      -
      -			// Always use camelCase key (gh-2257)
      -			owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
      -	},
      -	access: function( owner, key, value ) {
      -
      -		// In cases where either:
      -		//
      -		//   1. No key was specified
      -		//   2. A string key was specified, but no value provided
      -		//
      -		// Take the "read" path and allow the get method to determine
      -		// which value to return, respectively either:
      -		//
      -		//   1. The entire cache object
      -		//   2. The data stored at the key
      -		//
      -		if ( key === undefined ||
      -				( ( key && typeof key === "string" ) && value === undefined ) ) {
      -
      -			return this.get( owner, key );
      -		}
      -
      -		// When the key is not a string, or both a key and value
      -		// are specified, set or extend (existing objects) with either:
      -		//
      -		//   1. An object of properties
      -		//   2. A key and value
      -		//
      -		this.set( owner, key, value );
      -
      -		// Since the "set" path can have two possible entry points
      -		// return the expected data based on which path was taken[*]
      -		return value !== undefined ? value : key;
      -	},
      -	remove: function( owner, key ) {
      -		var i,
      -			cache = owner[ this.expando ];
      -
      -		if ( cache === undefined ) {
      -			return;
      -		}
      -
      -		if ( key !== undefined ) {
      -
      -			// Support array or space separated string of keys
      -			if ( jQuery.isArray( key ) ) {
      -
      -				// If key is an array of keys...
      -				// We always set camelCase keys, so remove that.
      -				key = key.map( jQuery.camelCase );
      -			} else {
      -				key = jQuery.camelCase( key );
      -
      -				// If a key with the spaces exists, use it.
      -				// Otherwise, create an array by matching non-whitespace
      -				key = key in cache ?
      -					[ key ] :
      -					( key.match( rnothtmlwhite ) || [] );
      -			}
      -
      -			i = key.length;
      -
      -			while ( i-- ) {
      -				delete cache[ key[ i ] ];
      -			}
      -		}
      -
      -		// Remove the expando if there's no more data
      -		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
      -
      -			// Support: Chrome <=35 - 45
      -			// Webkit & Blink performance suffers when deleting properties
      -			// from DOM nodes, so set to undefined instead
      -			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
      -			if ( owner.nodeType ) {
      -				owner[ this.expando ] = undefined;
      -			} else {
      -				delete owner[ this.expando ];
      -			}
      -		}
      -	},
      -	hasData: function( owner ) {
      -		var cache = owner[ this.expando ];
      -		return cache !== undefined && !jQuery.isEmptyObject( cache );
      -	}
      -};
      -var dataPriv = new Data();
      -
      -var dataUser = new Data();
      -
      -
      -
      -//	Implementation Summary
      -//
      -//	1. Enforce API surface and semantic compatibility with 1.9.x branch
      -//	2. Improve the module's maintainability by reducing the storage
      -//		paths to a single mechanism.
      -//	3. Use the same single mechanism to support "private" and "user" data.
      -//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
      -//	5. Avoid exposing implementation details on user objects (eg. expando properties)
      -//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
      -
      -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
      -	rmultiDash = /[A-Z]/g;
      -
      -function getData( data ) {
      -	if ( data === "true" ) {
      -		return true;
      -	}
      -
      -	if ( data === "false" ) {
      -		return false;
      -	}
      -
      -	if ( data === "null" ) {
      -		return null;
      -	}
      -
      -	// Only convert to a number if it doesn't change the string
      -	if ( data === +data + "" ) {
      -		return +data;
      -	}
      -
      -	if ( rbrace.test( data ) ) {
      -		return JSON.parse( data );
      -	}
      -
      -	return data;
      -}
      -
      -function dataAttr( elem, key, data ) {
      -	var name;
      -
      -	// If nothing was found internally, try to fetch any
      -	// data from the HTML5 data-* attribute
      -	if ( data === undefined && elem.nodeType === 1 ) {
      -		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
      -		data = elem.getAttribute( name );
      -
      -		if ( typeof data === "string" ) {
      -			try {
      -				data = getData( data );
      -			} catch ( e ) {}
      -
      -			// Make sure we set the data so it isn't changed later
      -			dataUser.set( elem, key, data );
      -		} else {
      -			data = undefined;
      -		}
      -	}
      -	return data;
      -}
      -
      -jQuery.extend( {
      -	hasData: function( elem ) {
      -		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
      -	},
      -
      -	data: function( elem, name, data ) {
      -		return dataUser.access( elem, name, data );
      -	},
      -
      -	removeData: function( elem, name ) {
      -		dataUser.remove( elem, name );
      -	},
      -
      -	// TODO: Now that all calls to _data and _removeData have been replaced
      -	// with direct calls to dataPriv methods, these can be deprecated.
      -	_data: function( elem, name, data ) {
      -		return dataPriv.access( elem, name, data );
      -	},
      -
      -	_removeData: function( elem, name ) {
      -		dataPriv.remove( elem, name );
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	data: function( key, value ) {
      -		var i, name, data,
      -			elem = this[ 0 ],
      -			attrs = elem && elem.attributes;
      -
      -		// Gets all values
      -		if ( key === undefined ) {
      -			if ( this.length ) {
      -				data = dataUser.get( elem );
      -
      -				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
      -					i = attrs.length;
      -					while ( i-- ) {
      -
      -						// Support: IE 11 only
      -						// The attrs elements can be null (#14894)
      -						if ( attrs[ i ] ) {
      -							name = attrs[ i ].name;
      -							if ( name.indexOf( "data-" ) === 0 ) {
      -								name = jQuery.camelCase( name.slice( 5 ) );
      -								dataAttr( elem, name, data[ name ] );
      -							}
      -						}
      -					}
      -					dataPriv.set( elem, "hasDataAttrs", true );
      -				}
      -			}
      -
      -			return data;
      -		}
      -
      -		// Sets multiple values
      -		if ( typeof key === "object" ) {
      -			return this.each( function() {
      -				dataUser.set( this, key );
      -			} );
      -		}
      -
      -		return access( this, function( value ) {
      -			var data;
      -
      -			// The calling jQuery object (element matches) is not empty
      -			// (and therefore has an element appears at this[ 0 ]) and the
      -			// `value` parameter was not undefined. An empty jQuery object
      -			// will result in `undefined` for elem = this[ 0 ] which will
      -			// throw an exception if an attempt to read a data cache is made.
      -			if ( elem && value === undefined ) {
      -
      -				// Attempt to get data from the cache
      -				// The key will always be camelCased in Data
      -				data = dataUser.get( elem, key );
      -				if ( data !== undefined ) {
      -					return data;
      -				}
      -
      -				// Attempt to "discover" the data in
      -				// HTML5 custom data-* attrs
      -				data = dataAttr( elem, key );
      -				if ( data !== undefined ) {
      -					return data;
      -				}
      -
      -				// We tried really hard, but the data doesn't exist.
      -				return;
      -			}
      -
      -			// Set the data...
      -			this.each( function() {
      -
      -				// We always store the camelCased key
      -				dataUser.set( this, key, value );
      -			} );
      -		}, null, value, arguments.length > 1, null, true );
      -	},
      -
      -	removeData: function( key ) {
      -		return this.each( function() {
      -			dataUser.remove( this, key );
      -		} );
      -	}
      -} );
      -
      -
      -jQuery.extend( {
      -	queue: function( elem, type, data ) {
      -		var queue;
      -
      -		if ( elem ) {
      -			type = ( type || "fx" ) + "queue";
      -			queue = dataPriv.get( elem, type );
      -
      -			// Speed up dequeue by getting out quickly if this is just a lookup
      -			if ( data ) {
      -				if ( !queue || jQuery.isArray( data ) ) {
      -					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
      -				} else {
      -					queue.push( data );
      -				}
      -			}
      -			return queue || [];
      -		}
      -	},
      -
      -	dequeue: function( elem, type ) {
      -		type = type || "fx";
      -
      -		var queue = jQuery.queue( elem, type ),
      -			startLength = queue.length,
      -			fn = queue.shift(),
      -			hooks = jQuery._queueHooks( elem, type ),
      -			next = function() {
      -				jQuery.dequeue( elem, type );
      -			};
      -
      -		// If the fx queue is dequeued, always remove the progress sentinel
      -		if ( fn === "inprogress" ) {
      -			fn = queue.shift();
      -			startLength--;
      -		}
      -
      -		if ( fn ) {
      -
      -			// Add a progress sentinel to prevent the fx queue from being
      -			// automatically dequeued
      -			if ( type === "fx" ) {
      -				queue.unshift( "inprogress" );
      -			}
      -
      -			// Clear up the last queue stop function
      -			delete hooks.stop;
      -			fn.call( elem, next, hooks );
      -		}
      -
      -		if ( !startLength && hooks ) {
      -			hooks.empty.fire();
      -		}
      -	},
      -
      -	// Not public - generate a queueHooks object, or return the current one
      -	_queueHooks: function( elem, type ) {
      -		var key = type + "queueHooks";
      -		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
      -			empty: jQuery.Callbacks( "once memory" ).add( function() {
      -				dataPriv.remove( elem, [ type + "queue", key ] );
      -			} )
      -		} );
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	queue: function( type, data ) {
      -		var setter = 2;
      -
      -		if ( typeof type !== "string" ) {
      -			data = type;
      -			type = "fx";
      -			setter--;
      -		}
      -
      -		if ( arguments.length < setter ) {
      -			return jQuery.queue( this[ 0 ], type );
      -		}
      -
      -		return data === undefined ?
      -			this :
      -			this.each( function() {
      -				var queue = jQuery.queue( this, type, data );
      -
      -				// Ensure a hooks for this queue
      -				jQuery._queueHooks( this, type );
      -
      -				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
      -					jQuery.dequeue( this, type );
      -				}
      -			} );
      -	},
      -	dequeue: function( type ) {
      -		return this.each( function() {
      -			jQuery.dequeue( this, type );
      -		} );
      -	},
      -	clearQueue: function( type ) {
      -		return this.queue( type || "fx", [] );
      -	},
      -
      -	// Get a promise resolved when queues of a certain type
      -	// are emptied (fx is the type by default)
      -	promise: function( type, obj ) {
      -		var tmp,
      -			count = 1,
      -			defer = jQuery.Deferred(),
      -			elements = this,
      -			i = this.length,
      -			resolve = function() {
      -				if ( !( --count ) ) {
      -					defer.resolveWith( elements, [ elements ] );
      -				}
      -			};
      -
      -		if ( typeof type !== "string" ) {
      -			obj = type;
      -			type = undefined;
      -		}
      -		type = type || "fx";
      -
      -		while ( i-- ) {
      -			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
      -			if ( tmp && tmp.empty ) {
      -				count++;
      -				tmp.empty.add( resolve );
      -			}
      -		}
      -		resolve();
      -		return defer.promise( obj );
      -	}
      -} );
      -var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
      -
      -var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
      -
      -
      -var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
      -
      -var isHiddenWithinTree = function( elem, el ) {
      -
      -		// isHiddenWithinTree might be called from jQuery#filter function;
      -		// in that case, element will be second argument
      -		elem = el || elem;
      -
      -		// Inline style trumps all
      -		return elem.style.display === "none" ||
      -			elem.style.display === "" &&
      -
      -			// Otherwise, check computed style
      -			// Support: Firefox <=43 - 45
      -			// Disconnected elements can have computed display: none, so first confirm that elem is
      -			// in the document.
      -			jQuery.contains( elem.ownerDocument, elem ) &&
      -
      -			jQuery.css( elem, "display" ) === "none";
      -	};
      -
      -var swap = function( elem, options, callback, args ) {
      -	var ret, name,
      -		old = {};
      -
      -	// Remember the old values, and insert the new ones
      -	for ( name in options ) {
      -		old[ name ] = elem.style[ name ];
      -		elem.style[ name ] = options[ name ];
      -	}
      -
      -	ret = callback.apply( elem, args || [] );
      -
      -	// Revert the old values
      -	for ( name in options ) {
      -		elem.style[ name ] = old[ name ];
      -	}
      -
      -	return ret;
      -};
      -
      -
      -
      -
      -function adjustCSS( elem, prop, valueParts, tween ) {
      -	var adjusted,
      -		scale = 1,
      -		maxIterations = 20,
      -		currentValue = tween ?
      -			function() {
      -				return tween.cur();
      -			} :
      -			function() {
      -				return jQuery.css( elem, prop, "" );
      -			},
      -		initial = currentValue(),
      -		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
      -
      -		// Starting value computation is required for potential unit mismatches
      -		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
      -			rcssNum.exec( jQuery.css( elem, prop ) );
      -
      -	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
      -
      -		// Trust units reported by jQuery.css
      -		unit = unit || initialInUnit[ 3 ];
      -
      -		// Make sure we update the tween properties later on
      -		valueParts = valueParts || [];
      -
      -		// Iteratively approximate from a nonzero starting point
      -		initialInUnit = +initial || 1;
      -
      -		do {
      -
      -			// If previous iteration zeroed out, double until we get *something*.
      -			// Use string for doubling so we don't accidentally see scale as unchanged below
      -			scale = scale || ".5";
      -
      -			// Adjust and apply
      -			initialInUnit = initialInUnit / scale;
      -			jQuery.style( elem, prop, initialInUnit + unit );
      -
      -		// Update scale, tolerating zero or NaN from tween.cur()
      -		// Break the loop if scale is unchanged or perfect, or if we've just had enough.
      -		} while (
      -			scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
      -		);
      -	}
      -
      -	if ( valueParts ) {
      -		initialInUnit = +initialInUnit || +initial || 0;
      -
      -		// Apply relative offset (+=/-=) if specified
      -		adjusted = valueParts[ 1 ] ?
      -			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
      -			+valueParts[ 2 ];
      -		if ( tween ) {
      -			tween.unit = unit;
      -			tween.start = initialInUnit;
      -			tween.end = adjusted;
      -		}
      -	}
      -	return adjusted;
      -}
      -
      -
      -var defaultDisplayMap = {};
      -
      -function getDefaultDisplay( elem ) {
      -	var temp,
      -		doc = elem.ownerDocument,
      -		nodeName = elem.nodeName,
      -		display = defaultDisplayMap[ nodeName ];
      -
      -	if ( display ) {
      -		return display;
      -	}
      -
      -	temp = doc.body.appendChild( doc.createElement( nodeName ) );
      -	display = jQuery.css( temp, "display" );
      -
      -	temp.parentNode.removeChild( temp );
      -
      -	if ( display === "none" ) {
      -		display = "block";
      -	}
      -	defaultDisplayMap[ nodeName ] = display;
      -
      -	return display;
      -}
      -
      -function showHide( elements, show ) {
      -	var display, elem,
      -		values = [],
      -		index = 0,
      -		length = elements.length;
      -
      -	// Determine new display value for elements that need to change
      -	for ( ; index < length; index++ ) {
      -		elem = elements[ index ];
      -		if ( !elem.style ) {
      -			continue;
      -		}
      -
      -		display = elem.style.display;
      -		if ( show ) {
      -
      -			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
      -			// check is required in this first loop unless we have a nonempty display value (either
      -			// inline or about-to-be-restored)
      -			if ( display === "none" ) {
      -				values[ index ] = dataPriv.get( elem, "display" ) || null;
      -				if ( !values[ index ] ) {
      -					elem.style.display = "";
      -				}
      -			}
      -			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
      -				values[ index ] = getDefaultDisplay( elem );
      -			}
      -		} else {
      -			if ( display !== "none" ) {
      -				values[ index ] = "none";
      -
      -				// Remember what we're overwriting
      -				dataPriv.set( elem, "display", display );
      -			}
      -		}
      -	}
      -
      -	// Set the display of the elements in a second loop to avoid constant reflow
      -	for ( index = 0; index < length; index++ ) {
      -		if ( values[ index ] != null ) {
      -			elements[ index ].style.display = values[ index ];
      -		}
      -	}
      -
      -	return elements;
      -}
      -
      -jQuery.fn.extend( {
      -	show: function() {
      -		return showHide( this, true );
      -	},
      -	hide: function() {
      -		return showHide( this );
      -	},
      -	toggle: function( state ) {
      -		if ( typeof state === "boolean" ) {
      -			return state ? this.show() : this.hide();
      -		}
      -
      -		return this.each( function() {
      -			if ( isHiddenWithinTree( this ) ) {
      -				jQuery( this ).show();
      -			} else {
      -				jQuery( this ).hide();
      -			}
      -		} );
      -	}
      -} );
      -var rcheckableType = ( /^(?:checkbox|radio)$/i );
      -
      -var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
      -
      -var rscriptType = ( /^$|\/(?:java|ecma)script/i );
      -
      -
      -
      -// We have to close these tags to support XHTML (#13200)
      -var wrapMap = {
      -
      -	// Support: IE <=9 only
      -	option: [ 1, "<select multiple='multiple'>", "</select>" ],
      -
      -	// XHTML parsers do not magically insert elements in the
      -	// same way that tag soup parsers do. So we cannot shorten
      -	// this by omitting <tbody> or other required elements.
      -	thead: [ 1, "<table>", "</table>" ],
      -	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
      -	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
      -	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
      -
      -	_default: [ 0, "", "" ]
      -};
      -
      -// Support: IE <=9 only
      -wrapMap.optgroup = wrapMap.option;
      -
      -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
      -wrapMap.th = wrapMap.td;
      -
      -
      -function getAll( context, tag ) {
      -
      -	// Support: IE <=9 - 11 only
      -	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
      -	var ret;
      -
      -	if ( typeof context.getElementsByTagName !== "undefined" ) {
      -		ret = context.getElementsByTagName( tag || "*" );
      -
      -	} else if ( typeof context.querySelectorAll !== "undefined" ) {
      -		ret = context.querySelectorAll( tag || "*" );
      -
      -	} else {
      -		ret = [];
      -	}
      -
      -	if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
      -		return jQuery.merge( [ context ], ret );
      -	}
      -
      -	return ret;
      -}
      -
      -
      -// Mark scripts as having already been evaluated
      -function setGlobalEval( elems, refElements ) {
      -	var i = 0,
      -		l = elems.length;
      -
      -	for ( ; i < l; i++ ) {
      -		dataPriv.set(
      -			elems[ i ],
      -			"globalEval",
      -			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
      -		);
      -	}
      -}
      -
      -
      -var rhtml = /<|&#?\w+;/;
      -
      -function buildFragment( elems, context, scripts, selection, ignored ) {
      -	var elem, tmp, tag, wrap, contains, j,
      -		fragment = context.createDocumentFragment(),
      -		nodes = [],
      -		i = 0,
      -		l = elems.length;
      -
      -	for ( ; i < l; i++ ) {
      -		elem = elems[ i ];
      -
      -		if ( elem || elem === 0 ) {
      -
      -			// Add nodes directly
      -			if ( jQuery.type( elem ) === "object" ) {
      -
      -				// Support: Android <=4.0 only, PhantomJS 1 only
      -				// push.apply(_, arraylike) throws on ancient WebKit
      -				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
      -
      -			// Convert non-html into a text node
      -			} else if ( !rhtml.test( elem ) ) {
      -				nodes.push( context.createTextNode( elem ) );
      -
      -			// Convert html into DOM nodes
      -			} else {
      -				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
      -
      -				// Deserialize a standard representation
      -				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
      -				wrap = wrapMap[ tag ] || wrapMap._default;
      -				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
      -
      -				// Descend through wrappers to the right content
      -				j = wrap[ 0 ];
      -				while ( j-- ) {
      -					tmp = tmp.lastChild;
      -				}
      -
      -				// Support: Android <=4.0 only, PhantomJS 1 only
      -				// push.apply(_, arraylike) throws on ancient WebKit
      -				jQuery.merge( nodes, tmp.childNodes );
      -
      -				// Remember the top-level container
      -				tmp = fragment.firstChild;
      -
      -				// Ensure the created nodes are orphaned (#12392)
      -				tmp.textContent = "";
      -			}
      -		}
      -	}
      -
      -	// Remove wrapper from fragment
      -	fragment.textContent = "";
      -
      -	i = 0;
      -	while ( ( elem = nodes[ i++ ] ) ) {
      -
      -		// Skip elements already in the context collection (trac-4087)
      -		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
      -			if ( ignored ) {
      -				ignored.push( elem );
      -			}
      -			continue;
      -		}
      -
      -		contains = jQuery.contains( elem.ownerDocument, elem );
      -
      -		// Append to fragment
      -		tmp = getAll( fragment.appendChild( elem ), "script" );
      -
      -		// Preserve script evaluation history
      -		if ( contains ) {
      -			setGlobalEval( tmp );
      -		}
      -
      -		// Capture executables
      -		if ( scripts ) {
      -			j = 0;
      -			while ( ( elem = tmp[ j++ ] ) ) {
      -				if ( rscriptType.test( elem.type || "" ) ) {
      -					scripts.push( elem );
      -				}
      -			}
      -		}
      -	}
      -
      -	return fragment;
      -}
      -
      -
      -( function() {
      -	var fragment = document.createDocumentFragment(),
      -		div = fragment.appendChild( document.createElement( "div" ) ),
      -		input = document.createElement( "input" );
      -
      -	// Support: Android 4.0 - 4.3 only
      -	// Check state lost if the name is set (#11217)
      -	// Support: Windows Web Apps (WWA)
      -	// `name` and `type` must use .setAttribute for WWA (#14901)
      -	input.setAttribute( "type", "radio" );
      -	input.setAttribute( "checked", "checked" );
      -	input.setAttribute( "name", "t" );
      -
      -	div.appendChild( input );
      -
      -	// Support: Android <=4.1 only
      -	// Older WebKit doesn't clone checked state correctly in fragments
      -	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
      -
      -	// Support: IE <=11 only
      -	// Make sure textarea (and checkbox) defaultValue is properly cloned
      -	div.innerHTML = "<textarea>x</textarea>";
      -	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
      -} )();
      -var documentElement = document.documentElement;
      -
      -
      -
      -var
      -	rkeyEvent = /^key/,
      -	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
      -	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
      -
      -function returnTrue() {
      -	return true;
      -}
      -
      -function returnFalse() {
      -	return false;
      -}
      -
      -// Support: IE <=9 only
      -// See #13393 for more info
      -function safeActiveElement() {
      -	try {
      -		return document.activeElement;
      -	} catch ( err ) { }
      -}
      -
      -function on( elem, types, selector, data, fn, one ) {
      -	var origFn, type;
      -
      -	// Types can be a map of types/handlers
      -	if ( typeof types === "object" ) {
      -
      -		// ( types-Object, selector, data )
      -		if ( typeof selector !== "string" ) {
      -
      -			// ( types-Object, data )
      -			data = data || selector;
      -			selector = undefined;
      -		}
      -		for ( type in types ) {
      -			on( elem, type, selector, data, types[ type ], one );
      -		}
      -		return elem;
      -	}
      -
      -	if ( data == null && fn == null ) {
      -
      -		// ( types, fn )
      -		fn = selector;
      -		data = selector = undefined;
      -	} else if ( fn == null ) {
      -		if ( typeof selector === "string" ) {
      -
      -			// ( types, selector, fn )
      -			fn = data;
      -			data = undefined;
      -		} else {
      -
      -			// ( types, data, fn )
      -			fn = data;
      -			data = selector;
      -			selector = undefined;
      -		}
      -	}
      -	if ( fn === false ) {
      -		fn = returnFalse;
      -	} else if ( !fn ) {
      -		return elem;
      -	}
      -
      -	if ( one === 1 ) {
      -		origFn = fn;
      -		fn = function( event ) {
      -
      -			// Can use an empty set, since event contains the info
      -			jQuery().off( event );
      -			return origFn.apply( this, arguments );
      -		};
      -
      -		// Use same guid so caller can remove using origFn
      -		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
      -	}
      -	return elem.each( function() {
      -		jQuery.event.add( this, types, fn, data, selector );
      -	} );
      -}
      -
      -/*
      - * Helper functions for managing events -- not part of the public interface.
      - * Props to Dean Edwards' addEvent library for many of the ideas.
      - */
      -jQuery.event = {
      -
      -	global: {},
      -
      -	add: function( elem, types, handler, data, selector ) {
      -
      -		var handleObjIn, eventHandle, tmp,
      -			events, t, handleObj,
      -			special, handlers, type, namespaces, origType,
      -			elemData = dataPriv.get( elem );
      -
      -		// Don't attach events to noData or text/comment nodes (but allow plain objects)
      -		if ( !elemData ) {
      -			return;
      -		}
      -
      -		// Caller can pass in an object of custom data in lieu of the handler
      -		if ( handler.handler ) {
      -			handleObjIn = handler;
      -			handler = handleObjIn.handler;
      -			selector = handleObjIn.selector;
      -		}
      -
      -		// Ensure that invalid selectors throw exceptions at attach time
      -		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
      -		if ( selector ) {
      -			jQuery.find.matchesSelector( documentElement, selector );
      -		}
      -
      -		// Make sure that the handler has a unique ID, used to find/remove it later
      -		if ( !handler.guid ) {
      -			handler.guid = jQuery.guid++;
      -		}
      -
      -		// Init the element's event structure and main handler, if this is the first
      -		if ( !( events = elemData.events ) ) {
      -			events = elemData.events = {};
      -		}
      -		if ( !( eventHandle = elemData.handle ) ) {
      -			eventHandle = elemData.handle = function( e ) {
      -
      -				// Discard the second event of a jQuery.event.trigger() and
      -				// when an event is called after a page has unloaded
      -				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
      -					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
      -			};
      -		}
      -
      -		// Handle multiple events separated by a space
      -		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
      -		t = types.length;
      -		while ( t-- ) {
      -			tmp = rtypenamespace.exec( types[ t ] ) || [];
      -			type = origType = tmp[ 1 ];
      -			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
      -
      -			// There *must* be a type, no attaching namespace-only handlers
      -			if ( !type ) {
      -				continue;
      -			}
      -
      -			// If event changes its type, use the special event handlers for the changed type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// If selector defined, determine special event api type, otherwise given type
      -			type = ( selector ? special.delegateType : special.bindType ) || type;
      -
      -			// Update special based on newly reset type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// handleObj is passed to all event handlers
      -			handleObj = jQuery.extend( {
      -				type: type,
      -				origType: origType,
      -				data: data,
      -				handler: handler,
      -				guid: handler.guid,
      -				selector: selector,
      -				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
      -				namespace: namespaces.join( "." )
      -			}, handleObjIn );
      -
      -			// Init the event handler queue if we're the first
      -			if ( !( handlers = events[ type ] ) ) {
      -				handlers = events[ type ] = [];
      -				handlers.delegateCount = 0;
      -
      -				// Only use addEventListener if the special events handler returns false
      -				if ( !special.setup ||
      -					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
      -
      -					if ( elem.addEventListener ) {
      -						elem.addEventListener( type, eventHandle );
      -					}
      -				}
      -			}
      -
      -			if ( special.add ) {
      -				special.add.call( elem, handleObj );
      -
      -				if ( !handleObj.handler.guid ) {
      -					handleObj.handler.guid = handler.guid;
      -				}
      -			}
      -
      -			// Add to the element's handler list, delegates in front
      -			if ( selector ) {
      -				handlers.splice( handlers.delegateCount++, 0, handleObj );
      -			} else {
      -				handlers.push( handleObj );
      -			}
      -
      -			// Keep track of which events have ever been used, for event optimization
      -			jQuery.event.global[ type ] = true;
      -		}
      -
      -	},
      -
      -	// Detach an event or set of events from an element
      -	remove: function( elem, types, handler, selector, mappedTypes ) {
      -
      -		var j, origCount, tmp,
      -			events, t, handleObj,
      -			special, handlers, type, namespaces, origType,
      -			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
      -
      -		if ( !elemData || !( events = elemData.events ) ) {
      -			return;
      -		}
      -
      -		// Once for each type.namespace in types; type may be omitted
      -		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
      -		t = types.length;
      -		while ( t-- ) {
      -			tmp = rtypenamespace.exec( types[ t ] ) || [];
      -			type = origType = tmp[ 1 ];
      -			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
      -
      -			// Unbind all events (on this namespace, if provided) for the element
      -			if ( !type ) {
      -				for ( type in events ) {
      -					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
      -				}
      -				continue;
      -			}
      -
      -			special = jQuery.event.special[ type ] || {};
      -			type = ( selector ? special.delegateType : special.bindType ) || type;
      -			handlers = events[ type ] || [];
      -			tmp = tmp[ 2 ] &&
      -				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
      -
      -			// Remove matching events
      -			origCount = j = handlers.length;
      -			while ( j-- ) {
      -				handleObj = handlers[ j ];
      -
      -				if ( ( mappedTypes || origType === handleObj.origType ) &&
      -					( !handler || handler.guid === handleObj.guid ) &&
      -					( !tmp || tmp.test( handleObj.namespace ) ) &&
      -					( !selector || selector === handleObj.selector ||
      -						selector === "**" && handleObj.selector ) ) {
      -					handlers.splice( j, 1 );
      -
      -					if ( handleObj.selector ) {
      -						handlers.delegateCount--;
      -					}
      -					if ( special.remove ) {
      -						special.remove.call( elem, handleObj );
      -					}
      -				}
      -			}
      -
      -			// Remove generic event handler if we removed something and no more handlers exist
      -			// (avoids potential for endless recursion during removal of special event handlers)
      -			if ( origCount && !handlers.length ) {
      -				if ( !special.teardown ||
      -					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
      -
      -					jQuery.removeEvent( elem, type, elemData.handle );
      -				}
      -
      -				delete events[ type ];
      -			}
      -		}
      -
      -		// Remove data and the expando if it's no longer used
      -		if ( jQuery.isEmptyObject( events ) ) {
      -			dataPriv.remove( elem, "handle events" );
      -		}
      -	},
      -
      -	dispatch: function( nativeEvent ) {
      -
      -		// Make a writable jQuery.Event from the native event object
      -		var event = jQuery.event.fix( nativeEvent );
      -
      -		var i, j, ret, matched, handleObj, handlerQueue,
      -			args = new Array( arguments.length ),
      -			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
      -			special = jQuery.event.special[ event.type ] || {};
      -
      -		// Use the fix-ed jQuery.Event rather than the (read-only) native event
      -		args[ 0 ] = event;
      -
      -		for ( i = 1; i < arguments.length; i++ ) {
      -			args[ i ] = arguments[ i ];
      -		}
      -
      -		event.delegateTarget = this;
      -
      -		// Call the preDispatch hook for the mapped type, and let it bail if desired
      -		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
      -			return;
      -		}
      -
      -		// Determine handlers
      -		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
      -
      -		// Run delegates first; they may want to stop propagation beneath us
      -		i = 0;
      -		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
      -			event.currentTarget = matched.elem;
      -
      -			j = 0;
      -			while ( ( handleObj = matched.handlers[ j++ ] ) &&
      -				!event.isImmediatePropagationStopped() ) {
      -
      -				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
      -				// a subset or equal to those in the bound event (both can have no namespace).
      -				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
      -
      -					event.handleObj = handleObj;
      -					event.data = handleObj.data;
      -
      -					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
      -						handleObj.handler ).apply( matched.elem, args );
      -
      -					if ( ret !== undefined ) {
      -						if ( ( event.result = ret ) === false ) {
      -							event.preventDefault();
      -							event.stopPropagation();
      -						}
      -					}
      -				}
      -			}
      -		}
      -
      -		// Call the postDispatch hook for the mapped type
      -		if ( special.postDispatch ) {
      -			special.postDispatch.call( this, event );
      -		}
      -
      -		return event.result;
      -	},
      -
      -	handlers: function( event, handlers ) {
      -		var i, handleObj, sel, matchedHandlers, matchedSelectors,
      -			handlerQueue = [],
      -			delegateCount = handlers.delegateCount,
      -			cur = event.target;
      -
      -		// Find delegate handlers
      -		if ( delegateCount &&
      -
      -			// Support: IE <=9
      -			// Black-hole SVG <use> instance trees (trac-13180)
      -			cur.nodeType &&
      -
      -			// Support: Firefox <=42
      -			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
      -			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
      -			// Support: IE 11 only
      -			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
      -			!( event.type === "click" && event.button >= 1 ) ) {
      -
      -			for ( ; cur !== this; cur = cur.parentNode || this ) {
      -
      -				// Don't check non-elements (#13208)
      -				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
      -				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
      -					matchedHandlers = [];
      -					matchedSelectors = {};
      -					for ( i = 0; i < delegateCount; i++ ) {
      -						handleObj = handlers[ i ];
      -
      -						// Don't conflict with Object.prototype properties (#13203)
      -						sel = handleObj.selector + " ";
      -
      -						if ( matchedSelectors[ sel ] === undefined ) {
      -							matchedSelectors[ sel ] = handleObj.needsContext ?
      -								jQuery( sel, this ).index( cur ) > -1 :
      -								jQuery.find( sel, this, null, [ cur ] ).length;
      -						}
      -						if ( matchedSelectors[ sel ] ) {
      -							matchedHandlers.push( handleObj );
      -						}
      -					}
      -					if ( matchedHandlers.length ) {
      -						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
      -					}
      -				}
      -			}
      -		}
      -
      -		// Add the remaining (directly-bound) handlers
      -		cur = this;
      -		if ( delegateCount < handlers.length ) {
      -			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
      -		}
      -
      -		return handlerQueue;
      -	},
      -
      -	addProp: function( name, hook ) {
      -		Object.defineProperty( jQuery.Event.prototype, name, {
      -			enumerable: true,
      -			configurable: true,
      -
      -			get: jQuery.isFunction( hook ) ?
      -				function() {
      -					if ( this.originalEvent ) {
      -							return hook( this.originalEvent );
      -					}
      -				} :
      -				function() {
      -					if ( this.originalEvent ) {
      -							return this.originalEvent[ name ];
      -					}
      -				},
      -
      -			set: function( value ) {
      -				Object.defineProperty( this, name, {
      -					enumerable: true,
      -					configurable: true,
      -					writable: true,
      -					value: value
      -				} );
      -			}
      -		} );
      -	},
      -
      -	fix: function( originalEvent ) {
      -		return originalEvent[ jQuery.expando ] ?
      -			originalEvent :
      -			new jQuery.Event( originalEvent );
      -	},
      -
      -	special: {
      -		load: {
      -
      -			// Prevent triggered image.load events from bubbling to window.load
      -			noBubble: true
      -		},
      -		focus: {
      -
      -			// Fire native event if possible so blur/focus sequence is correct
      -			trigger: function() {
      -				if ( this !== safeActiveElement() && this.focus ) {
      -					this.focus();
      -					return false;
      -				}
      -			},
      -			delegateType: "focusin"
      -		},
      -		blur: {
      -			trigger: function() {
      -				if ( this === safeActiveElement() && this.blur ) {
      -					this.blur();
      -					return false;
      -				}
      -			},
      -			delegateType: "focusout"
      -		},
      -		click: {
      -
      -			// For checkbox, fire native event so checked state will be right
      -			trigger: function() {
      -				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
      -					this.click();
      -					return false;
      -				}
      -			},
      -
      -			// For cross-browser consistency, don't fire native .click() on links
      -			_default: function( event ) {
      -				return jQuery.nodeName( event.target, "a" );
      -			}
      -		},
      -
      -		beforeunload: {
      -			postDispatch: function( event ) {
      -
      -				// Support: Firefox 20+
      -				// Firefox doesn't alert if the returnValue field is not set.
      -				if ( event.result !== undefined && event.originalEvent ) {
      -					event.originalEvent.returnValue = event.result;
      -				}
      -			}
      -		}
      -	}
      -};
      -
      -jQuery.removeEvent = function( elem, type, handle ) {
      -
      -	// This "if" is needed for plain objects
      -	if ( elem.removeEventListener ) {
      -		elem.removeEventListener( type, handle );
      -	}
      -};
      -
      -jQuery.Event = function( src, props ) {
      -
      -	// Allow instantiation without the 'new' keyword
      -	if ( !( this instanceof jQuery.Event ) ) {
      -		return new jQuery.Event( src, props );
      -	}
      -
      -	// Event object
      -	if ( src && src.type ) {
      -		this.originalEvent = src;
      -		this.type = src.type;
      -
      -		// Events bubbling up the document may have been marked as prevented
      -		// by a handler lower down the tree; reflect the correct value.
      -		this.isDefaultPrevented = src.defaultPrevented ||
      -				src.defaultPrevented === undefined &&
      -
      -				// Support: Android <=2.3 only
      -				src.returnValue === false ?
      -			returnTrue :
      -			returnFalse;
      -
      -		// Create target properties
      -		// Support: Safari <=6 - 7 only
      -		// Target should not be a text node (#504, #13143)
      -		this.target = ( src.target && src.target.nodeType === 3 ) ?
      -			src.target.parentNode :
      -			src.target;
      -
      -		this.currentTarget = src.currentTarget;
      -		this.relatedTarget = src.relatedTarget;
      -
      -	// Event type
      -	} else {
      -		this.type = src;
      -	}
      -
      -	// Put explicitly provided properties onto the event object
      -	if ( props ) {
      -		jQuery.extend( this, props );
      -	}
      -
      -	// Create a timestamp if incoming event doesn't have one
      -	this.timeStamp = src && src.timeStamp || jQuery.now();
      -
      -	// Mark it as fixed
      -	this[ jQuery.expando ] = true;
      -};
      -
      -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
      -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      -jQuery.Event.prototype = {
      -	constructor: jQuery.Event,
      -	isDefaultPrevented: returnFalse,
      -	isPropagationStopped: returnFalse,
      -	isImmediatePropagationStopped: returnFalse,
      -	isSimulated: false,
      -
      -	preventDefault: function() {
      -		var e = this.originalEvent;
      -
      -		this.isDefaultPrevented = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.preventDefault();
      -		}
      -	},
      -	stopPropagation: function() {
      -		var e = this.originalEvent;
      -
      -		this.isPropagationStopped = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.stopPropagation();
      -		}
      -	},
      -	stopImmediatePropagation: function() {
      -		var e = this.originalEvent;
      -
      -		this.isImmediatePropagationStopped = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.stopImmediatePropagation();
      -		}
      -
      -		this.stopPropagation();
      -	}
      -};
      -
      -// Includes all common event props including KeyEvent and MouseEvent specific props
      -jQuery.each( {
      -	altKey: true,
      -	bubbles: true,
      -	cancelable: true,
      -	changedTouches: true,
      -	ctrlKey: true,
      -	detail: true,
      -	eventPhase: true,
      -	metaKey: true,
      -	pageX: true,
      -	pageY: true,
      -	shiftKey: true,
      -	view: true,
      -	"char": true,
      -	charCode: true,
      -	key: true,
      -	keyCode: true,
      -	button: true,
      -	buttons: true,
      -	clientX: true,
      -	clientY: true,
      -	offsetX: true,
      -	offsetY: true,
      -	pointerId: true,
      -	pointerType: true,
      -	screenX: true,
      -	screenY: true,
      -	targetTouches: true,
      -	toElement: true,
      -	touches: true,
      -
      -	which: function( event ) {
      -		var button = event.button;
      -
      -		// Add which for key events
      -		if ( event.which == null && rkeyEvent.test( event.type ) ) {
      -			return event.charCode != null ? event.charCode : event.keyCode;
      -		}
      -
      -		// Add which for click: 1 === left; 2 === middle; 3 === right
      -		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
      -			if ( button & 1 ) {
      -				return 1;
      -			}
      -
      -			if ( button & 2 ) {
      -				return 3;
      -			}
      -
      -			if ( button & 4 ) {
      -				return 2;
      -			}
      -
      -			return 0;
      -		}
      -
      -		return event.which;
      -	}
      -}, jQuery.event.addProp );
      -
      -// Create mouseenter/leave events using mouseover/out and event-time checks
      -// so that event delegation works in jQuery.
      -// Do the same for pointerenter/pointerleave and pointerover/pointerout
      -//
      -// Support: Safari 7 only
      -// Safari sends mouseenter too often; see:
      -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
      -// for the description of the bug (it existed in older Chrome versions as well).
      -jQuery.each( {
      -	mouseenter: "mouseover",
      -	mouseleave: "mouseout",
      -	pointerenter: "pointerover",
      -	pointerleave: "pointerout"
      -}, function( orig, fix ) {
      -	jQuery.event.special[ orig ] = {
      -		delegateType: fix,
      -		bindType: fix,
      -
      -		handle: function( event ) {
      -			var ret,
      -				target = this,
      -				related = event.relatedTarget,
      -				handleObj = event.handleObj;
      -
      -			// For mouseenter/leave call the handler if related is outside the target.
      -			// NB: No relatedTarget if the mouse left/entered the browser window
      -			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
      -				event.type = handleObj.origType;
      -				ret = handleObj.handler.apply( this, arguments );
      -				event.type = fix;
      -			}
      -			return ret;
      -		}
      -	};
      -} );
      -
      -jQuery.fn.extend( {
      -
      -	on: function( types, selector, data, fn ) {
      -		return on( this, types, selector, data, fn );
      -	},
      -	one: function( types, selector, data, fn ) {
      -		return on( this, types, selector, data, fn, 1 );
      -	},
      -	off: function( types, selector, fn ) {
      -		var handleObj, type;
      -		if ( types && types.preventDefault && types.handleObj ) {
      -
      -			// ( event )  dispatched jQuery.Event
      -			handleObj = types.handleObj;
      -			jQuery( types.delegateTarget ).off(
      -				handleObj.namespace ?
      -					handleObj.origType + "." + handleObj.namespace :
      -					handleObj.origType,
      -				handleObj.selector,
      -				handleObj.handler
      -			);
      -			return this;
      -		}
      -		if ( typeof types === "object" ) {
      -
      -			// ( types-object [, selector] )
      -			for ( type in types ) {
      -				this.off( type, selector, types[ type ] );
      -			}
      -			return this;
      -		}
      -		if ( selector === false || typeof selector === "function" ) {
      -
      -			// ( types [, fn] )
      -			fn = selector;
      -			selector = undefined;
      -		}
      -		if ( fn === false ) {
      -			fn = returnFalse;
      -		}
      -		return this.each( function() {
      -			jQuery.event.remove( this, types, fn, selector );
      -		} );
      -	}
      -} );
      -
      -
      -var
      -
      -	/* eslint-disable max-len */
      -
      -	// See https://github.com/eslint/eslint/issues/3229
      -	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
      -
      -	/* eslint-enable */
      -
      -	// Support: IE <=10 - 11, Edge 12 - 13
      -	// In IE/Edge using regex groups here causes severe slowdowns.
      -	// See https://connect.microsoft.com/IE/feedback/details/1736512/
      -	rnoInnerhtml = /<script|<style|<link/i,
      -
      -	// checked="checked" or checked
      -	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
      -	rscriptTypeMasked = /^true\/(.*)/,
      -	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
      -
      -function manipulationTarget( elem, content ) {
      -	if ( jQuery.nodeName( elem, "table" ) &&
      -		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
      -
      -		return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
      -	}
      -
      -	return elem;
      -}
      -
      -// Replace/restore the type attribute of script elements for safe DOM manipulation
      -function disableScript( elem ) {
      -	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
      -	return elem;
      -}
      -function restoreScript( elem ) {
      -	var match = rscriptTypeMasked.exec( elem.type );
      -
      -	if ( match ) {
      -		elem.type = match[ 1 ];
      -	} else {
      -		elem.removeAttribute( "type" );
      -	}
      -
      -	return elem;
      -}
      -
      -function cloneCopyEvent( src, dest ) {
      -	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
      -
      -	if ( dest.nodeType !== 1 ) {
      -		return;
      -	}
      -
      -	// 1. Copy private data: events, handlers, etc.
      -	if ( dataPriv.hasData( src ) ) {
      -		pdataOld = dataPriv.access( src );
      -		pdataCur = dataPriv.set( dest, pdataOld );
      -		events = pdataOld.events;
      -
      -		if ( events ) {
      -			delete pdataCur.handle;
      -			pdataCur.events = {};
      -
      -			for ( type in events ) {
      -				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
      -					jQuery.event.add( dest, type, events[ type ][ i ] );
      -				}
      -			}
      -		}
      -	}
      -
      -	// 2. Copy user data
      -	if ( dataUser.hasData( src ) ) {
      -		udataOld = dataUser.access( src );
      -		udataCur = jQuery.extend( {}, udataOld );
      -
      -		dataUser.set( dest, udataCur );
      -	}
      -}
      -
      -// Fix IE bugs, see support tests
      -function fixInput( src, dest ) {
      -	var nodeName = dest.nodeName.toLowerCase();
      -
      -	// Fails to persist the checked state of a cloned checkbox or radio button.
      -	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
      -		dest.checked = src.checked;
      -
      -	// Fails to return the selected option to the default selected state when cloning options
      -	} else if ( nodeName === "input" || nodeName === "textarea" ) {
      -		dest.defaultValue = src.defaultValue;
      -	}
      -}
      -
      -function domManip( collection, args, callback, ignored ) {
      -
      -	// Flatten any nested arrays
      -	args = concat.apply( [], args );
      -
      -	var fragment, first, scripts, hasScripts, node, doc,
      -		i = 0,
      -		l = collection.length,
      -		iNoClone = l - 1,
      -		value = args[ 0 ],
      -		isFunction = jQuery.isFunction( value );
      -
      -	// We can't cloneNode fragments that contain checked, in WebKit
      -	if ( isFunction ||
      -			( l > 1 && typeof value === "string" &&
      -				!support.checkClone && rchecked.test( value ) ) ) {
      -		return collection.each( function( index ) {
      -			var self = collection.eq( index );
      -			if ( isFunction ) {
      -				args[ 0 ] = value.call( this, index, self.html() );
      -			}
      -			domManip( self, args, callback, ignored );
      -		} );
      -	}
      -
      -	if ( l ) {
      -		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
      -		first = fragment.firstChild;
      -
      -		if ( fragment.childNodes.length === 1 ) {
      -			fragment = first;
      -		}
      -
      -		// Require either new content or an interest in ignored elements to invoke the callback
      -		if ( first || ignored ) {
      -			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
      -			hasScripts = scripts.length;
      -
      -			// Use the original fragment for the last item
      -			// instead of the first because it can end up
      -			// being emptied incorrectly in certain situations (#8070).
      -			for ( ; i < l; i++ ) {
      -				node = fragment;
      -
      -				if ( i !== iNoClone ) {
      -					node = jQuery.clone( node, true, true );
      -
      -					// Keep references to cloned scripts for later restoration
      -					if ( hasScripts ) {
      -
      -						// Support: Android <=4.0 only, PhantomJS 1 only
      -						// push.apply(_, arraylike) throws on ancient WebKit
      -						jQuery.merge( scripts, getAll( node, "script" ) );
      -					}
      -				}
      -
      -				callback.call( collection[ i ], node, i );
      -			}
      -
      -			if ( hasScripts ) {
      -				doc = scripts[ scripts.length - 1 ].ownerDocument;
      -
      -				// Reenable scripts
      -				jQuery.map( scripts, restoreScript );
      -
      -				// Evaluate executable scripts on first document insertion
      -				for ( i = 0; i < hasScripts; i++ ) {
      -					node = scripts[ i ];
      -					if ( rscriptType.test( node.type || "" ) &&
      -						!dataPriv.access( node, "globalEval" ) &&
      -						jQuery.contains( doc, node ) ) {
      -
      -						if ( node.src ) {
      -
      -							// Optional AJAX dependency, but won't run scripts if not present
      -							if ( jQuery._evalUrl ) {
      -								jQuery._evalUrl( node.src );
      -							}
      -						} else {
      -							DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	return collection;
      -}
      -
      -function remove( elem, selector, keepData ) {
      -	var node,
      -		nodes = selector ? jQuery.filter( selector, elem ) : elem,
      -		i = 0;
      -
      -	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
      -		if ( !keepData && node.nodeType === 1 ) {
      -			jQuery.cleanData( getAll( node ) );
      -		}
      -
      -		if ( node.parentNode ) {
      -			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
      -				setGlobalEval( getAll( node, "script" ) );
      -			}
      -			node.parentNode.removeChild( node );
      -		}
      -	}
      -
      -	return elem;
      -}
      -
      -jQuery.extend( {
      -	htmlPrefilter: function( html ) {
      -		return html.replace( rxhtmlTag, "<$1></$2>" );
      -	},
      -
      -	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
      -		var i, l, srcElements, destElements,
      -			clone = elem.cloneNode( true ),
      -			inPage = jQuery.contains( elem.ownerDocument, elem );
      -
      -		// Fix IE cloning issues
      -		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
      -				!jQuery.isXMLDoc( elem ) ) {
      -
      -			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
      -			destElements = getAll( clone );
      -			srcElements = getAll( elem );
      -
      -			for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -				fixInput( srcElements[ i ], destElements[ i ] );
      -			}
      -		}
      -
      -		// Copy the events from the original to the clone
      -		if ( dataAndEvents ) {
      -			if ( deepDataAndEvents ) {
      -				srcElements = srcElements || getAll( elem );
      -				destElements = destElements || getAll( clone );
      -
      -				for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
      -				}
      -			} else {
      -				cloneCopyEvent( elem, clone );
      -			}
      -		}
      -
      -		// Preserve script evaluation history
      -		destElements = getAll( clone, "script" );
      -		if ( destElements.length > 0 ) {
      -			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
      -		}
      -
      -		// Return the cloned set
      -		return clone;
      -	},
      -
      -	cleanData: function( elems ) {
      -		var data, elem, type,
      -			special = jQuery.event.special,
      -			i = 0;
      -
      -		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
      -			if ( acceptData( elem ) ) {
      -				if ( ( data = elem[ dataPriv.expando ] ) ) {
      -					if ( data.events ) {
      -						for ( type in data.events ) {
      -							if ( special[ type ] ) {
      -								jQuery.event.remove( elem, type );
      -
      -							// This is a shortcut to avoid jQuery.event.remove's overhead
      -							} else {
      -								jQuery.removeEvent( elem, type, data.handle );
      -							}
      -						}
      -					}
      -
      -					// Support: Chrome <=35 - 45+
      -					// Assign undefined instead of using delete, see Data#remove
      -					elem[ dataPriv.expando ] = undefined;
      -				}
      -				if ( elem[ dataUser.expando ] ) {
      -
      -					// Support: Chrome <=35 - 45+
      -					// Assign undefined instead of using delete, see Data#remove
      -					elem[ dataUser.expando ] = undefined;
      -				}
      -			}
      -		}
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	detach: function( selector ) {
      -		return remove( this, selector, true );
      -	},
      -
      -	remove: function( selector ) {
      -		return remove( this, selector );
      -	},
      -
      -	text: function( value ) {
      -		return access( this, function( value ) {
      -			return value === undefined ?
      -				jQuery.text( this ) :
      -				this.empty().each( function() {
      -					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -						this.textContent = value;
      -					}
      -				} );
      -		}, null, value, arguments.length );
      -	},
      -
      -	append: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -				var target = manipulationTarget( this, elem );
      -				target.appendChild( elem );
      -			}
      -		} );
      -	},
      -
      -	prepend: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -				var target = manipulationTarget( this, elem );
      -				target.insertBefore( elem, target.firstChild );
      -			}
      -		} );
      -	},
      -
      -	before: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.parentNode ) {
      -				this.parentNode.insertBefore( elem, this );
      -			}
      -		} );
      -	},
      -
      -	after: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.parentNode ) {
      -				this.parentNode.insertBefore( elem, this.nextSibling );
      -			}
      -		} );
      -	},
      -
      -	empty: function() {
      -		var elem,
      -			i = 0;
      -
      -		for ( ; ( elem = this[ i ] ) != null; i++ ) {
      -			if ( elem.nodeType === 1 ) {
      -
      -				// Prevent memory leaks
      -				jQuery.cleanData( getAll( elem, false ) );
      -
      -				// Remove any remaining nodes
      -				elem.textContent = "";
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	clone: function( dataAndEvents, deepDataAndEvents ) {
      -		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
      -		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
      -
      -		return this.map( function() {
      -			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
      -		} );
      -	},
      -
      -	html: function( value ) {
      -		return access( this, function( value ) {
      -			var elem = this[ 0 ] || {},
      -				i = 0,
      -				l = this.length;
      -
      -			if ( value === undefined && elem.nodeType === 1 ) {
      -				return elem.innerHTML;
      -			}
      -
      -			// See if we can take a shortcut and just use innerHTML
      -			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
      -				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
      -
      -				value = jQuery.htmlPrefilter( value );
      -
      -				try {
      -					for ( ; i < l; i++ ) {
      -						elem = this[ i ] || {};
      -
      -						// Remove element nodes and prevent memory leaks
      -						if ( elem.nodeType === 1 ) {
      -							jQuery.cleanData( getAll( elem, false ) );
      -							elem.innerHTML = value;
      -						}
      -					}
      -
      -					elem = 0;
      -
      -				// If using innerHTML throws an exception, use the fallback method
      -				} catch ( e ) {}
      -			}
      -
      -			if ( elem ) {
      -				this.empty().append( value );
      -			}
      -		}, null, value, arguments.length );
      -	},
      -
      -	replaceWith: function() {
      -		var ignored = [];
      -
      -		// Make the changes, replacing each non-ignored context element with the new content
      -		return domManip( this, arguments, function( elem ) {
      -			var parent = this.parentNode;
      -
      -			if ( jQuery.inArray( this, ignored ) < 0 ) {
      -				jQuery.cleanData( getAll( this ) );
      -				if ( parent ) {
      -					parent.replaceChild( elem, this );
      -				}
      -			}
      -
      -		// Force callback invocation
      -		}, ignored );
      -	}
      -} );
      -
      -jQuery.each( {
      -	appendTo: "append",
      -	prependTo: "prepend",
      -	insertBefore: "before",
      -	insertAfter: "after",
      -	replaceAll: "replaceWith"
      -}, function( name, original ) {
      -	jQuery.fn[ name ] = function( selector ) {
      -		var elems,
      -			ret = [],
      -			insert = jQuery( selector ),
      -			last = insert.length - 1,
      -			i = 0;
      -
      -		for ( ; i <= last; i++ ) {
      -			elems = i === last ? this : this.clone( true );
      -			jQuery( insert[ i ] )[ original ]( elems );
      -
      -			// Support: Android <=4.0 only, PhantomJS 1 only
      -			// .get() because push.apply(_, arraylike) throws on ancient WebKit
      -			push.apply( ret, elems.get() );
      -		}
      -
      -		return this.pushStack( ret );
      -	};
      -} );
      -var rmargin = ( /^margin/ );
      -
      -var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
      -
      -var getStyles = function( elem ) {
      -
      -		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
      -		// IE throws on elements created in popups
      -		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
      -		var view = elem.ownerDocument.defaultView;
      -
      -		if ( !view || !view.opener ) {
      -			view = window;
      -		}
      -
      -		return view.getComputedStyle( elem );
      -	};
      -
      -
      -
      -( function() {
      -
      -	// Executing both pixelPosition & boxSizingReliable tests require only one layout
      -	// so they're executed at the same time to save the second computation.
      -	function computeStyleTests() {
      -
      -		// This is a singleton, we need to execute it only once
      -		if ( !div ) {
      -			return;
      -		}
      -
      -		div.style.cssText =
      -			"box-sizing:border-box;" +
      -			"position:relative;display:block;" +
      -			"margin:auto;border:1px;padding:1px;" +
      -			"top:1%;width:50%";
      -		div.innerHTML = "";
      -		documentElement.appendChild( container );
      -
      -		var divStyle = window.getComputedStyle( div );
      -		pixelPositionVal = divStyle.top !== "1%";
      -
      -		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
      -		reliableMarginLeftVal = divStyle.marginLeft === "2px";
      -		boxSizingReliableVal = divStyle.width === "4px";
      -
      -		// Support: Android 4.0 - 4.3 only
      -		// Some styles come back with percentage values, even though they shouldn't
      -		div.style.marginRight = "50%";
      -		pixelMarginRightVal = divStyle.marginRight === "4px";
      -
      -		documentElement.removeChild( container );
      -
      -		// Nullify the div so it wouldn't be stored in the memory and
      -		// it will also be a sign that checks already performed
      -		div = null;
      -	}
      -
      -	var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
      -		container = document.createElement( "div" ),
      -		div = document.createElement( "div" );
      -
      -	// Finish early in limited (non-browser) environments
      -	if ( !div.style ) {
      -		return;
      -	}
      -
      -	// Support: IE <=9 - 11 only
      -	// Style of cloned element affects source element cloned (#8908)
      -	div.style.backgroundClip = "content-box";
      -	div.cloneNode( true ).style.backgroundClip = "";
      -	support.clearCloneStyle = div.style.backgroundClip === "content-box";
      -
      -	container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
      -		"padding:0;margin-top:1px;position:absolute";
      -	container.appendChild( div );
      -
      -	jQuery.extend( support, {
      -		pixelPosition: function() {
      -			computeStyleTests();
      -			return pixelPositionVal;
      -		},
      -		boxSizingReliable: function() {
      -			computeStyleTests();
      -			return boxSizingReliableVal;
      -		},
      -		pixelMarginRight: function() {
      -			computeStyleTests();
      -			return pixelMarginRightVal;
      -		},
      -		reliableMarginLeft: function() {
      -			computeStyleTests();
      -			return reliableMarginLeftVal;
      -		}
      -	} );
      -} )();
      -
      -
      -function curCSS( elem, name, computed ) {
      -	var width, minWidth, maxWidth, ret,
      -		style = elem.style;
      -
      -	computed = computed || getStyles( elem );
      -
      -	// Support: IE <=9 only
      -	// getPropertyValue is only needed for .css('filter') (#12537)
      -	if ( computed ) {
      -		ret = computed.getPropertyValue( name ) || computed[ name ];
      -
      -		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
      -			ret = jQuery.style( elem, name );
      -		}
      -
      -		// A tribute to the "awesome hack by Dean Edwards"
      -		// Android Browser returns percentage for some values,
      -		// but width seems to be reliably pixels.
      -		// This is against the CSSOM draft spec:
      -		// https://drafts.csswg.org/cssom/#resolved-values
      -		if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
      -
      -			// Remember the original values
      -			width = style.width;
      -			minWidth = style.minWidth;
      -			maxWidth = style.maxWidth;
      -
      -			// Put in the new values to get a computed value out
      -			style.minWidth = style.maxWidth = style.width = ret;
      -			ret = computed.width;
      -
      -			// Revert the changed values
      -			style.width = width;
      -			style.minWidth = minWidth;
      -			style.maxWidth = maxWidth;
      -		}
      -	}
      -
      -	return ret !== undefined ?
      -
      -		// Support: IE <=9 - 11 only
      -		// IE returns zIndex value as an integer.
      -		ret + "" :
      -		ret;
      -}
      -
      -
      -function addGetHookIf( conditionFn, hookFn ) {
      -
      -	// Define the hook, we'll check on the first run if it's really needed.
      -	return {
      -		get: function() {
      -			if ( conditionFn() ) {
      -
      -				// Hook not needed (or it's not possible to use it due
      -				// to missing dependency), remove it.
      -				delete this.get;
      -				return;
      -			}
      -
      -			// Hook needed; redefine it so that the support test is not executed again.
      -			return ( this.get = hookFn ).apply( this, arguments );
      -		}
      -	};
      -}
      -
      -
      -var
      -
      -	// Swappable if display is none or starts with table
      -	// except "table", "table-cell", or "table-caption"
      -	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
      -	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
      -	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
      -	cssNormalTransform = {
      -		letterSpacing: "0",
      -		fontWeight: "400"
      -	},
      -
      -	cssPrefixes = [ "Webkit", "Moz", "ms" ],
      -	emptyStyle = document.createElement( "div" ).style;
      -
      -// Return a css property mapped to a potentially vendor prefixed property
      -function vendorPropName( name ) {
      -
      -	// Shortcut for names that are not vendor prefixed
      -	if ( name in emptyStyle ) {
      -		return name;
      -	}
      -
      -	// Check for vendor prefixed names
      -	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
      -		i = cssPrefixes.length;
      -
      -	while ( i-- ) {
      -		name = cssPrefixes[ i ] + capName;
      -		if ( name in emptyStyle ) {
      -			return name;
      -		}
      -	}
      -}
      -
      -function setPositiveNumber( elem, value, subtract ) {
      -
      -	// Any relative (+/-) values have already been
      -	// normalized at this point
      -	var matches = rcssNum.exec( value );
      -	return matches ?
      -
      -		// Guard against undefined "subtract", e.g., when used as in cssHooks
      -		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
      -		value;
      -}
      -
      -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
      -	var i,
      -		val = 0;
      -
      -	// If we already have the right measurement, avoid augmentation
      -	if ( extra === ( isBorderBox ? "border" : "content" ) ) {
      -		i = 4;
      -
      -	// Otherwise initialize for horizontal or vertical properties
      -	} else {
      -		i = name === "width" ? 1 : 0;
      -	}
      -
      -	for ( ; i < 4; i += 2 ) {
      -
      -		// Both box models exclude margin, so add it if we want it
      -		if ( extra === "margin" ) {
      -			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
      -		}
      -
      -		if ( isBorderBox ) {
      -
      -			// border-box includes padding, so remove it if we want content
      -			if ( extra === "content" ) {
      -				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -			}
      -
      -			// At this point, extra isn't border nor margin, so remove border
      -			if ( extra !== "margin" ) {
      -				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -			}
      -		} else {
      -
      -			// At this point, extra isn't content, so add padding
      -			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -
      -			// At this point, extra isn't content nor padding, so add border
      -			if ( extra !== "padding" ) {
      -				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -			}
      -		}
      -	}
      -
      -	return val;
      -}
      -
      -function getWidthOrHeight( elem, name, extra ) {
      -
      -	// Start with offset property, which is equivalent to the border-box value
      -	var val,
      -		valueIsBorderBox = true,
      -		styles = getStyles( elem ),
      -		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
      -
      -	// Support: IE <=11 only
      -	// Running getBoundingClientRect on a disconnected node
      -	// in IE throws an error.
      -	if ( elem.getClientRects().length ) {
      -		val = elem.getBoundingClientRect()[ name ];
      -	}
      -
      -	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
      -	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
      -	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
      -	if ( val <= 0 || val == null ) {
      -
      -		// Fall back to computed then uncomputed css if necessary
      -		val = curCSS( elem, name, styles );
      -		if ( val < 0 || val == null ) {
      -			val = elem.style[ name ];
      -		}
      -
      -		// Computed unit is not pixels. Stop here and return.
      -		if ( rnumnonpx.test( val ) ) {
      -			return val;
      -		}
      -
      -		// Check for style in case a browser which returns unreliable values
      -		// for getComputedStyle silently falls back to the reliable elem.style
      -		valueIsBorderBox = isBorderBox &&
      -			( support.boxSizingReliable() || val === elem.style[ name ] );
      -
      -		// Normalize "", auto, and prepare for extra
      -		val = parseFloat( val ) || 0;
      -	}
      -
      -	// Use the active box-sizing model to add/subtract irrelevant styles
      -	return ( val +
      -		augmentWidthOrHeight(
      -			elem,
      -			name,
      -			extra || ( isBorderBox ? "border" : "content" ),
      -			valueIsBorderBox,
      -			styles
      -		)
      -	) + "px";
      -}
      -
      -jQuery.extend( {
      -
      -	// Add in style property hooks for overriding the default
      -	// behavior of getting and setting a style property
      -	cssHooks: {
      -		opacity: {
      -			get: function( elem, computed ) {
      -				if ( computed ) {
      -
      -					// We should always get a number back from opacity
      -					var ret = curCSS( elem, "opacity" );
      -					return ret === "" ? "1" : ret;
      -				}
      -			}
      -		}
      -	},
      -
      -	// Don't automatically add "px" to these possibly-unitless properties
      -	cssNumber: {
      -		"animationIterationCount": true,
      -		"columnCount": true,
      -		"fillOpacity": true,
      -		"flexGrow": true,
      -		"flexShrink": true,
      -		"fontWeight": true,
      -		"lineHeight": true,
      -		"opacity": true,
      -		"order": true,
      -		"orphans": true,
      -		"widows": true,
      -		"zIndex": true,
      -		"zoom": true
      -	},
      -
      -	// Add in properties whose names you wish to fix before
      -	// setting or getting the value
      -	cssProps: {
      -		"float": "cssFloat"
      -	},
      -
      -	// Get and set the style property on a DOM Node
      -	style: function( elem, name, value, extra ) {
      -
      -		// Don't set styles on text and comment nodes
      -		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
      -			return;
      -		}
      -
      -		// Make sure that we're working with the right name
      -		var ret, type, hooks,
      -			origName = jQuery.camelCase( name ),
      -			style = elem.style;
      -
      -		name = jQuery.cssProps[ origName ] ||
      -			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
      -
      -		// Gets hook for the prefixed version, then unprefixed version
      -		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -		// Check if we're setting a value
      -		if ( value !== undefined ) {
      -			type = typeof value;
      -
      -			// Convert "+=" or "-=" to relative numbers (#7345)
      -			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
      -				value = adjustCSS( elem, name, ret );
      -
      -				// Fixes bug #9237
      -				type = "number";
      -			}
      -
      -			// Make sure that null and NaN values aren't set (#7116)
      -			if ( value == null || value !== value ) {
      -				return;
      -			}
      -
      -			// If a number was passed in, add the unit (except for certain CSS properties)
      -			if ( type === "number" ) {
      -				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
      -			}
      -
      -			// background-* props affect original clone's values
      -			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
      -				style[ name ] = "inherit";
      -			}
      -
      -			// If a hook was provided, use that value, otherwise just set the specified value
      -			if ( !hooks || !( "set" in hooks ) ||
      -				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
      -
      -				style[ name ] = value;
      -			}
      -
      -		} else {
      -
      -			// If a hook was provided get the non-computed value from there
      -			if ( hooks && "get" in hooks &&
      -				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
      -
      -				return ret;
      -			}
      -
      -			// Otherwise just get the value from the style object
      -			return style[ name ];
      -		}
      -	},
      -
      -	css: function( elem, name, extra, styles ) {
      -		var val, num, hooks,
      -			origName = jQuery.camelCase( name );
      -
      -		// Make sure that we're working with the right name
      -		name = jQuery.cssProps[ origName ] ||
      -			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
      -
      -		// Try prefixed name followed by the unprefixed name
      -		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -		// If a hook was provided get the computed value from there
      -		if ( hooks && "get" in hooks ) {
      -			val = hooks.get( elem, true, extra );
      -		}
      -
      -		// Otherwise, if a way to get the computed value exists, use that
      -		if ( val === undefined ) {
      -			val = curCSS( elem, name, styles );
      -		}
      -
      -		// Convert "normal" to computed value
      -		if ( val === "normal" && name in cssNormalTransform ) {
      -			val = cssNormalTransform[ name ];
      -		}
      -
      -		// Make numeric if forced or a qualifier was provided and val looks numeric
      -		if ( extra === "" || extra ) {
      -			num = parseFloat( val );
      -			return extra === true || isFinite( num ) ? num || 0 : val;
      -		}
      -		return val;
      -	}
      -} );
      -
      -jQuery.each( [ "height", "width" ], function( i, name ) {
      -	jQuery.cssHooks[ name ] = {
      -		get: function( elem, computed, extra ) {
      -			if ( computed ) {
      -
      -				// Certain elements can have dimension info if we invisibly show them
      -				// but it must have a current display style that would benefit
      -				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
      -
      -					// Support: Safari 8+
      -					// Table columns in Safari have non-zero offsetWidth & zero
      -					// getBoundingClientRect().width unless display is changed.
      -					// Support: IE <=11 only
      -					// Running getBoundingClientRect on a disconnected node
      -					// in IE throws an error.
      -					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
      -						swap( elem, cssShow, function() {
      -							return getWidthOrHeight( elem, name, extra );
      -						} ) :
      -						getWidthOrHeight( elem, name, extra );
      -			}
      -		},
      -
      -		set: function( elem, value, extra ) {
      -			var matches,
      -				styles = extra && getStyles( elem ),
      -				subtract = extra && augmentWidthOrHeight(
      -					elem,
      -					name,
      -					extra,
      -					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
      -					styles
      -				);
      -
      -			// Convert to pixels if value adjustment is needed
      -			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
      -				( matches[ 3 ] || "px" ) !== "px" ) {
      -
      -				elem.style[ name ] = value;
      -				value = jQuery.css( elem, name );
      -			}
      -
      -			return setPositiveNumber( elem, value, subtract );
      -		}
      -	};
      -} );
      -
      -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
      -	function( elem, computed ) {
      -		if ( computed ) {
      -			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
      -				elem.getBoundingClientRect().left -
      -					swap( elem, { marginLeft: 0 }, function() {
      -						return elem.getBoundingClientRect().left;
      -					} )
      -				) + "px";
      -		}
      -	}
      -);
      -
      -// These hooks are used by animate to expand properties
      -jQuery.each( {
      -	margin: "",
      -	padding: "",
      -	border: "Width"
      -}, function( prefix, suffix ) {
      -	jQuery.cssHooks[ prefix + suffix ] = {
      -		expand: function( value ) {
      -			var i = 0,
      -				expanded = {},
      -
      -				// Assumes a single number if not a string
      -				parts = typeof value === "string" ? value.split( " " ) : [ value ];
      -
      -			for ( ; i < 4; i++ ) {
      -				expanded[ prefix + cssExpand[ i ] + suffix ] =
      -					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
      -			}
      -
      -			return expanded;
      -		}
      -	};
      -
      -	if ( !rmargin.test( prefix ) ) {
      -		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	css: function( name, value ) {
      -		return access( this, function( elem, name, value ) {
      -			var styles, len,
      -				map = {},
      -				i = 0;
      -
      -			if ( jQuery.isArray( name ) ) {
      -				styles = getStyles( elem );
      -				len = name.length;
      -
      -				for ( ; i < len; i++ ) {
      -					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
      -				}
      -
      -				return map;
      -			}
      -
      -			return value !== undefined ?
      -				jQuery.style( elem, name, value ) :
      -				jQuery.css( elem, name );
      -		}, name, value, arguments.length > 1 );
      -	}
      -} );
      -
      -
      -// Based off of the plugin by Clint Helfers, with permission.
      -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
      -jQuery.fn.delay = function( time, type ) {
      -	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
      -	type = type || "fx";
      -
      -	return this.queue( type, function( next, hooks ) {
      -		var timeout = window.setTimeout( next, time );
      -		hooks.stop = function() {
      -			window.clearTimeout( timeout );
      -		};
      -	} );
      -};
      -
      -
      -( function() {
      -	var input = document.createElement( "input" ),
      -		select = document.createElement( "select" ),
      -		opt = select.appendChild( document.createElement( "option" ) );
      -
      -	input.type = "checkbox";
      -
      -	// Support: Android <=4.3 only
      -	// Default value for a checkbox should be "on"
      -	support.checkOn = input.value !== "";
      -
      -	// Support: IE <=11 only
      -	// Must access selectedIndex to make default options select
      -	support.optSelected = opt.selected;
      -
      -	// Support: IE <=11 only
      -	// An input loses its value after becoming a radio
      -	input = document.createElement( "input" );
      -	input.value = "t";
      -	input.type = "radio";
      -	support.radioValue = input.value === "t";
      -} )();
      -
      -
      -var boolHook,
      -	attrHandle = jQuery.expr.attrHandle;
      -
      -jQuery.fn.extend( {
      -	attr: function( name, value ) {
      -		return access( this, jQuery.attr, name, value, arguments.length > 1 );
      -	},
      -
      -	removeAttr: function( name ) {
      -		return this.each( function() {
      -			jQuery.removeAttr( this, name );
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	attr: function( elem, name, value ) {
      -		var ret, hooks,
      -			nType = elem.nodeType;
      -
      -		// Don't get/set attributes on text, comment and attribute nodes
      -		if ( nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		// Fallback to prop when attributes are not supported
      -		if ( typeof elem.getAttribute === "undefined" ) {
      -			return jQuery.prop( elem, name, value );
      -		}
      -
      -		// Attribute hooks are determined by the lowercase version
      -		// Grab necessary hook if one is defined
      -		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
      -			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
      -				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
      -		}
      -
      -		if ( value !== undefined ) {
      -			if ( value === null ) {
      -				jQuery.removeAttr( elem, name );
      -				return;
      -			}
      -
      -			if ( hooks && "set" in hooks &&
      -				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
      -				return ret;
      -			}
      -
      -			elem.setAttribute( name, value + "" );
      -			return value;
      -		}
      -
      -		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
      -			return ret;
      -		}
      -
      -		ret = jQuery.find.attr( elem, name );
      -
      -		// Non-existent attributes return null, we normalize to undefined
      -		return ret == null ? undefined : ret;
      -	},
      -
      -	attrHooks: {
      -		type: {
      -			set: function( elem, value ) {
      -				if ( !support.radioValue && value === "radio" &&
      -					jQuery.nodeName( elem, "input" ) ) {
      -					var val = elem.value;
      -					elem.setAttribute( "type", value );
      -					if ( val ) {
      -						elem.value = val;
      -					}
      -					return value;
      -				}
      -			}
      -		}
      -	},
      -
      -	removeAttr: function( elem, value ) {
      -		var name,
      -			i = 0,
      -
      -			// Attribute names can contain non-HTML whitespace characters
      -			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
      -			attrNames = value && value.match( rnothtmlwhite );
      -
      -		if ( attrNames && elem.nodeType === 1 ) {
      -			while ( ( name = attrNames[ i++ ] ) ) {
      -				elem.removeAttribute( name );
      -			}
      -		}
      -	}
      -} );
      -
      -// Hooks for boolean attributes
      -boolHook = {
      -	set: function( elem, value, name ) {
      -		if ( value === false ) {
      -
      -			// Remove boolean attributes when set to false
      -			jQuery.removeAttr( elem, name );
      -		} else {
      -			elem.setAttribute( name, name );
      -		}
      -		return name;
      -	}
      -};
      -
      -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
      -	var getter = attrHandle[ name ] || jQuery.find.attr;
      -
      -	attrHandle[ name ] = function( elem, name, isXML ) {
      -		var ret, handle,
      -			lowercaseName = name.toLowerCase();
      -
      -		if ( !isXML ) {
      -
      -			// Avoid an infinite loop by temporarily removing this function from the getter
      -			handle = attrHandle[ lowercaseName ];
      -			attrHandle[ lowercaseName ] = ret;
      -			ret = getter( elem, name, isXML ) != null ?
      -				lowercaseName :
      -				null;
      -			attrHandle[ lowercaseName ] = handle;
      -		}
      -		return ret;
      -	};
      -} );
      -
      -
      -
      -
      -var rfocusable = /^(?:input|select|textarea|button)$/i,
      -	rclickable = /^(?:a|area)$/i;
      -
      -jQuery.fn.extend( {
      -	prop: function( name, value ) {
      -		return access( this, jQuery.prop, name, value, arguments.length > 1 );
      -	},
      -
      -	removeProp: function( name ) {
      -		return this.each( function() {
      -			delete this[ jQuery.propFix[ name ] || name ];
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	prop: function( elem, name, value ) {
      -		var ret, hooks,
      -			nType = elem.nodeType;
      -
      -		// Don't get/set properties on text, comment and attribute nodes
      -		if ( nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
      -
      -			// Fix name and attach hooks
      -			name = jQuery.propFix[ name ] || name;
      -			hooks = jQuery.propHooks[ name ];
      -		}
      -
      -		if ( value !== undefined ) {
      -			if ( hooks && "set" in hooks &&
      -				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
      -				return ret;
      -			}
      -
      -			return ( elem[ name ] = value );
      -		}
      -
      -		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
      -			return ret;
      -		}
      -
      -		return elem[ name ];
      -	},
      -
      -	propHooks: {
      -		tabIndex: {
      -			get: function( elem ) {
      -
      -				// Support: IE <=9 - 11 only
      -				// elem.tabIndex doesn't always return the
      -				// correct value when it hasn't been explicitly set
      -				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
      -				// Use proper attribute retrieval(#12072)
      -				var tabindex = jQuery.find.attr( elem, "tabindex" );
      -
      -				if ( tabindex ) {
      -					return parseInt( tabindex, 10 );
      -				}
      -
      -				if (
      -					rfocusable.test( elem.nodeName ) ||
      -					rclickable.test( elem.nodeName ) &&
      -					elem.href
      -				) {
      -					return 0;
      -				}
      -
      -				return -1;
      -			}
      -		}
      -	},
      -
      -	propFix: {
      -		"for": "htmlFor",
      -		"class": "className"
      -	}
      -} );
      -
      -// Support: IE <=11 only
      -// Accessing the selectedIndex property
      -// forces the browser to respect setting selected
      -// on the option
      -// The getter ensures a default option is selected
      -// when in an optgroup
      -// eslint rule "no-unused-expressions" is disabled for this code
      -// since it considers such accessions noop
      -if ( !support.optSelected ) {
      -	jQuery.propHooks.selected = {
      -		get: function( elem ) {
      -
      -			/* eslint no-unused-expressions: "off" */
      -
      -			var parent = elem.parentNode;
      -			if ( parent && parent.parentNode ) {
      -				parent.parentNode.selectedIndex;
      -			}
      -			return null;
      -		},
      -		set: function( elem ) {
      -
      -			/* eslint no-unused-expressions: "off" */
      -
      -			var parent = elem.parentNode;
      -			if ( parent ) {
      -				parent.selectedIndex;
      -
      -				if ( parent.parentNode ) {
      -					parent.parentNode.selectedIndex;
      -				}
      -			}
      -		}
      -	};
      -}
      -
      -jQuery.each( [
      -	"tabIndex",
      -	"readOnly",
      -	"maxLength",
      -	"cellSpacing",
      -	"cellPadding",
      -	"rowSpan",
      -	"colSpan",
      -	"useMap",
      -	"frameBorder",
      -	"contentEditable"
      -], function() {
      -	jQuery.propFix[ this.toLowerCase() ] = this;
      -} );
      -
      -
      -
      -
      -	// Strip and collapse whitespace according to HTML spec
      -	// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
      -	function stripAndCollapse( value ) {
      -		var tokens = value.match( rnothtmlwhite ) || [];
      -		return tokens.join( " " );
      -	}
      -
      -
      -function getClass( elem ) {
      -	return elem.getAttribute && elem.getAttribute( "class" ) || "";
      -}
      -
      -jQuery.fn.extend( {
      -	addClass: function( value ) {
      -		var classes, elem, cur, curValue, clazz, j, finalValue,
      -			i = 0;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( j ) {
      -				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
      -			} );
      -		}
      -
      -		if ( typeof value === "string" && value ) {
      -			classes = value.match( rnothtmlwhite ) || [];
      -
      -			while ( ( elem = this[ i++ ] ) ) {
      -				curValue = getClass( elem );
      -				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
      -
      -				if ( cur ) {
      -					j = 0;
      -					while ( ( clazz = classes[ j++ ] ) ) {
      -						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
      -							cur += clazz + " ";
      -						}
      -					}
      -
      -					// Only assign if different to avoid unneeded rendering.
      -					finalValue = stripAndCollapse( cur );
      -					if ( curValue !== finalValue ) {
      -						elem.setAttribute( "class", finalValue );
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	removeClass: function( value ) {
      -		var classes, elem, cur, curValue, clazz, j, finalValue,
      -			i = 0;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( j ) {
      -				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
      -			} );
      -		}
      -
      -		if ( !arguments.length ) {
      -			return this.attr( "class", "" );
      -		}
      -
      -		if ( typeof value === "string" && value ) {
      -			classes = value.match( rnothtmlwhite ) || [];
      -
      -			while ( ( elem = this[ i++ ] ) ) {
      -				curValue = getClass( elem );
      -
      -				// This expression is here for better compressibility (see addClass)
      -				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
      -
      -				if ( cur ) {
      -					j = 0;
      -					while ( ( clazz = classes[ j++ ] ) ) {
      -
      -						// Remove *all* instances
      -						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
      -							cur = cur.replace( " " + clazz + " ", " " );
      -						}
      -					}
      -
      -					// Only assign if different to avoid unneeded rendering.
      -					finalValue = stripAndCollapse( cur );
      -					if ( curValue !== finalValue ) {
      -						elem.setAttribute( "class", finalValue );
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	toggleClass: function( value, stateVal ) {
      -		var type = typeof value;
      -
      -		if ( typeof stateVal === "boolean" && type === "string" ) {
      -			return stateVal ? this.addClass( value ) : this.removeClass( value );
      -		}
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( i ) {
      -				jQuery( this ).toggleClass(
      -					value.call( this, i, getClass( this ), stateVal ),
      -					stateVal
      -				);
      -			} );
      -		}
      -
      -		return this.each( function() {
      -			var className, i, self, classNames;
      -
      -			if ( type === "string" ) {
      -
      -				// Toggle individual class names
      -				i = 0;
      -				self = jQuery( this );
      -				classNames = value.match( rnothtmlwhite ) || [];
      -
      -				while ( ( className = classNames[ i++ ] ) ) {
      -
      -					// Check each className given, space separated list
      -					if ( self.hasClass( className ) ) {
      -						self.removeClass( className );
      -					} else {
      -						self.addClass( className );
      -					}
      -				}
      -
      -			// Toggle whole class name
      -			} else if ( value === undefined || type === "boolean" ) {
      -				className = getClass( this );
      -				if ( className ) {
      -
      -					// Store className if set
      -					dataPriv.set( this, "__className__", className );
      -				}
      -
      -				// If the element has a class name or if we're passed `false`,
      -				// then remove the whole classname (if there was one, the above saved it).
      -				// Otherwise bring back whatever was previously saved (if anything),
      -				// falling back to the empty string if nothing was stored.
      -				if ( this.setAttribute ) {
      -					this.setAttribute( "class",
      -						className || value === false ?
      -						"" :
      -						dataPriv.get( this, "__className__" ) || ""
      -					);
      -				}
      -			}
      -		} );
      -	},
      -
      -	hasClass: function( selector ) {
      -		var className, elem,
      -			i = 0;
      -
      -		className = " " + selector + " ";
      -		while ( ( elem = this[ i++ ] ) ) {
      -			if ( elem.nodeType === 1 &&
      -				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
      -					return true;
      -			}
      -		}
      -
      -		return false;
      -	}
      -} );
      -
      -
      -
      -
      -var rreturn = /\r/g;
      -
      -jQuery.fn.extend( {
      -	val: function( value ) {
      -		var hooks, ret, isFunction,
      -			elem = this[ 0 ];
      -
      -		if ( !arguments.length ) {
      -			if ( elem ) {
      -				hooks = jQuery.valHooks[ elem.type ] ||
      -					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
      -
      -				if ( hooks &&
      -					"get" in hooks &&
      -					( ret = hooks.get( elem, "value" ) ) !== undefined
      -				) {
      -					return ret;
      -				}
      -
      -				ret = elem.value;
      -
      -				// Handle most common string cases
      -				if ( typeof ret === "string" ) {
      -					return ret.replace( rreturn, "" );
      -				}
      -
      -				// Handle cases where value is null/undef or number
      -				return ret == null ? "" : ret;
      -			}
      -
      -			return;
      -		}
      -
      -		isFunction = jQuery.isFunction( value );
      -
      -		return this.each( function( i ) {
      -			var val;
      -
      -			if ( this.nodeType !== 1 ) {
      -				return;
      -			}
      -
      -			if ( isFunction ) {
      -				val = value.call( this, i, jQuery( this ).val() );
      -			} else {
      -				val = value;
      -			}
      -
      -			// Treat null/undefined as ""; convert numbers to string
      -			if ( val == null ) {
      -				val = "";
      -
      -			} else if ( typeof val === "number" ) {
      -				val += "";
      -
      -			} else if ( jQuery.isArray( val ) ) {
      -				val = jQuery.map( val, function( value ) {
      -					return value == null ? "" : value + "";
      -				} );
      -			}
      -
      -			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
      -
      -			// If set returns undefined, fall back to normal setting
      -			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
      -				this.value = val;
      -			}
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	valHooks: {
      -		option: {
      -			get: function( elem ) {
      -
      -				var val = jQuery.find.attr( elem, "value" );
      -				return val != null ?
      -					val :
      -
      -					// Support: IE <=10 - 11 only
      -					// option.text throws exceptions (#14686, #14858)
      -					// Strip and collapse whitespace
      -					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
      -					stripAndCollapse( jQuery.text( elem ) );
      -			}
      -		},
      -		select: {
      -			get: function( elem ) {
      -				var value, option, i,
      -					options = elem.options,
      -					index = elem.selectedIndex,
      -					one = elem.type === "select-one",
      -					values = one ? null : [],
      -					max = one ? index + 1 : options.length;
      -
      -				if ( index < 0 ) {
      -					i = max;
      -
      -				} else {
      -					i = one ? index : 0;
      -				}
      -
      -				// Loop through all the selected options
      -				for ( ; i < max; i++ ) {
      -					option = options[ i ];
      -
      -					// Support: IE <=9 only
      -					// IE8-9 doesn't update selected after form reset (#2551)
      -					if ( ( option.selected || i === index ) &&
      -
      -							// Don't return options that are disabled or in a disabled optgroup
      -							!option.disabled &&
      -							( !option.parentNode.disabled ||
      -								!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
      -
      -						// Get the specific value for the option
      -						value = jQuery( option ).val();
      -
      -						// We don't need an array for one selects
      -						if ( one ) {
      -							return value;
      -						}
      -
      -						// Multi-Selects return an array
      -						values.push( value );
      -					}
      -				}
      -
      -				return values;
      -			},
      -
      -			set: function( elem, value ) {
      -				var optionSet, option,
      -					options = elem.options,
      -					values = jQuery.makeArray( value ),
      -					i = options.length;
      -
      -				while ( i-- ) {
      -					option = options[ i ];
      -
      -					/* eslint-disable no-cond-assign */
      -
      -					if ( option.selected =
      -						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
      -					) {
      -						optionSet = true;
      -					}
      -
      -					/* eslint-enable no-cond-assign */
      -				}
      -
      -				// Force browsers to behave consistently when non-matching value is set
      -				if ( !optionSet ) {
      -					elem.selectedIndex = -1;
      -				}
      -				return values;
      -			}
      -		}
      -	}
      -} );
      -
      -// Radios and checkboxes getter/setter
      -jQuery.each( [ "radio", "checkbox" ], function() {
      -	jQuery.valHooks[ this ] = {
      -		set: function( elem, value ) {
      -			if ( jQuery.isArray( value ) ) {
      -				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
      -			}
      -		}
      -	};
      -	if ( !support.checkOn ) {
      -		jQuery.valHooks[ this ].get = function( elem ) {
      -			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
      -		};
      -	}
      -} );
      -
      -
      -
      -
      -// Return jQuery for attributes-only inclusion
      -
      -
      -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
      -
      -jQuery.extend( jQuery.event, {
      -
      -	trigger: function( event, data, elem, onlyHandlers ) {
      -
      -		var i, cur, tmp, bubbleType, ontype, handle, special,
      -			eventPath = [ elem || document ],
      -			type = hasOwn.call( event, "type" ) ? event.type : event,
      -			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
      -
      -		cur = tmp = elem = elem || document;
      -
      -		// Don't do events on text and comment nodes
      -		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
      -			return;
      -		}
      -
      -		// focus/blur morphs to focusin/out; ensure we're not firing them right now
      -		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
      -			return;
      -		}
      -
      -		if ( type.indexOf( "." ) > -1 ) {
      -
      -			// Namespaced trigger; create a regexp to match event type in handle()
      -			namespaces = type.split( "." );
      -			type = namespaces.shift();
      -			namespaces.sort();
      -		}
      -		ontype = type.indexOf( ":" ) < 0 && "on" + type;
      -
      -		// Caller can pass in a jQuery.Event object, Object, or just an event type string
      -		event = event[ jQuery.expando ] ?
      -			event :
      -			new jQuery.Event( type, typeof event === "object" && event );
      -
      -		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
      -		event.isTrigger = onlyHandlers ? 2 : 3;
      -		event.namespace = namespaces.join( "." );
      -		event.rnamespace = event.namespace ?
      -			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
      -			null;
      -
      -		// Clean up the event in case it is being reused
      -		event.result = undefined;
      -		if ( !event.target ) {
      -			event.target = elem;
      -		}
      -
      -		// Clone any incoming data and prepend the event, creating the handler arg list
      -		data = data == null ?
      -			[ event ] :
      -			jQuery.makeArray( data, [ event ] );
      -
      -		// Allow special events to draw outside the lines
      -		special = jQuery.event.special[ type ] || {};
      -		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
      -			return;
      -		}
      -
      -		// Determine event propagation path in advance, per W3C events spec (#9951)
      -		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
      -		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
      -
      -			bubbleType = special.delegateType || type;
      -			if ( !rfocusMorph.test( bubbleType + type ) ) {
      -				cur = cur.parentNode;
      -			}
      -			for ( ; cur; cur = cur.parentNode ) {
      -				eventPath.push( cur );
      -				tmp = cur;
      -			}
      -
      -			// Only add window if we got to document (e.g., not plain obj or detached DOM)
      -			if ( tmp === ( elem.ownerDocument || document ) ) {
      -				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
      -			}
      -		}
      -
      -		// Fire handlers on the event path
      -		i = 0;
      -		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
      -
      -			event.type = i > 1 ?
      -				bubbleType :
      -				special.bindType || type;
      -
      -			// jQuery handler
      -			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
      -				dataPriv.get( cur, "handle" );
      -			if ( handle ) {
      -				handle.apply( cur, data );
      -			}
      -
      -			// Native handler
      -			handle = ontype && cur[ ontype ];
      -			if ( handle && handle.apply && acceptData( cur ) ) {
      -				event.result = handle.apply( cur, data );
      -				if ( event.result === false ) {
      -					event.preventDefault();
      -				}
      -			}
      -		}
      -		event.type = type;
      -
      -		// If nobody prevented the default action, do it now
      -		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
      -
      -			if ( ( !special._default ||
      -				special._default.apply( eventPath.pop(), data ) === false ) &&
      -				acceptData( elem ) ) {
      -
      -				// Call a native DOM method on the target with the same name as the event.
      -				// Don't do default actions on window, that's where global variables be (#6170)
      -				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
      -
      -					// Don't re-trigger an onFOO event when we call its FOO() method
      -					tmp = elem[ ontype ];
      -
      -					if ( tmp ) {
      -						elem[ ontype ] = null;
      -					}
      -
      -					// Prevent re-triggering of the same event, since we already bubbled it above
      -					jQuery.event.triggered = type;
      -					elem[ type ]();
      -					jQuery.event.triggered = undefined;
      -
      -					if ( tmp ) {
      -						elem[ ontype ] = tmp;
      -					}
      -				}
      -			}
      -		}
      -
      -		return event.result;
      -	},
      -
      -	// Piggyback on a donor event to simulate a different one
      -	// Used only for `focus(in | out)` events
      -	simulate: function( type, elem, event ) {
      -		var e = jQuery.extend(
      -			new jQuery.Event(),
      -			event,
      -			{
      -				type: type,
      -				isSimulated: true
      -			}
      -		);
      -
      -		jQuery.event.trigger( e, null, elem );
      -	}
      -
      -} );
      -
      -jQuery.fn.extend( {
      -
      -	trigger: function( type, data ) {
      -		return this.each( function() {
      -			jQuery.event.trigger( type, data, this );
      -		} );
      -	},
      -	triggerHandler: function( type, data ) {
      -		var elem = this[ 0 ];
      -		if ( elem ) {
      -			return jQuery.event.trigger( type, data, elem, true );
      -		}
      -	}
      -} );
      -
      -
      -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
      -	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
      -	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
      -	function( i, name ) {
      -
      -	// Handle event binding
      -	jQuery.fn[ name ] = function( data, fn ) {
      -		return arguments.length > 0 ?
      -			this.on( name, null, data, fn ) :
      -			this.trigger( name );
      -	};
      -} );
      -
      -jQuery.fn.extend( {
      -	hover: function( fnOver, fnOut ) {
      -		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
      -	}
      -} );
      -
      -
      -
      -
      -support.focusin = "onfocusin" in window;
      -
      -
      -// Support: Firefox <=44
      -// Firefox doesn't have focus(in | out) events
      -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
      -//
      -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
      -// focus(in | out) events fire after focus & blur events,
      -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
      -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
      -if ( !support.focusin ) {
      -	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
      -
      -		// Attach a single capturing handler on the document while someone wants focusin/focusout
      -		var handler = function( event ) {
      -			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
      -		};
      -
      -		jQuery.event.special[ fix ] = {
      -			setup: function() {
      -				var doc = this.ownerDocument || this,
      -					attaches = dataPriv.access( doc, fix );
      -
      -				if ( !attaches ) {
      -					doc.addEventListener( orig, handler, true );
      -				}
      -				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
      -			},
      -			teardown: function() {
      -				var doc = this.ownerDocument || this,
      -					attaches = dataPriv.access( doc, fix ) - 1;
      -
      -				if ( !attaches ) {
      -					doc.removeEventListener( orig, handler, true );
      -					dataPriv.remove( doc, fix );
      -
      -				} else {
      -					dataPriv.access( doc, fix, attaches );
      -				}
      -			}
      -		};
      -	} );
      -}
      -
      -
      -var
      -	rbracket = /\[\]$/,
      -	rCRLF = /\r?\n/g,
      -	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
      -	rsubmittable = /^(?:input|select|textarea|keygen)/i;
      -
      -function buildParams( prefix, obj, traditional, add ) {
      -	var name;
      -
      -	if ( jQuery.isArray( obj ) ) {
      -
      -		// Serialize array item.
      -		jQuery.each( obj, function( i, v ) {
      -			if ( traditional || rbracket.test( prefix ) ) {
      -
      -				// Treat each array item as a scalar.
      -				add( prefix, v );
      -
      -			} else {
      -
      -				// Item is non-scalar (array or object), encode its numeric index.
      -				buildParams(
      -					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
      -					v,
      -					traditional,
      -					add
      -				);
      -			}
      -		} );
      -
      -	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
      -
      -		// Serialize object item.
      -		for ( name in obj ) {
      -			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
      -		}
      -
      -	} else {
      -
      -		// Serialize scalar item.
      -		add( prefix, obj );
      -	}
      -}
      -
      -// Serialize an array of form elements or a set of
      -// key/values into a query string
      -jQuery.param = function( a, traditional ) {
      -	var prefix,
      -		s = [],
      -		add = function( key, valueOrFunction ) {
      -
      -			// If value is a function, invoke it and use its return value
      -			var value = jQuery.isFunction( valueOrFunction ) ?
      -				valueOrFunction() :
      -				valueOrFunction;
      -
      -			s[ s.length ] = encodeURIComponent( key ) + "=" +
      -				encodeURIComponent( value == null ? "" : value );
      -		};
      -
      -	// If an array was passed in, assume that it is an array of form elements.
      -	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
      -
      -		// Serialize the form elements
      -		jQuery.each( a, function() {
      -			add( this.name, this.value );
      -		} );
      -
      -	} else {
      -
      -		// If traditional, encode the "old" way (the way 1.3.2 or older
      -		// did it), otherwise encode params recursively.
      -		for ( prefix in a ) {
      -			buildParams( prefix, a[ prefix ], traditional, add );
      -		}
      -	}
      -
      -	// Return the resulting serialization
      -	return s.join( "&" );
      -};
      -
      -jQuery.fn.extend( {
      -	serialize: function() {
      -		return jQuery.param( this.serializeArray() );
      -	},
      -	serializeArray: function() {
      -		return this.map( function() {
      -
      -			// Can add propHook for "elements" to filter or add form elements
      -			var elements = jQuery.prop( this, "elements" );
      -			return elements ? jQuery.makeArray( elements ) : this;
      -		} )
      -		.filter( function() {
      -			var type = this.type;
      -
      -			// Use .is( ":disabled" ) so that fieldset[disabled] works
      -			return this.name && !jQuery( this ).is( ":disabled" ) &&
      -				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
      -				( this.checked || !rcheckableType.test( type ) );
      -		} )
      -		.map( function( i, elem ) {
      -			var val = jQuery( this ).val();
      -
      -			if ( val == null ) {
      -				return null;
      -			}
      -
      -			if ( jQuery.isArray( val ) ) {
      -				return jQuery.map( val, function( val ) {
      -					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -				} );
      -			}
      -
      -			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -		} ).get();
      -	}
      -} );
      -
      -
      -jQuery.fn.extend( {
      -	wrapAll: function( html ) {
      -		var wrap;
      -
      -		if ( this[ 0 ] ) {
      -			if ( jQuery.isFunction( html ) ) {
      -				html = html.call( this[ 0 ] );
      -			}
      -
      -			// The elements to wrap the target around
      -			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
      -
      -			if ( this[ 0 ].parentNode ) {
      -				wrap.insertBefore( this[ 0 ] );
      -			}
      -
      -			wrap.map( function() {
      -				var elem = this;
      -
      -				while ( elem.firstElementChild ) {
      -					elem = elem.firstElementChild;
      -				}
      -
      -				return elem;
      -			} ).append( this );
      -		}
      -
      -		return this;
      -	},
      -
      -	wrapInner: function( html ) {
      -		if ( jQuery.isFunction( html ) ) {
      -			return this.each( function( i ) {
      -				jQuery( this ).wrapInner( html.call( this, i ) );
      -			} );
      -		}
      -
      -		return this.each( function() {
      -			var self = jQuery( this ),
      -				contents = self.contents();
      -
      -			if ( contents.length ) {
      -				contents.wrapAll( html );
      -
      -			} else {
      -				self.append( html );
      -			}
      -		} );
      -	},
      -
      -	wrap: function( html ) {
      -		var isFunction = jQuery.isFunction( html );
      -
      -		return this.each( function( i ) {
      -			jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
      -		} );
      -	},
      -
      -	unwrap: function( selector ) {
      -		this.parent( selector ).not( "body" ).each( function() {
      -			jQuery( this ).replaceWith( this.childNodes );
      -		} );
      -		return this;
      -	}
      -} );
      -
      -
      -jQuery.expr.pseudos.hidden = function( elem ) {
      -	return !jQuery.expr.pseudos.visible( elem );
      -};
      -jQuery.expr.pseudos.visible = function( elem ) {
      -	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
      -};
      -
      -
      -
      -
      -// Support: Safari 8 only
      -// In Safari 8 documents created via document.implementation.createHTMLDocument
      -// collapse sibling forms: the second one becomes a child of the first one.
      -// Because of that, this security measure has to be disabled in Safari 8.
      -// https://bugs.webkit.org/show_bug.cgi?id=137337
      -support.createHTMLDocument = ( function() {
      -	var body = document.implementation.createHTMLDocument( "" ).body;
      -	body.innerHTML = "<form></form><form></form>";
      -	return body.childNodes.length === 2;
      -} )();
      -
      -
      -// Argument "data" should be string of html
      -// context (optional): If specified, the fragment will be created in this context,
      -// defaults to document
      -// keepScripts (optional): If true, will include scripts passed in the html string
      -jQuery.parseHTML = function( data, context, keepScripts ) {
      -	if ( typeof data !== "string" ) {
      -		return [];
      -	}
      -	if ( typeof context === "boolean" ) {
      -		keepScripts = context;
      -		context = false;
      -	}
      -
      -	var base, parsed, scripts;
      -
      -	if ( !context ) {
      -
      -		// Stop scripts or inline event handlers from being executed immediately
      -		// by using document.implementation
      -		if ( support.createHTMLDocument ) {
      -			context = document.implementation.createHTMLDocument( "" );
      -
      -			// Set the base href for the created document
      -			// so any parsed elements with URLs
      -			// are based on the document's URL (gh-2965)
      -			base = context.createElement( "base" );
      -			base.href = document.location.href;
      -			context.head.appendChild( base );
      -		} else {
      -			context = document;
      -		}
      -	}
      -
      -	parsed = rsingleTag.exec( data );
      -	scripts = !keepScripts && [];
      -
      -	// Single tag
      -	if ( parsed ) {
      -		return [ context.createElement( parsed[ 1 ] ) ];
      -	}
      -
      -	parsed = buildFragment( [ data ], context, scripts );
      -
      -	if ( scripts && scripts.length ) {
      -		jQuery( scripts ).remove();
      -	}
      -
      -	return jQuery.merge( [], parsed.childNodes );
      -};
      -
      -
      -/**
      - * Gets a window from an element
      - */
      -function getWindow( elem ) {
      -	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
      -}
      -
      -jQuery.offset = {
      -	setOffset: function( elem, options, i ) {
      -		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
      -			position = jQuery.css( elem, "position" ),
      -			curElem = jQuery( elem ),
      -			props = {};
      -
      -		// Set position first, in-case top/left are set even on static elem
      -		if ( position === "static" ) {
      -			elem.style.position = "relative";
      -		}
      -
      -		curOffset = curElem.offset();
      -		curCSSTop = jQuery.css( elem, "top" );
      -		curCSSLeft = jQuery.css( elem, "left" );
      -		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
      -			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
      -
      -		// Need to be able to calculate position if either
      -		// top or left is auto and position is either absolute or fixed
      -		if ( calculatePosition ) {
      -			curPosition = curElem.position();
      -			curTop = curPosition.top;
      -			curLeft = curPosition.left;
      -
      -		} else {
      -			curTop = parseFloat( curCSSTop ) || 0;
      -			curLeft = parseFloat( curCSSLeft ) || 0;
      -		}
      -
      -		if ( jQuery.isFunction( options ) ) {
      -
      -			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
      -			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
      -		}
      -
      -		if ( options.top != null ) {
      -			props.top = ( options.top - curOffset.top ) + curTop;
      -		}
      -		if ( options.left != null ) {
      -			props.left = ( options.left - curOffset.left ) + curLeft;
      -		}
      -
      -		if ( "using" in options ) {
      -			options.using.call( elem, props );
      -
      -		} else {
      -			curElem.css( props );
      -		}
      -	}
      -};
      -
      -jQuery.fn.extend( {
      -	offset: function( options ) {
      -
      -		// Preserve chaining for setter
      -		if ( arguments.length ) {
      -			return options === undefined ?
      -				this :
      -				this.each( function( i ) {
      -					jQuery.offset.setOffset( this, options, i );
      -				} );
      -		}
      -
      -		var docElem, win, rect, doc,
      -			elem = this[ 0 ];
      -
      -		if ( !elem ) {
      -			return;
      -		}
      -
      -		// Support: IE <=11 only
      -		// Running getBoundingClientRect on a
      -		// disconnected node in IE throws an error
      -		if ( !elem.getClientRects().length ) {
      -			return { top: 0, left: 0 };
      -		}
      -
      -		rect = elem.getBoundingClientRect();
      -
      -		// Make sure element is not hidden (display: none)
      -		if ( rect.width || rect.height ) {
      -			doc = elem.ownerDocument;
      -			win = getWindow( doc );
      -			docElem = doc.documentElement;
      -
      -			return {
      -				top: rect.top + win.pageYOffset - docElem.clientTop,
      -				left: rect.left + win.pageXOffset - docElem.clientLeft
      -			};
      -		}
      -
      -		// Return zeros for disconnected and hidden elements (gh-2310)
      -		return rect;
      -	},
      -
      -	position: function() {
      -		if ( !this[ 0 ] ) {
      -			return;
      -		}
      -
      -		var offsetParent, offset,
      -			elem = this[ 0 ],
      -			parentOffset = { top: 0, left: 0 };
      -
      -		// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
      -		// because it is its only offset parent
      -		if ( jQuery.css( elem, "position" ) === "fixed" ) {
      -
      -			// Assume getBoundingClientRect is there when computed position is fixed
      -			offset = elem.getBoundingClientRect();
      -
      -		} else {
      -
      -			// Get *real* offsetParent
      -			offsetParent = this.offsetParent();
      -
      -			// Get correct offsets
      -			offset = this.offset();
      -			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
      -				parentOffset = offsetParent.offset();
      -			}
      -
      -			// Add offsetParent borders
      -			parentOffset = {
      -				top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
      -				left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
      -			};
      -		}
      -
      -		// Subtract parent offsets and element margins
      -		return {
      -			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
      -			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
      -		};
      -	},
      -
      -	// This method will return documentElement in the following cases:
      -	// 1) For the element inside the iframe without offsetParent, this method will return
      -	//    documentElement of the parent window
      -	// 2) For the hidden or detached element
      -	// 3) For body or html element, i.e. in case of the html node - it will return itself
      -	//
      -	// but those exceptions were never presented as a real life use-cases
      -	// and might be considered as more preferable results.
      -	//
      -	// This logic, however, is not guaranteed and can change at any point in the future
      -	offsetParent: function() {
      -		return this.map( function() {
      -			var offsetParent = this.offsetParent;
      -
      -			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
      -				offsetParent = offsetParent.offsetParent;
      -			}
      -
      -			return offsetParent || documentElement;
      -		} );
      -	}
      -} );
      -
      -// Create scrollLeft and scrollTop methods
      -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
      -	var top = "pageYOffset" === prop;
      -
      -	jQuery.fn[ method ] = function( val ) {
      -		return access( this, function( elem, method, val ) {
      -			var win = getWindow( elem );
      -
      -			if ( val === undefined ) {
      -				return win ? win[ prop ] : elem[ method ];
      -			}
      -
      -			if ( win ) {
      -				win.scrollTo(
      -					!top ? val : win.pageXOffset,
      -					top ? val : win.pageYOffset
      -				);
      -
      -			} else {
      -				elem[ method ] = val;
      -			}
      -		}, method, val, arguments.length );
      -	};
      -} );
      -
      -// Support: Safari <=7 - 9.1, Chrome <=37 - 49
      -// Add the top/left cssHooks using jQuery.fn.position
      -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
      -// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
      -// getComputedStyle returns percent when specified for top/left/bottom/right;
      -// rather than make the css module depend on the offset module, just check for it here
      -jQuery.each( [ "top", "left" ], function( i, prop ) {
      -	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
      -		function( elem, computed ) {
      -			if ( computed ) {
      -				computed = curCSS( elem, prop );
      -
      -				// If curCSS returns percentage, fallback to offset
      -				return rnumnonpx.test( computed ) ?
      -					jQuery( elem ).position()[ prop ] + "px" :
      -					computed;
      -			}
      -		}
      -	);
      -} );
      -
      -
      -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
      -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
      -	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
      -		function( defaultExtra, funcName ) {
      -
      -		// Margin is only for outerHeight, outerWidth
      -		jQuery.fn[ funcName ] = function( margin, value ) {
      -			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
      -				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
      -
      -			return access( this, function( elem, type, value ) {
      -				var doc;
      -
      -				if ( jQuery.isWindow( elem ) ) {
      -
      -					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
      -					return funcName.indexOf( "outer" ) === 0 ?
      -						elem[ "inner" + name ] :
      -						elem.document.documentElement[ "client" + name ];
      -				}
      -
      -				// Get document width or height
      -				if ( elem.nodeType === 9 ) {
      -					doc = elem.documentElement;
      -
      -					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
      -					// whichever is greatest
      -					return Math.max(
      -						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
      -						elem.body[ "offset" + name ], doc[ "offset" + name ],
      -						doc[ "client" + name ]
      -					);
      -				}
      -
      -				return value === undefined ?
      -
      -					// Get width or height on the element, requesting but not forcing parseFloat
      -					jQuery.css( elem, type, extra ) :
      -
      -					// Set width or height on the element
      -					jQuery.style( elem, type, value, extra );
      -			}, type, chainable ? margin : undefined, chainable );
      -		};
      -	} );
      -} );
      -
      -
      -// Register as a named AMD module, since jQuery can be concatenated with other
      -// files that may use define, but not via a proper concatenation script that
      -// understands anonymous AMD modules. A named AMD is safest and most robust
      -// way to register. Lowercase jquery is used because AMD module names are
      -// derived from file names, and jQuery is normally delivered in a lowercase
      -// file name. Do this after creating the global so that if an AMD module wants
      -// to call noConflict to hide this version of jQuery, it will work.
      -
      -// Note that for maximum portability, libraries that are not jQuery should
      -// declare themselves as anonymous modules, and avoid setting a global if an
      -// AMD loader is present. jQuery is a special case. For more information, see
      -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
      -
      -if ( typeof define === "function" && define.amd ) {
      -	define( "jquery", [], function() {
      -		return jQuery;
      -	} );
      -}
      -
      -
      -
      -
      -var
      -
      -	// Map over jQuery in case of overwrite
      -	_jQuery = window.jQuery,
      -
      -	// Map over the $ in case of overwrite
      -	_$ = window.$;
      -
      -jQuery.noConflict = function( deep ) {
      -	if ( window.$ === jQuery ) {
      -		window.$ = _$;
      -	}
      -
      -	if ( deep && window.jQuery === jQuery ) {
      -		window.jQuery = _jQuery;
      -	}
      -
      -	return jQuery;
      -};
      -
      -// Expose jQuery and $ identifiers, even in AMD
      -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
      -// and CommonJS for browser emulators (#13566)
      -if ( !noGlobal ) {
      -	window.jQuery = window.$ = jQuery;
      -}
      -
      -
      -
      -
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/dist/jquery.slim.min.js b/bower_components/jquery/dist/jquery.slim.min.js
      deleted file mode 100644
      index a240ca9b2d..0000000000
      --- a/bower_components/jquery/dist/jquery.slim.min.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery v3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated | (c) jQuery Foundation | jquery.org/license */
      -!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/animatedSelector,-effects/Tween,-deprecated",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null==a?f.call(this):a<0?this[a+this.length]:this[a]},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c<b?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:h,sort:c.sort,splice:c.splice},r.extend=r.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||r.isFunction(g)||(g={}),h===i&&(g=this,h--);h<i;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(r.isPlainObject(d)||(e=r.isArray(d)))?(e?(e=!1,f=c&&r.isArray(c)?c:[]):f=c&&r.isPlainObject(c)?c:{},g[b]=r.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},r.extend({expando:"jQuery"+(q+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===r.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){var b=r.type(a);return("number"===b||"string"===b)&&!isNaN(a-parseFloat(a))},isPlainObject:function(a){var b,c;return!(!a||"[object Object]"!==k.call(a))&&(!(b=e(a))||(c=l.call(b,"constructor")&&b.constructor,"function"==typeof c&&m.call(c)===n))},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?j[k.call(a)]||"object":typeof a},globalEval:function(a){p(a)},camelCase:function(a){return a.replace(t,"ms-").replace(u,v)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(w(a)){for(c=a.length;d<c;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(s,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(w(Object(a))?r.merge(c,"string"==typeof a?[a]:a):h.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:i.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;d<c;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;f<g;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,f=0,h=[];if(w(a))for(d=a.length;f<d;f++)e=b(a[f],f,c),null!=e&&h.push(e);else for(f in a)e=b(a[f],f,c),null!=e&&h.push(e);return g.apply([],h)},guid:1,proxy:function(a,b){var c,d,e;if("string"==typeof b&&(c=a[b],b=a,a=c),r.isFunction(a))return d=f.call(arguments,2),e=function(){return a.apply(b||this,d.concat(f.call(arguments)))},e.guid=a.guid=a.guid||r.guid++,e},now:Date.now,support:o}),"function"==typeof Symbol&&(r.fn[Symbol.iterator]=c[Symbol.iterator]),r.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){j["[object "+b+"]"]=b.toLowerCase()});function w(a){var b=!!a&&"length"in a&&a.length,c=r.type(a);return"function"!==c&&!r.isWindow(a)&&("array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){return r.isFunction(b)?r.grep(a,function(a,d){return!!b.call(a,d,a)!==c}):b.nodeType?r.grep(a,function(a){return a===b!==c}):"string"!=typeof b?r.grep(a,function(a){return i.call(b,a)>-1!==c}):C.test(b)?r.filter(b,a,c):(b=r.filter(b,a),r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType}))}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b<d;b++)if(r.contains(e[b],this))return!0}));for(c=this.pushStack([]),b=0;b<d;b++)r.find(a,e[b],c);return d>1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a<c;a++)if(r.contains(this,b[a]))return!0})},closest:function(a,b){var c,d=0,e=this.length,f=[],g="string"!=typeof a&&r(a);if(!A.test(a))for(;d<e;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/[^\x20\t\r\n\f]+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){r.each(b,function(b,c){r.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==r.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return r.each(arguments,function(a,b){var c;while((c=r.inArray(b,f,c))>-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b<f)){if(a=d.apply(h,i),a===c.promise())throw new TypeError("Thenable self-resolution");j=a&&("object"==typeof a||"function"==typeof a)&&a.then,r.isFunction(j)?e?j.call(a,g(f,c,M,e),g(f,c,N,e)):(f++,j.call(a,g(f,c,M,e),g(f,c,N,e),g(f,c,M,c.notifyWith))):(d!==M&&(h=void 0,i=[a]),(e||c.resolveWith)(h,i))}},k=e?j:function(){try{j()}catch(a){r.Deferred.exceptionHook&&r.Deferred.exceptionHook(a,k.stackTrace),b+1>=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,
      -holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h<i;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},T=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function U(){this.expando=r.expando+U.uid++}U.uid=1,U.prototype={cache:function(a){var b=a[this.expando];return b||(b={},T(a)&&(a.nodeType?a[this.expando]=b:Object.defineProperty(a,this.expando,{value:b,configurable:!0}))),b},set:function(a,b,c){var d,e=this.cache(a);if("string"==typeof b)e[r.camelCase(b)]=c;else for(d in b)e[r.camelCase(d)]=b[d];return e},get:function(a,b){return void 0===b?this.cache(a):a[this.expando]&&a[this.expando][r.camelCase(b)]},access:function(a,b,c){return void 0===b||b&&"string"==typeof b&&void 0===c?this.get(a,b):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d=a[this.expando];if(void 0!==d){if(void 0!==b){r.isArray(b)?b=b.map(r.camelCase):(b=r.camelCase(b),b=b in d?[b]:b.match(K)||[]),c=b.length;while(c--)delete d[b[c]]}(void 0===b||r.isEmptyObject(d))&&(a.nodeType?a[this.expando]=void 0:delete a[this.expando])}},hasData:function(a){var b=a[this.expando];return void 0!==b&&!r.isEmptyObject(b)}};var V=new U,W=new U,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Y=/[A-Z]/g;function Z(a){return"true"===a||"false"!==a&&("null"===a?null:a===+a+""?+a:X.test(a)?JSON.parse(a):a)}function $(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(Y,"-$&").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c=Z(c)}catch(e){}W.set(a,b,c)}else c=void 0;return c}r.extend({hasData:function(a){return W.hasData(a)||V.hasData(a)},data:function(a,b,c){return W.access(a,b,c)},removeData:function(a,b){W.remove(a,b)},_data:function(a,b,c){return V.access(a,b,c)},_removeData:function(a,b){V.remove(a,b)}}),r.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=W.get(f),1===f.nodeType&&!V.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=r.camelCase(d.slice(5)),$(f,d,e[d])));V.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){W.set(this,a)}):S(this,function(b){var c;if(f&&void 0===b){if(c=W.get(f,a),void 0!==c)return c;if(c=$(f,a),void 0!==c)return c}else this.each(function(){W.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?r.queue(this[0],a):void 0===b?this:this.each(function(){var c=r.queue(this,a,b);r._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&r.dequeue(this,a)})},dequeue:function(a){return this.each(function(){r.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=r.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=V.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var _=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,aa=new RegExp("^(?:([+-])=|)("+_+")([a-z%]*)$","i"),ba=["Top","Right","Bottom","Left"],ca=function(a,b){return a=b||a,"none"===a.style.display||""===a.style.display&&r.contains(a.ownerDocument,a)&&"none"===r.css(a,"display")},da=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};function ea(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return r.css(a,b,"")},i=h(),j=c&&c[3]||(r.cssNumber[b]?"":"px"),k=(r.cssNumber[b]||"px"!==j&&+i)&&aa.exec(r.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,r.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var fa={};function ga(a){var b,c=a.ownerDocument,d=a.nodeName,e=fa[d];return e?e:(b=c.body.appendChild(c.createElement(d)),e=r.css(b,"display"),b.parentNode.removeChild(b),"none"===e&&(e="block"),fa[d]=e,e)}function ha(a,b){for(var c,d,e=[],f=0,g=a.length;f<g;f++)d=a[f],d.style&&(c=d.style.display,b?("none"===c&&(e[f]=V.get(d,"display")||null,e[f]||(d.style.display="")),""===d.style.display&&ca(d)&&(e[f]=ga(d))):"none"!==c&&(e[f]="none",V.set(d,"display",c)));for(f=0;f<g;f++)null!=e[f]&&(a[f].style.display=e[f]);return a}r.fn.extend({show:function(){return ha(this,!0)},hide:function(){return ha(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){ca(this)?r(this).show():r(this).hide()})}});var ia=/^(?:checkbox|radio)$/i,ja=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,ka=/^$|\/(?:java|ecma)script/i,la={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};la.optgroup=la.option,la.tbody=la.tfoot=la.colgroup=la.caption=la.thead,la.th=la.td;function ma(a,b){var c;return c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[],void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function na(a,b){for(var c=0,d=a.length;c<d;c++)V.set(a[c],"globalEval",!b||V.get(b[c],"globalEval"))}var oa=/<|&#?\w+;/;function pa(a,b,c,d,e){for(var f,g,h,i,j,k,l=b.createDocumentFragment(),m=[],n=0,o=a.length;n<o;n++)if(f=a[n],f||0===f)if("object"===r.type(f))r.merge(m,f.nodeType?[f]:f);else if(oa.test(f)){g=g||l.appendChild(b.createElement("div")),h=(ja.exec(f)||["",""])[1].toLowerCase(),i=la[h]||la._default,g.innerHTML=i[1]+r.htmlPrefilter(f)+i[2],k=i[0];while(k--)g=g.lastChild;r.merge(m,g.childNodes),g=l.firstChild,g.textContent=""}else m.push(b.createTextNode(f));l.textContent="",n=0;while(f=m[n++])if(d&&r.inArray(f,d)>-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=ma(l.appendChild(f),"script"),j&&na(g),c){k=0;while(f=g[k++])ka.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c<arguments.length;c++)i[c]=arguments[c];if(b.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,b)!==!1){h=r.event.handlers.call(this,b,j),c=0;while((f=h[c++])&&!b.isPropagationStopped()){b.currentTarget=f.elem,d=0;while((g=f.handlers[d++])&&!b.isImmediatePropagationStopped())b.rnamespace&&!b.rnamespace.test(g.namespace)||(b.handleObj=g,b.data=g.data,e=((r.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(b.result=e)===!1&&(b.preventDefault(),b.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,b),b.result}},handlers:function(a,b){var c,d,e,f,g,h=[],i=b.delegateCount,j=a.target;if(i&&j.nodeType&&!("click"===a.type&&a.button>=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c<i;c++)d=b[c],e=d.selector+" ",void 0===g[e]&&(g[e]=d.needsContext?r(e,this).index(j)>-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i<b.length&&h.push({elem:j,handlers:b.slice(i)}),h},addProp:function(a,b){Object.defineProperty(r.Event.prototype,a,{enumerable:!0,configurable:!0,get:r.isFunction(b)?function(){if(this.originalEvent)return b(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[a]},set:function(b){Object.defineProperty(this,a,{enumerable:!0,configurable:!0,writable:!0,value:b})}})},fix:function(a){return a[r.expando]?a:new r.Event(a)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==wa()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===wa()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&r.nodeName(this,"input"))return this.click(),!1},_default:function(a){return r.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}}},r.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)},r.Event=function(a,b){return this instanceof r.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ua:va,this.target=a.target&&3===a.target.nodeType?a.target.parentNode:a.target,this.currentTarget=a.currentTarget,this.relatedTarget=a.relatedTarget):this.type=a,b&&r.extend(this,b),this.timeStamp=a&&a.timeStamp||r.now(),void(this[r.expando]=!0)):new r.Event(a,b)},r.Event.prototype={constructor:r.Event,isDefaultPrevented:va,isPropagationStopped:va,isImmediatePropagationStopped:va,isSimulated:!1,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ua,a&&!this.isSimulated&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ua,a&&!this.isSimulated&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ua,a&&!this.isSimulated&&a.stopImmediatePropagation(),this.stopPropagation()}},r.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(a){var b=a.button;return null==a.which&&ra.test(a.type)?null!=a.charCode?a.charCode:a.keyCode:!a.which&&void 0!==b&&sa.test(a.type)?1&b?1:2&b?3:4&b?2:0:a.which}},r.event.addProp),r.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){r.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||r.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),r.fn.extend({on:function(a,b,c,d){return xa(this,a,b,c,d)},one:function(a,b,c,d){return xa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,r(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=va),this.each(function(){r.event.remove(this,a,c,b)})}});var ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/<script|<style|<link/i,Aa=/checked\s*(?:[^=]|=\s*.checked.)/i,Ba=/^true\/(.*)/,Ca=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c<d;c++)r.event.add(b,e,j[e][c])}W.hasData(a)&&(h=W.access(a),i=r.extend({},h),W.set(b,i))}}function Ha(a,b){var c=b.nodeName.toLowerCase();"input"===c&&ia.test(a.type)?b.checked=a.checked:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}function Ia(a,b,c,d){b=g.apply([],b);var e,f,h,i,j,k,l=0,m=a.length,n=m-1,q=b[0],s=r.isFunction(q);if(s||m>1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l<m;l++)j=e,l!==n&&(j=r.clone(j,!0,!0),i&&r.merge(h,ma(j,"script"))),c.call(a[l],j,l);if(i)for(k=h[h.length-1].ownerDocument,r.map(h,Fa),l=0;l<i;l++)j=h[l],ka.test(j.type||"")&&!V.access(j,"globalEval")&&r.contains(k,j)&&(j.src?r._evalUrl&&r._evalUrl(j.src):p(j.textContent.replace(Ca,""),k))}return a}function Ja(a,b,c){for(var d,e=b?r.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||r.cleanData(ma(d)),d.parentNode&&(c&&r.contains(d.ownerDocument,d)&&na(ma(d,"script")),d.parentNode.removeChild(d));return a}r.extend({htmlPrefilter:function(a){return a.replace(ya,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d<e;d++)Ha(f[d],g[d]);if(b)if(c)for(f=f||ma(a),g=g||ma(h),d=0,e=f.length;d<e;d++)Ga(f[d],g[d]);else Ga(a,h);return g=ma(h,"script"),g.length>0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c<d;c++)b=this[c]||{},1===b.nodeType&&(r.cleanData(ma(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ia(this,arguments,function(b){var c=this.parentNode;r.inArray(this,a)<0&&(r.cleanData(ma(this)),c&&c.replaceChild(b,this))},a)}}),r.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){r.fn[a]=function(a){for(var c,d=[],e=r(a),f=e.length-1,g=0;g<=f;g++)c=g===f?this:this.clone(!0),r(e[g])[b](c),h.apply(d,c.get());return this.pushStack(d)}});var Ka=/^margin/,La=new RegExp("^("+_+")(?!px)[a-z%]+$","i"),Ma=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)};!function(){function b(){if(i){i.style.cssText="box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",i.innerHTML="",qa.appendChild(h);var b=a.getComputedStyle(i);c="1%"!==b.top,g="2px"===b.marginLeft,e="4px"===b.width,i.style.marginRight="50%",f="4px"===b.marginRight,qa.removeChild(h),i=null}}var c,e,f,g,h=d.createElement("div"),i=d.createElement("div");i.style&&(i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",o.clearCloneStyle="content-box"===i.style.backgroundClip,h.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",h.appendChild(i),r.extend(o,{pixelPosition:function(){return b(),c},boxSizingReliable:function(){return b(),e},pixelMarginRight:function(){return b(),f},reliableMarginLeft:function(){return b(),g}}))}();function Na(a,b,c){var d,e,f,g,h=a.style;return c=c||Ma(a),c&&(g=c.getPropertyValue(b)||c[b],""!==g||r.contains(a.ownerDocument,a)||(g=r.style(a,b)),!o.pixelMarginRight()&&La.test(g)&&Ka.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function Oa(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Pa=/^(none|table(?!-c[ea]).+)/,Qa={position:"absolute",visibility:"hidden",display:"block"},Ra={letterSpacing:"0",fontWeight:"400"},Sa=["Webkit","Moz","ms"],Ta=d.createElement("div").style;function Ua(a){if(a in Ta)return a;var b=a[0].toUpperCase()+a.slice(1),c=Sa.length;while(c--)if(a=Sa[c]+b,a in Ta)return a}function Va(a,b,c){var d=aa.exec(b);return d?Math.max(0,d[2]-(c||0))+(d[3]||"px"):b}function Wa(a,b,c,d,e){var f,g=0;for(f=c===(d?"border":"content")?4:"width"===b?1:0;f<4;f+=2)"margin"===c&&(g+=r.css(a,c+ba[f],!0,e)),d?("content"===c&&(g-=r.css(a,"padding"+ba[f],!0,e)),"margin"!==c&&(g-=r.css(a,"border"+ba[f]+"Width",!0,e))):(g+=r.css(a,"padding"+ba[f],!0,e),"padding"!==c&&(g+=r.css(a,"border"+ba[f]+"Width",!0,e)));return g}function Xa(a,b,c){var d,e=!0,f=Ma(a),g="border-box"===r.css(a,"boxSizing",!1,f);if(a.getClientRects().length&&(d=a.getBoundingClientRect()[b]),d<=0||null==d){if(d=Na(a,b,f),(d<0||null==d)&&(d=a.style[b]),La.test(d))return d;e=g&&(o.boxSizingReliable()||d===a.style[b]),d=parseFloat(d)||0}return d+Wa(a,b,c||(g?"border":"content"),e,f)+"px"}r.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Na(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=r.camelCase(b),i=a.style;return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=aa.exec(c))&&e[1]&&(c=ea(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(r.cssNumber[h]?"":"px")),o.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=r.camelCase(b);return b=r.cssProps[h]||(r.cssProps[h]=Ua(h)||h),g=r.cssHooks[b]||r.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=Na(a,b,d)),"normal"===e&&b in Ra&&(e=Ra[b]),""===c||c?(f=parseFloat(e),c===!0||isFinite(f)?f||0:e):e}}),r.each(["height","width"],function(a,b){r.cssHooks[b]={get:function(a,c,d){if(c)return!Pa.test(r.css(a,"display"))||a.getClientRects().length&&a.getBoundingClientRect().width?Xa(a,b,d):da(a,Qa,function(){return Xa(a,b,d)})},set:function(a,c,d){var e,f=d&&Ma(a),g=d&&Wa(a,b,d,"border-box"===r.css(a,"boxSizing",!1,f),f);return g&&(e=aa.exec(c))&&"px"!==(e[3]||"px")&&(a.style[b]=c,c=r.css(a,b)),Va(a,c,g)}}}),r.cssHooks.marginLeft=Oa(o.reliableMarginLeft,function(a,b){if(b)return(parseFloat(Na(a,"marginLeft"))||a.getBoundingClientRect().left-da(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}))+"px"}),r.each({margin:"",padding:"",border:"Width"},function(a,b){r.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];d<4;d++)e[a+ba[d]+b]=f[d]||f[d-2]||f[0];return e}},Ka.test(a)||(r.cssHooks[a+b].set=Va)}),r.fn.extend({css:function(a,b){return S(this,function(a,b,c){var d,e,f={},g=0;if(r.isArray(b)){for(d=Ma(a),e=b.length;g<e;g++)f[b[g]]=r.css(a,b[g],!1,d);return f}return void 0!==c?r.style(a,b,c):r.css(a,b)},a,b,arguments.length>1)}}),r.fn.delay=function(b,c){return b=r.fx?r.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a=d.createElement("input"),b=d.createElement("select"),c=b.appendChild(d.createElement("option"));a.type="checkbox",o.checkOn=""!==a.value,o.optSelected=c.selected,a=d.createElement("input"),a.value="t",a.type="radio",o.radioValue="t"===a.value}();var Ya,Za=r.expr.attrHandle;r.fn.extend({attr:function(a,b){return S(this,r.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?Ya:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),Ya={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=Za[b]||r.find.attr;Za[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=Za[g],Za[g]=e,e=null!=c(a,b,d)?g:null,Za[g]=f),e}});var $a=/^(?:input|select|textarea|button)$/i,_a=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):$a.test(a.nodeName)||_a.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function ab(a){var b=a.match(K)||[];return b.join(" ")}function bb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,bb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=bb(c),d=1===c.nodeType&&" "+ab(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=ab(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,bb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=bb(c),d=1===c.nodeType&&" "+ab(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=ab(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,bb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=bb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+ab(bb(c))+" ").indexOf(b)>-1)return!0;return!1}});var cb=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(cb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:ab(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d<i;d++)if(c=e[d],(c.selected||d===f)&&!c.disabled&&(!c.parentNode.disabled||!r.nodeName(c.parentNode,"optgroup"))){if(b=r(c).val(),g)return b;h.push(b)}return h},set:function(a,b){var c,d,e=a.options,f=r.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=r.inArray(r.valHooks.option.get(d),f)>-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var db=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!db.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,db.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var eb=/\[\]$/,fb=/\r?\n/g,gb=/^(?:submit|button|image|reset|file)$/i,hb=/^(?:input|select|textarea|keygen)/i;function ib(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||eb.test(a)?d(a,e):ib(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d);
      -});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)ib(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)ib(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&hb.test(this.nodeName)&&!gb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(fb,"\r\n")}}):{name:b.name,value:c.replace(fb,"\r\n")}}).get()}}),r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},o.createHTMLDocument=function(){var a=d.implementation.createHTMLDocument("").body;return a.innerHTML="<form></form><form></form>",2===a.childNodes.length}(),r.parseHTML=function(a,b,c){if("string"!=typeof a)return[];"boolean"==typeof b&&(c=b,b=!1);var e,f,g;return b||(o.createHTMLDocument?(b=d.implementation.createHTMLDocument(""),e=b.createElement("base"),e.href=d.location.href,b.head.appendChild(e)):b=d),f=B.exec(a),g=!c&&[],f?[b.createElement(f[1])]:(f=pa([a],b,g),g&&g.length&&r(g).remove(),r.merge([],f.childNodes))};function jb(a){return r.isWindow(a)?a:9===a.nodeType&&a.defaultView}r.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=r.css(a,"position"),l=r(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=r.css(a,"top"),i=r.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),r.isFunction(b)&&(b=b.call(a,c,r.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},r.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){r.offset.setOffset(this,a,b)});var b,c,d,e,f=this[0];if(f)return f.getClientRects().length?(d=f.getBoundingClientRect(),d.width||d.height?(e=f.ownerDocument,c=jb(e),b=e.documentElement,{top:d.top+c.pageYOffset-b.clientTop,left:d.left+c.pageXOffset-b.clientLeft}):d):{top:0,left:0}},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===r.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),r.nodeName(a[0],"html")||(d=a.offset()),d={top:d.top+r.css(a[0],"borderTopWidth",!0),left:d.left+r.css(a[0],"borderLeftWidth",!0)}),{top:b.top-d.top-r.css(c,"marginTop",!0),left:b.left-d.left-r.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&"static"===r.css(a,"position"))a=a.offsetParent;return a||qa})}}),r.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c="pageYOffset"===b;r.fn[a]=function(d){return S(this,function(a,d,e){var f=jb(a);return void 0===e?f?f[b]:a[d]:void(f?f.scrollTo(c?f.pageXOffset:e,c?e:f.pageYOffset):a[d]=e)},a,d,arguments.length)}}),r.each(["top","left"],function(a,b){r.cssHooks[b]=Oa(o.pixelPosition,function(a,c){if(c)return c=Na(a,b),La.test(c)?r(a).position()[b]+"px":c})}),r.each({Height:"height",Width:"width"},function(a,b){r.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){r.fn[d]=function(e,f){var g=arguments.length&&(c||"boolean"!=typeof e),h=c||(e===!0||f===!0?"margin":"border");return S(this,function(b,c,e){var f;return r.isWindow(b)?0===d.indexOf("outer")?b["inner"+a]:b.document.documentElement["client"+a]:9===b.nodeType?(f=b.documentElement,Math.max(b.body["scroll"+a],f["scroll"+a],b.body["offset"+a],f["offset"+a],f["client"+a])):void 0===e?r.css(b,c,h):r.style(b,c,e,h)},b,g?e:void 0,g)}})}),"function"==typeof define&&define.amd&&define("jquery",[],function(){return r});var kb=a.jQuery,lb=a.$;return r.noConflict=function(b){return a.$===r&&(a.$=lb),b&&a.jQuery===r&&(a.jQuery=kb),r},b||(a.jQuery=a.$=r),r});
      diff --git a/bower_components/jquery/dist/jquery.slim.min.map b/bower_components/jquery/dist/jquery.slim.min.map
      deleted file mode 100644
      index 8054b9988d..0000000000
      --- a/bower_components/jquery/dist/jquery.slim.min.map
      +++ /dev/null
      @@ -1 +0,0 @@
      -{"version":3,"sources":["jquery.slim.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","DOMEval","code","doc","script","createElement","text","head","appendChild","parentNode","removeChild","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","src","copy","copyIsArray","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","isNaN","parseFloat","proto","Ctor","isEmptyObject","globalEval","camelCase","string","nodeName","toLowerCase","isArrayLike","trim","makeArray","results","inArray","second","grep","invert","callbackInverse","matches","callbackExpect","arg","value","guid","proxy","tmp","args","now","Date","Symbol","iterator","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","nodeType","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","targets","l","closest","index","prevAll","add","addBack","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","createOptions","object","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","disable","lock","fireWith","Identity","v","Thrower","ex","adoptValue","resolve","reject","method","promise","fail","then","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","readyWait","holdReady","hold","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","JSON","parse","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","optgroup","tbody","tfoot","colgroup","caption","th","getAll","setGlobalEval","refElements","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","div","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","event","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","fix","handlerQueue","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rscriptTypeMasked","rcleanScript","manipulationTarget","content","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rmargin","rnumnonpx","getStyles","opener","getComputedStyle","computeStyleTests","cssText","container","divStyle","pixelPositionVal","reliableMarginLeftVal","marginLeft","boxSizingReliableVal","width","marginRight","pixelMarginRightVal","backgroundClip","clearCloneStyle","pixelPosition","boxSizingReliable","pixelMarginRight","reliableMarginLeft","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","rdisplayswap","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","vendorPropName","capName","setPositiveNumber","subtract","max","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","getClientRects","getBoundingClientRect","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","zoom","cssProps","float","origName","isFinite","left","margin","padding","border","prefix","suffix","expand","expanded","parts","delay","time","fx","speeds","timeout","clearTimeout","opt","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","propHooks","tabindex","parseInt","for","class","stripAndCollapse","getClass","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","classNames","hasClass","rreturn","valHooks","optionSet","rfocusMorph","onlyHandlers","bubbleType","ontype","eventPath","isTrigger","parentWindow","simulate","triggerHandler","hover","fnOver","fnOut","focusin","attaches","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","wrapAll","firstElementChild","wrapInner","unwrap","hidden","visible","offsetWidth","offsetHeight","createHTMLDocument","implementation","keepScripts","parsed","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","rect","height","pageYOffset","clientTop","pageXOffset","clientLeft","offsetParent","parentOffset","scrollLeft","scrollTop","scrollTo","Height","Width","","defaultExtra","funcName","define","amd","_jQuery","_$","$","noConflict"],"mappings":"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","file":"jquery.slim.min.js"}
      \ No newline at end of file
      diff --git a/bower_components/jquery/external/sizzle/LICENSE.txt b/bower_components/jquery/external/sizzle/LICENSE.txt
      deleted file mode 100644
      index dd7ce9402c..0000000000
      --- a/bower_components/jquery/external/sizzle/LICENSE.txt
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -Copyright jQuery Foundation and other contributors, https://jquery.org/
      -
      -This software consists of voluntary contributions made by many
      -individuals. For exact contribution history, see the revision history
      -available at https://github.com/jquery/sizzle
      -
      -The following license applies to all parts of this software except as
      -documented below:
      -
      -====
      -
      -Permission is hereby granted, free of charge, to any person obtaining
      -a copy of this software and associated documentation files (the
      -"Software"), to deal in the Software without restriction, including
      -without limitation the rights to use, copy, modify, merge, publish,
      -distribute, sublicense, and/or sell copies of the Software, and to
      -permit persons to whom the Software is furnished to do so, subject to
      -the following conditions:
      -
      -The above copyright notice and this permission notice shall be
      -included in all copies or substantial portions of the Software.
      -
      -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
      -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
      -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
      -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
      -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
      -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
      -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
      -
      -====
      -
      -All files located in the node_modules and external directories are
      -externally maintained libraries used by this software which have their
      -own licenses; we recommend you read them, as their terms may differ from
      -the terms above.
      diff --git a/bower_components/jquery/external/sizzle/dist/sizzle.js b/bower_components/jquery/external/sizzle/dist/sizzle.js
      deleted file mode 100644
      index bfa0793136..0000000000
      --- a/bower_components/jquery/external/sizzle/dist/sizzle.js
      +++ /dev/null
      @@ -1,2272 +0,0 @@
      -/*!
      - * Sizzle CSS Selector Engine v2.3.3
      - * https://sizzlejs.com/
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * http://jquery.org/license
      - *
      - * Date: 2016-08-08
      - */
      -(function( window ) {
      -
      -var i,
      -	support,
      -	Expr,
      -	getText,
      -	isXML,
      -	tokenize,
      -	compile,
      -	select,
      -	outermostContext,
      -	sortInput,
      -	hasDuplicate,
      -
      -	// Local document vars
      -	setDocument,
      -	document,
      -	docElem,
      -	documentIsHTML,
      -	rbuggyQSA,
      -	rbuggyMatches,
      -	matches,
      -	contains,
      -
      -	// Instance-specific data
      -	expando = "sizzle" + 1 * new Date(),
      -	preferredDoc = window.document,
      -	dirruns = 0,
      -	done = 0,
      -	classCache = createCache(),
      -	tokenCache = createCache(),
      -	compilerCache = createCache(),
      -	sortOrder = function( a, b ) {
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -		}
      -		return 0;
      -	},
      -
      -	// Instance methods
      -	hasOwn = ({}).hasOwnProperty,
      -	arr = [],
      -	pop = arr.pop,
      -	push_native = arr.push,
      -	push = arr.push,
      -	slice = arr.slice,
      -	// Use a stripped-down indexOf as it's faster than native
      -	// https://jsperf.com/thor-indexof-vs-for/5
      -	indexOf = function( list, elem ) {
      -		var i = 0,
      -			len = list.length;
      -		for ( ; i < len; i++ ) {
      -			if ( list[i] === elem ) {
      -				return i;
      -			}
      -		}
      -		return -1;
      -	},
      -
      -	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
      -
      -	// Regular expressions
      -
      -	// http://www.w3.org/TR/css3-selectors/#whitespace
      -	whitespace = "[\\x20\\t\\r\\n\\f]",
      -
      -	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
      -	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
      -
      -	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
      -	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
      -		// Operator (capture 2)
      -		"*([*^$|!~]?=)" + whitespace +
      -		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
      -		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
      -		"*\\]",
      -
      -	pseudos = ":(" + identifier + ")(?:\\((" +
      -		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
      -		// 1. quoted (capture 3; capture 4 or capture 5)
      -		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
      -		// 2. simple (capture 6)
      -		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
      -		// 3. anything else (capture 2)
      -		".*" +
      -		")\\)|)",
      -
      -	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
      -	rwhitespace = new RegExp( whitespace + "+", "g" ),
      -	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
      -
      -	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
      -	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
      -
      -	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
      -
      -	rpseudo = new RegExp( pseudos ),
      -	ridentifier = new RegExp( "^" + identifier + "$" ),
      -
      -	matchExpr = {
      -		"ID": new RegExp( "^#(" + identifier + ")" ),
      -		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
      -		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
      -		"ATTR": new RegExp( "^" + attributes ),
      -		"PSEUDO": new RegExp( "^" + pseudos ),
      -		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
      -			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
      -			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
      -		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
      -		// For use in libraries implementing .is()
      -		// We use this for POS matching in `select`
      -		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
      -			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
      -	},
      -
      -	rinputs = /^(?:input|select|textarea|button)$/i,
      -	rheader = /^h\d$/i,
      -
      -	rnative = /^[^{]+\{\s*\[native \w/,
      -
      -	// Easily-parseable/retrievable ID or TAG or CLASS selectors
      -	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
      -
      -	rsibling = /[+~]/,
      -
      -	// CSS escapes
      -	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
      -	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
      -	funescape = function( _, escaped, escapedWhitespace ) {
      -		var high = "0x" + escaped - 0x10000;
      -		// NaN means non-codepoint
      -		// Support: Firefox<24
      -		// Workaround erroneous numeric interpretation of +"0x"
      -		return high !== high || escapedWhitespace ?
      -			escaped :
      -			high < 0 ?
      -				// BMP codepoint
      -				String.fromCharCode( high + 0x10000 ) :
      -				// Supplemental Plane codepoint (surrogate pair)
      -				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
      -	},
      -
      -	// CSS string/identifier serialization
      -	// https://drafts.csswg.org/cssom/#common-serializing-idioms
      -	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
      -	fcssescape = function( ch, asCodePoint ) {
      -		if ( asCodePoint ) {
      -
      -			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
      -			if ( ch === "\0" ) {
      -				return "\uFFFD";
      -			}
      -
      -			// Control characters and (dependent upon position) numbers get escaped as code points
      -			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
      -		}
      -
      -		// Other potentially-special ASCII characters get backslash-escaped
      -		return "\\" + ch;
      -	},
      -
      -	// Used for iframes
      -	// See setDocument()
      -	// Removing the function wrapper causes a "Permission Denied"
      -	// error in IE
      -	unloadHandler = function() {
      -		setDocument();
      -	},
      -
      -	disabledAncestor = addCombinator(
      -		function( elem ) {
      -			return elem.disabled === true && ("form" in elem || "label" in elem);
      -		},
      -		{ dir: "parentNode", next: "legend" }
      -	);
      -
      -// Optimize for push.apply( _, NodeList )
      -try {
      -	push.apply(
      -		(arr = slice.call( preferredDoc.childNodes )),
      -		preferredDoc.childNodes
      -	);
      -	// Support: Android<4.0
      -	// Detect silently failing push.apply
      -	arr[ preferredDoc.childNodes.length ].nodeType;
      -} catch ( e ) {
      -	push = { apply: arr.length ?
      -
      -		// Leverage slice if possible
      -		function( target, els ) {
      -			push_native.apply( target, slice.call(els) );
      -		} :
      -
      -		// Support: IE<9
      -		// Otherwise append directly
      -		function( target, els ) {
      -			var j = target.length,
      -				i = 0;
      -			// Can't trust NodeList.length
      -			while ( (target[j++] = els[i++]) ) {}
      -			target.length = j - 1;
      -		}
      -	};
      -}
      -
      -function Sizzle( selector, context, results, seed ) {
      -	var m, i, elem, nid, match, groups, newSelector,
      -		newContext = context && context.ownerDocument,
      -
      -		// nodeType defaults to 9, since context defaults to document
      -		nodeType = context ? context.nodeType : 9;
      -
      -	results = results || [];
      -
      -	// Return early from calls with invalid selector or context
      -	if ( typeof selector !== "string" || !selector ||
      -		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
      -
      -		return results;
      -	}
      -
      -	// Try to shortcut find operations (as opposed to filters) in HTML documents
      -	if ( !seed ) {
      -
      -		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
      -			setDocument( context );
      -		}
      -		context = context || document;
      -
      -		if ( documentIsHTML ) {
      -
      -			// If the selector is sufficiently simple, try using a "get*By*" DOM method
      -			// (excepting DocumentFragment context, where the methods don't exist)
      -			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
      -
      -				// ID selector
      -				if ( (m = match[1]) ) {
      -
      -					// Document context
      -					if ( nodeType === 9 ) {
      -						if ( (elem = context.getElementById( m )) ) {
      -
      -							// Support: IE, Opera, Webkit
      -							// TODO: identify versions
      -							// getElementById can match elements by name instead of ID
      -							if ( elem.id === m ) {
      -								results.push( elem );
      -								return results;
      -							}
      -						} else {
      -							return results;
      -						}
      -
      -					// Element context
      -					} else {
      -
      -						// Support: IE, Opera, Webkit
      -						// TODO: identify versions
      -						// getElementById can match elements by name instead of ID
      -						if ( newContext && (elem = newContext.getElementById( m )) &&
      -							contains( context, elem ) &&
      -							elem.id === m ) {
      -
      -							results.push( elem );
      -							return results;
      -						}
      -					}
      -
      -				// Type selector
      -				} else if ( match[2] ) {
      -					push.apply( results, context.getElementsByTagName( selector ) );
      -					return results;
      -
      -				// Class selector
      -				} else if ( (m = match[3]) && support.getElementsByClassName &&
      -					context.getElementsByClassName ) {
      -
      -					push.apply( results, context.getElementsByClassName( m ) );
      -					return results;
      -				}
      -			}
      -
      -			// Take advantage of querySelectorAll
      -			if ( support.qsa &&
      -				!compilerCache[ selector + " " ] &&
      -				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
      -
      -				if ( nodeType !== 1 ) {
      -					newContext = context;
      -					newSelector = selector;
      -
      -				// qSA looks outside Element context, which is not what we want
      -				// Thanks to Andrew Dupont for this workaround technique
      -				// Support: IE <=8
      -				// Exclude object elements
      -				} else if ( context.nodeName.toLowerCase() !== "object" ) {
      -
      -					// Capture the context ID, setting it first if necessary
      -					if ( (nid = context.getAttribute( "id" )) ) {
      -						nid = nid.replace( rcssescape, fcssescape );
      -					} else {
      -						context.setAttribute( "id", (nid = expando) );
      -					}
      -
      -					// Prefix every selector in the list
      -					groups = tokenize( selector );
      -					i = groups.length;
      -					while ( i-- ) {
      -						groups[i] = "#" + nid + " " + toSelector( groups[i] );
      -					}
      -					newSelector = groups.join( "," );
      -
      -					// Expand context for sibling selectors
      -					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
      -						context;
      -				}
      -
      -				if ( newSelector ) {
      -					try {
      -						push.apply( results,
      -							newContext.querySelectorAll( newSelector )
      -						);
      -						return results;
      -					} catch ( qsaError ) {
      -					} finally {
      -						if ( nid === expando ) {
      -							context.removeAttribute( "id" );
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	// All others
      -	return select( selector.replace( rtrim, "$1" ), context, results, seed );
      -}
      -
      -/**
      - * Create key-value caches of limited size
      - * @returns {function(string, object)} Returns the Object data after storing it on itself with
      - *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
      - *	deleting the oldest entry
      - */
      -function createCache() {
      -	var keys = [];
      -
      -	function cache( key, value ) {
      -		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
      -		if ( keys.push( key + " " ) > Expr.cacheLength ) {
      -			// Only keep the most recent entries
      -			delete cache[ keys.shift() ];
      -		}
      -		return (cache[ key + " " ] = value);
      -	}
      -	return cache;
      -}
      -
      -/**
      - * Mark a function for special use by Sizzle
      - * @param {Function} fn The function to mark
      - */
      -function markFunction( fn ) {
      -	fn[ expando ] = true;
      -	return fn;
      -}
      -
      -/**
      - * Support testing using an element
      - * @param {Function} fn Passed the created element and returns a boolean result
      - */
      -function assert( fn ) {
      -	var el = document.createElement("fieldset");
      -
      -	try {
      -		return !!fn( el );
      -	} catch (e) {
      -		return false;
      -	} finally {
      -		// Remove from its parent by default
      -		if ( el.parentNode ) {
      -			el.parentNode.removeChild( el );
      -		}
      -		// release memory in IE
      -		el = null;
      -	}
      -}
      -
      -/**
      - * Adds the same handler for all of the specified attrs
      - * @param {String} attrs Pipe-separated list of attributes
      - * @param {Function} handler The method that will be applied
      - */
      -function addHandle( attrs, handler ) {
      -	var arr = attrs.split("|"),
      -		i = arr.length;
      -
      -	while ( i-- ) {
      -		Expr.attrHandle[ arr[i] ] = handler;
      -	}
      -}
      -
      -/**
      - * Checks document order of two siblings
      - * @param {Element} a
      - * @param {Element} b
      - * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
      - */
      -function siblingCheck( a, b ) {
      -	var cur = b && a,
      -		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
      -			a.sourceIndex - b.sourceIndex;
      -
      -	// Use IE sourceIndex if available on both nodes
      -	if ( diff ) {
      -		return diff;
      -	}
      -
      -	// Check if b follows a
      -	if ( cur ) {
      -		while ( (cur = cur.nextSibling) ) {
      -			if ( cur === b ) {
      -				return -1;
      -			}
      -		}
      -	}
      -
      -	return a ? 1 : -1;
      -}
      -
      -/**
      - * Returns a function to use in pseudos for input types
      - * @param {String} type
      - */
      -function createInputPseudo( type ) {
      -	return function( elem ) {
      -		var name = elem.nodeName.toLowerCase();
      -		return name === "input" && elem.type === type;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for buttons
      - * @param {String} type
      - */
      -function createButtonPseudo( type ) {
      -	return function( elem ) {
      -		var name = elem.nodeName.toLowerCase();
      -		return (name === "input" || name === "button") && elem.type === type;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for :enabled/:disabled
      - * @param {Boolean} disabled true for :disabled; false for :enabled
      - */
      -function createDisabledPseudo( disabled ) {
      -
      -	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
      -	return function( elem ) {
      -
      -		// Only certain elements can match :enabled or :disabled
      -		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
      -		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
      -		if ( "form" in elem ) {
      -
      -			// Check for inherited disabledness on relevant non-disabled elements:
      -			// * listed form-associated elements in a disabled fieldset
      -			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
      -			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
      -			// * option elements in a disabled optgroup
      -			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
      -			// All such elements have a "form" property.
      -			if ( elem.parentNode && elem.disabled === false ) {
      -
      -				// Option elements defer to a parent optgroup if present
      -				if ( "label" in elem ) {
      -					if ( "label" in elem.parentNode ) {
      -						return elem.parentNode.disabled === disabled;
      -					} else {
      -						return elem.disabled === disabled;
      -					}
      -				}
      -
      -				// Support: IE 6 - 11
      -				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
      -				return elem.isDisabled === disabled ||
      -
      -					// Where there is no isDisabled, check manually
      -					/* jshint -W018 */
      -					elem.isDisabled !== !disabled &&
      -						disabledAncestor( elem ) === disabled;
      -			}
      -
      -			return elem.disabled === disabled;
      -
      -		// Try to winnow out elements that can't be disabled before trusting the disabled property.
      -		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
      -		// even exist on them, let alone have a boolean value.
      -		} else if ( "label" in elem ) {
      -			return elem.disabled === disabled;
      -		}
      -
      -		// Remaining elements are neither :enabled nor :disabled
      -		return false;
      -	};
      -}
      -
      -/**
      - * Returns a function to use in pseudos for positionals
      - * @param {Function} fn
      - */
      -function createPositionalPseudo( fn ) {
      -	return markFunction(function( argument ) {
      -		argument = +argument;
      -		return markFunction(function( seed, matches ) {
      -			var j,
      -				matchIndexes = fn( [], seed.length, argument ),
      -				i = matchIndexes.length;
      -
      -			// Match elements found at the specified indexes
      -			while ( i-- ) {
      -				if ( seed[ (j = matchIndexes[i]) ] ) {
      -					seed[j] = !(matches[j] = seed[j]);
      -				}
      -			}
      -		});
      -	});
      -}
      -
      -/**
      - * Checks a node for validity as a Sizzle context
      - * @param {Element|Object=} context
      - * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
      - */
      -function testContext( context ) {
      -	return context && typeof context.getElementsByTagName !== "undefined" && context;
      -}
      -
      -// Expose support vars for convenience
      -support = Sizzle.support = {};
      -
      -/**
      - * Detects XML nodes
      - * @param {Element|Object} elem An element or a document
      - * @returns {Boolean} True iff elem is a non-HTML XML node
      - */
      -isXML = Sizzle.isXML = function( elem ) {
      -	// documentElement is verified for cases where it doesn't yet exist
      -	// (such as loading iframes in IE - #4833)
      -	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
      -	return documentElement ? documentElement.nodeName !== "HTML" : false;
      -};
      -
      -/**
      - * Sets document-related variables once based on the current document
      - * @param {Element|Object} [doc] An element or document object to use to set the document
      - * @returns {Object} Returns the current document
      - */
      -setDocument = Sizzle.setDocument = function( node ) {
      -	var hasCompare, subWindow,
      -		doc = node ? node.ownerDocument || node : preferredDoc;
      -
      -	// Return early if doc is invalid or already selected
      -	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
      -		return document;
      -	}
      -
      -	// Update global variables
      -	document = doc;
      -	docElem = document.documentElement;
      -	documentIsHTML = !isXML( document );
      -
      -	// Support: IE 9-11, Edge
      -	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
      -	if ( preferredDoc !== document &&
      -		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
      -
      -		// Support: IE 11, Edge
      -		if ( subWindow.addEventListener ) {
      -			subWindow.addEventListener( "unload", unloadHandler, false );
      -
      -		// Support: IE 9 - 10 only
      -		} else if ( subWindow.attachEvent ) {
      -			subWindow.attachEvent( "onunload", unloadHandler );
      -		}
      -	}
      -
      -	/* Attributes
      -	---------------------------------------------------------------------- */
      -
      -	// Support: IE<8
      -	// Verify that getAttribute really returns attributes and not properties
      -	// (excepting IE8 booleans)
      -	support.attributes = assert(function( el ) {
      -		el.className = "i";
      -		return !el.getAttribute("className");
      -	});
      -
      -	/* getElement(s)By*
      -	---------------------------------------------------------------------- */
      -
      -	// Check if getElementsByTagName("*") returns only elements
      -	support.getElementsByTagName = assert(function( el ) {
      -		el.appendChild( document.createComment("") );
      -		return !el.getElementsByTagName("*").length;
      -	});
      -
      -	// Support: IE<9
      -	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
      -
      -	// Support: IE<10
      -	// Check if getElementById returns elements by name
      -	// The broken getElementById methods don't pick up programmatically-set names,
      -	// so use a roundabout getElementsByName test
      -	support.getById = assert(function( el ) {
      -		docElem.appendChild( el ).id = expando;
      -		return !document.getElementsByName || !document.getElementsByName( expando ).length;
      -	});
      -
      -	// ID filter and find
      -	if ( support.getById ) {
      -		Expr.filter["ID"] = function( id ) {
      -			var attrId = id.replace( runescape, funescape );
      -			return function( elem ) {
      -				return elem.getAttribute("id") === attrId;
      -			};
      -		};
      -		Expr.find["ID"] = function( id, context ) {
      -			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
      -				var elem = context.getElementById( id );
      -				return elem ? [ elem ] : [];
      -			}
      -		};
      -	} else {
      -		Expr.filter["ID"] =  function( id ) {
      -			var attrId = id.replace( runescape, funescape );
      -			return function( elem ) {
      -				var node = typeof elem.getAttributeNode !== "undefined" &&
      -					elem.getAttributeNode("id");
      -				return node && node.value === attrId;
      -			};
      -		};
      -
      -		// Support: IE 6 - 7 only
      -		// getElementById is not reliable as a find shortcut
      -		Expr.find["ID"] = function( id, context ) {
      -			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
      -				var node, i, elems,
      -					elem = context.getElementById( id );
      -
      -				if ( elem ) {
      -
      -					// Verify the id attribute
      -					node = elem.getAttributeNode("id");
      -					if ( node && node.value === id ) {
      -						return [ elem ];
      -					}
      -
      -					// Fall back on getElementsByName
      -					elems = context.getElementsByName( id );
      -					i = 0;
      -					while ( (elem = elems[i++]) ) {
      -						node = elem.getAttributeNode("id");
      -						if ( node && node.value === id ) {
      -							return [ elem ];
      -						}
      -					}
      -				}
      -
      -				return [];
      -			}
      -		};
      -	}
      -
      -	// Tag
      -	Expr.find["TAG"] = support.getElementsByTagName ?
      -		function( tag, context ) {
      -			if ( typeof context.getElementsByTagName !== "undefined" ) {
      -				return context.getElementsByTagName( tag );
      -
      -			// DocumentFragment nodes don't have gEBTN
      -			} else if ( support.qsa ) {
      -				return context.querySelectorAll( tag );
      -			}
      -		} :
      -
      -		function( tag, context ) {
      -			var elem,
      -				tmp = [],
      -				i = 0,
      -				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
      -				results = context.getElementsByTagName( tag );
      -
      -			// Filter out possible comments
      -			if ( tag === "*" ) {
      -				while ( (elem = results[i++]) ) {
      -					if ( elem.nodeType === 1 ) {
      -						tmp.push( elem );
      -					}
      -				}
      -
      -				return tmp;
      -			}
      -			return results;
      -		};
      -
      -	// Class
      -	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
      -		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
      -			return context.getElementsByClassName( className );
      -		}
      -	};
      -
      -	/* QSA/matchesSelector
      -	---------------------------------------------------------------------- */
      -
      -	// QSA and matchesSelector support
      -
      -	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
      -	rbuggyMatches = [];
      -
      -	// qSa(:focus) reports false when true (Chrome 21)
      -	// We allow this because of a bug in IE8/9 that throws an error
      -	// whenever `document.activeElement` is accessed on an iframe
      -	// So, we allow :focus to pass through QSA all the time to avoid the IE error
      -	// See https://bugs.jquery.com/ticket/13378
      -	rbuggyQSA = [];
      -
      -	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
      -		// Build QSA regex
      -		// Regex strategy adopted from Diego Perini
      -		assert(function( el ) {
      -			// Select is set to empty string on purpose
      -			// This is to test IE's treatment of not explicitly
      -			// setting a boolean content attribute,
      -			// since its presence should be enough
      -			// https://bugs.jquery.com/ticket/12359
      -			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
      -				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
      -				"<option selected=''></option></select>";
      -
      -			// Support: IE8, Opera 11-12.16
      -			// Nothing should be selected when empty strings follow ^= or $= or *=
      -			// The test attribute must be unknown in Opera but "safe" for WinRT
      -			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
      -			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
      -				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
      -			}
      -
      -			// Support: IE8
      -			// Boolean attributes and "value" are not treated correctly
      -			if ( !el.querySelectorAll("[selected]").length ) {
      -				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
      -			}
      -
      -			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
      -			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
      -				rbuggyQSA.push("~=");
      -			}
      -
      -			// Webkit/Opera - :checked should return selected option elements
      -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -			// IE8 throws error here and will not see later tests
      -			if ( !el.querySelectorAll(":checked").length ) {
      -				rbuggyQSA.push(":checked");
      -			}
      -
      -			// Support: Safari 8+, iOS 8+
      -			// https://bugs.webkit.org/show_bug.cgi?id=136851
      -			// In-page `selector#id sibling-combinator selector` fails
      -			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
      -				rbuggyQSA.push(".#.+[+~]");
      -			}
      -		});
      -
      -		assert(function( el ) {
      -			el.innerHTML = "<a href='' disabled='disabled'></a>" +
      -				"<select disabled='disabled'><option/></select>";
      -
      -			// Support: Windows 8 Native Apps
      -			// The type and name attributes are restricted during .innerHTML assignment
      -			var input = document.createElement("input");
      -			input.setAttribute( "type", "hidden" );
      -			el.appendChild( input ).setAttribute( "name", "D" );
      -
      -			// Support: IE8
      -			// Enforce case-sensitivity of name attribute
      -			if ( el.querySelectorAll("[name=d]").length ) {
      -				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
      -			}
      -
      -			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
      -			// IE8 throws error here and will not see later tests
      -			if ( el.querySelectorAll(":enabled").length !== 2 ) {
      -				rbuggyQSA.push( ":enabled", ":disabled" );
      -			}
      -
      -			// Support: IE9-11+
      -			// IE's :disabled selector does not pick up the children of disabled fieldsets
      -			docElem.appendChild( el ).disabled = true;
      -			if ( el.querySelectorAll(":disabled").length !== 2 ) {
      -				rbuggyQSA.push( ":enabled", ":disabled" );
      -			}
      -
      -			// Opera 10-11 does not throw on post-comma invalid pseudos
      -			el.querySelectorAll("*,:x");
      -			rbuggyQSA.push(",.*:");
      -		});
      -	}
      -
      -	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
      -		docElem.webkitMatchesSelector ||
      -		docElem.mozMatchesSelector ||
      -		docElem.oMatchesSelector ||
      -		docElem.msMatchesSelector) )) ) {
      -
      -		assert(function( el ) {
      -			// Check to see if it's possible to do matchesSelector
      -			// on a disconnected node (IE 9)
      -			support.disconnectedMatch = matches.call( el, "*" );
      -
      -			// This should fail with an exception
      -			// Gecko does not error, returns false instead
      -			matches.call( el, "[s!='']:x" );
      -			rbuggyMatches.push( "!=", pseudos );
      -		});
      -	}
      -
      -	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
      -	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
      -
      -	/* Contains
      -	---------------------------------------------------------------------- */
      -	hasCompare = rnative.test( docElem.compareDocumentPosition );
      -
      -	// Element contains another
      -	// Purposefully self-exclusive
      -	// As in, an element does not contain itself
      -	contains = hasCompare || rnative.test( docElem.contains ) ?
      -		function( a, b ) {
      -			var adown = a.nodeType === 9 ? a.documentElement : a,
      -				bup = b && b.parentNode;
      -			return a === bup || !!( bup && bup.nodeType === 1 && (
      -				adown.contains ?
      -					adown.contains( bup ) :
      -					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
      -			));
      -		} :
      -		function( a, b ) {
      -			if ( b ) {
      -				while ( (b = b.parentNode) ) {
      -					if ( b === a ) {
      -						return true;
      -					}
      -				}
      -			}
      -			return false;
      -		};
      -
      -	/* Sorting
      -	---------------------------------------------------------------------- */
      -
      -	// Document order sorting
      -	sortOrder = hasCompare ?
      -	function( a, b ) {
      -
      -		// Flag for duplicate removal
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -		}
      -
      -		// Sort on method existence if only one input has compareDocumentPosition
      -		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
      -		if ( compare ) {
      -			return compare;
      -		}
      -
      -		// Calculate position if both inputs belong to the same document
      -		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
      -			a.compareDocumentPosition( b ) :
      -
      -			// Otherwise we know they are disconnected
      -			1;
      -
      -		// Disconnected nodes
      -		if ( compare & 1 ||
      -			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
      -
      -			// Choose the first element that is related to our preferred document
      -			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
      -				return -1;
      -			}
      -			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
      -				return 1;
      -			}
      -
      -			// Maintain original order
      -			return sortInput ?
      -				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
      -				0;
      -		}
      -
      -		return compare & 4 ? -1 : 1;
      -	} :
      -	function( a, b ) {
      -		// Exit early if the nodes are identical
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -		}
      -
      -		var cur,
      -			i = 0,
      -			aup = a.parentNode,
      -			bup = b.parentNode,
      -			ap = [ a ],
      -			bp = [ b ];
      -
      -		// Parentless nodes are either documents or disconnected
      -		if ( !aup || !bup ) {
      -			return a === document ? -1 :
      -				b === document ? 1 :
      -				aup ? -1 :
      -				bup ? 1 :
      -				sortInput ?
      -				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
      -				0;
      -
      -		// If the nodes are siblings, we can do a quick check
      -		} else if ( aup === bup ) {
      -			return siblingCheck( a, b );
      -		}
      -
      -		// Otherwise we need full lists of their ancestors for comparison
      -		cur = a;
      -		while ( (cur = cur.parentNode) ) {
      -			ap.unshift( cur );
      -		}
      -		cur = b;
      -		while ( (cur = cur.parentNode) ) {
      -			bp.unshift( cur );
      -		}
      -
      -		// Walk down the tree looking for a discrepancy
      -		while ( ap[i] === bp[i] ) {
      -			i++;
      -		}
      -
      -		return i ?
      -			// Do a sibling check if the nodes have a common ancestor
      -			siblingCheck( ap[i], bp[i] ) :
      -
      -			// Otherwise nodes in our document sort first
      -			ap[i] === preferredDoc ? -1 :
      -			bp[i] === preferredDoc ? 1 :
      -			0;
      -	};
      -
      -	return document;
      -};
      -
      -Sizzle.matches = function( expr, elements ) {
      -	return Sizzle( expr, null, null, elements );
      -};
      -
      -Sizzle.matchesSelector = function( elem, expr ) {
      -	// Set document vars if needed
      -	if ( ( elem.ownerDocument || elem ) !== document ) {
      -		setDocument( elem );
      -	}
      -
      -	// Make sure that attribute selectors are quoted
      -	expr = expr.replace( rattributeQuotes, "='$1']" );
      -
      -	if ( support.matchesSelector && documentIsHTML &&
      -		!compilerCache[ expr + " " ] &&
      -		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
      -		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
      -
      -		try {
      -			var ret = matches.call( elem, expr );
      -
      -			// IE 9's matchesSelector returns false on disconnected nodes
      -			if ( ret || support.disconnectedMatch ||
      -					// As well, disconnected nodes are said to be in a document
      -					// fragment in IE 9
      -					elem.document && elem.document.nodeType !== 11 ) {
      -				return ret;
      -			}
      -		} catch (e) {}
      -	}
      -
      -	return Sizzle( expr, document, null, [ elem ] ).length > 0;
      -};
      -
      -Sizzle.contains = function( context, elem ) {
      -	// Set document vars if needed
      -	if ( ( context.ownerDocument || context ) !== document ) {
      -		setDocument( context );
      -	}
      -	return contains( context, elem );
      -};
      -
      -Sizzle.attr = function( elem, name ) {
      -	// Set document vars if needed
      -	if ( ( elem.ownerDocument || elem ) !== document ) {
      -		setDocument( elem );
      -	}
      -
      -	var fn = Expr.attrHandle[ name.toLowerCase() ],
      -		// Don't get fooled by Object.prototype properties (jQuery #13807)
      -		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
      -			fn( elem, name, !documentIsHTML ) :
      -			undefined;
      -
      -	return val !== undefined ?
      -		val :
      -		support.attributes || !documentIsHTML ?
      -			elem.getAttribute( name ) :
      -			(val = elem.getAttributeNode(name)) && val.specified ?
      -				val.value :
      -				null;
      -};
      -
      -Sizzle.escape = function( sel ) {
      -	return (sel + "").replace( rcssescape, fcssescape );
      -};
      -
      -Sizzle.error = function( msg ) {
      -	throw new Error( "Syntax error, unrecognized expression: " + msg );
      -};
      -
      -/**
      - * Document sorting and removing duplicates
      - * @param {ArrayLike} results
      - */
      -Sizzle.uniqueSort = function( results ) {
      -	var elem,
      -		duplicates = [],
      -		j = 0,
      -		i = 0;
      -
      -	// Unless we *know* we can detect duplicates, assume their presence
      -	hasDuplicate = !support.detectDuplicates;
      -	sortInput = !support.sortStable && results.slice( 0 );
      -	results.sort( sortOrder );
      -
      -	if ( hasDuplicate ) {
      -		while ( (elem = results[i++]) ) {
      -			if ( elem === results[ i ] ) {
      -				j = duplicates.push( i );
      -			}
      -		}
      -		while ( j-- ) {
      -			results.splice( duplicates[ j ], 1 );
      -		}
      -	}
      -
      -	// Clear input after sorting to release objects
      -	// See https://github.com/jquery/sizzle/pull/225
      -	sortInput = null;
      -
      -	return results;
      -};
      -
      -/**
      - * Utility function for retrieving the text value of an array of DOM nodes
      - * @param {Array|Element} elem
      - */
      -getText = Sizzle.getText = function( elem ) {
      -	var node,
      -		ret = "",
      -		i = 0,
      -		nodeType = elem.nodeType;
      -
      -	if ( !nodeType ) {
      -		// If no nodeType, this is expected to be an array
      -		while ( (node = elem[i++]) ) {
      -			// Do not traverse comment nodes
      -			ret += getText( node );
      -		}
      -	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -		// Use textContent for elements
      -		// innerText usage removed for consistency of new lines (jQuery #11153)
      -		if ( typeof elem.textContent === "string" ) {
      -			return elem.textContent;
      -		} else {
      -			// Traverse its children
      -			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -				ret += getText( elem );
      -			}
      -		}
      -	} else if ( nodeType === 3 || nodeType === 4 ) {
      -		return elem.nodeValue;
      -	}
      -	// Do not include comment or processing instruction nodes
      -
      -	return ret;
      -};
      -
      -Expr = Sizzle.selectors = {
      -
      -	// Can be adjusted by the user
      -	cacheLength: 50,
      -
      -	createPseudo: markFunction,
      -
      -	match: matchExpr,
      -
      -	attrHandle: {},
      -
      -	find: {},
      -
      -	relative: {
      -		">": { dir: "parentNode", first: true },
      -		" ": { dir: "parentNode" },
      -		"+": { dir: "previousSibling", first: true },
      -		"~": { dir: "previousSibling" }
      -	},
      -
      -	preFilter: {
      -		"ATTR": function( match ) {
      -			match[1] = match[1].replace( runescape, funescape );
      -
      -			// Move the given value to match[3] whether quoted or unquoted
      -			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
      -
      -			if ( match[2] === "~=" ) {
      -				match[3] = " " + match[3] + " ";
      -			}
      -
      -			return match.slice( 0, 4 );
      -		},
      -
      -		"CHILD": function( match ) {
      -			/* matches from matchExpr["CHILD"]
      -				1 type (only|nth|...)
      -				2 what (child|of-type)
      -				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
      -				4 xn-component of xn+y argument ([+-]?\d*n|)
      -				5 sign of xn-component
      -				6 x of xn-component
      -				7 sign of y-component
      -				8 y of y-component
      -			*/
      -			match[1] = match[1].toLowerCase();
      -
      -			if ( match[1].slice( 0, 3 ) === "nth" ) {
      -				// nth-* requires argument
      -				if ( !match[3] ) {
      -					Sizzle.error( match[0] );
      -				}
      -
      -				// numeric x and y parameters for Expr.filter.CHILD
      -				// remember that false/true cast respectively to 0/1
      -				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
      -				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
      -
      -			// other types prohibit arguments
      -			} else if ( match[3] ) {
      -				Sizzle.error( match[0] );
      -			}
      -
      -			return match;
      -		},
      -
      -		"PSEUDO": function( match ) {
      -			var excess,
      -				unquoted = !match[6] && match[2];
      -
      -			if ( matchExpr["CHILD"].test( match[0] ) ) {
      -				return null;
      -			}
      -
      -			// Accept quoted arguments as-is
      -			if ( match[3] ) {
      -				match[2] = match[4] || match[5] || "";
      -
      -			// Strip excess characters from unquoted arguments
      -			} else if ( unquoted && rpseudo.test( unquoted ) &&
      -				// Get excess from tokenize (recursively)
      -				(excess = tokenize( unquoted, true )) &&
      -				// advance to the next closing parenthesis
      -				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
      -
      -				// excess is a negative index
      -				match[0] = match[0].slice( 0, excess );
      -				match[2] = unquoted.slice( 0, excess );
      -			}
      -
      -			// Return only captures needed by the pseudo filter method (type and argument)
      -			return match.slice( 0, 3 );
      -		}
      -	},
      -
      -	filter: {
      -
      -		"TAG": function( nodeNameSelector ) {
      -			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
      -			return nodeNameSelector === "*" ?
      -				function() { return true; } :
      -				function( elem ) {
      -					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
      -				};
      -		},
      -
      -		"CLASS": function( className ) {
      -			var pattern = classCache[ className + " " ];
      -
      -			return pattern ||
      -				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
      -				classCache( className, function( elem ) {
      -					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
      -				});
      -		},
      -
      -		"ATTR": function( name, operator, check ) {
      -			return function( elem ) {
      -				var result = Sizzle.attr( elem, name );
      -
      -				if ( result == null ) {
      -					return operator === "!=";
      -				}
      -				if ( !operator ) {
      -					return true;
      -				}
      -
      -				result += "";
      -
      -				return operator === "=" ? result === check :
      -					operator === "!=" ? result !== check :
      -					operator === "^=" ? check && result.indexOf( check ) === 0 :
      -					operator === "*=" ? check && result.indexOf( check ) > -1 :
      -					operator === "$=" ? check && result.slice( -check.length ) === check :
      -					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
      -					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
      -					false;
      -			};
      -		},
      -
      -		"CHILD": function( type, what, argument, first, last ) {
      -			var simple = type.slice( 0, 3 ) !== "nth",
      -				forward = type.slice( -4 ) !== "last",
      -				ofType = what === "of-type";
      -
      -			return first === 1 && last === 0 ?
      -
      -				// Shortcut for :nth-*(n)
      -				function( elem ) {
      -					return !!elem.parentNode;
      -				} :
      -
      -				function( elem, context, xml ) {
      -					var cache, uniqueCache, outerCache, node, nodeIndex, start,
      -						dir = simple !== forward ? "nextSibling" : "previousSibling",
      -						parent = elem.parentNode,
      -						name = ofType && elem.nodeName.toLowerCase(),
      -						useCache = !xml && !ofType,
      -						diff = false;
      -
      -					if ( parent ) {
      -
      -						// :(first|last|only)-(child|of-type)
      -						if ( simple ) {
      -							while ( dir ) {
      -								node = elem;
      -								while ( (node = node[ dir ]) ) {
      -									if ( ofType ?
      -										node.nodeName.toLowerCase() === name :
      -										node.nodeType === 1 ) {
      -
      -										return false;
      -									}
      -								}
      -								// Reverse direction for :only-* (if we haven't yet done so)
      -								start = dir = type === "only" && !start && "nextSibling";
      -							}
      -							return true;
      -						}
      -
      -						start = [ forward ? parent.firstChild : parent.lastChild ];
      -
      -						// non-xml :nth-child(...) stores cache data on `parent`
      -						if ( forward && useCache ) {
      -
      -							// Seek `elem` from a previously-cached index
      -
      -							// ...in a gzip-friendly way
      -							node = parent;
      -							outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -							// Support: IE <9 only
      -							// Defend against cloned attroperties (jQuery gh-1709)
      -							uniqueCache = outerCache[ node.uniqueID ] ||
      -								(outerCache[ node.uniqueID ] = {});
      -
      -							cache = uniqueCache[ type ] || [];
      -							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
      -							diff = nodeIndex && cache[ 2 ];
      -							node = nodeIndex && parent.childNodes[ nodeIndex ];
      -
      -							while ( (node = ++nodeIndex && node && node[ dir ] ||
      -
      -								// Fallback to seeking `elem` from the start
      -								(diff = nodeIndex = 0) || start.pop()) ) {
      -
      -								// When found, cache indexes on `parent` and break
      -								if ( node.nodeType === 1 && ++diff && node === elem ) {
      -									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
      -									break;
      -								}
      -							}
      -
      -						} else {
      -							// Use previously-cached element index if available
      -							if ( useCache ) {
      -								// ...in a gzip-friendly way
      -								node = elem;
      -								outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -								// Support: IE <9 only
      -								// Defend against cloned attroperties (jQuery gh-1709)
      -								uniqueCache = outerCache[ node.uniqueID ] ||
      -									(outerCache[ node.uniqueID ] = {});
      -
      -								cache = uniqueCache[ type ] || [];
      -								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
      -								diff = nodeIndex;
      -							}
      -
      -							// xml :nth-child(...)
      -							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
      -							if ( diff === false ) {
      -								// Use the same loop as above to seek `elem` from the start
      -								while ( (node = ++nodeIndex && node && node[ dir ] ||
      -									(diff = nodeIndex = 0) || start.pop()) ) {
      -
      -									if ( ( ofType ?
      -										node.nodeName.toLowerCase() === name :
      -										node.nodeType === 1 ) &&
      -										++diff ) {
      -
      -										// Cache the index of each encountered element
      -										if ( useCache ) {
      -											outerCache = node[ expando ] || (node[ expando ] = {});
      -
      -											// Support: IE <9 only
      -											// Defend against cloned attroperties (jQuery gh-1709)
      -											uniqueCache = outerCache[ node.uniqueID ] ||
      -												(outerCache[ node.uniqueID ] = {});
      -
      -											uniqueCache[ type ] = [ dirruns, diff ];
      -										}
      -
      -										if ( node === elem ) {
      -											break;
      -										}
      -									}
      -								}
      -							}
      -						}
      -
      -						// Incorporate the offset, then check against cycle size
      -						diff -= last;
      -						return diff === first || ( diff % first === 0 && diff / first >= 0 );
      -					}
      -				};
      -		},
      -
      -		"PSEUDO": function( pseudo, argument ) {
      -			// pseudo-class names are case-insensitive
      -			// http://www.w3.org/TR/selectors/#pseudo-classes
      -			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
      -			// Remember that setFilters inherits from pseudos
      -			var args,
      -				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
      -					Sizzle.error( "unsupported pseudo: " + pseudo );
      -
      -			// The user may use createPseudo to indicate that
      -			// arguments are needed to create the filter function
      -			// just as Sizzle does
      -			if ( fn[ expando ] ) {
      -				return fn( argument );
      -			}
      -
      -			// But maintain support for old signatures
      -			if ( fn.length > 1 ) {
      -				args = [ pseudo, pseudo, "", argument ];
      -				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
      -					markFunction(function( seed, matches ) {
      -						var idx,
      -							matched = fn( seed, argument ),
      -							i = matched.length;
      -						while ( i-- ) {
      -							idx = indexOf( seed, matched[i] );
      -							seed[ idx ] = !( matches[ idx ] = matched[i] );
      -						}
      -					}) :
      -					function( elem ) {
      -						return fn( elem, 0, args );
      -					};
      -			}
      -
      -			return fn;
      -		}
      -	},
      -
      -	pseudos: {
      -		// Potentially complex pseudos
      -		"not": markFunction(function( selector ) {
      -			// Trim the selector passed to compile
      -			// to avoid treating leading and trailing
      -			// spaces as combinators
      -			var input = [],
      -				results = [],
      -				matcher = compile( selector.replace( rtrim, "$1" ) );
      -
      -			return matcher[ expando ] ?
      -				markFunction(function( seed, matches, context, xml ) {
      -					var elem,
      -						unmatched = matcher( seed, null, xml, [] ),
      -						i = seed.length;
      -
      -					// Match elements unmatched by `matcher`
      -					while ( i-- ) {
      -						if ( (elem = unmatched[i]) ) {
      -							seed[i] = !(matches[i] = elem);
      -						}
      -					}
      -				}) :
      -				function( elem, context, xml ) {
      -					input[0] = elem;
      -					matcher( input, null, xml, results );
      -					// Don't keep the element (issue #299)
      -					input[0] = null;
      -					return !results.pop();
      -				};
      -		}),
      -
      -		"has": markFunction(function( selector ) {
      -			return function( elem ) {
      -				return Sizzle( selector, elem ).length > 0;
      -			};
      -		}),
      -
      -		"contains": markFunction(function( text ) {
      -			text = text.replace( runescape, funescape );
      -			return function( elem ) {
      -				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
      -			};
      -		}),
      -
      -		// "Whether an element is represented by a :lang() selector
      -		// is based solely on the element's language value
      -		// being equal to the identifier C,
      -		// or beginning with the identifier C immediately followed by "-".
      -		// The matching of C against the element's language value is performed case-insensitively.
      -		// The identifier C does not have to be a valid language name."
      -		// http://www.w3.org/TR/selectors/#lang-pseudo
      -		"lang": markFunction( function( lang ) {
      -			// lang value must be a valid identifier
      -			if ( !ridentifier.test(lang || "") ) {
      -				Sizzle.error( "unsupported lang: " + lang );
      -			}
      -			lang = lang.replace( runescape, funescape ).toLowerCase();
      -			return function( elem ) {
      -				var elemLang;
      -				do {
      -					if ( (elemLang = documentIsHTML ?
      -						elem.lang :
      -						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
      -
      -						elemLang = elemLang.toLowerCase();
      -						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
      -					}
      -				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
      -				return false;
      -			};
      -		}),
      -
      -		// Miscellaneous
      -		"target": function( elem ) {
      -			var hash = window.location && window.location.hash;
      -			return hash && hash.slice( 1 ) === elem.id;
      -		},
      -
      -		"root": function( elem ) {
      -			return elem === docElem;
      -		},
      -
      -		"focus": function( elem ) {
      -			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
      -		},
      -
      -		// Boolean properties
      -		"enabled": createDisabledPseudo( false ),
      -		"disabled": createDisabledPseudo( true ),
      -
      -		"checked": function( elem ) {
      -			// In CSS3, :checked should return both checked and selected elements
      -			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -			var nodeName = elem.nodeName.toLowerCase();
      -			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
      -		},
      -
      -		"selected": function( elem ) {
      -			// Accessing this property makes selected-by-default
      -			// options in Safari work properly
      -			if ( elem.parentNode ) {
      -				elem.parentNode.selectedIndex;
      -			}
      -
      -			return elem.selected === true;
      -		},
      -
      -		// Contents
      -		"empty": function( elem ) {
      -			// http://www.w3.org/TR/selectors/#empty-pseudo
      -			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
      -			//   but not by others (comment: 8; processing instruction: 7; etc.)
      -			// nodeType < 6 works because attributes (2) do not appear as children
      -			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -				if ( elem.nodeType < 6 ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		},
      -
      -		"parent": function( elem ) {
      -			return !Expr.pseudos["empty"]( elem );
      -		},
      -
      -		// Element/input types
      -		"header": function( elem ) {
      -			return rheader.test( elem.nodeName );
      -		},
      -
      -		"input": function( elem ) {
      -			return rinputs.test( elem.nodeName );
      -		},
      -
      -		"button": function( elem ) {
      -			var name = elem.nodeName.toLowerCase();
      -			return name === "input" && elem.type === "button" || name === "button";
      -		},
      -
      -		"text": function( elem ) {
      -			var attr;
      -			return elem.nodeName.toLowerCase() === "input" &&
      -				elem.type === "text" &&
      -
      -				// Support: IE<8
      -				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
      -				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
      -		},
      -
      -		// Position-in-collection
      -		"first": createPositionalPseudo(function() {
      -			return [ 0 ];
      -		}),
      -
      -		"last": createPositionalPseudo(function( matchIndexes, length ) {
      -			return [ length - 1 ];
      -		}),
      -
      -		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			return [ argument < 0 ? argument + length : argument ];
      -		}),
      -
      -		"even": createPositionalPseudo(function( matchIndexes, length ) {
      -			var i = 0;
      -			for ( ; i < length; i += 2 ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"odd": createPositionalPseudo(function( matchIndexes, length ) {
      -			var i = 1;
      -			for ( ; i < length; i += 2 ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			var i = argument < 0 ? argument + length : argument;
      -			for ( ; --i >= 0; ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		}),
      -
      -		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -			var i = argument < 0 ? argument + length : argument;
      -			for ( ; ++i < length; ) {
      -				matchIndexes.push( i );
      -			}
      -			return matchIndexes;
      -		})
      -	}
      -};
      -
      -Expr.pseudos["nth"] = Expr.pseudos["eq"];
      -
      -// Add button/input type pseudos
      -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
      -	Expr.pseudos[ i ] = createInputPseudo( i );
      -}
      -for ( i in { submit: true, reset: true } ) {
      -	Expr.pseudos[ i ] = createButtonPseudo( i );
      -}
      -
      -// Easy API for creating new setFilters
      -function setFilters() {}
      -setFilters.prototype = Expr.filters = Expr.pseudos;
      -Expr.setFilters = new setFilters();
      -
      -tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
      -	var matched, match, tokens, type,
      -		soFar, groups, preFilters,
      -		cached = tokenCache[ selector + " " ];
      -
      -	if ( cached ) {
      -		return parseOnly ? 0 : cached.slice( 0 );
      -	}
      -
      -	soFar = selector;
      -	groups = [];
      -	preFilters = Expr.preFilter;
      -
      -	while ( soFar ) {
      -
      -		// Comma and first run
      -		if ( !matched || (match = rcomma.exec( soFar )) ) {
      -			if ( match ) {
      -				// Don't consume trailing commas as valid
      -				soFar = soFar.slice( match[0].length ) || soFar;
      -			}
      -			groups.push( (tokens = []) );
      -		}
      -
      -		matched = false;
      -
      -		// Combinators
      -		if ( (match = rcombinators.exec( soFar )) ) {
      -			matched = match.shift();
      -			tokens.push({
      -				value: matched,
      -				// Cast descendant combinators to space
      -				type: match[0].replace( rtrim, " " )
      -			});
      -			soFar = soFar.slice( matched.length );
      -		}
      -
      -		// Filters
      -		for ( type in Expr.filter ) {
      -			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
      -				(match = preFilters[ type ]( match ))) ) {
      -				matched = match.shift();
      -				tokens.push({
      -					value: matched,
      -					type: type,
      -					matches: match
      -				});
      -				soFar = soFar.slice( matched.length );
      -			}
      -		}
      -
      -		if ( !matched ) {
      -			break;
      -		}
      -	}
      -
      -	// Return the length of the invalid excess
      -	// if we're just parsing
      -	// Otherwise, throw an error or return tokens
      -	return parseOnly ?
      -		soFar.length :
      -		soFar ?
      -			Sizzle.error( selector ) :
      -			// Cache the tokens
      -			tokenCache( selector, groups ).slice( 0 );
      -};
      -
      -function toSelector( tokens ) {
      -	var i = 0,
      -		len = tokens.length,
      -		selector = "";
      -	for ( ; i < len; i++ ) {
      -		selector += tokens[i].value;
      -	}
      -	return selector;
      -}
      -
      -function addCombinator( matcher, combinator, base ) {
      -	var dir = combinator.dir,
      -		skip = combinator.next,
      -		key = skip || dir,
      -		checkNonElements = base && key === "parentNode",
      -		doneName = done++;
      -
      -	return combinator.first ?
      -		// Check against closest ancestor/preceding element
      -		function( elem, context, xml ) {
      -			while ( (elem = elem[ dir ]) ) {
      -				if ( elem.nodeType === 1 || checkNonElements ) {
      -					return matcher( elem, context, xml );
      -				}
      -			}
      -			return false;
      -		} :
      -
      -		// Check against all ancestor/preceding elements
      -		function( elem, context, xml ) {
      -			var oldCache, uniqueCache, outerCache,
      -				newCache = [ dirruns, doneName ];
      -
      -			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
      -			if ( xml ) {
      -				while ( (elem = elem[ dir ]) ) {
      -					if ( elem.nodeType === 1 || checkNonElements ) {
      -						if ( matcher( elem, context, xml ) ) {
      -							return true;
      -						}
      -					}
      -				}
      -			} else {
      -				while ( (elem = elem[ dir ]) ) {
      -					if ( elem.nodeType === 1 || checkNonElements ) {
      -						outerCache = elem[ expando ] || (elem[ expando ] = {});
      -
      -						// Support: IE <9 only
      -						// Defend against cloned attroperties (jQuery gh-1709)
      -						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
      -
      -						if ( skip && skip === elem.nodeName.toLowerCase() ) {
      -							elem = elem[ dir ] || elem;
      -						} else if ( (oldCache = uniqueCache[ key ]) &&
      -							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
      -
      -							// Assign to newCache so results back-propagate to previous elements
      -							return (newCache[ 2 ] = oldCache[ 2 ]);
      -						} else {
      -							// Reuse newcache so results back-propagate to previous elements
      -							uniqueCache[ key ] = newCache;
      -
      -							// A match means we're done; a fail means we have to keep checking
      -							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
      -								return true;
      -							}
      -						}
      -					}
      -				}
      -			}
      -			return false;
      -		};
      -}
      -
      -function elementMatcher( matchers ) {
      -	return matchers.length > 1 ?
      -		function( elem, context, xml ) {
      -			var i = matchers.length;
      -			while ( i-- ) {
      -				if ( !matchers[i]( elem, context, xml ) ) {
      -					return false;
      -				}
      -			}
      -			return true;
      -		} :
      -		matchers[0];
      -}
      -
      -function multipleContexts( selector, contexts, results ) {
      -	var i = 0,
      -		len = contexts.length;
      -	for ( ; i < len; i++ ) {
      -		Sizzle( selector, contexts[i], results );
      -	}
      -	return results;
      -}
      -
      -function condense( unmatched, map, filter, context, xml ) {
      -	var elem,
      -		newUnmatched = [],
      -		i = 0,
      -		len = unmatched.length,
      -		mapped = map != null;
      -
      -	for ( ; i < len; i++ ) {
      -		if ( (elem = unmatched[i]) ) {
      -			if ( !filter || filter( elem, context, xml ) ) {
      -				newUnmatched.push( elem );
      -				if ( mapped ) {
      -					map.push( i );
      -				}
      -			}
      -		}
      -	}
      -
      -	return newUnmatched;
      -}
      -
      -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
      -	if ( postFilter && !postFilter[ expando ] ) {
      -		postFilter = setMatcher( postFilter );
      -	}
      -	if ( postFinder && !postFinder[ expando ] ) {
      -		postFinder = setMatcher( postFinder, postSelector );
      -	}
      -	return markFunction(function( seed, results, context, xml ) {
      -		var temp, i, elem,
      -			preMap = [],
      -			postMap = [],
      -			preexisting = results.length,
      -
      -			// Get initial elements from seed or context
      -			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
      -
      -			// Prefilter to get matcher input, preserving a map for seed-results synchronization
      -			matcherIn = preFilter && ( seed || !selector ) ?
      -				condense( elems, preMap, preFilter, context, xml ) :
      -				elems,
      -
      -			matcherOut = matcher ?
      -				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
      -				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
      -
      -					// ...intermediate processing is necessary
      -					[] :
      -
      -					// ...otherwise use results directly
      -					results :
      -				matcherIn;
      -
      -		// Find primary matches
      -		if ( matcher ) {
      -			matcher( matcherIn, matcherOut, context, xml );
      -		}
      -
      -		// Apply postFilter
      -		if ( postFilter ) {
      -			temp = condense( matcherOut, postMap );
      -			postFilter( temp, [], context, xml );
      -
      -			// Un-match failing elements by moving them back to matcherIn
      -			i = temp.length;
      -			while ( i-- ) {
      -				if ( (elem = temp[i]) ) {
      -					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
      -				}
      -			}
      -		}
      -
      -		if ( seed ) {
      -			if ( postFinder || preFilter ) {
      -				if ( postFinder ) {
      -					// Get the final matcherOut by condensing this intermediate into postFinder contexts
      -					temp = [];
      -					i = matcherOut.length;
      -					while ( i-- ) {
      -						if ( (elem = matcherOut[i]) ) {
      -							// Restore matcherIn since elem is not yet a final match
      -							temp.push( (matcherIn[i] = elem) );
      -						}
      -					}
      -					postFinder( null, (matcherOut = []), temp, xml );
      -				}
      -
      -				// Move matched elements from seed to results to keep them synchronized
      -				i = matcherOut.length;
      -				while ( i-- ) {
      -					if ( (elem = matcherOut[i]) &&
      -						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
      -
      -						seed[temp] = !(results[temp] = elem);
      -					}
      -				}
      -			}
      -
      -		// Add elements to results, through postFinder if defined
      -		} else {
      -			matcherOut = condense(
      -				matcherOut === results ?
      -					matcherOut.splice( preexisting, matcherOut.length ) :
      -					matcherOut
      -			);
      -			if ( postFinder ) {
      -				postFinder( null, results, matcherOut, xml );
      -			} else {
      -				push.apply( results, matcherOut );
      -			}
      -		}
      -	});
      -}
      -
      -function matcherFromTokens( tokens ) {
      -	var checkContext, matcher, j,
      -		len = tokens.length,
      -		leadingRelative = Expr.relative[ tokens[0].type ],
      -		implicitRelative = leadingRelative || Expr.relative[" "],
      -		i = leadingRelative ? 1 : 0,
      -
      -		// The foundational matcher ensures that elements are reachable from top-level context(s)
      -		matchContext = addCombinator( function( elem ) {
      -			return elem === checkContext;
      -		}, implicitRelative, true ),
      -		matchAnyContext = addCombinator( function( elem ) {
      -			return indexOf( checkContext, elem ) > -1;
      -		}, implicitRelative, true ),
      -		matchers = [ function( elem, context, xml ) {
      -			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
      -				(checkContext = context).nodeType ?
      -					matchContext( elem, context, xml ) :
      -					matchAnyContext( elem, context, xml ) );
      -			// Avoid hanging onto element (issue #299)
      -			checkContext = null;
      -			return ret;
      -		} ];
      -
      -	for ( ; i < len; i++ ) {
      -		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
      -			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
      -		} else {
      -			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
      -
      -			// Return special upon seeing a positional matcher
      -			if ( matcher[ expando ] ) {
      -				// Find the next relative operator (if any) for proper handling
      -				j = ++i;
      -				for ( ; j < len; j++ ) {
      -					if ( Expr.relative[ tokens[j].type ] ) {
      -						break;
      -					}
      -				}
      -				return setMatcher(
      -					i > 1 && elementMatcher( matchers ),
      -					i > 1 && toSelector(
      -						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
      -						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
      -					).replace( rtrim, "$1" ),
      -					matcher,
      -					i < j && matcherFromTokens( tokens.slice( i, j ) ),
      -					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
      -					j < len && toSelector( tokens )
      -				);
      -			}
      -			matchers.push( matcher );
      -		}
      -	}
      -
      -	return elementMatcher( matchers );
      -}
      -
      -function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
      -	var bySet = setMatchers.length > 0,
      -		byElement = elementMatchers.length > 0,
      -		superMatcher = function( seed, context, xml, results, outermost ) {
      -			var elem, j, matcher,
      -				matchedCount = 0,
      -				i = "0",
      -				unmatched = seed && [],
      -				setMatched = [],
      -				contextBackup = outermostContext,
      -				// We must always have either seed elements or outermost context
      -				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
      -				// Use integer dirruns iff this is the outermost matcher
      -				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
      -				len = elems.length;
      -
      -			if ( outermost ) {
      -				outermostContext = context === document || context || outermost;
      -			}
      -
      -			// Add elements passing elementMatchers directly to results
      -			// Support: IE<9, Safari
      -			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
      -			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
      -				if ( byElement && elem ) {
      -					j = 0;
      -					if ( !context && elem.ownerDocument !== document ) {
      -						setDocument( elem );
      -						xml = !documentIsHTML;
      -					}
      -					while ( (matcher = elementMatchers[j++]) ) {
      -						if ( matcher( elem, context || document, xml) ) {
      -							results.push( elem );
      -							break;
      -						}
      -					}
      -					if ( outermost ) {
      -						dirruns = dirrunsUnique;
      -					}
      -				}
      -
      -				// Track unmatched elements for set filters
      -				if ( bySet ) {
      -					// They will have gone through all possible matchers
      -					if ( (elem = !matcher && elem) ) {
      -						matchedCount--;
      -					}
      -
      -					// Lengthen the array for every element, matched or not
      -					if ( seed ) {
      -						unmatched.push( elem );
      -					}
      -				}
      -			}
      -
      -			// `i` is now the count of elements visited above, and adding it to `matchedCount`
      -			// makes the latter nonnegative.
      -			matchedCount += i;
      -
      -			// Apply set filters to unmatched elements
      -			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
      -			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
      -			// no element matchers and no seed.
      -			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
      -			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
      -			// numerically zero.
      -			if ( bySet && i !== matchedCount ) {
      -				j = 0;
      -				while ( (matcher = setMatchers[j++]) ) {
      -					matcher( unmatched, setMatched, context, xml );
      -				}
      -
      -				if ( seed ) {
      -					// Reintegrate element matches to eliminate the need for sorting
      -					if ( matchedCount > 0 ) {
      -						while ( i-- ) {
      -							if ( !(unmatched[i] || setMatched[i]) ) {
      -								setMatched[i] = pop.call( results );
      -							}
      -						}
      -					}
      -
      -					// Discard index placeholder values to get only actual matches
      -					setMatched = condense( setMatched );
      -				}
      -
      -				// Add matches to results
      -				push.apply( results, setMatched );
      -
      -				// Seedless set matches succeeding multiple successful matchers stipulate sorting
      -				if ( outermost && !seed && setMatched.length > 0 &&
      -					( matchedCount + setMatchers.length ) > 1 ) {
      -
      -					Sizzle.uniqueSort( results );
      -				}
      -			}
      -
      -			// Override manipulation of globals by nested matchers
      -			if ( outermost ) {
      -				dirruns = dirrunsUnique;
      -				outermostContext = contextBackup;
      -			}
      -
      -			return unmatched;
      -		};
      -
      -	return bySet ?
      -		markFunction( superMatcher ) :
      -		superMatcher;
      -}
      -
      -compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
      -	var i,
      -		setMatchers = [],
      -		elementMatchers = [],
      -		cached = compilerCache[ selector + " " ];
      -
      -	if ( !cached ) {
      -		// Generate a function of recursive functions that can be used to check each element
      -		if ( !match ) {
      -			match = tokenize( selector );
      -		}
      -		i = match.length;
      -		while ( i-- ) {
      -			cached = matcherFromTokens( match[i] );
      -			if ( cached[ expando ] ) {
      -				setMatchers.push( cached );
      -			} else {
      -				elementMatchers.push( cached );
      -			}
      -		}
      -
      -		// Cache the compiled function
      -		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
      -
      -		// Save selector and tokenization
      -		cached.selector = selector;
      -	}
      -	return cached;
      -};
      -
      -/**
      - * A low-level selection function that works with Sizzle's compiled
      - *  selector functions
      - * @param {String|Function} selector A selector or a pre-compiled
      - *  selector function built with Sizzle.compile
      - * @param {Element} context
      - * @param {Array} [results]
      - * @param {Array} [seed] A set of elements to match against
      - */
      -select = Sizzle.select = function( selector, context, results, seed ) {
      -	var i, tokens, token, type, find,
      -		compiled = typeof selector === "function" && selector,
      -		match = !seed && tokenize( (selector = compiled.selector || selector) );
      -
      -	results = results || [];
      -
      -	// Try to minimize operations if there is only one selector in the list and no seed
      -	// (the latter of which guarantees us context)
      -	if ( match.length === 1 ) {
      -
      -		// Reduce context if the leading compound selector is an ID
      -		tokens = match[0] = match[0].slice( 0 );
      -		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
      -				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
      -
      -			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
      -			if ( !context ) {
      -				return results;
      -
      -			// Precompiled matchers will still verify ancestry, so step up a level
      -			} else if ( compiled ) {
      -				context = context.parentNode;
      -			}
      -
      -			selector = selector.slice( tokens.shift().value.length );
      -		}
      -
      -		// Fetch a seed set for right-to-left matching
      -		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
      -		while ( i-- ) {
      -			token = tokens[i];
      -
      -			// Abort if we hit a combinator
      -			if ( Expr.relative[ (type = token.type) ] ) {
      -				break;
      -			}
      -			if ( (find = Expr.find[ type ]) ) {
      -				// Search, expanding context for leading sibling combinators
      -				if ( (seed = find(
      -					token.matches[0].replace( runescape, funescape ),
      -					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
      -				)) ) {
      -
      -					// If seed is empty or no tokens remain, we can return early
      -					tokens.splice( i, 1 );
      -					selector = seed.length && toSelector( tokens );
      -					if ( !selector ) {
      -						push.apply( results, seed );
      -						return results;
      -					}
      -
      -					break;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Compile and execute a filtering function if one is not provided
      -	// Provide `match` to avoid retokenization if we modified the selector above
      -	( compiled || compile( selector, match ) )(
      -		seed,
      -		context,
      -		!documentIsHTML,
      -		results,
      -		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
      -	);
      -	return results;
      -};
      -
      -// One-time assignments
      -
      -// Sort stability
      -support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
      -
      -// Support: Chrome 14-35+
      -// Always assume duplicates if they aren't passed to the comparison function
      -support.detectDuplicates = !!hasDuplicate;
      -
      -// Initialize against the default document
      -setDocument();
      -
      -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
      -// Detached nodes confoundingly follow *each other*
      -support.sortDetached = assert(function( el ) {
      -	// Should return 1, but returns 4 (following)
      -	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
      -});
      -
      -// Support: IE<8
      -// Prevent attribute/property "interpolation"
      -// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
      -if ( !assert(function( el ) {
      -	el.innerHTML = "<a href='#'></a>";
      -	return el.firstChild.getAttribute("href") === "#" ;
      -}) ) {
      -	addHandle( "type|href|height|width", function( elem, name, isXML ) {
      -		if ( !isXML ) {
      -			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
      -		}
      -	});
      -}
      -
      -// Support: IE<9
      -// Use defaultValue in place of getAttribute("value")
      -if ( !support.attributes || !assert(function( el ) {
      -	el.innerHTML = "<input/>";
      -	el.firstChild.setAttribute( "value", "" );
      -	return el.firstChild.getAttribute( "value" ) === "";
      -}) ) {
      -	addHandle( "value", function( elem, name, isXML ) {
      -		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
      -			return elem.defaultValue;
      -		}
      -	});
      -}
      -
      -// Support: IE<9
      -// Use getAttributeNode to fetch booleans when getAttribute lies
      -if ( !assert(function( el ) {
      -	return el.getAttribute("disabled") == null;
      -}) ) {
      -	addHandle( booleans, function( elem, name, isXML ) {
      -		var val;
      -		if ( !isXML ) {
      -			return elem[ name ] === true ? name.toLowerCase() :
      -					(val = elem.getAttributeNode( name )) && val.specified ?
      -					val.value :
      -				null;
      -		}
      -	});
      -}
      -
      -// EXPOSE
      -var _sizzle = window.Sizzle;
      -
      -Sizzle.noConflict = function() {
      -	if ( window.Sizzle === Sizzle ) {
      -		window.Sizzle = _sizzle;
      -	}
      -
      -	return Sizzle;
      -};
      -
      -if ( typeof define === "function" && define.amd ) {
      -	define(function() { return Sizzle; });
      -// Sizzle requires that there be a global window in Common-JS like environments
      -} else if ( typeof module !== "undefined" && module.exports ) {
      -	module.exports = Sizzle;
      -} else {
      -	window.Sizzle = Sizzle;
      -}
      -// EXPOSE
      -
      -})( window );
      diff --git a/bower_components/jquery/external/sizzle/dist/sizzle.min.js b/bower_components/jquery/external/sizzle/dist/sizzle.min.js
      deleted file mode 100644
      index be032788b6..0000000000
      --- a/bower_components/jquery/external/sizzle/dist/sizzle.min.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Sizzle v2.3.3 | (c) jQuery Foundation, Inc. | jquery.org/license */
      -!function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c<d;c++)if(a[c]===b)return c;return-1},J="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",K="[\\x20\\t\\r\\n\\f]",L="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",M="\\["+K+"*("+L+")(?:"+K+"*([*^$|!~]?=)"+K+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+L+"))|)"+K+"*\\]",N=":("+L+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+M+")*)|.*)\\)|)",O=new RegExp(K+"+","g"),P=new RegExp("^"+K+"+|((?:^|[^\\\\])(?:\\\\.)*)"+K+"+$","g"),Q=new RegExp("^"+K+"*,"+K+"*"),R=new RegExp("^"+K+"*([>+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("form"in a||"label"in a)},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"form"in b?b.parentNode&&b.disabled===!1?"label"in b?"label"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"label"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}},d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("id"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("id"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c<b;c+=2)a.push(c);return a}),odd:pa(function(a,b){for(var c=1;c<b;c+=2)a.push(c);return a}),lt:pa(function(a,b,c){for(var d=c<0?c+b:c;--d>=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function ra(){}ra.prototype=d.filters=d.pseudos,d.setFilters=new ra,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=Q.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=R.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(P," ")}),h=h.slice(c.length));for(g in d.filter)!(e=V[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function sa(a){for(var b=0,c=a.length,d="";b<c;b++)d+=a[b].value;return d}function ta(a,b,c){var d=b.dir,e=b.next,f=e||d,g=c&&"parentNode"===f,h=x++;return b.first?function(b,c,e){while(b=b[d])if(1===b.nodeType||g)return a(b,c,e);return!1}:function(b,c,i){var j,k,l,m=[w,h];if(i){while(b=b[d])if((1===b.nodeType||g)&&a(b,c,i))return!0}else while(b=b[d])if(1===b.nodeType||g)if(l=b[u]||(b[u]={}),k=l[b.uniqueID]||(l[b.uniqueID]={}),e&&e===b.nodeName.toLowerCase())b=b[d]||b;else{if((j=k[f])&&j[0]===w&&j[1]===h)return m[2]=j[2];if(k[f]=m,m[2]=a(b,c,i))return!0}return!1}}function ua(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d<e;d++)ga(a,b[d],c);return c}function wa(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;h<i;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function xa(a,b,c,d,e,f){return d&&!d[u]&&(d=xa(d)),e&&!e[u]&&(e=xa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||va(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:wa(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=wa(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?I(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i<f;i++)if(c=d.relative[a[i].type])m=[ta(ua(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;e<f;e++)if(d.relative[a[e].type])break;return xa(i>1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i<e&&ya(a.slice(i,e)),e<f&&ya(a=a.slice(e)),e<f&&sa(a))}m.push(c)}return ua(m)}function za(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,c,e){var f,i,j,k,l,m="function"==typeof a&&a,n=!e&&g(a=m.selector||a);if(c=c||[],1===n.length){if(i=n[0]=n[0].slice(0),i.length>2&&"ID"===(j=i[0]).type&&9===b.nodeType&&p&&d.relative[i[1].type]){if(b=(d.find.ID(j.matches[0].replace(_,aa),b)||[])[0],!b)return c;m&&(b=b.parentNode),a=a.slice(i.shift().value.length)}f=V.needsContext.test(a)?0:i.length;while(f--){if(j=i[f],d.relative[k=j.type])break;if((l=d.find[k])&&(e=l(j.matches[0].replace(_,aa),$.test(i[0].type)&&qa(b.parentNode)||b))){if(i.splice(f,1),a=e.length&&sa(i),!a)return G.apply(c,e),c;break}}}return(m||h(a,n))(e,b,!p,c,!b||$.test(a)&&qa(b.parentNode)||b),c},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null});var Aa=a.Sizzle;ga.noConflict=function(){return a.Sizzle===ga&&(a.Sizzle=Aa),ga},"function"==typeof define&&define.amd?define(function(){return ga}):"undefined"!=typeof module&&module.exports?module.exports=ga:a.Sizzle=ga}(window);
      -//# sourceMappingURL=sizzle.min.map
      \ No newline at end of file
      diff --git a/bower_components/jquery/external/sizzle/dist/sizzle.min.map b/bower_components/jquery/external/sizzle/dist/sizzle.min.map
      deleted file mode 100644
      index 031c1b78fa..0000000000
      --- a/bower_components/jquery/external/sizzle/dist/sizzle.min.map
      +++ /dev/null
      @@ -1 +0,0 @@
      -{"version":3,"sources":["sizzle.js"],"names":["window","i","support","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","document","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","matches","contains","expando","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","hasOwn","hasOwnProperty","arr","pop","push_native","push","slice","indexOf","list","elem","len","length","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","toString","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","apply","call","childNodes","nodeType","e","target","els","j","Sizzle","selector","context","results","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","toLowerCase","getAttribute","replace","setAttribute","toSelector","join","testContext","parentNode","querySelectorAll","qsaError","removeAttribute","keys","cache","key","value","cacheLength","shift","markFunction","fn","assert","el","createElement","removeChild","addHandle","attrs","handler","split","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","type","name","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","subWindow","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","elems","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","ret","attr","val","undefined","specified","escape","sel","error","msg","Error","uniqueSort","duplicates","detectDuplicates","sortStable","sort","splice","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","first"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","last","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","text","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","eq","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","prototype","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","map","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","concat","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","Math","random","token","compiled","defaultValue","_sizzle","noConflict","define","amd","module","exports"],"mappings":"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","file":"sizzle.min.js"}
      \ No newline at end of file
      diff --git a/bower_components/jquery/src/.eslintrc.json b/bower_components/jquery/src/.eslintrc.json
      deleted file mode 100644
      index dbf16c5846..0000000000
      --- a/bower_components/jquery/src/.eslintrc.json
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -{
      -	// Support: IE <=9 only, Android <=4.0 only
      -	// The above browsers are failing a lot of tests in the ES5
      -	// test suite at http://test262.ecmascript.org.
      -	"parserOptions": {
      -		"ecmaVersion": 3
      -	},
      -	"globals": {
      -		"window": true,
      -		"jQuery": true,
      -		"define": true,
      -		"module": true,
      -		"noGlobal": true
      -	},
      -	"rules": {
      -		"strict": ["error", "function"]
      -	}
      -}
      diff --git a/bower_components/jquery/src/ajax.js b/bower_components/jquery/src/ajax.js
      deleted file mode 100644
      index 36f707d7d1..0000000000
      --- a/bower_components/jquery/src/ajax.js
      +++ /dev/null
      @@ -1,855 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/document",
      -	"./var/rnothtmlwhite",
      -	"./ajax/var/location",
      -	"./ajax/var/nonce",
      -	"./ajax/var/rquery",
      -
      -	"./core/init",
      -	"./ajax/parseXML",
      -	"./event/trigger",
      -	"./deferred",
      -	"./serialize" // jQuery.param
      -], function( jQuery, document, rnothtmlwhite, location, nonce, rquery ) {
      -
      -"use strict";
      -
      -var
      -	r20 = /%20/g,
      -	rhash = /#.*$/,
      -	rantiCache = /([?&])_=[^&]*/,
      -	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
      -
      -	// #7653, #8125, #8152: local protocol detection
      -	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
      -	rnoContent = /^(?:GET|HEAD)$/,
      -	rprotocol = /^\/\//,
      -
      -	/* Prefilters
      -	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
      -	 * 2) These are called:
      -	 *    - BEFORE asking for a transport
      -	 *    - AFTER param serialization (s.data is a string if s.processData is true)
      -	 * 3) key is the dataType
      -	 * 4) the catchall symbol "*" can be used
      -	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
      -	 */
      -	prefilters = {},
      -
      -	/* Transports bindings
      -	 * 1) key is the dataType
      -	 * 2) the catchall symbol "*" can be used
      -	 * 3) selection will start with transport dataType and THEN go to "*" if needed
      -	 */
      -	transports = {},
      -
      -	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
      -	allTypes = "*/".concat( "*" ),
      -
      -	// Anchor tag for parsing the document origin
      -	originAnchor = document.createElement( "a" );
      -	originAnchor.href = location.href;
      -
      -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
      -function addToPrefiltersOrTransports( structure ) {
      -
      -	// dataTypeExpression is optional and defaults to "*"
      -	return function( dataTypeExpression, func ) {
      -
      -		if ( typeof dataTypeExpression !== "string" ) {
      -			func = dataTypeExpression;
      -			dataTypeExpression = "*";
      -		}
      -
      -		var dataType,
      -			i = 0,
      -			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
      -
      -		if ( jQuery.isFunction( func ) ) {
      -
      -			// For each dataType in the dataTypeExpression
      -			while ( ( dataType = dataTypes[ i++ ] ) ) {
      -
      -				// Prepend if requested
      -				if ( dataType[ 0 ] === "+" ) {
      -					dataType = dataType.slice( 1 ) || "*";
      -					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
      -
      -				// Otherwise append
      -				} else {
      -					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
      -				}
      -			}
      -		}
      -	};
      -}
      -
      -// Base inspection function for prefilters and transports
      -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
      -
      -	var inspected = {},
      -		seekingTransport = ( structure === transports );
      -
      -	function inspect( dataType ) {
      -		var selected;
      -		inspected[ dataType ] = true;
      -		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
      -			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
      -			if ( typeof dataTypeOrTransport === "string" &&
      -				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
      -
      -				options.dataTypes.unshift( dataTypeOrTransport );
      -				inspect( dataTypeOrTransport );
      -				return false;
      -			} else if ( seekingTransport ) {
      -				return !( selected = dataTypeOrTransport );
      -			}
      -		} );
      -		return selected;
      -	}
      -
      -	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
      -}
      -
      -// A special extend for ajax options
      -// that takes "flat" options (not to be deep extended)
      -// Fixes #9887
      -function ajaxExtend( target, src ) {
      -	var key, deep,
      -		flatOptions = jQuery.ajaxSettings.flatOptions || {};
      -
      -	for ( key in src ) {
      -		if ( src[ key ] !== undefined ) {
      -			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
      -		}
      -	}
      -	if ( deep ) {
      -		jQuery.extend( true, target, deep );
      -	}
      -
      -	return target;
      -}
      -
      -/* Handles responses to an ajax request:
      - * - finds the right dataType (mediates between content-type and expected dataType)
      - * - returns the corresponding response
      - */
      -function ajaxHandleResponses( s, jqXHR, responses ) {
      -
      -	var ct, type, finalDataType, firstDataType,
      -		contents = s.contents,
      -		dataTypes = s.dataTypes;
      -
      -	// Remove auto dataType and get content-type in the process
      -	while ( dataTypes[ 0 ] === "*" ) {
      -		dataTypes.shift();
      -		if ( ct === undefined ) {
      -			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
      -		}
      -	}
      -
      -	// Check if we're dealing with a known content-type
      -	if ( ct ) {
      -		for ( type in contents ) {
      -			if ( contents[ type ] && contents[ type ].test( ct ) ) {
      -				dataTypes.unshift( type );
      -				break;
      -			}
      -		}
      -	}
      -
      -	// Check to see if we have a response for the expected dataType
      -	if ( dataTypes[ 0 ] in responses ) {
      -		finalDataType = dataTypes[ 0 ];
      -	} else {
      -
      -		// Try convertible dataTypes
      -		for ( type in responses ) {
      -			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
      -				finalDataType = type;
      -				break;
      -			}
      -			if ( !firstDataType ) {
      -				firstDataType = type;
      -			}
      -		}
      -
      -		// Or just use first one
      -		finalDataType = finalDataType || firstDataType;
      -	}
      -
      -	// If we found a dataType
      -	// We add the dataType to the list if needed
      -	// and return the corresponding response
      -	if ( finalDataType ) {
      -		if ( finalDataType !== dataTypes[ 0 ] ) {
      -			dataTypes.unshift( finalDataType );
      -		}
      -		return responses[ finalDataType ];
      -	}
      -}
      -
      -/* Chain conversions given the request and the original response
      - * Also sets the responseXXX fields on the jqXHR instance
      - */
      -function ajaxConvert( s, response, jqXHR, isSuccess ) {
      -	var conv2, current, conv, tmp, prev,
      -		converters = {},
      -
      -		// Work with a copy of dataTypes in case we need to modify it for conversion
      -		dataTypes = s.dataTypes.slice();
      -
      -	// Create converters map with lowercased keys
      -	if ( dataTypes[ 1 ] ) {
      -		for ( conv in s.converters ) {
      -			converters[ conv.toLowerCase() ] = s.converters[ conv ];
      -		}
      -	}
      -
      -	current = dataTypes.shift();
      -
      -	// Convert to each sequential dataType
      -	while ( current ) {
      -
      -		if ( s.responseFields[ current ] ) {
      -			jqXHR[ s.responseFields[ current ] ] = response;
      -		}
      -
      -		// Apply the dataFilter if provided
      -		if ( !prev && isSuccess && s.dataFilter ) {
      -			response = s.dataFilter( response, s.dataType );
      -		}
      -
      -		prev = current;
      -		current = dataTypes.shift();
      -
      -		if ( current ) {
      -
      -			// There's only work to do if current dataType is non-auto
      -			if ( current === "*" ) {
      -
      -				current = prev;
      -
      -			// Convert response if prev dataType is non-auto and differs from current
      -			} else if ( prev !== "*" && prev !== current ) {
      -
      -				// Seek a direct converter
      -				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
      -
      -				// If none found, seek a pair
      -				if ( !conv ) {
      -					for ( conv2 in converters ) {
      -
      -						// If conv2 outputs current
      -						tmp = conv2.split( " " );
      -						if ( tmp[ 1 ] === current ) {
      -
      -							// If prev can be converted to accepted input
      -							conv = converters[ prev + " " + tmp[ 0 ] ] ||
      -								converters[ "* " + tmp[ 0 ] ];
      -							if ( conv ) {
      -
      -								// Condense equivalence converters
      -								if ( conv === true ) {
      -									conv = converters[ conv2 ];
      -
      -								// Otherwise, insert the intermediate dataType
      -								} else if ( converters[ conv2 ] !== true ) {
      -									current = tmp[ 0 ];
      -									dataTypes.unshift( tmp[ 1 ] );
      -								}
      -								break;
      -							}
      -						}
      -					}
      -				}
      -
      -				// Apply converter (if not an equivalence)
      -				if ( conv !== true ) {
      -
      -					// Unless errors are allowed to bubble, catch and return them
      -					if ( conv && s.throws ) {
      -						response = conv( response );
      -					} else {
      -						try {
      -							response = conv( response );
      -						} catch ( e ) {
      -							return {
      -								state: "parsererror",
      -								error: conv ? e : "No conversion from " + prev + " to " + current
      -							};
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	return { state: "success", data: response };
      -}
      -
      -jQuery.extend( {
      -
      -	// Counter for holding the number of active queries
      -	active: 0,
      -
      -	// Last-Modified header cache for next request
      -	lastModified: {},
      -	etag: {},
      -
      -	ajaxSettings: {
      -		url: location.href,
      -		type: "GET",
      -		isLocal: rlocalProtocol.test( location.protocol ),
      -		global: true,
      -		processData: true,
      -		async: true,
      -		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      -
      -		/*
      -		timeout: 0,
      -		data: null,
      -		dataType: null,
      -		username: null,
      -		password: null,
      -		cache: null,
      -		throws: false,
      -		traditional: false,
      -		headers: {},
      -		*/
      -
      -		accepts: {
      -			"*": allTypes,
      -			text: "text/plain",
      -			html: "text/html",
      -			xml: "application/xml, text/xml",
      -			json: "application/json, text/javascript"
      -		},
      -
      -		contents: {
      -			xml: /\bxml\b/,
      -			html: /\bhtml/,
      -			json: /\bjson\b/
      -		},
      -
      -		responseFields: {
      -			xml: "responseXML",
      -			text: "responseText",
      -			json: "responseJSON"
      -		},
      -
      -		// Data converters
      -		// Keys separate source (or catchall "*") and destination types with a single space
      -		converters: {
      -
      -			// Convert anything to text
      -			"* text": String,
      -
      -			// Text to html (true = no transformation)
      -			"text html": true,
      -
      -			// Evaluate text as a json expression
      -			"text json": JSON.parse,
      -
      -			// Parse text as xml
      -			"text xml": jQuery.parseXML
      -		},
      -
      -		// For options that shouldn't be deep extended:
      -		// you can add your own custom options here if
      -		// and when you create one that shouldn't be
      -		// deep extended (see ajaxExtend)
      -		flatOptions: {
      -			url: true,
      -			context: true
      -		}
      -	},
      -
      -	// Creates a full fledged settings object into target
      -	// with both ajaxSettings and settings fields.
      -	// If target is omitted, writes into ajaxSettings.
      -	ajaxSetup: function( target, settings ) {
      -		return settings ?
      -
      -			// Building a settings object
      -			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
      -
      -			// Extending ajaxSettings
      -			ajaxExtend( jQuery.ajaxSettings, target );
      -	},
      -
      -	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
      -	ajaxTransport: addToPrefiltersOrTransports( transports ),
      -
      -	// Main method
      -	ajax: function( url, options ) {
      -
      -		// If url is an object, simulate pre-1.5 signature
      -		if ( typeof url === "object" ) {
      -			options = url;
      -			url = undefined;
      -		}
      -
      -		// Force options to be an object
      -		options = options || {};
      -
      -		var transport,
      -
      -			// URL without anti-cache param
      -			cacheURL,
      -
      -			// Response headers
      -			responseHeadersString,
      -			responseHeaders,
      -
      -			// timeout handle
      -			timeoutTimer,
      -
      -			// Url cleanup var
      -			urlAnchor,
      -
      -			// Request state (becomes false upon send and true upon completion)
      -			completed,
      -
      -			// To know if global events are to be dispatched
      -			fireGlobals,
      -
      -			// Loop variable
      -			i,
      -
      -			// uncached part of the url
      -			uncached,
      -
      -			// Create the final options object
      -			s = jQuery.ajaxSetup( {}, options ),
      -
      -			// Callbacks context
      -			callbackContext = s.context || s,
      -
      -			// Context for global events is callbackContext if it is a DOM node or jQuery collection
      -			globalEventContext = s.context &&
      -				( callbackContext.nodeType || callbackContext.jquery ) ?
      -					jQuery( callbackContext ) :
      -					jQuery.event,
      -
      -			// Deferreds
      -			deferred = jQuery.Deferred(),
      -			completeDeferred = jQuery.Callbacks( "once memory" ),
      -
      -			// Status-dependent callbacks
      -			statusCode = s.statusCode || {},
      -
      -			// Headers (they are sent all at once)
      -			requestHeaders = {},
      -			requestHeadersNames = {},
      -
      -			// Default abort message
      -			strAbort = "canceled",
      -
      -			// Fake xhr
      -			jqXHR = {
      -				readyState: 0,
      -
      -				// Builds headers hashtable if needed
      -				getResponseHeader: function( key ) {
      -					var match;
      -					if ( completed ) {
      -						if ( !responseHeaders ) {
      -							responseHeaders = {};
      -							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
      -								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
      -							}
      -						}
      -						match = responseHeaders[ key.toLowerCase() ];
      -					}
      -					return match == null ? null : match;
      -				},
      -
      -				// Raw string
      -				getAllResponseHeaders: function() {
      -					return completed ? responseHeadersString : null;
      -				},
      -
      -				// Caches the header
      -				setRequestHeader: function( name, value ) {
      -					if ( completed == null ) {
      -						name = requestHeadersNames[ name.toLowerCase() ] =
      -							requestHeadersNames[ name.toLowerCase() ] || name;
      -						requestHeaders[ name ] = value;
      -					}
      -					return this;
      -				},
      -
      -				// Overrides response content-type header
      -				overrideMimeType: function( type ) {
      -					if ( completed == null ) {
      -						s.mimeType = type;
      -					}
      -					return this;
      -				},
      -
      -				// Status-dependent callbacks
      -				statusCode: function( map ) {
      -					var code;
      -					if ( map ) {
      -						if ( completed ) {
      -
      -							// Execute the appropriate callbacks
      -							jqXHR.always( map[ jqXHR.status ] );
      -						} else {
      -
      -							// Lazy-add the new callbacks in a way that preserves old ones
      -							for ( code in map ) {
      -								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
      -							}
      -						}
      -					}
      -					return this;
      -				},
      -
      -				// Cancel the request
      -				abort: function( statusText ) {
      -					var finalText = statusText || strAbort;
      -					if ( transport ) {
      -						transport.abort( finalText );
      -					}
      -					done( 0, finalText );
      -					return this;
      -				}
      -			};
      -
      -		// Attach deferreds
      -		deferred.promise( jqXHR );
      -
      -		// Add protocol if not provided (prefilters might expect it)
      -		// Handle falsy url in the settings object (#10093: consistency with old signature)
      -		// We also use the url parameter if available
      -		s.url = ( ( url || s.url || location.href ) + "" )
      -			.replace( rprotocol, location.protocol + "//" );
      -
      -		// Alias method option to type as per ticket #12004
      -		s.type = options.method || options.type || s.method || s.type;
      -
      -		// Extract dataTypes list
      -		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
      -
      -		// A cross-domain request is in order when the origin doesn't match the current origin.
      -		if ( s.crossDomain == null ) {
      -			urlAnchor = document.createElement( "a" );
      -
      -			// Support: IE <=8 - 11, Edge 12 - 13
      -			// IE throws exception on accessing the href property if url is malformed,
      -			// e.g. http://example.com:80x/
      -			try {
      -				urlAnchor.href = s.url;
      -
      -				// Support: IE <=8 - 11 only
      -				// Anchor's host property isn't correctly set when s.url is relative
      -				urlAnchor.href = urlAnchor.href;
      -				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
      -					urlAnchor.protocol + "//" + urlAnchor.host;
      -			} catch ( e ) {
      -
      -				// If there is an error parsing the URL, assume it is crossDomain,
      -				// it can be rejected by the transport if it is invalid
      -				s.crossDomain = true;
      -			}
      -		}
      -
      -		// Convert data if not already a string
      -		if ( s.data && s.processData && typeof s.data !== "string" ) {
      -			s.data = jQuery.param( s.data, s.traditional );
      -		}
      -
      -		// Apply prefilters
      -		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
      -
      -		// If request was aborted inside a prefilter, stop there
      -		if ( completed ) {
      -			return jqXHR;
      -		}
      -
      -		// We can fire global events as of now if asked to
      -		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
      -		fireGlobals = jQuery.event && s.global;
      -
      -		// Watch for a new set of requests
      -		if ( fireGlobals && jQuery.active++ === 0 ) {
      -			jQuery.event.trigger( "ajaxStart" );
      -		}
      -
      -		// Uppercase the type
      -		s.type = s.type.toUpperCase();
      -
      -		// Determine if request has content
      -		s.hasContent = !rnoContent.test( s.type );
      -
      -		// Save the URL in case we're toying with the If-Modified-Since
      -		// and/or If-None-Match header later on
      -		// Remove hash to simplify url manipulation
      -		cacheURL = s.url.replace( rhash, "" );
      -
      -		// More options handling for requests with no content
      -		if ( !s.hasContent ) {
      -
      -			// Remember the hash so we can put it back
      -			uncached = s.url.slice( cacheURL.length );
      -
      -			// If data is available, append data to url
      -			if ( s.data ) {
      -				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
      -
      -				// #9682: remove data so that it's not used in an eventual retry
      -				delete s.data;
      -			}
      -
      -			// Add or update anti-cache param if needed
      -			if ( s.cache === false ) {
      -				cacheURL = cacheURL.replace( rantiCache, "$1" );
      -				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
      -			}
      -
      -			// Put hash and anti-cache on the URL that will be requested (gh-1732)
      -			s.url = cacheURL + uncached;
      -
      -		// Change '%20' to '+' if this is encoded form body content (gh-2658)
      -		} else if ( s.data && s.processData &&
      -			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
      -			s.data = s.data.replace( r20, "+" );
      -		}
      -
      -		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -		if ( s.ifModified ) {
      -			if ( jQuery.lastModified[ cacheURL ] ) {
      -				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
      -			}
      -			if ( jQuery.etag[ cacheURL ] ) {
      -				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
      -			}
      -		}
      -
      -		// Set the correct header, if data is being sent
      -		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
      -			jqXHR.setRequestHeader( "Content-Type", s.contentType );
      -		}
      -
      -		// Set the Accepts header for the server, depending on the dataType
      -		jqXHR.setRequestHeader(
      -			"Accept",
      -			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
      -				s.accepts[ s.dataTypes[ 0 ] ] +
      -					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
      -				s.accepts[ "*" ]
      -		);
      -
      -		// Check for headers option
      -		for ( i in s.headers ) {
      -			jqXHR.setRequestHeader( i, s.headers[ i ] );
      -		}
      -
      -		// Allow custom headers/mimetypes and early abort
      -		if ( s.beforeSend &&
      -			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
      -
      -			// Abort if not done already and return
      -			return jqXHR.abort();
      -		}
      -
      -		// Aborting is no longer a cancellation
      -		strAbort = "abort";
      -
      -		// Install callbacks on deferreds
      -		completeDeferred.add( s.complete );
      -		jqXHR.done( s.success );
      -		jqXHR.fail( s.error );
      -
      -		// Get transport
      -		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
      -
      -		// If no transport, we auto-abort
      -		if ( !transport ) {
      -			done( -1, "No Transport" );
      -		} else {
      -			jqXHR.readyState = 1;
      -
      -			// Send global event
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
      -			}
      -
      -			// If request was aborted inside ajaxSend, stop there
      -			if ( completed ) {
      -				return jqXHR;
      -			}
      -
      -			// Timeout
      -			if ( s.async && s.timeout > 0 ) {
      -				timeoutTimer = window.setTimeout( function() {
      -					jqXHR.abort( "timeout" );
      -				}, s.timeout );
      -			}
      -
      -			try {
      -				completed = false;
      -				transport.send( requestHeaders, done );
      -			} catch ( e ) {
      -
      -				// Rethrow post-completion exceptions
      -				if ( completed ) {
      -					throw e;
      -				}
      -
      -				// Propagate others as results
      -				done( -1, e );
      -			}
      -		}
      -
      -		// Callback for when everything is done
      -		function done( status, nativeStatusText, responses, headers ) {
      -			var isSuccess, success, error, response, modified,
      -				statusText = nativeStatusText;
      -
      -			// Ignore repeat invocations
      -			if ( completed ) {
      -				return;
      -			}
      -
      -			completed = true;
      -
      -			// Clear timeout if it exists
      -			if ( timeoutTimer ) {
      -				window.clearTimeout( timeoutTimer );
      -			}
      -
      -			// Dereference transport for early garbage collection
      -			// (no matter how long the jqXHR object will be used)
      -			transport = undefined;
      -
      -			// Cache response headers
      -			responseHeadersString = headers || "";
      -
      -			// Set readyState
      -			jqXHR.readyState = status > 0 ? 4 : 0;
      -
      -			// Determine if successful
      -			isSuccess = status >= 200 && status < 300 || status === 304;
      -
      -			// Get response data
      -			if ( responses ) {
      -				response = ajaxHandleResponses( s, jqXHR, responses );
      -			}
      -
      -			// Convert no matter what (that way responseXXX fields are always set)
      -			response = ajaxConvert( s, response, jqXHR, isSuccess );
      -
      -			// If successful, handle type chaining
      -			if ( isSuccess ) {
      -
      -				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -				if ( s.ifModified ) {
      -					modified = jqXHR.getResponseHeader( "Last-Modified" );
      -					if ( modified ) {
      -						jQuery.lastModified[ cacheURL ] = modified;
      -					}
      -					modified = jqXHR.getResponseHeader( "etag" );
      -					if ( modified ) {
      -						jQuery.etag[ cacheURL ] = modified;
      -					}
      -				}
      -
      -				// if no content
      -				if ( status === 204 || s.type === "HEAD" ) {
      -					statusText = "nocontent";
      -
      -				// if not modified
      -				} else if ( status === 304 ) {
      -					statusText = "notmodified";
      -
      -				// If we have data, let's convert it
      -				} else {
      -					statusText = response.state;
      -					success = response.data;
      -					error = response.error;
      -					isSuccess = !error;
      -				}
      -			} else {
      -
      -				// Extract error from statusText and normalize for non-aborts
      -				error = statusText;
      -				if ( status || !statusText ) {
      -					statusText = "error";
      -					if ( status < 0 ) {
      -						status = 0;
      -					}
      -				}
      -			}
      -
      -			// Set data for the fake xhr object
      -			jqXHR.status = status;
      -			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
      -
      -			// Success/Error
      -			if ( isSuccess ) {
      -				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
      -			} else {
      -				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
      -			}
      -
      -			// Status-dependent callbacks
      -			jqXHR.statusCode( statusCode );
      -			statusCode = undefined;
      -
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
      -					[ jqXHR, s, isSuccess ? success : error ] );
      -			}
      -
      -			// Complete
      -			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
      -
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
      -
      -				// Handle the global AJAX counter
      -				if ( !( --jQuery.active ) ) {
      -					jQuery.event.trigger( "ajaxStop" );
      -				}
      -			}
      -		}
      -
      -		return jqXHR;
      -	},
      -
      -	getJSON: function( url, data, callback ) {
      -		return jQuery.get( url, data, callback, "json" );
      -	},
      -
      -	getScript: function( url, callback ) {
      -		return jQuery.get( url, undefined, callback, "script" );
      -	}
      -} );
      -
      -jQuery.each( [ "get", "post" ], function( i, method ) {
      -	jQuery[ method ] = function( url, data, callback, type ) {
      -
      -		// Shift arguments if data argument was omitted
      -		if ( jQuery.isFunction( data ) ) {
      -			type = type || callback;
      -			callback = data;
      -			data = undefined;
      -		}
      -
      -		// The url can be an options object (which then must have .url)
      -		return jQuery.ajax( jQuery.extend( {
      -			url: url,
      -			type: method,
      -			dataType: type,
      -			data: data,
      -			success: callback
      -		}, jQuery.isPlainObject( url ) && url ) );
      -	};
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/ajax/jsonp.js b/bower_components/jquery/src/ajax/jsonp.js
      deleted file mode 100644
      index 8c406e7223..0000000000
      --- a/bower_components/jquery/src/ajax/jsonp.js
      +++ /dev/null
      @@ -1,102 +0,0 @@
      -define( [
      -	"../core",
      -	"./var/nonce",
      -	"./var/rquery",
      -	"../ajax"
      -], function( jQuery, nonce, rquery ) {
      -
      -"use strict";
      -
      -var oldCallbacks = [],
      -	rjsonp = /(=)\?(?=&|$)|\?\?/;
      -
      -// Default jsonp settings
      -jQuery.ajaxSetup( {
      -	jsonp: "callback",
      -	jsonpCallback: function() {
      -		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
      -		this[ callback ] = true;
      -		return callback;
      -	}
      -} );
      -
      -// Detect, normalize options and install callbacks for jsonp requests
      -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
      -
      -	var callbackName, overwritten, responseContainer,
      -		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
      -			"url" :
      -			typeof s.data === "string" &&
      -				( s.contentType || "" )
      -					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
      -				rjsonp.test( s.data ) && "data"
      -		);
      -
      -	// Handle iff the expected data type is "jsonp" or we have a parameter to set
      -	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
      -
      -		// Get callback name, remembering preexisting value associated with it
      -		callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
      -			s.jsonpCallback() :
      -			s.jsonpCallback;
      -
      -		// Insert callback into url or form data
      -		if ( jsonProp ) {
      -			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
      -		} else if ( s.jsonp !== false ) {
      -			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
      -		}
      -
      -		// Use data converter to retrieve json after script execution
      -		s.converters[ "script json" ] = function() {
      -			if ( !responseContainer ) {
      -				jQuery.error( callbackName + " was not called" );
      -			}
      -			return responseContainer[ 0 ];
      -		};
      -
      -		// Force json dataType
      -		s.dataTypes[ 0 ] = "json";
      -
      -		// Install callback
      -		overwritten = window[ callbackName ];
      -		window[ callbackName ] = function() {
      -			responseContainer = arguments;
      -		};
      -
      -		// Clean-up function (fires after converters)
      -		jqXHR.always( function() {
      -
      -			// If previous value didn't exist - remove it
      -			if ( overwritten === undefined ) {
      -				jQuery( window ).removeProp( callbackName );
      -
      -			// Otherwise restore preexisting value
      -			} else {
      -				window[ callbackName ] = overwritten;
      -			}
      -
      -			// Save back as free
      -			if ( s[ callbackName ] ) {
      -
      -				// Make sure that re-using the options doesn't screw things around
      -				s.jsonpCallback = originalSettings.jsonpCallback;
      -
      -				// Save the callback name for future use
      -				oldCallbacks.push( callbackName );
      -			}
      -
      -			// Call if it was a function and we have a response
      -			if ( responseContainer && jQuery.isFunction( overwritten ) ) {
      -				overwritten( responseContainer[ 0 ] );
      -			}
      -
      -			responseContainer = overwritten = undefined;
      -		} );
      -
      -		// Delegate to script
      -		return "script";
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/ajax/load.js b/bower_components/jquery/src/ajax/load.js
      deleted file mode 100644
      index 3ce3a5aae7..0000000000
      --- a/bower_components/jquery/src/ajax/load.js
      +++ /dev/null
      @@ -1,76 +0,0 @@
      -define( [
      -	"../core",
      -	"../core/stripAndCollapse",
      -	"../core/parseHTML",
      -	"../ajax",
      -	"../traversing",
      -	"../manipulation",
      -	"../selector"
      -], function( jQuery, stripAndCollapse ) {
      -
      -"use strict";
      -
      -/**
      - * Load a url into a page
      - */
      -jQuery.fn.load = function( url, params, callback ) {
      -	var selector, type, response,
      -		self = this,
      -		off = url.indexOf( " " );
      -
      -	if ( off > -1 ) {
      -		selector = stripAndCollapse( url.slice( off ) );
      -		url = url.slice( 0, off );
      -	}
      -
      -	// If it's a function
      -	if ( jQuery.isFunction( params ) ) {
      -
      -		// We assume that it's the callback
      -		callback = params;
      -		params = undefined;
      -
      -	// Otherwise, build a param string
      -	} else if ( params && typeof params === "object" ) {
      -		type = "POST";
      -	}
      -
      -	// If we have elements to modify, make the request
      -	if ( self.length > 0 ) {
      -		jQuery.ajax( {
      -			url: url,
      -
      -			// If "type" variable is undefined, then "GET" method will be used.
      -			// Make value of this field explicit since
      -			// user can override it through ajaxSetup method
      -			type: type || "GET",
      -			dataType: "html",
      -			data: params
      -		} ).done( function( responseText ) {
      -
      -			// Save response for use in complete callback
      -			response = arguments;
      -
      -			self.html( selector ?
      -
      -				// If a selector was specified, locate the right elements in a dummy div
      -				// Exclude scripts to avoid IE 'Permission Denied' errors
      -				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
      -
      -				// Otherwise use the full result
      -				responseText );
      -
      -		// If the request succeeds, this function gets "data", "status", "jqXHR"
      -		// but they are ignored because response was set above.
      -		// If it fails, this function gets "jqXHR", "status", "error"
      -		} ).always( callback && function( jqXHR, status ) {
      -			self.each( function() {
      -				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
      -			} );
      -		} );
      -	}
      -
      -	return this;
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/ajax/parseXML.js b/bower_components/jquery/src/ajax/parseXML.js
      deleted file mode 100644
      index acf7ab259f..0000000000
      --- a/bower_components/jquery/src/ajax/parseXML.js
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -define( [
      -	"../core"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -// Cross-browser xml parsing
      -jQuery.parseXML = function( data ) {
      -	var xml;
      -	if ( !data || typeof data !== "string" ) {
      -		return null;
      -	}
      -
      -	// Support: IE 9 - 11 only
      -	// IE throws on parseFromString with invalid input.
      -	try {
      -		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
      -	} catch ( e ) {
      -		xml = undefined;
      -	}
      -
      -	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
      -		jQuery.error( "Invalid XML: " + data );
      -	}
      -	return xml;
      -};
      -
      -return jQuery.parseXML;
      -
      -} );
      diff --git a/bower_components/jquery/src/ajax/script.js b/bower_components/jquery/src/ajax/script.js
      deleted file mode 100644
      index 6e0d21e993..0000000000
      --- a/bower_components/jquery/src/ajax/script.js
      +++ /dev/null
      @@ -1,77 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/document",
      -	"../ajax"
      -], function( jQuery, document ) {
      -
      -"use strict";
      -
      -// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
      -jQuery.ajaxPrefilter( function( s ) {
      -	if ( s.crossDomain ) {
      -		s.contents.script = false;
      -	}
      -} );
      -
      -// Install script dataType
      -jQuery.ajaxSetup( {
      -	accepts: {
      -		script: "text/javascript, application/javascript, " +
      -			"application/ecmascript, application/x-ecmascript"
      -	},
      -	contents: {
      -		script: /\b(?:java|ecma)script\b/
      -	},
      -	converters: {
      -		"text script": function( text ) {
      -			jQuery.globalEval( text );
      -			return text;
      -		}
      -	}
      -} );
      -
      -// Handle cache's special case and crossDomain
      -jQuery.ajaxPrefilter( "script", function( s ) {
      -	if ( s.cache === undefined ) {
      -		s.cache = false;
      -	}
      -	if ( s.crossDomain ) {
      -		s.type = "GET";
      -	}
      -} );
      -
      -// Bind script tag hack transport
      -jQuery.ajaxTransport( "script", function( s ) {
      -
      -	// This transport only deals with cross domain requests
      -	if ( s.crossDomain ) {
      -		var script, callback;
      -		return {
      -			send: function( _, complete ) {
      -				script = jQuery( "<script>" ).prop( {
      -					charset: s.scriptCharset,
      -					src: s.url
      -				} ).on(
      -					"load error",
      -					callback = function( evt ) {
      -						script.remove();
      -						callback = null;
      -						if ( evt ) {
      -							complete( evt.type === "error" ? 404 : 200, evt.type );
      -						}
      -					}
      -				);
      -
      -				// Use native DOM manipulation to avoid our domManip AJAX trickery
      -				document.head.appendChild( script[ 0 ] );
      -			},
      -			abort: function() {
      -				if ( callback ) {
      -					callback();
      -				}
      -			}
      -		};
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/ajax/var/location.js b/bower_components/jquery/src/ajax/var/location.js
      deleted file mode 100644
      index 4171d18c36..0000000000
      --- a/bower_components/jquery/src/ajax/var/location.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return window.location;
      -} );
      diff --git a/bower_components/jquery/src/ajax/var/nonce.js b/bower_components/jquery/src/ajax/var/nonce.js
      deleted file mode 100644
      index 6e23708a80..0000000000
      --- a/bower_components/jquery/src/ajax/var/nonce.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"../../core"
      -], function( jQuery ) {
      -	"use strict";
      -
      -	return jQuery.now();
      -} );
      diff --git a/bower_components/jquery/src/ajax/var/rquery.js b/bower_components/jquery/src/ajax/var/rquery.js
      deleted file mode 100644
      index 06fc37439c..0000000000
      --- a/bower_components/jquery/src/ajax/var/rquery.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return ( /\?/ );
      -} );
      diff --git a/bower_components/jquery/src/ajax/xhr.js b/bower_components/jquery/src/ajax/xhr.js
      deleted file mode 100644
      index 33dafb01d3..0000000000
      --- a/bower_components/jquery/src/ajax/xhr.js
      +++ /dev/null
      @@ -1,169 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/support",
      -	"../ajax"
      -], function( jQuery, support ) {
      -
      -"use strict";
      -
      -jQuery.ajaxSettings.xhr = function() {
      -	try {
      -		return new window.XMLHttpRequest();
      -	} catch ( e ) {}
      -};
      -
      -var xhrSuccessStatus = {
      -
      -		// File protocol always yields status code 0, assume 200
      -		0: 200,
      -
      -		// Support: IE <=9 only
      -		// #1450: sometimes IE returns 1223 when it should be 204
      -		1223: 204
      -	},
      -	xhrSupported = jQuery.ajaxSettings.xhr();
      -
      -support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
      -support.ajax = xhrSupported = !!xhrSupported;
      -
      -jQuery.ajaxTransport( function( options ) {
      -	var callback, errorCallback;
      -
      -	// Cross domain only allowed if supported through XMLHttpRequest
      -	if ( support.cors || xhrSupported && !options.crossDomain ) {
      -		return {
      -			send: function( headers, complete ) {
      -				var i,
      -					xhr = options.xhr();
      -
      -				xhr.open(
      -					options.type,
      -					options.url,
      -					options.async,
      -					options.username,
      -					options.password
      -				);
      -
      -				// Apply custom fields if provided
      -				if ( options.xhrFields ) {
      -					for ( i in options.xhrFields ) {
      -						xhr[ i ] = options.xhrFields[ i ];
      -					}
      -				}
      -
      -				// Override mime type if needed
      -				if ( options.mimeType && xhr.overrideMimeType ) {
      -					xhr.overrideMimeType( options.mimeType );
      -				}
      -
      -				// X-Requested-With header
      -				// For cross-domain requests, seeing as conditions for a preflight are
      -				// akin to a jigsaw puzzle, we simply never set it to be sure.
      -				// (it can always be set on a per-request basis or even using ajaxSetup)
      -				// For same-domain requests, won't change header if already provided.
      -				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
      -					headers[ "X-Requested-With" ] = "XMLHttpRequest";
      -				}
      -
      -				// Set headers
      -				for ( i in headers ) {
      -					xhr.setRequestHeader( i, headers[ i ] );
      -				}
      -
      -				// Callback
      -				callback = function( type ) {
      -					return function() {
      -						if ( callback ) {
      -							callback = errorCallback = xhr.onload =
      -								xhr.onerror = xhr.onabort = xhr.onreadystatechange = null;
      -
      -							if ( type === "abort" ) {
      -								xhr.abort();
      -							} else if ( type === "error" ) {
      -
      -								// Support: IE <=9 only
      -								// On a manual native abort, IE9 throws
      -								// errors on any property access that is not readyState
      -								if ( typeof xhr.status !== "number" ) {
      -									complete( 0, "error" );
      -								} else {
      -									complete(
      -
      -										// File: protocol always yields status 0; see #8605, #14207
      -										xhr.status,
      -										xhr.statusText
      -									);
      -								}
      -							} else {
      -								complete(
      -									xhrSuccessStatus[ xhr.status ] || xhr.status,
      -									xhr.statusText,
      -
      -									// Support: IE <=9 only
      -									// IE9 has no XHR2 but throws on binary (trac-11426)
      -									// For XHR2 non-text, let the caller handle it (gh-2498)
      -									( xhr.responseType || "text" ) !== "text"  ||
      -									typeof xhr.responseText !== "string" ?
      -										{ binary: xhr.response } :
      -										{ text: xhr.responseText },
      -									xhr.getAllResponseHeaders()
      -								);
      -							}
      -						}
      -					};
      -				};
      -
      -				// Listen to events
      -				xhr.onload = callback();
      -				errorCallback = xhr.onerror = callback( "error" );
      -
      -				// Support: IE 9 only
      -				// Use onreadystatechange to replace onabort
      -				// to handle uncaught aborts
      -				if ( xhr.onabort !== undefined ) {
      -					xhr.onabort = errorCallback;
      -				} else {
      -					xhr.onreadystatechange = function() {
      -
      -						// Check readyState before timeout as it changes
      -						if ( xhr.readyState === 4 ) {
      -
      -							// Allow onerror to be called first,
      -							// but that will not handle a native abort
      -							// Also, save errorCallback to a variable
      -							// as xhr.onerror cannot be accessed
      -							window.setTimeout( function() {
      -								if ( callback ) {
      -									errorCallback();
      -								}
      -							} );
      -						}
      -					};
      -				}
      -
      -				// Create the abort callback
      -				callback = callback( "abort" );
      -
      -				try {
      -
      -					// Do send the request (this may raise an exception)
      -					xhr.send( options.hasContent && options.data || null );
      -				} catch ( e ) {
      -
      -					// #14683: Only rethrow if this hasn't been notified as an error yet
      -					if ( callback ) {
      -						throw e;
      -					}
      -				}
      -			},
      -
      -			abort: function() {
      -				if ( callback ) {
      -					callback();
      -				}
      -			}
      -		};
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/attributes.js b/bower_components/jquery/src/attributes.js
      deleted file mode 100644
      index 2d801e5639..0000000000
      --- a/bower_components/jquery/src/attributes.js
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -define( [
      -	"./core",
      -	"./attributes/attr",
      -	"./attributes/prop",
      -	"./attributes/classes",
      -	"./attributes/val"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -// Return jQuery for attributes-only inclusion
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/attributes/attr.js b/bower_components/jquery/src/attributes/attr.js
      deleted file mode 100644
      index 2d9c76feb5..0000000000
      --- a/bower_components/jquery/src/attributes/attr.js
      +++ /dev/null
      @@ -1,140 +0,0 @@
      -define( [
      -	"../core",
      -	"../core/access",
      -	"./support",
      -	"../var/rnothtmlwhite",
      -	"../selector"
      -], function( jQuery, access, support, rnothtmlwhite ) {
      -
      -"use strict";
      -
      -var boolHook,
      -	attrHandle = jQuery.expr.attrHandle;
      -
      -jQuery.fn.extend( {
      -	attr: function( name, value ) {
      -		return access( this, jQuery.attr, name, value, arguments.length > 1 );
      -	},
      -
      -	removeAttr: function( name ) {
      -		return this.each( function() {
      -			jQuery.removeAttr( this, name );
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	attr: function( elem, name, value ) {
      -		var ret, hooks,
      -			nType = elem.nodeType;
      -
      -		// Don't get/set attributes on text, comment and attribute nodes
      -		if ( nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		// Fallback to prop when attributes are not supported
      -		if ( typeof elem.getAttribute === "undefined" ) {
      -			return jQuery.prop( elem, name, value );
      -		}
      -
      -		// Attribute hooks are determined by the lowercase version
      -		// Grab necessary hook if one is defined
      -		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
      -			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
      -				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
      -		}
      -
      -		if ( value !== undefined ) {
      -			if ( value === null ) {
      -				jQuery.removeAttr( elem, name );
      -				return;
      -			}
      -
      -			if ( hooks && "set" in hooks &&
      -				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
      -				return ret;
      -			}
      -
      -			elem.setAttribute( name, value + "" );
      -			return value;
      -		}
      -
      -		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
      -			return ret;
      -		}
      -
      -		ret = jQuery.find.attr( elem, name );
      -
      -		// Non-existent attributes return null, we normalize to undefined
      -		return ret == null ? undefined : ret;
      -	},
      -
      -	attrHooks: {
      -		type: {
      -			set: function( elem, value ) {
      -				if ( !support.radioValue && value === "radio" &&
      -					jQuery.nodeName( elem, "input" ) ) {
      -					var val = elem.value;
      -					elem.setAttribute( "type", value );
      -					if ( val ) {
      -						elem.value = val;
      -					}
      -					return value;
      -				}
      -			}
      -		}
      -	},
      -
      -	removeAttr: function( elem, value ) {
      -		var name,
      -			i = 0,
      -
      -			// Attribute names can contain non-HTML whitespace characters
      -			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
      -			attrNames = value && value.match( rnothtmlwhite );
      -
      -		if ( attrNames && elem.nodeType === 1 ) {
      -			while ( ( name = attrNames[ i++ ] ) ) {
      -				elem.removeAttribute( name );
      -			}
      -		}
      -	}
      -} );
      -
      -// Hooks for boolean attributes
      -boolHook = {
      -	set: function( elem, value, name ) {
      -		if ( value === false ) {
      -
      -			// Remove boolean attributes when set to false
      -			jQuery.removeAttr( elem, name );
      -		} else {
      -			elem.setAttribute( name, name );
      -		}
      -		return name;
      -	}
      -};
      -
      -jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
      -	var getter = attrHandle[ name ] || jQuery.find.attr;
      -
      -	attrHandle[ name ] = function( elem, name, isXML ) {
      -		var ret, handle,
      -			lowercaseName = name.toLowerCase();
      -
      -		if ( !isXML ) {
      -
      -			// Avoid an infinite loop by temporarily removing this function from the getter
      -			handle = attrHandle[ lowercaseName ];
      -			attrHandle[ lowercaseName ] = ret;
      -			ret = getter( elem, name, isXML ) != null ?
      -				lowercaseName :
      -				null;
      -			attrHandle[ lowercaseName ] = handle;
      -		}
      -		return ret;
      -	};
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/attributes/classes.js b/bower_components/jquery/src/attributes/classes.js
      deleted file mode 100644
      index 23b4cd6af4..0000000000
      --- a/bower_components/jquery/src/attributes/classes.js
      +++ /dev/null
      @@ -1,174 +0,0 @@
      -define( [
      -	"../core",
      -	"../core/stripAndCollapse",
      -	"../var/rnothtmlwhite",
      -	"../data/var/dataPriv",
      -	"../core/init"
      -], function( jQuery, stripAndCollapse, rnothtmlwhite, dataPriv ) {
      -
      -"use strict";
      -
      -function getClass( elem ) {
      -	return elem.getAttribute && elem.getAttribute( "class" ) || "";
      -}
      -
      -jQuery.fn.extend( {
      -	addClass: function( value ) {
      -		var classes, elem, cur, curValue, clazz, j, finalValue,
      -			i = 0;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( j ) {
      -				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
      -			} );
      -		}
      -
      -		if ( typeof value === "string" && value ) {
      -			classes = value.match( rnothtmlwhite ) || [];
      -
      -			while ( ( elem = this[ i++ ] ) ) {
      -				curValue = getClass( elem );
      -				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
      -
      -				if ( cur ) {
      -					j = 0;
      -					while ( ( clazz = classes[ j++ ] ) ) {
      -						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
      -							cur += clazz + " ";
      -						}
      -					}
      -
      -					// Only assign if different to avoid unneeded rendering.
      -					finalValue = stripAndCollapse( cur );
      -					if ( curValue !== finalValue ) {
      -						elem.setAttribute( "class", finalValue );
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	removeClass: function( value ) {
      -		var classes, elem, cur, curValue, clazz, j, finalValue,
      -			i = 0;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( j ) {
      -				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
      -			} );
      -		}
      -
      -		if ( !arguments.length ) {
      -			return this.attr( "class", "" );
      -		}
      -
      -		if ( typeof value === "string" && value ) {
      -			classes = value.match( rnothtmlwhite ) || [];
      -
      -			while ( ( elem = this[ i++ ] ) ) {
      -				curValue = getClass( elem );
      -
      -				// This expression is here for better compressibility (see addClass)
      -				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
      -
      -				if ( cur ) {
      -					j = 0;
      -					while ( ( clazz = classes[ j++ ] ) ) {
      -
      -						// Remove *all* instances
      -						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
      -							cur = cur.replace( " " + clazz + " ", " " );
      -						}
      -					}
      -
      -					// Only assign if different to avoid unneeded rendering.
      -					finalValue = stripAndCollapse( cur );
      -					if ( curValue !== finalValue ) {
      -						elem.setAttribute( "class", finalValue );
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	toggleClass: function( value, stateVal ) {
      -		var type = typeof value;
      -
      -		if ( typeof stateVal === "boolean" && type === "string" ) {
      -			return stateVal ? this.addClass( value ) : this.removeClass( value );
      -		}
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each( function( i ) {
      -				jQuery( this ).toggleClass(
      -					value.call( this, i, getClass( this ), stateVal ),
      -					stateVal
      -				);
      -			} );
      -		}
      -
      -		return this.each( function() {
      -			var className, i, self, classNames;
      -
      -			if ( type === "string" ) {
      -
      -				// Toggle individual class names
      -				i = 0;
      -				self = jQuery( this );
      -				classNames = value.match( rnothtmlwhite ) || [];
      -
      -				while ( ( className = classNames[ i++ ] ) ) {
      -
      -					// Check each className given, space separated list
      -					if ( self.hasClass( className ) ) {
      -						self.removeClass( className );
      -					} else {
      -						self.addClass( className );
      -					}
      -				}
      -
      -			// Toggle whole class name
      -			} else if ( value === undefined || type === "boolean" ) {
      -				className = getClass( this );
      -				if ( className ) {
      -
      -					// Store className if set
      -					dataPriv.set( this, "__className__", className );
      -				}
      -
      -				// If the element has a class name or if we're passed `false`,
      -				// then remove the whole classname (if there was one, the above saved it).
      -				// Otherwise bring back whatever was previously saved (if anything),
      -				// falling back to the empty string if nothing was stored.
      -				if ( this.setAttribute ) {
      -					this.setAttribute( "class",
      -						className || value === false ?
      -						"" :
      -						dataPriv.get( this, "__className__" ) || ""
      -					);
      -				}
      -			}
      -		} );
      -	},
      -
      -	hasClass: function( selector ) {
      -		var className, elem,
      -			i = 0;
      -
      -		className = " " + selector + " ";
      -		while ( ( elem = this[ i++ ] ) ) {
      -			if ( elem.nodeType === 1 &&
      -				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
      -					return true;
      -			}
      -		}
      -
      -		return false;
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/attributes/prop.js b/bower_components/jquery/src/attributes/prop.js
      deleted file mode 100644
      index 49ac244dfd..0000000000
      --- a/bower_components/jquery/src/attributes/prop.js
      +++ /dev/null
      @@ -1,143 +0,0 @@
      -define( [
      -	"../core",
      -	"../core/access",
      -	"./support",
      -	"../selector"
      -], function( jQuery, access, support ) {
      -
      -"use strict";
      -
      -var rfocusable = /^(?:input|select|textarea|button)$/i,
      -	rclickable = /^(?:a|area)$/i;
      -
      -jQuery.fn.extend( {
      -	prop: function( name, value ) {
      -		return access( this, jQuery.prop, name, value, arguments.length > 1 );
      -	},
      -
      -	removeProp: function( name ) {
      -		return this.each( function() {
      -			delete this[ jQuery.propFix[ name ] || name ];
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	prop: function( elem, name, value ) {
      -		var ret, hooks,
      -			nType = elem.nodeType;
      -
      -		// Don't get/set properties on text, comment and attribute nodes
      -		if ( nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
      -
      -			// Fix name and attach hooks
      -			name = jQuery.propFix[ name ] || name;
      -			hooks = jQuery.propHooks[ name ];
      -		}
      -
      -		if ( value !== undefined ) {
      -			if ( hooks && "set" in hooks &&
      -				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
      -				return ret;
      -			}
      -
      -			return ( elem[ name ] = value );
      -		}
      -
      -		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
      -			return ret;
      -		}
      -
      -		return elem[ name ];
      -	},
      -
      -	propHooks: {
      -		tabIndex: {
      -			get: function( elem ) {
      -
      -				// Support: IE <=9 - 11 only
      -				// elem.tabIndex doesn't always return the
      -				// correct value when it hasn't been explicitly set
      -				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
      -				// Use proper attribute retrieval(#12072)
      -				var tabindex = jQuery.find.attr( elem, "tabindex" );
      -
      -				if ( tabindex ) {
      -					return parseInt( tabindex, 10 );
      -				}
      -
      -				if (
      -					rfocusable.test( elem.nodeName ) ||
      -					rclickable.test( elem.nodeName ) &&
      -					elem.href
      -				) {
      -					return 0;
      -				}
      -
      -				return -1;
      -			}
      -		}
      -	},
      -
      -	propFix: {
      -		"for": "htmlFor",
      -		"class": "className"
      -	}
      -} );
      -
      -// Support: IE <=11 only
      -// Accessing the selectedIndex property
      -// forces the browser to respect setting selected
      -// on the option
      -// The getter ensures a default option is selected
      -// when in an optgroup
      -// eslint rule "no-unused-expressions" is disabled for this code
      -// since it considers such accessions noop
      -if ( !support.optSelected ) {
      -	jQuery.propHooks.selected = {
      -		get: function( elem ) {
      -
      -			/* eslint no-unused-expressions: "off" */
      -
      -			var parent = elem.parentNode;
      -			if ( parent && parent.parentNode ) {
      -				parent.parentNode.selectedIndex;
      -			}
      -			return null;
      -		},
      -		set: function( elem ) {
      -
      -			/* eslint no-unused-expressions: "off" */
      -
      -			var parent = elem.parentNode;
      -			if ( parent ) {
      -				parent.selectedIndex;
      -
      -				if ( parent.parentNode ) {
      -					parent.parentNode.selectedIndex;
      -				}
      -			}
      -		}
      -	};
      -}
      -
      -jQuery.each( [
      -	"tabIndex",
      -	"readOnly",
      -	"maxLength",
      -	"cellSpacing",
      -	"cellPadding",
      -	"rowSpan",
      -	"colSpan",
      -	"useMap",
      -	"frameBorder",
      -	"contentEditable"
      -], function() {
      -	jQuery.propFix[ this.toLowerCase() ] = this;
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/attributes/support.js b/bower_components/jquery/src/attributes/support.js
      deleted file mode 100644
      index af60e96949..0000000000
      --- a/bower_components/jquery/src/attributes/support.js
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -define( [
      -	"../var/document",
      -	"../var/support"
      -], function( document, support ) {
      -
      -"use strict";
      -
      -( function() {
      -	var input = document.createElement( "input" ),
      -		select = document.createElement( "select" ),
      -		opt = select.appendChild( document.createElement( "option" ) );
      -
      -	input.type = "checkbox";
      -
      -	// Support: Android <=4.3 only
      -	// Default value for a checkbox should be "on"
      -	support.checkOn = input.value !== "";
      -
      -	// Support: IE <=11 only
      -	// Must access selectedIndex to make default options select
      -	support.optSelected = opt.selected;
      -
      -	// Support: IE <=11 only
      -	// An input loses its value after becoming a radio
      -	input = document.createElement( "input" );
      -	input.value = "t";
      -	input.type = "radio";
      -	support.radioValue = input.value === "t";
      -} )();
      -
      -return support;
      -
      -} );
      diff --git a/bower_components/jquery/src/attributes/val.js b/bower_components/jquery/src/attributes/val.js
      deleted file mode 100644
      index fbf406929e..0000000000
      --- a/bower_components/jquery/src/attributes/val.js
      +++ /dev/null
      @@ -1,188 +0,0 @@
      -define( [
      -	"../core",
      -	"../core/stripAndCollapse",
      -	"./support",
      -	"../core/init"
      -], function( jQuery, stripAndCollapse, support ) {
      -
      -"use strict";
      -
      -var rreturn = /\r/g;
      -
      -jQuery.fn.extend( {
      -	val: function( value ) {
      -		var hooks, ret, isFunction,
      -			elem = this[ 0 ];
      -
      -		if ( !arguments.length ) {
      -			if ( elem ) {
      -				hooks = jQuery.valHooks[ elem.type ] ||
      -					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
      -
      -				if ( hooks &&
      -					"get" in hooks &&
      -					( ret = hooks.get( elem, "value" ) ) !== undefined
      -				) {
      -					return ret;
      -				}
      -
      -				ret = elem.value;
      -
      -				// Handle most common string cases
      -				if ( typeof ret === "string" ) {
      -					return ret.replace( rreturn, "" );
      -				}
      -
      -				// Handle cases where value is null/undef or number
      -				return ret == null ? "" : ret;
      -			}
      -
      -			return;
      -		}
      -
      -		isFunction = jQuery.isFunction( value );
      -
      -		return this.each( function( i ) {
      -			var val;
      -
      -			if ( this.nodeType !== 1 ) {
      -				return;
      -			}
      -
      -			if ( isFunction ) {
      -				val = value.call( this, i, jQuery( this ).val() );
      -			} else {
      -				val = value;
      -			}
      -
      -			// Treat null/undefined as ""; convert numbers to string
      -			if ( val == null ) {
      -				val = "";
      -
      -			} else if ( typeof val === "number" ) {
      -				val += "";
      -
      -			} else if ( jQuery.isArray( val ) ) {
      -				val = jQuery.map( val, function( value ) {
      -					return value == null ? "" : value + "";
      -				} );
      -			}
      -
      -			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
      -
      -			// If set returns undefined, fall back to normal setting
      -			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
      -				this.value = val;
      -			}
      -		} );
      -	}
      -} );
      -
      -jQuery.extend( {
      -	valHooks: {
      -		option: {
      -			get: function( elem ) {
      -
      -				var val = jQuery.find.attr( elem, "value" );
      -				return val != null ?
      -					val :
      -
      -					// Support: IE <=10 - 11 only
      -					// option.text throws exceptions (#14686, #14858)
      -					// Strip and collapse whitespace
      -					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
      -					stripAndCollapse( jQuery.text( elem ) );
      -			}
      -		},
      -		select: {
      -			get: function( elem ) {
      -				var value, option, i,
      -					options = elem.options,
      -					index = elem.selectedIndex,
      -					one = elem.type === "select-one",
      -					values = one ? null : [],
      -					max = one ? index + 1 : options.length;
      -
      -				if ( index < 0 ) {
      -					i = max;
      -
      -				} else {
      -					i = one ? index : 0;
      -				}
      -
      -				// Loop through all the selected options
      -				for ( ; i < max; i++ ) {
      -					option = options[ i ];
      -
      -					// Support: IE <=9 only
      -					// IE8-9 doesn't update selected after form reset (#2551)
      -					if ( ( option.selected || i === index ) &&
      -
      -							// Don't return options that are disabled or in a disabled optgroup
      -							!option.disabled &&
      -							( !option.parentNode.disabled ||
      -								!jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
      -
      -						// Get the specific value for the option
      -						value = jQuery( option ).val();
      -
      -						// We don't need an array for one selects
      -						if ( one ) {
      -							return value;
      -						}
      -
      -						// Multi-Selects return an array
      -						values.push( value );
      -					}
      -				}
      -
      -				return values;
      -			},
      -
      -			set: function( elem, value ) {
      -				var optionSet, option,
      -					options = elem.options,
      -					values = jQuery.makeArray( value ),
      -					i = options.length;
      -
      -				while ( i-- ) {
      -					option = options[ i ];
      -
      -					/* eslint-disable no-cond-assign */
      -
      -					if ( option.selected =
      -						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
      -					) {
      -						optionSet = true;
      -					}
      -
      -					/* eslint-enable no-cond-assign */
      -				}
      -
      -				// Force browsers to behave consistently when non-matching value is set
      -				if ( !optionSet ) {
      -					elem.selectedIndex = -1;
      -				}
      -				return values;
      -			}
      -		}
      -	}
      -} );
      -
      -// Radios and checkboxes getter/setter
      -jQuery.each( [ "radio", "checkbox" ], function() {
      -	jQuery.valHooks[ this ] = {
      -		set: function( elem, value ) {
      -			if ( jQuery.isArray( value ) ) {
      -				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
      -			}
      -		}
      -	};
      -	if ( !support.checkOn ) {
      -		jQuery.valHooks[ this ].get = function( elem ) {
      -			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
      -		};
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/callbacks.js b/bower_components/jquery/src/callbacks.js
      deleted file mode 100644
      index a6d4df03fb..0000000000
      --- a/bower_components/jquery/src/callbacks.js
      +++ /dev/null
      @@ -1,234 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/rnothtmlwhite"
      -], function( jQuery, rnothtmlwhite ) {
      -
      -"use strict";
      -
      -// Convert String-formatted options into Object-formatted ones
      -function createOptions( options ) {
      -	var object = {};
      -	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
      -		object[ flag ] = true;
      -	} );
      -	return object;
      -}
      -
      -/*
      - * Create a callback list using the following parameters:
      - *
      - *	options: an optional list of space-separated options that will change how
      - *			the callback list behaves or a more traditional option object
      - *
      - * By default a callback list will act like an event callback list and can be
      - * "fired" multiple times.
      - *
      - * Possible options:
      - *
      - *	once:			will ensure the callback list can only be fired once (like a Deferred)
      - *
      - *	memory:			will keep track of previous values and will call any callback added
      - *					after the list has been fired right away with the latest "memorized"
      - *					values (like a Deferred)
      - *
      - *	unique:			will ensure a callback can only be added once (no duplicate in the list)
      - *
      - *	stopOnFalse:	interrupt callings when a callback returns false
      - *
      - */
      -jQuery.Callbacks = function( options ) {
      -
      -	// Convert options from String-formatted to Object-formatted if needed
      -	// (we check in cache first)
      -	options = typeof options === "string" ?
      -		createOptions( options ) :
      -		jQuery.extend( {}, options );
      -
      -	var // Flag to know if list is currently firing
      -		firing,
      -
      -		// Last fire value for non-forgettable lists
      -		memory,
      -
      -		// Flag to know if list was already fired
      -		fired,
      -
      -		// Flag to prevent firing
      -		locked,
      -
      -		// Actual callback list
      -		list = [],
      -
      -		// Queue of execution data for repeatable lists
      -		queue = [],
      -
      -		// Index of currently firing callback (modified by add/remove as needed)
      -		firingIndex = -1,
      -
      -		// Fire callbacks
      -		fire = function() {
      -
      -			// Enforce single-firing
      -			locked = options.once;
      -
      -			// Execute callbacks for all pending executions,
      -			// respecting firingIndex overrides and runtime changes
      -			fired = firing = true;
      -			for ( ; queue.length; firingIndex = -1 ) {
      -				memory = queue.shift();
      -				while ( ++firingIndex < list.length ) {
      -
      -					// Run callback and check for early termination
      -					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
      -						options.stopOnFalse ) {
      -
      -						// Jump to end and forget the data so .add doesn't re-fire
      -						firingIndex = list.length;
      -						memory = false;
      -					}
      -				}
      -			}
      -
      -			// Forget the data if we're done with it
      -			if ( !options.memory ) {
      -				memory = false;
      -			}
      -
      -			firing = false;
      -
      -			// Clean up if we're done firing for good
      -			if ( locked ) {
      -
      -				// Keep an empty list if we have data for future add calls
      -				if ( memory ) {
      -					list = [];
      -
      -				// Otherwise, this object is spent
      -				} else {
      -					list = "";
      -				}
      -			}
      -		},
      -
      -		// Actual Callbacks object
      -		self = {
      -
      -			// Add a callback or a collection of callbacks to the list
      -			add: function() {
      -				if ( list ) {
      -
      -					// If we have memory from a past run, we should fire after adding
      -					if ( memory && !firing ) {
      -						firingIndex = list.length - 1;
      -						queue.push( memory );
      -					}
      -
      -					( function add( args ) {
      -						jQuery.each( args, function( _, arg ) {
      -							if ( jQuery.isFunction( arg ) ) {
      -								if ( !options.unique || !self.has( arg ) ) {
      -									list.push( arg );
      -								}
      -							} else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) {
      -
      -								// Inspect recursively
      -								add( arg );
      -							}
      -						} );
      -					} )( arguments );
      -
      -					if ( memory && !firing ) {
      -						fire();
      -					}
      -				}
      -				return this;
      -			},
      -
      -			// Remove a callback from the list
      -			remove: function() {
      -				jQuery.each( arguments, function( _, arg ) {
      -					var index;
      -					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
      -						list.splice( index, 1 );
      -
      -						// Handle firing indexes
      -						if ( index <= firingIndex ) {
      -							firingIndex--;
      -						}
      -					}
      -				} );
      -				return this;
      -			},
      -
      -			// Check if a given callback is in the list.
      -			// If no argument is given, return whether or not list has callbacks attached.
      -			has: function( fn ) {
      -				return fn ?
      -					jQuery.inArray( fn, list ) > -1 :
      -					list.length > 0;
      -			},
      -
      -			// Remove all callbacks from the list
      -			empty: function() {
      -				if ( list ) {
      -					list = [];
      -				}
      -				return this;
      -			},
      -
      -			// Disable .fire and .add
      -			// Abort any current/pending executions
      -			// Clear all callbacks and values
      -			disable: function() {
      -				locked = queue = [];
      -				list = memory = "";
      -				return this;
      -			},
      -			disabled: function() {
      -				return !list;
      -			},
      -
      -			// Disable .fire
      -			// Also disable .add unless we have memory (since it would have no effect)
      -			// Abort any pending executions
      -			lock: function() {
      -				locked = queue = [];
      -				if ( !memory && !firing ) {
      -					list = memory = "";
      -				}
      -				return this;
      -			},
      -			locked: function() {
      -				return !!locked;
      -			},
      -
      -			// Call all callbacks with the given context and arguments
      -			fireWith: function( context, args ) {
      -				if ( !locked ) {
      -					args = args || [];
      -					args = [ context, args.slice ? args.slice() : args ];
      -					queue.push( args );
      -					if ( !firing ) {
      -						fire();
      -					}
      -				}
      -				return this;
      -			},
      -
      -			// Call all the callbacks with the given arguments
      -			fire: function() {
      -				self.fireWith( this, arguments );
      -				return this;
      -			},
      -
      -			// To know if the callbacks have already been called at least once
      -			fired: function() {
      -				return !!fired;
      -			}
      -		};
      -
      -	return self;
      -};
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/core.js b/bower_components/jquery/src/core.js
      deleted file mode 100644
      index 4c8a4ab44b..0000000000
      --- a/bower_components/jquery/src/core.js
      +++ /dev/null
      @@ -1,482 +0,0 @@
      -/* global Symbol */
      -// Defining this global in .eslintrc.json would create a danger of using the global
      -// unguarded in another place, it seems safer to define global only for this module
      -
      -define( [
      -	"./var/arr",
      -	"./var/document",
      -	"./var/getProto",
      -	"./var/slice",
      -	"./var/concat",
      -	"./var/push",
      -	"./var/indexOf",
      -	"./var/class2type",
      -	"./var/toString",
      -	"./var/hasOwn",
      -	"./var/fnToString",
      -	"./var/ObjectFunctionString",
      -	"./var/support",
      -	"./core/DOMEval"
      -], function( arr, document, getProto, slice, concat, push, indexOf,
      -	class2type, toString, hasOwn, fnToString, ObjectFunctionString,
      -	support, DOMEval ) {
      -
      -"use strict";
      -
      -var
      -	version = "3.1.1",
      -
      -	// Define a local copy of jQuery
      -	jQuery = function( selector, context ) {
      -
      -		// The jQuery object is actually just the init constructor 'enhanced'
      -		// Need init if jQuery is called (just allow error to be thrown if not included)
      -		return new jQuery.fn.init( selector, context );
      -	},
      -
      -	// Support: Android <=4.0 only
      -	// Make sure we trim BOM and NBSP
      -	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
      -
      -	// Matches dashed string for camelizing
      -	rmsPrefix = /^-ms-/,
      -	rdashAlpha = /-([a-z])/g,
      -
      -	// Used by jQuery.camelCase as callback to replace()
      -	fcamelCase = function( all, letter ) {
      -		return letter.toUpperCase();
      -	};
      -
      -jQuery.fn = jQuery.prototype = {
      -
      -	// The current version of jQuery being used
      -	jquery: version,
      -
      -	constructor: jQuery,
      -
      -	// The default length of a jQuery object is 0
      -	length: 0,
      -
      -	toArray: function() {
      -		return slice.call( this );
      -	},
      -
      -	// Get the Nth element in the matched element set OR
      -	// Get the whole matched element set as a clean array
      -	get: function( num ) {
      -
      -		// Return all the elements in a clean array
      -		if ( num == null ) {
      -			return slice.call( this );
      -		}
      -
      -		// Return just the one element from the set
      -		return num < 0 ? this[ num + this.length ] : this[ num ];
      -	},
      -
      -	// Take an array of elements and push it onto the stack
      -	// (returning the new matched element set)
      -	pushStack: function( elems ) {
      -
      -		// Build a new jQuery matched element set
      -		var ret = jQuery.merge( this.constructor(), elems );
      -
      -		// Add the old object onto the stack (as a reference)
      -		ret.prevObject = this;
      -
      -		// Return the newly-formed element set
      -		return ret;
      -	},
      -
      -	// Execute a callback for every element in the matched set.
      -	each: function( callback ) {
      -		return jQuery.each( this, callback );
      -	},
      -
      -	map: function( callback ) {
      -		return this.pushStack( jQuery.map( this, function( elem, i ) {
      -			return callback.call( elem, i, elem );
      -		} ) );
      -	},
      -
      -	slice: function() {
      -		return this.pushStack( slice.apply( this, arguments ) );
      -	},
      -
      -	first: function() {
      -		return this.eq( 0 );
      -	},
      -
      -	last: function() {
      -		return this.eq( -1 );
      -	},
      -
      -	eq: function( i ) {
      -		var len = this.length,
      -			j = +i + ( i < 0 ? len : 0 );
      -		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
      -	},
      -
      -	end: function() {
      -		return this.prevObject || this.constructor();
      -	},
      -
      -	// For internal use only.
      -	// Behaves like an Array's method, not like a jQuery method.
      -	push: push,
      -	sort: arr.sort,
      -	splice: arr.splice
      -};
      -
      -jQuery.extend = jQuery.fn.extend = function() {
      -	var options, name, src, copy, copyIsArray, clone,
      -		target = arguments[ 0 ] || {},
      -		i = 1,
      -		length = arguments.length,
      -		deep = false;
      -
      -	// Handle a deep copy situation
      -	if ( typeof target === "boolean" ) {
      -		deep = target;
      -
      -		// Skip the boolean and the target
      -		target = arguments[ i ] || {};
      -		i++;
      -	}
      -
      -	// Handle case when target is a string or something (possible in deep copy)
      -	if ( typeof target !== "object" && !jQuery.isFunction( target ) ) {
      -		target = {};
      -	}
      -
      -	// Extend jQuery itself if only one argument is passed
      -	if ( i === length ) {
      -		target = this;
      -		i--;
      -	}
      -
      -	for ( ; i < length; i++ ) {
      -
      -		// Only deal with non-null/undefined values
      -		if ( ( options = arguments[ i ] ) != null ) {
      -
      -			// Extend the base object
      -			for ( name in options ) {
      -				src = target[ name ];
      -				copy = options[ name ];
      -
      -				// Prevent never-ending loop
      -				if ( target === copy ) {
      -					continue;
      -				}
      -
      -				// Recurse if we're merging plain objects or arrays
      -				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
      -					( copyIsArray = jQuery.isArray( copy ) ) ) ) {
      -
      -					if ( copyIsArray ) {
      -						copyIsArray = false;
      -						clone = src && jQuery.isArray( src ) ? src : [];
      -
      -					} else {
      -						clone = src && jQuery.isPlainObject( src ) ? src : {};
      -					}
      -
      -					// Never move original objects, clone them
      -					target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -				// Don't bring in undefined values
      -				} else if ( copy !== undefined ) {
      -					target[ name ] = copy;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Return the modified object
      -	return target;
      -};
      -
      -jQuery.extend( {
      -
      -	// Unique for each copy of jQuery on the page
      -	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
      -
      -	// Assume jQuery is ready without the ready module
      -	isReady: true,
      -
      -	error: function( msg ) {
      -		throw new Error( msg );
      -	},
      -
      -	noop: function() {},
      -
      -	isFunction: function( obj ) {
      -		return jQuery.type( obj ) === "function";
      -	},
      -
      -	isArray: Array.isArray,
      -
      -	isWindow: function( obj ) {
      -		return obj != null && obj === obj.window;
      -	},
      -
      -	isNumeric: function( obj ) {
      -
      -		// As of jQuery 3.0, isNumeric is limited to
      -		// strings and numbers (primitives or objects)
      -		// that can be coerced to finite numbers (gh-2662)
      -		var type = jQuery.type( obj );
      -		return ( type === "number" || type === "string" ) &&
      -
      -			// parseFloat NaNs numeric-cast false positives ("")
      -			// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
      -			// subtraction forces infinities to NaN
      -			!isNaN( obj - parseFloat( obj ) );
      -	},
      -
      -	isPlainObject: function( obj ) {
      -		var proto, Ctor;
      -
      -		// Detect obvious negatives
      -		// Use toString instead of jQuery.type to catch host objects
      -		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
      -			return false;
      -		}
      -
      -		proto = getProto( obj );
      -
      -		// Objects with no prototype (e.g., `Object.create( null )`) are plain
      -		if ( !proto ) {
      -			return true;
      -		}
      -
      -		// Objects with prototype are plain iff they were constructed by a global Object function
      -		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
      -		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
      -	},
      -
      -	isEmptyObject: function( obj ) {
      -
      -		/* eslint-disable no-unused-vars */
      -		// See https://github.com/eslint/eslint/issues/6125
      -		var name;
      -
      -		for ( name in obj ) {
      -			return false;
      -		}
      -		return true;
      -	},
      -
      -	type: function( obj ) {
      -		if ( obj == null ) {
      -			return obj + "";
      -		}
      -
      -		// Support: Android <=2.3 only (functionish RegExp)
      -		return typeof obj === "object" || typeof obj === "function" ?
      -			class2type[ toString.call( obj ) ] || "object" :
      -			typeof obj;
      -	},
      -
      -	// Evaluates a script in a global context
      -	globalEval: function( code ) {
      -		DOMEval( code );
      -	},
      -
      -	// Convert dashed to camelCase; used by the css and data modules
      -	// Support: IE <=9 - 11, Edge 12 - 13
      -	// Microsoft forgot to hump their vendor prefix (#9572)
      -	camelCase: function( string ) {
      -		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -	},
      -
      -	nodeName: function( elem, name ) {
      -		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
      -	},
      -
      -	each: function( obj, callback ) {
      -		var length, i = 0;
      -
      -		if ( isArrayLike( obj ) ) {
      -			length = obj.length;
      -			for ( ; i < length; i++ ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		} else {
      -			for ( i in obj ) {
      -				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
      -					break;
      -				}
      -			}
      -		}
      -
      -		return obj;
      -	},
      -
      -	// Support: Android <=4.0 only
      -	trim: function( text ) {
      -		return text == null ?
      -			"" :
      -			( text + "" ).replace( rtrim, "" );
      -	},
      -
      -	// results is for internal usage only
      -	makeArray: function( arr, results ) {
      -		var ret = results || [];
      -
      -		if ( arr != null ) {
      -			if ( isArrayLike( Object( arr ) ) ) {
      -				jQuery.merge( ret,
      -					typeof arr === "string" ?
      -					[ arr ] : arr
      -				);
      -			} else {
      -				push.call( ret, arr );
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	inArray: function( elem, arr, i ) {
      -		return arr == null ? -1 : indexOf.call( arr, elem, i );
      -	},
      -
      -	// Support: Android <=4.0 only, PhantomJS 1 only
      -	// push.apply(_, arraylike) throws on ancient WebKit
      -	merge: function( first, second ) {
      -		var len = +second.length,
      -			j = 0,
      -			i = first.length;
      -
      -		for ( ; j < len; j++ ) {
      -			first[ i++ ] = second[ j ];
      -		}
      -
      -		first.length = i;
      -
      -		return first;
      -	},
      -
      -	grep: function( elems, callback, invert ) {
      -		var callbackInverse,
      -			matches = [],
      -			i = 0,
      -			length = elems.length,
      -			callbackExpect = !invert;
      -
      -		// Go through the array, only saving the items
      -		// that pass the validator function
      -		for ( ; i < length; i++ ) {
      -			callbackInverse = !callback( elems[ i ], i );
      -			if ( callbackInverse !== callbackExpect ) {
      -				matches.push( elems[ i ] );
      -			}
      -		}
      -
      -		return matches;
      -	},
      -
      -	// arg is for internal usage only
      -	map: function( elems, callback, arg ) {
      -		var length, value,
      -			i = 0,
      -			ret = [];
      -
      -		// Go through the array, translating each of the items to their new values
      -		if ( isArrayLike( elems ) ) {
      -			length = elems.length;
      -			for ( ; i < length; i++ ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -
      -		// Go through every key on the object,
      -		} else {
      -			for ( i in elems ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret.push( value );
      -				}
      -			}
      -		}
      -
      -		// Flatten any nested arrays
      -		return concat.apply( [], ret );
      -	},
      -
      -	// A global GUID counter for objects
      -	guid: 1,
      -
      -	// Bind a function to a context, optionally partially applying any
      -	// arguments.
      -	proxy: function( fn, context ) {
      -		var tmp, args, proxy;
      -
      -		if ( typeof context === "string" ) {
      -			tmp = fn[ context ];
      -			context = fn;
      -			fn = tmp;
      -		}
      -
      -		// Quick check to determine if target is callable, in the spec
      -		// this throws a TypeError, but we will just return undefined.
      -		if ( !jQuery.isFunction( fn ) ) {
      -			return undefined;
      -		}
      -
      -		// Simulated bind
      -		args = slice.call( arguments, 2 );
      -		proxy = function() {
      -			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
      -		};
      -
      -		// Set the guid of unique handler to the same of original handler, so it can be removed
      -		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
      -
      -		return proxy;
      -	},
      -
      -	now: Date.now,
      -
      -	// jQuery.support is not used in Core but other projects attach their
      -	// properties to it so it needs to exist.
      -	support: support
      -} );
      -
      -if ( typeof Symbol === "function" ) {
      -	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
      -}
      -
      -// Populate the class2type map
      -jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
      -function( i, name ) {
      -	class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -} );
      -
      -function isArrayLike( obj ) {
      -
      -	// Support: real iOS 8.2 only (not reproducible in simulator)
      -	// `in` check used to prevent JIT error (gh-2145)
      -	// hasOwn isn't used here due to false negatives
      -	// regarding Nodelist length in IE
      -	var length = !!obj && "length" in obj && obj.length,
      -		type = jQuery.type( obj );
      -
      -	if ( type === "function" || jQuery.isWindow( obj ) ) {
      -		return false;
      -	}
      -
      -	return type === "array" || length === 0 ||
      -		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
      -}
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/core/DOMEval.js b/bower_components/jquery/src/core/DOMEval.js
      deleted file mode 100644
      index c49c12e5e5..0000000000
      --- a/bower_components/jquery/src/core/DOMEval.js
      +++ /dev/null
      @@ -1,16 +0,0 @@
      -define( [
      -	"../var/document"
      -], function( document ) {
      -	"use strict";
      -
      -	function DOMEval( code, doc ) {
      -		doc = doc || document;
      -
      -		var script = doc.createElement( "script" );
      -
      -		script.text = code;
      -		doc.head.appendChild( script ).parentNode.removeChild( script );
      -	}
      -
      -	return DOMEval;
      -} );
      diff --git a/bower_components/jquery/src/core/access.js b/bower_components/jquery/src/core/access.js
      deleted file mode 100644
      index 86cdbc7e68..0000000000
      --- a/bower_components/jquery/src/core/access.js
      +++ /dev/null
      @@ -1,70 +0,0 @@
      -define( [
      -	"../core"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -// Multifunctional method to get and set values of a collection
      -// The value/s can optionally be executed if it's a function
      -var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
      -	var i = 0,
      -		len = elems.length,
      -		bulk = key == null;
      -
      -	// Sets many values
      -	if ( jQuery.type( key ) === "object" ) {
      -		chainable = true;
      -		for ( i in key ) {
      -			access( elems, fn, i, key[ i ], true, emptyGet, raw );
      -		}
      -
      -	// Sets one value
      -	} else if ( value !== undefined ) {
      -		chainable = true;
      -
      -		if ( !jQuery.isFunction( value ) ) {
      -			raw = true;
      -		}
      -
      -		if ( bulk ) {
      -
      -			// Bulk operations run against the entire set
      -			if ( raw ) {
      -				fn.call( elems, value );
      -				fn = null;
      -
      -			// ...except when executing function values
      -			} else {
      -				bulk = fn;
      -				fn = function( elem, key, value ) {
      -					return bulk.call( jQuery( elem ), value );
      -				};
      -			}
      -		}
      -
      -		if ( fn ) {
      -			for ( ; i < len; i++ ) {
      -				fn(
      -					elems[ i ], key, raw ?
      -					value :
      -					value.call( elems[ i ], i, fn( elems[ i ], key ) )
      -				);
      -			}
      -		}
      -	}
      -
      -	if ( chainable ) {
      -		return elems;
      -	}
      -
      -	// Gets
      -	if ( bulk ) {
      -		return fn.call( elems );
      -	}
      -
      -	return len ? fn( elems[ 0 ], key ) : emptyGet;
      -};
      -
      -return access;
      -
      -} );
      diff --git a/bower_components/jquery/src/core/init.js b/bower_components/jquery/src/core/init.js
      deleted file mode 100644
      index 19a3c7c682..0000000000
      --- a/bower_components/jquery/src/core/init.js
      +++ /dev/null
      @@ -1,127 +0,0 @@
      -// Initialize a jQuery object
      -define( [
      -	"../core",
      -	"../var/document",
      -	"./var/rsingleTag",
      -	"../traversing/findFilter"
      -], function( jQuery, document, rsingleTag ) {
      -
      -"use strict";
      -
      -// A central reference to the root jQuery(document)
      -var rootjQuery,
      -
      -	// A simple way to check for HTML strings
      -	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
      -	// Strict HTML recognition (#11290: must start with <)
      -	// Shortcut simple #id case for speed
      -	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
      -
      -	init = jQuery.fn.init = function( selector, context, root ) {
      -		var match, elem;
      -
      -		// HANDLE: $(""), $(null), $(undefined), $(false)
      -		if ( !selector ) {
      -			return this;
      -		}
      -
      -		// Method init() accepts an alternate rootjQuery
      -		// so migrate can support jQuery.sub (gh-2101)
      -		root = root || rootjQuery;
      -
      -		// Handle HTML strings
      -		if ( typeof selector === "string" ) {
      -			if ( selector[ 0 ] === "<" &&
      -				selector[ selector.length - 1 ] === ">" &&
      -				selector.length >= 3 ) {
      -
      -				// Assume that strings that start and end with <> are HTML and skip the regex check
      -				match = [ null, selector, null ];
      -
      -			} else {
      -				match = rquickExpr.exec( selector );
      -			}
      -
      -			// Match html or make sure no context is specified for #id
      -			if ( match && ( match[ 1 ] || !context ) ) {
      -
      -				// HANDLE: $(html) -> $(array)
      -				if ( match[ 1 ] ) {
      -					context = context instanceof jQuery ? context[ 0 ] : context;
      -
      -					// Option to run scripts is true for back-compat
      -					// Intentionally let the error be thrown if parseHTML is not present
      -					jQuery.merge( this, jQuery.parseHTML(
      -						match[ 1 ],
      -						context && context.nodeType ? context.ownerDocument || context : document,
      -						true
      -					) );
      -
      -					// HANDLE: $(html, props)
      -					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
      -						for ( match in context ) {
      -
      -							// Properties of context are called as methods if possible
      -							if ( jQuery.isFunction( this[ match ] ) ) {
      -								this[ match ]( context[ match ] );
      -
      -							// ...and otherwise set as attributes
      -							} else {
      -								this.attr( match, context[ match ] );
      -							}
      -						}
      -					}
      -
      -					return this;
      -
      -				// HANDLE: $(#id)
      -				} else {
      -					elem = document.getElementById( match[ 2 ] );
      -
      -					if ( elem ) {
      -
      -						// Inject the element directly into the jQuery object
      -						this[ 0 ] = elem;
      -						this.length = 1;
      -					}
      -					return this;
      -				}
      -
      -			// HANDLE: $(expr, $(...))
      -			} else if ( !context || context.jquery ) {
      -				return ( context || root ).find( selector );
      -
      -			// HANDLE: $(expr, context)
      -			// (which is just equivalent to: $(context).find(expr)
      -			} else {
      -				return this.constructor( context ).find( selector );
      -			}
      -
      -		// HANDLE: $(DOMElement)
      -		} else if ( selector.nodeType ) {
      -			this[ 0 ] = selector;
      -			this.length = 1;
      -			return this;
      -
      -		// HANDLE: $(function)
      -		// Shortcut for document ready
      -		} else if ( jQuery.isFunction( selector ) ) {
      -			return root.ready !== undefined ?
      -				root.ready( selector ) :
      -
      -				// Execute immediately if ready is not present
      -				selector( jQuery );
      -		}
      -
      -		return jQuery.makeArray( selector, this );
      -	};
      -
      -// Give the init function the jQuery prototype for later instantiation
      -init.prototype = jQuery.fn;
      -
      -// Initialize central reference
      -rootjQuery = jQuery( document );
      -
      -return init;
      -
      -} );
      diff --git a/bower_components/jquery/src/core/parseHTML.js b/bower_components/jquery/src/core/parseHTML.js
      deleted file mode 100644
      index 21ff6bfa70..0000000000
      --- a/bower_components/jquery/src/core/parseHTML.js
      +++ /dev/null
      @@ -1,65 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/document",
      -	"./var/rsingleTag",
      -	"../manipulation/buildFragment",
      -
      -	// This is the only module that needs core/support
      -	"./support"
      -], function( jQuery, document, rsingleTag, buildFragment, support ) {
      -
      -"use strict";
      -
      -// Argument "data" should be string of html
      -// context (optional): If specified, the fragment will be created in this context,
      -// defaults to document
      -// keepScripts (optional): If true, will include scripts passed in the html string
      -jQuery.parseHTML = function( data, context, keepScripts ) {
      -	if ( typeof data !== "string" ) {
      -		return [];
      -	}
      -	if ( typeof context === "boolean" ) {
      -		keepScripts = context;
      -		context = false;
      -	}
      -
      -	var base, parsed, scripts;
      -
      -	if ( !context ) {
      -
      -		// Stop scripts or inline event handlers from being executed immediately
      -		// by using document.implementation
      -		if ( support.createHTMLDocument ) {
      -			context = document.implementation.createHTMLDocument( "" );
      -
      -			// Set the base href for the created document
      -			// so any parsed elements with URLs
      -			// are based on the document's URL (gh-2965)
      -			base = context.createElement( "base" );
      -			base.href = document.location.href;
      -			context.head.appendChild( base );
      -		} else {
      -			context = document;
      -		}
      -	}
      -
      -	parsed = rsingleTag.exec( data );
      -	scripts = !keepScripts && [];
      -
      -	// Single tag
      -	if ( parsed ) {
      -		return [ context.createElement( parsed[ 1 ] ) ];
      -	}
      -
      -	parsed = buildFragment( [ data ], context, scripts );
      -
      -	if ( scripts && scripts.length ) {
      -		jQuery( scripts ).remove();
      -	}
      -
      -	return jQuery.merge( [], parsed.childNodes );
      -};
      -
      -return jQuery.parseHTML;
      -
      -} );
      diff --git a/bower_components/jquery/src/core/ready-no-deferred.js b/bower_components/jquery/src/core/ready-no-deferred.js
      deleted file mode 100644
      index 02d6014013..0000000000
      --- a/bower_components/jquery/src/core/ready-no-deferred.js
      +++ /dev/null
      @@ -1,105 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/document"
      -], function( jQuery, document ) {
      -
      -"use strict";
      -
      -var readyCallbacks = [],
      -	whenReady = function( fn ) {
      -		readyCallbacks.push( fn );
      -	},
      -	executeReady = function( fn ) {
      -
      -		// Prevent errors from freezing future callback execution (gh-1823)
      -		// Not backwards-compatible as this does not execute sync
      -		window.setTimeout( function() {
      -			fn.call( document, jQuery );
      -		} );
      -	};
      -
      -jQuery.fn.ready = function( fn ) {
      -	whenReady( fn );
      -	return this;
      -};
      -
      -jQuery.extend( {
      -
      -	// Is the DOM ready to be used? Set to true once it occurs.
      -	isReady: false,
      -
      -	// A counter to track how many items to wait for before
      -	// the ready event fires. See #6781
      -	readyWait: 1,
      -
      -	// Hold (or release) the ready event
      -	holdReady: function( hold ) {
      -		if ( hold ) {
      -			jQuery.readyWait++;
      -		} else {
      -			jQuery.ready( true );
      -		}
      -	},
      -
      -	ready: function( wait ) {
      -
      -		// Abort if there are pending holds or we're already ready
      -		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
      -			return;
      -		}
      -
      -		// Remember that the DOM is ready
      -		jQuery.isReady = true;
      -
      -		// If a normal DOM Ready event fired, decrement, and wait if need be
      -		if ( wait !== true && --jQuery.readyWait > 0 ) {
      -			return;
      -		}
      -
      -		whenReady = function( fn ) {
      -			readyCallbacks.push( fn );
      -
      -			while ( readyCallbacks.length ) {
      -				fn = readyCallbacks.shift();
      -				if ( jQuery.isFunction( fn ) ) {
      -					executeReady( fn );
      -				}
      -			}
      -		};
      -
      -		whenReady();
      -	}
      -} );
      -
      -// Make jQuery.ready Promise consumable (gh-1778)
      -jQuery.ready.then = jQuery.fn.ready;
      -
      -/**
      - * The ready event handler and self cleanup method
      - */
      -function completed() {
      -	document.removeEventListener( "DOMContentLoaded", completed );
      -	window.removeEventListener( "load", completed );
      -	jQuery.ready();
      -}
      -
      -// Catch cases where $(document).ready() is called
      -// after the browser event has already occurred.
      -// Support: IE9-10 only
      -// Older IE sometimes signals "interactive" too soon
      -if ( document.readyState === "complete" ||
      -	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
      -
      -	// Handle it asynchronously to allow scripts the opportunity to delay ready
      -	window.setTimeout( jQuery.ready );
      -
      -} else {
      -
      -	// Use the handy event callback
      -	document.addEventListener( "DOMContentLoaded", completed );
      -
      -	// A fallback to window.onload, that will always work
      -	window.addEventListener( "load", completed );
      -}
      -
      -} );
      diff --git a/bower_components/jquery/src/core/ready.js b/bower_components/jquery/src/core/ready.js
      deleted file mode 100644
      index 53b1b2da75..0000000000
      --- a/bower_components/jquery/src/core/ready.js
      +++ /dev/null
      @@ -1,95 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/document",
      -	"../core/readyException",
      -	"../deferred"
      -], function( jQuery, document ) {
      -
      -"use strict";
      -
      -// The deferred used on DOM ready
      -var readyList = jQuery.Deferred();
      -
      -jQuery.fn.ready = function( fn ) {
      -
      -	readyList
      -		.then( fn )
      -
      -		// Wrap jQuery.readyException in a function so that the lookup
      -		// happens at the time of error handling instead of callback
      -		// registration.
      -		.catch( function( error ) {
      -			jQuery.readyException( error );
      -		} );
      -
      -	return this;
      -};
      -
      -jQuery.extend( {
      -
      -	// Is the DOM ready to be used? Set to true once it occurs.
      -	isReady: false,
      -
      -	// A counter to track how many items to wait for before
      -	// the ready event fires. See #6781
      -	readyWait: 1,
      -
      -	// Hold (or release) the ready event
      -	holdReady: function( hold ) {
      -		if ( hold ) {
      -			jQuery.readyWait++;
      -		} else {
      -			jQuery.ready( true );
      -		}
      -	},
      -
      -	// Handle when the DOM is ready
      -	ready: function( wait ) {
      -
      -		// Abort if there are pending holds or we're already ready
      -		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
      -			return;
      -		}
      -
      -		// Remember that the DOM is ready
      -		jQuery.isReady = true;
      -
      -		// If a normal DOM Ready event fired, decrement, and wait if need be
      -		if ( wait !== true && --jQuery.readyWait > 0 ) {
      -			return;
      -		}
      -
      -		// If there are functions bound, to execute
      -		readyList.resolveWith( document, [ jQuery ] );
      -	}
      -} );
      -
      -jQuery.ready.then = readyList.then;
      -
      -// The ready event handler and self cleanup method
      -function completed() {
      -	document.removeEventListener( "DOMContentLoaded", completed );
      -	window.removeEventListener( "load", completed );
      -	jQuery.ready();
      -}
      -
      -// Catch cases where $(document).ready() is called
      -// after the browser event has already occurred.
      -// Support: IE <=9 - 10 only
      -// Older IE sometimes signals "interactive" too soon
      -if ( document.readyState === "complete" ||
      -	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
      -
      -	// Handle it asynchronously to allow scripts the opportunity to delay ready
      -	window.setTimeout( jQuery.ready );
      -
      -} else {
      -
      -	// Use the handy event callback
      -	document.addEventListener( "DOMContentLoaded", completed );
      -
      -	// A fallback to window.onload, that will always work
      -	window.addEventListener( "load", completed );
      -}
      -
      -} );
      diff --git a/bower_components/jquery/src/core/readyException.js b/bower_components/jquery/src/core/readyException.js
      deleted file mode 100644
      index 72bdd90b54..0000000000
      --- a/bower_components/jquery/src/core/readyException.js
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -define( [
      -	"../core"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -jQuery.readyException = function( error ) {
      -	window.setTimeout( function() {
      -		throw error;
      -	} );
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/core/stripAndCollapse.js b/bower_components/jquery/src/core/stripAndCollapse.js
      deleted file mode 100644
      index ccad6602ec..0000000000
      --- a/bower_components/jquery/src/core/stripAndCollapse.js
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -define( [
      -	"../var/rnothtmlwhite"
      -], function( rnothtmlwhite ) {
      -	"use strict";
      -
      -	// Strip and collapse whitespace according to HTML spec
      -	// https://html.spec.whatwg.org/multipage/infrastructure.html#strip-and-collapse-whitespace
      -	function stripAndCollapse( value ) {
      -		var tokens = value.match( rnothtmlwhite ) || [];
      -		return tokens.join( " " );
      -	}
      -
      -	return stripAndCollapse;
      -} );
      diff --git a/bower_components/jquery/src/core/support.js b/bower_components/jquery/src/core/support.js
      deleted file mode 100644
      index 13ae02f085..0000000000
      --- a/bower_components/jquery/src/core/support.js
      +++ /dev/null
      @@ -1,20 +0,0 @@
      -define( [
      -	"../var/document",
      -	"../var/support"
      -], function( document, support ) {
      -
      -"use strict";
      -
      -// Support: Safari 8 only
      -// In Safari 8 documents created via document.implementation.createHTMLDocument
      -// collapse sibling forms: the second one becomes a child of the first one.
      -// Because of that, this security measure has to be disabled in Safari 8.
      -// https://bugs.webkit.org/show_bug.cgi?id=137337
      -support.createHTMLDocument = ( function() {
      -	var body = document.implementation.createHTMLDocument( "" ).body;
      -	body.innerHTML = "<form></form><form></form>";
      -	return body.childNodes.length === 2;
      -} )();
      -
      -return support;
      -} );
      diff --git a/bower_components/jquery/src/core/var/rsingleTag.js b/bower_components/jquery/src/core/var/rsingleTag.js
      deleted file mode 100644
      index 4d6e8a0ac7..0000000000
      --- a/bower_components/jquery/src/core/var/rsingleTag.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	// Match a standalone tag
      -	return ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
      -} );
      diff --git a/bower_components/jquery/src/css.js b/bower_components/jquery/src/css.js
      deleted file mode 100644
      index 5e44511939..0000000000
      --- a/bower_components/jquery/src/css.js
      +++ /dev/null
      @@ -1,426 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/pnum",
      -	"./core/access",
      -	"./css/var/rmargin",
      -	"./var/document",
      -	"./var/rcssNum",
      -	"./css/var/rnumnonpx",
      -	"./css/var/cssExpand",
      -	"./css/var/getStyles",
      -	"./css/var/swap",
      -	"./css/curCSS",
      -	"./css/adjustCSS",
      -	"./css/addGetHookIf",
      -	"./css/support",
      -
      -	"./core/init",
      -	"./core/ready",
      -	"./selector" // contains
      -], function( jQuery, pnum, access, rmargin, document, rcssNum, rnumnonpx, cssExpand,
      -	getStyles, swap, curCSS, adjustCSS, addGetHookIf, support ) {
      -
      -"use strict";
      -
      -var
      -
      -	// Swappable if display is none or starts with table
      -	// except "table", "table-cell", or "table-caption"
      -	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
      -	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
      -	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
      -	cssNormalTransform = {
      -		letterSpacing: "0",
      -		fontWeight: "400"
      -	},
      -
      -	cssPrefixes = [ "Webkit", "Moz", "ms" ],
      -	emptyStyle = document.createElement( "div" ).style;
      -
      -// Return a css property mapped to a potentially vendor prefixed property
      -function vendorPropName( name ) {
      -
      -	// Shortcut for names that are not vendor prefixed
      -	if ( name in emptyStyle ) {
      -		return name;
      -	}
      -
      -	// Check for vendor prefixed names
      -	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
      -		i = cssPrefixes.length;
      -
      -	while ( i-- ) {
      -		name = cssPrefixes[ i ] + capName;
      -		if ( name in emptyStyle ) {
      -			return name;
      -		}
      -	}
      -}
      -
      -function setPositiveNumber( elem, value, subtract ) {
      -
      -	// Any relative (+/-) values have already been
      -	// normalized at this point
      -	var matches = rcssNum.exec( value );
      -	return matches ?
      -
      -		// Guard against undefined "subtract", e.g., when used as in cssHooks
      -		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
      -		value;
      -}
      -
      -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
      -	var i,
      -		val = 0;
      -
      -	// If we already have the right measurement, avoid augmentation
      -	if ( extra === ( isBorderBox ? "border" : "content" ) ) {
      -		i = 4;
      -
      -	// Otherwise initialize for horizontal or vertical properties
      -	} else {
      -		i = name === "width" ? 1 : 0;
      -	}
      -
      -	for ( ; i < 4; i += 2 ) {
      -
      -		// Both box models exclude margin, so add it if we want it
      -		if ( extra === "margin" ) {
      -			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
      -		}
      -
      -		if ( isBorderBox ) {
      -
      -			// border-box includes padding, so remove it if we want content
      -			if ( extra === "content" ) {
      -				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -			}
      -
      -			// At this point, extra isn't border nor margin, so remove border
      -			if ( extra !== "margin" ) {
      -				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -			}
      -		} else {
      -
      -			// At this point, extra isn't content, so add padding
      -			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -
      -			// At this point, extra isn't content nor padding, so add border
      -			if ( extra !== "padding" ) {
      -				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -			}
      -		}
      -	}
      -
      -	return val;
      -}
      -
      -function getWidthOrHeight( elem, name, extra ) {
      -
      -	// Start with offset property, which is equivalent to the border-box value
      -	var val,
      -		valueIsBorderBox = true,
      -		styles = getStyles( elem ),
      -		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
      -
      -	// Support: IE <=11 only
      -	// Running getBoundingClientRect on a disconnected node
      -	// in IE throws an error.
      -	if ( elem.getClientRects().length ) {
      -		val = elem.getBoundingClientRect()[ name ];
      -	}
      -
      -	// Some non-html elements return undefined for offsetWidth, so check for null/undefined
      -	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
      -	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
      -	if ( val <= 0 || val == null ) {
      -
      -		// Fall back to computed then uncomputed css if necessary
      -		val = curCSS( elem, name, styles );
      -		if ( val < 0 || val == null ) {
      -			val = elem.style[ name ];
      -		}
      -
      -		// Computed unit is not pixels. Stop here and return.
      -		if ( rnumnonpx.test( val ) ) {
      -			return val;
      -		}
      -
      -		// Check for style in case a browser which returns unreliable values
      -		// for getComputedStyle silently falls back to the reliable elem.style
      -		valueIsBorderBox = isBorderBox &&
      -			( support.boxSizingReliable() || val === elem.style[ name ] );
      -
      -		// Normalize "", auto, and prepare for extra
      -		val = parseFloat( val ) || 0;
      -	}
      -
      -	// Use the active box-sizing model to add/subtract irrelevant styles
      -	return ( val +
      -		augmentWidthOrHeight(
      -			elem,
      -			name,
      -			extra || ( isBorderBox ? "border" : "content" ),
      -			valueIsBorderBox,
      -			styles
      -		)
      -	) + "px";
      -}
      -
      -jQuery.extend( {
      -
      -	// Add in style property hooks for overriding the default
      -	// behavior of getting and setting a style property
      -	cssHooks: {
      -		opacity: {
      -			get: function( elem, computed ) {
      -				if ( computed ) {
      -
      -					// We should always get a number back from opacity
      -					var ret = curCSS( elem, "opacity" );
      -					return ret === "" ? "1" : ret;
      -				}
      -			}
      -		}
      -	},
      -
      -	// Don't automatically add "px" to these possibly-unitless properties
      -	cssNumber: {
      -		"animationIterationCount": true,
      -		"columnCount": true,
      -		"fillOpacity": true,
      -		"flexGrow": true,
      -		"flexShrink": true,
      -		"fontWeight": true,
      -		"lineHeight": true,
      -		"opacity": true,
      -		"order": true,
      -		"orphans": true,
      -		"widows": true,
      -		"zIndex": true,
      -		"zoom": true
      -	},
      -
      -	// Add in properties whose names you wish to fix before
      -	// setting or getting the value
      -	cssProps: {
      -		"float": "cssFloat"
      -	},
      -
      -	// Get and set the style property on a DOM Node
      -	style: function( elem, name, value, extra ) {
      -
      -		// Don't set styles on text and comment nodes
      -		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
      -			return;
      -		}
      -
      -		// Make sure that we're working with the right name
      -		var ret, type, hooks,
      -			origName = jQuery.camelCase( name ),
      -			style = elem.style;
      -
      -		name = jQuery.cssProps[ origName ] ||
      -			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
      -
      -		// Gets hook for the prefixed version, then unprefixed version
      -		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -		// Check if we're setting a value
      -		if ( value !== undefined ) {
      -			type = typeof value;
      -
      -			// Convert "+=" or "-=" to relative numbers (#7345)
      -			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
      -				value = adjustCSS( elem, name, ret );
      -
      -				// Fixes bug #9237
      -				type = "number";
      -			}
      -
      -			// Make sure that null and NaN values aren't set (#7116)
      -			if ( value == null || value !== value ) {
      -				return;
      -			}
      -
      -			// If a number was passed in, add the unit (except for certain CSS properties)
      -			if ( type === "number" ) {
      -				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
      -			}
      -
      -			// background-* props affect original clone's values
      -			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
      -				style[ name ] = "inherit";
      -			}
      -
      -			// If a hook was provided, use that value, otherwise just set the specified value
      -			if ( !hooks || !( "set" in hooks ) ||
      -				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
      -
      -				style[ name ] = value;
      -			}
      -
      -		} else {
      -
      -			// If a hook was provided get the non-computed value from there
      -			if ( hooks && "get" in hooks &&
      -				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
      -
      -				return ret;
      -			}
      -
      -			// Otherwise just get the value from the style object
      -			return style[ name ];
      -		}
      -	},
      -
      -	css: function( elem, name, extra, styles ) {
      -		var val, num, hooks,
      -			origName = jQuery.camelCase( name );
      -
      -		// Make sure that we're working with the right name
      -		name = jQuery.cssProps[ origName ] ||
      -			( jQuery.cssProps[ origName ] = vendorPropName( origName ) || origName );
      -
      -		// Try prefixed name followed by the unprefixed name
      -		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -		// If a hook was provided get the computed value from there
      -		if ( hooks && "get" in hooks ) {
      -			val = hooks.get( elem, true, extra );
      -		}
      -
      -		// Otherwise, if a way to get the computed value exists, use that
      -		if ( val === undefined ) {
      -			val = curCSS( elem, name, styles );
      -		}
      -
      -		// Convert "normal" to computed value
      -		if ( val === "normal" && name in cssNormalTransform ) {
      -			val = cssNormalTransform[ name ];
      -		}
      -
      -		// Make numeric if forced or a qualifier was provided and val looks numeric
      -		if ( extra === "" || extra ) {
      -			num = parseFloat( val );
      -			return extra === true || isFinite( num ) ? num || 0 : val;
      -		}
      -		return val;
      -	}
      -} );
      -
      -jQuery.each( [ "height", "width" ], function( i, name ) {
      -	jQuery.cssHooks[ name ] = {
      -		get: function( elem, computed, extra ) {
      -			if ( computed ) {
      -
      -				// Certain elements can have dimension info if we invisibly show them
      -				// but it must have a current display style that would benefit
      -				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
      -
      -					// Support: Safari 8+
      -					// Table columns in Safari have non-zero offsetWidth & zero
      -					// getBoundingClientRect().width unless display is changed.
      -					// Support: IE <=11 only
      -					// Running getBoundingClientRect on a disconnected node
      -					// in IE throws an error.
      -					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
      -						swap( elem, cssShow, function() {
      -							return getWidthOrHeight( elem, name, extra );
      -						} ) :
      -						getWidthOrHeight( elem, name, extra );
      -			}
      -		},
      -
      -		set: function( elem, value, extra ) {
      -			var matches,
      -				styles = extra && getStyles( elem ),
      -				subtract = extra && augmentWidthOrHeight(
      -					elem,
      -					name,
      -					extra,
      -					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
      -					styles
      -				);
      -
      -			// Convert to pixels if value adjustment is needed
      -			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
      -				( matches[ 3 ] || "px" ) !== "px" ) {
      -
      -				elem.style[ name ] = value;
      -				value = jQuery.css( elem, name );
      -			}
      -
      -			return setPositiveNumber( elem, value, subtract );
      -		}
      -	};
      -} );
      -
      -jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
      -	function( elem, computed ) {
      -		if ( computed ) {
      -			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
      -				elem.getBoundingClientRect().left -
      -					swap( elem, { marginLeft: 0 }, function() {
      -						return elem.getBoundingClientRect().left;
      -					} )
      -				) + "px";
      -		}
      -	}
      -);
      -
      -// These hooks are used by animate to expand properties
      -jQuery.each( {
      -	margin: "",
      -	padding: "",
      -	border: "Width"
      -}, function( prefix, suffix ) {
      -	jQuery.cssHooks[ prefix + suffix ] = {
      -		expand: function( value ) {
      -			var i = 0,
      -				expanded = {},
      -
      -				// Assumes a single number if not a string
      -				parts = typeof value === "string" ? value.split( " " ) : [ value ];
      -
      -			for ( ; i < 4; i++ ) {
      -				expanded[ prefix + cssExpand[ i ] + suffix ] =
      -					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
      -			}
      -
      -			return expanded;
      -		}
      -	};
      -
      -	if ( !rmargin.test( prefix ) ) {
      -		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	css: function( name, value ) {
      -		return access( this, function( elem, name, value ) {
      -			var styles, len,
      -				map = {},
      -				i = 0;
      -
      -			if ( jQuery.isArray( name ) ) {
      -				styles = getStyles( elem );
      -				len = name.length;
      -
      -				for ( ; i < len; i++ ) {
      -					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
      -				}
      -
      -				return map;
      -			}
      -
      -			return value !== undefined ?
      -				jQuery.style( elem, name, value ) :
      -				jQuery.css( elem, name );
      -		}, name, value, arguments.length > 1 );
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/css/addGetHookIf.js b/bower_components/jquery/src/css/addGetHookIf.js
      deleted file mode 100644
      index e4bb49a674..0000000000
      --- a/bower_components/jquery/src/css/addGetHookIf.js
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -define( function() {
      -
      -"use strict";
      -
      -function addGetHookIf( conditionFn, hookFn ) {
      -
      -	// Define the hook, we'll check on the first run if it's really needed.
      -	return {
      -		get: function() {
      -			if ( conditionFn() ) {
      -
      -				// Hook not needed (or it's not possible to use it due
      -				// to missing dependency), remove it.
      -				delete this.get;
      -				return;
      -			}
      -
      -			// Hook needed; redefine it so that the support test is not executed again.
      -			return ( this.get = hookFn ).apply( this, arguments );
      -		}
      -	};
      -}
      -
      -return addGetHookIf;
      -
      -} );
      diff --git a/bower_components/jquery/src/css/adjustCSS.js b/bower_components/jquery/src/css/adjustCSS.js
      deleted file mode 100644
      index ded3a16667..0000000000
      --- a/bower_components/jquery/src/css/adjustCSS.js
      +++ /dev/null
      @@ -1,71 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/rcssNum"
      -], function( jQuery, rcssNum ) {
      -
      -"use strict";
      -
      -function adjustCSS( elem, prop, valueParts, tween ) {
      -	var adjusted,
      -		scale = 1,
      -		maxIterations = 20,
      -		currentValue = tween ?
      -			function() {
      -				return tween.cur();
      -			} :
      -			function() {
      -				return jQuery.css( elem, prop, "" );
      -			},
      -		initial = currentValue(),
      -		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
      -
      -		// Starting value computation is required for potential unit mismatches
      -		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
      -			rcssNum.exec( jQuery.css( elem, prop ) );
      -
      -	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
      -
      -		// Trust units reported by jQuery.css
      -		unit = unit || initialInUnit[ 3 ];
      -
      -		// Make sure we update the tween properties later on
      -		valueParts = valueParts || [];
      -
      -		// Iteratively approximate from a nonzero starting point
      -		initialInUnit = +initial || 1;
      -
      -		do {
      -
      -			// If previous iteration zeroed out, double until we get *something*.
      -			// Use string for doubling so we don't accidentally see scale as unchanged below
      -			scale = scale || ".5";
      -
      -			// Adjust and apply
      -			initialInUnit = initialInUnit / scale;
      -			jQuery.style( elem, prop, initialInUnit + unit );
      -
      -		// Update scale, tolerating zero or NaN from tween.cur()
      -		// Break the loop if scale is unchanged or perfect, or if we've just had enough.
      -		} while (
      -			scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations
      -		);
      -	}
      -
      -	if ( valueParts ) {
      -		initialInUnit = +initialInUnit || +initial || 0;
      -
      -		// Apply relative offset (+=/-=) if specified
      -		adjusted = valueParts[ 1 ] ?
      -			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
      -			+valueParts[ 2 ];
      -		if ( tween ) {
      -			tween.unit = unit;
      -			tween.start = initialInUnit;
      -			tween.end = adjusted;
      -		}
      -	}
      -	return adjusted;
      -}
      -
      -return adjustCSS;
      -} );
      diff --git a/bower_components/jquery/src/css/curCSS.js b/bower_components/jquery/src/css/curCSS.js
      deleted file mode 100644
      index 313da42221..0000000000
      --- a/bower_components/jquery/src/css/curCSS.js
      +++ /dev/null
      @@ -1,59 +0,0 @@
      -define( [
      -	"../core",
      -	"./var/rnumnonpx",
      -	"./var/rmargin",
      -	"./var/getStyles",
      -	"./support",
      -	"../selector" // Get jQuery.contains
      -], function( jQuery, rnumnonpx, rmargin, getStyles, support ) {
      -
      -"use strict";
      -
      -function curCSS( elem, name, computed ) {
      -	var width, minWidth, maxWidth, ret,
      -		style = elem.style;
      -
      -	computed = computed || getStyles( elem );
      -
      -	// Support: IE <=9 only
      -	// getPropertyValue is only needed for .css('filter') (#12537)
      -	if ( computed ) {
      -		ret = computed.getPropertyValue( name ) || computed[ name ];
      -
      -		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
      -			ret = jQuery.style( elem, name );
      -		}
      -
      -		// A tribute to the "awesome hack by Dean Edwards"
      -		// Android Browser returns percentage for some values,
      -		// but width seems to be reliably pixels.
      -		// This is against the CSSOM draft spec:
      -		// https://drafts.csswg.org/cssom/#resolved-values
      -		if ( !support.pixelMarginRight() && rnumnonpx.test( ret ) && rmargin.test( name ) ) {
      -
      -			// Remember the original values
      -			width = style.width;
      -			minWidth = style.minWidth;
      -			maxWidth = style.maxWidth;
      -
      -			// Put in the new values to get a computed value out
      -			style.minWidth = style.maxWidth = style.width = ret;
      -			ret = computed.width;
      -
      -			// Revert the changed values
      -			style.width = width;
      -			style.minWidth = minWidth;
      -			style.maxWidth = maxWidth;
      -		}
      -	}
      -
      -	return ret !== undefined ?
      -
      -		// Support: IE <=9 - 11 only
      -		// IE returns zIndex value as an integer.
      -		ret + "" :
      -		ret;
      -}
      -
      -return curCSS;
      -} );
      diff --git a/bower_components/jquery/src/css/hiddenVisibleSelectors.js b/bower_components/jquery/src/css/hiddenVisibleSelectors.js
      deleted file mode 100644
      index d7a9339dd1..0000000000
      --- a/bower_components/jquery/src/css/hiddenVisibleSelectors.js
      +++ /dev/null
      @@ -1,15 +0,0 @@
      -define( [
      -	"../core",
      -	"../selector"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -jQuery.expr.pseudos.hidden = function( elem ) {
      -	return !jQuery.expr.pseudos.visible( elem );
      -};
      -jQuery.expr.pseudos.visible = function( elem ) {
      -	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/css/showHide.js b/bower_components/jquery/src/css/showHide.js
      deleted file mode 100644
      index 3eeafef116..0000000000
      --- a/bower_components/jquery/src/css/showHide.js
      +++ /dev/null
      @@ -1,105 +0,0 @@
      -define( [
      -	"../core",
      -	"../data/var/dataPriv",
      -	"../css/var/isHiddenWithinTree"
      -], function( jQuery, dataPriv, isHiddenWithinTree ) {
      -
      -"use strict";
      -
      -var defaultDisplayMap = {};
      -
      -function getDefaultDisplay( elem ) {
      -	var temp,
      -		doc = elem.ownerDocument,
      -		nodeName = elem.nodeName,
      -		display = defaultDisplayMap[ nodeName ];
      -
      -	if ( display ) {
      -		return display;
      -	}
      -
      -	temp = doc.body.appendChild( doc.createElement( nodeName ) );
      -	display = jQuery.css( temp, "display" );
      -
      -	temp.parentNode.removeChild( temp );
      -
      -	if ( display === "none" ) {
      -		display = "block";
      -	}
      -	defaultDisplayMap[ nodeName ] = display;
      -
      -	return display;
      -}
      -
      -function showHide( elements, show ) {
      -	var display, elem,
      -		values = [],
      -		index = 0,
      -		length = elements.length;
      -
      -	// Determine new display value for elements that need to change
      -	for ( ; index < length; index++ ) {
      -		elem = elements[ index ];
      -		if ( !elem.style ) {
      -			continue;
      -		}
      -
      -		display = elem.style.display;
      -		if ( show ) {
      -
      -			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
      -			// check is required in this first loop unless we have a nonempty display value (either
      -			// inline or about-to-be-restored)
      -			if ( display === "none" ) {
      -				values[ index ] = dataPriv.get( elem, "display" ) || null;
      -				if ( !values[ index ] ) {
      -					elem.style.display = "";
      -				}
      -			}
      -			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
      -				values[ index ] = getDefaultDisplay( elem );
      -			}
      -		} else {
      -			if ( display !== "none" ) {
      -				values[ index ] = "none";
      -
      -				// Remember what we're overwriting
      -				dataPriv.set( elem, "display", display );
      -			}
      -		}
      -	}
      -
      -	// Set the display of the elements in a second loop to avoid constant reflow
      -	for ( index = 0; index < length; index++ ) {
      -		if ( values[ index ] != null ) {
      -			elements[ index ].style.display = values[ index ];
      -		}
      -	}
      -
      -	return elements;
      -}
      -
      -jQuery.fn.extend( {
      -	show: function() {
      -		return showHide( this, true );
      -	},
      -	hide: function() {
      -		return showHide( this );
      -	},
      -	toggle: function( state ) {
      -		if ( typeof state === "boolean" ) {
      -			return state ? this.show() : this.hide();
      -		}
      -
      -		return this.each( function() {
      -			if ( isHiddenWithinTree( this ) ) {
      -				jQuery( this ).show();
      -			} else {
      -				jQuery( this ).hide();
      -			}
      -		} );
      -	}
      -} );
      -
      -return showHide;
      -} );
      diff --git a/bower_components/jquery/src/css/support.js b/bower_components/jquery/src/css/support.js
      deleted file mode 100644
      index 883d0e53ef..0000000000
      --- a/bower_components/jquery/src/css/support.js
      +++ /dev/null
      @@ -1,89 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/document",
      -	"../var/documentElement",
      -	"../var/support"
      -], function( jQuery, document, documentElement, support ) {
      -
      -"use strict";
      -
      -( function() {
      -
      -	// Executing both pixelPosition & boxSizingReliable tests require only one layout
      -	// so they're executed at the same time to save the second computation.
      -	function computeStyleTests() {
      -
      -		// This is a singleton, we need to execute it only once
      -		if ( !div ) {
      -			return;
      -		}
      -
      -		div.style.cssText =
      -			"box-sizing:border-box;" +
      -			"position:relative;display:block;" +
      -			"margin:auto;border:1px;padding:1px;" +
      -			"top:1%;width:50%";
      -		div.innerHTML = "";
      -		documentElement.appendChild( container );
      -
      -		var divStyle = window.getComputedStyle( div );
      -		pixelPositionVal = divStyle.top !== "1%";
      -
      -		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
      -		reliableMarginLeftVal = divStyle.marginLeft === "2px";
      -		boxSizingReliableVal = divStyle.width === "4px";
      -
      -		// Support: Android 4.0 - 4.3 only
      -		// Some styles come back with percentage values, even though they shouldn't
      -		div.style.marginRight = "50%";
      -		pixelMarginRightVal = divStyle.marginRight === "4px";
      -
      -		documentElement.removeChild( container );
      -
      -		// Nullify the div so it wouldn't be stored in the memory and
      -		// it will also be a sign that checks already performed
      -		div = null;
      -	}
      -
      -	var pixelPositionVal, boxSizingReliableVal, pixelMarginRightVal, reliableMarginLeftVal,
      -		container = document.createElement( "div" ),
      -		div = document.createElement( "div" );
      -
      -	// Finish early in limited (non-browser) environments
      -	if ( !div.style ) {
      -		return;
      -	}
      -
      -	// Support: IE <=9 - 11 only
      -	// Style of cloned element affects source element cloned (#8908)
      -	div.style.backgroundClip = "content-box";
      -	div.cloneNode( true ).style.backgroundClip = "";
      -	support.clearCloneStyle = div.style.backgroundClip === "content-box";
      -
      -	container.style.cssText = "border:0;width:8px;height:0;top:0;left:-9999px;" +
      -		"padding:0;margin-top:1px;position:absolute";
      -	container.appendChild( div );
      -
      -	jQuery.extend( support, {
      -		pixelPosition: function() {
      -			computeStyleTests();
      -			return pixelPositionVal;
      -		},
      -		boxSizingReliable: function() {
      -			computeStyleTests();
      -			return boxSizingReliableVal;
      -		},
      -		pixelMarginRight: function() {
      -			computeStyleTests();
      -			return pixelMarginRightVal;
      -		},
      -		reliableMarginLeft: function() {
      -			computeStyleTests();
      -			return reliableMarginLeftVal;
      -		}
      -	} );
      -} )();
      -
      -return support;
      -
      -} );
      diff --git a/bower_components/jquery/src/css/var/cssExpand.js b/bower_components/jquery/src/css/var/cssExpand.js
      deleted file mode 100644
      index dd2007c3fb..0000000000
      --- a/bower_components/jquery/src/css/var/cssExpand.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return [ "Top", "Right", "Bottom", "Left" ];
      -} );
      diff --git a/bower_components/jquery/src/css/var/getStyles.js b/bower_components/jquery/src/css/var/getStyles.js
      deleted file mode 100644
      index 0b893acf0b..0000000000
      --- a/bower_components/jquery/src/css/var/getStyles.js
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return function( elem ) {
      -
      -		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
      -		// IE throws on elements created in popups
      -		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
      -		var view = elem.ownerDocument.defaultView;
      -
      -		if ( !view || !view.opener ) {
      -			view = window;
      -		}
      -
      -		return view.getComputedStyle( elem );
      -	};
      -} );
      diff --git a/bower_components/jquery/src/css/var/isHiddenWithinTree.js b/bower_components/jquery/src/css/var/isHiddenWithinTree.js
      deleted file mode 100644
      index 3cfb93e160..0000000000
      --- a/bower_components/jquery/src/css/var/isHiddenWithinTree.js
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -define( [
      -	"../../core",
      -	"../../selector"
      -
      -	// css is assumed
      -], function( jQuery ) {
      -	"use strict";
      -
      -	// isHiddenWithinTree reports if an element has a non-"none" display style (inline and/or
      -	// through the CSS cascade), which is useful in deciding whether or not to make it visible.
      -	// It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:
      -	// * A hidden ancestor does not force an element to be classified as hidden.
      -	// * Being disconnected from the document does not force an element to be classified as hidden.
      -	// These differences improve the behavior of .toggle() et al. when applied to elements that are
      -	// detached or contained within hidden ancestors (gh-2404, gh-2863).
      -	return function( elem, el ) {
      -
      -		// isHiddenWithinTree might be called from jQuery#filter function;
      -		// in that case, element will be second argument
      -		elem = el || elem;
      -
      -		// Inline style trumps all
      -		return elem.style.display === "none" ||
      -			elem.style.display === "" &&
      -
      -			// Otherwise, check computed style
      -			// Support: Firefox <=43 - 45
      -			// Disconnected elements can have computed display: none, so first confirm that elem is
      -			// in the document.
      -			jQuery.contains( elem.ownerDocument, elem ) &&
      -
      -			jQuery.css( elem, "display" ) === "none";
      -	};
      -} );
      diff --git a/bower_components/jquery/src/css/var/rmargin.js b/bower_components/jquery/src/css/var/rmargin.js
      deleted file mode 100644
      index 0fbfbd8530..0000000000
      --- a/bower_components/jquery/src/css/var/rmargin.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return ( /^margin/ );
      -} );
      diff --git a/bower_components/jquery/src/css/var/rnumnonpx.js b/bower_components/jquery/src/css/var/rnumnonpx.js
      deleted file mode 100644
      index 056cda7add..0000000000
      --- a/bower_components/jquery/src/css/var/rnumnonpx.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"../../var/pnum"
      -], function( pnum ) {
      -	"use strict";
      -
      -	return new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
      -} );
      diff --git a/bower_components/jquery/src/css/var/swap.js b/bower_components/jquery/src/css/var/swap.js
      deleted file mode 100644
      index 1a9556bad8..0000000000
      --- a/bower_components/jquery/src/css/var/swap.js
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -define( function() {
      -
      -"use strict";
      -
      -// A method for quickly swapping in/out CSS properties to get correct calculations.
      -return function( elem, options, callback, args ) {
      -	var ret, name,
      -		old = {};
      -
      -	// Remember the old values, and insert the new ones
      -	for ( name in options ) {
      -		old[ name ] = elem.style[ name ];
      -		elem.style[ name ] = options[ name ];
      -	}
      -
      -	ret = callback.apply( elem, args || [] );
      -
      -	// Revert the old values
      -	for ( name in options ) {
      -		elem.style[ name ] = old[ name ];
      -	}
      -
      -	return ret;
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/data.js b/bower_components/jquery/src/data.js
      deleted file mode 100644
      index 087ce4eb72..0000000000
      --- a/bower_components/jquery/src/data.js
      +++ /dev/null
      @@ -1,179 +0,0 @@
      -define( [
      -	"./core",
      -	"./core/access",
      -	"./data/var/dataPriv",
      -	"./data/var/dataUser"
      -], function( jQuery, access, dataPriv, dataUser ) {
      -
      -"use strict";
      -
      -//	Implementation Summary
      -//
      -//	1. Enforce API surface and semantic compatibility with 1.9.x branch
      -//	2. Improve the module's maintainability by reducing the storage
      -//		paths to a single mechanism.
      -//	3. Use the same single mechanism to support "private" and "user" data.
      -//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
      -//	5. Avoid exposing implementation details on user objects (eg. expando properties)
      -//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
      -
      -var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
      -	rmultiDash = /[A-Z]/g;
      -
      -function getData( data ) {
      -	if ( data === "true" ) {
      -		return true;
      -	}
      -
      -	if ( data === "false" ) {
      -		return false;
      -	}
      -
      -	if ( data === "null" ) {
      -		return null;
      -	}
      -
      -	// Only convert to a number if it doesn't change the string
      -	if ( data === +data + "" ) {
      -		return +data;
      -	}
      -
      -	if ( rbrace.test( data ) ) {
      -		return JSON.parse( data );
      -	}
      -
      -	return data;
      -}
      -
      -function dataAttr( elem, key, data ) {
      -	var name;
      -
      -	// If nothing was found internally, try to fetch any
      -	// data from the HTML5 data-* attribute
      -	if ( data === undefined && elem.nodeType === 1 ) {
      -		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
      -		data = elem.getAttribute( name );
      -
      -		if ( typeof data === "string" ) {
      -			try {
      -				data = getData( data );
      -			} catch ( e ) {}
      -
      -			// Make sure we set the data so it isn't changed later
      -			dataUser.set( elem, key, data );
      -		} else {
      -			data = undefined;
      -		}
      -	}
      -	return data;
      -}
      -
      -jQuery.extend( {
      -	hasData: function( elem ) {
      -		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
      -	},
      -
      -	data: function( elem, name, data ) {
      -		return dataUser.access( elem, name, data );
      -	},
      -
      -	removeData: function( elem, name ) {
      -		dataUser.remove( elem, name );
      -	},
      -
      -	// TODO: Now that all calls to _data and _removeData have been replaced
      -	// with direct calls to dataPriv methods, these can be deprecated.
      -	_data: function( elem, name, data ) {
      -		return dataPriv.access( elem, name, data );
      -	},
      -
      -	_removeData: function( elem, name ) {
      -		dataPriv.remove( elem, name );
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	data: function( key, value ) {
      -		var i, name, data,
      -			elem = this[ 0 ],
      -			attrs = elem && elem.attributes;
      -
      -		// Gets all values
      -		if ( key === undefined ) {
      -			if ( this.length ) {
      -				data = dataUser.get( elem );
      -
      -				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
      -					i = attrs.length;
      -					while ( i-- ) {
      -
      -						// Support: IE 11 only
      -						// The attrs elements can be null (#14894)
      -						if ( attrs[ i ] ) {
      -							name = attrs[ i ].name;
      -							if ( name.indexOf( "data-" ) === 0 ) {
      -								name = jQuery.camelCase( name.slice( 5 ) );
      -								dataAttr( elem, name, data[ name ] );
      -							}
      -						}
      -					}
      -					dataPriv.set( elem, "hasDataAttrs", true );
      -				}
      -			}
      -
      -			return data;
      -		}
      -
      -		// Sets multiple values
      -		if ( typeof key === "object" ) {
      -			return this.each( function() {
      -				dataUser.set( this, key );
      -			} );
      -		}
      -
      -		return access( this, function( value ) {
      -			var data;
      -
      -			// The calling jQuery object (element matches) is not empty
      -			// (and therefore has an element appears at this[ 0 ]) and the
      -			// `value` parameter was not undefined. An empty jQuery object
      -			// will result in `undefined` for elem = this[ 0 ] which will
      -			// throw an exception if an attempt to read a data cache is made.
      -			if ( elem && value === undefined ) {
      -
      -				// Attempt to get data from the cache
      -				// The key will always be camelCased in Data
      -				data = dataUser.get( elem, key );
      -				if ( data !== undefined ) {
      -					return data;
      -				}
      -
      -				// Attempt to "discover" the data in
      -				// HTML5 custom data-* attrs
      -				data = dataAttr( elem, key );
      -				if ( data !== undefined ) {
      -					return data;
      -				}
      -
      -				// We tried really hard, but the data doesn't exist.
      -				return;
      -			}
      -
      -			// Set the data...
      -			this.each( function() {
      -
      -				// We always store the camelCased key
      -				dataUser.set( this, key, value );
      -			} );
      -		}, null, value, arguments.length > 1, null, true );
      -	},
      -
      -	removeData: function( key ) {
      -		return this.each( function() {
      -			dataUser.remove( this, key );
      -		} );
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/data/Data.js b/bower_components/jquery/src/data/Data.js
      deleted file mode 100644
      index 43ae01623b..0000000000
      --- a/bower_components/jquery/src/data/Data.js
      +++ /dev/null
      @@ -1,161 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/rnothtmlwhite",
      -	"./var/acceptData"
      -], function( jQuery, rnothtmlwhite, acceptData ) {
      -
      -"use strict";
      -
      -function Data() {
      -	this.expando = jQuery.expando + Data.uid++;
      -}
      -
      -Data.uid = 1;
      -
      -Data.prototype = {
      -
      -	cache: function( owner ) {
      -
      -		// Check if the owner object already has a cache
      -		var value = owner[ this.expando ];
      -
      -		// If not, create one
      -		if ( !value ) {
      -			value = {};
      -
      -			// We can accept data for non-element nodes in modern browsers,
      -			// but we should not, see #8335.
      -			// Always return an empty object.
      -			if ( acceptData( owner ) ) {
      -
      -				// If it is a node unlikely to be stringify-ed or looped over
      -				// use plain assignment
      -				if ( owner.nodeType ) {
      -					owner[ this.expando ] = value;
      -
      -				// Otherwise secure it in a non-enumerable property
      -				// configurable must be true to allow the property to be
      -				// deleted when data is removed
      -				} else {
      -					Object.defineProperty( owner, this.expando, {
      -						value: value,
      -						configurable: true
      -					} );
      -				}
      -			}
      -		}
      -
      -		return value;
      -	},
      -	set: function( owner, data, value ) {
      -		var prop,
      -			cache = this.cache( owner );
      -
      -		// Handle: [ owner, key, value ] args
      -		// Always use camelCase key (gh-2257)
      -		if ( typeof data === "string" ) {
      -			cache[ jQuery.camelCase( data ) ] = value;
      -
      -		// Handle: [ owner, { properties } ] args
      -		} else {
      -
      -			// Copy the properties one-by-one to the cache object
      -			for ( prop in data ) {
      -				cache[ jQuery.camelCase( prop ) ] = data[ prop ];
      -			}
      -		}
      -		return cache;
      -	},
      -	get: function( owner, key ) {
      -		return key === undefined ?
      -			this.cache( owner ) :
      -
      -			// Always use camelCase key (gh-2257)
      -			owner[ this.expando ] && owner[ this.expando ][ jQuery.camelCase( key ) ];
      -	},
      -	access: function( owner, key, value ) {
      -
      -		// In cases where either:
      -		//
      -		//   1. No key was specified
      -		//   2. A string key was specified, but no value provided
      -		//
      -		// Take the "read" path and allow the get method to determine
      -		// which value to return, respectively either:
      -		//
      -		//   1. The entire cache object
      -		//   2. The data stored at the key
      -		//
      -		if ( key === undefined ||
      -				( ( key && typeof key === "string" ) && value === undefined ) ) {
      -
      -			return this.get( owner, key );
      -		}
      -
      -		// When the key is not a string, or both a key and value
      -		// are specified, set or extend (existing objects) with either:
      -		//
      -		//   1. An object of properties
      -		//   2. A key and value
      -		//
      -		this.set( owner, key, value );
      -
      -		// Since the "set" path can have two possible entry points
      -		// return the expected data based on which path was taken[*]
      -		return value !== undefined ? value : key;
      -	},
      -	remove: function( owner, key ) {
      -		var i,
      -			cache = owner[ this.expando ];
      -
      -		if ( cache === undefined ) {
      -			return;
      -		}
      -
      -		if ( key !== undefined ) {
      -
      -			// Support array or space separated string of keys
      -			if ( jQuery.isArray( key ) ) {
      -
      -				// If key is an array of keys...
      -				// We always set camelCase keys, so remove that.
      -				key = key.map( jQuery.camelCase );
      -			} else {
      -				key = jQuery.camelCase( key );
      -
      -				// If a key with the spaces exists, use it.
      -				// Otherwise, create an array by matching non-whitespace
      -				key = key in cache ?
      -					[ key ] :
      -					( key.match( rnothtmlwhite ) || [] );
      -			}
      -
      -			i = key.length;
      -
      -			while ( i-- ) {
      -				delete cache[ key[ i ] ];
      -			}
      -		}
      -
      -		// Remove the expando if there's no more data
      -		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
      -
      -			// Support: Chrome <=35 - 45
      -			// Webkit & Blink performance suffers when deleting properties
      -			// from DOM nodes, so set to undefined instead
      -			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
      -			if ( owner.nodeType ) {
      -				owner[ this.expando ] = undefined;
      -			} else {
      -				delete owner[ this.expando ];
      -			}
      -		}
      -	},
      -	hasData: function( owner ) {
      -		var cache = owner[ this.expando ];
      -		return cache !== undefined && !jQuery.isEmptyObject( cache );
      -	}
      -};
      -
      -return Data;
      -} );
      diff --git a/bower_components/jquery/src/data/var/acceptData.js b/bower_components/jquery/src/data/var/acceptData.js
      deleted file mode 100644
      index e00f7538b3..0000000000
      --- a/bower_components/jquery/src/data/var/acceptData.js
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -define( function() {
      -
      -"use strict";
      -
      -/**
      - * Determines whether an object can have data
      - */
      -return function( owner ) {
      -
      -	// Accepts only:
      -	//  - Node
      -	//    - Node.ELEMENT_NODE
      -	//    - Node.DOCUMENT_NODE
      -	//  - Object
      -	//    - Any
      -	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/data/var/dataPriv.js b/bower_components/jquery/src/data/var/dataPriv.js
      deleted file mode 100644
      index 72713c88cc..0000000000
      --- a/bower_components/jquery/src/data/var/dataPriv.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"../Data"
      -], function( Data ) {
      -	"use strict";
      -
      -	return new Data();
      -} );
      diff --git a/bower_components/jquery/src/data/var/dataUser.js b/bower_components/jquery/src/data/var/dataUser.js
      deleted file mode 100644
      index 72713c88cc..0000000000
      --- a/bower_components/jquery/src/data/var/dataUser.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"../Data"
      -], function( Data ) {
      -	"use strict";
      -
      -	return new Data();
      -} );
      diff --git a/bower_components/jquery/src/deferred.js b/bower_components/jquery/src/deferred.js
      deleted file mode 100644
      index 8139515fef..0000000000
      --- a/bower_components/jquery/src/deferred.js
      +++ /dev/null
      @@ -1,389 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/slice",
      -	"./callbacks"
      -], function( jQuery, slice ) {
      -
      -"use strict";
      -
      -function Identity( v ) {
      -	return v;
      -}
      -function Thrower( ex ) {
      -	throw ex;
      -}
      -
      -function adoptValue( value, resolve, reject ) {
      -	var method;
      -
      -	try {
      -
      -		// Check for promise aspect first to privilege synchronous behavior
      -		if ( value && jQuery.isFunction( ( method = value.promise ) ) ) {
      -			method.call( value ).done( resolve ).fail( reject );
      -
      -		// Other thenables
      -		} else if ( value && jQuery.isFunction( ( method = value.then ) ) ) {
      -			method.call( value, resolve, reject );
      -
      -		// Other non-thenables
      -		} else {
      -
      -			// Support: Android 4.0 only
      -			// Strict mode functions invoked without .call/.apply get global-object context
      -			resolve.call( undefined, value );
      -		}
      -
      -	// For Promises/A+, convert exceptions into rejections
      -	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
      -	// Deferred#then to conditionally suppress rejection.
      -	} catch ( value ) {
      -
      -		// Support: Android 4.0 only
      -		// Strict mode functions invoked without .call/.apply get global-object context
      -		reject.call( undefined, value );
      -	}
      -}
      -
      -jQuery.extend( {
      -
      -	Deferred: function( func ) {
      -		var tuples = [
      -
      -				// action, add listener, callbacks,
      -				// ... .then handlers, argument index, [final state]
      -				[ "notify", "progress", jQuery.Callbacks( "memory" ),
      -					jQuery.Callbacks( "memory" ), 2 ],
      -				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
      -					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
      -				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
      -					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
      -			],
      -			state = "pending",
      -			promise = {
      -				state: function() {
      -					return state;
      -				},
      -				always: function() {
      -					deferred.done( arguments ).fail( arguments );
      -					return this;
      -				},
      -				"catch": function( fn ) {
      -					return promise.then( null, fn );
      -				},
      -
      -				// Keep pipe for back-compat
      -				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
      -					var fns = arguments;
      -
      -					return jQuery.Deferred( function( newDefer ) {
      -						jQuery.each( tuples, function( i, tuple ) {
      -
      -							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
      -							var fn = jQuery.isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
      -
      -							// deferred.progress(function() { bind to newDefer or newDefer.notify })
      -							// deferred.done(function() { bind to newDefer or newDefer.resolve })
      -							// deferred.fail(function() { bind to newDefer or newDefer.reject })
      -							deferred[ tuple[ 1 ] ]( function() {
      -								var returned = fn && fn.apply( this, arguments );
      -								if ( returned && jQuery.isFunction( returned.promise ) ) {
      -									returned.promise()
      -										.progress( newDefer.notify )
      -										.done( newDefer.resolve )
      -										.fail( newDefer.reject );
      -								} else {
      -									newDefer[ tuple[ 0 ] + "With" ](
      -										this,
      -										fn ? [ returned ] : arguments
      -									);
      -								}
      -							} );
      -						} );
      -						fns = null;
      -					} ).promise();
      -				},
      -				then: function( onFulfilled, onRejected, onProgress ) {
      -					var maxDepth = 0;
      -					function resolve( depth, deferred, handler, special ) {
      -						return function() {
      -							var that = this,
      -								args = arguments,
      -								mightThrow = function() {
      -									var returned, then;
      -
      -									// Support: Promises/A+ section 2.3.3.3.3
      -									// https://promisesaplus.com/#point-59
      -									// Ignore double-resolution attempts
      -									if ( depth < maxDepth ) {
      -										return;
      -									}
      -
      -									returned = handler.apply( that, args );
      -
      -									// Support: Promises/A+ section 2.3.1
      -									// https://promisesaplus.com/#point-48
      -									if ( returned === deferred.promise() ) {
      -										throw new TypeError( "Thenable self-resolution" );
      -									}
      -
      -									// Support: Promises/A+ sections 2.3.3.1, 3.5
      -									// https://promisesaplus.com/#point-54
      -									// https://promisesaplus.com/#point-75
      -									// Retrieve `then` only once
      -									then = returned &&
      -
      -										// Support: Promises/A+ section 2.3.4
      -										// https://promisesaplus.com/#point-64
      -										// Only check objects and functions for thenability
      -										( typeof returned === "object" ||
      -											typeof returned === "function" ) &&
      -										returned.then;
      -
      -									// Handle a returned thenable
      -									if ( jQuery.isFunction( then ) ) {
      -
      -										// Special processors (notify) just wait for resolution
      -										if ( special ) {
      -											then.call(
      -												returned,
      -												resolve( maxDepth, deferred, Identity, special ),
      -												resolve( maxDepth, deferred, Thrower, special )
      -											);
      -
      -										// Normal processors (resolve) also hook into progress
      -										} else {
      -
      -											// ...and disregard older resolution values
      -											maxDepth++;
      -
      -											then.call(
      -												returned,
      -												resolve( maxDepth, deferred, Identity, special ),
      -												resolve( maxDepth, deferred, Thrower, special ),
      -												resolve( maxDepth, deferred, Identity,
      -													deferred.notifyWith )
      -											);
      -										}
      -
      -									// Handle all other returned values
      -									} else {
      -
      -										// Only substitute handlers pass on context
      -										// and multiple values (non-spec behavior)
      -										if ( handler !== Identity ) {
      -											that = undefined;
      -											args = [ returned ];
      -										}
      -
      -										// Process the value(s)
      -										// Default process is resolve
      -										( special || deferred.resolveWith )( that, args );
      -									}
      -								},
      -
      -								// Only normal processors (resolve) catch and reject exceptions
      -								process = special ?
      -									mightThrow :
      -									function() {
      -										try {
      -											mightThrow();
      -										} catch ( e ) {
      -
      -											if ( jQuery.Deferred.exceptionHook ) {
      -												jQuery.Deferred.exceptionHook( e,
      -													process.stackTrace );
      -											}
      -
      -											// Support: Promises/A+ section 2.3.3.3.4.1
      -											// https://promisesaplus.com/#point-61
      -											// Ignore post-resolution exceptions
      -											if ( depth + 1 >= maxDepth ) {
      -
      -												// Only substitute handlers pass on context
      -												// and multiple values (non-spec behavior)
      -												if ( handler !== Thrower ) {
      -													that = undefined;
      -													args = [ e ];
      -												}
      -
      -												deferred.rejectWith( that, args );
      -											}
      -										}
      -									};
      -
      -							// Support: Promises/A+ section 2.3.3.3.1
      -							// https://promisesaplus.com/#point-57
      -							// Re-resolve promises immediately to dodge false rejection from
      -							// subsequent errors
      -							if ( depth ) {
      -								process();
      -							} else {
      -
      -								// Call an optional hook to record the stack, in case of exception
      -								// since it's otherwise lost when execution goes async
      -								if ( jQuery.Deferred.getStackHook ) {
      -									process.stackTrace = jQuery.Deferred.getStackHook();
      -								}
      -								window.setTimeout( process );
      -							}
      -						};
      -					}
      -
      -					return jQuery.Deferred( function( newDefer ) {
      -
      -						// progress_handlers.add( ... )
      -						tuples[ 0 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onProgress ) ?
      -									onProgress :
      -									Identity,
      -								newDefer.notifyWith
      -							)
      -						);
      -
      -						// fulfilled_handlers.add( ... )
      -						tuples[ 1 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onFulfilled ) ?
      -									onFulfilled :
      -									Identity
      -							)
      -						);
      -
      -						// rejected_handlers.add( ... )
      -						tuples[ 2 ][ 3 ].add(
      -							resolve(
      -								0,
      -								newDefer,
      -								jQuery.isFunction( onRejected ) ?
      -									onRejected :
      -									Thrower
      -							)
      -						);
      -					} ).promise();
      -				},
      -
      -				// Get a promise for this deferred
      -				// If obj is provided, the promise aspect is added to the object
      -				promise: function( obj ) {
      -					return obj != null ? jQuery.extend( obj, promise ) : promise;
      -				}
      -			},
      -			deferred = {};
      -
      -		// Add list-specific methods
      -		jQuery.each( tuples, function( i, tuple ) {
      -			var list = tuple[ 2 ],
      -				stateString = tuple[ 5 ];
      -
      -			// promise.progress = list.add
      -			// promise.done = list.add
      -			// promise.fail = list.add
      -			promise[ tuple[ 1 ] ] = list.add;
      -
      -			// Handle state
      -			if ( stateString ) {
      -				list.add(
      -					function() {
      -
      -						// state = "resolved" (i.e., fulfilled)
      -						// state = "rejected"
      -						state = stateString;
      -					},
      -
      -					// rejected_callbacks.disable
      -					// fulfilled_callbacks.disable
      -					tuples[ 3 - i ][ 2 ].disable,
      -
      -					// progress_callbacks.lock
      -					tuples[ 0 ][ 2 ].lock
      -				);
      -			}
      -
      -			// progress_handlers.fire
      -			// fulfilled_handlers.fire
      -			// rejected_handlers.fire
      -			list.add( tuple[ 3 ].fire );
      -
      -			// deferred.notify = function() { deferred.notifyWith(...) }
      -			// deferred.resolve = function() { deferred.resolveWith(...) }
      -			// deferred.reject = function() { deferred.rejectWith(...) }
      -			deferred[ tuple[ 0 ] ] = function() {
      -				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
      -				return this;
      -			};
      -
      -			// deferred.notifyWith = list.fireWith
      -			// deferred.resolveWith = list.fireWith
      -			// deferred.rejectWith = list.fireWith
      -			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
      -		} );
      -
      -		// Make the deferred a promise
      -		promise.promise( deferred );
      -
      -		// Call given func if any
      -		if ( func ) {
      -			func.call( deferred, deferred );
      -		}
      -
      -		// All done!
      -		return deferred;
      -	},
      -
      -	// Deferred helper
      -	when: function( singleValue ) {
      -		var
      -
      -			// count of uncompleted subordinates
      -			remaining = arguments.length,
      -
      -			// count of unprocessed arguments
      -			i = remaining,
      -
      -			// subordinate fulfillment data
      -			resolveContexts = Array( i ),
      -			resolveValues = slice.call( arguments ),
      -
      -			// the master Deferred
      -			master = jQuery.Deferred(),
      -
      -			// subordinate callback factory
      -			updateFunc = function( i ) {
      -				return function( value ) {
      -					resolveContexts[ i ] = this;
      -					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
      -					if ( !( --remaining ) ) {
      -						master.resolveWith( resolveContexts, resolveValues );
      -					}
      -				};
      -			};
      -
      -		// Single- and empty arguments are adopted like Promise.resolve
      -		if ( remaining <= 1 ) {
      -			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject );
      -
      -			// Use .then() to unwrap secondary thenables (cf. gh-3000)
      -			if ( master.state() === "pending" ||
      -				jQuery.isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
      -
      -				return master.then();
      -			}
      -		}
      -
      -		// Multiple arguments are aggregated like Promise.all array elements
      -		while ( i-- ) {
      -			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
      -		}
      -
      -		return master.promise();
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/deferred/exceptionHook.js b/bower_components/jquery/src/deferred/exceptionHook.js
      deleted file mode 100644
      index 6dbdc85208..0000000000
      --- a/bower_components/jquery/src/deferred/exceptionHook.js
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -define( [
      -	"../core",
      -	"../deferred"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -// These usually indicate a programmer mistake during development,
      -// warn about them ASAP rather than swallowing them by default.
      -var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
      -
      -jQuery.Deferred.exceptionHook = function( error, stack ) {
      -
      -	// Support: IE 8 - 9 only
      -	// Console exists when dev tools are open, which can happen at any time
      -	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
      -		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
      -	}
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/deprecated.js b/bower_components/jquery/src/deprecated.js
      deleted file mode 100644
      index 9fcc6b7daa..0000000000
      --- a/bower_components/jquery/src/deprecated.js
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -define( [
      -	"./core"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -jQuery.fn.extend( {
      -
      -	bind: function( types, data, fn ) {
      -		return this.on( types, null, data, fn );
      -	},
      -	unbind: function( types, fn ) {
      -		return this.off( types, null, fn );
      -	},
      -
      -	delegate: function( selector, types, data, fn ) {
      -		return this.on( types, selector, data, fn );
      -	},
      -	undelegate: function( selector, types, fn ) {
      -
      -		// ( namespace ) or ( selector, types [, fn] )
      -		return arguments.length === 1 ?
      -			this.off( selector, "**" ) :
      -			this.off( types, selector || "**", fn );
      -	}
      -} );
      -
      -jQuery.parseJSON = JSON.parse;
      -
      -} );
      diff --git a/bower_components/jquery/src/dimensions.js b/bower_components/jquery/src/dimensions.js
      deleted file mode 100644
      index 46e7b1c460..0000000000
      --- a/bower_components/jquery/src/dimensions.js
      +++ /dev/null
      @@ -1,56 +0,0 @@
      -define( [
      -	"./core",
      -	"./core/access",
      -	"./css"
      -], function( jQuery, access ) {
      -
      -"use strict";
      -
      -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
      -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
      -	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
      -		function( defaultExtra, funcName ) {
      -
      -		// Margin is only for outerHeight, outerWidth
      -		jQuery.fn[ funcName ] = function( margin, value ) {
      -			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
      -				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
      -
      -			return access( this, function( elem, type, value ) {
      -				var doc;
      -
      -				if ( jQuery.isWindow( elem ) ) {
      -
      -					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
      -					return funcName.indexOf( "outer" ) === 0 ?
      -						elem[ "inner" + name ] :
      -						elem.document.documentElement[ "client" + name ];
      -				}
      -
      -				// Get document width or height
      -				if ( elem.nodeType === 9 ) {
      -					doc = elem.documentElement;
      -
      -					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
      -					// whichever is greatest
      -					return Math.max(
      -						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
      -						elem.body[ "offset" + name ], doc[ "offset" + name ],
      -						doc[ "client" + name ]
      -					);
      -				}
      -
      -				return value === undefined ?
      -
      -					// Get width or height on the element, requesting but not forcing parseFloat
      -					jQuery.css( elem, type, extra ) :
      -
      -					// Set width or height on the element
      -					jQuery.style( elem, type, value, extra );
      -			}, type, chainable ? margin : undefined, chainable );
      -		};
      -	} );
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/effects.js b/bower_components/jquery/src/effects.js
      deleted file mode 100644
      index 68af96c61a..0000000000
      --- a/bower_components/jquery/src/effects.js
      +++ /dev/null
      @@ -1,693 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/document",
      -	"./var/rcssNum",
      -	"./var/rnothtmlwhite",
      -	"./css/var/cssExpand",
      -	"./css/var/isHiddenWithinTree",
      -	"./css/var/swap",
      -	"./css/adjustCSS",
      -	"./data/var/dataPriv",
      -	"./css/showHide",
      -
      -	"./core/init",
      -	"./queue",
      -	"./deferred",
      -	"./traversing",
      -	"./manipulation",
      -	"./css",
      -	"./effects/Tween"
      -], function( jQuery, document, rcssNum, rnothtmlwhite, cssExpand, isHiddenWithinTree, swap,
      -	adjustCSS, dataPriv, showHide ) {
      -
      -"use strict";
      -
      -var
      -	fxNow, timerId,
      -	rfxtypes = /^(?:toggle|show|hide)$/,
      -	rrun = /queueHooks$/;
      -
      -function raf() {
      -	if ( timerId ) {
      -		window.requestAnimationFrame( raf );
      -		jQuery.fx.tick();
      -	}
      -}
      -
      -// Animations created synchronously will run synchronously
      -function createFxNow() {
      -	window.setTimeout( function() {
      -		fxNow = undefined;
      -	} );
      -	return ( fxNow = jQuery.now() );
      -}
      -
      -// Generate parameters to create a standard animation
      -function genFx( type, includeWidth ) {
      -	var which,
      -		i = 0,
      -		attrs = { height: type };
      -
      -	// If we include width, step value is 1 to do all cssExpand values,
      -	// otherwise step value is 2 to skip over Left and Right
      -	includeWidth = includeWidth ? 1 : 0;
      -	for ( ; i < 4; i += 2 - includeWidth ) {
      -		which = cssExpand[ i ];
      -		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
      -	}
      -
      -	if ( includeWidth ) {
      -		attrs.opacity = attrs.width = type;
      -	}
      -
      -	return attrs;
      -}
      -
      -function createTween( value, prop, animation ) {
      -	var tween,
      -		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
      -		index = 0,
      -		length = collection.length;
      -	for ( ; index < length; index++ ) {
      -		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
      -
      -			// We're done with this property
      -			return tween;
      -		}
      -	}
      -}
      -
      -function defaultPrefilter( elem, props, opts ) {
      -	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
      -		isBox = "width" in props || "height" in props,
      -		anim = this,
      -		orig = {},
      -		style = elem.style,
      -		hidden = elem.nodeType && isHiddenWithinTree( elem ),
      -		dataShow = dataPriv.get( elem, "fxshow" );
      -
      -	// Queue-skipping animations hijack the fx hooks
      -	if ( !opts.queue ) {
      -		hooks = jQuery._queueHooks( elem, "fx" );
      -		if ( hooks.unqueued == null ) {
      -			hooks.unqueued = 0;
      -			oldfire = hooks.empty.fire;
      -			hooks.empty.fire = function() {
      -				if ( !hooks.unqueued ) {
      -					oldfire();
      -				}
      -			};
      -		}
      -		hooks.unqueued++;
      -
      -		anim.always( function() {
      -
      -			// Ensure the complete handler is called before this completes
      -			anim.always( function() {
      -				hooks.unqueued--;
      -				if ( !jQuery.queue( elem, "fx" ).length ) {
      -					hooks.empty.fire();
      -				}
      -			} );
      -		} );
      -	}
      -
      -	// Detect show/hide animations
      -	for ( prop in props ) {
      -		value = props[ prop ];
      -		if ( rfxtypes.test( value ) ) {
      -			delete props[ prop ];
      -			toggle = toggle || value === "toggle";
      -			if ( value === ( hidden ? "hide" : "show" ) ) {
      -
      -				// Pretend to be hidden if this is a "show" and
      -				// there is still data from a stopped show/hide
      -				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
      -					hidden = true;
      -
      -				// Ignore all other no-op show/hide data
      -				} else {
      -					continue;
      -				}
      -			}
      -			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
      -		}
      -	}
      -
      -	// Bail out if this is a no-op like .hide().hide()
      -	propTween = !jQuery.isEmptyObject( props );
      -	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
      -		return;
      -	}
      -
      -	// Restrict "overflow" and "display" styles during box animations
      -	if ( isBox && elem.nodeType === 1 ) {
      -
      -		// Support: IE <=9 - 11, Edge 12 - 13
      -		// Record all 3 overflow attributes because IE does not infer the shorthand
      -		// from identically-valued overflowX and overflowY
      -		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
      -
      -		// Identify a display type, preferring old show/hide data over the CSS cascade
      -		restoreDisplay = dataShow && dataShow.display;
      -		if ( restoreDisplay == null ) {
      -			restoreDisplay = dataPriv.get( elem, "display" );
      -		}
      -		display = jQuery.css( elem, "display" );
      -		if ( display === "none" ) {
      -			if ( restoreDisplay ) {
      -				display = restoreDisplay;
      -			} else {
      -
      -				// Get nonempty value(s) by temporarily forcing visibility
      -				showHide( [ elem ], true );
      -				restoreDisplay = elem.style.display || restoreDisplay;
      -				display = jQuery.css( elem, "display" );
      -				showHide( [ elem ] );
      -			}
      -		}
      -
      -		// Animate inline elements as inline-block
      -		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
      -			if ( jQuery.css( elem, "float" ) === "none" ) {
      -
      -				// Restore the original display value at the end of pure show/hide animations
      -				if ( !propTween ) {
      -					anim.done( function() {
      -						style.display = restoreDisplay;
      -					} );
      -					if ( restoreDisplay == null ) {
      -						display = style.display;
      -						restoreDisplay = display === "none" ? "" : display;
      -					}
      -				}
      -				style.display = "inline-block";
      -			}
      -		}
      -	}
      -
      -	if ( opts.overflow ) {
      -		style.overflow = "hidden";
      -		anim.always( function() {
      -			style.overflow = opts.overflow[ 0 ];
      -			style.overflowX = opts.overflow[ 1 ];
      -			style.overflowY = opts.overflow[ 2 ];
      -		} );
      -	}
      -
      -	// Implement show/hide animations
      -	propTween = false;
      -	for ( prop in orig ) {
      -
      -		// General show/hide setup for this element animation
      -		if ( !propTween ) {
      -			if ( dataShow ) {
      -				if ( "hidden" in dataShow ) {
      -					hidden = dataShow.hidden;
      -				}
      -			} else {
      -				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
      -			}
      -
      -			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
      -			if ( toggle ) {
      -				dataShow.hidden = !hidden;
      -			}
      -
      -			// Show elements before animating them
      -			if ( hidden ) {
      -				showHide( [ elem ], true );
      -			}
      -
      -			/* eslint-disable no-loop-func */
      -
      -			anim.done( function() {
      -
      -			/* eslint-enable no-loop-func */
      -
      -				// The final step of a "hide" animation is actually hiding the element
      -				if ( !hidden ) {
      -					showHide( [ elem ] );
      -				}
      -				dataPriv.remove( elem, "fxshow" );
      -				for ( prop in orig ) {
      -					jQuery.style( elem, prop, orig[ prop ] );
      -				}
      -			} );
      -		}
      -
      -		// Per-property setup
      -		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
      -		if ( !( prop in dataShow ) ) {
      -			dataShow[ prop ] = propTween.start;
      -			if ( hidden ) {
      -				propTween.end = propTween.start;
      -				propTween.start = 0;
      -			}
      -		}
      -	}
      -}
      -
      -function propFilter( props, specialEasing ) {
      -	var index, name, easing, value, hooks;
      -
      -	// camelCase, specialEasing and expand cssHook pass
      -	for ( index in props ) {
      -		name = jQuery.camelCase( index );
      -		easing = specialEasing[ name ];
      -		value = props[ index ];
      -		if ( jQuery.isArray( value ) ) {
      -			easing = value[ 1 ];
      -			value = props[ index ] = value[ 0 ];
      -		}
      -
      -		if ( index !== name ) {
      -			props[ name ] = value;
      -			delete props[ index ];
      -		}
      -
      -		hooks = jQuery.cssHooks[ name ];
      -		if ( hooks && "expand" in hooks ) {
      -			value = hooks.expand( value );
      -			delete props[ name ];
      -
      -			// Not quite $.extend, this won't overwrite existing keys.
      -			// Reusing 'index' because we have the correct "name"
      -			for ( index in value ) {
      -				if ( !( index in props ) ) {
      -					props[ index ] = value[ index ];
      -					specialEasing[ index ] = easing;
      -				}
      -			}
      -		} else {
      -			specialEasing[ name ] = easing;
      -		}
      -	}
      -}
      -
      -function Animation( elem, properties, options ) {
      -	var result,
      -		stopped,
      -		index = 0,
      -		length = Animation.prefilters.length,
      -		deferred = jQuery.Deferred().always( function() {
      -
      -			// Don't match elem in the :animated selector
      -			delete tick.elem;
      -		} ),
      -		tick = function() {
      -			if ( stopped ) {
      -				return false;
      -			}
      -			var currentTime = fxNow || createFxNow(),
      -				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
      -
      -				// Support: Android 2.3 only
      -				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
      -				temp = remaining / animation.duration || 0,
      -				percent = 1 - temp,
      -				index = 0,
      -				length = animation.tweens.length;
      -
      -			for ( ; index < length; index++ ) {
      -				animation.tweens[ index ].run( percent );
      -			}
      -
      -			deferred.notifyWith( elem, [ animation, percent, remaining ] );
      -
      -			if ( percent < 1 && length ) {
      -				return remaining;
      -			} else {
      -				deferred.resolveWith( elem, [ animation ] );
      -				return false;
      -			}
      -		},
      -		animation = deferred.promise( {
      -			elem: elem,
      -			props: jQuery.extend( {}, properties ),
      -			opts: jQuery.extend( true, {
      -				specialEasing: {},
      -				easing: jQuery.easing._default
      -			}, options ),
      -			originalProperties: properties,
      -			originalOptions: options,
      -			startTime: fxNow || createFxNow(),
      -			duration: options.duration,
      -			tweens: [],
      -			createTween: function( prop, end ) {
      -				var tween = jQuery.Tween( elem, animation.opts, prop, end,
      -						animation.opts.specialEasing[ prop ] || animation.opts.easing );
      -				animation.tweens.push( tween );
      -				return tween;
      -			},
      -			stop: function( gotoEnd ) {
      -				var index = 0,
      -
      -					// If we are going to the end, we want to run all the tweens
      -					// otherwise we skip this part
      -					length = gotoEnd ? animation.tweens.length : 0;
      -				if ( stopped ) {
      -					return this;
      -				}
      -				stopped = true;
      -				for ( ; index < length; index++ ) {
      -					animation.tweens[ index ].run( 1 );
      -				}
      -
      -				// Resolve when we played the last frame; otherwise, reject
      -				if ( gotoEnd ) {
      -					deferred.notifyWith( elem, [ animation, 1, 0 ] );
      -					deferred.resolveWith( elem, [ animation, gotoEnd ] );
      -				} else {
      -					deferred.rejectWith( elem, [ animation, gotoEnd ] );
      -				}
      -				return this;
      -			}
      -		} ),
      -		props = animation.props;
      -
      -	propFilter( props, animation.opts.specialEasing );
      -
      -	for ( ; index < length; index++ ) {
      -		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
      -		if ( result ) {
      -			if ( jQuery.isFunction( result.stop ) ) {
      -				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
      -					jQuery.proxy( result.stop, result );
      -			}
      -			return result;
      -		}
      -	}
      -
      -	jQuery.map( props, createTween, animation );
      -
      -	if ( jQuery.isFunction( animation.opts.start ) ) {
      -		animation.opts.start.call( elem, animation );
      -	}
      -
      -	jQuery.fx.timer(
      -		jQuery.extend( tick, {
      -			elem: elem,
      -			anim: animation,
      -			queue: animation.opts.queue
      -		} )
      -	);
      -
      -	// attach callbacks from options
      -	return animation.progress( animation.opts.progress )
      -		.done( animation.opts.done, animation.opts.complete )
      -		.fail( animation.opts.fail )
      -		.always( animation.opts.always );
      -}
      -
      -jQuery.Animation = jQuery.extend( Animation, {
      -
      -	tweeners: {
      -		"*": [ function( prop, value ) {
      -			var tween = this.createTween( prop, value );
      -			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
      -			return tween;
      -		} ]
      -	},
      -
      -	tweener: function( props, callback ) {
      -		if ( jQuery.isFunction( props ) ) {
      -			callback = props;
      -			props = [ "*" ];
      -		} else {
      -			props = props.match( rnothtmlwhite );
      -		}
      -
      -		var prop,
      -			index = 0,
      -			length = props.length;
      -
      -		for ( ; index < length; index++ ) {
      -			prop = props[ index ];
      -			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
      -			Animation.tweeners[ prop ].unshift( callback );
      -		}
      -	},
      -
      -	prefilters: [ defaultPrefilter ],
      -
      -	prefilter: function( callback, prepend ) {
      -		if ( prepend ) {
      -			Animation.prefilters.unshift( callback );
      -		} else {
      -			Animation.prefilters.push( callback );
      -		}
      -	}
      -} );
      -
      -jQuery.speed = function( speed, easing, fn ) {
      -	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
      -		complete: fn || !fn && easing ||
      -			jQuery.isFunction( speed ) && speed,
      -		duration: speed,
      -		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
      -	};
      -
      -	// Go to the end state if fx are off or if document is hidden
      -	if ( jQuery.fx.off || document.hidden ) {
      -		opt.duration = 0;
      -
      -	} else {
      -		if ( typeof opt.duration !== "number" ) {
      -			if ( opt.duration in jQuery.fx.speeds ) {
      -				opt.duration = jQuery.fx.speeds[ opt.duration ];
      -
      -			} else {
      -				opt.duration = jQuery.fx.speeds._default;
      -			}
      -		}
      -	}
      -
      -	// Normalize opt.queue - true/undefined/null -> "fx"
      -	if ( opt.queue == null || opt.queue === true ) {
      -		opt.queue = "fx";
      -	}
      -
      -	// Queueing
      -	opt.old = opt.complete;
      -
      -	opt.complete = function() {
      -		if ( jQuery.isFunction( opt.old ) ) {
      -			opt.old.call( this );
      -		}
      -
      -		if ( opt.queue ) {
      -			jQuery.dequeue( this, opt.queue );
      -		}
      -	};
      -
      -	return opt;
      -};
      -
      -jQuery.fn.extend( {
      -	fadeTo: function( speed, to, easing, callback ) {
      -
      -		// Show any hidden elements after setting opacity to 0
      -		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
      -
      -			// Animate to the value specified
      -			.end().animate( { opacity: to }, speed, easing, callback );
      -	},
      -	animate: function( prop, speed, easing, callback ) {
      -		var empty = jQuery.isEmptyObject( prop ),
      -			optall = jQuery.speed( speed, easing, callback ),
      -			doAnimation = function() {
      -
      -				// Operate on a copy of prop so per-property easing won't be lost
      -				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
      -
      -				// Empty animations, or finishing resolves immediately
      -				if ( empty || dataPriv.get( this, "finish" ) ) {
      -					anim.stop( true );
      -				}
      -			};
      -			doAnimation.finish = doAnimation;
      -
      -		return empty || optall.queue === false ?
      -			this.each( doAnimation ) :
      -			this.queue( optall.queue, doAnimation );
      -	},
      -	stop: function( type, clearQueue, gotoEnd ) {
      -		var stopQueue = function( hooks ) {
      -			var stop = hooks.stop;
      -			delete hooks.stop;
      -			stop( gotoEnd );
      -		};
      -
      -		if ( typeof type !== "string" ) {
      -			gotoEnd = clearQueue;
      -			clearQueue = type;
      -			type = undefined;
      -		}
      -		if ( clearQueue && type !== false ) {
      -			this.queue( type || "fx", [] );
      -		}
      -
      -		return this.each( function() {
      -			var dequeue = true,
      -				index = type != null && type + "queueHooks",
      -				timers = jQuery.timers,
      -				data = dataPriv.get( this );
      -
      -			if ( index ) {
      -				if ( data[ index ] && data[ index ].stop ) {
      -					stopQueue( data[ index ] );
      -				}
      -			} else {
      -				for ( index in data ) {
      -					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
      -						stopQueue( data[ index ] );
      -					}
      -				}
      -			}
      -
      -			for ( index = timers.length; index--; ) {
      -				if ( timers[ index ].elem === this &&
      -					( type == null || timers[ index ].queue === type ) ) {
      -
      -					timers[ index ].anim.stop( gotoEnd );
      -					dequeue = false;
      -					timers.splice( index, 1 );
      -				}
      -			}
      -
      -			// Start the next in the queue if the last step wasn't forced.
      -			// Timers currently will call their complete callbacks, which
      -			// will dequeue but only if they were gotoEnd.
      -			if ( dequeue || !gotoEnd ) {
      -				jQuery.dequeue( this, type );
      -			}
      -		} );
      -	},
      -	finish: function( type ) {
      -		if ( type !== false ) {
      -			type = type || "fx";
      -		}
      -		return this.each( function() {
      -			var index,
      -				data = dataPriv.get( this ),
      -				queue = data[ type + "queue" ],
      -				hooks = data[ type + "queueHooks" ],
      -				timers = jQuery.timers,
      -				length = queue ? queue.length : 0;
      -
      -			// Enable finishing flag on private data
      -			data.finish = true;
      -
      -			// Empty the queue first
      -			jQuery.queue( this, type, [] );
      -
      -			if ( hooks && hooks.stop ) {
      -				hooks.stop.call( this, true );
      -			}
      -
      -			// Look for any active animations, and finish them
      -			for ( index = timers.length; index--; ) {
      -				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
      -					timers[ index ].anim.stop( true );
      -					timers.splice( index, 1 );
      -				}
      -			}
      -
      -			// Look for any animations in the old queue and finish them
      -			for ( index = 0; index < length; index++ ) {
      -				if ( queue[ index ] && queue[ index ].finish ) {
      -					queue[ index ].finish.call( this );
      -				}
      -			}
      -
      -			// Turn off finishing flag
      -			delete data.finish;
      -		} );
      -	}
      -} );
      -
      -jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
      -	var cssFn = jQuery.fn[ name ];
      -	jQuery.fn[ name ] = function( speed, easing, callback ) {
      -		return speed == null || typeof speed === "boolean" ?
      -			cssFn.apply( this, arguments ) :
      -			this.animate( genFx( name, true ), speed, easing, callback );
      -	};
      -} );
      -
      -// Generate shortcuts for custom animations
      -jQuery.each( {
      -	slideDown: genFx( "show" ),
      -	slideUp: genFx( "hide" ),
      -	slideToggle: genFx( "toggle" ),
      -	fadeIn: { opacity: "show" },
      -	fadeOut: { opacity: "hide" },
      -	fadeToggle: { opacity: "toggle" }
      -}, function( name, props ) {
      -	jQuery.fn[ name ] = function( speed, easing, callback ) {
      -		return this.animate( props, speed, easing, callback );
      -	};
      -} );
      -
      -jQuery.timers = [];
      -jQuery.fx.tick = function() {
      -	var timer,
      -		i = 0,
      -		timers = jQuery.timers;
      -
      -	fxNow = jQuery.now();
      -
      -	for ( ; i < timers.length; i++ ) {
      -		timer = timers[ i ];
      -
      -		// Checks the timer has not already been removed
      -		if ( !timer() && timers[ i ] === timer ) {
      -			timers.splice( i--, 1 );
      -		}
      -	}
      -
      -	if ( !timers.length ) {
      -		jQuery.fx.stop();
      -	}
      -	fxNow = undefined;
      -};
      -
      -jQuery.fx.timer = function( timer ) {
      -	jQuery.timers.push( timer );
      -	if ( timer() ) {
      -		jQuery.fx.start();
      -	} else {
      -		jQuery.timers.pop();
      -	}
      -};
      -
      -jQuery.fx.interval = 13;
      -jQuery.fx.start = function() {
      -	if ( !timerId ) {
      -		timerId = window.requestAnimationFrame ?
      -			window.requestAnimationFrame( raf ) :
      -			window.setInterval( jQuery.fx.tick, jQuery.fx.interval );
      -	}
      -};
      -
      -jQuery.fx.stop = function() {
      -	if ( window.cancelAnimationFrame ) {
      -		window.cancelAnimationFrame( timerId );
      -	} else {
      -		window.clearInterval( timerId );
      -	}
      -
      -	timerId = null;
      -};
      -
      -jQuery.fx.speeds = {
      -	slow: 600,
      -	fast: 200,
      -
      -	// Default speed
      -	_default: 400
      -};
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/effects/Tween.js b/bower_components/jquery/src/effects/Tween.js
      deleted file mode 100644
      index 43eb8fa0b1..0000000000
      --- a/bower_components/jquery/src/effects/Tween.js
      +++ /dev/null
      @@ -1,123 +0,0 @@
      -define( [
      -	"../core",
      -	"../css"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -function Tween( elem, options, prop, end, easing ) {
      -	return new Tween.prototype.init( elem, options, prop, end, easing );
      -}
      -jQuery.Tween = Tween;
      -
      -Tween.prototype = {
      -	constructor: Tween,
      -	init: function( elem, options, prop, end, easing, unit ) {
      -		this.elem = elem;
      -		this.prop = prop;
      -		this.easing = easing || jQuery.easing._default;
      -		this.options = options;
      -		this.start = this.now = this.cur();
      -		this.end = end;
      -		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
      -	},
      -	cur: function() {
      -		var hooks = Tween.propHooks[ this.prop ];
      -
      -		return hooks && hooks.get ?
      -			hooks.get( this ) :
      -			Tween.propHooks._default.get( this );
      -	},
      -	run: function( percent ) {
      -		var eased,
      -			hooks = Tween.propHooks[ this.prop ];
      -
      -		if ( this.options.duration ) {
      -			this.pos = eased = jQuery.easing[ this.easing ](
      -				percent, this.options.duration * percent, 0, 1, this.options.duration
      -			);
      -		} else {
      -			this.pos = eased = percent;
      -		}
      -		this.now = ( this.end - this.start ) * eased + this.start;
      -
      -		if ( this.options.step ) {
      -			this.options.step.call( this.elem, this.now, this );
      -		}
      -
      -		if ( hooks && hooks.set ) {
      -			hooks.set( this );
      -		} else {
      -			Tween.propHooks._default.set( this );
      -		}
      -		return this;
      -	}
      -};
      -
      -Tween.prototype.init.prototype = Tween.prototype;
      -
      -Tween.propHooks = {
      -	_default: {
      -		get: function( tween ) {
      -			var result;
      -
      -			// Use a property on the element directly when it is not a DOM element,
      -			// or when there is no matching style property that exists.
      -			if ( tween.elem.nodeType !== 1 ||
      -				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
      -				return tween.elem[ tween.prop ];
      -			}
      -
      -			// Passing an empty string as a 3rd parameter to .css will automatically
      -			// attempt a parseFloat and fallback to a string if the parse fails.
      -			// Simple values such as "10px" are parsed to Float;
      -			// complex values such as "rotate(1rad)" are returned as-is.
      -			result = jQuery.css( tween.elem, tween.prop, "" );
      -
      -			// Empty strings, null, undefined and "auto" are converted to 0.
      -			return !result || result === "auto" ? 0 : result;
      -		},
      -		set: function( tween ) {
      -
      -			// Use step hook for back compat.
      -			// Use cssHook if its there.
      -			// Use .style if available and use plain properties where available.
      -			if ( jQuery.fx.step[ tween.prop ] ) {
      -				jQuery.fx.step[ tween.prop ]( tween );
      -			} else if ( tween.elem.nodeType === 1 &&
      -				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
      -					jQuery.cssHooks[ tween.prop ] ) ) {
      -				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
      -			} else {
      -				tween.elem[ tween.prop ] = tween.now;
      -			}
      -		}
      -	}
      -};
      -
      -// Support: IE <=9 only
      -// Panic based approach to setting things on disconnected nodes
      -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
      -	set: function( tween ) {
      -		if ( tween.elem.nodeType && tween.elem.parentNode ) {
      -			tween.elem[ tween.prop ] = tween.now;
      -		}
      -	}
      -};
      -
      -jQuery.easing = {
      -	linear: function( p ) {
      -		return p;
      -	},
      -	swing: function( p ) {
      -		return 0.5 - Math.cos( p * Math.PI ) / 2;
      -	},
      -	_default: "swing"
      -};
      -
      -jQuery.fx = Tween.prototype.init;
      -
      -// Back compat <1.8 extension point
      -jQuery.fx.step = {};
      -
      -} );
      diff --git a/bower_components/jquery/src/effects/animatedSelector.js b/bower_components/jquery/src/effects/animatedSelector.js
      deleted file mode 100644
      index 24c1bfba2c..0000000000
      --- a/bower_components/jquery/src/effects/animatedSelector.js
      +++ /dev/null
      @@ -1,15 +0,0 @@
      -define( [
      -	"../core",
      -	"../selector",
      -	"../effects"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -jQuery.expr.pseudos.animated = function( elem ) {
      -	return jQuery.grep( jQuery.timers, function( fn ) {
      -		return elem === fn.elem;
      -	} ).length;
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/event.js b/bower_components/jquery/src/event.js
      deleted file mode 100644
      index ab2c63cd19..0000000000
      --- a/bower_components/jquery/src/event.js
      +++ /dev/null
      @@ -1,745 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/document",
      -	"./var/documentElement",
      -	"./var/rnothtmlwhite",
      -	"./var/slice",
      -	"./data/var/dataPriv",
      -
      -	"./core/init",
      -	"./selector"
      -], function( jQuery, document, documentElement, rnothtmlwhite, slice, dataPriv ) {
      -
      -"use strict";
      -
      -var
      -	rkeyEvent = /^key/,
      -	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
      -	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
      -
      -function returnTrue() {
      -	return true;
      -}
      -
      -function returnFalse() {
      -	return false;
      -}
      -
      -// Support: IE <=9 only
      -// See #13393 for more info
      -function safeActiveElement() {
      -	try {
      -		return document.activeElement;
      -	} catch ( err ) { }
      -}
      -
      -function on( elem, types, selector, data, fn, one ) {
      -	var origFn, type;
      -
      -	// Types can be a map of types/handlers
      -	if ( typeof types === "object" ) {
      -
      -		// ( types-Object, selector, data )
      -		if ( typeof selector !== "string" ) {
      -
      -			// ( types-Object, data )
      -			data = data || selector;
      -			selector = undefined;
      -		}
      -		for ( type in types ) {
      -			on( elem, type, selector, data, types[ type ], one );
      -		}
      -		return elem;
      -	}
      -
      -	if ( data == null && fn == null ) {
      -
      -		// ( types, fn )
      -		fn = selector;
      -		data = selector = undefined;
      -	} else if ( fn == null ) {
      -		if ( typeof selector === "string" ) {
      -
      -			// ( types, selector, fn )
      -			fn = data;
      -			data = undefined;
      -		} else {
      -
      -			// ( types, data, fn )
      -			fn = data;
      -			data = selector;
      -			selector = undefined;
      -		}
      -	}
      -	if ( fn === false ) {
      -		fn = returnFalse;
      -	} else if ( !fn ) {
      -		return elem;
      -	}
      -
      -	if ( one === 1 ) {
      -		origFn = fn;
      -		fn = function( event ) {
      -
      -			// Can use an empty set, since event contains the info
      -			jQuery().off( event );
      -			return origFn.apply( this, arguments );
      -		};
      -
      -		// Use same guid so caller can remove using origFn
      -		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
      -	}
      -	return elem.each( function() {
      -		jQuery.event.add( this, types, fn, data, selector );
      -	} );
      -}
      -
      -/*
      - * Helper functions for managing events -- not part of the public interface.
      - * Props to Dean Edwards' addEvent library for many of the ideas.
      - */
      -jQuery.event = {
      -
      -	global: {},
      -
      -	add: function( elem, types, handler, data, selector ) {
      -
      -		var handleObjIn, eventHandle, tmp,
      -			events, t, handleObj,
      -			special, handlers, type, namespaces, origType,
      -			elemData = dataPriv.get( elem );
      -
      -		// Don't attach events to noData or text/comment nodes (but allow plain objects)
      -		if ( !elemData ) {
      -			return;
      -		}
      -
      -		// Caller can pass in an object of custom data in lieu of the handler
      -		if ( handler.handler ) {
      -			handleObjIn = handler;
      -			handler = handleObjIn.handler;
      -			selector = handleObjIn.selector;
      -		}
      -
      -		// Ensure that invalid selectors throw exceptions at attach time
      -		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
      -		if ( selector ) {
      -			jQuery.find.matchesSelector( documentElement, selector );
      -		}
      -
      -		// Make sure that the handler has a unique ID, used to find/remove it later
      -		if ( !handler.guid ) {
      -			handler.guid = jQuery.guid++;
      -		}
      -
      -		// Init the element's event structure and main handler, if this is the first
      -		if ( !( events = elemData.events ) ) {
      -			events = elemData.events = {};
      -		}
      -		if ( !( eventHandle = elemData.handle ) ) {
      -			eventHandle = elemData.handle = function( e ) {
      -
      -				// Discard the second event of a jQuery.event.trigger() and
      -				// when an event is called after a page has unloaded
      -				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
      -					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
      -			};
      -		}
      -
      -		// Handle multiple events separated by a space
      -		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
      -		t = types.length;
      -		while ( t-- ) {
      -			tmp = rtypenamespace.exec( types[ t ] ) || [];
      -			type = origType = tmp[ 1 ];
      -			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
      -
      -			// There *must* be a type, no attaching namespace-only handlers
      -			if ( !type ) {
      -				continue;
      -			}
      -
      -			// If event changes its type, use the special event handlers for the changed type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// If selector defined, determine special event api type, otherwise given type
      -			type = ( selector ? special.delegateType : special.bindType ) || type;
      -
      -			// Update special based on newly reset type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// handleObj is passed to all event handlers
      -			handleObj = jQuery.extend( {
      -				type: type,
      -				origType: origType,
      -				data: data,
      -				handler: handler,
      -				guid: handler.guid,
      -				selector: selector,
      -				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
      -				namespace: namespaces.join( "." )
      -			}, handleObjIn );
      -
      -			// Init the event handler queue if we're the first
      -			if ( !( handlers = events[ type ] ) ) {
      -				handlers = events[ type ] = [];
      -				handlers.delegateCount = 0;
      -
      -				// Only use addEventListener if the special events handler returns false
      -				if ( !special.setup ||
      -					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
      -
      -					if ( elem.addEventListener ) {
      -						elem.addEventListener( type, eventHandle );
      -					}
      -				}
      -			}
      -
      -			if ( special.add ) {
      -				special.add.call( elem, handleObj );
      -
      -				if ( !handleObj.handler.guid ) {
      -					handleObj.handler.guid = handler.guid;
      -				}
      -			}
      -
      -			// Add to the element's handler list, delegates in front
      -			if ( selector ) {
      -				handlers.splice( handlers.delegateCount++, 0, handleObj );
      -			} else {
      -				handlers.push( handleObj );
      -			}
      -
      -			// Keep track of which events have ever been used, for event optimization
      -			jQuery.event.global[ type ] = true;
      -		}
      -
      -	},
      -
      -	// Detach an event or set of events from an element
      -	remove: function( elem, types, handler, selector, mappedTypes ) {
      -
      -		var j, origCount, tmp,
      -			events, t, handleObj,
      -			special, handlers, type, namespaces, origType,
      -			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
      -
      -		if ( !elemData || !( events = elemData.events ) ) {
      -			return;
      -		}
      -
      -		// Once for each type.namespace in types; type may be omitted
      -		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
      -		t = types.length;
      -		while ( t-- ) {
      -			tmp = rtypenamespace.exec( types[ t ] ) || [];
      -			type = origType = tmp[ 1 ];
      -			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
      -
      -			// Unbind all events (on this namespace, if provided) for the element
      -			if ( !type ) {
      -				for ( type in events ) {
      -					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
      -				}
      -				continue;
      -			}
      -
      -			special = jQuery.event.special[ type ] || {};
      -			type = ( selector ? special.delegateType : special.bindType ) || type;
      -			handlers = events[ type ] || [];
      -			tmp = tmp[ 2 ] &&
      -				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
      -
      -			// Remove matching events
      -			origCount = j = handlers.length;
      -			while ( j-- ) {
      -				handleObj = handlers[ j ];
      -
      -				if ( ( mappedTypes || origType === handleObj.origType ) &&
      -					( !handler || handler.guid === handleObj.guid ) &&
      -					( !tmp || tmp.test( handleObj.namespace ) ) &&
      -					( !selector || selector === handleObj.selector ||
      -						selector === "**" && handleObj.selector ) ) {
      -					handlers.splice( j, 1 );
      -
      -					if ( handleObj.selector ) {
      -						handlers.delegateCount--;
      -					}
      -					if ( special.remove ) {
      -						special.remove.call( elem, handleObj );
      -					}
      -				}
      -			}
      -
      -			// Remove generic event handler if we removed something and no more handlers exist
      -			// (avoids potential for endless recursion during removal of special event handlers)
      -			if ( origCount && !handlers.length ) {
      -				if ( !special.teardown ||
      -					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
      -
      -					jQuery.removeEvent( elem, type, elemData.handle );
      -				}
      -
      -				delete events[ type ];
      -			}
      -		}
      -
      -		// Remove data and the expando if it's no longer used
      -		if ( jQuery.isEmptyObject( events ) ) {
      -			dataPriv.remove( elem, "handle events" );
      -		}
      -	},
      -
      -	dispatch: function( nativeEvent ) {
      -
      -		// Make a writable jQuery.Event from the native event object
      -		var event = jQuery.event.fix( nativeEvent );
      -
      -		var i, j, ret, matched, handleObj, handlerQueue,
      -			args = new Array( arguments.length ),
      -			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
      -			special = jQuery.event.special[ event.type ] || {};
      -
      -		// Use the fix-ed jQuery.Event rather than the (read-only) native event
      -		args[ 0 ] = event;
      -
      -		for ( i = 1; i < arguments.length; i++ ) {
      -			args[ i ] = arguments[ i ];
      -		}
      -
      -		event.delegateTarget = this;
      -
      -		// Call the preDispatch hook for the mapped type, and let it bail if desired
      -		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
      -			return;
      -		}
      -
      -		// Determine handlers
      -		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
      -
      -		// Run delegates first; they may want to stop propagation beneath us
      -		i = 0;
      -		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
      -			event.currentTarget = matched.elem;
      -
      -			j = 0;
      -			while ( ( handleObj = matched.handlers[ j++ ] ) &&
      -				!event.isImmediatePropagationStopped() ) {
      -
      -				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
      -				// a subset or equal to those in the bound event (both can have no namespace).
      -				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
      -
      -					event.handleObj = handleObj;
      -					event.data = handleObj.data;
      -
      -					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
      -						handleObj.handler ).apply( matched.elem, args );
      -
      -					if ( ret !== undefined ) {
      -						if ( ( event.result = ret ) === false ) {
      -							event.preventDefault();
      -							event.stopPropagation();
      -						}
      -					}
      -				}
      -			}
      -		}
      -
      -		// Call the postDispatch hook for the mapped type
      -		if ( special.postDispatch ) {
      -			special.postDispatch.call( this, event );
      -		}
      -
      -		return event.result;
      -	},
      -
      -	handlers: function( event, handlers ) {
      -		var i, handleObj, sel, matchedHandlers, matchedSelectors,
      -			handlerQueue = [],
      -			delegateCount = handlers.delegateCount,
      -			cur = event.target;
      -
      -		// Find delegate handlers
      -		if ( delegateCount &&
      -
      -			// Support: IE <=9
      -			// Black-hole SVG <use> instance trees (trac-13180)
      -			cur.nodeType &&
      -
      -			// Support: Firefox <=42
      -			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
      -			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
      -			// Support: IE 11 only
      -			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
      -			!( event.type === "click" && event.button >= 1 ) ) {
      -
      -			for ( ; cur !== this; cur = cur.parentNode || this ) {
      -
      -				// Don't check non-elements (#13208)
      -				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
      -				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
      -					matchedHandlers = [];
      -					matchedSelectors = {};
      -					for ( i = 0; i < delegateCount; i++ ) {
      -						handleObj = handlers[ i ];
      -
      -						// Don't conflict with Object.prototype properties (#13203)
      -						sel = handleObj.selector + " ";
      -
      -						if ( matchedSelectors[ sel ] === undefined ) {
      -							matchedSelectors[ sel ] = handleObj.needsContext ?
      -								jQuery( sel, this ).index( cur ) > -1 :
      -								jQuery.find( sel, this, null, [ cur ] ).length;
      -						}
      -						if ( matchedSelectors[ sel ] ) {
      -							matchedHandlers.push( handleObj );
      -						}
      -					}
      -					if ( matchedHandlers.length ) {
      -						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
      -					}
      -				}
      -			}
      -		}
      -
      -		// Add the remaining (directly-bound) handlers
      -		cur = this;
      -		if ( delegateCount < handlers.length ) {
      -			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
      -		}
      -
      -		return handlerQueue;
      -	},
      -
      -	addProp: function( name, hook ) {
      -		Object.defineProperty( jQuery.Event.prototype, name, {
      -			enumerable: true,
      -			configurable: true,
      -
      -			get: jQuery.isFunction( hook ) ?
      -				function() {
      -					if ( this.originalEvent ) {
      -							return hook( this.originalEvent );
      -					}
      -				} :
      -				function() {
      -					if ( this.originalEvent ) {
      -							return this.originalEvent[ name ];
      -					}
      -				},
      -
      -			set: function( value ) {
      -				Object.defineProperty( this, name, {
      -					enumerable: true,
      -					configurable: true,
      -					writable: true,
      -					value: value
      -				} );
      -			}
      -		} );
      -	},
      -
      -	fix: function( originalEvent ) {
      -		return originalEvent[ jQuery.expando ] ?
      -			originalEvent :
      -			new jQuery.Event( originalEvent );
      -	},
      -
      -	special: {
      -		load: {
      -
      -			// Prevent triggered image.load events from bubbling to window.load
      -			noBubble: true
      -		},
      -		focus: {
      -
      -			// Fire native event if possible so blur/focus sequence is correct
      -			trigger: function() {
      -				if ( this !== safeActiveElement() && this.focus ) {
      -					this.focus();
      -					return false;
      -				}
      -			},
      -			delegateType: "focusin"
      -		},
      -		blur: {
      -			trigger: function() {
      -				if ( this === safeActiveElement() && this.blur ) {
      -					this.blur();
      -					return false;
      -				}
      -			},
      -			delegateType: "focusout"
      -		},
      -		click: {
      -
      -			// For checkbox, fire native event so checked state will be right
      -			trigger: function() {
      -				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
      -					this.click();
      -					return false;
      -				}
      -			},
      -
      -			// For cross-browser consistency, don't fire native .click() on links
      -			_default: function( event ) {
      -				return jQuery.nodeName( event.target, "a" );
      -			}
      -		},
      -
      -		beforeunload: {
      -			postDispatch: function( event ) {
      -
      -				// Support: Firefox 20+
      -				// Firefox doesn't alert if the returnValue field is not set.
      -				if ( event.result !== undefined && event.originalEvent ) {
      -					event.originalEvent.returnValue = event.result;
      -				}
      -			}
      -		}
      -	}
      -};
      -
      -jQuery.removeEvent = function( elem, type, handle ) {
      -
      -	// This "if" is needed for plain objects
      -	if ( elem.removeEventListener ) {
      -		elem.removeEventListener( type, handle );
      -	}
      -};
      -
      -jQuery.Event = function( src, props ) {
      -
      -	// Allow instantiation without the 'new' keyword
      -	if ( !( this instanceof jQuery.Event ) ) {
      -		return new jQuery.Event( src, props );
      -	}
      -
      -	// Event object
      -	if ( src && src.type ) {
      -		this.originalEvent = src;
      -		this.type = src.type;
      -
      -		// Events bubbling up the document may have been marked as prevented
      -		// by a handler lower down the tree; reflect the correct value.
      -		this.isDefaultPrevented = src.defaultPrevented ||
      -				src.defaultPrevented === undefined &&
      -
      -				// Support: Android <=2.3 only
      -				src.returnValue === false ?
      -			returnTrue :
      -			returnFalse;
      -
      -		// Create target properties
      -		// Support: Safari <=6 - 7 only
      -		// Target should not be a text node (#504, #13143)
      -		this.target = ( src.target && src.target.nodeType === 3 ) ?
      -			src.target.parentNode :
      -			src.target;
      -
      -		this.currentTarget = src.currentTarget;
      -		this.relatedTarget = src.relatedTarget;
      -
      -	// Event type
      -	} else {
      -		this.type = src;
      -	}
      -
      -	// Put explicitly provided properties onto the event object
      -	if ( props ) {
      -		jQuery.extend( this, props );
      -	}
      -
      -	// Create a timestamp if incoming event doesn't have one
      -	this.timeStamp = src && src.timeStamp || jQuery.now();
      -
      -	// Mark it as fixed
      -	this[ jQuery.expando ] = true;
      -};
      -
      -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
      -// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      -jQuery.Event.prototype = {
      -	constructor: jQuery.Event,
      -	isDefaultPrevented: returnFalse,
      -	isPropagationStopped: returnFalse,
      -	isImmediatePropagationStopped: returnFalse,
      -	isSimulated: false,
      -
      -	preventDefault: function() {
      -		var e = this.originalEvent;
      -
      -		this.isDefaultPrevented = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.preventDefault();
      -		}
      -	},
      -	stopPropagation: function() {
      -		var e = this.originalEvent;
      -
      -		this.isPropagationStopped = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.stopPropagation();
      -		}
      -	},
      -	stopImmediatePropagation: function() {
      -		var e = this.originalEvent;
      -
      -		this.isImmediatePropagationStopped = returnTrue;
      -
      -		if ( e && !this.isSimulated ) {
      -			e.stopImmediatePropagation();
      -		}
      -
      -		this.stopPropagation();
      -	}
      -};
      -
      -// Includes all common event props including KeyEvent and MouseEvent specific props
      -jQuery.each( {
      -	altKey: true,
      -	bubbles: true,
      -	cancelable: true,
      -	changedTouches: true,
      -	ctrlKey: true,
      -	detail: true,
      -	eventPhase: true,
      -	metaKey: true,
      -	pageX: true,
      -	pageY: true,
      -	shiftKey: true,
      -	view: true,
      -	"char": true,
      -	charCode: true,
      -	key: true,
      -	keyCode: true,
      -	button: true,
      -	buttons: true,
      -	clientX: true,
      -	clientY: true,
      -	offsetX: true,
      -	offsetY: true,
      -	pointerId: true,
      -	pointerType: true,
      -	screenX: true,
      -	screenY: true,
      -	targetTouches: true,
      -	toElement: true,
      -	touches: true,
      -
      -	which: function( event ) {
      -		var button = event.button;
      -
      -		// Add which for key events
      -		if ( event.which == null && rkeyEvent.test( event.type ) ) {
      -			return event.charCode != null ? event.charCode : event.keyCode;
      -		}
      -
      -		// Add which for click: 1 === left; 2 === middle; 3 === right
      -		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
      -			if ( button & 1 ) {
      -				return 1;
      -			}
      -
      -			if ( button & 2 ) {
      -				return 3;
      -			}
      -
      -			if ( button & 4 ) {
      -				return 2;
      -			}
      -
      -			return 0;
      -		}
      -
      -		return event.which;
      -	}
      -}, jQuery.event.addProp );
      -
      -// Create mouseenter/leave events using mouseover/out and event-time checks
      -// so that event delegation works in jQuery.
      -// Do the same for pointerenter/pointerleave and pointerover/pointerout
      -//
      -// Support: Safari 7 only
      -// Safari sends mouseenter too often; see:
      -// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
      -// for the description of the bug (it existed in older Chrome versions as well).
      -jQuery.each( {
      -	mouseenter: "mouseover",
      -	mouseleave: "mouseout",
      -	pointerenter: "pointerover",
      -	pointerleave: "pointerout"
      -}, function( orig, fix ) {
      -	jQuery.event.special[ orig ] = {
      -		delegateType: fix,
      -		bindType: fix,
      -
      -		handle: function( event ) {
      -			var ret,
      -				target = this,
      -				related = event.relatedTarget,
      -				handleObj = event.handleObj;
      -
      -			// For mouseenter/leave call the handler if related is outside the target.
      -			// NB: No relatedTarget if the mouse left/entered the browser window
      -			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
      -				event.type = handleObj.origType;
      -				ret = handleObj.handler.apply( this, arguments );
      -				event.type = fix;
      -			}
      -			return ret;
      -		}
      -	};
      -} );
      -
      -jQuery.fn.extend( {
      -
      -	on: function( types, selector, data, fn ) {
      -		return on( this, types, selector, data, fn );
      -	},
      -	one: function( types, selector, data, fn ) {
      -		return on( this, types, selector, data, fn, 1 );
      -	},
      -	off: function( types, selector, fn ) {
      -		var handleObj, type;
      -		if ( types && types.preventDefault && types.handleObj ) {
      -
      -			// ( event )  dispatched jQuery.Event
      -			handleObj = types.handleObj;
      -			jQuery( types.delegateTarget ).off(
      -				handleObj.namespace ?
      -					handleObj.origType + "." + handleObj.namespace :
      -					handleObj.origType,
      -				handleObj.selector,
      -				handleObj.handler
      -			);
      -			return this;
      -		}
      -		if ( typeof types === "object" ) {
      -
      -			// ( types-object [, selector] )
      -			for ( type in types ) {
      -				this.off( type, selector, types[ type ] );
      -			}
      -			return this;
      -		}
      -		if ( selector === false || typeof selector === "function" ) {
      -
      -			// ( types [, fn] )
      -			fn = selector;
      -			selector = undefined;
      -		}
      -		if ( fn === false ) {
      -			fn = returnFalse;
      -		}
      -		return this.each( function() {
      -			jQuery.event.remove( this, types, fn, selector );
      -		} );
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/event/ajax.js b/bower_components/jquery/src/event/ajax.js
      deleted file mode 100644
      index 500b36cdd3..0000000000
      --- a/bower_components/jquery/src/event/ajax.js
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -define( [
      -	"../core",
      -	"../event"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -// Attach a bunch of functions for handling common AJAX events
      -jQuery.each( [
      -	"ajaxStart",
      -	"ajaxStop",
      -	"ajaxComplete",
      -	"ajaxError",
      -	"ajaxSuccess",
      -	"ajaxSend"
      -], function( i, type ) {
      -	jQuery.fn[ type ] = function( fn ) {
      -		return this.on( type, fn );
      -	};
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/event/alias.js b/bower_components/jquery/src/event/alias.js
      deleted file mode 100644
      index 863c94ad2e..0000000000
      --- a/bower_components/jquery/src/event/alias.js
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -define( [
      -	"../core",
      -
      -	"../event",
      -	"./trigger"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
      -	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
      -	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
      -	function( i, name ) {
      -
      -	// Handle event binding
      -	jQuery.fn[ name ] = function( data, fn ) {
      -		return arguments.length > 0 ?
      -			this.on( name, null, data, fn ) :
      -			this.trigger( name );
      -	};
      -} );
      -
      -jQuery.fn.extend( {
      -	hover: function( fnOver, fnOut ) {
      -		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/event/focusin.js b/bower_components/jquery/src/event/focusin.js
      deleted file mode 100644
      index 7faef29813..0000000000
      --- a/bower_components/jquery/src/event/focusin.js
      +++ /dev/null
      @@ -1,55 +0,0 @@
      -define( [
      -	"../core",
      -	"../data/var/dataPriv",
      -	"./support",
      -
      -	"../event",
      -	"./trigger"
      -], function( jQuery, dataPriv, support ) {
      -
      -"use strict";
      -
      -// Support: Firefox <=44
      -// Firefox doesn't have focus(in | out) events
      -// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
      -//
      -// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
      -// focus(in | out) events fire after focus & blur events,
      -// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
      -// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
      -if ( !support.focusin ) {
      -	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
      -
      -		// Attach a single capturing handler on the document while someone wants focusin/focusout
      -		var handler = function( event ) {
      -			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
      -		};
      -
      -		jQuery.event.special[ fix ] = {
      -			setup: function() {
      -				var doc = this.ownerDocument || this,
      -					attaches = dataPriv.access( doc, fix );
      -
      -				if ( !attaches ) {
      -					doc.addEventListener( orig, handler, true );
      -				}
      -				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
      -			},
      -			teardown: function() {
      -				var doc = this.ownerDocument || this,
      -					attaches = dataPriv.access( doc, fix ) - 1;
      -
      -				if ( !attaches ) {
      -					doc.removeEventListener( orig, handler, true );
      -					dataPriv.remove( doc, fix );
      -
      -				} else {
      -					dataPriv.access( doc, fix, attaches );
      -				}
      -			}
      -		};
      -	} );
      -}
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/event/support.js b/bower_components/jquery/src/event/support.js
      deleted file mode 100644
      index e3db9ad83f..0000000000
      --- a/bower_components/jquery/src/event/support.js
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -define( [
      -	"../var/support"
      -], function( support ) {
      -
      -"use strict";
      -
      -support.focusin = "onfocusin" in window;
      -
      -return support;
      -
      -} );
      diff --git a/bower_components/jquery/src/event/trigger.js b/bower_components/jquery/src/event/trigger.js
      deleted file mode 100644
      index ef391370f0..0000000000
      --- a/bower_components/jquery/src/event/trigger.js
      +++ /dev/null
      @@ -1,185 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/document",
      -	"../data/var/dataPriv",
      -	"../data/var/acceptData",
      -	"../var/hasOwn",
      -
      -	"../event"
      -], function( jQuery, document, dataPriv, acceptData, hasOwn ) {
      -
      -"use strict";
      -
      -var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
      -
      -jQuery.extend( jQuery.event, {
      -
      -	trigger: function( event, data, elem, onlyHandlers ) {
      -
      -		var i, cur, tmp, bubbleType, ontype, handle, special,
      -			eventPath = [ elem || document ],
      -			type = hasOwn.call( event, "type" ) ? event.type : event,
      -			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
      -
      -		cur = tmp = elem = elem || document;
      -
      -		// Don't do events on text and comment nodes
      -		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
      -			return;
      -		}
      -
      -		// focus/blur morphs to focusin/out; ensure we're not firing them right now
      -		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
      -			return;
      -		}
      -
      -		if ( type.indexOf( "." ) > -1 ) {
      -
      -			// Namespaced trigger; create a regexp to match event type in handle()
      -			namespaces = type.split( "." );
      -			type = namespaces.shift();
      -			namespaces.sort();
      -		}
      -		ontype = type.indexOf( ":" ) < 0 && "on" + type;
      -
      -		// Caller can pass in a jQuery.Event object, Object, or just an event type string
      -		event = event[ jQuery.expando ] ?
      -			event :
      -			new jQuery.Event( type, typeof event === "object" && event );
      -
      -		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
      -		event.isTrigger = onlyHandlers ? 2 : 3;
      -		event.namespace = namespaces.join( "." );
      -		event.rnamespace = event.namespace ?
      -			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
      -			null;
      -
      -		// Clean up the event in case it is being reused
      -		event.result = undefined;
      -		if ( !event.target ) {
      -			event.target = elem;
      -		}
      -
      -		// Clone any incoming data and prepend the event, creating the handler arg list
      -		data = data == null ?
      -			[ event ] :
      -			jQuery.makeArray( data, [ event ] );
      -
      -		// Allow special events to draw outside the lines
      -		special = jQuery.event.special[ type ] || {};
      -		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
      -			return;
      -		}
      -
      -		// Determine event propagation path in advance, per W3C events spec (#9951)
      -		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
      -		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
      -
      -			bubbleType = special.delegateType || type;
      -			if ( !rfocusMorph.test( bubbleType + type ) ) {
      -				cur = cur.parentNode;
      -			}
      -			for ( ; cur; cur = cur.parentNode ) {
      -				eventPath.push( cur );
      -				tmp = cur;
      -			}
      -
      -			// Only add window if we got to document (e.g., not plain obj or detached DOM)
      -			if ( tmp === ( elem.ownerDocument || document ) ) {
      -				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
      -			}
      -		}
      -
      -		// Fire handlers on the event path
      -		i = 0;
      -		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
      -
      -			event.type = i > 1 ?
      -				bubbleType :
      -				special.bindType || type;
      -
      -			// jQuery handler
      -			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
      -				dataPriv.get( cur, "handle" );
      -			if ( handle ) {
      -				handle.apply( cur, data );
      -			}
      -
      -			// Native handler
      -			handle = ontype && cur[ ontype ];
      -			if ( handle && handle.apply && acceptData( cur ) ) {
      -				event.result = handle.apply( cur, data );
      -				if ( event.result === false ) {
      -					event.preventDefault();
      -				}
      -			}
      -		}
      -		event.type = type;
      -
      -		// If nobody prevented the default action, do it now
      -		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
      -
      -			if ( ( !special._default ||
      -				special._default.apply( eventPath.pop(), data ) === false ) &&
      -				acceptData( elem ) ) {
      -
      -				// Call a native DOM method on the target with the same name as the event.
      -				// Don't do default actions on window, that's where global variables be (#6170)
      -				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
      -
      -					// Don't re-trigger an onFOO event when we call its FOO() method
      -					tmp = elem[ ontype ];
      -
      -					if ( tmp ) {
      -						elem[ ontype ] = null;
      -					}
      -
      -					// Prevent re-triggering of the same event, since we already bubbled it above
      -					jQuery.event.triggered = type;
      -					elem[ type ]();
      -					jQuery.event.triggered = undefined;
      -
      -					if ( tmp ) {
      -						elem[ ontype ] = tmp;
      -					}
      -				}
      -			}
      -		}
      -
      -		return event.result;
      -	},
      -
      -	// Piggyback on a donor event to simulate a different one
      -	// Used only for `focus(in | out)` events
      -	simulate: function( type, elem, event ) {
      -		var e = jQuery.extend(
      -			new jQuery.Event(),
      -			event,
      -			{
      -				type: type,
      -				isSimulated: true
      -			}
      -		);
      -
      -		jQuery.event.trigger( e, null, elem );
      -	}
      -
      -} );
      -
      -jQuery.fn.extend( {
      -
      -	trigger: function( type, data ) {
      -		return this.each( function() {
      -			jQuery.event.trigger( type, data, this );
      -		} );
      -	},
      -	triggerHandler: function( type, data ) {
      -		var elem = this[ 0 ];
      -		if ( elem ) {
      -			return jQuery.event.trigger( type, data, elem, true );
      -		}
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/exports/amd.js b/bower_components/jquery/src/exports/amd.js
      deleted file mode 100644
      index cbb1ef5806..0000000000
      --- a/bower_components/jquery/src/exports/amd.js
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -define( [
      -	"../core"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -// Register as a named AMD module, since jQuery can be concatenated with other
      -// files that may use define, but not via a proper concatenation script that
      -// understands anonymous AMD modules. A named AMD is safest and most robust
      -// way to register. Lowercase jquery is used because AMD module names are
      -// derived from file names, and jQuery is normally delivered in a lowercase
      -// file name. Do this after creating the global so that if an AMD module wants
      -// to call noConflict to hide this version of jQuery, it will work.
      -
      -// Note that for maximum portability, libraries that are not jQuery should
      -// declare themselves as anonymous modules, and avoid setting a global if an
      -// AMD loader is present. jQuery is a special case. For more information, see
      -// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
      -
      -if ( typeof define === "function" && define.amd ) {
      -	define( "jquery", [], function() {
      -		return jQuery;
      -	} );
      -}
      -
      -} );
      diff --git a/bower_components/jquery/src/exports/global.js b/bower_components/jquery/src/exports/global.js
      deleted file mode 100644
      index 460b56e478..0000000000
      --- a/bower_components/jquery/src/exports/global.js
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -define( [
      -	"../core"
      -], function( jQuery, noGlobal ) {
      -
      -"use strict";
      -
      -var
      -
      -	// Map over jQuery in case of overwrite
      -	_jQuery = window.jQuery,
      -
      -	// Map over the $ in case of overwrite
      -	_$ = window.$;
      -
      -jQuery.noConflict = function( deep ) {
      -	if ( window.$ === jQuery ) {
      -		window.$ = _$;
      -	}
      -
      -	if ( deep && window.jQuery === jQuery ) {
      -		window.jQuery = _jQuery;
      -	}
      -
      -	return jQuery;
      -};
      -
      -// Expose jQuery and $ identifiers, even in AMD
      -// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
      -// and CommonJS for browser emulators (#13566)
      -if ( !noGlobal ) {
      -	window.jQuery = window.$ = jQuery;
      -}
      -
      -} );
      diff --git a/bower_components/jquery/src/jquery.js b/bower_components/jquery/src/jquery.js
      deleted file mode 100644
      index 52fc87dbd4..0000000000
      --- a/bower_components/jquery/src/jquery.js
      +++ /dev/null
      @@ -1,41 +0,0 @@
      -define( [
      -	"./core",
      -	"./selector",
      -	"./traversing",
      -	"./callbacks",
      -	"./deferred",
      -	"./deferred/exceptionHook",
      -	"./core/ready",
      -	"./data",
      -	"./queue",
      -	"./queue/delay",
      -	"./attributes",
      -	"./event",
      -	"./event/alias",
      -	"./event/focusin",
      -	"./manipulation",
      -	"./manipulation/_evalUrl",
      -	"./wrap",
      -	"./css",
      -	"./css/hiddenVisibleSelectors",
      -	"./serialize",
      -	"./ajax",
      -	"./ajax/xhr",
      -	"./ajax/script",
      -	"./ajax/jsonp",
      -	"./ajax/load",
      -	"./event/ajax",
      -	"./effects",
      -	"./effects/animatedSelector",
      -	"./offset",
      -	"./dimensions",
      -	"./deprecated",
      -	"./exports/amd",
      -	"./exports/global"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -return jQuery;
      -
      -} );
      diff --git a/bower_components/jquery/src/manipulation.js b/bower_components/jquery/src/manipulation.js
      deleted file mode 100644
      index 9b4f5e451d..0000000000
      --- a/bower_components/jquery/src/manipulation.js
      +++ /dev/null
      @@ -1,486 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/concat",
      -	"./var/push",
      -	"./core/access",
      -	"./manipulation/var/rcheckableType",
      -	"./manipulation/var/rtagName",
      -	"./manipulation/var/rscriptType",
      -	"./manipulation/wrapMap",
      -	"./manipulation/getAll",
      -	"./manipulation/setGlobalEval",
      -	"./manipulation/buildFragment",
      -	"./manipulation/support",
      -
      -	"./data/var/dataPriv",
      -	"./data/var/dataUser",
      -	"./data/var/acceptData",
      -	"./core/DOMEval",
      -
      -	"./core/init",
      -	"./traversing",
      -	"./selector",
      -	"./event"
      -], function( jQuery, concat, push, access,
      -	rcheckableType, rtagName, rscriptType,
      -	wrapMap, getAll, setGlobalEval, buildFragment, support,
      -	dataPriv, dataUser, acceptData, DOMEval ) {
      -
      -"use strict";
      -
      -var
      -
      -	/* eslint-disable max-len */
      -
      -	// See https://github.com/eslint/eslint/issues/3229
      -	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
      -
      -	/* eslint-enable */
      -
      -	// Support: IE <=10 - 11, Edge 12 - 13
      -	// In IE/Edge using regex groups here causes severe slowdowns.
      -	// See https://connect.microsoft.com/IE/feedback/details/1736512/
      -	rnoInnerhtml = /<script|<style|<link/i,
      -
      -	// checked="checked" or checked
      -	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
      -	rscriptTypeMasked = /^true\/(.*)/,
      -	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
      -
      -function manipulationTarget( elem, content ) {
      -	if ( jQuery.nodeName( elem, "table" ) &&
      -		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
      -
      -		return elem.getElementsByTagName( "tbody" )[ 0 ] || elem;
      -	}
      -
      -	return elem;
      -}
      -
      -// Replace/restore the type attribute of script elements for safe DOM manipulation
      -function disableScript( elem ) {
      -	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
      -	return elem;
      -}
      -function restoreScript( elem ) {
      -	var match = rscriptTypeMasked.exec( elem.type );
      -
      -	if ( match ) {
      -		elem.type = match[ 1 ];
      -	} else {
      -		elem.removeAttribute( "type" );
      -	}
      -
      -	return elem;
      -}
      -
      -function cloneCopyEvent( src, dest ) {
      -	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
      -
      -	if ( dest.nodeType !== 1 ) {
      -		return;
      -	}
      -
      -	// 1. Copy private data: events, handlers, etc.
      -	if ( dataPriv.hasData( src ) ) {
      -		pdataOld = dataPriv.access( src );
      -		pdataCur = dataPriv.set( dest, pdataOld );
      -		events = pdataOld.events;
      -
      -		if ( events ) {
      -			delete pdataCur.handle;
      -			pdataCur.events = {};
      -
      -			for ( type in events ) {
      -				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
      -					jQuery.event.add( dest, type, events[ type ][ i ] );
      -				}
      -			}
      -		}
      -	}
      -
      -	// 2. Copy user data
      -	if ( dataUser.hasData( src ) ) {
      -		udataOld = dataUser.access( src );
      -		udataCur = jQuery.extend( {}, udataOld );
      -
      -		dataUser.set( dest, udataCur );
      -	}
      -}
      -
      -// Fix IE bugs, see support tests
      -function fixInput( src, dest ) {
      -	var nodeName = dest.nodeName.toLowerCase();
      -
      -	// Fails to persist the checked state of a cloned checkbox or radio button.
      -	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
      -		dest.checked = src.checked;
      -
      -	// Fails to return the selected option to the default selected state when cloning options
      -	} else if ( nodeName === "input" || nodeName === "textarea" ) {
      -		dest.defaultValue = src.defaultValue;
      -	}
      -}
      -
      -function domManip( collection, args, callback, ignored ) {
      -
      -	// Flatten any nested arrays
      -	args = concat.apply( [], args );
      -
      -	var fragment, first, scripts, hasScripts, node, doc,
      -		i = 0,
      -		l = collection.length,
      -		iNoClone = l - 1,
      -		value = args[ 0 ],
      -		isFunction = jQuery.isFunction( value );
      -
      -	// We can't cloneNode fragments that contain checked, in WebKit
      -	if ( isFunction ||
      -			( l > 1 && typeof value === "string" &&
      -				!support.checkClone && rchecked.test( value ) ) ) {
      -		return collection.each( function( index ) {
      -			var self = collection.eq( index );
      -			if ( isFunction ) {
      -				args[ 0 ] = value.call( this, index, self.html() );
      -			}
      -			domManip( self, args, callback, ignored );
      -		} );
      -	}
      -
      -	if ( l ) {
      -		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
      -		first = fragment.firstChild;
      -
      -		if ( fragment.childNodes.length === 1 ) {
      -			fragment = first;
      -		}
      -
      -		// Require either new content or an interest in ignored elements to invoke the callback
      -		if ( first || ignored ) {
      -			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
      -			hasScripts = scripts.length;
      -
      -			// Use the original fragment for the last item
      -			// instead of the first because it can end up
      -			// being emptied incorrectly in certain situations (#8070).
      -			for ( ; i < l; i++ ) {
      -				node = fragment;
      -
      -				if ( i !== iNoClone ) {
      -					node = jQuery.clone( node, true, true );
      -
      -					// Keep references to cloned scripts for later restoration
      -					if ( hasScripts ) {
      -
      -						// Support: Android <=4.0 only, PhantomJS 1 only
      -						// push.apply(_, arraylike) throws on ancient WebKit
      -						jQuery.merge( scripts, getAll( node, "script" ) );
      -					}
      -				}
      -
      -				callback.call( collection[ i ], node, i );
      -			}
      -
      -			if ( hasScripts ) {
      -				doc = scripts[ scripts.length - 1 ].ownerDocument;
      -
      -				// Reenable scripts
      -				jQuery.map( scripts, restoreScript );
      -
      -				// Evaluate executable scripts on first document insertion
      -				for ( i = 0; i < hasScripts; i++ ) {
      -					node = scripts[ i ];
      -					if ( rscriptType.test( node.type || "" ) &&
      -						!dataPriv.access( node, "globalEval" ) &&
      -						jQuery.contains( doc, node ) ) {
      -
      -						if ( node.src ) {
      -
      -							// Optional AJAX dependency, but won't run scripts if not present
      -							if ( jQuery._evalUrl ) {
      -								jQuery._evalUrl( node.src );
      -							}
      -						} else {
      -							DOMEval( node.textContent.replace( rcleanScript, "" ), doc );
      -						}
      -					}
      -				}
      -			}
      -		}
      -	}
      -
      -	return collection;
      -}
      -
      -function remove( elem, selector, keepData ) {
      -	var node,
      -		nodes = selector ? jQuery.filter( selector, elem ) : elem,
      -		i = 0;
      -
      -	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
      -		if ( !keepData && node.nodeType === 1 ) {
      -			jQuery.cleanData( getAll( node ) );
      -		}
      -
      -		if ( node.parentNode ) {
      -			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
      -				setGlobalEval( getAll( node, "script" ) );
      -			}
      -			node.parentNode.removeChild( node );
      -		}
      -	}
      -
      -	return elem;
      -}
      -
      -jQuery.extend( {
      -	htmlPrefilter: function( html ) {
      -		return html.replace( rxhtmlTag, "<$1></$2>" );
      -	},
      -
      -	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
      -		var i, l, srcElements, destElements,
      -			clone = elem.cloneNode( true ),
      -			inPage = jQuery.contains( elem.ownerDocument, elem );
      -
      -		// Fix IE cloning issues
      -		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
      -				!jQuery.isXMLDoc( elem ) ) {
      -
      -			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
      -			destElements = getAll( clone );
      -			srcElements = getAll( elem );
      -
      -			for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -				fixInput( srcElements[ i ], destElements[ i ] );
      -			}
      -		}
      -
      -		// Copy the events from the original to the clone
      -		if ( dataAndEvents ) {
      -			if ( deepDataAndEvents ) {
      -				srcElements = srcElements || getAll( elem );
      -				destElements = destElements || getAll( clone );
      -
      -				for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
      -				}
      -			} else {
      -				cloneCopyEvent( elem, clone );
      -			}
      -		}
      -
      -		// Preserve script evaluation history
      -		destElements = getAll( clone, "script" );
      -		if ( destElements.length > 0 ) {
      -			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
      -		}
      -
      -		// Return the cloned set
      -		return clone;
      -	},
      -
      -	cleanData: function( elems ) {
      -		var data, elem, type,
      -			special = jQuery.event.special,
      -			i = 0;
      -
      -		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
      -			if ( acceptData( elem ) ) {
      -				if ( ( data = elem[ dataPriv.expando ] ) ) {
      -					if ( data.events ) {
      -						for ( type in data.events ) {
      -							if ( special[ type ] ) {
      -								jQuery.event.remove( elem, type );
      -
      -							// This is a shortcut to avoid jQuery.event.remove's overhead
      -							} else {
      -								jQuery.removeEvent( elem, type, data.handle );
      -							}
      -						}
      -					}
      -
      -					// Support: Chrome <=35 - 45+
      -					// Assign undefined instead of using delete, see Data#remove
      -					elem[ dataPriv.expando ] = undefined;
      -				}
      -				if ( elem[ dataUser.expando ] ) {
      -
      -					// Support: Chrome <=35 - 45+
      -					// Assign undefined instead of using delete, see Data#remove
      -					elem[ dataUser.expando ] = undefined;
      -				}
      -			}
      -		}
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	detach: function( selector ) {
      -		return remove( this, selector, true );
      -	},
      -
      -	remove: function( selector ) {
      -		return remove( this, selector );
      -	},
      -
      -	text: function( value ) {
      -		return access( this, function( value ) {
      -			return value === undefined ?
      -				jQuery.text( this ) :
      -				this.empty().each( function() {
      -					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -						this.textContent = value;
      -					}
      -				} );
      -		}, null, value, arguments.length );
      -	},
      -
      -	append: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -				var target = manipulationTarget( this, elem );
      -				target.appendChild( elem );
      -			}
      -		} );
      -	},
      -
      -	prepend: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -				var target = manipulationTarget( this, elem );
      -				target.insertBefore( elem, target.firstChild );
      -			}
      -		} );
      -	},
      -
      -	before: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.parentNode ) {
      -				this.parentNode.insertBefore( elem, this );
      -			}
      -		} );
      -	},
      -
      -	after: function() {
      -		return domManip( this, arguments, function( elem ) {
      -			if ( this.parentNode ) {
      -				this.parentNode.insertBefore( elem, this.nextSibling );
      -			}
      -		} );
      -	},
      -
      -	empty: function() {
      -		var elem,
      -			i = 0;
      -
      -		for ( ; ( elem = this[ i ] ) != null; i++ ) {
      -			if ( elem.nodeType === 1 ) {
      -
      -				// Prevent memory leaks
      -				jQuery.cleanData( getAll( elem, false ) );
      -
      -				// Remove any remaining nodes
      -				elem.textContent = "";
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	clone: function( dataAndEvents, deepDataAndEvents ) {
      -		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
      -		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
      -
      -		return this.map( function() {
      -			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
      -		} );
      -	},
      -
      -	html: function( value ) {
      -		return access( this, function( value ) {
      -			var elem = this[ 0 ] || {},
      -				i = 0,
      -				l = this.length;
      -
      -			if ( value === undefined && elem.nodeType === 1 ) {
      -				return elem.innerHTML;
      -			}
      -
      -			// See if we can take a shortcut and just use innerHTML
      -			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
      -				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
      -
      -				value = jQuery.htmlPrefilter( value );
      -
      -				try {
      -					for ( ; i < l; i++ ) {
      -						elem = this[ i ] || {};
      -
      -						// Remove element nodes and prevent memory leaks
      -						if ( elem.nodeType === 1 ) {
      -							jQuery.cleanData( getAll( elem, false ) );
      -							elem.innerHTML = value;
      -						}
      -					}
      -
      -					elem = 0;
      -
      -				// If using innerHTML throws an exception, use the fallback method
      -				} catch ( e ) {}
      -			}
      -
      -			if ( elem ) {
      -				this.empty().append( value );
      -			}
      -		}, null, value, arguments.length );
      -	},
      -
      -	replaceWith: function() {
      -		var ignored = [];
      -
      -		// Make the changes, replacing each non-ignored context element with the new content
      -		return domManip( this, arguments, function( elem ) {
      -			var parent = this.parentNode;
      -
      -			if ( jQuery.inArray( this, ignored ) < 0 ) {
      -				jQuery.cleanData( getAll( this ) );
      -				if ( parent ) {
      -					parent.replaceChild( elem, this );
      -				}
      -			}
      -
      -		// Force callback invocation
      -		}, ignored );
      -	}
      -} );
      -
      -jQuery.each( {
      -	appendTo: "append",
      -	prependTo: "prepend",
      -	insertBefore: "before",
      -	insertAfter: "after",
      -	replaceAll: "replaceWith"
      -}, function( name, original ) {
      -	jQuery.fn[ name ] = function( selector ) {
      -		var elems,
      -			ret = [],
      -			insert = jQuery( selector ),
      -			last = insert.length - 1,
      -			i = 0;
      -
      -		for ( ; i <= last; i++ ) {
      -			elems = i === last ? this : this.clone( true );
      -			jQuery( insert[ i ] )[ original ]( elems );
      -
      -			// Support: Android <=4.0 only, PhantomJS 1 only
      -			// .get() because push.apply(_, arraylike) throws on ancient WebKit
      -			push.apply( ret, elems.get() );
      -		}
      -
      -		return this.pushStack( ret );
      -	};
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/manipulation/_evalUrl.js b/bower_components/jquery/src/manipulation/_evalUrl.js
      deleted file mode 100644
      index f9ec7027c2..0000000000
      --- a/bower_components/jquery/src/manipulation/_evalUrl.js
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -define( [
      -	"../ajax"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -jQuery._evalUrl = function( url ) {
      -	return jQuery.ajax( {
      -		url: url,
      -
      -		// Make this explicit, since user can override this through ajaxSetup (#11264)
      -		type: "GET",
      -		dataType: "script",
      -		cache: true,
      -		async: false,
      -		global: false,
      -		"throws": true
      -	} );
      -};
      -
      -return jQuery._evalUrl;
      -
      -} );
      diff --git a/bower_components/jquery/src/manipulation/buildFragment.js b/bower_components/jquery/src/manipulation/buildFragment.js
      deleted file mode 100644
      index bcb508531b..0000000000
      --- a/bower_components/jquery/src/manipulation/buildFragment.js
      +++ /dev/null
      @@ -1,104 +0,0 @@
      -define( [
      -	"../core",
      -	"./var/rtagName",
      -	"./var/rscriptType",
      -	"./wrapMap",
      -	"./getAll",
      -	"./setGlobalEval"
      -], function( jQuery, rtagName, rscriptType, wrapMap, getAll, setGlobalEval ) {
      -
      -"use strict";
      -
      -var rhtml = /<|&#?\w+;/;
      -
      -function buildFragment( elems, context, scripts, selection, ignored ) {
      -	var elem, tmp, tag, wrap, contains, j,
      -		fragment = context.createDocumentFragment(),
      -		nodes = [],
      -		i = 0,
      -		l = elems.length;
      -
      -	for ( ; i < l; i++ ) {
      -		elem = elems[ i ];
      -
      -		if ( elem || elem === 0 ) {
      -
      -			// Add nodes directly
      -			if ( jQuery.type( elem ) === "object" ) {
      -
      -				// Support: Android <=4.0 only, PhantomJS 1 only
      -				// push.apply(_, arraylike) throws on ancient WebKit
      -				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
      -
      -			// Convert non-html into a text node
      -			} else if ( !rhtml.test( elem ) ) {
      -				nodes.push( context.createTextNode( elem ) );
      -
      -			// Convert html into DOM nodes
      -			} else {
      -				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
      -
      -				// Deserialize a standard representation
      -				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
      -				wrap = wrapMap[ tag ] || wrapMap._default;
      -				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
      -
      -				// Descend through wrappers to the right content
      -				j = wrap[ 0 ];
      -				while ( j-- ) {
      -					tmp = tmp.lastChild;
      -				}
      -
      -				// Support: Android <=4.0 only, PhantomJS 1 only
      -				// push.apply(_, arraylike) throws on ancient WebKit
      -				jQuery.merge( nodes, tmp.childNodes );
      -
      -				// Remember the top-level container
      -				tmp = fragment.firstChild;
      -
      -				// Ensure the created nodes are orphaned (#12392)
      -				tmp.textContent = "";
      -			}
      -		}
      -	}
      -
      -	// Remove wrapper from fragment
      -	fragment.textContent = "";
      -
      -	i = 0;
      -	while ( ( elem = nodes[ i++ ] ) ) {
      -
      -		// Skip elements already in the context collection (trac-4087)
      -		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
      -			if ( ignored ) {
      -				ignored.push( elem );
      -			}
      -			continue;
      -		}
      -
      -		contains = jQuery.contains( elem.ownerDocument, elem );
      -
      -		// Append to fragment
      -		tmp = getAll( fragment.appendChild( elem ), "script" );
      -
      -		// Preserve script evaluation history
      -		if ( contains ) {
      -			setGlobalEval( tmp );
      -		}
      -
      -		// Capture executables
      -		if ( scripts ) {
      -			j = 0;
      -			while ( ( elem = tmp[ j++ ] ) ) {
      -				if ( rscriptType.test( elem.type || "" ) ) {
      -					scripts.push( elem );
      -				}
      -			}
      -		}
      -	}
      -
      -	return fragment;
      -}
      -
      -return buildFragment;
      -} );
      diff --git a/bower_components/jquery/src/manipulation/getAll.js b/bower_components/jquery/src/manipulation/getAll.js
      deleted file mode 100644
      index f68e3219e0..0000000000
      --- a/bower_components/jquery/src/manipulation/getAll.js
      +++ /dev/null
      @@ -1,31 +0,0 @@
      -define( [
      -	"../core"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -function getAll( context, tag ) {
      -
      -	// Support: IE <=9 - 11 only
      -	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
      -	var ret;
      -
      -	if ( typeof context.getElementsByTagName !== "undefined" ) {
      -		ret = context.getElementsByTagName( tag || "*" );
      -
      -	} else if ( typeof context.querySelectorAll !== "undefined" ) {
      -		ret = context.querySelectorAll( tag || "*" );
      -
      -	} else {
      -		ret = [];
      -	}
      -
      -	if ( tag === undefined || tag && jQuery.nodeName( context, tag ) ) {
      -		return jQuery.merge( [ context ], ret );
      -	}
      -
      -	return ret;
      -}
      -
      -return getAll;
      -} );
      diff --git a/bower_components/jquery/src/manipulation/setGlobalEval.js b/bower_components/jquery/src/manipulation/setGlobalEval.js
      deleted file mode 100644
      index cf95240a48..0000000000
      --- a/bower_components/jquery/src/manipulation/setGlobalEval.js
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -define( [
      -	"../data/var/dataPriv"
      -], function( dataPriv ) {
      -
      -"use strict";
      -
      -// Mark scripts as having already been evaluated
      -function setGlobalEval( elems, refElements ) {
      -	var i = 0,
      -		l = elems.length;
      -
      -	for ( ; i < l; i++ ) {
      -		dataPriv.set(
      -			elems[ i ],
      -			"globalEval",
      -			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
      -		);
      -	}
      -}
      -
      -return setGlobalEval;
      -} );
      diff --git a/bower_components/jquery/src/manipulation/support.js b/bower_components/jquery/src/manipulation/support.js
      deleted file mode 100644
      index 4a5d9af4cc..0000000000
      --- a/bower_components/jquery/src/manipulation/support.js
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -define( [
      -	"../var/document",
      -	"../var/support"
      -], function( document, support ) {
      -
      -"use strict";
      -
      -( function() {
      -	var fragment = document.createDocumentFragment(),
      -		div = fragment.appendChild( document.createElement( "div" ) ),
      -		input = document.createElement( "input" );
      -
      -	// Support: Android 4.0 - 4.3 only
      -	// Check state lost if the name is set (#11217)
      -	// Support: Windows Web Apps (WWA)
      -	// `name` and `type` must use .setAttribute for WWA (#14901)
      -	input.setAttribute( "type", "radio" );
      -	input.setAttribute( "checked", "checked" );
      -	input.setAttribute( "name", "t" );
      -
      -	div.appendChild( input );
      -
      -	// Support: Android <=4.1 only
      -	// Older WebKit doesn't clone checked state correctly in fragments
      -	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
      -
      -	// Support: IE <=11 only
      -	// Make sure textarea (and checkbox) defaultValue is properly cloned
      -	div.innerHTML = "<textarea>x</textarea>";
      -	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
      -} )();
      -
      -return support;
      -
      -} );
      diff --git a/bower_components/jquery/src/manipulation/var/rcheckableType.js b/bower_components/jquery/src/manipulation/var/rcheckableType.js
      deleted file mode 100644
      index 25bbcb4188..0000000000
      --- a/bower_components/jquery/src/manipulation/var/rcheckableType.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return ( /^(?:checkbox|radio)$/i );
      -} );
      diff --git a/bower_components/jquery/src/manipulation/var/rscriptType.js b/bower_components/jquery/src/manipulation/var/rscriptType.js
      deleted file mode 100644
      index 7237c8a313..0000000000
      --- a/bower_components/jquery/src/manipulation/var/rscriptType.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return ( /^$|\/(?:java|ecma)script/i );
      -} );
      diff --git a/bower_components/jquery/src/manipulation/var/rtagName.js b/bower_components/jquery/src/manipulation/var/rtagName.js
      deleted file mode 100644
      index d565dd3de6..0000000000
      --- a/bower_components/jquery/src/manipulation/var/rtagName.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
      -} );
      diff --git a/bower_components/jquery/src/manipulation/wrapMap.js b/bower_components/jquery/src/manipulation/wrapMap.js
      deleted file mode 100644
      index 1f446f7d73..0000000000
      --- a/bower_components/jquery/src/manipulation/wrapMap.js
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -define( function() {
      -
      -"use strict";
      -
      -// We have to close these tags to support XHTML (#13200)
      -var wrapMap = {
      -
      -	// Support: IE <=9 only
      -	option: [ 1, "<select multiple='multiple'>", "</select>" ],
      -
      -	// XHTML parsers do not magically insert elements in the
      -	// same way that tag soup parsers do. So we cannot shorten
      -	// this by omitting <tbody> or other required elements.
      -	thead: [ 1, "<table>", "</table>" ],
      -	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
      -	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
      -	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
      -
      -	_default: [ 0, "", "" ]
      -};
      -
      -// Support: IE <=9 only
      -wrapMap.optgroup = wrapMap.option;
      -
      -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
      -wrapMap.th = wrapMap.td;
      -
      -return wrapMap;
      -} );
      diff --git a/bower_components/jquery/src/offset.js b/bower_components/jquery/src/offset.js
      deleted file mode 100644
      index 54442eb45c..0000000000
      --- a/bower_components/jquery/src/offset.js
      +++ /dev/null
      @@ -1,232 +0,0 @@
      -define( [
      -	"./core",
      -	"./core/access",
      -	"./var/document",
      -	"./var/documentElement",
      -	"./css/var/rnumnonpx",
      -	"./css/curCSS",
      -	"./css/addGetHookIf",
      -	"./css/support",
      -
      -	"./core/init",
      -	"./css",
      -	"./selector" // contains
      -], function( jQuery, access, document, documentElement, rnumnonpx, curCSS, addGetHookIf, support ) {
      -
      -"use strict";
      -
      -/**
      - * Gets a window from an element
      - */
      -function getWindow( elem ) {
      -	return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
      -}
      -
      -jQuery.offset = {
      -	setOffset: function( elem, options, i ) {
      -		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
      -			position = jQuery.css( elem, "position" ),
      -			curElem = jQuery( elem ),
      -			props = {};
      -
      -		// Set position first, in-case top/left are set even on static elem
      -		if ( position === "static" ) {
      -			elem.style.position = "relative";
      -		}
      -
      -		curOffset = curElem.offset();
      -		curCSSTop = jQuery.css( elem, "top" );
      -		curCSSLeft = jQuery.css( elem, "left" );
      -		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
      -			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
      -
      -		// Need to be able to calculate position if either
      -		// top or left is auto and position is either absolute or fixed
      -		if ( calculatePosition ) {
      -			curPosition = curElem.position();
      -			curTop = curPosition.top;
      -			curLeft = curPosition.left;
      -
      -		} else {
      -			curTop = parseFloat( curCSSTop ) || 0;
      -			curLeft = parseFloat( curCSSLeft ) || 0;
      -		}
      -
      -		if ( jQuery.isFunction( options ) ) {
      -
      -			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
      -			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
      -		}
      -
      -		if ( options.top != null ) {
      -			props.top = ( options.top - curOffset.top ) + curTop;
      -		}
      -		if ( options.left != null ) {
      -			props.left = ( options.left - curOffset.left ) + curLeft;
      -		}
      -
      -		if ( "using" in options ) {
      -			options.using.call( elem, props );
      -
      -		} else {
      -			curElem.css( props );
      -		}
      -	}
      -};
      -
      -jQuery.fn.extend( {
      -	offset: function( options ) {
      -
      -		// Preserve chaining for setter
      -		if ( arguments.length ) {
      -			return options === undefined ?
      -				this :
      -				this.each( function( i ) {
      -					jQuery.offset.setOffset( this, options, i );
      -				} );
      -		}
      -
      -		var docElem, win, rect, doc,
      -			elem = this[ 0 ];
      -
      -		if ( !elem ) {
      -			return;
      -		}
      -
      -		// Support: IE <=11 only
      -		// Running getBoundingClientRect on a
      -		// disconnected node in IE throws an error
      -		if ( !elem.getClientRects().length ) {
      -			return { top: 0, left: 0 };
      -		}
      -
      -		rect = elem.getBoundingClientRect();
      -
      -		// Make sure element is not hidden (display: none)
      -		if ( rect.width || rect.height ) {
      -			doc = elem.ownerDocument;
      -			win = getWindow( doc );
      -			docElem = doc.documentElement;
      -
      -			return {
      -				top: rect.top + win.pageYOffset - docElem.clientTop,
      -				left: rect.left + win.pageXOffset - docElem.clientLeft
      -			};
      -		}
      -
      -		// Return zeros for disconnected and hidden elements (gh-2310)
      -		return rect;
      -	},
      -
      -	position: function() {
      -		if ( !this[ 0 ] ) {
      -			return;
      -		}
      -
      -		var offsetParent, offset,
      -			elem = this[ 0 ],
      -			parentOffset = { top: 0, left: 0 };
      -
      -		// Fixed elements are offset from window (parentOffset = {top:0, left: 0},
      -		// because it is its only offset parent
      -		if ( jQuery.css( elem, "position" ) === "fixed" ) {
      -
      -			// Assume getBoundingClientRect is there when computed position is fixed
      -			offset = elem.getBoundingClientRect();
      -
      -		} else {
      -
      -			// Get *real* offsetParent
      -			offsetParent = this.offsetParent();
      -
      -			// Get correct offsets
      -			offset = this.offset();
      -			if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
      -				parentOffset = offsetParent.offset();
      -			}
      -
      -			// Add offsetParent borders
      -			parentOffset = {
      -				top: parentOffset.top + jQuery.css( offsetParent[ 0 ], "borderTopWidth", true ),
      -				left: parentOffset.left + jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true )
      -			};
      -		}
      -
      -		// Subtract parent offsets and element margins
      -		return {
      -			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
      -			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
      -		};
      -	},
      -
      -	// This method will return documentElement in the following cases:
      -	// 1) For the element inside the iframe without offsetParent, this method will return
      -	//    documentElement of the parent window
      -	// 2) For the hidden or detached element
      -	// 3) For body or html element, i.e. in case of the html node - it will return itself
      -	//
      -	// but those exceptions were never presented as a real life use-cases
      -	// and might be considered as more preferable results.
      -	//
      -	// This logic, however, is not guaranteed and can change at any point in the future
      -	offsetParent: function() {
      -		return this.map( function() {
      -			var offsetParent = this.offsetParent;
      -
      -			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
      -				offsetParent = offsetParent.offsetParent;
      -			}
      -
      -			return offsetParent || documentElement;
      -		} );
      -	}
      -} );
      -
      -// Create scrollLeft and scrollTop methods
      -jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
      -	var top = "pageYOffset" === prop;
      -
      -	jQuery.fn[ method ] = function( val ) {
      -		return access( this, function( elem, method, val ) {
      -			var win = getWindow( elem );
      -
      -			if ( val === undefined ) {
      -				return win ? win[ prop ] : elem[ method ];
      -			}
      -
      -			if ( win ) {
      -				win.scrollTo(
      -					!top ? val : win.pageXOffset,
      -					top ? val : win.pageYOffset
      -				);
      -
      -			} else {
      -				elem[ method ] = val;
      -			}
      -		}, method, val, arguments.length );
      -	};
      -} );
      -
      -// Support: Safari <=7 - 9.1, Chrome <=37 - 49
      -// Add the top/left cssHooks using jQuery.fn.position
      -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
      -// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
      -// getComputedStyle returns percent when specified for top/left/bottom/right;
      -// rather than make the css module depend on the offset module, just check for it here
      -jQuery.each( [ "top", "left" ], function( i, prop ) {
      -	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
      -		function( elem, computed ) {
      -			if ( computed ) {
      -				computed = curCSS( elem, prop );
      -
      -				// If curCSS returns percentage, fallback to offset
      -				return rnumnonpx.test( computed ) ?
      -					jQuery( elem ).position()[ prop ] + "px" :
      -					computed;
      -			}
      -		}
      -	);
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/queue.js b/bower_components/jquery/src/queue.js
      deleted file mode 100644
      index 3a626a2fc3..0000000000
      --- a/bower_components/jquery/src/queue.js
      +++ /dev/null
      @@ -1,145 +0,0 @@
      -define( [
      -	"./core",
      -	"./data/var/dataPriv",
      -	"./deferred",
      -	"./callbacks"
      -], function( jQuery, dataPriv ) {
      -
      -"use strict";
      -
      -jQuery.extend( {
      -	queue: function( elem, type, data ) {
      -		var queue;
      -
      -		if ( elem ) {
      -			type = ( type || "fx" ) + "queue";
      -			queue = dataPriv.get( elem, type );
      -
      -			// Speed up dequeue by getting out quickly if this is just a lookup
      -			if ( data ) {
      -				if ( !queue || jQuery.isArray( data ) ) {
      -					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
      -				} else {
      -					queue.push( data );
      -				}
      -			}
      -			return queue || [];
      -		}
      -	},
      -
      -	dequeue: function( elem, type ) {
      -		type = type || "fx";
      -
      -		var queue = jQuery.queue( elem, type ),
      -			startLength = queue.length,
      -			fn = queue.shift(),
      -			hooks = jQuery._queueHooks( elem, type ),
      -			next = function() {
      -				jQuery.dequeue( elem, type );
      -			};
      -
      -		// If the fx queue is dequeued, always remove the progress sentinel
      -		if ( fn === "inprogress" ) {
      -			fn = queue.shift();
      -			startLength--;
      -		}
      -
      -		if ( fn ) {
      -
      -			// Add a progress sentinel to prevent the fx queue from being
      -			// automatically dequeued
      -			if ( type === "fx" ) {
      -				queue.unshift( "inprogress" );
      -			}
      -
      -			// Clear up the last queue stop function
      -			delete hooks.stop;
      -			fn.call( elem, next, hooks );
      -		}
      -
      -		if ( !startLength && hooks ) {
      -			hooks.empty.fire();
      -		}
      -	},
      -
      -	// Not public - generate a queueHooks object, or return the current one
      -	_queueHooks: function( elem, type ) {
      -		var key = type + "queueHooks";
      -		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
      -			empty: jQuery.Callbacks( "once memory" ).add( function() {
      -				dataPriv.remove( elem, [ type + "queue", key ] );
      -			} )
      -		} );
      -	}
      -} );
      -
      -jQuery.fn.extend( {
      -	queue: function( type, data ) {
      -		var setter = 2;
      -
      -		if ( typeof type !== "string" ) {
      -			data = type;
      -			type = "fx";
      -			setter--;
      -		}
      -
      -		if ( arguments.length < setter ) {
      -			return jQuery.queue( this[ 0 ], type );
      -		}
      -
      -		return data === undefined ?
      -			this :
      -			this.each( function() {
      -				var queue = jQuery.queue( this, type, data );
      -
      -				// Ensure a hooks for this queue
      -				jQuery._queueHooks( this, type );
      -
      -				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
      -					jQuery.dequeue( this, type );
      -				}
      -			} );
      -	},
      -	dequeue: function( type ) {
      -		return this.each( function() {
      -			jQuery.dequeue( this, type );
      -		} );
      -	},
      -	clearQueue: function( type ) {
      -		return this.queue( type || "fx", [] );
      -	},
      -
      -	// Get a promise resolved when queues of a certain type
      -	// are emptied (fx is the type by default)
      -	promise: function( type, obj ) {
      -		var tmp,
      -			count = 1,
      -			defer = jQuery.Deferred(),
      -			elements = this,
      -			i = this.length,
      -			resolve = function() {
      -				if ( !( --count ) ) {
      -					defer.resolveWith( elements, [ elements ] );
      -				}
      -			};
      -
      -		if ( typeof type !== "string" ) {
      -			obj = type;
      -			type = undefined;
      -		}
      -		type = type || "fx";
      -
      -		while ( i-- ) {
      -			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
      -			if ( tmp && tmp.empty ) {
      -				count++;
      -				tmp.empty.add( resolve );
      -			}
      -		}
      -		resolve();
      -		return defer.promise( obj );
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/queue/delay.js b/bower_components/jquery/src/queue/delay.js
      deleted file mode 100644
      index d471eedc55..0000000000
      --- a/bower_components/jquery/src/queue/delay.js
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -define( [
      -	"../core",
      -	"../queue",
      -	"../effects" // Delay is optional because of this dependency
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -// Based off of the plugin by Clint Helfers, with permission.
      -// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
      -jQuery.fn.delay = function( time, type ) {
      -	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
      -	type = type || "fx";
      -
      -	return this.queue( type, function( next, hooks ) {
      -		var timeout = window.setTimeout( next, time );
      -		hooks.stop = function() {
      -			window.clearTimeout( timeout );
      -		};
      -	} );
      -};
      -
      -return jQuery.fn.delay;
      -} );
      diff --git a/bower_components/jquery/src/selector-native.js b/bower_components/jquery/src/selector-native.js
      deleted file mode 100644
      index da837a0046..0000000000
      --- a/bower_components/jquery/src/selector-native.js
      +++ /dev/null
      @@ -1,237 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/document",
      -	"./var/documentElement",
      -	"./var/hasOwn",
      -	"./var/indexOf"
      -], function( jQuery, document, documentElement, hasOwn, indexOf ) {
      -
      -"use strict";
      -
      -/*
      - * Optional (non-Sizzle) selector module for custom builds.
      - *
      - * Note that this DOES NOT SUPPORT many documented jQuery
      - * features in exchange for its smaller size:
      - *
      - * Attribute not equal selector
      - * Positional selectors (:first; :eq(n); :odd; etc.)
      - * Type selectors (:input; :checkbox; :button; etc.)
      - * State-based selectors (:animated; :visible; :hidden; etc.)
      - * :has(selector)
      - * :not(complex selector)
      - * custom selectors via Sizzle extensions
      - * Leading combinators (e.g., $collection.find("> *"))
      - * Reliable functionality on XML fragments
      - * Requiring all parts of a selector to match elements under context
      - *   (e.g., $div.find("div > *") now matches children of $div)
      - * Matching against non-elements
      - * Reliable sorting of disconnected nodes
      - * querySelectorAll bug fixes (e.g., unreliable :focus on WebKit)
      - *
      - * If any of these are unacceptable tradeoffs, either use Sizzle or
      - * customize this stub for the project's specific needs.
      - */
      -
      -var hasDuplicate, sortInput,
      -	sortStable = jQuery.expando.split( "" ).sort( sortOrder ).join( "" ) === jQuery.expando,
      -	matches = documentElement.matches ||
      -		documentElement.webkitMatchesSelector ||
      -		documentElement.mozMatchesSelector ||
      -		documentElement.oMatchesSelector ||
      -		documentElement.msMatchesSelector,
      -
      -	// CSS string/identifier serialization
      -	// https://drafts.csswg.org/cssom/#common-serializing-idioms
      -	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,
      -	fcssescape = function( ch, asCodePoint ) {
      -		if ( asCodePoint ) {
      -
      -			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
      -			if ( ch === "\0" ) {
      -				return "\uFFFD";
      -			}
      -
      -			// Control characters and (dependent upon position) numbers get escaped as code points
      -			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
      -		}
      -
      -		// Other potentially-special ASCII characters get backslash-escaped
      -		return "\\" + ch;
      -	};
      -
      -function sortOrder( a, b ) {
      -
      -	// Flag for duplicate removal
      -	if ( a === b ) {
      -		hasDuplicate = true;
      -		return 0;
      -	}
      -
      -	// Sort on method existence if only one input has compareDocumentPosition
      -	var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
      -	if ( compare ) {
      -		return compare;
      -	}
      -
      -	// Calculate position if both inputs belong to the same document
      -	compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
      -		a.compareDocumentPosition( b ) :
      -
      -		// Otherwise we know they are disconnected
      -		1;
      -
      -	// Disconnected nodes
      -	if ( compare & 1 ) {
      -
      -		// Choose the first element that is related to our preferred document
      -		if ( a === document || a.ownerDocument === document &&
      -			jQuery.contains( document, a ) ) {
      -			return -1;
      -		}
      -		if ( b === document || b.ownerDocument === document &&
      -			jQuery.contains( document, b ) ) {
      -			return 1;
      -		}
      -
      -		// Maintain original order
      -		return sortInput ?
      -			( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
      -			0;
      -	}
      -
      -	return compare & 4 ? -1 : 1;
      -}
      -
      -function uniqueSort( results ) {
      -	var elem,
      -		duplicates = [],
      -		j = 0,
      -		i = 0;
      -
      -	hasDuplicate = false;
      -	sortInput = !sortStable && results.slice( 0 );
      -	results.sort( sortOrder );
      -
      -	if ( hasDuplicate ) {
      -		while ( ( elem = results[ i++ ] ) ) {
      -			if ( elem === results[ i ] ) {
      -				j = duplicates.push( i );
      -			}
      -		}
      -		while ( j-- ) {
      -			results.splice( duplicates[ j ], 1 );
      -		}
      -	}
      -
      -	// Clear input after sorting to release objects
      -	// See https://github.com/jquery/sizzle/pull/225
      -	sortInput = null;
      -
      -	return results;
      -}
      -
      -function escape( sel ) {
      -	return ( sel + "" ).replace( rcssescape, fcssescape );
      -}
      -
      -jQuery.extend( {
      -	uniqueSort: uniqueSort,
      -	unique: uniqueSort,
      -	escapeSelector: escape,
      -	find: function( selector, context, results, seed ) {
      -		var elem, nodeType,
      -			i = 0;
      -
      -		results = results || [];
      -		context = context || document;
      -
      -		// Same basic safeguard as Sizzle
      -		if ( !selector || typeof selector !== "string" ) {
      -			return results;
      -		}
      -
      -		// Early return if context is not an element or document
      -		if ( ( nodeType = context.nodeType ) !== 1 && nodeType !== 9 ) {
      -			return [];
      -		}
      -
      -		if ( seed ) {
      -			while ( ( elem = seed[ i++ ] ) ) {
      -				if ( jQuery.find.matchesSelector( elem, selector ) ) {
      -					results.push( elem );
      -				}
      -			}
      -		} else {
      -			jQuery.merge( results, context.querySelectorAll( selector ) );
      -		}
      -
      -		return results;
      -	},
      -	text: function( elem ) {
      -		var node,
      -			ret = "",
      -			i = 0,
      -			nodeType = elem.nodeType;
      -
      -		if ( !nodeType ) {
      -
      -			// If no nodeType, this is expected to be an array
      -			while ( ( node = elem[ i++ ] ) ) {
      -
      -				// Do not traverse comment nodes
      -				ret += jQuery.text( node );
      -			}
      -		} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -
      -			// Use textContent for elements
      -			return elem.textContent;
      -		} else if ( nodeType === 3 || nodeType === 4 ) {
      -			return elem.nodeValue;
      -		}
      -
      -		// Do not include comment or processing instruction nodes
      -
      -		return ret;
      -	},
      -	contains: function( a, b ) {
      -		var adown = a.nodeType === 9 ? a.documentElement : a,
      -			bup = b && b.parentNode;
      -		return a === bup || !!( bup && bup.nodeType === 1 && adown.contains( bup ) );
      -	},
      -	isXMLDoc: function( elem ) {
      -
      -		// documentElement is verified for cases where it doesn't yet exist
      -		// (such as loading iframes in IE - #4833)
      -		var documentElement = elem && ( elem.ownerDocument || elem ).documentElement;
      -		return documentElement ? documentElement.nodeName !== "HTML" : false;
      -	},
      -	expr: {
      -		attrHandle: {},
      -		match: {
      -			bool: new RegExp( "^(?:checked|selected|async|autofocus|autoplay|controls|defer" +
      -				"|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped)$", "i" ),
      -			needsContext: /^[\x20\t\r\n\f]*[>+~]/
      -		}
      -	}
      -} );
      -
      -jQuery.extend( jQuery.find, {
      -	matches: function( expr, elements ) {
      -		return jQuery.find( expr, null, null, elements );
      -	},
      -	matchesSelector: function( elem, expr ) {
      -		return matches.call( elem, expr );
      -	},
      -	attr: function( elem, name ) {
      -		var fn = jQuery.expr.attrHandle[ name.toLowerCase() ],
      -
      -			// Don't get fooled by Object.prototype properties (jQuery #13807)
      -			value = fn && hasOwn.call( jQuery.expr.attrHandle, name.toLowerCase() ) ?
      -				fn( elem, name, jQuery.isXMLDoc( elem ) ) :
      -				undefined;
      -		return value !== undefined ? value : elem.getAttribute( name );
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/selector-sizzle.js b/bower_components/jquery/src/selector-sizzle.js
      deleted file mode 100644
      index ff7bc70ee1..0000000000
      --- a/bower_components/jquery/src/selector-sizzle.js
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -define( [
      -	"./core",
      -	"../external/sizzle/dist/sizzle"
      -], function( jQuery, Sizzle ) {
      -
      -"use strict";
      -
      -jQuery.find = Sizzle;
      -jQuery.expr = Sizzle.selectors;
      -
      -// Deprecated
      -jQuery.expr[ ":" ] = jQuery.expr.pseudos;
      -jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
      -jQuery.text = Sizzle.getText;
      -jQuery.isXMLDoc = Sizzle.isXML;
      -jQuery.contains = Sizzle.contains;
      -jQuery.escapeSelector = Sizzle.escape;
      -
      -} );
      diff --git a/bower_components/jquery/src/selector.js b/bower_components/jquery/src/selector.js
      deleted file mode 100644
      index 2e0c17e153..0000000000
      --- a/bower_components/jquery/src/selector.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -define( [ "./selector-sizzle" ], function() {
      -	"use strict";
      -} );
      diff --git a/bower_components/jquery/src/serialize.js b/bower_components/jquery/src/serialize.js
      deleted file mode 100644
      index 35dcf04f9b..0000000000
      --- a/bower_components/jquery/src/serialize.js
      +++ /dev/null
      @@ -1,130 +0,0 @@
      -define( [
      -	"./core",
      -	"./manipulation/var/rcheckableType",
      -	"./core/init",
      -	"./traversing", // filter
      -	"./attributes/prop"
      -], function( jQuery, rcheckableType ) {
      -
      -"use strict";
      -
      -var
      -	rbracket = /\[\]$/,
      -	rCRLF = /\r?\n/g,
      -	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
      -	rsubmittable = /^(?:input|select|textarea|keygen)/i;
      -
      -function buildParams( prefix, obj, traditional, add ) {
      -	var name;
      -
      -	if ( jQuery.isArray( obj ) ) {
      -
      -		// Serialize array item.
      -		jQuery.each( obj, function( i, v ) {
      -			if ( traditional || rbracket.test( prefix ) ) {
      -
      -				// Treat each array item as a scalar.
      -				add( prefix, v );
      -
      -			} else {
      -
      -				// Item is non-scalar (array or object), encode its numeric index.
      -				buildParams(
      -					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
      -					v,
      -					traditional,
      -					add
      -				);
      -			}
      -		} );
      -
      -	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
      -
      -		// Serialize object item.
      -		for ( name in obj ) {
      -			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
      -		}
      -
      -	} else {
      -
      -		// Serialize scalar item.
      -		add( prefix, obj );
      -	}
      -}
      -
      -// Serialize an array of form elements or a set of
      -// key/values into a query string
      -jQuery.param = function( a, traditional ) {
      -	var prefix,
      -		s = [],
      -		add = function( key, valueOrFunction ) {
      -
      -			// If value is a function, invoke it and use its return value
      -			var value = jQuery.isFunction( valueOrFunction ) ?
      -				valueOrFunction() :
      -				valueOrFunction;
      -
      -			s[ s.length ] = encodeURIComponent( key ) + "=" +
      -				encodeURIComponent( value == null ? "" : value );
      -		};
      -
      -	// If an array was passed in, assume that it is an array of form elements.
      -	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
      -
      -		// Serialize the form elements
      -		jQuery.each( a, function() {
      -			add( this.name, this.value );
      -		} );
      -
      -	} else {
      -
      -		// If traditional, encode the "old" way (the way 1.3.2 or older
      -		// did it), otherwise encode params recursively.
      -		for ( prefix in a ) {
      -			buildParams( prefix, a[ prefix ], traditional, add );
      -		}
      -	}
      -
      -	// Return the resulting serialization
      -	return s.join( "&" );
      -};
      -
      -jQuery.fn.extend( {
      -	serialize: function() {
      -		return jQuery.param( this.serializeArray() );
      -	},
      -	serializeArray: function() {
      -		return this.map( function() {
      -
      -			// Can add propHook for "elements" to filter or add form elements
      -			var elements = jQuery.prop( this, "elements" );
      -			return elements ? jQuery.makeArray( elements ) : this;
      -		} )
      -		.filter( function() {
      -			var type = this.type;
      -
      -			// Use .is( ":disabled" ) so that fieldset[disabled] works
      -			return this.name && !jQuery( this ).is( ":disabled" ) &&
      -				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
      -				( this.checked || !rcheckableType.test( type ) );
      -		} )
      -		.map( function( i, elem ) {
      -			var val = jQuery( this ).val();
      -
      -			if ( val == null ) {
      -				return null;
      -			}
      -
      -			if ( jQuery.isArray( val ) ) {
      -				return jQuery.map( val, function( val ) {
      -					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -				} );
      -			}
      -
      -			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -		} ).get();
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/traversing.js b/bower_components/jquery/src/traversing.js
      deleted file mode 100644
      index 50cd2d6ee7..0000000000
      --- a/bower_components/jquery/src/traversing.js
      +++ /dev/null
      @@ -1,178 +0,0 @@
      -define( [
      -	"./core",
      -	"./var/indexOf",
      -	"./traversing/var/dir",
      -	"./traversing/var/siblings",
      -	"./traversing/var/rneedsContext",
      -	"./core/init",
      -	"./traversing/findFilter",
      -	"./selector"
      -], function( jQuery, indexOf, dir, siblings, rneedsContext ) {
      -
      -"use strict";
      -
      -var rparentsprev = /^(?:parents|prev(?:Until|All))/,
      -
      -	// Methods guaranteed to produce a unique set when starting from a unique set
      -	guaranteedUnique = {
      -		children: true,
      -		contents: true,
      -		next: true,
      -		prev: true
      -	};
      -
      -jQuery.fn.extend( {
      -	has: function( target ) {
      -		var targets = jQuery( target, this ),
      -			l = targets.length;
      -
      -		return this.filter( function() {
      -			var i = 0;
      -			for ( ; i < l; i++ ) {
      -				if ( jQuery.contains( this, targets[ i ] ) ) {
      -					return true;
      -				}
      -			}
      -		} );
      -	},
      -
      -	closest: function( selectors, context ) {
      -		var cur,
      -			i = 0,
      -			l = this.length,
      -			matched = [],
      -			targets = typeof selectors !== "string" && jQuery( selectors );
      -
      -		// Positional selectors never match, since there's no _selection_ context
      -		if ( !rneedsContext.test( selectors ) ) {
      -			for ( ; i < l; i++ ) {
      -				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
      -
      -					// Always skip document fragments
      -					if ( cur.nodeType < 11 && ( targets ?
      -						targets.index( cur ) > -1 :
      -
      -						// Don't pass non-elements to Sizzle
      -						cur.nodeType === 1 &&
      -							jQuery.find.matchesSelector( cur, selectors ) ) ) {
      -
      -						matched.push( cur );
      -						break;
      -					}
      -				}
      -			}
      -		}
      -
      -		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
      -	},
      -
      -	// Determine the position of an element within the set
      -	index: function( elem ) {
      -
      -		// No argument, return index in parent
      -		if ( !elem ) {
      -			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
      -		}
      -
      -		// Index in selector
      -		if ( typeof elem === "string" ) {
      -			return indexOf.call( jQuery( elem ), this[ 0 ] );
      -		}
      -
      -		// Locate the position of the desired element
      -		return indexOf.call( this,
      -
      -			// If it receives a jQuery object, the first element is used
      -			elem.jquery ? elem[ 0 ] : elem
      -		);
      -	},
      -
      -	add: function( selector, context ) {
      -		return this.pushStack(
      -			jQuery.uniqueSort(
      -				jQuery.merge( this.get(), jQuery( selector, context ) )
      -			)
      -		);
      -	},
      -
      -	addBack: function( selector ) {
      -		return this.add( selector == null ?
      -			this.prevObject : this.prevObject.filter( selector )
      -		);
      -	}
      -} );
      -
      -function sibling( cur, dir ) {
      -	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
      -	return cur;
      -}
      -
      -jQuery.each( {
      -	parent: function( elem ) {
      -		var parent = elem.parentNode;
      -		return parent && parent.nodeType !== 11 ? parent : null;
      -	},
      -	parents: function( elem ) {
      -		return dir( elem, "parentNode" );
      -	},
      -	parentsUntil: function( elem, i, until ) {
      -		return dir( elem, "parentNode", until );
      -	},
      -	next: function( elem ) {
      -		return sibling( elem, "nextSibling" );
      -	},
      -	prev: function( elem ) {
      -		return sibling( elem, "previousSibling" );
      -	},
      -	nextAll: function( elem ) {
      -		return dir( elem, "nextSibling" );
      -	},
      -	prevAll: function( elem ) {
      -		return dir( elem, "previousSibling" );
      -	},
      -	nextUntil: function( elem, i, until ) {
      -		return dir( elem, "nextSibling", until );
      -	},
      -	prevUntil: function( elem, i, until ) {
      -		return dir( elem, "previousSibling", until );
      -	},
      -	siblings: function( elem ) {
      -		return siblings( ( elem.parentNode || {} ).firstChild, elem );
      -	},
      -	children: function( elem ) {
      -		return siblings( elem.firstChild );
      -	},
      -	contents: function( elem ) {
      -		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
      -	}
      -}, function( name, fn ) {
      -	jQuery.fn[ name ] = function( until, selector ) {
      -		var matched = jQuery.map( this, fn, until );
      -
      -		if ( name.slice( -5 ) !== "Until" ) {
      -			selector = until;
      -		}
      -
      -		if ( selector && typeof selector === "string" ) {
      -			matched = jQuery.filter( selector, matched );
      -		}
      -
      -		if ( this.length > 1 ) {
      -
      -			// Remove duplicates
      -			if ( !guaranteedUnique[ name ] ) {
      -				jQuery.uniqueSort( matched );
      -			}
      -
      -			// Reverse order for parents* and prev-derivatives
      -			if ( rparentsprev.test( name ) ) {
      -				matched.reverse();
      -			}
      -		}
      -
      -		return this.pushStack( matched );
      -	};
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/jquery/src/traversing/findFilter.js b/bower_components/jquery/src/traversing/findFilter.js
      deleted file mode 100644
      index 3bd036a18a..0000000000
      --- a/bower_components/jquery/src/traversing/findFilter.js
      +++ /dev/null
      @@ -1,106 +0,0 @@
      -define( [
      -	"../core",
      -	"../var/indexOf",
      -	"./var/rneedsContext",
      -	"../selector"
      -], function( jQuery, indexOf, rneedsContext ) {
      -
      -"use strict";
      -
      -var risSimple = /^.[^:#\[\.,]*$/;
      -
      -// Implement the identical functionality for filter and not
      -function winnow( elements, qualifier, not ) {
      -	if ( jQuery.isFunction( qualifier ) ) {
      -		return jQuery.grep( elements, function( elem, i ) {
      -			return !!qualifier.call( elem, i, elem ) !== not;
      -		} );
      -	}
      -
      -	// Single element
      -	if ( qualifier.nodeType ) {
      -		return jQuery.grep( elements, function( elem ) {
      -			return ( elem === qualifier ) !== not;
      -		} );
      -	}
      -
      -	// Arraylike of elements (jQuery, arguments, Array)
      -	if ( typeof qualifier !== "string" ) {
      -		return jQuery.grep( elements, function( elem ) {
      -			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
      -		} );
      -	}
      -
      -	// Simple selector that can be filtered directly, removing non-Elements
      -	if ( risSimple.test( qualifier ) ) {
      -		return jQuery.filter( qualifier, elements, not );
      -	}
      -
      -	// Complex selector, compare the two sets, removing non-Elements
      -	qualifier = jQuery.filter( qualifier, elements );
      -	return jQuery.grep( elements, function( elem ) {
      -		return ( indexOf.call( qualifier, elem ) > -1 ) !== not && elem.nodeType === 1;
      -	} );
      -}
      -
      -jQuery.filter = function( expr, elems, not ) {
      -	var elem = elems[ 0 ];
      -
      -	if ( not ) {
      -		expr = ":not(" + expr + ")";
      -	}
      -
      -	if ( elems.length === 1 && elem.nodeType === 1 ) {
      -		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
      -	}
      -
      -	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
      -		return elem.nodeType === 1;
      -	} ) );
      -};
      -
      -jQuery.fn.extend( {
      -	find: function( selector ) {
      -		var i, ret,
      -			len = this.length,
      -			self = this;
      -
      -		if ( typeof selector !== "string" ) {
      -			return this.pushStack( jQuery( selector ).filter( function() {
      -				for ( i = 0; i < len; i++ ) {
      -					if ( jQuery.contains( self[ i ], this ) ) {
      -						return true;
      -					}
      -				}
      -			} ) );
      -		}
      -
      -		ret = this.pushStack( [] );
      -
      -		for ( i = 0; i < len; i++ ) {
      -			jQuery.find( selector, self[ i ], ret );
      -		}
      -
      -		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
      -	},
      -	filter: function( selector ) {
      -		return this.pushStack( winnow( this, selector || [], false ) );
      -	},
      -	not: function( selector ) {
      -		return this.pushStack( winnow( this, selector || [], true ) );
      -	},
      -	is: function( selector ) {
      -		return !!winnow(
      -			this,
      -
      -			// If this is a positional/relative selector, check membership in the returned set
      -			// so $("p:first").is("p:last") won't return true for a doc with two "p".
      -			typeof selector === "string" && rneedsContext.test( selector ) ?
      -				jQuery( selector ) :
      -				selector || [],
      -			false
      -		).length;
      -	}
      -} );
      -
      -} );
      diff --git a/bower_components/jquery/src/traversing/var/dir.js b/bower_components/jquery/src/traversing/var/dir.js
      deleted file mode 100644
      index 366a823d69..0000000000
      --- a/bower_components/jquery/src/traversing/var/dir.js
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -define( [
      -	"../../core"
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -return function( elem, dir, until ) {
      -	var matched = [],
      -		truncate = until !== undefined;
      -
      -	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
      -		if ( elem.nodeType === 1 ) {
      -			if ( truncate && jQuery( elem ).is( until ) ) {
      -				break;
      -			}
      -			matched.push( elem );
      -		}
      -	}
      -	return matched;
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/traversing/var/rneedsContext.js b/bower_components/jquery/src/traversing/var/rneedsContext.js
      deleted file mode 100644
      index d0663cee8a..0000000000
      --- a/bower_components/jquery/src/traversing/var/rneedsContext.js
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -define( [
      -	"../../core",
      -	"../../selector"
      -], function( jQuery ) {
      -	"use strict";
      -
      -	return jQuery.expr.match.needsContext;
      -} );
      diff --git a/bower_components/jquery/src/traversing/var/siblings.js b/bower_components/jquery/src/traversing/var/siblings.js
      deleted file mode 100644
      index 952629d0c8..0000000000
      --- a/bower_components/jquery/src/traversing/var/siblings.js
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -define( function() {
      -
      -"use strict";
      -
      -return function( n, elem ) {
      -	var matched = [];
      -
      -	for ( ; n; n = n.nextSibling ) {
      -		if ( n.nodeType === 1 && n !== elem ) {
      -			matched.push( n );
      -		}
      -	}
      -
      -	return matched;
      -};
      -
      -} );
      diff --git a/bower_components/jquery/src/var/ObjectFunctionString.js b/bower_components/jquery/src/var/ObjectFunctionString.js
      deleted file mode 100644
      index f9e850fd8e..0000000000
      --- a/bower_components/jquery/src/var/ObjectFunctionString.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./fnToString"
      -], function( fnToString ) {
      -	"use strict";
      -
      -	return fnToString.call( Object );
      -} );
      diff --git a/bower_components/jquery/src/var/arr.js b/bower_components/jquery/src/var/arr.js
      deleted file mode 100644
      index 84713d8380..0000000000
      --- a/bower_components/jquery/src/var/arr.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return [];
      -} );
      diff --git a/bower_components/jquery/src/var/class2type.js b/bower_components/jquery/src/var/class2type.js
      deleted file mode 100644
      index 4365d46a26..0000000000
      --- a/bower_components/jquery/src/var/class2type.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	// [[Class]] -> type pairs
      -	return {};
      -} );
      diff --git a/bower_components/jquery/src/var/concat.js b/bower_components/jquery/src/var/concat.js
      deleted file mode 100644
      index e47c19d753..0000000000
      --- a/bower_components/jquery/src/var/concat.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./arr"
      -], function( arr ) {
      -	"use strict";
      -
      -	return arr.concat;
      -} );
      diff --git a/bower_components/jquery/src/var/document.js b/bower_components/jquery/src/var/document.js
      deleted file mode 100644
      index dd3939df4f..0000000000
      --- a/bower_components/jquery/src/var/document.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return window.document;
      -} );
      diff --git a/bower_components/jquery/src/var/documentElement.js b/bower_components/jquery/src/var/documentElement.js
      deleted file mode 100644
      index 0e3f8b48c8..0000000000
      --- a/bower_components/jquery/src/var/documentElement.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./document"
      -], function( document ) {
      -	"use strict";
      -
      -	return document.documentElement;
      -} );
      diff --git a/bower_components/jquery/src/var/fnToString.js b/bower_components/jquery/src/var/fnToString.js
      deleted file mode 100644
      index 18c43ff301..0000000000
      --- a/bower_components/jquery/src/var/fnToString.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./hasOwn"
      -], function( hasOwn ) {
      -	"use strict";
      -
      -	return hasOwn.toString;
      -} );
      diff --git a/bower_components/jquery/src/var/getProto.js b/bower_components/jquery/src/var/getProto.js
      deleted file mode 100644
      index 965fab8fb4..0000000000
      --- a/bower_components/jquery/src/var/getProto.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return Object.getPrototypeOf;
      -} );
      diff --git a/bower_components/jquery/src/var/hasOwn.js b/bower_components/jquery/src/var/hasOwn.js
      deleted file mode 100644
      index 44ab6807d8..0000000000
      --- a/bower_components/jquery/src/var/hasOwn.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./class2type"
      -], function( class2type ) {
      -	"use strict";
      -
      -	return class2type.hasOwnProperty;
      -} );
      diff --git a/bower_components/jquery/src/var/indexOf.js b/bower_components/jquery/src/var/indexOf.js
      deleted file mode 100644
      index 8320b98e57..0000000000
      --- a/bower_components/jquery/src/var/indexOf.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./arr"
      -], function( arr ) {
      -	"use strict";
      -
      -	return arr.indexOf;
      -} );
      diff --git a/bower_components/jquery/src/var/pnum.js b/bower_components/jquery/src/var/pnum.js
      deleted file mode 100644
      index 6f06d73b17..0000000000
      --- a/bower_components/jquery/src/var/pnum.js
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	return ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
      -} );
      diff --git a/bower_components/jquery/src/var/push.js b/bower_components/jquery/src/var/push.js
      deleted file mode 100644
      index 94656209ab..0000000000
      --- a/bower_components/jquery/src/var/push.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./arr"
      -], function( arr ) {
      -	"use strict";
      -
      -	return arr.push;
      -} );
      diff --git a/bower_components/jquery/src/var/rcssNum.js b/bower_components/jquery/src/var/rcssNum.js
      deleted file mode 100644
      index 4214b14aa5..0000000000
      --- a/bower_components/jquery/src/var/rcssNum.js
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -define( [
      -	"../var/pnum"
      -], function( pnum ) {
      -
      -"use strict";
      -
      -return new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
      -
      -} );
      diff --git a/bower_components/jquery/src/var/rnothtmlwhite.js b/bower_components/jquery/src/var/rnothtmlwhite.js
      deleted file mode 100644
      index 30604db4f6..0000000000
      --- a/bower_components/jquery/src/var/rnothtmlwhite.js
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	// Only count HTML whitespace
      -	// Other whitespace should count in values
      -	// https://html.spec.whatwg.org/multipage/infrastructure.html#space-character
      -	return ( /[^\x20\t\r\n\f]+/g );
      -} );
      diff --git a/bower_components/jquery/src/var/slice.js b/bower_components/jquery/src/var/slice.js
      deleted file mode 100644
      index 915f837be4..0000000000
      --- a/bower_components/jquery/src/var/slice.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./arr"
      -], function( arr ) {
      -	"use strict";
      -
      -	return arr.slice;
      -} );
      diff --git a/bower_components/jquery/src/var/support.js b/bower_components/jquery/src/var/support.js
      deleted file mode 100644
      index 094d0aece0..0000000000
      --- a/bower_components/jquery/src/var/support.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -define( function() {
      -	"use strict";
      -
      -	// All support tests are defined in their respective modules.
      -	return {};
      -} );
      diff --git a/bower_components/jquery/src/var/toString.js b/bower_components/jquery/src/var/toString.js
      deleted file mode 100644
      index ff4ecdc722..0000000000
      --- a/bower_components/jquery/src/var/toString.js
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -define( [
      -	"./class2type"
      -], function( class2type ) {
      -	"use strict";
      -
      -	return class2type.toString;
      -} );
      diff --git a/bower_components/jquery/src/wrap.js b/bower_components/jquery/src/wrap.js
      deleted file mode 100644
      index 88b9bb56dc..0000000000
      --- a/bower_components/jquery/src/wrap.js
      +++ /dev/null
      @@ -1,77 +0,0 @@
      -define( [
      -	"./core",
      -	"./core/init",
      -	"./manipulation", // clone
      -	"./traversing" // parent, contents
      -], function( jQuery ) {
      -
      -"use strict";
      -
      -jQuery.fn.extend( {
      -	wrapAll: function( html ) {
      -		var wrap;
      -
      -		if ( this[ 0 ] ) {
      -			if ( jQuery.isFunction( html ) ) {
      -				html = html.call( this[ 0 ] );
      -			}
      -
      -			// The elements to wrap the target around
      -			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
      -
      -			if ( this[ 0 ].parentNode ) {
      -				wrap.insertBefore( this[ 0 ] );
      -			}
      -
      -			wrap.map( function() {
      -				var elem = this;
      -
      -				while ( elem.firstElementChild ) {
      -					elem = elem.firstElementChild;
      -				}
      -
      -				return elem;
      -			} ).append( this );
      -		}
      -
      -		return this;
      -	},
      -
      -	wrapInner: function( html ) {
      -		if ( jQuery.isFunction( html ) ) {
      -			return this.each( function( i ) {
      -				jQuery( this ).wrapInner( html.call( this, i ) );
      -			} );
      -		}
      -
      -		return this.each( function() {
      -			var self = jQuery( this ),
      -				contents = self.contents();
      -
      -			if ( contents.length ) {
      -				contents.wrapAll( html );
      -
      -			} else {
      -				self.append( html );
      -			}
      -		} );
      -	},
      -
      -	wrap: function( html ) {
      -		var isFunction = jQuery.isFunction( html );
      -
      -		return this.each( function( i ) {
      -			jQuery( this ).wrapAll( isFunction ? html.call( this, i ) : html );
      -		} );
      -	},
      -
      -	unwrap: function( selector ) {
      -		this.parent( selector ).not( "body" ).each( function() {
      -			jQuery( this ).replaceWith( this.childNodes );
      -		} );
      -		return this;
      -	}
      -} );
      -
      -return jQuery;
      -} );
      diff --git a/bower_components/select2/.bower.json b/bower_components/select2/.bower.json
      deleted file mode 100644
      index 097d309ee2..0000000000
      --- a/bower_components/select2/.bower.json
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -{
      -  "name": "select2",
      -  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
      -  "main": [
      -    "dist/js/select2.js",
      -    "src/scss/core.scss"
      -  ],
      -  "repository": {
      -    "type": "git",
      -    "url": "git@github.com:select2/select2.git"
      -  },
      -  "homepage": "https://github.com/ivaynberg/select2",
      -  "version": "4.0.3",
      -  "_release": "4.0.3",
      -  "_resolution": {
      -    "type": "version",
      -    "tag": "4.0.3",
      -    "commit": "566c7846fbf8c3b7674346f26d0ee872c0a77629"
      -  },
      -  "_source": "https://github.com/ivaynberg/select2.git",
      -  "_target": "^4.0.3",
      -  "_originalSource": "select2",
      -  "_direct": true
      -}
      \ No newline at end of file
      diff --git a/bower_components/select2/.editorconfig b/bower_components/select2/.editorconfig
      deleted file mode 100644
      index 54f4d3beed..0000000000
      --- a/bower_components/select2/.editorconfig
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -[*]
      -indent_style = space
      -end_of_line = lf
      -
      -[*.js]
      -indent_size = 2
      diff --git a/bower_components/select2/.gitignore b/bower_components/select2/.gitignore
      deleted file mode 100644
      index aa970da651..0000000000
      --- a/bower_components/select2/.gitignore
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -node_modules
      -dist/js/i18n/build.txt
      -.sass-cache
      diff --git a/bower_components/select2/.jshintignore b/bower_components/select2/.jshintignore
      deleted file mode 100644
      index ba5a30f8c3..0000000000
      --- a/bower_components/select2/.jshintignore
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -src/js/banner.*.js
      -src/js/wrapper.*.js
      -tests/vendor/*.js
      -tests/helpers.js
      diff --git a/bower_components/select2/.jshintrc b/bower_components/select2/.jshintrc
      deleted file mode 100644
      index 9429926877..0000000000
      --- a/bower_components/select2/.jshintrc
      +++ /dev/null
      @@ -1,25 +0,0 @@
      -{
      -  "bitwise": true,
      -  "camelcase": true,
      -  "curly": true,
      -  "es3": true,
      -  "eqnull": true,
      -  "freeze": true,
      -  "globals": {
      -    "console": false,
      -    "define": false,
      -    "document": false,
      -    "MockContainer": false,
      -    "module": false,
      -    "QUnit": false,
      -    "require": false,
      -    "test": false,
      -    "window": false
      -  },
      -  "indent": 2,
      -  "maxlen": 80,
      -  "noarg": true,
      -  "nonew": true,
      -  "quotmark": "single",
      -  "undef": true
      -}
      diff --git a/bower_components/select2/.travis.yml b/bower_components/select2/.travis.yml
      deleted file mode 100644
      index 0af4c6960a..0000000000
      --- a/bower_components/select2/.travis.yml
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -language: node_js
      -
      -sudo: false
      -
      -node_js:
      -  - 0.10
      -
      -env:
      -  global:
      -    - secure: XMNK8GVxkwKa6oLl7nJwgg/wmY1YDk5rrMd+UXz26EDCsMDbiy1P7GhN2fEiBSLaQ7YfEuvaDcmzQxTrT0YTHp1PDzb2o9J4tIDdEkqPcv1y8xMaYDfmsN0rBPdBwZEg9H5zUgi7OdUbrGswSYxsKCE3x8EOqK89104HyOo1LN4=
      -    - secure: BU5BPRx6H4O3WJ509YPixjUxg+hDF3z2BVJX6NiGmKWweqvCEYFfiiHLwDEgp/ynRcF9vGVi1V4Ly1jq7f8NIajbDZ5q443XchZFYFg78K/EwD5mK6LYt16zb7+Jn0KbzwHeGRGzc9AvcEYlW6i634cSCm4n3BnqtF5PpogSzdw=
      -
      -script:
      -  - grunt ci
      -
      -notifications:
      -  email: false
      -  irc:
      -    channels:
      -      - "chat.freenode.net#select2"
      -    on_success: change
      -    on_failure: always
      diff --git a/bower_components/select2/CONTRIBUTING.md b/bower_components/select2/CONTRIBUTING.md
      deleted file mode 100644
      index ad81e80371..0000000000
      --- a/bower_components/select2/CONTRIBUTING.md
      +++ /dev/null
      @@ -1,204 +0,0 @@
      -Contributing to Select2
      -=======================
      -Looking to contribute something to Select2? **Here's how you can help.**
      -
      -Please take a moment to review this document in order to make the contribution
      -process easy and effective for everyone involved.
      -
      -Following these guidelines helps to communicate that you respect the time of
      -the developers managing and developing this open source project. In return,
      -they should reciprocate that respect in addressing your issue or assessing
      -patches and features.
      -
      -Using the issue tracker
      ------------------------
      -When [reporting bugs][reporting-bugs] or
      -[requesting features][requesting-features], the
      -[issue tracker on GitHub][issue-tracker] is the recommended channel to use.
      -
      -The issue tracker **is not** a place for support requests. The
      -[mailing list][community] or [IRC channel][community] are better places to
      -get help.
      -
      -Reporting bugs with Select2
      ----------------------------
      -We really appreciate clear bug reports that _consistently_ show an issue
      -_within Select2_.
      -
      -The ideal bug report follows these guidelines:
      -
      -1. **Use the [GitHub issue search][issue-search]**  &mdash; Check if the issue
      -   has already been reported.
      -2. **Check if the issue has been fixed**  &mdash; Try to reproduce the problem
      -   using the code in the `master` branch.
      -3. **Isolate the problem**  &mdash; Try to create an
      -   [isolated test case][isolated-case] that consistently reproduces the problem.
      -
      -Please try to be as detailed as possible in your bug report, especially if an
      -isolated test case cannot be made. Some useful questions to include the answer
      -to are:
      -
      -- What steps can be used to reproduce the issue?
      -- What is the bug and what is the expected outcome?
      -- What browser(s) and Operating System have you tested with?
      -- Does the bug happen consistently across all tested browsers?
      -- What version of jQuery are you using? And what version of Select2?
      -- Are you using Select2 with other plugins?
      -
      -All of these questions will help others fix and identify any potential bugs.
      -
      -Requesting features in Select2
      -------------------------------
      -Select2 is a large library that carries with it a lot of functionality. Because
      -of this, many feature requests will not be implemented in the core library.
      -
      -Before starting work on a major feature for Select2, **contact the
      -[community][community] first** or you may risk spending a considerable amount of
      -time on something which the project developers are not interested in bringing
      -into the project.
      -
      -Contributing changes to Select2
      --------------------------------
      -Select2 is made up of multiple submodules that all come together to make the
      -standard and extended builds that are available to users. The build system uses
      -Node.js to manage and compile the submodules, all of which is done using the
      -Grunt build system.
      -
      -### Installing development dependencies
      -
      -Select2 can be built and developed on any system which supports Node.js. The
      -preferred Node.js version is 0.10, but 0.12 and later versions can be used
      -without any noticeable issues. You can download Node.js at
      -[their website][nodejs].
      -
      -All other required Node.js packages can be installed using [npm][npm], which
      -comes bundled alongside Node.js.
      -
      -```bash
      -cd /path/to/select2/repo
      -npm install
      -```
      -
      -You may need to install libsass on your system if it is not already available
      -in order to build the SASS files which generate the CSS for themes and the main
      -component.
      -
      -In order to build and serve the documentation, you need to have [Jekyll][jekyll]
      -installed on your system.
      -
      -### Building the Select2 component
      -
      -Select2 uses the [Grunt][grunt] build task system and defines a few custom
      -tasks for common routines. One of them is the `compile` task, which compiles
      -the JavaScript and CSS and produces the final files.
      -
      -```bash
      -cd /path/to/select2/repo
      -grunt compile
      -```
      -
      -You can also generate the minified versions (`.min.js` files) by executing the
      -`minify` task after compiling.
      -
      -```bash
      -cd /path/to/select2/repo
      -grunt minify
      -```
      -
      -### Building the documentation
      -
      -Using the Grunt build system, you run Jekyll and serve the documentation
      -locally. This will also set up the examples to use the latest version of
      -Select2 that has been built.
      -
      -```bash
      -cd /path/to/select2/repo
      -grunt docs
      -```
      -
      -### Running tests
      -
      -Select2 uses the QUnit test system to test individual components.
      -
      -```bash
      -cd /path/to/selct2/repo
      -grunt test
      -```
      -
      -### Submitting a pull request
      -
      -We use GitHub's pull request system for submitting patches. Here are some
      -guidelines to follow when creating the pull request for your fix.
      -
      -1. Make sure to create a ticket for your pull request. This will serve as the
      -bug ticket, and any discussion about the bug will take place there. Your pull
      -request will be focused on the specific changes that fix the bug.
      -2. Make sure to reference the ticket you are fixing within your pull request.
      -This will allow us to close off the ticket once we merge the pull request, or
      -follow up on the ticket if there are any related blocking issues.
      -3. Explain why the specific change was made. Not everyone who is reviewing your
      -pull request will be familiar with the problem it is fixing.
      -4. Run your tests first. If your tests aren't passing, the pull request won't
      -be able to be merged. If you're breaking existing tests, make sure that you
      -aren't causing any breaking changes.
      -5. Only include source changes. While it's not required, only including changes
      -from the `src` directory will prevent merge conflicts from occuring. Making
      -this happen can be as a simple as not committing changes from the `dist`
      -directory.
      -
      -By following these steps, you will make it easier for your pull request to be
      -reviewed and eventually merged.
      -
      -Triaging issues and pull requests
      ----------------------------------
      -Anyone can help the project maintainers triage issues and review pull requests.
      -
      -### Handling new issues
      -
      -Select2 regularly receives new issues which need to be tested and organized.
      -
      -When a new issue that comes in that is similar to another existing issue, it
      -should be checked to make sure it is not a duplicate.  Duplicates issues should
      -be marked by replying to the issue with "Duplicate of #[issue number]" where
      -`[issue number]` is the url or issue number for the existing issue.  This will
      -allow the project maintainers to quickly close off additional issues and keep
      -the discussion focused within a single issue.
      -
      -If you can test issues that are reported to Select2 that contain test cases and
      -confirm under what conditions bugs happen, that will allow others to identify
      -what causes a bug quicker.
      -
      -### Reviewing pull requests
      -
      -It is very common for pull requests to be opened for issues that contain a clear
      -solution to the problem.  These pull requests should be rigorously reviewed by
      -the community before being accepted.  If you are not sure about a piece of
      -submitted code, or know of a better way to do something, do not hesitate to make
      -a comment on the pull request.
      -
      -### Reviving old tickets
      -
      -If you come across tickets which have not been updated for a while, you are
      -encouraged to revive them. While this can be as simple as saying `:+1:`, it is
      -best if you can include more information on the issue. Common bugs and feature
      -requests are more likely to be fixed, whether it is by the community or the
      -developers, so keeping tickets up to date is encouraged.
      -
      -Licensing
      ----------
      -
      -It should also be made clear that **all code contributed to Select** must be
      -licensable under the [MIT license][licensing].  Code that cannot be released
      -under this license **cannot be accepted** into the project.
      -
      -[community]: https://select2.github.io/community.html
      -[grunt]: http://gruntjs.com/
      -[isolated-case]: http://css-tricks.com/6263-reduced-test-cases/
      -[issue-search]: https://github.com/select2/select2/search?q=&type=Issues
      -[issue-tracker]: https://github.com/select2/select2/issues
      -[jekyll]: https://jekyllrb.com/docs/installation/
      -[licensing]: https://github.com/select2/select2/blob/master/LICENSE.md
      -[nodejs]: https://nodejs.org/
      -[npm]: https://www.npmjs.com/
      -[reporting-bugs]: #reporting-bugs-with-select2
      -[requesting-features]: #requesting-features-in-select2
      \ No newline at end of file
      diff --git a/bower_components/select2/Gruntfile.js b/bower_components/select2/Gruntfile.js
      deleted file mode 100644
      index 63619dea08..0000000000
      --- a/bower_components/select2/Gruntfile.js
      +++ /dev/null
      @@ -1,370 +0,0 @@
      -module.exports = function (grunt) {
      -  // Full list of files that must be included by RequireJS
      -  includes = [
      -    'jquery.select2',
      -    'almond',
      -
      -    'jquery-mousewheel' // shimmed for non-full builds
      -  ];
      -
      -  fullIncludes = [
      -    'jquery',
      -
      -    'select2/compat/containerCss',
      -    'select2/compat/dropdownCss',
      -
      -    'select2/compat/initSelection',
      -    'select2/compat/inputData',
      -    'select2/compat/matcher',
      -    'select2/compat/query',
      -
      -    'select2/dropdown/attachContainer',
      -    'select2/dropdown/stopPropagation',
      -
      -    'select2/selection/stopPropagation'
      -  ].concat(includes);
      -
      -  var i18nModules = [];
      -  var i18nPaths = {};
      -
      -  var i18nFiles = grunt.file.expand({
      -    cwd: 'src/js'
      -  }, 'select2/i18n/*.js');
      -
      -  var testFiles = grunt.file.expand('tests/**/*.html');
      -  var testUrls = testFiles.map(function (filePath) {
      -    return 'http://localhost:9999/' + filePath;
      -  });
      -
      -  var testBuildNumber = "unknown";
      -
      -  if (process.env.TRAVIS_JOB_ID) {
      -    testBuildNumber = "travis-" + process.env.TRAVIS_JOB_ID;
      -  } else {
      -    var currentTime = new Date();
      -
      -    testBuildNumber = "manual-" + currentTime.getTime();
      -  }
      -
      -  for (var i = 0; i < i18nFiles.length; i++) {
      -    var file = i18nFiles[i];
      -    var name = file.split('.')[0];
      -
      -    i18nModules.push({
      -      name: name
      -    });
      -
      -    i18nPaths[name] = '../../' + name;
      -  }
      -
      -  var minifiedBanner = '/*! Select2 <%= package.version %> | https://github.com/select2/select2/blob/master/LICENSE.md */';
      -
      -  grunt.initConfig({
      -    package: grunt.file.readJSON('package.json'),
      -
      -    clean: {
      -      docs: ['docs/_site']
      -    },
      -
      -    concat: {
      -      'dist': {
      -        options: {
      -          banner: grunt.file.read('src/js/wrapper.start.js'),
      -        },
      -        src: [
      -          'dist/js/select2.js',
      -          'src/js/wrapper.end.js'
      -        ],
      -        dest: 'dist/js/select2.js'
      -      },
      -      'dist.full': {
      -        options: {
      -          banner: grunt.file.read('src/js/wrapper.start.js'),
      -        },
      -        src: [
      -          'dist/js/select2.full.js',
      -          'src/js/wrapper.end.js'
      -        ],
      -        dest: 'dist/js/select2.full.js'
      -      }
      -    },
      -
      -    connect: {
      -      tests: {
      -        options: {
      -          base: '.',
      -          hostname: '127.0.0.1',
      -          port: 9999
      -        }
      -      }
      -    },
      -
      -    uglify: {
      -      'dist': {
      -        src: 'dist/js/select2.js',
      -        dest: 'dist/js/select2.min.js',
      -        options: {
      -          banner: minifiedBanner
      -        }
      -      },
      -      'dist.full': {
      -        src: 'dist/js/select2.full.js',
      -        dest: 'dist/js/select2.full.min.js',
      -        options: {
      -          banner: minifiedBanner
      -        }
      -      }
      -    },
      -
      -    qunit: {
      -      all: {
      -        options: {
      -          urls: testUrls
      -        }
      -      }
      -    },
      -
      -    'saucelabs-qunit': {
      -      all: {
      -        options: {
      -          build: testBuildNumber,
      -          tags: ['tests', 'qunit'],
      -          urls: testUrls,
      -          testname: 'QUnit test for Select2',
      -          browsers: [
      -            {
      -              browserName: 'internet explorer',
      -              version: '8'
      -            },
      -            {
      -              browserName: 'internet explorer',
      -              version: '9'
      -            },
      -            {
      -              browserName: 'internet explorer',
      -              version: '10'
      -            },
      -            {
      -              browserName: 'internet explorer',
      -              version: '11'
      -            },
      -
      -            {
      -              browserName: 'firefox',
      -              platform: 'linux'
      -            },
      -
      -            {
      -              browserName: 'chrome'
      -            },
      -
      -            {
      -              browserName: 'opera',
      -              version: '12',
      -              platform: 'linux'
      -            }
      -          ]
      -        }
      -      }
      -    },
      -
      -    'gh-pages': {
      -      options: {
      -        base: 'docs',
      -        branch: 'master',
      -        clone: 'node_modules/grunt-gh-pages/repo',
      -        message: 'Updated docs with master',
      -        push: true,
      -        repo: 'git@github.com:select2/select2.github.io.git'
      -      },
      -      src: '**'
      -    },
      -
      -    jekyll: {
      -      options: {
      -        src: 'docs',
      -        dest: 'docs/_site'
      -      },
      -      build: {
      -        d: null
      -      },
      -      serve: {
      -        options: {
      -          serve: true,
      -          watch: true
      -        }
      -      }
      -    },
      -
      -    jshint: {
      -      options: {
      -        jshintrc: true
      -      },
      -      code: {
      -        src: ['src/js/**/*.js']
      -      },
      -      tests: {
      -        src: ['tests/**/*.js']
      -      }
      -    },
      -
      -    sass: {
      -      dist: {
      -        options: {
      -          outputStyle: 'compressed'
      -        },
      -        files: {
      -          'dist/css/select2.min.css': [
      -            'src/scss/core.scss',
      -            'src/scss/theme/default/layout.css'
      -          ]
      -        }
      -      },
      -      dev: {
      -        options: {
      -          outputStyle: 'nested'
      -        },
      -        files: {
      -          'dist/css/select2.css': [
      -            'src/scss/core.scss',
      -            'src/scss/theme/default/layout.css'
      -          ]
      -        }
      -      }
      -    },
      -
      -    symlink: {
      -      docs: {
      -        cwd: 'dist',
      -        expand: true,
      -        overwrite: false,
      -        src: [
      -          '*'
      -        ],
      -        dest: 'docs/dist',
      -        filter: 'isDirectory'
      -      }
      -    },
      -
      -    requirejs: {
      -      'dist': {
      -        options: {
      -          baseUrl: 'src/js',
      -          optimize: 'none',
      -          name: 'select2/core',
      -          out: 'dist/js/select2.js',
      -          include: includes,
      -          namespace: 'S2',
      -          paths: {
      -            'almond': require.resolve('almond').slice(0, -3),
      -            'jquery': 'jquery.shim',
      -            'jquery-mousewheel': 'jquery.mousewheel.shim'
      -          },
      -          wrap: {
      -            startFile: 'src/js/banner.start.js',
      -            endFile: 'src/js/banner.end.js'
      -          }
      -        }
      -      },
      -      'dist.full': {
      -        options: {
      -          baseUrl: 'src/js',
      -          optimize: 'none',
      -          name: 'select2/core',
      -          out: 'dist/js/select2.full.js',
      -          include: fullIncludes,
      -          namespace: 'S2',
      -          paths: {
      -            'almond': require.resolve('almond').slice(0, -3),
      -            'jquery': 'jquery.shim',
      -            'jquery-mousewheel': require.resolve('jquery-mousewheel').slice(0, -3)
      -          },
      -          wrap: {
      -            startFile: 'src/js/banner.start.js',
      -            endFile: 'src/js/banner.end.js'
      -          }
      -        }
      -      },
      -      'i18n': {
      -        options: {
      -          baseUrl: 'src/js/select2/i18n',
      -          dir: 'dist/js/i18n',
      -          paths: i18nPaths,
      -          modules: i18nModules,
      -          namespace: 'S2',
      -          wrap: {
      -            start: minifiedBanner + grunt.file.read('src/js/banner.start.js'),
      -            end: grunt.file.read('src/js/banner.end.js')
      -          }
      -        }
      -      }
      -    },
      -
      -    watch: {
      -      js: {
      -        files: [
      -          'src/js/select2/**/*.js',
      -          'tests/**/*.js'
      -        ],
      -        tasks: [
      -          'compile',
      -          'test',
      -          'minify'
      -        ]
      -      },
      -      css: {
      -        files: [
      -          'src/scss/**/*.scss'
      -        ],
      -        tasks: [
      -          'compile',
      -          'minify'
      -        ]
      -      }
      -    }
      -  });
      -
      -  grunt.loadNpmTasks('grunt-contrib-clean');
      -  grunt.loadNpmTasks('grunt-contrib-concat');
      -  grunt.loadNpmTasks('grunt-contrib-connect');
      -  grunt.loadNpmTasks('grunt-contrib-jshint');
      -  grunt.loadNpmTasks('grunt-contrib-qunit');
      -  grunt.loadNpmTasks('grunt-contrib-requirejs');
      -  grunt.loadNpmTasks('grunt-contrib-symlink');
      -  grunt.loadNpmTasks('grunt-contrib-uglify');
      -  grunt.loadNpmTasks('grunt-contrib-watch');
      -
      -  grunt.loadNpmTasks('grunt-gh-pages');
      -  grunt.loadNpmTasks('grunt-jekyll');
      -  grunt.loadNpmTasks('grunt-saucelabs');
      -  grunt.loadNpmTasks('grunt-sass');
      -
      -  grunt.registerTask('default', ['compile', 'test', 'minify']);
      -
      -  grunt.registerTask('compile', [
      -    'requirejs:dist', 'requirejs:dist.full', 'requirejs:i18n',
      -    'concat:dist', 'concat:dist.full',
      -    'sass:dev'
      -  ]);
      -  grunt.registerTask('minify', ['uglify', 'sass:dist']);
      -  grunt.registerTask('test', ['connect:tests', 'qunit', 'jshint']);
      -
      -  var ciTasks = [];
      -
      -  ciTasks.push('compile')
      -  ciTasks.push('connect:tests');
      -
      -  // Can't run Sauce Labs tests in pull requests
      -  if (process.env.TRAVIS_PULL_REQUEST == 'false') {
      -    ciTasks.push('saucelabs-qunit');
      -  }
      -
      -  ciTasks.push('qunit');
      -  ciTasks.push('jshint');
      -
      -  grunt.registerTask('ci', ciTasks);
      -
      -  grunt.registerTask('docs', ['symlink:docs', 'jekyll:serve']);
      -
      -  grunt.registerTask('docs-release', ['default', 'clean:docs', 'gh-pages']);
      -};
      diff --git a/bower_components/select2/ISSUE_TEMPLATE.md b/bower_components/select2/ISSUE_TEMPLATE.md
      deleted file mode 100644
      index 42223285eb..0000000000
      --- a/bower_components/select2/ISSUE_TEMPLATE.md
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -## Prerequisites
      -
      -- [ ] I have searched for similar issues in both open and closed tickets and cannot find a duplicate
      -- [ ] The issue still exists against the latest `master` branch of Select2
      -- [ ] This is not a usage question (Those should be directed to the [community](https://select2.github.io/community.html))
      -- [ ] I have attempted to find the simplest possible steos to reproduce the issue
      -- [ ] I have included a failing test as a pull request (Optional)
      -
      -## Steps to reproduce the issue
      -
      -1.
      -2.
      -3.
      -
      -## Expected behavior and actual behavior
      -
      -When I follow those steps, I see...
      -
      -I was expecting...
      -
      -## Environment
      -
      -Browsers
      -
      -- [ ] Google Chrome
      -- [ ] Mozilla Firefox
      -- [ ] Internet Explorer
      -
      -Operating System
      -
      -- [ ] Windows
      -- [ ] Mac OS X
      -- [ ] Linux
      -- [ ] Mobile
      -
      -Libraries
      -
      -- jQuery version:
      -- Select2 version:
      -
      -## Isolating the problem
      -
      -- [ ] This bug happens [on the examples page](https://select2.github.io/examples.html)
      -- [ ] The bug happens consistently across all tested browsers
      -- [ ] This bug happens when using Select2 without other pluigns
      -- [ ] I can reproduce this bug in [a jsbin](https://jsbin.com/)
      diff --git a/bower_components/select2/LICENSE.md b/bower_components/select2/LICENSE.md
      deleted file mode 100644
      index 86c7c291a9..0000000000
      --- a/bower_components/select2/LICENSE.md
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -The MIT License (MIT)
      -
      -Copyright (c) 2012-2015 Kevin Brown, Igor Vaynberg, and Select2 contributors
      -
      -Permission is hereby granted, free of charge, to any person obtaining a copy
      -of this software and associated documentation files (the "Software"), to deal
      -in the Software without restriction, including without limitation the rights
      -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
      -copies of the Software, and to permit persons to whom the Software is
      -furnished to do so, subject to the following conditions:
      -
      -The above copyright notice and this permission notice shall be included in
      -all copies or substantial portions of the Software.
      -
      -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
      -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
      -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
      -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
      -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
      -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
      -THE SOFTWARE.
      diff --git a/bower_components/select2/PULL_REQUEST_TEMPLATE.md b/bower_components/select2/PULL_REQUEST_TEMPLATE.md
      deleted file mode 100644
      index 82395c757b..0000000000
      --- a/bower_components/select2/PULL_REQUEST_TEMPLATE.md
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -This pull request includes a
      -
      -- [ ] Bug fix
      -- [ ] New feature
      -- [ ] Translation
      -
      -The following changes were made
      -
      --
      --
      --
      -
      -If this is related to an existing ticket, include a link to it as well.
      diff --git a/bower_components/select2/README.md b/bower_components/select2/README.md
      deleted file mode 100644
      index 5984bb2484..0000000000
      --- a/bower_components/select2/README.md
      +++ /dev/null
      @@ -1,121 +0,0 @@
      -Select2
      -=======
      -[![Build Status][travis-ci-image]][travis-ci-status]
      -
      -Select2 is a jQuery-based replacement for select boxes. It supports searching,
      -remote data sets, and pagination of results.
      -
      -To get started, checkout examples and documentation at
      -https://select2.github.io/
      -
      -Use cases
      ----------
      -* Enhancing native selects with search.
      -* Enhancing native selects with a better multi-select interface.
      -* Loading data from JavaScript: easily load items via AJAX and have them
      -  searchable.
      -* Nesting optgroups: native selects only support one level of nesting. Select2
      -  does not have this restriction.
      -* Tagging: ability to add new items on the fly.
      -* Working with large, remote datasets: ability to partially load a dataset based
      -  on the search term.
      -* Paging of large datasets: easy support for loading more pages when the results
      -  are scrolled to the end.
      -* Templating: support for custom rendering of results and selections.
      -
      -Browser compatibility
      ----------------------
      -* IE 8+
      -* Chrome 8+
      -* Firefox 10+
      -* Safari 3+
      -* Opera 10.6+
      -
      -Select2 is automatically tested on the following browsers.
      -
      -[![Sauce Labs Test Status][saucelabs-matrix]][saucelabs-status]
      -
      -Usage
      ------
      -You can source Select2 directly from a CDN like [JSDliver][jsdelivr] or
      -[CDNJS][cdnjs], [download it from this GitHub repo][releases], or use one of
      -the integrations below.
      -
      -Integrations
      -------------
      -Third party developers have create plugins for platforms which allow Select2 to be integrated more natively and quickly. For many platforms, additional plugins are not required because Select2 acts as a standard `<select>` box.
      -
      -Plugins
      -
      -* [Django]
      -  - [django-easy-select2]
      -  - [django-select2]
      -* [Meteor] - [meteor-select2]
      -* [Ruby on Rails][ruby-on-rails] - [select2-rails]
      -* [Wicket] - [wicketstuff-select2]
      -* [Yii 2][yii2] - [yii2-widget-select2]
      -
      -Themes
      -
      -- [Bootstrap 3][bootstrap3] - [select2-bootstrap-theme]
      -- [Flat UI][flat-ui] - [select2-flat-theme]
      -- [Metro UI][metro-ui] - [select2-metro]
      -
      -Missing an integration? Modify this `README` and make a pull request back here to Select2 on GitHub.
      -
      -Internationalization (i18n)
      ----------------------------
      -Select2 supports multiple languages by simply including the right language JS
      -file (`dist/js/i18n/it.js`, `dist/js/i18n/nl.js`, etc.) after
      -`dist/js/select2.js`.
      -
      -Missing a language? Just copy `src/js/select2/i18n/en.js`, translate it, and
      -make a pull request back to Select2 here on GitHub.
      -
      -Documentation
      --------------
      -The documentation for Select2 is available
      -[through GitHub Pages][documentation] and is located within this repository
      -in the [`docs` folder][documentation-folder].
      -
      -Community
      ----------
      -You can find out about the different ways to get in touch with the Select2
      -community at the [Select2 community page][community].
      -
      -Copyright and license
      ----------------------
      -The license is available within the repository in the [LICENSE][license] file.
      -
      -[cdnjs]: http://www.cdnjs.com/libraries/select2
      -[community]: https://select2.github.io/community.html
      -[documentation]: https://select2.github.io/
      -[documentation-folder]: https://github.com/select2/select2/tree/master/docs
      -[freenode]: https://freenode.net/
      -[jsdelivr]: http://www.jsdelivr.com/#!select2
      -[license]: LICENSE.md
      -[releases]: https://github.com/select2/select2/releases
      -[saucelabs-matrix]: https://saucelabs.com/browser-matrix/select2.svg
      -[saucelabs-status]: https://saucelabs.com/u/select2
      -[travis-ci-image]: https://img.shields.io/travis/select2/select2/master.svg
      -[travis-ci-status]: https://travis-ci.org/select2/select2
      -
      -[bootstrap3]: https://getbootstrap.com/
      -[django]: https://www.djangoproject.com/
      -[django-easy-select2]: https://github.com/asyncee/django-easy-select2
      -[django-select2]: https://github.com/applegrew/django-select2
      -[flat-ui]: http://designmodo.github.io/Flat-UI/
      -[meteor]: https://www.meteor.com/
      -[meteor-select2]: https://github.com/nate-strauser/meteor-select2
      -[metro-ui]: http://metroui.org.ua/
      -[select2-metro]: http://metroui.org.ua/select2.html
      -[ruby-on-rails]: http://rubyonrails.org/
      -[select2-bootstrap-theme]: https://github.com/select2/select2-bootstrap-theme
      -[select2-flat-theme]: https://github.com/techhysahil/select2-Flat_Theme
      -[select2-rails]: https://github.com/argerim/select2-rails
      -[vue.js]: http://vuejs.org/
      -[select2-vue]: http://vuejs.org/examples/select2.html
      -[wicket]: https://wicket.apache.org/
      -[wicketstuff-select2]: https://github.com/wicketstuff/core/tree/master/select2-parent
      -[yii2]: http://www.yiiframework.com/
      -[yii2-widget-select2]: https://github.com/kartik-v/yii2-widget-select2
      diff --git a/bower_components/select2/bower.json b/bower_components/select2/bower.json
      deleted file mode 100644
      index 834e4957b0..0000000000
      --- a/bower_components/select2/bower.json
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -{
      -    "name": "select2",
      -    "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
      -    "main": [
      -        "dist/js/select2.js",
      -        "src/scss/core.scss"
      -    ],
      -    "repository": {
      -        "type": "git",
      -        "url": "git@github.com:select2/select2.git"
      -    }
      -}
      diff --git a/bower_components/select2/component.json b/bower_components/select2/component.json
      deleted file mode 100644
      index cacb935af9..0000000000
      --- a/bower_components/select2/component.json
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -{
      -  "name": "select2",
      -  "repo": "select/select2",
      -  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
      -  "version": "4.0.3",
      -  "demo": "https://select2.github.io/",
      -  "keywords": [
      -    "jquery"
      -  ],
      -  "main": "dist/js/select2.js",
      -  "styles": [
      -    "dist/css/select2.css"
      -  ],
      -  "scripts": [
      -    "dist/js/select2.js",
      -    "dist/js/i18n/*.js"
      -  ],
      -  "license": "MIT"
      -}
      diff --git a/bower_components/select2/composer.json b/bower_components/select2/composer.json
      deleted file mode 100644
      index e03d5df4e4..0000000000
      --- a/bower_components/select2/composer.json
      +++ /dev/null
      @@ -1,25 +0,0 @@
      -{
      -  "name": "select2/select2",
      -  "description": "Select2 is a jQuery based replacement for select boxes.",
      -  "type": "component",
      -  "homepage": "https://select2.github.io/",
      -  "license": "MIT",
      -  "require": {
      -    "robloach/component-installer": "*"
      -  },
      -  "extra": {
      -    "component": {
      -      "scripts": [
      -        "dist/js/select2.js"
      -      ],
      -      "styles": [
      -        "dist/css/select2.css"
      -      ],
      -      "files": [
      -        "dist/js/select2.js",
      -        "dist/js/i18n/*.js",
      -        "dist/css/select2.css"
      -      ]
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/dist/css/select2.css b/bower_components/select2/dist/css/select2.css
      deleted file mode 100644
      index 447b2b86cc..0000000000
      --- a/bower_components/select2/dist/css/select2.css
      +++ /dev/null
      @@ -1,484 +0,0 @@
      -.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, white 50%, #eeeeee 100%);
      -  background-image: -o-linear-gradient(top, white 50%, #eeeeee 100%);
      -  background-image: linear-gradient(to bottom, white 50%, #eeeeee 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, #eeeeee 50%, #cccccc 100%);
      -    background-image: -o-linear-gradient(top, #eeeeee 50%, #cccccc 100%);
      -    background-image: linear-gradient(to bottom, #eeeeee 50%, #cccccc 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, white 0%, #eeeeee 50%);
      -  background-image: -o-linear-gradient(top, white 0%, #eeeeee 50%);
      -  background-image: linear-gradient(to bottom, white 0%, #eeeeee 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, #eeeeee 50%, white 100%);
      -  background-image: -o-linear-gradient(top, #eeeeee 50%, white 100%);
      -  background-image: linear-gradient(to bottom, #eeeeee 50%, white 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: white;
      -  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: white; }
      -
      -.select2-container--classic .select2-results__group {
      -  cursor: default;
      -  display: block;
      -  padding: 6px; }
      -
      -.select2-container--classic.select2-container--open .select2-dropdown {
      -  border-color: #5897fb; }
      diff --git a/bower_components/select2/dist/css/select2.min.css b/bower_components/select2/dist/css/select2.min.css
      deleted file mode 100644
      index 76de04d923..0000000000
      --- a/bower_components/select2/dist/css/select2.min.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -.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}
      diff --git a/bower_components/select2/dist/js/i18n/ar.js b/bower_components/select2/dist/js/i18n/ar.js
      deleted file mode 100644
      index 01a6882948..0000000000
      --- a/bower_components/select2/dist/js/i18n/ar.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ar",[],function(){return{errorLoading:function(){return"لا يمكن تحميل النتائج"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="الرجاء حذف "+t+" عناصر";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="الرجاء إضافة "+t+" عناصر";return n},loadingMore:function(){return"جاري تحميل نتائج إضافية..."},maximumSelected:function(e){var t="تستطيع إختيار "+e.maximum+" بنود فقط";return t},noResults:function(){return"لم يتم العثور على أي نتائج"},searching:function(){return"جاري البحث…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/az.js b/bower_components/select2/dist/js/i18n/az.js
      deleted file mode 100644
      index 2accb973f6..0000000000
      --- a/bower_components/select2/dist/js/i18n/az.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/az",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return t+" simvol silin"},inputTooShort:function(e){var t=e.minimum-e.input.length;return t+" simvol daxil edin"},loadingMore:function(){return"Daha çox nəticə yüklənir…"},maximumSelected:function(e){return"Sadəcə "+e.maximum+" element seçə bilərsiniz"},noResults:function(){return"Nəticə tapılmadı"},searching:function(){return"Axtarılır…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/bg.js b/bower_components/select2/dist/js/i18n/bg.js
      deleted file mode 100644
      index 35ae989447..0000000000
      --- a/bower_components/select2/dist/js/i18n/bg.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/bg",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Моля въведете с "+t+" по-малко символ";return t>1&&(n+="a"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Моля въведете още "+t+" символ";return t>1&&(n+="a"),n},loadingMore:function(){return"Зареждат се още…"},maximumSelected:function(e){var t="Можете да направите до "+e.maximum+" ";return e.maximum>1?t+="избора":t+="избор",t},noResults:function(){return"Няма намерени съвпадения"},searching:function(){return"Търсене…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/ca.js b/bower_components/select2/dist/js/i18n/ca.js
      deleted file mode 100644
      index fdb5f3d2a5..0000000000
      --- a/bower_components/select2/dist/js/i18n/ca.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ca",[],function(){return{errorLoading:function(){return"La càrrega ha fallat"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Si us plau, elimina "+t+" car";return t==1?n+="àcter":n+="àcters",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Si us plau, introdueix "+t+" car";return t==1?n+="àcter":n+="àcters",n},loadingMore:function(){return"Carregant més resultats…"},maximumSelected:function(e){var t="Només es pot seleccionar "+e.maximum+" element";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No s'han trobat resultats"},searching:function(){return"Cercant…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/cs.js b/bower_components/select2/dist/js/i18n/cs.js
      deleted file mode 100644
      index 9651378a60..0000000000
      --- a/bower_components/select2/dist/js/i18n/cs.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/cs",[],function(){function e(e,t){switch(e){case 2:return t?"dva":"dvě";case 3:return"tři";case 4:return"čtyři"}return""}return{errorLoading:function(){return"Výsledky nemohly být načteny."},inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím zadejte o jeden znak méně":n<=4?"Prosím zadejte o "+e(n,!0)+" znaky méně":"Prosím zadejte o "+n+" znaků méně"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím zadejte ještě jeden znak":n<=4?"Prosím zadejte ještě další "+e(n,!0)+" znaky":"Prosím zadejte ještě dalších "+n+" znaků"},loadingMore:function(){return"Načítají se další výsledky…"},maximumSelected:function(t){var n=t.maximum;return n==1?"Můžete zvolit jen jednu položku":n<=4?"Můžete zvolit maximálně "+e(n,!1)+" položky":"Můžete zvolit maximálně "+n+" položek"},noResults:function(){return"Nenalezeny žádné položky"},searching:function(){return"Vyhledávání…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/da.js b/bower_components/select2/dist/js/i18n/da.js
      deleted file mode 100644
      index 501c51e933..0000000000
      --- a/bower_components/select2/dist/js/i18n/da.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/da",[],function(){return{errorLoading:function(){return"Resultaterne kunne ikke indlæses."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Angiv venligst "+t+" tegn mindre";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Angiv venligst "+t+" tegn mere";return n},loadingMore:function(){return"Indlæser flere resultater…"},maximumSelected:function(e){var t="Du kan kun vælge "+e.maximum+" emne";return e.maximum!=1&&(t+="r"),t},noResults:function(){return"Ingen resultater fundet"},searching:function(){return"Søger…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/de.js b/bower_components/select2/dist/js/i18n/de.js
      deleted file mode 100644
      index 9a6d55366f..0000000000
      --- a/bower_components/select2/dist/js/i18n/de.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/de",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Bitte "+t+" Zeichen weniger eingeben"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Bitte "+t+" Zeichen mehr eingeben"},loadingMore:function(){return"Lade mehr Ergebnisse…"},maximumSelected:function(e){var t="Sie können nur "+e.maximum+" Eintr";return e.maximum===1?t+="ag":t+="äge",t+=" auswählen",t},noResults:function(){return"Keine Übereinstimmungen gefunden"},searching:function(){return"Suche…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/el.js b/bower_components/select2/dist/js/i18n/el.js
      deleted file mode 100644
      index 4735d14052..0000000000
      --- a/bower_components/select2/dist/js/i18n/el.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/el",[],function(){return{errorLoading:function(){return"Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Παρακαλώ διαγράψτε "+t+" χαρακτήρ";return t==1&&(n+="α"),t!=1&&(n+="ες"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Παρακαλώ συμπληρώστε "+t+" ή περισσότερους χαρακτήρες";return n},loadingMore:function(){return"Φόρτωση περισσότερων αποτελεσμάτων…"},maximumSelected:function(e){var t="Μπορείτε να επιλέξετε μόνο "+e.maximum+" επιλογ";return e.maximum==1&&(t+="ή"),e.maximum!=1&&(t+="ές"),t},noResults:function(){return"Δεν βρέθηκαν αποτελέσματα"},searching:function(){return"Αναζήτηση…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/en.js b/bower_components/select2/dist/js/i18n/en.js
      deleted file mode 100644
      index 8e80ede8db..0000000000
      --- a/bower_components/select2/dist/js/i18n/en.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Please enter "+t+" or more characters";return n},loadingMore:function(){return"Loading more results…"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/es.js b/bower_components/select2/dist/js/i18n/es.js
      deleted file mode 100644
      index 0a096502da..0000000000
      --- a/bower_components/select2/dist/js/i18n/es.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/es",[],function(){return{errorLoading:function(){return"La carga falló"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor, elimine "+t+" car";return t==1?n+="ácter":n+="acteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Por favor, introduzca "+t+" car";return t==1?n+="ácter":n+="acteres",n},loadingMore:function(){return"Cargando más resultados…"},maximumSelected:function(e){var t="Sólo puede seleccionar "+e.maximum+" elemento";return e.maximum!=1&&(t+="s"),t},noResults:function(){return"No se encontraron resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/et.js b/bower_components/select2/dist/js/i18n/et.js
      deleted file mode 100644
      index c70f4a5b31..0000000000
      --- a/bower_components/select2/dist/js/i18n/et.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/et",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" vähem",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Sisesta "+t+" täht";return t!=1&&(n+="e"),n+=" rohkem",n},loadingMore:function(){return"Laen tulemusi…"},maximumSelected:function(e){var t="Saad vaid "+e.maximum+" tulemus";return e.maximum==1?t+="e":t+="t",t+=" valida",t},noResults:function(){return"Tulemused puuduvad"},searching:function(){return"Otsin…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/eu.js b/bower_components/select2/dist/js/i18n/eu.js
      deleted file mode 100644
      index 9336053a7d..0000000000
      --- a/bower_components/select2/dist/js/i18n/eu.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/eu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gutxiago",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Idatzi ";return t==1?n+="karaktere bat":n+=t+" karaktere",n+=" gehiago",n},loadingMore:function(){return"Emaitza gehiago kargatzen…"},maximumSelected:function(e){return e.maximum===1?"Elementu bakarra hauta dezakezu":e.maximum+" elementu hauta ditzakezu soilik"},noResults:function(){return"Ez da bat datorrenik aurkitu"},searching:function(){return"Bilatzen…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/fa.js b/bower_components/select2/dist/js/i18n/fa.js
      deleted file mode 100644
      index 5118cd28f8..0000000000
      --- a/bower_components/select2/dist/js/i18n/fa.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fa",[],function(){return{errorLoading:function(){return"امکان بارگذاری نتایج وجود ندارد."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="لطفاً "+t+" کاراکتر را حذف نمایید";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="لطفاً تعداد "+t+" کاراکتر یا بیشتر وارد نمایید";return n},loadingMore:function(){return"در حال بارگذاری نتایج بیشتر..."},maximumSelected:function(e){var t="شما تنها می‌توانید "+e.maximum+" آیتم را انتخاب نمایید";return t},noResults:function(){return"هیچ نتیجه‌ای یافت نشد"},searching:function(){return"در حال جستجو..."}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/fi.js b/bower_components/select2/dist/js/i18n/fi.js
      deleted file mode 100644
      index 9e60f26a05..0000000000
      --- a/bower_components/select2/dist/js/i18n/fi.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Ole hyvä ja anna "+t+" merkkiä vähemmän"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Ole hyvä ja anna "+t+" merkkiä lisää"},loadingMore:function(){return"Ladataan lisää tuloksia…"},maximumSelected:function(e){return"Voit valita ainoastaan "+e.maximum+" kpl"},noResults:function(){return"Ei tuloksia"},searching:function(){}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/fr.js b/bower_components/select2/dist/js/i18n/fr.js
      deleted file mode 100644
      index e4a6650097..0000000000
      --- a/bower_components/select2/dist/js/i18n/fr.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Supprimez "+t+" caractère";return t!==1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Saisissez "+t+" caractère";return t!==1&&(n+="s"),n},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){var t="Vous pouvez seulement sélectionner "+e.maximum+" élément";return e.maximum!==1&&(t+="s"),t},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/gl.js b/bower_components/select2/dist/js/i18n/gl.js
      deleted file mode 100644
      index 02f258f928..0000000000
      --- a/bower_components/select2/dist/js/i18n/gl.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/gl",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Elimine ";return t===1?n+="un carácter":n+=t+" caracteres",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Engada ";return t===1?n+="un carácter":n+=t+" caracteres",n},loadingMore:function(){return"Cargando máis resultados…"},maximumSelected:function(e){var t="Só pode ";return e.maximum===1?t+="un elemento":t+=e.maximum+" elementos",t},noResults:function(){return"Non se atoparon resultados"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/he.js b/bower_components/select2/dist/js/i18n/he.js
      deleted file mode 100644
      index 881f8d389f..0000000000
      --- a/bower_components/select2/dist/js/i18n/he.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/he",[],function(){return{errorLoading:function(){return"שגיאה בטעינת התוצאות"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="נא למחוק ";return t===1?n+="תו אחד":n+=t+" תווים",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="נא להכניס ";return t===1?n+="תו אחד":n+=t+" תווים",n+=" או יותר",n},loadingMore:function(){return"טוען תוצאות נוספות…"},maximumSelected:function(e){var t="באפשרותך לבחור עד ";return e.maximum===1?t+="פריט אחד":t+=e.maximum+" פריטים",t},noResults:function(){return"לא נמצאו תוצאות"},searching:function(){return"מחפש…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/hi.js b/bower_components/select2/dist/js/i18n/hi.js
      deleted file mode 100644
      index e829684268..0000000000
      --- a/bower_components/select2/dist/js/i18n/hi.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hi",[],function(){return{errorLoading:function(){return"परिणामों को लोड नहीं किया जा सका।"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" अक्षर को हटा दें";return t>1&&(n=t+" अक्षरों को हटा दें "),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="कृपया "+t+" या अधिक अक्षर दर्ज करें";return n},loadingMore:function(){return"अधिक परिणाम लोड हो रहे है..."},maximumSelected:function(e){var t="आप केवल "+e.maximum+" आइटम का चयन कर सकते हैं";return t},noResults:function(){return"कोई परिणाम नहीं मिला"},searching:function(){return"खोज रहा है..."}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/hr.js b/bower_components/select2/dist/js/i18n/hr.js
      deleted file mode 100644
      index 89f7b12bff..0000000000
      --- a/bower_components/select2/dist/js/i18n/hr.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hr",[],function(){function e(e){var t=" "+e+" znak";return e%10<5&&e%10>0&&(e%100<5||e%100>19)?e%10>1&&(t+="a"):t+="ova",t}return{errorLoading:function(){return"Preuzimanje nije uspjelo."},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Unesite "+e(n)},inputTooShort:function(t){var n=t.minimum-t.input.length;return"Unesite još "+e(n)},loadingMore:function(){return"Učitavanje rezultata…"},maximumSelected:function(e){return"Maksimalan broj odabranih stavki je "+e.maximum},noResults:function(){return"Nema rezultata"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/hu.js b/bower_components/select2/dist/js/i18n/hu.js
      deleted file mode 100644
      index 74c8a90dec..0000000000
      --- a/bower_components/select2/dist/js/i18n/hu.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/hu",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum;return"Túl hosszú. "+t+" karakterrel több, mint kellene."},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Túl rövid. Még "+t+" karakter hiányzik."},loadingMore:function(){return"Töltés…"},maximumSelected:function(e){return"Csak "+e.maximum+" elemet lehet kiválasztani."},noResults:function(){return"Nincs találat."},searching:function(){return"Keresés…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/id.js b/bower_components/select2/dist/js/i18n/id.js
      deleted file mode 100644
      index 9586782618..0000000000
      --- a/bower_components/select2/dist/js/i18n/id.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/id",[],function(){return{errorLoading:function(){return"Data tidak boleh diambil."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Hapuskan "+t+" huruf"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Masukkan "+t+" huruf lagi"},loadingMore:function(){return"Mengambil data…"},maximumSelected:function(e){return"Anda hanya dapat memilih "+e.maximum+" pilihan"},noResults:function(){return"Tidak ada data yang sesuai"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/is.js b/bower_components/select2/dist/js/i18n/is.js
      deleted file mode 100644
      index ab97a14d18..0000000000
      --- a/bower_components/select2/dist/js/i18n/is.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/is",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vinsamlegast styttið texta um "+t+" staf";return t<=1?n:n+"i"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vinsamlegast skrifið "+t+" staf";return t>1&&(n+="i"),n+=" í viðbót",n},loadingMore:function(){return"Sæki fleiri niðurstöður…"},maximumSelected:function(e){return"Þú getur aðeins valið "+e.maximum+" atriði"},noResults:function(){return"Ekkert fannst"},searching:function(){return"Leita…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/it.js b/bower_components/select2/dist/js/i18n/it.js
      deleted file mode 100644
      index 7796b9f76a..0000000000
      --- a/bower_components/select2/dist/js/i18n/it.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/it",[],function(){return{errorLoading:function(){return"I risultati non possono essere caricati."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Per favore cancella "+t+" caratter";return t!==1?n+="i":n+="e",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Per favore inserisci "+t+" o più caratteri";return n},loadingMore:function(){return"Caricando più risultati…"},maximumSelected:function(e){var t="Puoi selezionare solo "+e.maximum+" element";return e.maximum!==1?t+="i":t+="o",t},noResults:function(){return"Nessun risultato trovato"},searching:function(){return"Sto cercando…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/ja.js b/bower_components/select2/dist/js/i18n/ja.js
      deleted file mode 100644
      index 9f4fff6cb2..0000000000
      --- a/bower_components/select2/dist/js/i18n/ja.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ja",[],function(){return{errorLoading:function(){return"結果が読み込まれませんでした"},inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" 文字を削除してください";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="少なくとも "+t+" 文字を入力してください";return n},loadingMore:function(){return"読み込み中…"},maximumSelected:function(e){var t=e.maximum+" 件しか選択できません";return t},noResults:function(){return"対象が見つかりません"},searching:function(){return"検索しています…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/km.js b/bower_components/select2/dist/js/i18n/km.js
      deleted file mode 100644
      index 8e94adcf3a..0000000000
      --- a/bower_components/select2/dist/js/i18n/km.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/km",[],function(){return{errorLoading:function(){return"មិនអាចទាញយកទិន្នន័យ"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="សូមលុបចេញ  "+t+" អក្សរ";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="សូមបញ្ចូល"+t+" អក្សរ រឺ ច្រើនជាងនេះ";return n},loadingMore:function(){return"កំពុងទាញយកទិន្នន័យបន្ថែម..."},maximumSelected:function(e){var t="អ្នកអាចជ្រើសរើសបានតែ "+e.maximum+" ជម្រើសប៉ុណ្ណោះ";return t},noResults:function(){return"មិនមានលទ្ធផល"},searching:function(){return"កំពុងស្វែងរក..."}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/ko.js b/bower_components/select2/dist/js/i18n/ko.js
      deleted file mode 100644
      index 4ed03215fc..0000000000
      --- a/bower_components/select2/dist/js/i18n/ko.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ko",[],function(){return{errorLoading:function(){return"결과를 불러올 수 없습니다."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="너무 깁니다. "+t+" 글자 지워주세요.";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="너무 짧습니다. "+t+" 글자 더 입력해주세요.";return n},loadingMore:function(){return"불러오는 중…"},maximumSelected:function(e){var t="최대 "+e.maximum+"개까지만 선택 가능합니다.";return t},noResults:function(){return"결과가 없습니다."},searching:function(){return"검색 중…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/lt.js b/bower_components/select2/dist/js/i18n/lt.js
      deleted file mode 100644
      index 05f3a6e5eb..0000000000
      --- a/bower_components/select2/dist/js/i18n/lt.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lt",[],function(){function e(e,t,n,r){return e%10===1&&(e%100<11||e%100>19)?t:e%10>=2&&e%10<=9&&(e%100<11||e%100>19)?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Pašalinkite "+n+" simbol";return r+=e(n,"į","ius","ių"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Įrašykite dar "+n+" simbol";return r+=e(n,"į","ius","ių"),r},loadingMore:function(){return"Kraunama daugiau rezultatų…"},maximumSelected:function(t){var n="Jūs galite pasirinkti tik "+t.maximum+" element";return n+=e(t.maximum,"ą","us","ų"),n},noResults:function(){return"Atitikmenų nerasta"},searching:function(){return"Ieškoma…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/lv.js b/bower_components/select2/dist/js/i18n/lv.js
      deleted file mode 100644
      index df8ee94232..0000000000
      --- a/bower_components/select2/dist/js/i18n/lv.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/lv",[],function(){function e(e,t,n,r){return e===11?t:e%10===1?n:r}return{inputTooLong:function(t){var n=t.input.length-t.maximum,r="Lūdzu ievadiet par  "+n;return r+=" simbol"+e(n,"iem","u","iem"),r+" mazāk"},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Lūdzu ievadiet vēl "+n;return r+=" simbol"+e(n,"us","u","us"),r},loadingMore:function(){return"Datu ielāde…"},maximumSelected:function(t){var n="Jūs varat izvēlēties ne vairāk kā "+t.maximum;return n+=" element"+e(t.maximum,"us","u","us"),n},noResults:function(){return"Sakritību nav"},searching:function(){return"Meklēšana…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/mk.js b/bower_components/select2/dist/js/i18n/mk.js
      deleted file mode 100644
      index 319ecca14b..0000000000
      --- a/bower_components/select2/dist/js/i18n/mk.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/mk",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Ве молиме внесете "+e.maximum+" помалку карактер";return e.maximum!==1&&(n+="и"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Ве молиме внесете уште "+e.maximum+" карактер";return e.maximum!==1&&(n+="и"),n},loadingMore:function(){return"Вчитување резултати…"},maximumSelected:function(e){var t="Можете да изберете само "+e.maximum+" ставк";return e.maximum===1?t+="а":t+="и",t},noResults:function(){return"Нема пронајдено совпаѓања"},searching:function(){return"Пребарување…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/ms.js b/bower_components/select2/dist/js/i18n/ms.js
      deleted file mode 100644
      index 4258f125b5..0000000000
      --- a/bower_components/select2/dist/js/i18n/ms.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ms",[],function(){return{errorLoading:function(){return"Keputusan tidak berjaya dimuatkan."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Sila hapuskan "+t+" aksara"},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Sila masukkan "+t+" atau lebih aksara"},loadingMore:function(){return"Sedang memuatkan keputusan…"},maximumSelected:function(e){return"Anda hanya boleh memilih "+e.maximum+" pilihan"},noResults:function(){return"Tiada padanan yang ditemui"},searching:function(){return"Mencari…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/nb.js b/bower_components/select2/dist/js/i18n/nb.js
      deleted file mode 100644
      index 6770087cee..0000000000
      --- a/bower_components/select2/dist/js/i18n/nb.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nb",[],function(){return{errorLoading:function(){return"Kunne ikke hente resultater."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Vennligst fjern "+t+" tegn"},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vennligst skriv inn ";return t>1?n+=" flere tegn":n+=" tegn til",n},loadingMore:function(){return"Laster flere resultater…"},maximumSelected:function(e){return"Du kan velge maks "+e.maximum+" elementer"},noResults:function(){return"Ingen treff"},searching:function(){return"Søker…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/nl.js b/bower_components/select2/dist/js/i18n/nl.js
      deleted file mode 100644
      index 8bd5e3cf43..0000000000
      --- a/bower_components/select2/dist/js/i18n/nl.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Gelieve "+t+" karakters te verwijderen";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Gelieve "+t+" of meer karakters in te voeren";return n},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t=e.maximum==1?"kan":"kunnen",n="Er "+t+" maar "+e.maximum+" item";return e.maximum!=1&&(n+="s"),n+=" worden geselecteerd",n},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/pl.js b/bower_components/select2/dist/js/i18n/pl.js
      deleted file mode 100644
      index 54ba28e9ba..0000000000
      --- a/bower_components/select2/dist/js/i18n/pl.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pl",[],function(){var e=["znak","znaki","znaków"],t=["element","elementy","elementów"],n=function(t,n){if(t===1)return n[0];if(t>1&&t<=4)return n[1];if(t>=5)return n[2]};return{errorLoading:function(){return"Nie można załadować wyników."},inputTooLong:function(t){var r=t.input.length-t.maximum;return"Usuń "+r+" "+n(r,e)},inputTooShort:function(t){var r=t.minimum-t.input.length;return"Podaj przynajmniej "+r+" "+n(r,e)},loadingMore:function(){return"Trwa ładowanie…"},maximumSelected:function(e){return"Możesz zaznaczyć tylko "+e.maximum+" "+n(e.maximum,t)},noResults:function(){return"Brak wyników"},searching:function(){return"Trwa wyszukiwanie…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/pt-BR.js b/bower_components/select2/dist/js/i18n/pt-BR.js
      deleted file mode 100644
      index a6629c8aec..0000000000
      --- a/bower_components/select2/dist/js/i18n/pt-BR.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt-BR",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Apague "+t+" caracter";return t!=1&&(n+="es"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Digite "+t+" ou mais caracteres";return n},loadingMore:function(){return"Carregando mais resultados…"},maximumSelected:function(e){var t="Você só pode selecionar "+e.maximum+" ite";return e.maximum==1?t+="m":t+="ns",t},noResults:function(){return"Nenhum resultado encontrado"},searching:function(){return"Buscando…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/pt.js b/bower_components/select2/dist/js/i18n/pt.js
      deleted file mode 100644
      index 0cbda561b9..0000000000
      --- a/bower_components/select2/dist/js/i18n/pt.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/pt",[],function(){return{errorLoading:function(){return"Os resultados não puderam ser carregados."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Por favor apague "+t+" ";return n+=t!=1?"caracteres":"carácter",n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Introduza "+t+" ou mais caracteres";return n},loadingMore:function(){return"A carregar mais resultados…"},maximumSelected:function(e){var t="Apenas pode seleccionar "+e.maximum+" ";return t+=e.maximum!=1?"itens":"item",t},noResults:function(){return"Sem resultados"},searching:function(){return"A procurar…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/ro.js b/bower_components/select2/dist/js/i18n/ro.js
      deleted file mode 100644
      index 788a26376a..0000000000
      --- a/bower_components/select2/dist/js/i18n/ro.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ro",[],function(){return{errorLoading:function(){return"Rezultatele nu au putut fi incărcate."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vă rugăm să ștergeți"+t+" caracter";return t!==1&&(n+="e"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vă rugăm să introduceți "+t+"sau mai multe caractere";return n},loadingMore:function(){return"Se încarcă mai multe rezultate…"},maximumSelected:function(e){var t="Aveți voie să selectați cel mult "+e.maximum;return t+=" element",e.maximum!==1&&(t+="e"),t},noResults:function(){return"Nu au fost găsite rezultate"},searching:function(){return"Căutare…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/ru.js b/bower_components/select2/dist/js/i18n/ru.js
      deleted file mode 100644
      index 9ecab80911..0000000000
      --- a/bower_components/select2/dist/js/i18n/ru.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/ru",[],function(){function e(e,t,n,r){return e%10<5&&e%10>0&&e%100<5||e%100>20?e%10>1?n:t:r}return{errorLoading:function(){return"Невозможно загрузить результаты"},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Пожалуйста, введите на "+n+" символ";return r+=e(n,"","a","ов"),r+=" меньше",r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Пожалуйста, введите еще хотя бы "+n+" символ";return r+=e(n,"","a","ов"),r},loadingMore:function(){return"Загрузка данных…"},maximumSelected:function(t){var n="Вы можете выбрать не более "+t.maximum+" элемент";return n+=e(t.maximum,"","a","ов"),n},noResults:function(){return"Совпадений не найдено"},searching:function(){return"Поиск…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/sk.js b/bower_components/select2/dist/js/i18n/sk.js
      deleted file mode 100644
      index 82f294138a..0000000000
      --- a/bower_components/select2/dist/js/i18n/sk.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sk",[],function(){var e={2:function(e){return e?"dva":"dve"},3:function(){return"tri"},4:function(){return"štyri"}};return{inputTooLong:function(t){var n=t.input.length-t.maximum;return n==1?"Prosím, zadajte o jeden znak menej":n>=2&&n<=4?"Prosím, zadajte o "+e[n](!0)+" znaky menej":"Prosím, zadajte o "+n+" znakov menej"},inputTooShort:function(t){var n=t.minimum-t.input.length;return n==1?"Prosím, zadajte ešte jeden znak":n<=4?"Prosím, zadajte ešte ďalšie "+e[n](!0)+" znaky":"Prosím, zadajte ešte ďalších "+n+" znakov"},loadingMore:function(){return"Loading more results…"},maximumSelected:function(t){return t.maximum==1?"Môžete zvoliť len jednu položku":t.maximum>=2&&t.maximum<=4?"Môžete zvoliť najviac "+e[t.maximum](!1)+" položky":"Môžete zvoliť najviac "+t.maximum+" položiek"},noResults:function(){return"Nenašli sa žiadne položky"},searching:function(){return"Vyhľadávanie…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/sr-Cyrl.js b/bower_components/select2/dist/js/i18n/sr-Cyrl.js
      deleted file mode 100644
      index e9453940cc..0000000000
      --- a/bower_components/select2/dist/js/i18n/sr-Cyrl.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr-Cyrl",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Преузимање није успело."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Обришите "+n+" симбол";return r+=e(n,"","а","а"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Укуцајте бар још "+n+" симбол";return r+=e(n,"","а","а"),r},loadingMore:function(){return"Преузимање још резултата…"},maximumSelected:function(t){var n="Можете изабрати само "+t.maximum+" ставк";return n+=e(t.maximum,"у","е","и"),n},noResults:function(){return"Ништа није пронађено"},searching:function(){return"Претрага…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/sr.js b/bower_components/select2/dist/js/i18n/sr.js
      deleted file mode 100644
      index ac0cc721fd..0000000000
      --- a/bower_components/select2/dist/js/i18n/sr.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sr",[],function(){function e(e,t,n,r){return e%10==1&&e%100!=11?t:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?n:r}return{errorLoading:function(){return"Preuzimanje nije uspelo."},inputTooLong:function(t){var n=t.input.length-t.maximum,r="Obrišite "+n+" simbol";return r+=e(n,"","a","a"),r},inputTooShort:function(t){var n=t.minimum-t.input.length,r="Ukucajte bar još "+n+" simbol";return r+=e(n,"","a","a"),r},loadingMore:function(){return"Preuzimanje još rezultata…"},maximumSelected:function(t){var n="Možete izabrati samo "+t.maximum+" stavk";return n+=e(t.maximum,"u","e","i"),n},noResults:function(){return"Ništa nije pronađeno"},searching:function(){return"Pretraga…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/sv.js b/bower_components/select2/dist/js/i18n/sv.js
      deleted file mode 100644
      index bedac08c47..0000000000
      --- a/bower_components/select2/dist/js/i18n/sv.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/sv",[],function(){return{errorLoading:function(){return"Resultat kunde inte laddas."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vänligen sudda ut "+t+" tecken";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vänligen skriv in "+t+" eller fler tecken";return n},loadingMore:function(){return"Laddar fler resultat…"},maximumSelected:function(e){var t="Du kan max välja "+e.maximum+" element";return t},noResults:function(){return"Inga träffar"},searching:function(){return"Söker…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/th.js b/bower_components/select2/dist/js/i18n/th.js
      deleted file mode 100644
      index 097a86c699..0000000000
      --- a/bower_components/select2/dist/js/i18n/th.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/th",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="โปรดลบออก "+t+" ตัวอักษร";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="โปรดพิมพ์เพิ่มอีก "+t+" ตัวอักษร";return n},loadingMore:function(){return"กำลังค้นข้อมูลเพิ่ม…"},maximumSelected:function(e){var t="คุณสามารถเลือกได้ไม่เกิน "+e.maximum+" รายการ";return t},noResults:function(){return"ไม่พบข้อมูล"},searching:function(){return"กำลังค้นข้อมูล…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/tr.js b/bower_components/select2/dist/js/i18n/tr.js
      deleted file mode 100644
      index 25d27a877f..0000000000
      --- a/bower_components/select2/dist/js/i18n/tr.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/tr",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n=t+" karakter daha girmelisiniz";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="En az "+t+" karakter daha girmelisiniz";return n},loadingMore:function(){return"Daha fazla…"},maximumSelected:function(e){var t="Sadece "+e.maximum+" seçim yapabilirsiniz";return t},noResults:function(){return"Sonuç bulunamadı"},searching:function(){return"Aranıyor…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/uk.js b/bower_components/select2/dist/js/i18n/uk.js
      deleted file mode 100644
      index eb3ca89031..0000000000
      --- a/bower_components/select2/dist/js/i18n/uk.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/uk",[],function(){function e(e,t,n,r){return e%100>10&&e%100<15?r:e%10===1?t:e%10>1&&e%10<5?n:r}return{errorLoading:function(){return"Неможливо завантажити результати"},inputTooLong:function(t){var n=t.input.length-t.maximum;return"Будь ласка, видаліть "+n+" "+e(t.maximum,"літеру","літери","літер")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Будь ласка, введіть "+t+" або більше літер"},loadingMore:function(){return"Завантаження інших результатів…"},maximumSelected:function(t){return"Ви можете вибрати лише "+t.maximum+" "+e(t.maximum,"пункт","пункти","пунктів")},noResults:function(){return"Нічого не знайдено"},searching:function(){return"Пошук…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/vi.js b/bower_components/select2/dist/js/i18n/vi.js
      deleted file mode 100644
      index 8975b8ac6e..0000000000
      --- a/bower_components/select2/dist/js/i18n/vi.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/vi",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="Vui lòng nhập ít hơn "+t+" ký tự";return t!=1&&(n+="s"),n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="Vui lòng nhập nhiều hơn "+t+' ký tự"';return n},loadingMore:function(){return"Đang lấy thêm kết quả…"},maximumSelected:function(e){var t="Chỉ có thể chọn được "+e.maximum+" lựa chọn";return t},noResults:function(){return"Không tìm thấy kết quả"},searching:function(){return"Đang tìm…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/zh-CN.js b/bower_components/select2/dist/js/i18n/zh-CN.js
      deleted file mode 100644
      index 2ed959723d..0000000000
      --- a/bower_components/select2/dist/js/i18n/zh-CN.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-CN",[],function(){return{errorLoading:function(){return"无法载入结果。"},inputTooLong:function(e){var t=e.input.length-e.maximum,n="请删除"+t+"个字符";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="请再输入至少"+t+"个字符";return n},loadingMore:function(){return"载入更多结果…"},maximumSelected:function(e){var t="最多只能选择"+e.maximum+"个项目";return t},noResults:function(){return"未找到结果"},searching:function(){return"搜索中…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/i18n/zh-TW.js b/bower_components/select2/dist/js/i18n/zh-TW.js
      deleted file mode 100644
      index ea0812ee0d..0000000000
      --- a/bower_components/select2/dist/js/i18n/zh-TW.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! Select2 4.0.3 | https://github.com/select2/select2/blob/master/LICENSE.md */
      -
      -(function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;return e.define("select2/i18n/zh-TW",[],function(){return{inputTooLong:function(e){var t=e.input.length-e.maximum,n="請刪掉"+t+"個字元";return n},inputTooShort:function(e){var t=e.minimum-e.input.length,n="請再輸入"+t+"個字元";return n},loadingMore:function(){return"載入中…"},maximumSelected:function(e){var t="你只能選擇最多"+e.maximum+"項";return t},noResults:function(){return"沒有找到相符的項目"},searching:function(){return"搜尋中…"}}}),{define:e.define,require:e.require}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/select2.full.js b/bower_components/select2/dist/js/select2.full.js
      deleted file mode 100644
      index e750834ef5..0000000000
      --- a/bower_components/select2/dist/js/select2.full.js
      +++ /dev/null
      @@ -1,6436 +0,0 @@
      -/*!
      - * Select2 4.0.3
      - * https://select2.github.io
      - *
      - * Released under the MIT license
      - * https://github.com/select2/select2/blob/master/LICENSE.md
      - */
      -(function (factory) {
      -  if (typeof define === 'function' && define.amd) {
      -    // AMD. Register as an anonymous module.
      -    define(['jquery'], factory);
      -  } else if (typeof exports === 'object') {
      -    // Node/CommonJS
      -    factory(require('jquery'));
      -  } else {
      -    // Browser globals
      -    factory(jQuery);
      -  }
      -}(function (jQuery) {
      -  // This is needed so we can catch the AMD loader configuration and use it
      -  // The inner file should be wrapped (by `banner.start.js`) in a function that
      -  // returns the AMD loader references.
      -  var S2 =
      -(function () {
      -  // Restore the Select2 AMD loader so it can be used
      -  // Needed mostly in the language files, where the loader is not inserted
      -  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
      -    var S2 = jQuery.fn.select2.amd;
      -  }
      -var S2;(function () { if (!S2 || !S2.requirejs) {
      -if (!S2) { S2 = {}; } else { require = S2; }
      -/**
      - * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
      - * Available via the MIT or new BSD license.
      - * see: http://github.com/jrburke/almond for details
      - */
      -//Going sloppy to avoid 'use strict' string cost, but strict practices should
      -//be followed.
      -/*jslint sloppy: true */
      -/*global setTimeout: false */
      -
      -var requirejs, require, define;
      -(function (undef) {
      -    var main, req, makeMap, handlers,
      -        defined = {},
      -        waiting = {},
      -        config = {},
      -        defining = {},
      -        hasOwn = Object.prototype.hasOwnProperty,
      -        aps = [].slice,
      -        jsSuffixRegExp = /\.js$/;
      -
      -    function hasProp(obj, prop) {
      -        return hasOwn.call(obj, prop);
      -    }
      -
      -    /**
      -     * Given a relative module name, like ./something, normalize it to
      -     * a real name that can be mapped to a path.
      -     * @param {String} name the relative name
      -     * @param {String} baseName a real name that the name arg is relative
      -     * to.
      -     * @returns {String} normalized name
      -     */
      -    function normalize(name, baseName) {
      -        var nameParts, nameSegment, mapValue, foundMap, lastIndex,
      -            foundI, foundStarMap, starI, i, j, part,
      -            baseParts = baseName && baseName.split("/"),
      -            map = config.map,
      -            starMap = (map && map['*']) || {};
      -
      -        //Adjust any relative paths.
      -        if (name && name.charAt(0) === ".") {
      -            //If have a base name, try to normalize against it,
      -            //otherwise, assume it is a top-level require that will
      -            //be relative to baseUrl in the end.
      -            if (baseName) {
      -                name = name.split('/');
      -                lastIndex = name.length - 1;
      -
      -                // Node .js allowance:
      -                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
      -                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
      -                }
      -
      -                //Lop off the last part of baseParts, so that . matches the
      -                //"directory" and not name of the baseName's module. For instance,
      -                //baseName of "one/two/three", maps to "one/two/three.js", but we
      -                //want the directory, "one/two" for this normalization.
      -                name = baseParts.slice(0, baseParts.length - 1).concat(name);
      -
      -                //start trimDots
      -                for (i = 0; i < name.length; i += 1) {
      -                    part = name[i];
      -                    if (part === ".") {
      -                        name.splice(i, 1);
      -                        i -= 1;
      -                    } else if (part === "..") {
      -                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {
      -                            //End of the line. Keep at least one non-dot
      -                            //path segment at the front so it can be mapped
      -                            //correctly to disk. Otherwise, there is likely
      -                            //no path mapping for a path starting with '..'.
      -                            //This can still fail, but catches the most reasonable
      -                            //uses of ..
      -                            break;
      -                        } else if (i > 0) {
      -                            name.splice(i - 1, 2);
      -                            i -= 2;
      -                        }
      -                    }
      -                }
      -                //end trimDots
      -
      -                name = name.join("/");
      -            } else if (name.indexOf('./') === 0) {
      -                // No baseName, so this is ID is resolved relative
      -                // to baseUrl, pull off the leading dot.
      -                name = name.substring(2);
      -            }
      -        }
      -
      -        //Apply map config if available.
      -        if ((baseParts || starMap) && map) {
      -            nameParts = name.split('/');
      -
      -            for (i = nameParts.length; i > 0; i -= 1) {
      -                nameSegment = nameParts.slice(0, i).join("/");
      -
      -                if (baseParts) {
      -                    //Find the longest baseName segment match in the config.
      -                    //So, do joins on the biggest to smallest lengths of baseParts.
      -                    for (j = baseParts.length; j > 0; j -= 1) {
      -                        mapValue = map[baseParts.slice(0, j).join('/')];
      -
      -                        //baseName segment has  config, find if it has one for
      -                        //this name.
      -                        if (mapValue) {
      -                            mapValue = mapValue[nameSegment];
      -                            if (mapValue) {
      -                                //Match, update name to the new value.
      -                                foundMap = mapValue;
      -                                foundI = i;
      -                                break;
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                if (foundMap) {
      -                    break;
      -                }
      -
      -                //Check for a star map match, but just hold on to it,
      -                //if there is a shorter segment match later in a matching
      -                //config, then favor over this star map.
      -                if (!foundStarMap && starMap && starMap[nameSegment]) {
      -                    foundStarMap = starMap[nameSegment];
      -                    starI = i;
      -                }
      -            }
      -
      -            if (!foundMap && foundStarMap) {
      -                foundMap = foundStarMap;
      -                foundI = starI;
      -            }
      -
      -            if (foundMap) {
      -                nameParts.splice(0, foundI, foundMap);
      -                name = nameParts.join('/');
      -            }
      -        }
      -
      -        return name;
      -    }
      -
      -    function makeRequire(relName, forceSync) {
      -        return function () {
      -            //A version of a require function that passes a moduleName
      -            //value for items that may need to
      -            //look up paths relative to the moduleName
      -            var args = aps.call(arguments, 0);
      -
      -            //If first arg is not require('string'), and there is only
      -            //one arg, it is the array form without a callback. Insert
      -            //a null so that the following concat is correct.
      -            if (typeof args[0] !== 'string' && args.length === 1) {
      -                args.push(null);
      -            }
      -            return req.apply(undef, args.concat([relName, forceSync]));
      -        };
      -    }
      -
      -    function makeNormalize(relName) {
      -        return function (name) {
      -            return normalize(name, relName);
      -        };
      -    }
      -
      -    function makeLoad(depName) {
      -        return function (value) {
      -            defined[depName] = value;
      -        };
      -    }
      -
      -    function callDep(name) {
      -        if (hasProp(waiting, name)) {
      -            var args = waiting[name];
      -            delete waiting[name];
      -            defining[name] = true;
      -            main.apply(undef, args);
      -        }
      -
      -        if (!hasProp(defined, name) && !hasProp(defining, name)) {
      -            throw new Error('No ' + name);
      -        }
      -        return defined[name];
      -    }
      -
      -    //Turns a plugin!resource to [plugin, resource]
      -    //with the plugin being undefined if the name
      -    //did not have a plugin prefix.
      -    function splitPrefix(name) {
      -        var prefix,
      -            index = name ? name.indexOf('!') : -1;
      -        if (index > -1) {
      -            prefix = name.substring(0, index);
      -            name = name.substring(index + 1, name.length);
      -        }
      -        return [prefix, name];
      -    }
      -
      -    /**
      -     * Makes a name map, normalizing the name, and using a plugin
      -     * for normalization if necessary. Grabs a ref to plugin
      -     * too, as an optimization.
      -     */
      -    makeMap = function (name, relName) {
      -        var plugin,
      -            parts = splitPrefix(name),
      -            prefix = parts[0];
      -
      -        name = parts[1];
      -
      -        if (prefix) {
      -            prefix = normalize(prefix, relName);
      -            plugin = callDep(prefix);
      -        }
      -
      -        //Normalize according
      -        if (prefix) {
      -            if (plugin && plugin.normalize) {
      -                name = plugin.normalize(name, makeNormalize(relName));
      -            } else {
      -                name = normalize(name, relName);
      -            }
      -        } else {
      -            name = normalize(name, relName);
      -            parts = splitPrefix(name);
      -            prefix = parts[0];
      -            name = parts[1];
      -            if (prefix) {
      -                plugin = callDep(prefix);
      -            }
      -        }
      -
      -        //Using ridiculous property names for space reasons
      -        return {
      -            f: prefix ? prefix + '!' + name : name, //fullName
      -            n: name,
      -            pr: prefix,
      -            p: plugin
      -        };
      -    };
      -
      -    function makeConfig(name) {
      -        return function () {
      -            return (config && config.config && config.config[name]) || {};
      -        };
      -    }
      -
      -    handlers = {
      -        require: function (name) {
      -            return makeRequire(name);
      -        },
      -        exports: function (name) {
      -            var e = defined[name];
      -            if (typeof e !== 'undefined') {
      -                return e;
      -            } else {
      -                return (defined[name] = {});
      -            }
      -        },
      -        module: function (name) {
      -            return {
      -                id: name,
      -                uri: '',
      -                exports: defined[name],
      -                config: makeConfig(name)
      -            };
      -        }
      -    };
      -
      -    main = function (name, deps, callback, relName) {
      -        var cjsModule, depName, ret, map, i,
      -            args = [],
      -            callbackType = typeof callback,
      -            usingExports;
      -
      -        //Use name if no relName
      -        relName = relName || name;
      -
      -        //Call the callback to define the module, if necessary.
      -        if (callbackType === 'undefined' || callbackType === 'function') {
      -            //Pull out the defined dependencies and pass the ordered
      -            //values to the callback.
      -            //Default to [require, exports, module] if no deps
      -            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
      -            for (i = 0; i < deps.length; i += 1) {
      -                map = makeMap(deps[i], relName);
      -                depName = map.f;
      -
      -                //Fast path CommonJS standard dependencies.
      -                if (depName === "require") {
      -                    args[i] = handlers.require(name);
      -                } else if (depName === "exports") {
      -                    //CommonJS module spec 1.1
      -                    args[i] = handlers.exports(name);
      -                    usingExports = true;
      -                } else if (depName === "module") {
      -                    //CommonJS module spec 1.1
      -                    cjsModule = args[i] = handlers.module(name);
      -                } else if (hasProp(defined, depName) ||
      -                           hasProp(waiting, depName) ||
      -                           hasProp(defining, depName)) {
      -                    args[i] = callDep(depName);
      -                } else if (map.p) {
      -                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
      -                    args[i] = defined[depName];
      -                } else {
      -                    throw new Error(name + ' missing ' + depName);
      -                }
      -            }
      -
      -            ret = callback ? callback.apply(defined[name], args) : undefined;
      -
      -            if (name) {
      -                //If setting exports via "module" is in play,
      -                //favor that over return value and exports. After that,
      -                //favor a non-undefined return value over exports use.
      -                if (cjsModule && cjsModule.exports !== undef &&
      -                        cjsModule.exports !== defined[name]) {
      -                    defined[name] = cjsModule.exports;
      -                } else if (ret !== undef || !usingExports) {
      -                    //Use the return value from the function.
      -                    defined[name] = ret;
      -                }
      -            }
      -        } else if (name) {
      -            //May just be an object definition for the module. Only
      -            //worry about defining if have a module name.
      -            defined[name] = callback;
      -        }
      -    };
      -
      -    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
      -        if (typeof deps === "string") {
      -            if (handlers[deps]) {
      -                //callback in this case is really relName
      -                return handlers[deps](callback);
      -            }
      -            //Just return the module wanted. In this scenario, the
      -            //deps arg is the module name, and second arg (if passed)
      -            //is just the relName.
      -            //Normalize module name, if it contains . or ..
      -            return callDep(makeMap(deps, callback).f);
      -        } else if (!deps.splice) {
      -            //deps is a config object, not an array.
      -            config = deps;
      -            if (config.deps) {
      -                req(config.deps, config.callback);
      -            }
      -            if (!callback) {
      -                return;
      -            }
      -
      -            if (callback.splice) {
      -                //callback is an array, which means it is a dependency list.
      -                //Adjust args if there are dependencies
      -                deps = callback;
      -                callback = relName;
      -                relName = null;
      -            } else {
      -                deps = undef;
      -            }
      -        }
      -
      -        //Support require(['a'])
      -        callback = callback || function () {};
      -
      -        //If relName is a function, it is an errback handler,
      -        //so remove it.
      -        if (typeof relName === 'function') {
      -            relName = forceSync;
      -            forceSync = alt;
      -        }
      -
      -        //Simulate async callback;
      -        if (forceSync) {
      -            main(undef, deps, callback, relName);
      -        } else {
      -            //Using a non-zero value because of concern for what old browsers
      -            //do, and latest browsers "upgrade" to 4 if lower value is used:
      -            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
      -            //If want a value immediately, use require('id') instead -- something
      -            //that works in almond on the global level, but not guaranteed and
      -            //unlikely to work in other AMD implementations.
      -            setTimeout(function () {
      -                main(undef, deps, callback, relName);
      -            }, 4);
      -        }
      -
      -        return req;
      -    };
      -
      -    /**
      -     * Just drops the config on the floor, but returns req in case
      -     * the config return value is used.
      -     */
      -    req.config = function (cfg) {
      -        return req(cfg);
      -    };
      -
      -    /**
      -     * Expose module registry for debugging and tooling
      -     */
      -    requirejs._defined = defined;
      -
      -    define = function (name, deps, callback) {
      -        if (typeof name !== 'string') {
      -            throw new Error('See almond README: incorrect module build, no module name');
      -        }
      -
      -        //This module may not have dependencies
      -        if (!deps.splice) {
      -            //deps is not an array, so probably means
      -            //an object literal or factory function for
      -            //the value. Adjust args.
      -            callback = deps;
      -            deps = [];
      -        }
      -
      -        if (!hasProp(defined, name) && !hasProp(waiting, name)) {
      -            waiting[name] = [name, deps, callback];
      -        }
      -    };
      -
      -    define.amd = {
      -        jQuery: true
      -    };
      -}());
      -
      -S2.requirejs = requirejs;S2.require = require;S2.define = define;
      -}
      -}());
      -S2.define("almond", function(){});
      -
      -/* global jQuery:false, $:false */
      -S2.define('jquery',[],function () {
      -  var _$ = jQuery || $;
      -
      -  if (_$ == null && console && console.error) {
      -    console.error(
      -      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
      -      'found. Make sure that you are including jQuery before Select2 on your ' +
      -      'web page.'
      -    );
      -  }
      -
      -  return _$;
      -});
      -
      -S2.define('select2/utils',[
      -  'jquery'
      -], function ($) {
      -  var Utils = {};
      -
      -  Utils.Extend = function (ChildClass, SuperClass) {
      -    var __hasProp = {}.hasOwnProperty;
      -
      -    function BaseConstructor () {
      -      this.constructor = ChildClass;
      -    }
      -
      -    for (var key in SuperClass) {
      -      if (__hasProp.call(SuperClass, key)) {
      -        ChildClass[key] = SuperClass[key];
      -      }
      -    }
      -
      -    BaseConstructor.prototype = SuperClass.prototype;
      -    ChildClass.prototype = new BaseConstructor();
      -    ChildClass.__super__ = SuperClass.prototype;
      -
      -    return ChildClass;
      -  };
      -
      -  function getMethods (theClass) {
      -    var proto = theClass.prototype;
      -
      -    var methods = [];
      -
      -    for (var methodName in proto) {
      -      var m = proto[methodName];
      -
      -      if (typeof m !== 'function') {
      -        continue;
      -      }
      -
      -      if (methodName === 'constructor') {
      -        continue;
      -      }
      -
      -      methods.push(methodName);
      -    }
      -
      -    return methods;
      -  }
      -
      -  Utils.Decorate = function (SuperClass, DecoratorClass) {
      -    var decoratedMethods = getMethods(DecoratorClass);
      -    var superMethods = getMethods(SuperClass);
      -
      -    function DecoratedClass () {
      -      var unshift = Array.prototype.unshift;
      -
      -      var argCount = DecoratorClass.prototype.constructor.length;
      -
      -      var calledConstructor = SuperClass.prototype.constructor;
      -
      -      if (argCount > 0) {
      -        unshift.call(arguments, SuperClass.prototype.constructor);
      -
      -        calledConstructor = DecoratorClass.prototype.constructor;
      -      }
      -
      -      calledConstructor.apply(this, arguments);
      -    }
      -
      -    DecoratorClass.displayName = SuperClass.displayName;
      -
      -    function ctr () {
      -      this.constructor = DecoratedClass;
      -    }
      -
      -    DecoratedClass.prototype = new ctr();
      -
      -    for (var m = 0; m < superMethods.length; m++) {
      -        var superMethod = superMethods[m];
      -
      -        DecoratedClass.prototype[superMethod] =
      -          SuperClass.prototype[superMethod];
      -    }
      -
      -    var calledMethod = function (methodName) {
      -      // Stub out the original method if it's not decorating an actual method
      -      var originalMethod = function () {};
      -
      -      if (methodName in DecoratedClass.prototype) {
      -        originalMethod = DecoratedClass.prototype[methodName];
      -      }
      -
      -      var decoratedMethod = DecoratorClass.prototype[methodName];
      -
      -      return function () {
      -        var unshift = Array.prototype.unshift;
      -
      -        unshift.call(arguments, originalMethod);
      -
      -        return decoratedMethod.apply(this, arguments);
      -      };
      -    };
      -
      -    for (var d = 0; d < decoratedMethods.length; d++) {
      -      var decoratedMethod = decoratedMethods[d];
      -
      -      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
      -    }
      -
      -    return DecoratedClass;
      -  };
      -
      -  var Observable = function () {
      -    this.listeners = {};
      -  };
      -
      -  Observable.prototype.on = function (event, callback) {
      -    this.listeners = this.listeners || {};
      -
      -    if (event in this.listeners) {
      -      this.listeners[event].push(callback);
      -    } else {
      -      this.listeners[event] = [callback];
      -    }
      -  };
      -
      -  Observable.prototype.trigger = function (event) {
      -    var slice = Array.prototype.slice;
      -    var params = slice.call(arguments, 1);
      -
      -    this.listeners = this.listeners || {};
      -
      -    // Params should always come in as an array
      -    if (params == null) {
      -      params = [];
      -    }
      -
      -    // If there are no arguments to the event, use a temporary object
      -    if (params.length === 0) {
      -      params.push({});
      -    }
      -
      -    // Set the `_type` of the first object to the event
      -    params[0]._type = event;
      -
      -    if (event in this.listeners) {
      -      this.invoke(this.listeners[event], slice.call(arguments, 1));
      -    }
      -
      -    if ('*' in this.listeners) {
      -      this.invoke(this.listeners['*'], arguments);
      -    }
      -  };
      -
      -  Observable.prototype.invoke = function (listeners, params) {
      -    for (var i = 0, len = listeners.length; i < len; i++) {
      -      listeners[i].apply(this, params);
      -    }
      -  };
      -
      -  Utils.Observable = Observable;
      -
      -  Utils.generateChars = function (length) {
      -    var chars = '';
      -
      -    for (var i = 0; i < length; i++) {
      -      var randomChar = Math.floor(Math.random() * 36);
      -      chars += randomChar.toString(36);
      -    }
      -
      -    return chars;
      -  };
      -
      -  Utils.bind = function (func, context) {
      -    return function () {
      -      func.apply(context, arguments);
      -    };
      -  };
      -
      -  Utils._convertData = function (data) {
      -    for (var originalKey in data) {
      -      var keys = originalKey.split('-');
      -
      -      var dataLevel = data;
      -
      -      if (keys.length === 1) {
      -        continue;
      -      }
      -
      -      for (var k = 0; k < keys.length; k++) {
      -        var key = keys[k];
      -
      -        // Lowercase the first letter
      -        // By default, dash-separated becomes camelCase
      -        key = key.substring(0, 1).toLowerCase() + key.substring(1);
      -
      -        if (!(key in dataLevel)) {
      -          dataLevel[key] = {};
      -        }
      -
      -        if (k == keys.length - 1) {
      -          dataLevel[key] = data[originalKey];
      -        }
      -
      -        dataLevel = dataLevel[key];
      -      }
      -
      -      delete data[originalKey];
      -    }
      -
      -    return data;
      -  };
      -
      -  Utils.hasScroll = function (index, el) {
      -    // Adapted from the function created by @ShadowScripter
      -    // and adapted by @BillBarry on the Stack Exchange Code Review website.
      -    // The original code can be found at
      -    // http://codereview.stackexchange.com/q/13338
      -    // and was designed to be used with the Sizzle selector engine.
      -
      -    var $el = $(el);
      -    var overflowX = el.style.overflowX;
      -    var overflowY = el.style.overflowY;
      -
      -    //Check both x and y declarations
      -    if (overflowX === overflowY &&
      -        (overflowY === 'hidden' || overflowY === 'visible')) {
      -      return false;
      -    }
      -
      -    if (overflowX === 'scroll' || overflowY === 'scroll') {
      -      return true;
      -    }
      -
      -    return ($el.innerHeight() < el.scrollHeight ||
      -      $el.innerWidth() < el.scrollWidth);
      -  };
      -
      -  Utils.escapeMarkup = function (markup) {
      -    var replaceMap = {
      -      '\\': '&#92;',
      -      '&': '&amp;',
      -      '<': '&lt;',
      -      '>': '&gt;',
      -      '"': '&quot;',
      -      '\'': '&#39;',
      -      '/': '&#47;'
      -    };
      -
      -    // Do not try to escape the markup if it's not a string
      -    if (typeof markup !== 'string') {
      -      return markup;
      -    }
      -
      -    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
      -      return replaceMap[match];
      -    });
      -  };
      -
      -  // Append an array of jQuery nodes to a given element.
      -  Utils.appendMany = function ($element, $nodes) {
      -    // jQuery 1.7.x does not support $.fn.append() with an array
      -    // Fall back to a jQuery object collection using $.fn.add()
      -    if ($.fn.jquery.substr(0, 3) === '1.7') {
      -      var $jqNodes = $();
      -
      -      $.map($nodes, function (node) {
      -        $jqNodes = $jqNodes.add(node);
      -      });
      -
      -      $nodes = $jqNodes;
      -    }
      -
      -    $element.append($nodes);
      -  };
      -
      -  return Utils;
      -});
      -
      -S2.define('select2/results',[
      -  'jquery',
      -  './utils'
      -], function ($, Utils) {
      -  function Results ($element, options, dataAdapter) {
      -    this.$element = $element;
      -    this.data = dataAdapter;
      -    this.options = options;
      -
      -    Results.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(Results, Utils.Observable);
      -
      -  Results.prototype.render = function () {
      -    var $results = $(
      -      '<ul class="select2-results__options" role="tree"></ul>'
      -    );
      -
      -    if (this.options.get('multiple')) {
      -      $results.attr('aria-multiselectable', 'true');
      -    }
      -
      -    this.$results = $results;
      -
      -    return $results;
      -  };
      -
      -  Results.prototype.clear = function () {
      -    this.$results.empty();
      -  };
      -
      -  Results.prototype.displayMessage = function (params) {
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    this.clear();
      -    this.hideLoading();
      -
      -    var $message = $(
      -      '<li role="treeitem" aria-live="assertive"' +
      -      ' class="select2-results__option"></li>'
      -    );
      -
      -    var message = this.options.get('translations').get(params.message);
      -
      -    $message.append(
      -      escapeMarkup(
      -        message(params.args)
      -      )
      -    );
      -
      -    $message[0].className += ' select2-results__message';
      -
      -    this.$results.append($message);
      -  };
      -
      -  Results.prototype.hideMessages = function () {
      -    this.$results.find('.select2-results__message').remove();
      -  };
      -
      -  Results.prototype.append = function (data) {
      -    this.hideLoading();
      -
      -    var $options = [];
      -
      -    if (data.results == null || data.results.length === 0) {
      -      if (this.$results.children().length === 0) {
      -        this.trigger('results:message', {
      -          message: 'noResults'
      -        });
      -      }
      -
      -      return;
      -    }
      -
      -    data.results = this.sort(data.results);
      -
      -    for (var d = 0; d < data.results.length; d++) {
      -      var item = data.results[d];
      -
      -      var $option = this.option(item);
      -
      -      $options.push($option);
      -    }
      -
      -    this.$results.append($options);
      -  };
      -
      -  Results.prototype.position = function ($results, $dropdown) {
      -    var $resultsContainer = $dropdown.find('.select2-results');
      -    $resultsContainer.append($results);
      -  };
      -
      -  Results.prototype.sort = function (data) {
      -    var sorter = this.options.get('sorter');
      -
      -    return sorter(data);
      -  };
      -
      -  Results.prototype.highlightFirstItem = function () {
      -    var $options = this.$results
      -      .find('.select2-results__option[aria-selected]');
      -
      -    var $selected = $options.filter('[aria-selected=true]');
      -
      -    // Check if there are any selected options
      -    if ($selected.length > 0) {
      -      // If there are selected options, highlight the first
      -      $selected.first().trigger('mouseenter');
      -    } else {
      -      // If there are no selected options, highlight the first option
      -      // in the dropdown
      -      $options.first().trigger('mouseenter');
      -    }
      -
      -    this.ensureHighlightVisible();
      -  };
      -
      -  Results.prototype.setClasses = function () {
      -    var self = this;
      -
      -    this.data.current(function (selected) {
      -      var selectedIds = $.map(selected, function (s) {
      -        return s.id.toString();
      -      });
      -
      -      var $options = self.$results
      -        .find('.select2-results__option[aria-selected]');
      -
      -      $options.each(function () {
      -        var $option = $(this);
      -
      -        var item = $.data(this, 'data');
      -
      -        // id needs to be converted to a string when comparing
      -        var id = '' + item.id;
      -
      -        if ((item.element != null && item.element.selected) ||
      -            (item.element == null && $.inArray(id, selectedIds) > -1)) {
      -          $option.attr('aria-selected', 'true');
      -        } else {
      -          $option.attr('aria-selected', 'false');
      -        }
      -      });
      -
      -    });
      -  };
      -
      -  Results.prototype.showLoading = function (params) {
      -    this.hideLoading();
      -
      -    var loadingMore = this.options.get('translations').get('searching');
      -
      -    var loading = {
      -      disabled: true,
      -      loading: true,
      -      text: loadingMore(params)
      -    };
      -    var $loading = this.option(loading);
      -    $loading.className += ' loading-results';
      -
      -    this.$results.prepend($loading);
      -  };
      -
      -  Results.prototype.hideLoading = function () {
      -    this.$results.find('.loading-results').remove();
      -  };
      -
      -  Results.prototype.option = function (data) {
      -    var option = document.createElement('li');
      -    option.className = 'select2-results__option';
      -
      -    var attrs = {
      -      'role': 'treeitem',
      -      'aria-selected': 'false'
      -    };
      -
      -    if (data.disabled) {
      -      delete attrs['aria-selected'];
      -      attrs['aria-disabled'] = 'true';
      -    }
      -
      -    if (data.id == null) {
      -      delete attrs['aria-selected'];
      -    }
      -
      -    if (data._resultId != null) {
      -      option.id = data._resultId;
      -    }
      -
      -    if (data.title) {
      -      option.title = data.title;
      -    }
      -
      -    if (data.children) {
      -      attrs.role = 'group';
      -      attrs['aria-label'] = data.text;
      -      delete attrs['aria-selected'];
      -    }
      -
      -    for (var attr in attrs) {
      -      var val = attrs[attr];
      -
      -      option.setAttribute(attr, val);
      -    }
      -
      -    if (data.children) {
      -      var $option = $(option);
      -
      -      var label = document.createElement('strong');
      -      label.className = 'select2-results__group';
      -
      -      var $label = $(label);
      -      this.template(data, label);
      -
      -      var $children = [];
      -
      -      for (var c = 0; c < data.children.length; c++) {
      -        var child = data.children[c];
      -
      -        var $child = this.option(child);
      -
      -        $children.push($child);
      -      }
      -
      -      var $childrenContainer = $('<ul></ul>', {
      -        'class': 'select2-results__options select2-results__options--nested'
      -      });
      -
      -      $childrenContainer.append($children);
      -
      -      $option.append(label);
      -      $option.append($childrenContainer);
      -    } else {
      -      this.template(data, option);
      -    }
      -
      -    $.data(option, 'data', data);
      -
      -    return option;
      -  };
      -
      -  Results.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    var id = container.id + '-results';
      -
      -    this.$results.attr('id', id);
      -
      -    container.on('results:all', function (params) {
      -      self.clear();
      -      self.append(params.data);
      -
      -      if (container.isOpen()) {
      -        self.setClasses();
      -        self.highlightFirstItem();
      -      }
      -    });
      -
      -    container.on('results:append', function (params) {
      -      self.append(params.data);
      -
      -      if (container.isOpen()) {
      -        self.setClasses();
      -      }
      -    });
      -
      -    container.on('query', function (params) {
      -      self.hideMessages();
      -      self.showLoading(params);
      -    });
      -
      -    container.on('select', function () {
      -      if (!container.isOpen()) {
      -        return;
      -      }
      -
      -      self.setClasses();
      -      self.highlightFirstItem();
      -    });
      -
      -    container.on('unselect', function () {
      -      if (!container.isOpen()) {
      -        return;
      -      }
      -
      -      self.setClasses();
      -      self.highlightFirstItem();
      -    });
      -
      -    container.on('open', function () {
      -      // When the dropdown is open, aria-expended="true"
      -      self.$results.attr('aria-expanded', 'true');
      -      self.$results.attr('aria-hidden', 'false');
      -
      -      self.setClasses();
      -      self.ensureHighlightVisible();
      -    });
      -
      -    container.on('close', function () {
      -      // When the dropdown is closed, aria-expended="false"
      -      self.$results.attr('aria-expanded', 'false');
      -      self.$results.attr('aria-hidden', 'true');
      -      self.$results.removeAttr('aria-activedescendant');
      -    });
      -
      -    container.on('results:toggle', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      if ($highlighted.length === 0) {
      -        return;
      -      }
      -
      -      $highlighted.trigger('mouseup');
      -    });
      -
      -    container.on('results:select', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      if ($highlighted.length === 0) {
      -        return;
      -      }
      -
      -      var data = $highlighted.data('data');
      -
      -      if ($highlighted.attr('aria-selected') == 'true') {
      -        self.trigger('close', {});
      -      } else {
      -        self.trigger('select', {
      -          data: data
      -        });
      -      }
      -    });
      -
      -    container.on('results:previous', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      var $options = self.$results.find('[aria-selected]');
      -
      -      var currentIndex = $options.index($highlighted);
      -
      -      // If we are already at te top, don't move further
      -      if (currentIndex === 0) {
      -        return;
      -      }
      -
      -      var nextIndex = currentIndex - 1;
      -
      -      // If none are highlighted, highlight the first
      -      if ($highlighted.length === 0) {
      -        nextIndex = 0;
      -      }
      -
      -      var $next = $options.eq(nextIndex);
      -
      -      $next.trigger('mouseenter');
      -
      -      var currentOffset = self.$results.offset().top;
      -      var nextTop = $next.offset().top;
      -      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
      -
      -      if (nextIndex === 0) {
      -        self.$results.scrollTop(0);
      -      } else if (nextTop - currentOffset < 0) {
      -        self.$results.scrollTop(nextOffset);
      -      }
      -    });
      -
      -    container.on('results:next', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      var $options = self.$results.find('[aria-selected]');
      -
      -      var currentIndex = $options.index($highlighted);
      -
      -      var nextIndex = currentIndex + 1;
      -
      -      // If we are at the last option, stay there
      -      if (nextIndex >= $options.length) {
      -        return;
      -      }
      -
      -      var $next = $options.eq(nextIndex);
      -
      -      $next.trigger('mouseenter');
      -
      -      var currentOffset = self.$results.offset().top +
      -        self.$results.outerHeight(false);
      -      var nextBottom = $next.offset().top + $next.outerHeight(false);
      -      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
      -
      -      if (nextIndex === 0) {
      -        self.$results.scrollTop(0);
      -      } else if (nextBottom > currentOffset) {
      -        self.$results.scrollTop(nextOffset);
      -      }
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      params.element.addClass('select2-results__option--highlighted');
      -    });
      -
      -    container.on('results:message', function (params) {
      -      self.displayMessage(params);
      -    });
      -
      -    if ($.fn.mousewheel) {
      -      this.$results.on('mousewheel', function (e) {
      -        var top = self.$results.scrollTop();
      -
      -        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
      -
      -        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
      -        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
      -
      -        if (isAtTop) {
      -          self.$results.scrollTop(0);
      -
      -          e.preventDefault();
      -          e.stopPropagation();
      -        } else if (isAtBottom) {
      -          self.$results.scrollTop(
      -            self.$results.get(0).scrollHeight - self.$results.height()
      -          );
      -
      -          e.preventDefault();
      -          e.stopPropagation();
      -        }
      -      });
      -    }
      -
      -    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
      -      function (evt) {
      -      var $this = $(this);
      -
      -      var data = $this.data('data');
      -
      -      if ($this.attr('aria-selected') === 'true') {
      -        if (self.options.get('multiple')) {
      -          self.trigger('unselect', {
      -            originalEvent: evt,
      -            data: data
      -          });
      -        } else {
      -          self.trigger('close', {});
      -        }
      -
      -        return;
      -      }
      -
      -      self.trigger('select', {
      -        originalEvent: evt,
      -        data: data
      -      });
      -    });
      -
      -    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
      -      function (evt) {
      -      var data = $(this).data('data');
      -
      -      self.getHighlightedResults()
      -          .removeClass('select2-results__option--highlighted');
      -
      -      self.trigger('results:focus', {
      -        data: data,
      -        element: $(this)
      -      });
      -    });
      -  };
      -
      -  Results.prototype.getHighlightedResults = function () {
      -    var $highlighted = this.$results
      -    .find('.select2-results__option--highlighted');
      -
      -    return $highlighted;
      -  };
      -
      -  Results.prototype.destroy = function () {
      -    this.$results.remove();
      -  };
      -
      -  Results.prototype.ensureHighlightVisible = function () {
      -    var $highlighted = this.getHighlightedResults();
      -
      -    if ($highlighted.length === 0) {
      -      return;
      -    }
      -
      -    var $options = this.$results.find('[aria-selected]');
      -
      -    var currentIndex = $options.index($highlighted);
      -
      -    var currentOffset = this.$results.offset().top;
      -    var nextTop = $highlighted.offset().top;
      -    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
      -
      -    var offsetDelta = nextTop - currentOffset;
      -    nextOffset -= $highlighted.outerHeight(false) * 2;
      -
      -    if (currentIndex <= 2) {
      -      this.$results.scrollTop(0);
      -    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
      -      this.$results.scrollTop(nextOffset);
      -    }
      -  };
      -
      -  Results.prototype.template = function (result, container) {
      -    var template = this.options.get('templateResult');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    var content = template(result, container);
      -
      -    if (content == null) {
      -      container.style.display = 'none';
      -    } else if (typeof content === 'string') {
      -      container.innerHTML = escapeMarkup(content);
      -    } else {
      -      $(container).append(content);
      -    }
      -  };
      -
      -  return Results;
      -});
      -
      -S2.define('select2/keys',[
      -
      -], function () {
      -  var KEYS = {
      -    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 KEYS;
      -});
      -
      -S2.define('select2/selection/base',[
      -  'jquery',
      -  '../utils',
      -  '../keys'
      -], function ($, Utils, KEYS) {
      -  function BaseSelection ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    BaseSelection.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(BaseSelection, Utils.Observable);
      -
      -  BaseSelection.prototype.render = function () {
      -    var $selection = $(
      -      '<span class="select2-selection" role="combobox" ' +
      -      ' aria-haspopup="true" aria-expanded="false">' +
      -      '</span>'
      -    );
      -
      -    this._tabindex = 0;
      -
      -    if (this.$element.data('old-tabindex') != null) {
      -      this._tabindex = this.$element.data('old-tabindex');
      -    } else if (this.$element.attr('tabindex') != null) {
      -      this._tabindex = this.$element.attr('tabindex');
      -    }
      -
      -    $selection.attr('title', this.$element.attr('title'));
      -    $selection.attr('tabindex', this._tabindex);
      -
      -    this.$selection = $selection;
      -
      -    return $selection;
      -  };
      -
      -  BaseSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    var id = container.id + '-container';
      -    var resultsId = container.id + '-results';
      -
      -    this.container = container;
      -
      -    this.$selection.on('focus', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this.$selection.on('blur', function (evt) {
      -      self._handleBlur(evt);
      -    });
      -
      -    this.$selection.on('keydown', function (evt) {
      -      self.trigger('keypress', evt);
      -
      -      if (evt.which === KEYS.SPACE) {
      -        evt.preventDefault();
      -      }
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      self.$selection.attr('aria-activedescendant', params.data._resultId);
      -    });
      -
      -    container.on('selection:update', function (params) {
      -      self.update(params.data);
      -    });
      -
      -    container.on('open', function () {
      -      // When the dropdown is open, aria-expanded="true"
      -      self.$selection.attr('aria-expanded', 'true');
      -      self.$selection.attr('aria-owns', resultsId);
      -
      -      self._attachCloseHandler(container);
      -    });
      -
      -    container.on('close', function () {
      -      // When the dropdown is closed, aria-expanded="false"
      -      self.$selection.attr('aria-expanded', 'false');
      -      self.$selection.removeAttr('aria-activedescendant');
      -      self.$selection.removeAttr('aria-owns');
      -
      -      self.$selection.focus();
      -
      -      self._detachCloseHandler(container);
      -    });
      -
      -    container.on('enable', function () {
      -      self.$selection.attr('tabindex', self._tabindex);
      -    });
      -
      -    container.on('disable', function () {
      -      self.$selection.attr('tabindex', '-1');
      -    });
      -  };
      -
      -  BaseSelection.prototype._handleBlur = function (evt) {
      -    var self = this;
      -
      -    // This needs to be delayed as the active element is the body when the tab
      -    // key is pressed, possibly along with others.
      -    window.setTimeout(function () {
      -      // Don't trigger `blur` if the focus is still in the selection
      -      if (
      -        (document.activeElement == self.$selection[0]) ||
      -        ($.contains(self.$selection[0], document.activeElement))
      -      ) {
      -        return;
      -      }
      -
      -      self.trigger('blur', evt);
      -    }, 1);
      -  };
      -
      -  BaseSelection.prototype._attachCloseHandler = function (container) {
      -    var self = this;
      -
      -    $(document.body).on('mousedown.select2.' + container.id, function (e) {
      -      var $target = $(e.target);
      -
      -      var $select = $target.closest('.select2');
      -
      -      var $all = $('.select2.select2-container--open');
      -
      -      $all.each(function () {
      -        var $this = $(this);
      -
      -        if (this == $select[0]) {
      -          return;
      -        }
      -
      -        var $element = $this.data('element');
      -
      -        $element.select2('close');
      -      });
      -    });
      -  };
      -
      -  BaseSelection.prototype._detachCloseHandler = function (container) {
      -    $(document.body).off('mousedown.select2.' + container.id);
      -  };
      -
      -  BaseSelection.prototype.position = function ($selection, $container) {
      -    var $selectionContainer = $container.find('.selection');
      -    $selectionContainer.append($selection);
      -  };
      -
      -  BaseSelection.prototype.destroy = function () {
      -    this._detachCloseHandler(this.container);
      -  };
      -
      -  BaseSelection.prototype.update = function (data) {
      -    throw new Error('The `update` method must be defined in child classes.');
      -  };
      -
      -  return BaseSelection;
      -});
      -
      -S2.define('select2/selection/single',[
      -  'jquery',
      -  './base',
      -  '../utils',
      -  '../keys'
      -], function ($, BaseSelection, Utils, KEYS) {
      -  function SingleSelection () {
      -    SingleSelection.__super__.constructor.apply(this, arguments);
      -  }
      -
      -  Utils.Extend(SingleSelection, BaseSelection);
      -
      -  SingleSelection.prototype.render = function () {
      -    var $selection = SingleSelection.__super__.render.call(this);
      -
      -    $selection.addClass('select2-selection--single');
      -
      -    $selection.html(
      -      '<span class="select2-selection__rendered"></span>' +
      -      '<span class="select2-selection__arrow" role="presentation">' +
      -        '<b role="presentation"></b>' +
      -      '</span>'
      -    );
      -
      -    return $selection;
      -  };
      -
      -  SingleSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    SingleSelection.__super__.bind.apply(this, arguments);
      -
      -    var id = container.id + '-container';
      -
      -    this.$selection.find('.select2-selection__rendered').attr('id', id);
      -    this.$selection.attr('aria-labelledby', id);
      -
      -    this.$selection.on('mousedown', function (evt) {
      -      // Only respond to left clicks
      -      if (evt.which !== 1) {
      -        return;
      -      }
      -
      -      self.trigger('toggle', {
      -        originalEvent: evt
      -      });
      -    });
      -
      -    this.$selection.on('focus', function (evt) {
      -      // User focuses on the container
      -    });
      -
      -    this.$selection.on('blur', function (evt) {
      -      // User exits the container
      -    });
      -
      -    container.on('focus', function (evt) {
      -      if (!container.isOpen()) {
      -        self.$selection.focus();
      -      }
      -    });
      -
      -    container.on('selection:update', function (params) {
      -      self.update(params.data);
      -    });
      -  };
      -
      -  SingleSelection.prototype.clear = function () {
      -    this.$selection.find('.select2-selection__rendered').empty();
      -  };
      -
      -  SingleSelection.prototype.display = function (data, container) {
      -    var template = this.options.get('templateSelection');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    return escapeMarkup(template(data, container));
      -  };
      -
      -  SingleSelection.prototype.selectionContainer = function () {
      -    return $('<span></span>');
      -  };
      -
      -  SingleSelection.prototype.update = function (data) {
      -    if (data.length === 0) {
      -      this.clear();
      -      return;
      -    }
      -
      -    var selection = data[0];
      -
      -    var $rendered = this.$selection.find('.select2-selection__rendered');
      -    var formatted = this.display(selection, $rendered);
      -
      -    $rendered.empty().append(formatted);
      -    $rendered.prop('title', selection.title || selection.text);
      -  };
      -
      -  return SingleSelection;
      -});
      -
      -S2.define('select2/selection/multiple',[
      -  'jquery',
      -  './base',
      -  '../utils'
      -], function ($, BaseSelection, Utils) {
      -  function MultipleSelection ($element, options) {
      -    MultipleSelection.__super__.constructor.apply(this, arguments);
      -  }
      -
      -  Utils.Extend(MultipleSelection, BaseSelection);
      -
      -  MultipleSelection.prototype.render = function () {
      -    var $selection = MultipleSelection.__super__.render.call(this);
      -
      -    $selection.addClass('select2-selection--multiple');
      -
      -    $selection.html(
      -      '<ul class="select2-selection__rendered"></ul>'
      -    );
      -
      -    return $selection;
      -  };
      -
      -  MultipleSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    MultipleSelection.__super__.bind.apply(this, arguments);
      -
      -    this.$selection.on('click', function (evt) {
      -      self.trigger('toggle', {
      -        originalEvent: evt
      -      });
      -    });
      -
      -    this.$selection.on(
      -      'click',
      -      '.select2-selection__choice__remove',
      -      function (evt) {
      -        // Ignore the event if it is disabled
      -        if (self.options.get('disabled')) {
      -          return;
      -        }
      -
      -        var $remove = $(this);
      -        var $selection = $remove.parent();
      -
      -        var data = $selection.data('data');
      -
      -        self.trigger('unselect', {
      -          originalEvent: evt,
      -          data: data
      -        });
      -      }
      -    );
      -  };
      -
      -  MultipleSelection.prototype.clear = function () {
      -    this.$selection.find('.select2-selection__rendered').empty();
      -  };
      -
      -  MultipleSelection.prototype.display = function (data, container) {
      -    var template = this.options.get('templateSelection');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    return escapeMarkup(template(data, container));
      -  };
      -
      -  MultipleSelection.prototype.selectionContainer = function () {
      -    var $container = $(
      -      '<li class="select2-selection__choice">' +
      -        '<span class="select2-selection__choice__remove" role="presentation">' +
      -          '&times;' +
      -        '</span>' +
      -      '</li>'
      -    );
      -
      -    return $container;
      -  };
      -
      -  MultipleSelection.prototype.update = function (data) {
      -    this.clear();
      -
      -    if (data.length === 0) {
      -      return;
      -    }
      -
      -    var $selections = [];
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var selection = data[d];
      -
      -      var $selection = this.selectionContainer();
      -      var formatted = this.display(selection, $selection);
      -
      -      $selection.append(formatted);
      -      $selection.prop('title', selection.title || selection.text);
      -
      -      $selection.data('data', selection);
      -
      -      $selections.push($selection);
      -    }
      -
      -    var $rendered = this.$selection.find('.select2-selection__rendered');
      -
      -    Utils.appendMany($rendered, $selections);
      -  };
      -
      -  return MultipleSelection;
      -});
      -
      -S2.define('select2/selection/placeholder',[
      -  '../utils'
      -], function (Utils) {
      -  function Placeholder (decorated, $element, options) {
      -    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
      -    if (typeof placeholder === 'string') {
      -      placeholder = {
      -        id: '',
      -        text: placeholder
      -      };
      -    }
      -
      -    return placeholder;
      -  };
      -
      -  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
      -    var $placeholder = this.selectionContainer();
      -
      -    $placeholder.html(this.display(placeholder));
      -    $placeholder.addClass('select2-selection__placeholder')
      -                .removeClass('select2-selection__choice');
      -
      -    return $placeholder;
      -  };
      -
      -  Placeholder.prototype.update = function (decorated, data) {
      -    var singlePlaceholder = (
      -      data.length == 1 && data[0].id != this.placeholder.id
      -    );
      -    var multipleSelections = data.length > 1;
      -
      -    if (multipleSelections || singlePlaceholder) {
      -      return decorated.call(this, data);
      -    }
      -
      -    this.clear();
      -
      -    var $placeholder = this.createPlaceholder(this.placeholder);
      -
      -    this.$selection.find('.select2-selection__rendered').append($placeholder);
      -  };
      -
      -  return Placeholder;
      -});
      -
      -S2.define('select2/selection/allowClear',[
      -  'jquery',
      -  '../keys'
      -], function ($, KEYS) {
      -  function AllowClear () { }
      -
      -  AllowClear.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    if (this.placeholder == null) {
      -      if (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 (evt) {
      -        self._handleClear(evt);
      -    });
      -
      -    container.on('keypress', function (evt) {
      -      self._handleKeyboardClear(evt, container);
      -    });
      -  };
      -
      -  AllowClear.prototype._handleClear = function (_, evt) {
      -    // Ignore the event if it is disabled
      -    if (this.options.get('disabled')) {
      -      return;
      -    }
      -
      -    var $clear = this.$selection.find('.select2-selection__clear');
      -
      -    // Ignore the event if nothing has been selected
      -    if ($clear.length === 0) {
      -      return;
      -    }
      -
      -    evt.stopPropagation();
      -
      -    var data = $clear.data('data');
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var unselectData = {
      -        data: data[d]
      -      };
      -
      -      // Trigger the `unselect` event, so people can prevent it from being
      -      // cleared.
      -      this.trigger('unselect', unselectData);
      -
      -      // If the event was prevented, don't clear it out.
      -      if (unselectData.prevented) {
      -        return;
      -      }
      -    }
      -
      -    this.$element.val(this.placeholder.id).trigger('change');
      -
      -    this.trigger('toggle', {});
      -  };
      -
      -  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
      -    if (container.isOpen()) {
      -      return;
      -    }
      -
      -    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
      -      this._handleClear(evt);
      -    }
      -  };
      -
      -  AllowClear.prototype.update = function (decorated, data) {
      -    decorated.call(this, data);
      -
      -    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
      -        data.length === 0) {
      -      return;
      -    }
      -
      -    var $remove = $(
      -      '<span class="select2-selection__clear">' +
      -        '&times;' +
      -      '</span>'
      -    );
      -    $remove.data('data', data);
      -
      -    this.$selection.find('.select2-selection__rendered').prepend($remove);
      -  };
      -
      -  return AllowClear;
      -});
      -
      -S2.define('select2/selection/search',[
      -  'jquery',
      -  '../utils',
      -  '../keys'
      -], function ($, Utils, KEYS) {
      -  function Search (decorated, $element, options) {
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Search.prototype.render = function (decorated) {
      -    var $search = $(
      -      '<li class="select2-search select2-search--inline">' +
      -        '<input class="select2-search__field" type="search" tabindex="-1"' +
      -        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
      -        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
      -      '</li>'
      -    );
      -
      -    this.$searchContainer = $search;
      -    this.$search = $search.find('input');
      -
      -    var $rendered = decorated.call(this);
      -
      -    this._transferTabIndex();
      -
      -    return $rendered;
      -  };
      -
      -  Search.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('open', function () {
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('close', function () {
      -      self.$search.val('');
      -      self.$search.removeAttr('aria-activedescendant');
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('enable', function () {
      -      self.$search.prop('disabled', false);
      -
      -      self._transferTabIndex();
      -    });
      -
      -    container.on('disable', function () {
      -      self.$search.prop('disabled', true);
      -    });
      -
      -    container.on('focus', function (evt) {
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      self.$search.attr('aria-activedescendant', params.id);
      -    });
      -
      -    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
      -      self._handleBlur(evt);
      -    });
      -
      -    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
      -      evt.stopPropagation();
      -
      -      self.trigger('keypress', evt);
      -
      -      self._keyUpPrevented = evt.isDefaultPrevented();
      -
      -      var key = evt.which;
      -
      -      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
      -        var $previousChoice = self.$searchContainer
      -          .prev('.select2-selection__choice');
      -
      -        if ($previousChoice.length > 0) {
      -          var item = $previousChoice.data('data');
      -
      -          self.searchRemoveChoice(item);
      -
      -          evt.preventDefault();
      -        }
      -      }
      -    });
      -
      -    // Try to detect the IE version should the `documentMode` property that
      -    // is stored on the document. This is only implemented in IE and is
      -    // slightly cleaner than doing a user agent check.
      -    // This property is not available in Edge, but Edge also doesn't have
      -    // this bug.
      -    var msie = document.documentMode;
      -    var disableInputEvents = msie && msie <= 11;
      -
      -    // Workaround for browsers which do not support the `input` event
      -    // This will prevent double-triggering of events for browsers which support
      -    // both the `keyup` and `input` events.
      -    this.$selection.on(
      -      'input.searchcheck',
      -      '.select2-search--inline',
      -      function (evt) {
      -        // IE will trigger the `input` event when a placeholder is used on a
      -        // search box. To get around this issue, we are forced to ignore all
      -        // `input` events in IE and keep using `keyup`.
      -        if (disableInputEvents) {
      -          self.$selection.off('input.search input.searchcheck');
      -          return;
      -        }
      -
      -        // Unbind the duplicated `keyup` event
      -        self.$selection.off('keyup.search');
      -      }
      -    );
      -
      -    this.$selection.on(
      -      'keyup.search input.search',
      -      '.select2-search--inline',
      -      function (evt) {
      -        // IE will trigger the `input` event when a placeholder is used on a
      -        // search box. To get around this issue, we are forced to ignore all
      -        // `input` events in IE and keep using `keyup`.
      -        if (disableInputEvents && evt.type === 'input') {
      -          self.$selection.off('input.search input.searchcheck');
      -          return;
      -        }
      -
      -        var key = evt.which;
      -
      -        // We can freely ignore events from modifier keys
      -        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
      -          return;
      -        }
      -
      -        // Tabbing will be handled during the `keydown` phase
      -        if (key == KEYS.TAB) {
      -          return;
      -        }
      -
      -        self.handleSearch(evt);
      -      }
      -    );
      -  };
      -
      -  /**
      -   * This method will transfer the tabindex attribute from the rendered
      -   * selection to the search box. This allows for the search box to be used as
      -   * the primary focus instead of the selection container.
      -   *
      -   * @private
      -   */
      -  Search.prototype._transferTabIndex = function (decorated) {
      -    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
      -    this.$selection.attr('tabindex', '-1');
      -  };
      -
      -  Search.prototype.createPlaceholder = function (decorated, placeholder) {
      -    this.$search.attr('placeholder', placeholder.text);
      -  };
      -
      -  Search.prototype.update = function (decorated, data) {
      -    var searchHadFocus = this.$search[0] == document.activeElement;
      -
      -    this.$search.attr('placeholder', '');
      -
      -    decorated.call(this, data);
      -
      -    this.$selection.find('.select2-selection__rendered')
      -                   .append(this.$searchContainer);
      -
      -    this.resizeSearch();
      -    if (searchHadFocus) {
      -      this.$search.focus();
      -    }
      -  };
      -
      -  Search.prototype.handleSearch = function () {
      -    this.resizeSearch();
      -
      -    if (!this._keyUpPrevented) {
      -      var input = this.$search.val();
      -
      -      this.trigger('query', {
      -        term: input
      -      });
      -    }
      -
      -    this._keyUpPrevented = false;
      -  };
      -
      -  Search.prototype.searchRemoveChoice = function (decorated, item) {
      -    this.trigger('unselect', {
      -      data: item
      -    });
      -
      -    this.$search.val(item.text);
      -    this.handleSearch();
      -  };
      -
      -  Search.prototype.resizeSearch = function () {
      -    this.$search.css('width', '25px');
      -
      -    var width = '';
      -
      -    if (this.$search.attr('placeholder') !== '') {
      -      width = this.$selection.find('.select2-selection__rendered').innerWidth();
      -    } else {
      -      var minimumWidth = this.$search.val().length + 1;
      -
      -      width = (minimumWidth * 0.75) + 'em';
      -    }
      -
      -    this.$search.css('width', width);
      -  };
      -
      -  return Search;
      -});
      -
      -S2.define('select2/selection/eventRelay',[
      -  'jquery'
      -], function ($) {
      -  function EventRelay () { }
      -
      -  EventRelay.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -    var relayEvents = [
      -      'open', 'opening',
      -      'close', 'closing',
      -      'select', 'selecting',
      -      'unselect', 'unselecting'
      -    ];
      -
      -    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('*', function (name, params) {
      -      // Ignore events that should not be relayed
      -      if ($.inArray(name, relayEvents) === -1) {
      -        return;
      -      }
      -
      -      // The parameters should always be an object
      -      params = params || {};
      -
      -      // Generate the jQuery event for the Select2 event
      -      var evt = $.Event('select2:' + name, {
      -        params: params
      -      });
      -
      -      self.$element.trigger(evt);
      -
      -      // Only handle preventable events if it was one
      -      if ($.inArray(name, preventableEvents) === -1) {
      -        return;
      -      }
      -
      -      params.prevented = evt.isDefaultPrevented();
      -    });
      -  };
      -
      -  return EventRelay;
      -});
      -
      -S2.define('select2/translation',[
      -  'jquery',
      -  'require'
      -], function ($, require) {
      -  function Translation (dict) {
      -    this.dict = dict || {};
      -  }
      -
      -  Translation.prototype.all = function () {
      -    return this.dict;
      -  };
      -
      -  Translation.prototype.get = function (key) {
      -    return this.dict[key];
      -  };
      -
      -  Translation.prototype.extend = function (translation) {
      -    this.dict = $.extend({}, translation.all(), this.dict);
      -  };
      -
      -  // Static functions
      -
      -  Translation._cache = {};
      -
      -  Translation.loadPath = function (path) {
      -    if (!(path in Translation._cache)) {
      -      var translations = require(path);
      -
      -      Translation._cache[path] = translations;
      -    }
      -
      -    return new Translation(Translation._cache[path]);
      -  };
      -
      -  return Translation;
      -});
      -
      -S2.define('select2/diacritics',[
      -
      -], function () {
      -  var diacritics = {
      -    '\u24B6': 'A',
      -    '\uFF21': 'A',
      -    '\u00C0': 'A',
      -    '\u00C1': 'A',
      -    '\u00C2': 'A',
      -    '\u1EA6': 'A',
      -    '\u1EA4': 'A',
      -    '\u1EAA': 'A',
      -    '\u1EA8': 'A',
      -    '\u00C3': 'A',
      -    '\u0100': 'A',
      -    '\u0102': 'A',
      -    '\u1EB0': 'A',
      -    '\u1EAE': 'A',
      -    '\u1EB4': 'A',
      -    '\u1EB2': 'A',
      -    '\u0226': 'A',
      -    '\u01E0': 'A',
      -    '\u00C4': 'A',
      -    '\u01DE': 'A',
      -    '\u1EA2': 'A',
      -    '\u00C5': 'A',
      -    '\u01FA': 'A',
      -    '\u01CD': 'A',
      -    '\u0200': 'A',
      -    '\u0202': 'A',
      -    '\u1EA0': 'A',
      -    '\u1EAC': 'A',
      -    '\u1EB6': 'A',
      -    '\u1E00': 'A',
      -    '\u0104': 'A',
      -    '\u023A': 'A',
      -    '\u2C6F': 'A',
      -    '\uA732': 'AA',
      -    '\u00C6': 'AE',
      -    '\u01FC': 'AE',
      -    '\u01E2': 'AE',
      -    '\uA734': 'AO',
      -    '\uA736': 'AU',
      -    '\uA738': 'AV',
      -    '\uA73A': 'AV',
      -    '\uA73C': 'AY',
      -    '\u24B7': 'B',
      -    '\uFF22': 'B',
      -    '\u1E02': 'B',
      -    '\u1E04': 'B',
      -    '\u1E06': 'B',
      -    '\u0243': 'B',
      -    '\u0182': 'B',
      -    '\u0181': 'B',
      -    '\u24B8': 'C',
      -    '\uFF23': 'C',
      -    '\u0106': 'C',
      -    '\u0108': 'C',
      -    '\u010A': 'C',
      -    '\u010C': 'C',
      -    '\u00C7': 'C',
      -    '\u1E08': 'C',
      -    '\u0187': 'C',
      -    '\u023B': 'C',
      -    '\uA73E': 'C',
      -    '\u24B9': 'D',
      -    '\uFF24': 'D',
      -    '\u1E0A': 'D',
      -    '\u010E': 'D',
      -    '\u1E0C': 'D',
      -    '\u1E10': 'D',
      -    '\u1E12': 'D',
      -    '\u1E0E': 'D',
      -    '\u0110': 'D',
      -    '\u018B': 'D',
      -    '\u018A': 'D',
      -    '\u0189': 'D',
      -    '\uA779': 'D',
      -    '\u01F1': 'DZ',
      -    '\u01C4': 'DZ',
      -    '\u01F2': 'Dz',
      -    '\u01C5': 'Dz',
      -    '\u24BA': 'E',
      -    '\uFF25': 'E',
      -    '\u00C8': 'E',
      -    '\u00C9': 'E',
      -    '\u00CA': 'E',
      -    '\u1EC0': 'E',
      -    '\u1EBE': 'E',
      -    '\u1EC4': 'E',
      -    '\u1EC2': 'E',
      -    '\u1EBC': 'E',
      -    '\u0112': 'E',
      -    '\u1E14': 'E',
      -    '\u1E16': 'E',
      -    '\u0114': 'E',
      -    '\u0116': 'E',
      -    '\u00CB': 'E',
      -    '\u1EBA': 'E',
      -    '\u011A': 'E',
      -    '\u0204': 'E',
      -    '\u0206': 'E',
      -    '\u1EB8': 'E',
      -    '\u1EC6': 'E',
      -    '\u0228': 'E',
      -    '\u1E1C': 'E',
      -    '\u0118': 'E',
      -    '\u1E18': 'E',
      -    '\u1E1A': 'E',
      -    '\u0190': 'E',
      -    '\u018E': 'E',
      -    '\u24BB': 'F',
      -    '\uFF26': 'F',
      -    '\u1E1E': 'F',
      -    '\u0191': 'F',
      -    '\uA77B': 'F',
      -    '\u24BC': 'G',
      -    '\uFF27': 'G',
      -    '\u01F4': 'G',
      -    '\u011C': 'G',
      -    '\u1E20': 'G',
      -    '\u011E': 'G',
      -    '\u0120': 'G',
      -    '\u01E6': 'G',
      -    '\u0122': 'G',
      -    '\u01E4': 'G',
      -    '\u0193': 'G',
      -    '\uA7A0': 'G',
      -    '\uA77D': 'G',
      -    '\uA77E': 'G',
      -    '\u24BD': 'H',
      -    '\uFF28': 'H',
      -    '\u0124': 'H',
      -    '\u1E22': 'H',
      -    '\u1E26': 'H',
      -    '\u021E': 'H',
      -    '\u1E24': 'H',
      -    '\u1E28': 'H',
      -    '\u1E2A': 'H',
      -    '\u0126': 'H',
      -    '\u2C67': 'H',
      -    '\u2C75': 'H',
      -    '\uA78D': 'H',
      -    '\u24BE': 'I',
      -    '\uFF29': 'I',
      -    '\u00CC': 'I',
      -    '\u00CD': 'I',
      -    '\u00CE': 'I',
      -    '\u0128': 'I',
      -    '\u012A': 'I',
      -    '\u012C': 'I',
      -    '\u0130': 'I',
      -    '\u00CF': 'I',
      -    '\u1E2E': 'I',
      -    '\u1EC8': 'I',
      -    '\u01CF': 'I',
      -    '\u0208': 'I',
      -    '\u020A': 'I',
      -    '\u1ECA': 'I',
      -    '\u012E': 'I',
      -    '\u1E2C': 'I',
      -    '\u0197': 'I',
      -    '\u24BF': 'J',
      -    '\uFF2A': 'J',
      -    '\u0134': 'J',
      -    '\u0248': 'J',
      -    '\u24C0': 'K',
      -    '\uFF2B': 'K',
      -    '\u1E30': 'K',
      -    '\u01E8': 'K',
      -    '\u1E32': 'K',
      -    '\u0136': 'K',
      -    '\u1E34': 'K',
      -    '\u0198': 'K',
      -    '\u2C69': 'K',
      -    '\uA740': 'K',
      -    '\uA742': 'K',
      -    '\uA744': 'K',
      -    '\uA7A2': 'K',
      -    '\u24C1': 'L',
      -    '\uFF2C': 'L',
      -    '\u013F': 'L',
      -    '\u0139': 'L',
      -    '\u013D': 'L',
      -    '\u1E36': 'L',
      -    '\u1E38': 'L',
      -    '\u013B': 'L',
      -    '\u1E3C': 'L',
      -    '\u1E3A': 'L',
      -    '\u0141': 'L',
      -    '\u023D': 'L',
      -    '\u2C62': 'L',
      -    '\u2C60': 'L',
      -    '\uA748': 'L',
      -    '\uA746': 'L',
      -    '\uA780': 'L',
      -    '\u01C7': 'LJ',
      -    '\u01C8': 'Lj',
      -    '\u24C2': 'M',
      -    '\uFF2D': 'M',
      -    '\u1E3E': 'M',
      -    '\u1E40': 'M',
      -    '\u1E42': 'M',
      -    '\u2C6E': 'M',
      -    '\u019C': 'M',
      -    '\u24C3': 'N',
      -    '\uFF2E': 'N',
      -    '\u01F8': 'N',
      -    '\u0143': 'N',
      -    '\u00D1': 'N',
      -    '\u1E44': 'N',
      -    '\u0147': 'N',
      -    '\u1E46': 'N',
      -    '\u0145': 'N',
      -    '\u1E4A': 'N',
      -    '\u1E48': 'N',
      -    '\u0220': 'N',
      -    '\u019D': 'N',
      -    '\uA790': 'N',
      -    '\uA7A4': 'N',
      -    '\u01CA': 'NJ',
      -    '\u01CB': 'Nj',
      -    '\u24C4': 'O',
      -    '\uFF2F': 'O',
      -    '\u00D2': 'O',
      -    '\u00D3': 'O',
      -    '\u00D4': 'O',
      -    '\u1ED2': 'O',
      -    '\u1ED0': 'O',
      -    '\u1ED6': 'O',
      -    '\u1ED4': 'O',
      -    '\u00D5': 'O',
      -    '\u1E4C': 'O',
      -    '\u022C': 'O',
      -    '\u1E4E': 'O',
      -    '\u014C': 'O',
      -    '\u1E50': 'O',
      -    '\u1E52': 'O',
      -    '\u014E': 'O',
      -    '\u022E': 'O',
      -    '\u0230': 'O',
      -    '\u00D6': 'O',
      -    '\u022A': 'O',
      -    '\u1ECE': 'O',
      -    '\u0150': 'O',
      -    '\u01D1': 'O',
      -    '\u020C': 'O',
      -    '\u020E': 'O',
      -    '\u01A0': 'O',
      -    '\u1EDC': 'O',
      -    '\u1EDA': 'O',
      -    '\u1EE0': 'O',
      -    '\u1EDE': 'O',
      -    '\u1EE2': 'O',
      -    '\u1ECC': 'O',
      -    '\u1ED8': 'O',
      -    '\u01EA': 'O',
      -    '\u01EC': 'O',
      -    '\u00D8': 'O',
      -    '\u01FE': 'O',
      -    '\u0186': 'O',
      -    '\u019F': 'O',
      -    '\uA74A': 'O',
      -    '\uA74C': 'O',
      -    '\u01A2': 'OI',
      -    '\uA74E': 'OO',
      -    '\u0222': 'OU',
      -    '\u24C5': 'P',
      -    '\uFF30': 'P',
      -    '\u1E54': 'P',
      -    '\u1E56': 'P',
      -    '\u01A4': 'P',
      -    '\u2C63': 'P',
      -    '\uA750': 'P',
      -    '\uA752': 'P',
      -    '\uA754': 'P',
      -    '\u24C6': 'Q',
      -    '\uFF31': 'Q',
      -    '\uA756': 'Q',
      -    '\uA758': 'Q',
      -    '\u024A': 'Q',
      -    '\u24C7': 'R',
      -    '\uFF32': 'R',
      -    '\u0154': 'R',
      -    '\u1E58': 'R',
      -    '\u0158': 'R',
      -    '\u0210': 'R',
      -    '\u0212': 'R',
      -    '\u1E5A': 'R',
      -    '\u1E5C': 'R',
      -    '\u0156': 'R',
      -    '\u1E5E': 'R',
      -    '\u024C': 'R',
      -    '\u2C64': 'R',
      -    '\uA75A': 'R',
      -    '\uA7A6': 'R',
      -    '\uA782': 'R',
      -    '\u24C8': 'S',
      -    '\uFF33': 'S',
      -    '\u1E9E': 'S',
      -    '\u015A': 'S',
      -    '\u1E64': 'S',
      -    '\u015C': 'S',
      -    '\u1E60': 'S',
      -    '\u0160': 'S',
      -    '\u1E66': 'S',
      -    '\u1E62': 'S',
      -    '\u1E68': 'S',
      -    '\u0218': 'S',
      -    '\u015E': 'S',
      -    '\u2C7E': 'S',
      -    '\uA7A8': 'S',
      -    '\uA784': 'S',
      -    '\u24C9': 'T',
      -    '\uFF34': 'T',
      -    '\u1E6A': 'T',
      -    '\u0164': 'T',
      -    '\u1E6C': 'T',
      -    '\u021A': 'T',
      -    '\u0162': 'T',
      -    '\u1E70': 'T',
      -    '\u1E6E': 'T',
      -    '\u0166': 'T',
      -    '\u01AC': 'T',
      -    '\u01AE': 'T',
      -    '\u023E': 'T',
      -    '\uA786': 'T',
      -    '\uA728': 'TZ',
      -    '\u24CA': 'U',
      -    '\uFF35': 'U',
      -    '\u00D9': 'U',
      -    '\u00DA': 'U',
      -    '\u00DB': 'U',
      -    '\u0168': 'U',
      -    '\u1E78': 'U',
      -    '\u016A': 'U',
      -    '\u1E7A': 'U',
      -    '\u016C': 'U',
      -    '\u00DC': 'U',
      -    '\u01DB': 'U',
      -    '\u01D7': 'U',
      -    '\u01D5': 'U',
      -    '\u01D9': 'U',
      -    '\u1EE6': 'U',
      -    '\u016E': 'U',
      -    '\u0170': 'U',
      -    '\u01D3': 'U',
      -    '\u0214': 'U',
      -    '\u0216': 'U',
      -    '\u01AF': 'U',
      -    '\u1EEA': 'U',
      -    '\u1EE8': 'U',
      -    '\u1EEE': 'U',
      -    '\u1EEC': 'U',
      -    '\u1EF0': 'U',
      -    '\u1EE4': 'U',
      -    '\u1E72': 'U',
      -    '\u0172': 'U',
      -    '\u1E76': 'U',
      -    '\u1E74': 'U',
      -    '\u0244': 'U',
      -    '\u24CB': 'V',
      -    '\uFF36': 'V',
      -    '\u1E7C': 'V',
      -    '\u1E7E': 'V',
      -    '\u01B2': 'V',
      -    '\uA75E': 'V',
      -    '\u0245': 'V',
      -    '\uA760': 'VY',
      -    '\u24CC': 'W',
      -    '\uFF37': 'W',
      -    '\u1E80': 'W',
      -    '\u1E82': 'W',
      -    '\u0174': 'W',
      -    '\u1E86': 'W',
      -    '\u1E84': 'W',
      -    '\u1E88': 'W',
      -    '\u2C72': 'W',
      -    '\u24CD': 'X',
      -    '\uFF38': 'X',
      -    '\u1E8A': 'X',
      -    '\u1E8C': 'X',
      -    '\u24CE': 'Y',
      -    '\uFF39': 'Y',
      -    '\u1EF2': 'Y',
      -    '\u00DD': 'Y',
      -    '\u0176': 'Y',
      -    '\u1EF8': 'Y',
      -    '\u0232': 'Y',
      -    '\u1E8E': 'Y',
      -    '\u0178': 'Y',
      -    '\u1EF6': 'Y',
      -    '\u1EF4': 'Y',
      -    '\u01B3': 'Y',
      -    '\u024E': 'Y',
      -    '\u1EFE': 'Y',
      -    '\u24CF': 'Z',
      -    '\uFF3A': 'Z',
      -    '\u0179': 'Z',
      -    '\u1E90': 'Z',
      -    '\u017B': 'Z',
      -    '\u017D': 'Z',
      -    '\u1E92': 'Z',
      -    '\u1E94': 'Z',
      -    '\u01B5': 'Z',
      -    '\u0224': 'Z',
      -    '\u2C7F': 'Z',
      -    '\u2C6B': 'Z',
      -    '\uA762': 'Z',
      -    '\u24D0': 'a',
      -    '\uFF41': 'a',
      -    '\u1E9A': 'a',
      -    '\u00E0': 'a',
      -    '\u00E1': 'a',
      -    '\u00E2': 'a',
      -    '\u1EA7': 'a',
      -    '\u1EA5': 'a',
      -    '\u1EAB': 'a',
      -    '\u1EA9': 'a',
      -    '\u00E3': 'a',
      -    '\u0101': 'a',
      -    '\u0103': 'a',
      -    '\u1EB1': 'a',
      -    '\u1EAF': 'a',
      -    '\u1EB5': 'a',
      -    '\u1EB3': 'a',
      -    '\u0227': 'a',
      -    '\u01E1': 'a',
      -    '\u00E4': 'a',
      -    '\u01DF': 'a',
      -    '\u1EA3': 'a',
      -    '\u00E5': 'a',
      -    '\u01FB': 'a',
      -    '\u01CE': 'a',
      -    '\u0201': 'a',
      -    '\u0203': 'a',
      -    '\u1EA1': 'a',
      -    '\u1EAD': 'a',
      -    '\u1EB7': 'a',
      -    '\u1E01': 'a',
      -    '\u0105': 'a',
      -    '\u2C65': 'a',
      -    '\u0250': 'a',
      -    '\uA733': 'aa',
      -    '\u00E6': 'ae',
      -    '\u01FD': 'ae',
      -    '\u01E3': 'ae',
      -    '\uA735': 'ao',
      -    '\uA737': 'au',
      -    '\uA739': 'av',
      -    '\uA73B': 'av',
      -    '\uA73D': 'ay',
      -    '\u24D1': 'b',
      -    '\uFF42': 'b',
      -    '\u1E03': 'b',
      -    '\u1E05': 'b',
      -    '\u1E07': 'b',
      -    '\u0180': 'b',
      -    '\u0183': 'b',
      -    '\u0253': 'b',
      -    '\u24D2': 'c',
      -    '\uFF43': 'c',
      -    '\u0107': 'c',
      -    '\u0109': 'c',
      -    '\u010B': 'c',
      -    '\u010D': 'c',
      -    '\u00E7': 'c',
      -    '\u1E09': 'c',
      -    '\u0188': 'c',
      -    '\u023C': 'c',
      -    '\uA73F': 'c',
      -    '\u2184': 'c',
      -    '\u24D3': 'd',
      -    '\uFF44': 'd',
      -    '\u1E0B': 'd',
      -    '\u010F': 'd',
      -    '\u1E0D': 'd',
      -    '\u1E11': 'd',
      -    '\u1E13': 'd',
      -    '\u1E0F': 'd',
      -    '\u0111': 'd',
      -    '\u018C': 'd',
      -    '\u0256': 'd',
      -    '\u0257': 'd',
      -    '\uA77A': 'd',
      -    '\u01F3': 'dz',
      -    '\u01C6': 'dz',
      -    '\u24D4': 'e',
      -    '\uFF45': 'e',
      -    '\u00E8': 'e',
      -    '\u00E9': 'e',
      -    '\u00EA': 'e',
      -    '\u1EC1': 'e',
      -    '\u1EBF': 'e',
      -    '\u1EC5': 'e',
      -    '\u1EC3': 'e',
      -    '\u1EBD': 'e',
      -    '\u0113': 'e',
      -    '\u1E15': 'e',
      -    '\u1E17': 'e',
      -    '\u0115': 'e',
      -    '\u0117': 'e',
      -    '\u00EB': 'e',
      -    '\u1EBB': 'e',
      -    '\u011B': 'e',
      -    '\u0205': 'e',
      -    '\u0207': 'e',
      -    '\u1EB9': 'e',
      -    '\u1EC7': 'e',
      -    '\u0229': 'e',
      -    '\u1E1D': 'e',
      -    '\u0119': 'e',
      -    '\u1E19': 'e',
      -    '\u1E1B': 'e',
      -    '\u0247': 'e',
      -    '\u025B': 'e',
      -    '\u01DD': 'e',
      -    '\u24D5': 'f',
      -    '\uFF46': 'f',
      -    '\u1E1F': 'f',
      -    '\u0192': 'f',
      -    '\uA77C': 'f',
      -    '\u24D6': 'g',
      -    '\uFF47': 'g',
      -    '\u01F5': 'g',
      -    '\u011D': 'g',
      -    '\u1E21': 'g',
      -    '\u011F': 'g',
      -    '\u0121': 'g',
      -    '\u01E7': 'g',
      -    '\u0123': 'g',
      -    '\u01E5': 'g',
      -    '\u0260': 'g',
      -    '\uA7A1': 'g',
      -    '\u1D79': 'g',
      -    '\uA77F': 'g',
      -    '\u24D7': 'h',
      -    '\uFF48': 'h',
      -    '\u0125': 'h',
      -    '\u1E23': 'h',
      -    '\u1E27': 'h',
      -    '\u021F': 'h',
      -    '\u1E25': 'h',
      -    '\u1E29': 'h',
      -    '\u1E2B': 'h',
      -    '\u1E96': 'h',
      -    '\u0127': 'h',
      -    '\u2C68': 'h',
      -    '\u2C76': 'h',
      -    '\u0265': 'h',
      -    '\u0195': 'hv',
      -    '\u24D8': 'i',
      -    '\uFF49': 'i',
      -    '\u00EC': 'i',
      -    '\u00ED': 'i',
      -    '\u00EE': 'i',
      -    '\u0129': 'i',
      -    '\u012B': 'i',
      -    '\u012D': 'i',
      -    '\u00EF': 'i',
      -    '\u1E2F': 'i',
      -    '\u1EC9': 'i',
      -    '\u01D0': 'i',
      -    '\u0209': 'i',
      -    '\u020B': 'i',
      -    '\u1ECB': 'i',
      -    '\u012F': 'i',
      -    '\u1E2D': 'i',
      -    '\u0268': 'i',
      -    '\u0131': 'i',
      -    '\u24D9': 'j',
      -    '\uFF4A': 'j',
      -    '\u0135': 'j',
      -    '\u01F0': 'j',
      -    '\u0249': 'j',
      -    '\u24DA': 'k',
      -    '\uFF4B': 'k',
      -    '\u1E31': 'k',
      -    '\u01E9': 'k',
      -    '\u1E33': 'k',
      -    '\u0137': 'k',
      -    '\u1E35': 'k',
      -    '\u0199': 'k',
      -    '\u2C6A': 'k',
      -    '\uA741': 'k',
      -    '\uA743': 'k',
      -    '\uA745': 'k',
      -    '\uA7A3': 'k',
      -    '\u24DB': 'l',
      -    '\uFF4C': 'l',
      -    '\u0140': 'l',
      -    '\u013A': 'l',
      -    '\u013E': 'l',
      -    '\u1E37': 'l',
      -    '\u1E39': 'l',
      -    '\u013C': 'l',
      -    '\u1E3D': 'l',
      -    '\u1E3B': 'l',
      -    '\u017F': 'l',
      -    '\u0142': 'l',
      -    '\u019A': 'l',
      -    '\u026B': 'l',
      -    '\u2C61': 'l',
      -    '\uA749': 'l',
      -    '\uA781': 'l',
      -    '\uA747': 'l',
      -    '\u01C9': 'lj',
      -    '\u24DC': 'm',
      -    '\uFF4D': 'm',
      -    '\u1E3F': 'm',
      -    '\u1E41': 'm',
      -    '\u1E43': 'm',
      -    '\u0271': 'm',
      -    '\u026F': 'm',
      -    '\u24DD': 'n',
      -    '\uFF4E': 'n',
      -    '\u01F9': 'n',
      -    '\u0144': 'n',
      -    '\u00F1': 'n',
      -    '\u1E45': 'n',
      -    '\u0148': 'n',
      -    '\u1E47': 'n',
      -    '\u0146': 'n',
      -    '\u1E4B': 'n',
      -    '\u1E49': 'n',
      -    '\u019E': 'n',
      -    '\u0272': 'n',
      -    '\u0149': 'n',
      -    '\uA791': 'n',
      -    '\uA7A5': 'n',
      -    '\u01CC': 'nj',
      -    '\u24DE': 'o',
      -    '\uFF4F': 'o',
      -    '\u00F2': 'o',
      -    '\u00F3': 'o',
      -    '\u00F4': 'o',
      -    '\u1ED3': 'o',
      -    '\u1ED1': 'o',
      -    '\u1ED7': 'o',
      -    '\u1ED5': 'o',
      -    '\u00F5': 'o',
      -    '\u1E4D': 'o',
      -    '\u022D': 'o',
      -    '\u1E4F': 'o',
      -    '\u014D': 'o',
      -    '\u1E51': 'o',
      -    '\u1E53': 'o',
      -    '\u014F': 'o',
      -    '\u022F': 'o',
      -    '\u0231': 'o',
      -    '\u00F6': 'o',
      -    '\u022B': 'o',
      -    '\u1ECF': 'o',
      -    '\u0151': 'o',
      -    '\u01D2': 'o',
      -    '\u020D': 'o',
      -    '\u020F': 'o',
      -    '\u01A1': 'o',
      -    '\u1EDD': 'o',
      -    '\u1EDB': 'o',
      -    '\u1EE1': 'o',
      -    '\u1EDF': 'o',
      -    '\u1EE3': 'o',
      -    '\u1ECD': 'o',
      -    '\u1ED9': 'o',
      -    '\u01EB': 'o',
      -    '\u01ED': 'o',
      -    '\u00F8': 'o',
      -    '\u01FF': 'o',
      -    '\u0254': 'o',
      -    '\uA74B': 'o',
      -    '\uA74D': 'o',
      -    '\u0275': 'o',
      -    '\u01A3': 'oi',
      -    '\u0223': 'ou',
      -    '\uA74F': 'oo',
      -    '\u24DF': 'p',
      -    '\uFF50': 'p',
      -    '\u1E55': 'p',
      -    '\u1E57': 'p',
      -    '\u01A5': 'p',
      -    '\u1D7D': 'p',
      -    '\uA751': 'p',
      -    '\uA753': 'p',
      -    '\uA755': 'p',
      -    '\u24E0': 'q',
      -    '\uFF51': 'q',
      -    '\u024B': 'q',
      -    '\uA757': 'q',
      -    '\uA759': 'q',
      -    '\u24E1': 'r',
      -    '\uFF52': 'r',
      -    '\u0155': 'r',
      -    '\u1E59': 'r',
      -    '\u0159': 'r',
      -    '\u0211': 'r',
      -    '\u0213': 'r',
      -    '\u1E5B': 'r',
      -    '\u1E5D': 'r',
      -    '\u0157': 'r',
      -    '\u1E5F': 'r',
      -    '\u024D': 'r',
      -    '\u027D': 'r',
      -    '\uA75B': 'r',
      -    '\uA7A7': 'r',
      -    '\uA783': 'r',
      -    '\u24E2': 's',
      -    '\uFF53': 's',
      -    '\u00DF': 's',
      -    '\u015B': 's',
      -    '\u1E65': 's',
      -    '\u015D': 's',
      -    '\u1E61': 's',
      -    '\u0161': 's',
      -    '\u1E67': 's',
      -    '\u1E63': 's',
      -    '\u1E69': 's',
      -    '\u0219': 's',
      -    '\u015F': 's',
      -    '\u023F': 's',
      -    '\uA7A9': 's',
      -    '\uA785': 's',
      -    '\u1E9B': 's',
      -    '\u24E3': 't',
      -    '\uFF54': 't',
      -    '\u1E6B': 't',
      -    '\u1E97': 't',
      -    '\u0165': 't',
      -    '\u1E6D': 't',
      -    '\u021B': 't',
      -    '\u0163': 't',
      -    '\u1E71': 't',
      -    '\u1E6F': 't',
      -    '\u0167': 't',
      -    '\u01AD': 't',
      -    '\u0288': 't',
      -    '\u2C66': 't',
      -    '\uA787': 't',
      -    '\uA729': 'tz',
      -    '\u24E4': 'u',
      -    '\uFF55': 'u',
      -    '\u00F9': 'u',
      -    '\u00FA': 'u',
      -    '\u00FB': 'u',
      -    '\u0169': 'u',
      -    '\u1E79': 'u',
      -    '\u016B': 'u',
      -    '\u1E7B': 'u',
      -    '\u016D': 'u',
      -    '\u00FC': 'u',
      -    '\u01DC': 'u',
      -    '\u01D8': 'u',
      -    '\u01D6': 'u',
      -    '\u01DA': 'u',
      -    '\u1EE7': 'u',
      -    '\u016F': 'u',
      -    '\u0171': 'u',
      -    '\u01D4': 'u',
      -    '\u0215': 'u',
      -    '\u0217': 'u',
      -    '\u01B0': 'u',
      -    '\u1EEB': 'u',
      -    '\u1EE9': 'u',
      -    '\u1EEF': 'u',
      -    '\u1EED': 'u',
      -    '\u1EF1': 'u',
      -    '\u1EE5': 'u',
      -    '\u1E73': 'u',
      -    '\u0173': 'u',
      -    '\u1E77': 'u',
      -    '\u1E75': 'u',
      -    '\u0289': 'u',
      -    '\u24E5': 'v',
      -    '\uFF56': 'v',
      -    '\u1E7D': 'v',
      -    '\u1E7F': 'v',
      -    '\u028B': 'v',
      -    '\uA75F': 'v',
      -    '\u028C': 'v',
      -    '\uA761': 'vy',
      -    '\u24E6': 'w',
      -    '\uFF57': 'w',
      -    '\u1E81': 'w',
      -    '\u1E83': 'w',
      -    '\u0175': 'w',
      -    '\u1E87': 'w',
      -    '\u1E85': 'w',
      -    '\u1E98': 'w',
      -    '\u1E89': 'w',
      -    '\u2C73': 'w',
      -    '\u24E7': 'x',
      -    '\uFF58': 'x',
      -    '\u1E8B': 'x',
      -    '\u1E8D': 'x',
      -    '\u24E8': 'y',
      -    '\uFF59': 'y',
      -    '\u1EF3': 'y',
      -    '\u00FD': 'y',
      -    '\u0177': 'y',
      -    '\u1EF9': 'y',
      -    '\u0233': 'y',
      -    '\u1E8F': 'y',
      -    '\u00FF': 'y',
      -    '\u1EF7': 'y',
      -    '\u1E99': 'y',
      -    '\u1EF5': 'y',
      -    '\u01B4': 'y',
      -    '\u024F': 'y',
      -    '\u1EFF': 'y',
      -    '\u24E9': 'z',
      -    '\uFF5A': 'z',
      -    '\u017A': 'z',
      -    '\u1E91': 'z',
      -    '\u017C': 'z',
      -    '\u017E': 'z',
      -    '\u1E93': 'z',
      -    '\u1E95': 'z',
      -    '\u01B6': 'z',
      -    '\u0225': 'z',
      -    '\u0240': 'z',
      -    '\u2C6C': 'z',
      -    '\uA763': 'z',
      -    '\u0386': '\u0391',
      -    '\u0388': '\u0395',
      -    '\u0389': '\u0397',
      -    '\u038A': '\u0399',
      -    '\u03AA': '\u0399',
      -    '\u038C': '\u039F',
      -    '\u038E': '\u03A5',
      -    '\u03AB': '\u03A5',
      -    '\u038F': '\u03A9',
      -    '\u03AC': '\u03B1',
      -    '\u03AD': '\u03B5',
      -    '\u03AE': '\u03B7',
      -    '\u03AF': '\u03B9',
      -    '\u03CA': '\u03B9',
      -    '\u0390': '\u03B9',
      -    '\u03CC': '\u03BF',
      -    '\u03CD': '\u03C5',
      -    '\u03CB': '\u03C5',
      -    '\u03B0': '\u03C5',
      -    '\u03C9': '\u03C9',
      -    '\u03C2': '\u03C3'
      -  };
      -
      -  return diacritics;
      -});
      -
      -S2.define('select2/data/base',[
      -  '../utils'
      -], function (Utils) {
      -  function BaseAdapter ($element, options) {
      -    BaseAdapter.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(BaseAdapter, Utils.Observable);
      -
      -  BaseAdapter.prototype.current = function (callback) {
      -    throw new Error('The `current` method must be defined in child classes.');
      -  };
      -
      -  BaseAdapter.prototype.query = function (params, callback) {
      -    throw new Error('The `query` method must be defined in child classes.');
      -  };
      -
      -  BaseAdapter.prototype.bind = function (container, $container) {
      -    // Can be implemented in subclasses
      -  };
      -
      -  BaseAdapter.prototype.destroy = function () {
      -    // Can be implemented in subclasses
      -  };
      -
      -  BaseAdapter.prototype.generateResultId = function (container, data) {
      -    var id = container.id + '-result-';
      -
      -    id += Utils.generateChars(4);
      -
      -    if (data.id != null) {
      -      id += '-' + data.id.toString();
      -    } else {
      -      id += '-' + Utils.generateChars(4);
      -    }
      -    return id;
      -  };
      -
      -  return BaseAdapter;
      -});
      -
      -S2.define('select2/data/select',[
      -  './base',
      -  '../utils',
      -  'jquery'
      -], function (BaseAdapter, Utils, $) {
      -  function SelectAdapter ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    SelectAdapter.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(SelectAdapter, BaseAdapter);
      -
      -  SelectAdapter.prototype.current = function (callback) {
      -    var data = [];
      -    var self = this;
      -
      -    this.$element.find(':selected').each(function () {
      -      var $option = $(this);
      -
      -      var option = self.item($option);
      -
      -      data.push(option);
      -    });
      -
      -    callback(data);
      -  };
      -
      -  SelectAdapter.prototype.select = function (data) {
      -    var self = this;
      -
      -    data.selected = true;
      -
      -    // If data.element is a DOM node, use it instead
      -    if ($(data.element).is('option')) {
      -      data.element.selected = true;
      -
      -      this.$element.trigger('change');
      -
      -      return;
      -    }
      -
      -    if (this.$element.prop('multiple')) {
      -      this.current(function (currentData) {
      -        var val = [];
      -
      -        data = [data];
      -        data.push.apply(data, currentData);
      -
      -        for (var d = 0; d < data.length; d++) {
      -          var id = data[d].id;
      -
      -          if ($.inArray(id, val) === -1) {
      -            val.push(id);
      -          }
      -        }
      -
      -        self.$element.val(val);
      -        self.$element.trigger('change');
      -      });
      -    } else {
      -      var val = data.id;
      -
      -      this.$element.val(val);
      -      this.$element.trigger('change');
      -    }
      -  };
      -
      -  SelectAdapter.prototype.unselect = function (data) {
      -    var self = this;
      -
      -    if (!this.$element.prop('multiple')) {
      -      return;
      -    }
      -
      -    data.selected = false;
      -
      -    if ($(data.element).is('option')) {
      -      data.element.selected = false;
      -
      -      this.$element.trigger('change');
      -
      -      return;
      -    }
      -
      -    this.current(function (currentData) {
      -      var val = [];
      -
      -      for (var d = 0; d < currentData.length; d++) {
      -        var id = currentData[d].id;
      -
      -        if (id !== data.id && $.inArray(id, val) === -1) {
      -          val.push(id);
      -        }
      -      }
      -
      -      self.$element.val(val);
      -
      -      self.$element.trigger('change');
      -    });
      -  };
      -
      -  SelectAdapter.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    this.container = container;
      -
      -    container.on('select', function (params) {
      -      self.select(params.data);
      -    });
      -
      -    container.on('unselect', function (params) {
      -      self.unselect(params.data);
      -    });
      -  };
      -
      -  SelectAdapter.prototype.destroy = function () {
      -    // Remove anything added to child elements
      -    this.$element.find('*').each(function () {
      -      // Remove any custom data set by Select2
      -      $.removeData(this, 'data');
      -    });
      -  };
      -
      -  SelectAdapter.prototype.query = function (params, callback) {
      -    var data = [];
      -    var self = this;
      -
      -    var $options = this.$element.children();
      -
      -    $options.each(function () {
      -      var $option = $(this);
      -
      -      if (!$option.is('option') && !$option.is('optgroup')) {
      -        return;
      -      }
      -
      -      var option = self.item($option);
      -
      -      var matches = self.matches(params, option);
      -
      -      if (matches !== null) {
      -        data.push(matches);
      -      }
      -    });
      -
      -    callback({
      -      results: data
      -    });
      -  };
      -
      -  SelectAdapter.prototype.addOptions = function ($options) {
      -    Utils.appendMany(this.$element, $options);
      -  };
      -
      -  SelectAdapter.prototype.option = function (data) {
      -    var option;
      -
      -    if (data.children) {
      -      option = document.createElement('optgroup');
      -      option.label = data.text;
      -    } else {
      -      option = document.createElement('option');
      -
      -      if (option.textContent !== undefined) {
      -        option.textContent = data.text;
      -      } else {
      -        option.innerText = data.text;
      -      }
      -    }
      -
      -    if (data.id) {
      -      option.value = data.id;
      -    }
      -
      -    if (data.disabled) {
      -      option.disabled = true;
      -    }
      -
      -    if (data.selected) {
      -      option.selected = true;
      -    }
      -
      -    if (data.title) {
      -      option.title = data.title;
      -    }
      -
      -    var $option = $(option);
      -
      -    var normalizedData = this._normalizeItem(data);
      -    normalizedData.element = option;
      -
      -    // Override the option's data with the combined data
      -    $.data(option, 'data', normalizedData);
      -
      -    return $option;
      -  };
      -
      -  SelectAdapter.prototype.item = function ($option) {
      -    var data = {};
      -
      -    data = $.data($option[0], 'data');
      -
      -    if (data != null) {
      -      return data;
      -    }
      -
      -    if ($option.is('option')) {
      -      data = {
      -        id: $option.val(),
      -        text: $option.text(),
      -        disabled: $option.prop('disabled'),
      -        selected: $option.prop('selected'),
      -        title: $option.prop('title')
      -      };
      -    } else if ($option.is('optgroup')) {
      -      data = {
      -        text: $option.prop('label'),
      -        children: [],
      -        title: $option.prop('title')
      -      };
      -
      -      var $children = $option.children('option');
      -      var children = [];
      -
      -      for (var c = 0; c < $children.length; c++) {
      -        var $child = $($children[c]);
      -
      -        var child = this.item($child);
      -
      -        children.push(child);
      -      }
      -
      -      data.children = children;
      -    }
      -
      -    data = this._normalizeItem(data);
      -    data.element = $option[0];
      -
      -    $.data($option[0], 'data', data);
      -
      -    return data;
      -  };
      -
      -  SelectAdapter.prototype._normalizeItem = function (item) {
      -    if (!$.isPlainObject(item)) {
      -      item = {
      -        id: item,
      -        text: item
      -      };
      -    }
      -
      -    item = $.extend({}, {
      -      text: ''
      -    }, item);
      -
      -    var defaults = {
      -      selected: false,
      -      disabled: false
      -    };
      -
      -    if (item.id != null) {
      -      item.id = item.id.toString();
      -    }
      -
      -    if (item.text != null) {
      -      item.text = item.text.toString();
      -    }
      -
      -    if (item._resultId == null && item.id && this.container != null) {
      -      item._resultId = this.generateResultId(this.container, item);
      -    }
      -
      -    return $.extend({}, defaults, item);
      -  };
      -
      -  SelectAdapter.prototype.matches = function (params, data) {
      -    var matcher = this.options.get('matcher');
      -
      -    return matcher(params, data);
      -  };
      -
      -  return SelectAdapter;
      -});
      -
      -S2.define('select2/data/array',[
      -  './select',
      -  '../utils',
      -  'jquery'
      -], function (SelectAdapter, Utils, $) {
      -  function ArrayAdapter ($element, options) {
      -    var data = options.get('data') || [];
      -
      -    ArrayAdapter.__super__.constructor.call(this, $element, options);
      -
      -    this.addOptions(this.convertToOptions(data));
      -  }
      -
      -  Utils.Extend(ArrayAdapter, SelectAdapter);
      -
      -  ArrayAdapter.prototype.select = function (data) {
      -    var $option = this.$element.find('option').filter(function (i, elm) {
      -      return elm.value == data.id.toString();
      -    });
      -
      -    if ($option.length === 0) {
      -      $option = this.option(data);
      -
      -      this.addOptions($option);
      -    }
      -
      -    ArrayAdapter.__super__.select.call(this, data);
      -  };
      -
      -  ArrayAdapter.prototype.convertToOptions = function (data) {
      -    var self = this;
      -
      -    var $existing = this.$element.find('option');
      -    var existingIds = $existing.map(function () {
      -      return self.item($(this)).id;
      -    }).get();
      -
      -    var $options = [];
      -
      -    // Filter out all items except for the one passed in the argument
      -    function onlyItem (item) {
      -      return function () {
      -        return $(this).val() == item.id;
      -      };
      -    }
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var item = this._normalizeItem(data[d]);
      -
      -      // Skip items which were pre-loaded, only merge the data
      -      if ($.inArray(item.id, existingIds) >= 0) {
      -        var $existingOption = $existing.filter(onlyItem(item));
      -
      -        var existingData = this.item($existingOption);
      -        var newData = $.extend(true, {}, item, existingData);
      -
      -        var $newOption = this.option(newData);
      -
      -        $existingOption.replaceWith($newOption);
      -
      -        continue;
      -      }
      -
      -      var $option = this.option(item);
      -
      -      if (item.children) {
      -        var $children = this.convertToOptions(item.children);
      -
      -        Utils.appendMany($option, $children);
      -      }
      -
      -      $options.push($option);
      -    }
      -
      -    return $options;
      -  };
      -
      -  return ArrayAdapter;
      -});
      -
      -S2.define('select2/data/ajax',[
      -  './array',
      -  '../utils',
      -  'jquery'
      -], function (ArrayAdapter, Utils, $) {
      -  function AjaxAdapter ($element, options) {
      -    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
      -
      -    if (this.ajaxOptions.processResults != null) {
      -      this.processResults = this.ajaxOptions.processResults;
      -    }
      -
      -    AjaxAdapter.__super__.constructor.call(this, $element, options);
      -  }
      -
      -  Utils.Extend(AjaxAdapter, ArrayAdapter);
      -
      -  AjaxAdapter.prototype._applyDefaults = function (options) {
      -    var defaults = {
      -      data: function (params) {
      -        return $.extend({}, params, {
      -          q: params.term
      -        });
      -      },
      -      transport: function (params, success, failure) {
      -        var $request = $.ajax(params);
      -
      -        $request.then(success);
      -        $request.fail(failure);
      -
      -        return $request;
      -      }
      -    };
      -
      -    return $.extend({}, defaults, options, true);
      -  };
      -
      -  AjaxAdapter.prototype.processResults = function (results) {
      -    return results;
      -  };
      -
      -  AjaxAdapter.prototype.query = function (params, callback) {
      -    var matches = [];
      -    var self = this;
      -
      -    if (this._request != null) {
      -      // JSONP requests cannot always be aborted
      -      if ($.isFunction(this._request.abort)) {
      -        this._request.abort();
      -      }
      -
      -      this._request = null;
      -    }
      -
      -    var options = $.extend({
      -      type: 'GET'
      -    }, this.ajaxOptions);
      -
      -    if (typeof options.url === 'function') {
      -      options.url = options.url.call(this.$element, params);
      -    }
      -
      -    if (typeof options.data === 'function') {
      -      options.data = options.data.call(this.$element, params);
      -    }
      -
      -    function request () {
      -      var $request = options.transport(options, function (data) {
      -        var results = self.processResults(data, params);
      -
      -        if (self.options.get('debug') && window.console && console.error) {
      -          // Check to make sure that the response included a `results` key.
      -          if (!results || !results.results || !$.isArray(results.results)) {
      -            console.error(
      -              'Select2: The AJAX results did not return an array in the ' +
      -              '`results` key of the response.'
      -            );
      -          }
      -        }
      -
      -        callback(results);
      -      }, function () {
      -        // Attempt to detect if a request was aborted
      -        // Only works if the transport exposes a status property
      -        if ($request.status && $request.status === '0') {
      -          return;
      -        }
      -
      -        self.trigger('results:message', {
      -          message: 'errorLoading'
      -        });
      -      });
      -
      -      self._request = $request;
      -    }
      -
      -    if (this.ajaxOptions.delay && params.term != null) {
      -      if (this._queryTimeout) {
      -        window.clearTimeout(this._queryTimeout);
      -      }
      -
      -      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
      -    } else {
      -      request();
      -    }
      -  };
      -
      -  return AjaxAdapter;
      -});
      -
      -S2.define('select2/data/tags',[
      -  'jquery'
      -], function ($) {
      -  function Tags (decorated, $element, options) {
      -    var tags = options.get('tags');
      -
      -    var createTag = options.get('createTag');
      -
      -    if (createTag !== undefined) {
      -      this.createTag = createTag;
      -    }
      -
      -    var insertTag = options.get('insertTag');
      -
      -    if (insertTag !== undefined) {
      -        this.insertTag = insertTag;
      -    }
      -
      -    decorated.call(this, $element, options);
      -
      -    if ($.isArray(tags)) {
      -      for (var t = 0; t < tags.length; t++) {
      -        var tag = tags[t];
      -        var item = this._normalizeItem(tag);
      -
      -        var $option = this.option(item);
      -
      -        this.$element.append($option);
      -      }
      -    }
      -  }
      -
      -  Tags.prototype.query = function (decorated, params, callback) {
      -    var self = this;
      -
      -    this._removeOldTags();
      -
      -    if (params.term == null || params.page != null) {
      -      decorated.call(this, params, callback);
      -      return;
      -    }
      -
      -    function wrapper (obj, child) {
      -      var data = obj.results;
      -
      -      for (var i = 0; i < data.length; i++) {
      -        var option = data[i];
      -
      -        var checkChildren = (
      -          option.children != null &&
      -          !wrapper({
      -            results: option.children
      -          }, true)
      -        );
      -
      -        var checkText = option.text === params.term;
      -
      -        if (checkText || checkChildren) {
      -          if (child) {
      -            return false;
      -          }
      -
      -          obj.data = data;
      -          callback(obj);
      -
      -          return;
      -        }
      -      }
      -
      -      if (child) {
      -        return true;
      -      }
      -
      -      var tag = self.createTag(params);
      -
      -      if (tag != null) {
      -        var $option = self.option(tag);
      -        $option.attr('data-select2-tag', true);
      -
      -        self.addOptions([$option]);
      -
      -        self.insertTag(data, tag);
      -      }
      -
      -      obj.results = data;
      -
      -      callback(obj);
      -    }
      -
      -    decorated.call(this, params, wrapper);
      -  };
      -
      -  Tags.prototype.createTag = function (decorated, params) {
      -    var term = $.trim(params.term);
      -
      -    if (term === '') {
      -      return null;
      -    }
      -
      -    return {
      -      id: term,
      -      text: term
      -    };
      -  };
      -
      -  Tags.prototype.insertTag = function (_, data, tag) {
      -    data.unshift(tag);
      -  };
      -
      -  Tags.prototype._removeOldTags = function (_) {
      -    var tag = this._lastTag;
      -
      -    var $options = this.$element.find('option[data-select2-tag]');
      -
      -    $options.each(function () {
      -      if (this.selected) {
      -        return;
      -      }
      -
      -      $(this).remove();
      -    });
      -  };
      -
      -  return Tags;
      -});
      -
      -S2.define('select2/data/tokenizer',[
      -  'jquery'
      -], function ($) {
      -  function Tokenizer (decorated, $element, options) {
      -    var tokenizer = options.get('tokenizer');
      -
      -    if (tokenizer !== undefined) {
      -      this.tokenizer = tokenizer;
      -    }
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Tokenizer.prototype.bind = function (decorated, container, $container) {
      -    decorated.call(this, container, $container);
      -
      -    this.$search =  container.dropdown.$search || container.selection.$search ||
      -      $container.find('.select2-search__field');
      -  };
      -
      -  Tokenizer.prototype.query = function (decorated, params, callback) {
      -    var self = this;
      -
      -    function createAndSelect (data) {
      -      // Normalize the data object so we can use it for checks
      -      var item = self._normalizeItem(data);
      -
      -      // Check if the data object already exists as a tag
      -      // Select it if it doesn't
      -      var $existingOptions = self.$element.find('option').filter(function () {
      -        return $(this).val() === item.id;
      -      });
      -
      -      // If an existing option wasn't found for it, create the option
      -      if (!$existingOptions.length) {
      -        var $option = self.option(item);
      -        $option.attr('data-select2-tag', true);
      -
      -        self._removeOldTags();
      -        self.addOptions([$option]);
      -      }
      -
      -      // Select the item, now that we know there is an option for it
      -      select(item);
      -    }
      -
      -    function select (data) {
      -      self.trigger('select', {
      -        data: data
      -      });
      -    }
      -
      -    params.term = params.term || '';
      -
      -    var tokenData = this.tokenizer(params, this.options, createAndSelect);
      -
      -    if (tokenData.term !== params.term) {
      -      // Replace the search term if we have the search box
      -      if (this.$search.length) {
      -        this.$search.val(tokenData.term);
      -        this.$search.focus();
      -      }
      -
      -      params.term = tokenData.term;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
      -    var separators = options.get('tokenSeparators') || [];
      -    var term = params.term;
      -    var i = 0;
      -
      -    var createTag = this.createTag || function (params) {
      -      return {
      -        id: params.term,
      -        text: params.term
      -      };
      -    };
      -
      -    while (i < term.length) {
      -      var termChar = term[i];
      -
      -      if ($.inArray(termChar, separators) === -1) {
      -        i++;
      -
      -        continue;
      -      }
      -
      -      var part = term.substr(0, i);
      -      var partParams = $.extend({}, params, {
      -        term: part
      -      });
      -
      -      var data = createTag(partParams);
      -
      -      if (data == null) {
      -        i++;
      -        continue;
      -      }
      -
      -      callback(data);
      -
      -      // Reset the term to not include the tokenized portion
      -      term = term.substr(i + 1) || '';
      -      i = 0;
      -    }
      -
      -    return {
      -      term: term
      -    };
      -  };
      -
      -  return Tokenizer;
      -});
      -
      -S2.define('select2/data/minimumInputLength',[
      -
      -], function () {
      -  function MinimumInputLength (decorated, $e, options) {
      -    this.minimumInputLength = options.get('minimumInputLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MinimumInputLength.prototype.query = function (decorated, params, callback) {
      -    params.term = params.term || '';
      -
      -    if (params.term.length < this.minimumInputLength) {
      -      this.trigger('results:message', {
      -        message: 'inputTooShort',
      -        args: {
      -          minimum: this.minimumInputLength,
      -          input: params.term,
      -          params: params
      -        }
      -      });
      -
      -      return;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  return MinimumInputLength;
      -});
      -
      -S2.define('select2/data/maximumInputLength',[
      -
      -], function () {
      -  function MaximumInputLength (decorated, $e, options) {
      -    this.maximumInputLength = options.get('maximumInputLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MaximumInputLength.prototype.query = function (decorated, params, callback) {
      -    params.term = params.term || '';
      -
      -    if (this.maximumInputLength > 0 &&
      -        params.term.length > this.maximumInputLength) {
      -      this.trigger('results:message', {
      -        message: 'inputTooLong',
      -        args: {
      -          maximum: this.maximumInputLength,
      -          input: params.term,
      -          params: params
      -        }
      -      });
      -
      -      return;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  return MaximumInputLength;
      -});
      -
      -S2.define('select2/data/maximumSelectionLength',[
      -
      -], function (){
      -  function MaximumSelectionLength (decorated, $e, options) {
      -    this.maximumSelectionLength = options.get('maximumSelectionLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MaximumSelectionLength.prototype.query =
      -    function (decorated, params, callback) {
      -      var self = this;
      -
      -      this.current(function (currentData) {
      -        var count = currentData != null ? currentData.length : 0;
      -        if (self.maximumSelectionLength > 0 &&
      -          count >= self.maximumSelectionLength) {
      -          self.trigger('results:message', {
      -            message: 'maximumSelected',
      -            args: {
      -              maximum: self.maximumSelectionLength
      -            }
      -          });
      -          return;
      -        }
      -        decorated.call(self, params, callback);
      -      });
      -  };
      -
      -  return MaximumSelectionLength;
      -});
      -
      -S2.define('select2/dropdown',[
      -  'jquery',
      -  './utils'
      -], function ($, Utils) {
      -  function Dropdown ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    Dropdown.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(Dropdown, Utils.Observable);
      -
      -  Dropdown.prototype.render = function () {
      -    var $dropdown = $(
      -      '<span class="select2-dropdown">' +
      -        '<span class="select2-results"></span>' +
      -      '</span>'
      -    );
      -
      -    $dropdown.attr('dir', this.options.get('dir'));
      -
      -    this.$dropdown = $dropdown;
      -
      -    return $dropdown;
      -  };
      -
      -  Dropdown.prototype.bind = function () {
      -    // Should be implemented in subclasses
      -  };
      -
      -  Dropdown.prototype.position = function ($dropdown, $container) {
      -    // Should be implmented in subclasses
      -  };
      -
      -  Dropdown.prototype.destroy = function () {
      -    // Remove the dropdown from the DOM
      -    this.$dropdown.remove();
      -  };
      -
      -  return Dropdown;
      -});
      -
      -S2.define('select2/dropdown/search',[
      -  'jquery',
      -  '../utils'
      -], function ($, Utils) {
      -  function Search () { }
      -
      -  Search.prototype.render = function (decorated) {
      -    var $rendered = decorated.call(this);
      -
      -    var $search = $(
      -      '<span class="select2-search select2-search--dropdown">' +
      -        '<input class="select2-search__field" type="search" tabindex="-1"' +
      -        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
      -        ' spellcheck="false" role="textbox" />' +
      -      '</span>'
      -    );
      -
      -    this.$searchContainer = $search;
      -    this.$search = $search.find('input');
      -
      -    $rendered.prepend($search);
      -
      -    return $rendered;
      -  };
      -
      -  Search.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    this.$search.on('keydown', function (evt) {
      -      self.trigger('keypress', evt);
      -
      -      self._keyUpPrevented = evt.isDefaultPrevented();
      -    });
      -
      -    // Workaround for browsers which do not support the `input` event
      -    // This will prevent double-triggering of events for browsers which support
      -    // both the `keyup` and `input` events.
      -    this.$search.on('input', function (evt) {
      -      // Unbind the duplicated `keyup` event
      -      $(this).off('keyup');
      -    });
      -
      -    this.$search.on('keyup input', function (evt) {
      -      self.handleSearch(evt);
      -    });
      -
      -    container.on('open', function () {
      -      self.$search.attr('tabindex', 0);
      -
      -      self.$search.focus();
      -
      -      window.setTimeout(function () {
      -        self.$search.focus();
      -      }, 0);
      -    });
      -
      -    container.on('close', function () {
      -      self.$search.attr('tabindex', -1);
      -
      -      self.$search.val('');
      -    });
      -
      -    container.on('focus', function () {
      -      if (container.isOpen()) {
      -        self.$search.focus();
      -      }
      -    });
      -
      -    container.on('results:all', function (params) {
      -      if (params.query.term == null || params.query.term === '') {
      -        var showSearch = self.showSearch(params);
      -
      -        if (showSearch) {
      -          self.$searchContainer.removeClass('select2-search--hide');
      -        } else {
      -          self.$searchContainer.addClass('select2-search--hide');
      -        }
      -      }
      -    });
      -  };
      -
      -  Search.prototype.handleSearch = function (evt) {
      -    if (!this._keyUpPrevented) {
      -      var input = this.$search.val();
      -
      -      this.trigger('query', {
      -        term: input
      -      });
      -    }
      -
      -    this._keyUpPrevented = false;
      -  };
      -
      -  Search.prototype.showSearch = function (_, params) {
      -    return true;
      -  };
      -
      -  return Search;
      -});
      -
      -S2.define('select2/dropdown/hidePlaceholder',[
      -
      -], function () {
      -  function HidePlaceholder (decorated, $element, options, dataAdapter) {
      -    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -  }
      -
      -  HidePlaceholder.prototype.append = function (decorated, data) {
      -    data.results = this.removePlaceholder(data.results);
      -
      -    decorated.call(this, data);
      -  };
      -
      -  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
      -    if (typeof placeholder === 'string') {
      -      placeholder = {
      -        id: '',
      -        text: placeholder
      -      };
      -    }
      -
      -    return placeholder;
      -  };
      -
      -  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
      -    var modifiedData = data.slice(0);
      -
      -    for (var d = data.length - 1; d >= 0; d--) {
      -      var item = data[d];
      -
      -      if (this.placeholder.id === item.id) {
      -        modifiedData.splice(d, 1);
      -      }
      -    }
      -
      -    return modifiedData;
      -  };
      -
      -  return HidePlaceholder;
      -});
      -
      -S2.define('select2/dropdown/infiniteScroll',[
      -  'jquery'
      -], function ($) {
      -  function InfiniteScroll (decorated, $element, options, dataAdapter) {
      -    this.lastParams = {};
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -
      -    this.$loadingMore = this.createLoadingMore();
      -    this.loading = false;
      -  }
      -
      -  InfiniteScroll.prototype.append = function (decorated, data) {
      -    this.$loadingMore.remove();
      -    this.loading = false;
      -
      -    decorated.call(this, data);
      -
      -    if (this.showLoadingMore(data)) {
      -      this.$results.append(this.$loadingMore);
      -    }
      -  };
      -
      -  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('query', function (params) {
      -      self.lastParams = params;
      -      self.loading = true;
      -    });
      -
      -    container.on('query:append', function (params) {
      -      self.lastParams = params;
      -      self.loading = true;
      -    });
      -
      -    this.$results.on('scroll', function () {
      -      var isLoadMoreVisible = $.contains(
      -        document.documentElement,
      -        self.$loadingMore[0]
      -      );
      -
      -      if (self.loading || !isLoadMoreVisible) {
      -        return;
      -      }
      -
      -      var currentOffset = self.$results.offset().top +
      -        self.$results.outerHeight(false);
      -      var loadingMoreOffset = self.$loadingMore.offset().top +
      -        self.$loadingMore.outerHeight(false);
      -
      -      if (currentOffset + 50 >= loadingMoreOffset) {
      -        self.loadMore();
      -      }
      -    });
      -  };
      -
      -  InfiniteScroll.prototype.loadMore = function () {
      -    this.loading = true;
      -
      -    var params = $.extend({}, {page: 1}, this.lastParams);
      -
      -    params.page++;
      -
      -    this.trigger('query:append', params);
      -  };
      -
      -  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
      -    return data.pagination && data.pagination.more;
      -  };
      -
      -  InfiniteScroll.prototype.createLoadingMore = function () {
      -    var $option = $(
      -      '<li ' +
      -      'class="select2-results__option select2-results__option--load-more"' +
      -      'role="treeitem" aria-disabled="true"></li>'
      -    );
      -
      -    var message = this.options.get('translations').get('loadingMore');
      -
      -    $option.html(message(this.lastParams));
      -
      -    return $option;
      -  };
      -
      -  return InfiniteScroll;
      -});
      -
      -S2.define('select2/dropdown/attachBody',[
      -  'jquery',
      -  '../utils'
      -], function ($, Utils) {
      -  function AttachBody (decorated, $element, options) {
      -    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  AttachBody.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    var setupResultsEvents = false;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('open', function () {
      -      self._showDropdown();
      -      self._attachPositioningHandler(container);
      -
      -      if (!setupResultsEvents) {
      -        setupResultsEvents = true;
      -
      -        container.on('results:all', function () {
      -          self._positionDropdown();
      -          self._resizeDropdown();
      -        });
      -
      -        container.on('results:append', function () {
      -          self._positionDropdown();
      -          self._resizeDropdown();
      -        });
      -      }
      -    });
      -
      -    container.on('close', function () {
      -      self._hideDropdown();
      -      self._detachPositioningHandler(container);
      -    });
      -
      -    this.$dropdownContainer.on('mousedown', function (evt) {
      -      evt.stopPropagation();
      -    });
      -  };
      -
      -  AttachBody.prototype.destroy = function (decorated) {
      -    decorated.call(this);
      -
      -    this.$dropdownContainer.remove();
      -  };
      -
      -  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
      -    // Clone all of the container classes
      -    $dropdown.attr('class', $container.attr('class'));
      -
      -    $dropdown.removeClass('select2');
      -    $dropdown.addClass('select2-container--open');
      -
      -    $dropdown.css({
      -      position: 'absolute',
      -      top: -999999
      -    });
      -
      -    this.$container = $container;
      -  };
      -
      -  AttachBody.prototype.render = function (decorated) {
      -    var $container = $('<span></span>');
      -
      -    var $dropdown = decorated.call(this);
      -    $container.append($dropdown);
      -
      -    this.$dropdownContainer = $container;
      -
      -    return $container;
      -  };
      -
      -  AttachBody.prototype._hideDropdown = function (decorated) {
      -    this.$dropdownContainer.detach();
      -  };
      -
      -  AttachBody.prototype._attachPositioningHandler =
      -      function (decorated, container) {
      -    var self = this;
      -
      -    var scrollEvent = 'scroll.select2.' + container.id;
      -    var resizeEvent = 'resize.select2.' + container.id;
      -    var orientationEvent = 'orientationchange.select2.' + container.id;
      -
      -    var $watchers = this.$container.parents().filter(Utils.hasScroll);
      -    $watchers.each(function () {
      -      $(this).data('select2-scroll-position', {
      -        x: $(this).scrollLeft(),
      -        y: $(this).scrollTop()
      -      });
      -    });
      -
      -    $watchers.on(scrollEvent, function (ev) {
      -      var position = $(this).data('select2-scroll-position');
      -      $(this).scrollTop(position.y);
      -    });
      -
      -    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
      -      function (e) {
      -      self._positionDropdown();
      -      self._resizeDropdown();
      -    });
      -  };
      -
      -  AttachBody.prototype._detachPositioningHandler =
      -      function (decorated, container) {
      -    var scrollEvent = 'scroll.select2.' + container.id;
      -    var resizeEvent = 'resize.select2.' + container.id;
      -    var orientationEvent = 'orientationchange.select2.' + container.id;
      -
      -    var $watchers = this.$container.parents().filter(Utils.hasScroll);
      -    $watchers.off(scrollEvent);
      -
      -    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
      -  };
      -
      -  AttachBody.prototype._positionDropdown = function () {
      -    var $window = $(window);
      -
      -    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
      -    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
      -
      -    var newDirection = null;
      -
      -    var offset = this.$container.offset();
      -
      -    offset.bottom = offset.top + this.$container.outerHeight(false);
      -
      -    var container = {
      -      height: this.$container.outerHeight(false)
      -    };
      -
      -    container.top = offset.top;
      -    container.bottom = offset.top + container.height;
      -
      -    var dropdown = {
      -      height: this.$dropdown.outerHeight(false)
      -    };
      -
      -    var viewport = {
      -      top: $window.scrollTop(),
      -      bottom: $window.scrollTop() + $window.height()
      -    };
      -
      -    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
      -    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
      -
      -    var css = {
      -      left: offset.left,
      -      top: container.bottom
      -    };
      -
      -    // Determine what the parent element is to use for calciulating the offset
      -    var $offsetParent = this.$dropdownParent;
      -
      -    // For statically positoned elements, we need to get the element
      -    // that is determining the offset
      -    if ($offsetParent.css('position') === 'static') {
      -      $offsetParent = $offsetParent.offsetParent();
      -    }
      -
      -    var parentOffset = $offsetParent.offset();
      -
      -    css.top -= parentOffset.top;
      -    css.left -= parentOffset.left;
      -
      -    if (!isCurrentlyAbove && !isCurrentlyBelow) {
      -      newDirection = 'below';
      -    }
      -
      -    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
      -      newDirection = 'above';
      -    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
      -      newDirection = 'below';
      -    }
      -
      -    if (newDirection == 'above' ||
      -      (isCurrentlyAbove && newDirection !== 'below')) {
      -      css.top = container.top - parentOffset.top - dropdown.height;
      -    }
      -
      -    if (newDirection != null) {
      -      this.$dropdown
      -        .removeClass('select2-dropdown--below select2-dropdown--above')
      -        .addClass('select2-dropdown--' + newDirection);
      -      this.$container
      -        .removeClass('select2-container--below select2-container--above')
      -        .addClass('select2-container--' + newDirection);
      -    }
      -
      -    this.$dropdownContainer.css(css);
      -  };
      -
      -  AttachBody.prototype._resizeDropdown = function () {
      -    var css = {
      -      width: this.$container.outerWidth(false) + 'px'
      -    };
      -
      -    if (this.options.get('dropdownAutoWidth')) {
      -      css.minWidth = css.width;
      -      css.position = 'relative';
      -      css.width = 'auto';
      -    }
      -
      -    this.$dropdown.css(css);
      -  };
      -
      -  AttachBody.prototype._showDropdown = function (decorated) {
      -    this.$dropdownContainer.appendTo(this.$dropdownParent);
      -
      -    this._positionDropdown();
      -    this._resizeDropdown();
      -  };
      -
      -  return AttachBody;
      -});
      -
      -S2.define('select2/dropdown/minimumResultsForSearch',[
      -
      -], function () {
      -  function countResults (data) {
      -    var count = 0;
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var item = data[d];
      -
      -      if (item.children) {
      -        count += countResults(item.children);
      -      } else {
      -        count++;
      -      }
      -    }
      -
      -    return count;
      -  }
      -
      -  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
      -    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
      -
      -    if (this.minimumResultsForSearch < 0) {
      -      this.minimumResultsForSearch = Infinity;
      -    }
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -  }
      -
      -  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
      -    if (countResults(params.data.results) < this.minimumResultsForSearch) {
      -      return false;
      -    }
      -
      -    return decorated.call(this, params);
      -  };
      -
      -  return MinimumResultsForSearch;
      -});
      -
      -S2.define('select2/dropdown/selectOnClose',[
      -
      -], function () {
      -  function SelectOnClose () { }
      -
      -  SelectOnClose.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('close', function (params) {
      -      self._handleSelectOnClose(params);
      -    });
      -  };
      -
      -  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
      -    if (params && params.originalSelect2Event != null) {
      -      var event = params.originalSelect2Event;
      -
      -      // Don't select an item if the close event was triggered from a select or
      -      // unselect event
      -      if (event._type === 'select' || event._type === 'unselect') {
      -        return;
      -      }
      -    }
      -
      -    var $highlightedResults = this.getHighlightedResults();
      -
      -    // Only select highlighted results
      -    if ($highlightedResults.length < 1) {
      -      return;
      -    }
      -
      -    var data = $highlightedResults.data('data');
      -
      -    // Don't re-select already selected resulte
      -    if (
      -      (data.element != null && data.element.selected) ||
      -      (data.element == null && data.selected)
      -    ) {
      -      return;
      -    }
      -
      -    this.trigger('select', {
      -        data: data
      -    });
      -  };
      -
      -  return SelectOnClose;
      -});
      -
      -S2.define('select2/dropdown/closeOnSelect',[
      -
      -], function () {
      -  function CloseOnSelect () { }
      -
      -  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('select', function (evt) {
      -      self._selectTriggered(evt);
      -    });
      -
      -    container.on('unselect', function (evt) {
      -      self._selectTriggered(evt);
      -    });
      -  };
      -
      -  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
      -    var originalEvent = evt.originalEvent;
      -
      -    // Don't close if the control key is being held
      -    if (originalEvent && originalEvent.ctrlKey) {
      -      return;
      -    }
      -
      -    this.trigger('close', {
      -      originalEvent: originalEvent,
      -      originalSelect2Event: evt
      -    });
      -  };
      -
      -  return CloseOnSelect;
      -});
      -
      -S2.define('select2/i18n/en',[],function () {
      -  // English
      -  return {
      -    errorLoading: function () {
      -      return 'The results could not be loaded.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Please delete ' + overChars + ' character';
      -
      -      if (overChars != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Please enter ' + remainingChars + ' or more characters';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Loading more results…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'You can only select ' + args.maximum + ' item';
      -
      -      if (args.maximum != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'No results found';
      -    },
      -    searching: function () {
      -      return 'Searching…';
      -    }
      -  };
      -});
      -
      -S2.define('select2/defaults',[
      -  'jquery',
      -  'require',
      -
      -  './results',
      -
      -  './selection/single',
      -  './selection/multiple',
      -  './selection/placeholder',
      -  './selection/allowClear',
      -  './selection/search',
      -  './selection/eventRelay',
      -
      -  './utils',
      -  './translation',
      -  './diacritics',
      -
      -  './data/select',
      -  './data/array',
      -  './data/ajax',
      -  './data/tags',
      -  './data/tokenizer',
      -  './data/minimumInputLength',
      -  './data/maximumInputLength',
      -  './data/maximumSelectionLength',
      -
      -  './dropdown',
      -  './dropdown/search',
      -  './dropdown/hidePlaceholder',
      -  './dropdown/infiniteScroll',
      -  './dropdown/attachBody',
      -  './dropdown/minimumResultsForSearch',
      -  './dropdown/selectOnClose',
      -  './dropdown/closeOnSelect',
      -
      -  './i18n/en'
      -], function ($, require,
      -
      -             ResultsList,
      -
      -             SingleSelection, MultipleSelection, Placeholder, AllowClear,
      -             SelectionSearch, EventRelay,
      -
      -             Utils, Translation, DIACRITICS,
      -
      -             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
      -             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
      -
      -             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
      -             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
      -
      -             EnglishTranslation) {
      -  function Defaults () {
      -    this.reset();
      -  }
      -
      -  Defaults.prototype.apply = function (options) {
      -    options = $.extend(true, {}, this.defaults, options);
      -
      -    if (options.dataAdapter == null) {
      -      if (options.ajax != null) {
      -        options.dataAdapter = AjaxData;
      -      } else if (options.data != null) {
      -        options.dataAdapter = ArrayData;
      -      } else {
      -        options.dataAdapter = SelectData;
      -      }
      -
      -      if (options.minimumInputLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MinimumInputLength
      -        );
      -      }
      -
      -      if (options.maximumInputLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MaximumInputLength
      -        );
      -      }
      -
      -      if (options.maximumSelectionLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MaximumSelectionLength
      -        );
      -      }
      -
      -      if (options.tags) {
      -        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
      -      }
      -
      -      if (options.tokenSeparators != null || options.tokenizer != null) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          Tokenizer
      -        );
      -      }
      -
      -      if (options.query != null) {
      -        var Query = require(options.amdBase + 'compat/query');
      -
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          Query
      -        );
      -      }
      -
      -      if (options.initSelection != null) {
      -        var InitSelection = require(options.amdBase + 'compat/initSelection');
      -
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          InitSelection
      -        );
      -      }
      -    }
      -
      -    if (options.resultsAdapter == null) {
      -      options.resultsAdapter = ResultsList;
      -
      -      if (options.ajax != null) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          InfiniteScroll
      -        );
      -      }
      -
      -      if (options.placeholder != null) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          HidePlaceholder
      -        );
      -      }
      -
      -      if (options.selectOnClose) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          SelectOnClose
      -        );
      -      }
      -    }
      -
      -    if (options.dropdownAdapter == null) {
      -      if (options.multiple) {
      -        options.dropdownAdapter = Dropdown;
      -      } else {
      -        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
      -
      -        options.dropdownAdapter = SearchableDropdown;
      -      }
      -
      -      if (options.minimumResultsForSearch !== 0) {
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          MinimumResultsForSearch
      -        );
      -      }
      -
      -      if (options.closeOnSelect) {
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          CloseOnSelect
      -        );
      -      }
      -
      -      if (
      -        options.dropdownCssClass != null ||
      -        options.dropdownCss != null ||
      -        options.adaptDropdownCssClass != null
      -      ) {
      -        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
      -
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          DropdownCSS
      -        );
      -      }
      -
      -      options.dropdownAdapter = Utils.Decorate(
      -        options.dropdownAdapter,
      -        AttachBody
      -      );
      -    }
      -
      -    if (options.selectionAdapter == null) {
      -      if (options.multiple) {
      -        options.selectionAdapter = MultipleSelection;
      -      } else {
      -        options.selectionAdapter = SingleSelection;
      -      }
      -
      -      // Add the placeholder mixin if a placeholder was specified
      -      if (options.placeholder != null) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          Placeholder
      -        );
      -      }
      -
      -      if (options.allowClear) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          AllowClear
      -        );
      -      }
      -
      -      if (options.multiple) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          SelectionSearch
      -        );
      -      }
      -
      -      if (
      -        options.containerCssClass != null ||
      -        options.containerCss != null ||
      -        options.adaptContainerCssClass != null
      -      ) {
      -        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
      -
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          ContainerCSS
      -        );
      -      }
      -
      -      options.selectionAdapter = Utils.Decorate(
      -        options.selectionAdapter,
      -        EventRelay
      -      );
      -    }
      -
      -    if (typeof options.language === 'string') {
      -      // Check if the language is specified with a region
      -      if (options.language.indexOf('-') > 0) {
      -        // Extract the region information if it is included
      -        var languageParts = options.language.split('-');
      -        var baseLanguage = languageParts[0];
      -
      -        options.language = [options.language, baseLanguage];
      -      } else {
      -        options.language = [options.language];
      -      }
      -    }
      -
      -    if ($.isArray(options.language)) {
      -      var languages = new Translation();
      -      options.language.push('en');
      -
      -      var languageNames = options.language;
      -
      -      for (var l = 0; l < languageNames.length; l++) {
      -        var name = languageNames[l];
      -        var language = {};
      -
      -        try {
      -          // Try to load it with the original name
      -          language = Translation.loadPath(name);
      -        } catch (e) {
      -          try {
      -            // If we couldn't load it, check if it wasn't the full path
      -            name = this.defaults.amdLanguageBase + name;
      -            language = Translation.loadPath(name);
      -          } catch (ex) {
      -            // The translation could not be loaded at all. Sometimes this is
      -            // because of a configuration problem, other times this can be
      -            // because of how Select2 helps load all possible translation files.
      -            if (options.debug && window.console && console.warn) {
      -              console.warn(
      -                'Select2: The language file for "' + name + '" could not be ' +
      -                'automatically loaded. A fallback will be used instead.'
      -              );
      -            }
      -
      -            continue;
      -          }
      -        }
      -
      -        languages.extend(language);
      -      }
      -
      -      options.translations = languages;
      -    } else {
      -      var baseTranslation = Translation.loadPath(
      -        this.defaults.amdLanguageBase + 'en'
      -      );
      -      var customTranslation = new Translation(options.language);
      -
      -      customTranslation.extend(baseTranslation);
      -
      -      options.translations = customTranslation;
      -    }
      -
      -    return options;
      -  };
      -
      -  Defaults.prototype.reset = function () {
      -    function stripDiacritics (text) {
      -      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
      -      function match(a) {
      -        return DIACRITICS[a] || a;
      -      }
      -
      -      return text.replace(/[^\u0000-\u007E]/g, match);
      -    }
      -
      -    function matcher (params, data) {
      -      // Always return the object if there is nothing to compare
      -      if ($.trim(params.term) === '') {
      -        return data;
      -      }
      -
      -      // Do a recursive check for options with children
      -      if (data.children && data.children.length > 0) {
      -        // Clone the data object if there are children
      -        // This is required as we modify the object to remove any non-matches
      -        var match = $.extend(true, {}, data);
      -
      -        // Check each child of the option
      -        for (var c = data.children.length - 1; c >= 0; c--) {
      -          var child = data.children[c];
      -
      -          var matches = matcher(params, child);
      -
      -          // If there wasn't a match, remove the object in the array
      -          if (matches == null) {
      -            match.children.splice(c, 1);
      -          }
      -        }
      -
      -        // If any children matched, return the new object
      -        if (match.children.length > 0) {
      -          return match;
      -        }
      -
      -        // If there were no matching children, check just the plain object
      -        return matcher(params, match);
      -      }
      -
      -      var original = stripDiacritics(data.text).toUpperCase();
      -      var term = stripDiacritics(params.term).toUpperCase();
      -
      -      // Check if the text contains the term
      -      if (original.indexOf(term) > -1) {
      -        return data;
      -      }
      -
      -      // If it doesn't contain the term, don't return anything
      -      return null;
      -    }
      -
      -    this.defaults = {
      -      amdBase: './',
      -      amdLanguageBase: './i18n/',
      -      closeOnSelect: true,
      -      debug: false,
      -      dropdownAutoWidth: false,
      -      escapeMarkup: Utils.escapeMarkup,
      -      language: EnglishTranslation,
      -      matcher: matcher,
      -      minimumInputLength: 0,
      -      maximumInputLength: 0,
      -      maximumSelectionLength: 0,
      -      minimumResultsForSearch: 0,
      -      selectOnClose: false,
      -      sorter: function (data) {
      -        return data;
      -      },
      -      templateResult: function (result) {
      -        return result.text;
      -      },
      -      templateSelection: function (selection) {
      -        return selection.text;
      -      },
      -      theme: 'default',
      -      width: 'resolve'
      -    };
      -  };
      -
      -  Defaults.prototype.set = function (key, value) {
      -    var camelKey = $.camelCase(key);
      -
      -    var data = {};
      -    data[camelKey] = value;
      -
      -    var convertedData = Utils._convertData(data);
      -
      -    $.extend(this.defaults, convertedData);
      -  };
      -
      -  var defaults = new Defaults();
      -
      -  return defaults;
      -});
      -
      -S2.define('select2/options',[
      -  'require',
      -  'jquery',
      -  './defaults',
      -  './utils'
      -], function (require, $, Defaults, Utils) {
      -  function Options (options, $element) {
      -    this.options = options;
      -
      -    if ($element != null) {
      -      this.fromElement($element);
      -    }
      -
      -    this.options = Defaults.apply(this.options);
      -
      -    if ($element && $element.is('input')) {
      -      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
      -
      -      this.options.dataAdapter = Utils.Decorate(
      -        this.options.dataAdapter,
      -        InputCompat
      -      );
      -    }
      -  }
      -
      -  Options.prototype.fromElement = function ($e) {
      -    var excludedData = ['select2'];
      -
      -    if (this.options.multiple == null) {
      -      this.options.multiple = $e.prop('multiple');
      -    }
      -
      -    if (this.options.disabled == null) {
      -      this.options.disabled = $e.prop('disabled');
      -    }
      -
      -    if (this.options.language == null) {
      -      if ($e.prop('lang')) {
      -        this.options.language = $e.prop('lang').toLowerCase();
      -      } else if ($e.closest('[lang]').prop('lang')) {
      -        this.options.language = $e.closest('[lang]').prop('lang');
      -      }
      -    }
      -
      -    if (this.options.dir == null) {
      -      if ($e.prop('dir')) {
      -        this.options.dir = $e.prop('dir');
      -      } else if ($e.closest('[dir]').prop('dir')) {
      -        this.options.dir = $e.closest('[dir]').prop('dir');
      -      } else {
      -        this.options.dir = 'ltr';
      -      }
      -    }
      -
      -    $e.prop('disabled', this.options.disabled);
      -    $e.prop('multiple', this.options.multiple);
      -
      -    if ($e.data('select2Tags')) {
      -      if (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.'
      -        );
      -      }
      -
      -      $e.data('data', $e.data('select2Tags'));
      -      $e.data('tags', true);
      -    }
      -
      -    if ($e.data('ajaxUrl')) {
      -      if (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.'
      -        );
      -      }
      -
      -      $e.attr('ajax--url', $e.data('ajaxUrl'));
      -      $e.data('ajax--url', $e.data('ajaxUrl'));
      -    }
      -
      -    var dataset = {};
      -
      -    // Prefer the element's `dataset` attribute if it exists
      -    // jQuery 1.x does not correctly handle data attributes with multiple dashes
      -    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
      -      dataset = $.extend(true, {}, $e[0].dataset, $e.data());
      -    } else {
      -      dataset = $e.data();
      -    }
      -
      -    var data = $.extend(true, {}, dataset);
      -
      -    data = Utils._convertData(data);
      -
      -    for (var key in data) {
      -      if ($.inArray(key, excludedData) > -1) {
      -        continue;
      -      }
      -
      -      if ($.isPlainObject(this.options[key])) {
      -        $.extend(this.options[key], data[key]);
      -      } else {
      -        this.options[key] = data[key];
      -      }
      -    }
      -
      -    return this;
      -  };
      -
      -  Options.prototype.get = function (key) {
      -    return this.options[key];
      -  };
      -
      -  Options.prototype.set = function (key, val) {
      -    this.options[key] = val;
      -  };
      -
      -  return Options;
      -});
      -
      -S2.define('select2/core',[
      -  'jquery',
      -  './options',
      -  './utils',
      -  './keys'
      -], function ($, Options, Utils, KEYS) {
      -  var Select2 = function ($element, options) {
      -    if ($element.data('select2') != null) {
      -      $element.data('select2').destroy();
      -    }
      -
      -    this.$element = $element;
      -
      -    this.id = this._generateId($element);
      -
      -    options = options || {};
      -
      -    this.options = new Options(options, $element);
      -
      -    Select2.__super__.constructor.call(this);
      -
      -    // Set up the tabindex
      -
      -    var tabindex = $element.attr('tabindex') || 0;
      -    $element.data('old-tabindex', tabindex);
      -    $element.attr('tabindex', '-1');
      -
      -    // Set up containers and adapters
      -
      -    var DataAdapter = this.options.get('dataAdapter');
      -    this.dataAdapter = new DataAdapter($element, this.options);
      -
      -    var $container = this.render();
      -
      -    this._placeContainer($container);
      -
      -    var SelectionAdapter = this.options.get('selectionAdapter');
      -    this.selection = new SelectionAdapter($element, this.options);
      -    this.$selection = this.selection.render();
      -
      -    this.selection.position(this.$selection, $container);
      -
      -    var DropdownAdapter = this.options.get('dropdownAdapter');
      -    this.dropdown = new DropdownAdapter($element, this.options);
      -    this.$dropdown = this.dropdown.render();
      -
      -    this.dropdown.position(this.$dropdown, $container);
      -
      -    var ResultsAdapter = this.options.get('resultsAdapter');
      -    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
      -    this.$results = this.results.render();
      -
      -    this.results.position(this.$results, this.$dropdown);
      -
      -    // Bind events
      -
      -    var self = this;
      -
      -    // Bind the container to all of the adapters
      -    this._bindAdapters();
      -
      -    // Register any DOM event handlers
      -    this._registerDomEvents();
      -
      -    // Register any internal event handlers
      -    this._registerDataEvents();
      -    this._registerSelectionEvents();
      -    this._registerDropdownEvents();
      -    this._registerResultsEvents();
      -    this._registerEvents();
      -
      -    // Set the initial state
      -    this.dataAdapter.current(function (initialData) {
      -      self.trigger('selection:update', {
      -        data: initialData
      -      });
      -    });
      -
      -    // Hide the original select
      -    $element.addClass('select2-hidden-accessible');
      -    $element.attr('aria-hidden', 'true');
      -
      -    // Synchronize any monitored attributes
      -    this._syncAttributes();
      -
      -    $element.data('select2', this);
      -  };
      -
      -  Utils.Extend(Select2, Utils.Observable);
      -
      -  Select2.prototype._generateId = function ($element) {
      -    var id = '';
      -
      -    if ($element.attr('id') != null) {
      -      id = $element.attr('id');
      -    } else if ($element.attr('name') != null) {
      -      id = $element.attr('name') + '-' + Utils.generateChars(2);
      -    } else {
      -      id = Utils.generateChars(4);
      -    }
      -
      -    id = id.replace(/(:|\.|\[|\]|,)/g, '');
      -    id = 'select2-' + id;
      -
      -    return id;
      -  };
      -
      -  Select2.prototype._placeContainer = function ($container) {
      -    $container.insertAfter(this.$element);
      -
      -    var width = this._resolveWidth(this.$element, this.options.get('width'));
      -
      -    if (width != null) {
      -      $container.css('width', width);
      -    }
      -  };
      -
      -  Select2.prototype._resolveWidth = function ($element, method) {
      -    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
      -
      -    if (method == 'resolve') {
      -      var styleWidth = this._resolveWidth($element, 'style');
      -
      -      if (styleWidth != null) {
      -        return styleWidth;
      -      }
      -
      -      return this._resolveWidth($element, 'element');
      -    }
      -
      -    if (method == 'element') {
      -      var elementWidth = $element.outerWidth(false);
      -
      -      if (elementWidth <= 0) {
      -        return 'auto';
      -      }
      -
      -      return elementWidth + 'px';
      -    }
      -
      -    if (method == 'style') {
      -      var style = $element.attr('style');
      -
      -      if (typeof(style) !== 'string') {
      -        return null;
      -      }
      -
      -      var attrs = style.split(';');
      -
      -      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
      -        var attr = attrs[i].replace(/\s/g, '');
      -        var matches = attr.match(WIDTH);
      -
      -        if (matches !== null && matches.length >= 1) {
      -          return matches[1];
      -        }
      -      }
      -
      -      return null;
      -    }
      -
      -    return method;
      -  };
      -
      -  Select2.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);
      -  };
      -
      -  Select2.prototype._registerDomEvents = function () {
      -    var self = this;
      -
      -    this.$element.on('change.select2', function () {
      -      self.dataAdapter.current(function (data) {
      -        self.trigger('selection:update', {
      -          data: data
      -        });
      -      });
      -    });
      -
      -    this.$element.on('focus.select2', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this._syncA = Utils.bind(this._syncAttributes, this);
      -    this._syncS = Utils.bind(this._syncSubtree, this);
      -
      -    if (this.$element[0].attachEvent) {
      -      this.$element[0].attachEvent('onpropertychange', this._syncA);
      -    }
      -
      -    var observer = window.MutationObserver ||
      -      window.WebKitMutationObserver ||
      -      window.MozMutationObserver
      -    ;
      -
      -    if (observer != null) {
      -      this._observer = new observer(function (mutations) {
      -        $.each(mutations, self._syncA);
      -        $.each(mutations, self._syncS);
      -      });
      -      this._observer.observe(this.$element[0], {
      -        attributes: true,
      -        childList: true,
      -        subtree: false
      -      });
      -    } else if (this.$element[0].addEventListener) {
      -      this.$element[0].addEventListener(
      -        'DOMAttrModified',
      -        self._syncA,
      -        false
      -      );
      -      this.$element[0].addEventListener(
      -        'DOMNodeInserted',
      -        self._syncS,
      -        false
      -      );
      -      this.$element[0].addEventListener(
      -        'DOMNodeRemoved',
      -        self._syncS,
      -        false
      -      );
      -    }
      -  };
      -
      -  Select2.prototype._registerDataEvents = function () {
      -    var self = this;
      -
      -    this.dataAdapter.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerSelectionEvents = function () {
      -    var self = this;
      -    var nonRelayEvents = ['toggle', 'focus'];
      -
      -    this.selection.on('toggle', function () {
      -      self.toggleDropdown();
      -    });
      -
      -    this.selection.on('focus', function (params) {
      -      self.focus(params);
      -    });
      -
      -    this.selection.on('*', function (name, params) {
      -      if ($.inArray(name, nonRelayEvents) !== -1) {
      -        return;
      -      }
      -
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerDropdownEvents = function () {
      -    var self = this;
      -
      -    this.dropdown.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerResultsEvents = function () {
      -    var self = this;
      -
      -    this.results.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerEvents = function () {
      -    var self = this;
      -
      -    this.on('open', function () {
      -      self.$container.addClass('select2-container--open');
      -    });
      -
      -    this.on('close', function () {
      -      self.$container.removeClass('select2-container--open');
      -    });
      -
      -    this.on('enable', function () {
      -      self.$container.removeClass('select2-container--disabled');
      -    });
      -
      -    this.on('disable', function () {
      -      self.$container.addClass('select2-container--disabled');
      -    });
      -
      -    this.on('blur', function () {
      -      self.$container.removeClass('select2-container--focus');
      -    });
      -
      -    this.on('query', function (params) {
      -      if (!self.isOpen()) {
      -        self.trigger('open', {});
      -      }
      -
      -      this.dataAdapter.query(params, function (data) {
      -        self.trigger('results:all', {
      -          data: data,
      -          query: params
      -        });
      -      });
      -    });
      -
      -    this.on('query:append', function (params) {
      -      this.dataAdapter.query(params, function (data) {
      -        self.trigger('results:append', {
      -          data: data,
      -          query: params
      -        });
      -      });
      -    });
      -
      -    this.on('keypress', function (evt) {
      -      var key = evt.which;
      -
      -      if (self.isOpen()) {
      -        if (key === KEYS.ESC || key === KEYS.TAB ||
      -            (key === KEYS.UP && evt.altKey)) {
      -          self.close();
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.ENTER) {
      -          self.trigger('results:select', {});
      -
      -          evt.preventDefault();
      -        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
      -          self.trigger('results:toggle', {});
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.UP) {
      -          self.trigger('results:previous', {});
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.DOWN) {
      -          self.trigger('results:next', {});
      -
      -          evt.preventDefault();
      -        }
      -      } else {
      -        if (key === KEYS.ENTER || key === KEYS.SPACE ||
      -            (key === KEYS.DOWN && evt.altKey)) {
      -          self.open();
      -
      -          evt.preventDefault();
      -        }
      -      }
      -    });
      -  };
      -
      -  Select2.prototype._syncAttributes = function () {
      -    this.options.set('disabled', this.$element.prop('disabled'));
      -
      -    if (this.options.get('disabled')) {
      -      if (this.isOpen()) {
      -        this.close();
      -      }
      -
      -      this.trigger('disable', {});
      -    } else {
      -      this.trigger('enable', {});
      -    }
      -  };
      -
      -  Select2.prototype._syncSubtree = function (evt, mutations) {
      -    var changed = false;
      -    var self = this;
      -
      -    // Ignore any mutation events raised for elements that aren't options or
      -    // optgroups. This handles the case when the select element is destroyed
      -    if (
      -      evt && evt.target && (
      -        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
      -      )
      -    ) {
      -      return;
      -    }
      -
      -    if (!mutations) {
      -      // If mutation events aren't supported, then we can only assume that the
      -      // change affected the selections
      -      changed = true;
      -    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
      -      for (var n = 0; n < mutations.addedNodes.length; n++) {
      -        var node = mutations.addedNodes[n];
      -
      -        if (node.selected) {
      -          changed = true;
      -        }
      -      }
      -    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
      -      changed = true;
      -    }
      -
      -    // Only re-pull the data if we think there is a change
      -    if (changed) {
      -      this.dataAdapter.current(function (currentData) {
      -        self.trigger('selection:update', {
      -          data: currentData
      -        });
      -      });
      -    }
      -  };
      -
      -  /**
      -   * Override the trigger method to automatically trigger pre-events when
      -   * there are events that can be prevented.
      -   */
      -  Select2.prototype.trigger = function (name, args) {
      -    var actualTrigger = Select2.__super__.trigger;
      -    var preTriggerMap = {
      -      'open': 'opening',
      -      'close': 'closing',
      -      'select': 'selecting',
      -      'unselect': 'unselecting'
      -    };
      -
      -    if (args === undefined) {
      -      args = {};
      -    }
      -
      -    if (name in preTriggerMap) {
      -      var preTriggerName = preTriggerMap[name];
      -      var preTriggerArgs = {
      -        prevented: false,
      -        name: name,
      -        args: args
      -      };
      -
      -      actualTrigger.call(this, preTriggerName, preTriggerArgs);
      -
      -      if (preTriggerArgs.prevented) {
      -        args.prevented = true;
      -
      -        return;
      -      }
      -    }
      -
      -    actualTrigger.call(this, name, args);
      -  };
      -
      -  Select2.prototype.toggleDropdown = function () {
      -    if (this.options.get('disabled')) {
      -      return;
      -    }
      -
      -    if (this.isOpen()) {
      -      this.close();
      -    } else {
      -      this.open();
      -    }
      -  };
      -
      -  Select2.prototype.open = function () {
      -    if (this.isOpen()) {
      -      return;
      -    }
      -
      -    this.trigger('query', {});
      -  };
      -
      -  Select2.prototype.close = function () {
      -    if (!this.isOpen()) {
      -      return;
      -    }
      -
      -    this.trigger('close', {});
      -  };
      -
      -  Select2.prototype.isOpen = function () {
      -    return this.$container.hasClass('select2-container--open');
      -  };
      -
      -  Select2.prototype.hasFocus = function () {
      -    return this.$container.hasClass('select2-container--focus');
      -  };
      -
      -  Select2.prototype.focus = function (data) {
      -    // No need to re-trigger focus events if we are already focused
      -    if (this.hasFocus()) {
      -      return;
      -    }
      -
      -    this.$container.addClass('select2-container--focus');
      -    this.trigger('focus', {});
      -  };
      -
      -  Select2.prototype.enable = function (args) {
      -    if (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.'
      -      );
      -    }
      -
      -    if (args == null || args.length === 0) {
      -      args = [true];
      -    }
      -
      -    var disabled = !args[0];
      -
      -    this.$element.prop('disabled', disabled);
      -  };
      -
      -  Select2.prototype.data = function () {
      -    if (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 data = [];
      -
      -    this.dataAdapter.current(function (currentData) {
      -      data = currentData;
      -    });
      -
      -    return data;
      -  };
      -
      -  Select2.prototype.val = function (args) {
      -    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.'
      -      );
      -    }
      -
      -    if (args == null || args.length === 0) {
      -      return this.$element.val();
      -    }
      -
      -    var newVal = args[0];
      -
      -    if ($.isArray(newVal)) {
      -      newVal = $.map(newVal, function (obj) {
      -        return obj.toString();
      -      });
      -    }
      -
      -    this.$element.val(newVal).trigger('change');
      -  };
      -
      -  Select2.prototype.destroy = function () {
      -    this.$container.remove();
      -
      -    if (this.$element[0].detachEvent) {
      -      this.$element[0].detachEvent('onpropertychange', this._syncA);
      -    }
      -
      -    if (this._observer != null) {
      -      this._observer.disconnect();
      -      this._observer = null;
      -    } else if (this.$element[0].removeEventListener) {
      -      this.$element[0]
      -        .removeEventListener('DOMAttrModified', this._syncA, false);
      -      this.$element[0]
      -        .removeEventListener('DOMNodeInserted', this._syncS, false);
      -      this.$element[0]
      -        .removeEventListener('DOMNodeRemoved', this._syncS, false);
      -    }
      -
      -    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;
      -  };
      -
      -  Select2.prototype.render = function () {
      -    var $container = $(
      -      '<span class="select2 select2-container">' +
      -        '<span class="selection"></span>' +
      -        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
      -      '</span>'
      -    );
      -
      -    $container.attr('dir', this.options.get('dir'));
      -
      -    this.$container = $container;
      -
      -    this.$container.addClass('select2-container--' + this.options.get('theme'));
      -
      -    $container.data('element', this.$element);
      -
      -    return $container;
      -  };
      -
      -  return Select2;
      -});
      -
      -S2.define('select2/compat/utils',[
      -  'jquery'
      -], function ($) {
      -  function syncCssClasses ($dest, $src, adapter) {
      -    var classes, replacements = [], adapted;
      -
      -    classes = $.trim($dest.attr('class'));
      -
      -    if (classes) {
      -      classes = '' + classes; // for IE which returns object
      -
      -      $(classes.split(/\s+/)).each(function () {
      -        // Save all Select2 classes
      -        if (this.indexOf('select2-') === 0) {
      -          replacements.push(this);
      -        }
      -      });
      -    }
      -
      -    classes = $.trim($src.attr('class'));
      -
      -    if (classes) {
      -      classes = '' + classes; // for IE which returns object
      -
      -      $(classes.split(/\s+/)).each(function () {
      -        // Only adapt non-Select2 classes
      -        if (this.indexOf('select2-') !== 0) {
      -          adapted = adapter(this);
      -
      -          if (adapted != null) {
      -            replacements.push(adapted);
      -          }
      -        }
      -      });
      -    }
      -
      -    $dest.attr('class', replacements.join(' '));
      -  }
      -
      -  return {
      -    syncCssClasses: syncCssClasses
      -  };
      -});
      -
      -S2.define('select2/compat/containerCss',[
      -  'jquery',
      -  './utils'
      -], function ($, CompatUtils) {
      -  // No-op CSS adapter that discards all classes by default
      -  function _containerAdapter (clazz) {
      -    return null;
      -  }
      -
      -  function ContainerCSS () { }
      -
      -  ContainerCSS.prototype.render = function (decorated) {
      -    var $container = decorated.call(this);
      -
      -    var containerCssClass = this.options.get('containerCssClass') || '';
      -
      -    if ($.isFunction(containerCssClass)) {
      -      containerCssClass = containerCssClass(this.$element);
      -    }
      -
      -    var containerCssAdapter = this.options.get('adaptContainerCssClass');
      -    containerCssAdapter = containerCssAdapter || _containerAdapter;
      -
      -    if (containerCssClass.indexOf(':all:') !== -1) {
      -      containerCssClass = containerCssClass.replace(':all:', '');
      -
      -      var _cssAdapter = containerCssAdapter;
      -
      -      containerCssAdapter = function (clazz) {
      -        var adapted = _cssAdapter(clazz);
      -
      -        if (adapted != null) {
      -          // Append the old one along with the adapted one
      -          return adapted + ' ' + clazz;
      -        }
      -
      -        return clazz;
      -      };
      -    }
      -
      -    var containerCss = this.options.get('containerCss') || {};
      -
      -    if ($.isFunction(containerCss)) {
      -      containerCss = containerCss(this.$element);
      -    }
      -
      -    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
      -
      -    $container.css(containerCss);
      -    $container.addClass(containerCssClass);
      -
      -    return $container;
      -  };
      -
      -  return ContainerCSS;
      -});
      -
      -S2.define('select2/compat/dropdownCss',[
      -  'jquery',
      -  './utils'
      -], function ($, CompatUtils) {
      -  // No-op CSS adapter that discards all classes by default
      -  function _dropdownAdapter (clazz) {
      -    return null;
      -  }
      -
      -  function DropdownCSS () { }
      -
      -  DropdownCSS.prototype.render = function (decorated) {
      -    var $dropdown = decorated.call(this);
      -
      -    var dropdownCssClass = this.options.get('dropdownCssClass') || '';
      -
      -    if ($.isFunction(dropdownCssClass)) {
      -      dropdownCssClass = dropdownCssClass(this.$element);
      -    }
      -
      -    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
      -    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
      -
      -    if (dropdownCssClass.indexOf(':all:') !== -1) {
      -      dropdownCssClass = dropdownCssClass.replace(':all:', '');
      -
      -      var _cssAdapter = dropdownCssAdapter;
      -
      -      dropdownCssAdapter = function (clazz) {
      -        var adapted = _cssAdapter(clazz);
      -
      -        if (adapted != null) {
      -          // Append the old one along with the adapted one
      -          return adapted + ' ' + clazz;
      -        }
      -
      -        return clazz;
      -      };
      -    }
      -
      -    var dropdownCss = this.options.get('dropdownCss') || {};
      -
      -    if ($.isFunction(dropdownCss)) {
      -      dropdownCss = dropdownCss(this.$element);
      -    }
      -
      -    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
      -
      -    $dropdown.css(dropdownCss);
      -    $dropdown.addClass(dropdownCssClass);
      -
      -    return $dropdown;
      -  };
      -
      -  return DropdownCSS;
      -});
      -
      -S2.define('select2/compat/initSelection',[
      -  'jquery'
      -], function ($) {
      -  function InitSelection (decorated, $element, options) {
      -    if (options.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 = options.get('initSelection');
      -    this._isInitialized = false;
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  InitSelection.prototype.current = function (decorated, callback) {
      -    var self = this;
      -
      -    if (this._isInitialized) {
      -      decorated.call(this, callback);
      -
      -      return;
      -    }
      -
      -    this.initSelection.call(null, this.$element, function (data) {
      -      self._isInitialized = true;
      -
      -      if (!$.isArray(data)) {
      -        data = [data];
      -      }
      -
      -      callback(data);
      -    });
      -  };
      -
      -  return InitSelection;
      -});
      -
      -S2.define('select2/compat/inputData',[
      -  'jquery'
      -], function ($) {
      -  function InputData (decorated, $element, options) {
      -    this._currentData = [];
      -    this._valueSeparator = options.get('valueSeparator') || ',';
      -
      -    if ($element.prop('type') === 'hidden') {
      -      if (options.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 `<select>` element instead.'
      -        );
      -      }
      -    }
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  InputData.prototype.current = function (_, callback) {
      -    function getSelected (data, selectedIds) {
      -      var selected = [];
      -
      -      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
      -        data.selected = true;
      -        selected.push(data);
      -      } else {
      -        data.selected = false;
      -      }
      -
      -      if (data.children) {
      -        selected.push.apply(selected, getSelected(data.children, selectedIds));
      -      }
      -
      -      return selected;
      -    }
      -
      -    var selected = [];
      -
      -    for (var d = 0; d < this._currentData.length; d++) {
      -      var data = this._currentData[d];
      -
      -      selected.push.apply(
      -        selected,
      -        getSelected(
      -          data,
      -          this.$element.val().split(
      -            this._valueSeparator
      -          )
      -        )
      -      );
      -    }
      -
      -    callback(selected);
      -  };
      -
      -  InputData.prototype.select = function (_, data) {
      -    if (!this.options.get('multiple')) {
      -      this.current(function (allData) {
      -        $.map(allData, function (data) {
      -          data.selected = false;
      -        });
      -      });
      -
      -      this.$element.val(data.id);
      -      this.$element.trigger('change');
      -    } else {
      -      var value = this.$element.val();
      -      value += this._valueSeparator + data.id;
      -
      -      this.$element.val(value);
      -      this.$element.trigger('change');
      -    }
      -  };
      -
      -  InputData.prototype.unselect = function (_, data) {
      -    var self = this;
      -
      -    data.selected = false;
      -
      -    this.current(function (allData) {
      -      var values = [];
      -
      -      for (var d = 0; d < allData.length; d++) {
      -        var item = allData[d];
      -
      -        if (data.id == item.id) {
      -          continue;
      -        }
      -
      -        values.push(item.id);
      -      }
      -
      -      self.$element.val(values.join(self._valueSeparator));
      -      self.$element.trigger('change');
      -    });
      -  };
      -
      -  InputData.prototype.query = function (_, params, callback) {
      -    var results = [];
      -
      -    for (var d = 0; d < this._currentData.length; d++) {
      -      var data = this._currentData[d];
      -
      -      var matches = this.matches(params, data);
      -
      -      if (matches !== null) {
      -        results.push(matches);
      -      }
      -    }
      -
      -    callback({
      -      results: results
      -    });
      -  };
      -
      -  InputData.prototype.addOptions = function (_, $options) {
      -    var options = $.map($options, function ($option) {
      -      return $.data($option[0], 'data');
      -    });
      -
      -    this._currentData.push.apply(this._currentData, options);
      -  };
      -
      -  return InputData;
      -});
      -
      -S2.define('select2/compat/matcher',[
      -  'jquery'
      -], function ($) {
      -  function oldMatcher (matcher) {
      -    function wrappedMatcher (params, data) {
      -      var match = $.extend(true, {}, data);
      -
      -      if (params.term == null || $.trim(params.term) === '') {
      -        return match;
      -      }
      -
      -      if (data.children) {
      -        for (var c = data.children.length - 1; c >= 0; c--) {
      -          var child = data.children[c];
      -
      -          // Check if the child object matches
      -          // The old matcher returned a boolean true or false
      -          var doesMatch = matcher(params.term, child.text, child);
      -
      -          // If the child didn't match, pop it off
      -          if (!doesMatch) {
      -            match.children.splice(c, 1);
      -          }
      -        }
      -
      -        if (match.children.length > 0) {
      -          return match;
      -        }
      -      }
      -
      -      if (matcher(params.term, data.text, data)) {
      -        return match;
      -      }
      -
      -      return null;
      -    }
      -
      -    return wrappedMatcher;
      -  }
      -
      -  return oldMatcher;
      -});
      -
      -S2.define('select2/compat/query',[
      -
      -], function () {
      -  function Query (decorated, $element, options) {
      -    if (options.get('debug') && window.console && console.warn) {
      -      console.warn(
      -        'Select2: The `query` option has been deprecated in favor of a ' +
      -        'custom data adapter that overrides the `query` method. Support ' +
      -        'will be removed for the `query` option in future versions of ' +
      -        'Select2.'
      -      );
      -    }
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Query.prototype.query = function (_, params, callback) {
      -    params.callback = callback;
      -
      -    var query = this.options.get('query');
      -
      -    query.call(null, params);
      -  };
      -
      -  return Query;
      -});
      -
      -S2.define('select2/dropdown/attachContainer',[
      -
      -], function () {
      -  function AttachContainer (decorated, $element, options) {
      -    decorated.call(this, $element, options);
      -  }
      -
      -  AttachContainer.prototype.position =
      -    function (decorated, $dropdown, $container) {
      -    var $dropdownContainer = $container.find('.dropdown-wrapper');
      -    $dropdownContainer.append($dropdown);
      -
      -    $dropdown.addClass('select2-dropdown--below');
      -    $container.addClass('select2-container--below');
      -  };
      -
      -  return AttachContainer;
      -});
      -
      -S2.define('select2/dropdown/stopPropagation',[
      -
      -], function () {
      -  function StopPropagation () { }
      -
      -  StopPropagation.prototype.bind = function (decorated, container, $container) {
      -    decorated.call(this, container, $container);
      -
      -    var stoppedEvents = [
      -    'blur',
      -    'change',
      -    'click',
      -    'dblclick',
      -    'focus',
      -    'focusin',
      -    'focusout',
      -    'input',
      -    'keydown',
      -    'keyup',
      -    'keypress',
      -    'mousedown',
      -    'mouseenter',
      -    'mouseleave',
      -    'mousemove',
      -    'mouseover',
      -    'mouseup',
      -    'search',
      -    'touchend',
      -    'touchstart'
      -    ];
      -
      -    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {
      -      evt.stopPropagation();
      -    });
      -  };
      -
      -  return StopPropagation;
      -});
      -
      -S2.define('select2/selection/stopPropagation',[
      -
      -], function () {
      -  function StopPropagation () { }
      -
      -  StopPropagation.prototype.bind = function (decorated, container, $container) {
      -    decorated.call(this, container, $container);
      -
      -    var stoppedEvents = [
      -      'blur',
      -      'change',
      -      'click',
      -      'dblclick',
      -      'focus',
      -      'focusin',
      -      'focusout',
      -      'input',
      -      'keydown',
      -      'keyup',
      -      'keypress',
      -      'mousedown',
      -      'mouseenter',
      -      'mouseleave',
      -      'mousemove',
      -      'mouseover',
      -      'mouseup',
      -      'search',
      -      'touchend',
      -      'touchstart'
      -    ];
      -
      -    this.$selection.on(stoppedEvents.join(' '), function (evt) {
      -      evt.stopPropagation();
      -    });
      -  };
      -
      -  return StopPropagation;
      -});
      -
      -/*!
      - * jQuery Mousewheel 3.1.13
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * http://jquery.org/license
      - */
      -
      -(function (factory) {
      -    if ( typeof S2.define === 'function' && S2.define.amd ) {
      -        // AMD. Register as an anonymous module.
      -        S2.define('jquery-mousewheel',['jquery'], factory);
      -    } else if (typeof exports === 'object') {
      -        // Node/CommonJS style for Browserify
      -        module.exports = factory;
      -    } else {
      -        // Browser globals
      -        factory(jQuery);
      -    }
      -}(function ($) {
      -
      -    var toFix  = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'],
      -        toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ?
      -                    ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'],
      -        slice  = Array.prototype.slice,
      -        nullLowestDeltaTimeout, lowestDelta;
      -
      -    if ( $.event.fixHooks ) {
      -        for ( var i = toFix.length; i; ) {
      -            $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks;
      -        }
      -    }
      -
      -    var special = $.event.special.mousewheel = {
      -        version: '3.1.12',
      -
      -        setup: function() {
      -            if ( this.addEventListener ) {
      -                for ( var i = toBind.length; i; ) {
      -                    this.addEventListener( toBind[--i], handler, false );
      -                }
      -            } else {
      -                this.onmousewheel = handler;
      -            }
      -            // Store the line height and page height for this particular element
      -            $.data(this, 'mousewheel-line-height', special.getLineHeight(this));
      -            $.data(this, 'mousewheel-page-height', special.getPageHeight(this));
      -        },
      -
      -        teardown: function() {
      -            if ( this.removeEventListener ) {
      -                for ( var i = toBind.length; i; ) {
      -                    this.removeEventListener( toBind[--i], handler, false );
      -                }
      -            } else {
      -                this.onmousewheel = null;
      -            }
      -            // Clean up the data we added to the element
      -            $.removeData(this, 'mousewheel-line-height');
      -            $.removeData(this, 'mousewheel-page-height');
      -        },
      -
      -        getLineHeight: function(elem) {
      -            var $elem = $(elem),
      -                $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent']();
      -            if (!$parent.length) {
      -                $parent = $('body');
      -            }
      -            return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16;
      -        },
      -
      -        getPageHeight: function(elem) {
      -            return $(elem).height();
      -        },
      -
      -        settings: {
      -            adjustOldDeltas: true, // see shouldAdjustOldDeltas() below
      -            normalizeOffset: true  // calls getBoundingClientRect for each event
      -        }
      -    };
      -
      -    $.fn.extend({
      -        mousewheel: function(fn) {
      -            return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel');
      -        },
      -
      -        unmousewheel: function(fn) {
      -            return this.unbind('mousewheel', fn);
      -        }
      -    });
      -
      -
      -    function handler(event) {
      -        var orgEvent   = event || window.event,
      -            args       = slice.call(arguments, 1),
      -            delta      = 0,
      -            deltaX     = 0,
      -            deltaY     = 0,
      -            absDelta   = 0,
      -            offsetX    = 0,
      -            offsetY    = 0;
      -        event = $.event.fix(orgEvent);
      -        event.type = 'mousewheel';
      -
      -        // Old school scrollwheel delta
      -        if ( 'detail'      in orgEvent ) { deltaY = orgEvent.detail * -1;      }
      -        if ( 'wheelDelta'  in orgEvent ) { deltaY = orgEvent.wheelDelta;       }
      -        if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY;      }
      -        if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; }
      -
      -        // Firefox < 17 horizontal scrolling related to DOMMouseScroll event
      -        if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
      -            deltaX = deltaY * -1;
      -            deltaY = 0;
      -        }
      -
      -        // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy
      -        delta = deltaY === 0 ? deltaX : deltaY;
      -
      -        // New school wheel delta (wheel event)
      -        if ( 'deltaY' in orgEvent ) {
      -            deltaY = orgEvent.deltaY * -1;
      -            delta  = deltaY;
      -        }
      -        if ( 'deltaX' in orgEvent ) {
      -            deltaX = orgEvent.deltaX;
      -            if ( deltaY === 0 ) { delta  = deltaX * -1; }
      -        }
      -
      -        // No change actually happened, no reason to go any further
      -        if ( deltaY === 0 && deltaX === 0 ) { return; }
      -
      -        // Need to convert lines and pages to pixels if we aren't already in pixels
      -        // There are three delta modes:
      -        //   * deltaMode 0 is by pixels, nothing to do
      -        //   * deltaMode 1 is by lines
      -        //   * deltaMode 2 is by pages
      -        if ( orgEvent.deltaMode === 1 ) {
      -            var lineHeight = $.data(this, 'mousewheel-line-height');
      -            delta  *= lineHeight;
      -            deltaY *= lineHeight;
      -            deltaX *= lineHeight;
      -        } else if ( orgEvent.deltaMode === 2 ) {
      -            var pageHeight = $.data(this, 'mousewheel-page-height');
      -            delta  *= pageHeight;
      -            deltaY *= pageHeight;
      -            deltaX *= pageHeight;
      -        }
      -
      -        // Store lowest absolute delta to normalize the delta values
      -        absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) );
      -
      -        if ( !lowestDelta || absDelta < lowestDelta ) {
      -            lowestDelta = absDelta;
      -
      -            // Adjust older deltas if necessary
      -            if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
      -                lowestDelta /= 40;
      -            }
      -        }
      -
      -        // Adjust older deltas if necessary
      -        if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) {
      -            // Divide all the things by 40!
      -            delta  /= 40;
      -            deltaX /= 40;
      -            deltaY /= 40;
      -        }
      -
      -        // Get a whole, normalized value for the deltas
      -        delta  = Math[ delta  >= 1 ? 'floor' : 'ceil' ](delta  / lowestDelta);
      -        deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta);
      -        deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta);
      -
      -        // Normalise offsetX and offsetY properties
      -        if ( special.settings.normalizeOffset && this.getBoundingClientRect ) {
      -            var boundingRect = this.getBoundingClientRect();
      -            offsetX = event.clientX - boundingRect.left;
      -            offsetY = event.clientY - boundingRect.top;
      -        }
      -
      -        // Add information to the event object
      -        event.deltaX = deltaX;
      -        event.deltaY = deltaY;
      -        event.deltaFactor = lowestDelta;
      -        event.offsetX = offsetX;
      -        event.offsetY = offsetY;
      -        // Go ahead and set deltaMode to 0 since we converted to pixels
      -        // Although this is a little odd since we overwrite the deltaX/Y
      -        // properties with normalized deltas.
      -        event.deltaMode = 0;
      -
      -        // Add event and delta to the front of the arguments
      -        args.unshift(event, delta, deltaX, deltaY);
      -
      -        // Clearout lowestDelta after sometime to better
      -        // handle multiple device types that give different
      -        // a different lowestDelta
      -        // Ex: trackpad = 3 and mouse wheel = 120
      -        if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); }
      -        nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200);
      -
      -        return ($.event.dispatch || $.event.handle).apply(this, args);
      -    }
      -
      -    function nullLowestDelta() {
      -        lowestDelta = null;
      -    }
      -
      -    function shouldAdjustOldDeltas(orgEvent, absDelta) {
      -        // If this is an older event and the delta is divisable by 120,
      -        // then we are assuming that the browser is treating this as an
      -        // older mouse wheel event and that we should divide the deltas
      -        // by 40 to try and get a more usable deltaFactor.
      -        // Side note, this actually impacts the reported scroll distance
      -        // in older browsers and can cause scrolling to be slower than native.
      -        // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false.
      -        return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0;
      -    }
      -
      -}));
      -
      -S2.define('jquery.select2',[
      -  'jquery',
      -  'jquery-mousewheel',
      -
      -  './select2/core',
      -  './select2/defaults'
      -], function ($, _, Select2, Defaults) {
      -  if ($.fn.select2 == null) {
      -    // All methods that should return the element
      -    var thisMethods = ['open', 'close', 'destroy'];
      -
      -    $.fn.select2 = function (options) {
      -      options = options || {};
      -
      -      if (typeof options === 'object') {
      -        this.each(function () {
      -          var instanceOptions = $.extend(true, {}, options);
      -
      -          var instance = new Select2($(this), instanceOptions);
      -        });
      -
      -        return this;
      -      } else if (typeof options === 'string') {
      -        var ret;
      -        var args = Array.prototype.slice.call(arguments, 1);
      -
      -        this.each(function () {
      -          var instance = $(this).data('select2');
      -
      -          if (instance == null && window.console && console.error) {
      -            console.error(
      -              'The select2(\'' + options + '\') method was called on an ' +
      -              'element that is not using Select2.'
      -            );
      -          }
      -
      -          ret = instance[options].apply(instance, args);
      -        });
      -
      -        // Check if we should be returning `this`
      -        if ($.inArray(options, thisMethods) > -1) {
      -          return this;
      -        }
      -
      -        return ret;
      -      } else {
      -        throw new Error('Invalid arguments for Select2: ' + options);
      -      }
      -    };
      -  }
      -
      -  if ($.fn.select2.defaults == null) {
      -    $.fn.select2.defaults = Defaults;
      -  }
      -
      -  return Select2;
      -});
      -
      -  // Return the AMD loader configuration so it can be used outside of this file
      -  return {
      -    define: S2.define,
      -    require: S2.require
      -  };
      -}());
      -
      -  // Autoload the jQuery bindings
      -  // We know that all of the modules exist above this, so we're safe
      -  var select2 = S2.require('jquery.select2');
      -
      -  // Hold the AMD module references on the jQuery function that was just loaded
      -  // This allows Select2 to use the internal loader outside of this file, such
      -  // as in the language files.
      -  jQuery.fn.select2.amd = S2;
      -
      -  // Return the Select2 instance for anyone who is importing it.
      -  return select2;
      -}));
      diff --git a/bower_components/select2/dist/js/select2.full.min.js b/bower_components/select2/dist/js/select2.full.min.js
      deleted file mode 100644
      index 684edf3238..0000000000
      --- a/bower_components/select2/dist/js/select2.full.min.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! 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;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(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;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(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;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;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<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};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('<ul class="select2-results__options" role="tree"></ul>');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('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),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;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?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<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"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('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');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('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),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("<span></span>")},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('<ul class="select2-selection__rendered"></ul>'),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('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;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;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');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('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');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");
      -if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=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;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&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('<span class="select2-dropdown"><span class="select2-results"></span></span>');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('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');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('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),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("<span></span>"),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.top<f.top-h.height,k=i.bottom>f.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;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(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;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){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;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(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;
      -},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');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 `<select>` element instead."),a.call(this,b,c)}return b.prototype.current=function(b,c){function d(b,c){var e=[];return b.selected||-1!==a.inArray(b.id,c)?(b.selected=!0,e.push(b)):b.selected=!1,b.children&&e.push.apply(e,d(b.children,c)),e}for(var e=[],f=0;f<this._currentData.length;f++){var g=this._currentData[f];e.push.apply(e,d(g,this.$element.val().split(this._valueSeparator)))}c(e)},b.prototype.select=function(b,c){if(this.options.get("multiple")){var d=this.$element.val();d+=this._valueSeparator+c.id,this.$element.val(d),this.$element.trigger("change")}else this.current(function(b){a.map(b,function(a){a.selected=!1})}),this.$element.val(c.id),this.$element.trigger("change")},b.prototype.unselect=function(a,b){var c=this;b.selected=!1,this.current(function(a){for(var d=[],e=0;e<a.length;e++){var f=a[e];b.id!=f.id&&d.push(f.id)}c.$element.val(d.join(c._valueSeparator)),c.$element.trigger("change")})},b.prototype.query=function(a,b,c){for(var d=[],e=0;e<this._currentData.length;e++){var f=this._currentData[e],g=this.matches(b,f);null!==g&&d.push(g)}c({results:d})},b.prototype.addOptions=function(b,c){var d=a.map(c,function(b){return a.data(b[0],"data")});this._currentData.push.apply(this._currentData,d)},b}),b.define("select2/compat/matcher",["jquery"],function(a){function b(b){function c(c,d){var e=a.extend(!0,{},d);if(null==c.term||""===a.trim(c.term))return e;if(d.children){for(var f=d.children.length-1;f>=0;f--){var g=d.children[f],h=b(c.term,g.text,g);h||e.children.splice(f,1)}if(e.children.length>0)return e}return b(c.term,d.text,d)?e:null}return c}return b}),b.define("select2/compat/query",[],function(){function a(a,b,c){c.get("debug")&&window.console&&console.warn&&console.warn("Select2: The `query` option has been deprecated in favor of a custom data adapter that overrides the `query` method. Support will be removed for the `query` option in future versions of Select2."),a.call(this,b,c)}return a.prototype.query=function(a,b,c){b.callback=c;var d=this.options.get("query");d.call(null,b)},a}),b.define("select2/dropdown/attachContainer",[],function(){function a(a,b,c){a.call(this,b,c)}return a.prototype.position=function(a,b,c){var d=c.find(".dropdown-wrapper");d.append(b),b.addClass("select2-dropdown--below"),c.addClass("select2-container--below")},a}),b.define("select2/dropdown/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$dropdown.on(d.join(" "),function(a){a.stopPropagation()})},a}),b.define("select2/selection/stopPropagation",[],function(){function a(){}return a.prototype.bind=function(a,b,c){a.call(this,b,c);var d=["blur","change","click","dblclick","focus","focusin","focusout","input","keydown","keyup","keypress","mousedown","mouseenter","mouseleave","mousemove","mouseover","mouseup","search","touchend","touchstart"];this.$selection.on(d.join(" "),function(a){a.stopPropagation()})},a}),function(c){"function"==typeof b.define&&b.define.amd?b.define("jquery-mousewheel",["jquery"],c):"object"==typeof exports?module.exports=c:c(a)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type="mousewheel","detail"in g&&(m=-1*g.detail),"wheelDelta"in g&&(m=g.wheelDelta),"wheelDeltaY"in g&&(m=g.wheelDeltaY),"wheelDeltaX"in g&&(l=-1*g.wheelDeltaX),"axis"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,"deltaY"in g&&(m=-1*g.deltaY,j=m),"deltaX"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,"mousewheel-line-height");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,"mousewheel-page-height");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?"floor":"ceil"](j/f),l=Math[l>=1?"floor":"ceil"](l/f),m=Math[m>=1?"floor":"ceil"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&"mousewheel"===a.type&&b%120===0}var e,f,g=["wheel","mousewheel","DOMMouseScroll","MozMousePixelScroll"],h="onwheel"in document||document.documentMode>=9?["wheel"]:["mousewheel","DomMouseScroll","MozMousePixelScroll"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:"3.1.12",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,"mousewheel-line-height",k.getLineHeight(this)),a.data(this,"mousewheel-page-height",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,"mousewheel-line-height"),a.removeData(this,"mousewheel-page-height")},getLineHeight:function(b){var c=a(b),d=c["offsetParent"in a.fn?"offsetParent":"parent"]();return d.length||(d=a("body")),parseInt(d.css("fontSize"),10)||parseInt(c.css("fontSize"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
      \ No newline at end of file
      diff --git a/bower_components/select2/dist/js/select2.js b/bower_components/select2/dist/js/select2.js
      deleted file mode 100644
      index 13b84fadff..0000000000
      --- a/bower_components/select2/dist/js/select2.js
      +++ /dev/null
      @@ -1,5725 +0,0 @@
      -/*!
      - * Select2 4.0.3
      - * https://select2.github.io
      - *
      - * Released under the MIT license
      - * https://github.com/select2/select2/blob/master/LICENSE.md
      - */
      -(function (factory) {
      -  if (typeof define === 'function' && define.amd) {
      -    // AMD. Register as an anonymous module.
      -    define(['jquery'], factory);
      -  } else if (typeof exports === 'object') {
      -    // Node/CommonJS
      -    factory(require('jquery'));
      -  } else {
      -    // Browser globals
      -    factory(jQuery);
      -  }
      -}(function (jQuery) {
      -  // This is needed so we can catch the AMD loader configuration and use it
      -  // The inner file should be wrapped (by `banner.start.js`) in a function that
      -  // returns the AMD loader references.
      -  var S2 =
      -(function () {
      -  // Restore the Select2 AMD loader so it can be used
      -  // Needed mostly in the language files, where the loader is not inserted
      -  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
      -    var S2 = jQuery.fn.select2.amd;
      -  }
      -var S2;(function () { if (!S2 || !S2.requirejs) {
      -if (!S2) { S2 = {}; } else { require = S2; }
      -/**
      - * @license almond 0.3.1 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
      - * Available via the MIT or new BSD license.
      - * see: http://github.com/jrburke/almond for details
      - */
      -//Going sloppy to avoid 'use strict' string cost, but strict practices should
      -//be followed.
      -/*jslint sloppy: true */
      -/*global setTimeout: false */
      -
      -var requirejs, require, define;
      -(function (undef) {
      -    var main, req, makeMap, handlers,
      -        defined = {},
      -        waiting = {},
      -        config = {},
      -        defining = {},
      -        hasOwn = Object.prototype.hasOwnProperty,
      -        aps = [].slice,
      -        jsSuffixRegExp = /\.js$/;
      -
      -    function hasProp(obj, prop) {
      -        return hasOwn.call(obj, prop);
      -    }
      -
      -    /**
      -     * Given a relative module name, like ./something, normalize it to
      -     * a real name that can be mapped to a path.
      -     * @param {String} name the relative name
      -     * @param {String} baseName a real name that the name arg is relative
      -     * to.
      -     * @returns {String} normalized name
      -     */
      -    function normalize(name, baseName) {
      -        var nameParts, nameSegment, mapValue, foundMap, lastIndex,
      -            foundI, foundStarMap, starI, i, j, part,
      -            baseParts = baseName && baseName.split("/"),
      -            map = config.map,
      -            starMap = (map && map['*']) || {};
      -
      -        //Adjust any relative paths.
      -        if (name && name.charAt(0) === ".") {
      -            //If have a base name, try to normalize against it,
      -            //otherwise, assume it is a top-level require that will
      -            //be relative to baseUrl in the end.
      -            if (baseName) {
      -                name = name.split('/');
      -                lastIndex = name.length - 1;
      -
      -                // Node .js allowance:
      -                if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
      -                    name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');
      -                }
      -
      -                //Lop off the last part of baseParts, so that . matches the
      -                //"directory" and not name of the baseName's module. For instance,
      -                //baseName of "one/two/three", maps to "one/two/three.js", but we
      -                //want the directory, "one/two" for this normalization.
      -                name = baseParts.slice(0, baseParts.length - 1).concat(name);
      -
      -                //start trimDots
      -                for (i = 0; i < name.length; i += 1) {
      -                    part = name[i];
      -                    if (part === ".") {
      -                        name.splice(i, 1);
      -                        i -= 1;
      -                    } else if (part === "..") {
      -                        if (i === 1 && (name[2] === '..' || name[0] === '..')) {
      -                            //End of the line. Keep at least one non-dot
      -                            //path segment at the front so it can be mapped
      -                            //correctly to disk. Otherwise, there is likely
      -                            //no path mapping for a path starting with '..'.
      -                            //This can still fail, but catches the most reasonable
      -                            //uses of ..
      -                            break;
      -                        } else if (i > 0) {
      -                            name.splice(i - 1, 2);
      -                            i -= 2;
      -                        }
      -                    }
      -                }
      -                //end trimDots
      -
      -                name = name.join("/");
      -            } else if (name.indexOf('./') === 0) {
      -                // No baseName, so this is ID is resolved relative
      -                // to baseUrl, pull off the leading dot.
      -                name = name.substring(2);
      -            }
      -        }
      -
      -        //Apply map config if available.
      -        if ((baseParts || starMap) && map) {
      -            nameParts = name.split('/');
      -
      -            for (i = nameParts.length; i > 0; i -= 1) {
      -                nameSegment = nameParts.slice(0, i).join("/");
      -
      -                if (baseParts) {
      -                    //Find the longest baseName segment match in the config.
      -                    //So, do joins on the biggest to smallest lengths of baseParts.
      -                    for (j = baseParts.length; j > 0; j -= 1) {
      -                        mapValue = map[baseParts.slice(0, j).join('/')];
      -
      -                        //baseName segment has  config, find if it has one for
      -                        //this name.
      -                        if (mapValue) {
      -                            mapValue = mapValue[nameSegment];
      -                            if (mapValue) {
      -                                //Match, update name to the new value.
      -                                foundMap = mapValue;
      -                                foundI = i;
      -                                break;
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                if (foundMap) {
      -                    break;
      -                }
      -
      -                //Check for a star map match, but just hold on to it,
      -                //if there is a shorter segment match later in a matching
      -                //config, then favor over this star map.
      -                if (!foundStarMap && starMap && starMap[nameSegment]) {
      -                    foundStarMap = starMap[nameSegment];
      -                    starI = i;
      -                }
      -            }
      -
      -            if (!foundMap && foundStarMap) {
      -                foundMap = foundStarMap;
      -                foundI = starI;
      -            }
      -
      -            if (foundMap) {
      -                nameParts.splice(0, foundI, foundMap);
      -                name = nameParts.join('/');
      -            }
      -        }
      -
      -        return name;
      -    }
      -
      -    function makeRequire(relName, forceSync) {
      -        return function () {
      -            //A version of a require function that passes a moduleName
      -            //value for items that may need to
      -            //look up paths relative to the moduleName
      -            var args = aps.call(arguments, 0);
      -
      -            //If first arg is not require('string'), and there is only
      -            //one arg, it is the array form without a callback. Insert
      -            //a null so that the following concat is correct.
      -            if (typeof args[0] !== 'string' && args.length === 1) {
      -                args.push(null);
      -            }
      -            return req.apply(undef, args.concat([relName, forceSync]));
      -        };
      -    }
      -
      -    function makeNormalize(relName) {
      -        return function (name) {
      -            return normalize(name, relName);
      -        };
      -    }
      -
      -    function makeLoad(depName) {
      -        return function (value) {
      -            defined[depName] = value;
      -        };
      -    }
      -
      -    function callDep(name) {
      -        if (hasProp(waiting, name)) {
      -            var args = waiting[name];
      -            delete waiting[name];
      -            defining[name] = true;
      -            main.apply(undef, args);
      -        }
      -
      -        if (!hasProp(defined, name) && !hasProp(defining, name)) {
      -            throw new Error('No ' + name);
      -        }
      -        return defined[name];
      -    }
      -
      -    //Turns a plugin!resource to [plugin, resource]
      -    //with the plugin being undefined if the name
      -    //did not have a plugin prefix.
      -    function splitPrefix(name) {
      -        var prefix,
      -            index = name ? name.indexOf('!') : -1;
      -        if (index > -1) {
      -            prefix = name.substring(0, index);
      -            name = name.substring(index + 1, name.length);
      -        }
      -        return [prefix, name];
      -    }
      -
      -    /**
      -     * Makes a name map, normalizing the name, and using a plugin
      -     * for normalization if necessary. Grabs a ref to plugin
      -     * too, as an optimization.
      -     */
      -    makeMap = function (name, relName) {
      -        var plugin,
      -            parts = splitPrefix(name),
      -            prefix = parts[0];
      -
      -        name = parts[1];
      -
      -        if (prefix) {
      -            prefix = normalize(prefix, relName);
      -            plugin = callDep(prefix);
      -        }
      -
      -        //Normalize according
      -        if (prefix) {
      -            if (plugin && plugin.normalize) {
      -                name = plugin.normalize(name, makeNormalize(relName));
      -            } else {
      -                name = normalize(name, relName);
      -            }
      -        } else {
      -            name = normalize(name, relName);
      -            parts = splitPrefix(name);
      -            prefix = parts[0];
      -            name = parts[1];
      -            if (prefix) {
      -                plugin = callDep(prefix);
      -            }
      -        }
      -
      -        //Using ridiculous property names for space reasons
      -        return {
      -            f: prefix ? prefix + '!' + name : name, //fullName
      -            n: name,
      -            pr: prefix,
      -            p: plugin
      -        };
      -    };
      -
      -    function makeConfig(name) {
      -        return function () {
      -            return (config && config.config && config.config[name]) || {};
      -        };
      -    }
      -
      -    handlers = {
      -        require: function (name) {
      -            return makeRequire(name);
      -        },
      -        exports: function (name) {
      -            var e = defined[name];
      -            if (typeof e !== 'undefined') {
      -                return e;
      -            } else {
      -                return (defined[name] = {});
      -            }
      -        },
      -        module: function (name) {
      -            return {
      -                id: name,
      -                uri: '',
      -                exports: defined[name],
      -                config: makeConfig(name)
      -            };
      -        }
      -    };
      -
      -    main = function (name, deps, callback, relName) {
      -        var cjsModule, depName, ret, map, i,
      -            args = [],
      -            callbackType = typeof callback,
      -            usingExports;
      -
      -        //Use name if no relName
      -        relName = relName || name;
      -
      -        //Call the callback to define the module, if necessary.
      -        if (callbackType === 'undefined' || callbackType === 'function') {
      -            //Pull out the defined dependencies and pass the ordered
      -            //values to the callback.
      -            //Default to [require, exports, module] if no deps
      -            deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;
      -            for (i = 0; i < deps.length; i += 1) {
      -                map = makeMap(deps[i], relName);
      -                depName = map.f;
      -
      -                //Fast path CommonJS standard dependencies.
      -                if (depName === "require") {
      -                    args[i] = handlers.require(name);
      -                } else if (depName === "exports") {
      -                    //CommonJS module spec 1.1
      -                    args[i] = handlers.exports(name);
      -                    usingExports = true;
      -                } else if (depName === "module") {
      -                    //CommonJS module spec 1.1
      -                    cjsModule = args[i] = handlers.module(name);
      -                } else if (hasProp(defined, depName) ||
      -                           hasProp(waiting, depName) ||
      -                           hasProp(defining, depName)) {
      -                    args[i] = callDep(depName);
      -                } else if (map.p) {
      -                    map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
      -                    args[i] = defined[depName];
      -                } else {
      -                    throw new Error(name + ' missing ' + depName);
      -                }
      -            }
      -
      -            ret = callback ? callback.apply(defined[name], args) : undefined;
      -
      -            if (name) {
      -                //If setting exports via "module" is in play,
      -                //favor that over return value and exports. After that,
      -                //favor a non-undefined return value over exports use.
      -                if (cjsModule && cjsModule.exports !== undef &&
      -                        cjsModule.exports !== defined[name]) {
      -                    defined[name] = cjsModule.exports;
      -                } else if (ret !== undef || !usingExports) {
      -                    //Use the return value from the function.
      -                    defined[name] = ret;
      -                }
      -            }
      -        } else if (name) {
      -            //May just be an object definition for the module. Only
      -            //worry about defining if have a module name.
      -            defined[name] = callback;
      -        }
      -    };
      -
      -    requirejs = require = req = function (deps, callback, relName, forceSync, alt) {
      -        if (typeof deps === "string") {
      -            if (handlers[deps]) {
      -                //callback in this case is really relName
      -                return handlers[deps](callback);
      -            }
      -            //Just return the module wanted. In this scenario, the
      -            //deps arg is the module name, and second arg (if passed)
      -            //is just the relName.
      -            //Normalize module name, if it contains . or ..
      -            return callDep(makeMap(deps, callback).f);
      -        } else if (!deps.splice) {
      -            //deps is a config object, not an array.
      -            config = deps;
      -            if (config.deps) {
      -                req(config.deps, config.callback);
      -            }
      -            if (!callback) {
      -                return;
      -            }
      -
      -            if (callback.splice) {
      -                //callback is an array, which means it is a dependency list.
      -                //Adjust args if there are dependencies
      -                deps = callback;
      -                callback = relName;
      -                relName = null;
      -            } else {
      -                deps = undef;
      -            }
      -        }
      -
      -        //Support require(['a'])
      -        callback = callback || function () {};
      -
      -        //If relName is a function, it is an errback handler,
      -        //so remove it.
      -        if (typeof relName === 'function') {
      -            relName = forceSync;
      -            forceSync = alt;
      -        }
      -
      -        //Simulate async callback;
      -        if (forceSync) {
      -            main(undef, deps, callback, relName);
      -        } else {
      -            //Using a non-zero value because of concern for what old browsers
      -            //do, and latest browsers "upgrade" to 4 if lower value is used:
      -            //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:
      -            //If want a value immediately, use require('id') instead -- something
      -            //that works in almond on the global level, but not guaranteed and
      -            //unlikely to work in other AMD implementations.
      -            setTimeout(function () {
      -                main(undef, deps, callback, relName);
      -            }, 4);
      -        }
      -
      -        return req;
      -    };
      -
      -    /**
      -     * Just drops the config on the floor, but returns req in case
      -     * the config return value is used.
      -     */
      -    req.config = function (cfg) {
      -        return req(cfg);
      -    };
      -
      -    /**
      -     * Expose module registry for debugging and tooling
      -     */
      -    requirejs._defined = defined;
      -
      -    define = function (name, deps, callback) {
      -        if (typeof name !== 'string') {
      -            throw new Error('See almond README: incorrect module build, no module name');
      -        }
      -
      -        //This module may not have dependencies
      -        if (!deps.splice) {
      -            //deps is not an array, so probably means
      -            //an object literal or factory function for
      -            //the value. Adjust args.
      -            callback = deps;
      -            deps = [];
      -        }
      -
      -        if (!hasProp(defined, name) && !hasProp(waiting, name)) {
      -            waiting[name] = [name, deps, callback];
      -        }
      -    };
      -
      -    define.amd = {
      -        jQuery: true
      -    };
      -}());
      -
      -S2.requirejs = requirejs;S2.require = require;S2.define = define;
      -}
      -}());
      -S2.define("almond", function(){});
      -
      -/* global jQuery:false, $:false */
      -S2.define('jquery',[],function () {
      -  var _$ = jQuery || $;
      -
      -  if (_$ == null && console && console.error) {
      -    console.error(
      -      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
      -      'found. Make sure that you are including jQuery before Select2 on your ' +
      -      'web page.'
      -    );
      -  }
      -
      -  return _$;
      -});
      -
      -S2.define('select2/utils',[
      -  'jquery'
      -], function ($) {
      -  var Utils = {};
      -
      -  Utils.Extend = function (ChildClass, SuperClass) {
      -    var __hasProp = {}.hasOwnProperty;
      -
      -    function BaseConstructor () {
      -      this.constructor = ChildClass;
      -    }
      -
      -    for (var key in SuperClass) {
      -      if (__hasProp.call(SuperClass, key)) {
      -        ChildClass[key] = SuperClass[key];
      -      }
      -    }
      -
      -    BaseConstructor.prototype = SuperClass.prototype;
      -    ChildClass.prototype = new BaseConstructor();
      -    ChildClass.__super__ = SuperClass.prototype;
      -
      -    return ChildClass;
      -  };
      -
      -  function getMethods (theClass) {
      -    var proto = theClass.prototype;
      -
      -    var methods = [];
      -
      -    for (var methodName in proto) {
      -      var m = proto[methodName];
      -
      -      if (typeof m !== 'function') {
      -        continue;
      -      }
      -
      -      if (methodName === 'constructor') {
      -        continue;
      -      }
      -
      -      methods.push(methodName);
      -    }
      -
      -    return methods;
      -  }
      -
      -  Utils.Decorate = function (SuperClass, DecoratorClass) {
      -    var decoratedMethods = getMethods(DecoratorClass);
      -    var superMethods = getMethods(SuperClass);
      -
      -    function DecoratedClass () {
      -      var unshift = Array.prototype.unshift;
      -
      -      var argCount = DecoratorClass.prototype.constructor.length;
      -
      -      var calledConstructor = SuperClass.prototype.constructor;
      -
      -      if (argCount > 0) {
      -        unshift.call(arguments, SuperClass.prototype.constructor);
      -
      -        calledConstructor = DecoratorClass.prototype.constructor;
      -      }
      -
      -      calledConstructor.apply(this, arguments);
      -    }
      -
      -    DecoratorClass.displayName = SuperClass.displayName;
      -
      -    function ctr () {
      -      this.constructor = DecoratedClass;
      -    }
      -
      -    DecoratedClass.prototype = new ctr();
      -
      -    for (var m = 0; m < superMethods.length; m++) {
      -        var superMethod = superMethods[m];
      -
      -        DecoratedClass.prototype[superMethod] =
      -          SuperClass.prototype[superMethod];
      -    }
      -
      -    var calledMethod = function (methodName) {
      -      // Stub out the original method if it's not decorating an actual method
      -      var originalMethod = function () {};
      -
      -      if (methodName in DecoratedClass.prototype) {
      -        originalMethod = DecoratedClass.prototype[methodName];
      -      }
      -
      -      var decoratedMethod = DecoratorClass.prototype[methodName];
      -
      -      return function () {
      -        var unshift = Array.prototype.unshift;
      -
      -        unshift.call(arguments, originalMethod);
      -
      -        return decoratedMethod.apply(this, arguments);
      -      };
      -    };
      -
      -    for (var d = 0; d < decoratedMethods.length; d++) {
      -      var decoratedMethod = decoratedMethods[d];
      -
      -      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
      -    }
      -
      -    return DecoratedClass;
      -  };
      -
      -  var Observable = function () {
      -    this.listeners = {};
      -  };
      -
      -  Observable.prototype.on = function (event, callback) {
      -    this.listeners = this.listeners || {};
      -
      -    if (event in this.listeners) {
      -      this.listeners[event].push(callback);
      -    } else {
      -      this.listeners[event] = [callback];
      -    }
      -  };
      -
      -  Observable.prototype.trigger = function (event) {
      -    var slice = Array.prototype.slice;
      -    var params = slice.call(arguments, 1);
      -
      -    this.listeners = this.listeners || {};
      -
      -    // Params should always come in as an array
      -    if (params == null) {
      -      params = [];
      -    }
      -
      -    // If there are no arguments to the event, use a temporary object
      -    if (params.length === 0) {
      -      params.push({});
      -    }
      -
      -    // Set the `_type` of the first object to the event
      -    params[0]._type = event;
      -
      -    if (event in this.listeners) {
      -      this.invoke(this.listeners[event], slice.call(arguments, 1));
      -    }
      -
      -    if ('*' in this.listeners) {
      -      this.invoke(this.listeners['*'], arguments);
      -    }
      -  };
      -
      -  Observable.prototype.invoke = function (listeners, params) {
      -    for (var i = 0, len = listeners.length; i < len; i++) {
      -      listeners[i].apply(this, params);
      -    }
      -  };
      -
      -  Utils.Observable = Observable;
      -
      -  Utils.generateChars = function (length) {
      -    var chars = '';
      -
      -    for (var i = 0; i < length; i++) {
      -      var randomChar = Math.floor(Math.random() * 36);
      -      chars += randomChar.toString(36);
      -    }
      -
      -    return chars;
      -  };
      -
      -  Utils.bind = function (func, context) {
      -    return function () {
      -      func.apply(context, arguments);
      -    };
      -  };
      -
      -  Utils._convertData = function (data) {
      -    for (var originalKey in data) {
      -      var keys = originalKey.split('-');
      -
      -      var dataLevel = data;
      -
      -      if (keys.length === 1) {
      -        continue;
      -      }
      -
      -      for (var k = 0; k < keys.length; k++) {
      -        var key = keys[k];
      -
      -        // Lowercase the first letter
      -        // By default, dash-separated becomes camelCase
      -        key = key.substring(0, 1).toLowerCase() + key.substring(1);
      -
      -        if (!(key in dataLevel)) {
      -          dataLevel[key] = {};
      -        }
      -
      -        if (k == keys.length - 1) {
      -          dataLevel[key] = data[originalKey];
      -        }
      -
      -        dataLevel = dataLevel[key];
      -      }
      -
      -      delete data[originalKey];
      -    }
      -
      -    return data;
      -  };
      -
      -  Utils.hasScroll = function (index, el) {
      -    // Adapted from the function created by @ShadowScripter
      -    // and adapted by @BillBarry on the Stack Exchange Code Review website.
      -    // The original code can be found at
      -    // http://codereview.stackexchange.com/q/13338
      -    // and was designed to be used with the Sizzle selector engine.
      -
      -    var $el = $(el);
      -    var overflowX = el.style.overflowX;
      -    var overflowY = el.style.overflowY;
      -
      -    //Check both x and y declarations
      -    if (overflowX === overflowY &&
      -        (overflowY === 'hidden' || overflowY === 'visible')) {
      -      return false;
      -    }
      -
      -    if (overflowX === 'scroll' || overflowY === 'scroll') {
      -      return true;
      -    }
      -
      -    return ($el.innerHeight() < el.scrollHeight ||
      -      $el.innerWidth() < el.scrollWidth);
      -  };
      -
      -  Utils.escapeMarkup = function (markup) {
      -    var replaceMap = {
      -      '\\': '&#92;',
      -      '&': '&amp;',
      -      '<': '&lt;',
      -      '>': '&gt;',
      -      '"': '&quot;',
      -      '\'': '&#39;',
      -      '/': '&#47;'
      -    };
      -
      -    // Do not try to escape the markup if it's not a string
      -    if (typeof markup !== 'string') {
      -      return markup;
      -    }
      -
      -    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
      -      return replaceMap[match];
      -    });
      -  };
      -
      -  // Append an array of jQuery nodes to a given element.
      -  Utils.appendMany = function ($element, $nodes) {
      -    // jQuery 1.7.x does not support $.fn.append() with an array
      -    // Fall back to a jQuery object collection using $.fn.add()
      -    if ($.fn.jquery.substr(0, 3) === '1.7') {
      -      var $jqNodes = $();
      -
      -      $.map($nodes, function (node) {
      -        $jqNodes = $jqNodes.add(node);
      -      });
      -
      -      $nodes = $jqNodes;
      -    }
      -
      -    $element.append($nodes);
      -  };
      -
      -  return Utils;
      -});
      -
      -S2.define('select2/results',[
      -  'jquery',
      -  './utils'
      -], function ($, Utils) {
      -  function Results ($element, options, dataAdapter) {
      -    this.$element = $element;
      -    this.data = dataAdapter;
      -    this.options = options;
      -
      -    Results.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(Results, Utils.Observable);
      -
      -  Results.prototype.render = function () {
      -    var $results = $(
      -      '<ul class="select2-results__options" role="tree"></ul>'
      -    );
      -
      -    if (this.options.get('multiple')) {
      -      $results.attr('aria-multiselectable', 'true');
      -    }
      -
      -    this.$results = $results;
      -
      -    return $results;
      -  };
      -
      -  Results.prototype.clear = function () {
      -    this.$results.empty();
      -  };
      -
      -  Results.prototype.displayMessage = function (params) {
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    this.clear();
      -    this.hideLoading();
      -
      -    var $message = $(
      -      '<li role="treeitem" aria-live="assertive"' +
      -      ' class="select2-results__option"></li>'
      -    );
      -
      -    var message = this.options.get('translations').get(params.message);
      -
      -    $message.append(
      -      escapeMarkup(
      -        message(params.args)
      -      )
      -    );
      -
      -    $message[0].className += ' select2-results__message';
      -
      -    this.$results.append($message);
      -  };
      -
      -  Results.prototype.hideMessages = function () {
      -    this.$results.find('.select2-results__message').remove();
      -  };
      -
      -  Results.prototype.append = function (data) {
      -    this.hideLoading();
      -
      -    var $options = [];
      -
      -    if (data.results == null || data.results.length === 0) {
      -      if (this.$results.children().length === 0) {
      -        this.trigger('results:message', {
      -          message: 'noResults'
      -        });
      -      }
      -
      -      return;
      -    }
      -
      -    data.results = this.sort(data.results);
      -
      -    for (var d = 0; d < data.results.length; d++) {
      -      var item = data.results[d];
      -
      -      var $option = this.option(item);
      -
      -      $options.push($option);
      -    }
      -
      -    this.$results.append($options);
      -  };
      -
      -  Results.prototype.position = function ($results, $dropdown) {
      -    var $resultsContainer = $dropdown.find('.select2-results');
      -    $resultsContainer.append($results);
      -  };
      -
      -  Results.prototype.sort = function (data) {
      -    var sorter = this.options.get('sorter');
      -
      -    return sorter(data);
      -  };
      -
      -  Results.prototype.highlightFirstItem = function () {
      -    var $options = this.$results
      -      .find('.select2-results__option[aria-selected]');
      -
      -    var $selected = $options.filter('[aria-selected=true]');
      -
      -    // Check if there are any selected options
      -    if ($selected.length > 0) {
      -      // If there are selected options, highlight the first
      -      $selected.first().trigger('mouseenter');
      -    } else {
      -      // If there are no selected options, highlight the first option
      -      // in the dropdown
      -      $options.first().trigger('mouseenter');
      -    }
      -
      -    this.ensureHighlightVisible();
      -  };
      -
      -  Results.prototype.setClasses = function () {
      -    var self = this;
      -
      -    this.data.current(function (selected) {
      -      var selectedIds = $.map(selected, function (s) {
      -        return s.id.toString();
      -      });
      -
      -      var $options = self.$results
      -        .find('.select2-results__option[aria-selected]');
      -
      -      $options.each(function () {
      -        var $option = $(this);
      -
      -        var item = $.data(this, 'data');
      -
      -        // id needs to be converted to a string when comparing
      -        var id = '' + item.id;
      -
      -        if ((item.element != null && item.element.selected) ||
      -            (item.element == null && $.inArray(id, selectedIds) > -1)) {
      -          $option.attr('aria-selected', 'true');
      -        } else {
      -          $option.attr('aria-selected', 'false');
      -        }
      -      });
      -
      -    });
      -  };
      -
      -  Results.prototype.showLoading = function (params) {
      -    this.hideLoading();
      -
      -    var loadingMore = this.options.get('translations').get('searching');
      -
      -    var loading = {
      -      disabled: true,
      -      loading: true,
      -      text: loadingMore(params)
      -    };
      -    var $loading = this.option(loading);
      -    $loading.className += ' loading-results';
      -
      -    this.$results.prepend($loading);
      -  };
      -
      -  Results.prototype.hideLoading = function () {
      -    this.$results.find('.loading-results').remove();
      -  };
      -
      -  Results.prototype.option = function (data) {
      -    var option = document.createElement('li');
      -    option.className = 'select2-results__option';
      -
      -    var attrs = {
      -      'role': 'treeitem',
      -      'aria-selected': 'false'
      -    };
      -
      -    if (data.disabled) {
      -      delete attrs['aria-selected'];
      -      attrs['aria-disabled'] = 'true';
      -    }
      -
      -    if (data.id == null) {
      -      delete attrs['aria-selected'];
      -    }
      -
      -    if (data._resultId != null) {
      -      option.id = data._resultId;
      -    }
      -
      -    if (data.title) {
      -      option.title = data.title;
      -    }
      -
      -    if (data.children) {
      -      attrs.role = 'group';
      -      attrs['aria-label'] = data.text;
      -      delete attrs['aria-selected'];
      -    }
      -
      -    for (var attr in attrs) {
      -      var val = attrs[attr];
      -
      -      option.setAttribute(attr, val);
      -    }
      -
      -    if (data.children) {
      -      var $option = $(option);
      -
      -      var label = document.createElement('strong');
      -      label.className = 'select2-results__group';
      -
      -      var $label = $(label);
      -      this.template(data, label);
      -
      -      var $children = [];
      -
      -      for (var c = 0; c < data.children.length; c++) {
      -        var child = data.children[c];
      -
      -        var $child = this.option(child);
      -
      -        $children.push($child);
      -      }
      -
      -      var $childrenContainer = $('<ul></ul>', {
      -        'class': 'select2-results__options select2-results__options--nested'
      -      });
      -
      -      $childrenContainer.append($children);
      -
      -      $option.append(label);
      -      $option.append($childrenContainer);
      -    } else {
      -      this.template(data, option);
      -    }
      -
      -    $.data(option, 'data', data);
      -
      -    return option;
      -  };
      -
      -  Results.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    var id = container.id + '-results';
      -
      -    this.$results.attr('id', id);
      -
      -    container.on('results:all', function (params) {
      -      self.clear();
      -      self.append(params.data);
      -
      -      if (container.isOpen()) {
      -        self.setClasses();
      -        self.highlightFirstItem();
      -      }
      -    });
      -
      -    container.on('results:append', function (params) {
      -      self.append(params.data);
      -
      -      if (container.isOpen()) {
      -        self.setClasses();
      -      }
      -    });
      -
      -    container.on('query', function (params) {
      -      self.hideMessages();
      -      self.showLoading(params);
      -    });
      -
      -    container.on('select', function () {
      -      if (!container.isOpen()) {
      -        return;
      -      }
      -
      -      self.setClasses();
      -      self.highlightFirstItem();
      -    });
      -
      -    container.on('unselect', function () {
      -      if (!container.isOpen()) {
      -        return;
      -      }
      -
      -      self.setClasses();
      -      self.highlightFirstItem();
      -    });
      -
      -    container.on('open', function () {
      -      // When the dropdown is open, aria-expended="true"
      -      self.$results.attr('aria-expanded', 'true');
      -      self.$results.attr('aria-hidden', 'false');
      -
      -      self.setClasses();
      -      self.ensureHighlightVisible();
      -    });
      -
      -    container.on('close', function () {
      -      // When the dropdown is closed, aria-expended="false"
      -      self.$results.attr('aria-expanded', 'false');
      -      self.$results.attr('aria-hidden', 'true');
      -      self.$results.removeAttr('aria-activedescendant');
      -    });
      -
      -    container.on('results:toggle', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      if ($highlighted.length === 0) {
      -        return;
      -      }
      -
      -      $highlighted.trigger('mouseup');
      -    });
      -
      -    container.on('results:select', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      if ($highlighted.length === 0) {
      -        return;
      -      }
      -
      -      var data = $highlighted.data('data');
      -
      -      if ($highlighted.attr('aria-selected') == 'true') {
      -        self.trigger('close', {});
      -      } else {
      -        self.trigger('select', {
      -          data: data
      -        });
      -      }
      -    });
      -
      -    container.on('results:previous', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      var $options = self.$results.find('[aria-selected]');
      -
      -      var currentIndex = $options.index($highlighted);
      -
      -      // If we are already at te top, don't move further
      -      if (currentIndex === 0) {
      -        return;
      -      }
      -
      -      var nextIndex = currentIndex - 1;
      -
      -      // If none are highlighted, highlight the first
      -      if ($highlighted.length === 0) {
      -        nextIndex = 0;
      -      }
      -
      -      var $next = $options.eq(nextIndex);
      -
      -      $next.trigger('mouseenter');
      -
      -      var currentOffset = self.$results.offset().top;
      -      var nextTop = $next.offset().top;
      -      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
      -
      -      if (nextIndex === 0) {
      -        self.$results.scrollTop(0);
      -      } else if (nextTop - currentOffset < 0) {
      -        self.$results.scrollTop(nextOffset);
      -      }
      -    });
      -
      -    container.on('results:next', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      var $options = self.$results.find('[aria-selected]');
      -
      -      var currentIndex = $options.index($highlighted);
      -
      -      var nextIndex = currentIndex + 1;
      -
      -      // If we are at the last option, stay there
      -      if (nextIndex >= $options.length) {
      -        return;
      -      }
      -
      -      var $next = $options.eq(nextIndex);
      -
      -      $next.trigger('mouseenter');
      -
      -      var currentOffset = self.$results.offset().top +
      -        self.$results.outerHeight(false);
      -      var nextBottom = $next.offset().top + $next.outerHeight(false);
      -      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
      -
      -      if (nextIndex === 0) {
      -        self.$results.scrollTop(0);
      -      } else if (nextBottom > currentOffset) {
      -        self.$results.scrollTop(nextOffset);
      -      }
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      params.element.addClass('select2-results__option--highlighted');
      -    });
      -
      -    container.on('results:message', function (params) {
      -      self.displayMessage(params);
      -    });
      -
      -    if ($.fn.mousewheel) {
      -      this.$results.on('mousewheel', function (e) {
      -        var top = self.$results.scrollTop();
      -
      -        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
      -
      -        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
      -        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
      -
      -        if (isAtTop) {
      -          self.$results.scrollTop(0);
      -
      -          e.preventDefault();
      -          e.stopPropagation();
      -        } else if (isAtBottom) {
      -          self.$results.scrollTop(
      -            self.$results.get(0).scrollHeight - self.$results.height()
      -          );
      -
      -          e.preventDefault();
      -          e.stopPropagation();
      -        }
      -      });
      -    }
      -
      -    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
      -      function (evt) {
      -      var $this = $(this);
      -
      -      var data = $this.data('data');
      -
      -      if ($this.attr('aria-selected') === 'true') {
      -        if (self.options.get('multiple')) {
      -          self.trigger('unselect', {
      -            originalEvent: evt,
      -            data: data
      -          });
      -        } else {
      -          self.trigger('close', {});
      -        }
      -
      -        return;
      -      }
      -
      -      self.trigger('select', {
      -        originalEvent: evt,
      -        data: data
      -      });
      -    });
      -
      -    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
      -      function (evt) {
      -      var data = $(this).data('data');
      -
      -      self.getHighlightedResults()
      -          .removeClass('select2-results__option--highlighted');
      -
      -      self.trigger('results:focus', {
      -        data: data,
      -        element: $(this)
      -      });
      -    });
      -  };
      -
      -  Results.prototype.getHighlightedResults = function () {
      -    var $highlighted = this.$results
      -    .find('.select2-results__option--highlighted');
      -
      -    return $highlighted;
      -  };
      -
      -  Results.prototype.destroy = function () {
      -    this.$results.remove();
      -  };
      -
      -  Results.prototype.ensureHighlightVisible = function () {
      -    var $highlighted = this.getHighlightedResults();
      -
      -    if ($highlighted.length === 0) {
      -      return;
      -    }
      -
      -    var $options = this.$results.find('[aria-selected]');
      -
      -    var currentIndex = $options.index($highlighted);
      -
      -    var currentOffset = this.$results.offset().top;
      -    var nextTop = $highlighted.offset().top;
      -    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
      -
      -    var offsetDelta = nextTop - currentOffset;
      -    nextOffset -= $highlighted.outerHeight(false) * 2;
      -
      -    if (currentIndex <= 2) {
      -      this.$results.scrollTop(0);
      -    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
      -      this.$results.scrollTop(nextOffset);
      -    }
      -  };
      -
      -  Results.prototype.template = function (result, container) {
      -    var template = this.options.get('templateResult');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    var content = template(result, container);
      -
      -    if (content == null) {
      -      container.style.display = 'none';
      -    } else if (typeof content === 'string') {
      -      container.innerHTML = escapeMarkup(content);
      -    } else {
      -      $(container).append(content);
      -    }
      -  };
      -
      -  return Results;
      -});
      -
      -S2.define('select2/keys',[
      -
      -], function () {
      -  var KEYS = {
      -    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 KEYS;
      -});
      -
      -S2.define('select2/selection/base',[
      -  'jquery',
      -  '../utils',
      -  '../keys'
      -], function ($, Utils, KEYS) {
      -  function BaseSelection ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    BaseSelection.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(BaseSelection, Utils.Observable);
      -
      -  BaseSelection.prototype.render = function () {
      -    var $selection = $(
      -      '<span class="select2-selection" role="combobox" ' +
      -      ' aria-haspopup="true" aria-expanded="false">' +
      -      '</span>'
      -    );
      -
      -    this._tabindex = 0;
      -
      -    if (this.$element.data('old-tabindex') != null) {
      -      this._tabindex = this.$element.data('old-tabindex');
      -    } else if (this.$element.attr('tabindex') != null) {
      -      this._tabindex = this.$element.attr('tabindex');
      -    }
      -
      -    $selection.attr('title', this.$element.attr('title'));
      -    $selection.attr('tabindex', this._tabindex);
      -
      -    this.$selection = $selection;
      -
      -    return $selection;
      -  };
      -
      -  BaseSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    var id = container.id + '-container';
      -    var resultsId = container.id + '-results';
      -
      -    this.container = container;
      -
      -    this.$selection.on('focus', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this.$selection.on('blur', function (evt) {
      -      self._handleBlur(evt);
      -    });
      -
      -    this.$selection.on('keydown', function (evt) {
      -      self.trigger('keypress', evt);
      -
      -      if (evt.which === KEYS.SPACE) {
      -        evt.preventDefault();
      -      }
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      self.$selection.attr('aria-activedescendant', params.data._resultId);
      -    });
      -
      -    container.on('selection:update', function (params) {
      -      self.update(params.data);
      -    });
      -
      -    container.on('open', function () {
      -      // When the dropdown is open, aria-expanded="true"
      -      self.$selection.attr('aria-expanded', 'true');
      -      self.$selection.attr('aria-owns', resultsId);
      -
      -      self._attachCloseHandler(container);
      -    });
      -
      -    container.on('close', function () {
      -      // When the dropdown is closed, aria-expanded="false"
      -      self.$selection.attr('aria-expanded', 'false');
      -      self.$selection.removeAttr('aria-activedescendant');
      -      self.$selection.removeAttr('aria-owns');
      -
      -      self.$selection.focus();
      -
      -      self._detachCloseHandler(container);
      -    });
      -
      -    container.on('enable', function () {
      -      self.$selection.attr('tabindex', self._tabindex);
      -    });
      -
      -    container.on('disable', function () {
      -      self.$selection.attr('tabindex', '-1');
      -    });
      -  };
      -
      -  BaseSelection.prototype._handleBlur = function (evt) {
      -    var self = this;
      -
      -    // This needs to be delayed as the active element is the body when the tab
      -    // key is pressed, possibly along with others.
      -    window.setTimeout(function () {
      -      // Don't trigger `blur` if the focus is still in the selection
      -      if (
      -        (document.activeElement == self.$selection[0]) ||
      -        ($.contains(self.$selection[0], document.activeElement))
      -      ) {
      -        return;
      -      }
      -
      -      self.trigger('blur', evt);
      -    }, 1);
      -  };
      -
      -  BaseSelection.prototype._attachCloseHandler = function (container) {
      -    var self = this;
      -
      -    $(document.body).on('mousedown.select2.' + container.id, function (e) {
      -      var $target = $(e.target);
      -
      -      var $select = $target.closest('.select2');
      -
      -      var $all = $('.select2.select2-container--open');
      -
      -      $all.each(function () {
      -        var $this = $(this);
      -
      -        if (this == $select[0]) {
      -          return;
      -        }
      -
      -        var $element = $this.data('element');
      -
      -        $element.select2('close');
      -      });
      -    });
      -  };
      -
      -  BaseSelection.prototype._detachCloseHandler = function (container) {
      -    $(document.body).off('mousedown.select2.' + container.id);
      -  };
      -
      -  BaseSelection.prototype.position = function ($selection, $container) {
      -    var $selectionContainer = $container.find('.selection');
      -    $selectionContainer.append($selection);
      -  };
      -
      -  BaseSelection.prototype.destroy = function () {
      -    this._detachCloseHandler(this.container);
      -  };
      -
      -  BaseSelection.prototype.update = function (data) {
      -    throw new Error('The `update` method must be defined in child classes.');
      -  };
      -
      -  return BaseSelection;
      -});
      -
      -S2.define('select2/selection/single',[
      -  'jquery',
      -  './base',
      -  '../utils',
      -  '../keys'
      -], function ($, BaseSelection, Utils, KEYS) {
      -  function SingleSelection () {
      -    SingleSelection.__super__.constructor.apply(this, arguments);
      -  }
      -
      -  Utils.Extend(SingleSelection, BaseSelection);
      -
      -  SingleSelection.prototype.render = function () {
      -    var $selection = SingleSelection.__super__.render.call(this);
      -
      -    $selection.addClass('select2-selection--single');
      -
      -    $selection.html(
      -      '<span class="select2-selection__rendered"></span>' +
      -      '<span class="select2-selection__arrow" role="presentation">' +
      -        '<b role="presentation"></b>' +
      -      '</span>'
      -    );
      -
      -    return $selection;
      -  };
      -
      -  SingleSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    SingleSelection.__super__.bind.apply(this, arguments);
      -
      -    var id = container.id + '-container';
      -
      -    this.$selection.find('.select2-selection__rendered').attr('id', id);
      -    this.$selection.attr('aria-labelledby', id);
      -
      -    this.$selection.on('mousedown', function (evt) {
      -      // Only respond to left clicks
      -      if (evt.which !== 1) {
      -        return;
      -      }
      -
      -      self.trigger('toggle', {
      -        originalEvent: evt
      -      });
      -    });
      -
      -    this.$selection.on('focus', function (evt) {
      -      // User focuses on the container
      -    });
      -
      -    this.$selection.on('blur', function (evt) {
      -      // User exits the container
      -    });
      -
      -    container.on('focus', function (evt) {
      -      if (!container.isOpen()) {
      -        self.$selection.focus();
      -      }
      -    });
      -
      -    container.on('selection:update', function (params) {
      -      self.update(params.data);
      -    });
      -  };
      -
      -  SingleSelection.prototype.clear = function () {
      -    this.$selection.find('.select2-selection__rendered').empty();
      -  };
      -
      -  SingleSelection.prototype.display = function (data, container) {
      -    var template = this.options.get('templateSelection');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    return escapeMarkup(template(data, container));
      -  };
      -
      -  SingleSelection.prototype.selectionContainer = function () {
      -    return $('<span></span>');
      -  };
      -
      -  SingleSelection.prototype.update = function (data) {
      -    if (data.length === 0) {
      -      this.clear();
      -      return;
      -    }
      -
      -    var selection = data[0];
      -
      -    var $rendered = this.$selection.find('.select2-selection__rendered');
      -    var formatted = this.display(selection, $rendered);
      -
      -    $rendered.empty().append(formatted);
      -    $rendered.prop('title', selection.title || selection.text);
      -  };
      -
      -  return SingleSelection;
      -});
      -
      -S2.define('select2/selection/multiple',[
      -  'jquery',
      -  './base',
      -  '../utils'
      -], function ($, BaseSelection, Utils) {
      -  function MultipleSelection ($element, options) {
      -    MultipleSelection.__super__.constructor.apply(this, arguments);
      -  }
      -
      -  Utils.Extend(MultipleSelection, BaseSelection);
      -
      -  MultipleSelection.prototype.render = function () {
      -    var $selection = MultipleSelection.__super__.render.call(this);
      -
      -    $selection.addClass('select2-selection--multiple');
      -
      -    $selection.html(
      -      '<ul class="select2-selection__rendered"></ul>'
      -    );
      -
      -    return $selection;
      -  };
      -
      -  MultipleSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    MultipleSelection.__super__.bind.apply(this, arguments);
      -
      -    this.$selection.on('click', function (evt) {
      -      self.trigger('toggle', {
      -        originalEvent: evt
      -      });
      -    });
      -
      -    this.$selection.on(
      -      'click',
      -      '.select2-selection__choice__remove',
      -      function (evt) {
      -        // Ignore the event if it is disabled
      -        if (self.options.get('disabled')) {
      -          return;
      -        }
      -
      -        var $remove = $(this);
      -        var $selection = $remove.parent();
      -
      -        var data = $selection.data('data');
      -
      -        self.trigger('unselect', {
      -          originalEvent: evt,
      -          data: data
      -        });
      -      }
      -    );
      -  };
      -
      -  MultipleSelection.prototype.clear = function () {
      -    this.$selection.find('.select2-selection__rendered').empty();
      -  };
      -
      -  MultipleSelection.prototype.display = function (data, container) {
      -    var template = this.options.get('templateSelection');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    return escapeMarkup(template(data, container));
      -  };
      -
      -  MultipleSelection.prototype.selectionContainer = function () {
      -    var $container = $(
      -      '<li class="select2-selection__choice">' +
      -        '<span class="select2-selection__choice__remove" role="presentation">' +
      -          '&times;' +
      -        '</span>' +
      -      '</li>'
      -    );
      -
      -    return $container;
      -  };
      -
      -  MultipleSelection.prototype.update = function (data) {
      -    this.clear();
      -
      -    if (data.length === 0) {
      -      return;
      -    }
      -
      -    var $selections = [];
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var selection = data[d];
      -
      -      var $selection = this.selectionContainer();
      -      var formatted = this.display(selection, $selection);
      -
      -      $selection.append(formatted);
      -      $selection.prop('title', selection.title || selection.text);
      -
      -      $selection.data('data', selection);
      -
      -      $selections.push($selection);
      -    }
      -
      -    var $rendered = this.$selection.find('.select2-selection__rendered');
      -
      -    Utils.appendMany($rendered, $selections);
      -  };
      -
      -  return MultipleSelection;
      -});
      -
      -S2.define('select2/selection/placeholder',[
      -  '../utils'
      -], function (Utils) {
      -  function Placeholder (decorated, $element, options) {
      -    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
      -    if (typeof placeholder === 'string') {
      -      placeholder = {
      -        id: '',
      -        text: placeholder
      -      };
      -    }
      -
      -    return placeholder;
      -  };
      -
      -  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
      -    var $placeholder = this.selectionContainer();
      -
      -    $placeholder.html(this.display(placeholder));
      -    $placeholder.addClass('select2-selection__placeholder')
      -                .removeClass('select2-selection__choice');
      -
      -    return $placeholder;
      -  };
      -
      -  Placeholder.prototype.update = function (decorated, data) {
      -    var singlePlaceholder = (
      -      data.length == 1 && data[0].id != this.placeholder.id
      -    );
      -    var multipleSelections = data.length > 1;
      -
      -    if (multipleSelections || singlePlaceholder) {
      -      return decorated.call(this, data);
      -    }
      -
      -    this.clear();
      -
      -    var $placeholder = this.createPlaceholder(this.placeholder);
      -
      -    this.$selection.find('.select2-selection__rendered').append($placeholder);
      -  };
      -
      -  return Placeholder;
      -});
      -
      -S2.define('select2/selection/allowClear',[
      -  'jquery',
      -  '../keys'
      -], function ($, KEYS) {
      -  function AllowClear () { }
      -
      -  AllowClear.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    if (this.placeholder == null) {
      -      if (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 (evt) {
      -        self._handleClear(evt);
      -    });
      -
      -    container.on('keypress', function (evt) {
      -      self._handleKeyboardClear(evt, container);
      -    });
      -  };
      -
      -  AllowClear.prototype._handleClear = function (_, evt) {
      -    // Ignore the event if it is disabled
      -    if (this.options.get('disabled')) {
      -      return;
      -    }
      -
      -    var $clear = this.$selection.find('.select2-selection__clear');
      -
      -    // Ignore the event if nothing has been selected
      -    if ($clear.length === 0) {
      -      return;
      -    }
      -
      -    evt.stopPropagation();
      -
      -    var data = $clear.data('data');
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var unselectData = {
      -        data: data[d]
      -      };
      -
      -      // Trigger the `unselect` event, so people can prevent it from being
      -      // cleared.
      -      this.trigger('unselect', unselectData);
      -
      -      // If the event was prevented, don't clear it out.
      -      if (unselectData.prevented) {
      -        return;
      -      }
      -    }
      -
      -    this.$element.val(this.placeholder.id).trigger('change');
      -
      -    this.trigger('toggle', {});
      -  };
      -
      -  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
      -    if (container.isOpen()) {
      -      return;
      -    }
      -
      -    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
      -      this._handleClear(evt);
      -    }
      -  };
      -
      -  AllowClear.prototype.update = function (decorated, data) {
      -    decorated.call(this, data);
      -
      -    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
      -        data.length === 0) {
      -      return;
      -    }
      -
      -    var $remove = $(
      -      '<span class="select2-selection__clear">' +
      -        '&times;' +
      -      '</span>'
      -    );
      -    $remove.data('data', data);
      -
      -    this.$selection.find('.select2-selection__rendered').prepend($remove);
      -  };
      -
      -  return AllowClear;
      -});
      -
      -S2.define('select2/selection/search',[
      -  'jquery',
      -  '../utils',
      -  '../keys'
      -], function ($, Utils, KEYS) {
      -  function Search (decorated, $element, options) {
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Search.prototype.render = function (decorated) {
      -    var $search = $(
      -      '<li class="select2-search select2-search--inline">' +
      -        '<input class="select2-search__field" type="search" tabindex="-1"' +
      -        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
      -        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
      -      '</li>'
      -    );
      -
      -    this.$searchContainer = $search;
      -    this.$search = $search.find('input');
      -
      -    var $rendered = decorated.call(this);
      -
      -    this._transferTabIndex();
      -
      -    return $rendered;
      -  };
      -
      -  Search.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('open', function () {
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('close', function () {
      -      self.$search.val('');
      -      self.$search.removeAttr('aria-activedescendant');
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('enable', function () {
      -      self.$search.prop('disabled', false);
      -
      -      self._transferTabIndex();
      -    });
      -
      -    container.on('disable', function () {
      -      self.$search.prop('disabled', true);
      -    });
      -
      -    container.on('focus', function (evt) {
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      self.$search.attr('aria-activedescendant', params.id);
      -    });
      -
      -    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
      -      self._handleBlur(evt);
      -    });
      -
      -    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
      -      evt.stopPropagation();
      -
      -      self.trigger('keypress', evt);
      -
      -      self._keyUpPrevented = evt.isDefaultPrevented();
      -
      -      var key = evt.which;
      -
      -      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
      -        var $previousChoice = self.$searchContainer
      -          .prev('.select2-selection__choice');
      -
      -        if ($previousChoice.length > 0) {
      -          var item = $previousChoice.data('data');
      -
      -          self.searchRemoveChoice(item);
      -
      -          evt.preventDefault();
      -        }
      -      }
      -    });
      -
      -    // Try to detect the IE version should the `documentMode` property that
      -    // is stored on the document. This is only implemented in IE and is
      -    // slightly cleaner than doing a user agent check.
      -    // This property is not available in Edge, but Edge also doesn't have
      -    // this bug.
      -    var msie = document.documentMode;
      -    var disableInputEvents = msie && msie <= 11;
      -
      -    // Workaround for browsers which do not support the `input` event
      -    // This will prevent double-triggering of events for browsers which support
      -    // both the `keyup` and `input` events.
      -    this.$selection.on(
      -      'input.searchcheck',
      -      '.select2-search--inline',
      -      function (evt) {
      -        // IE will trigger the `input` event when a placeholder is used on a
      -        // search box. To get around this issue, we are forced to ignore all
      -        // `input` events in IE and keep using `keyup`.
      -        if (disableInputEvents) {
      -          self.$selection.off('input.search input.searchcheck');
      -          return;
      -        }
      -
      -        // Unbind the duplicated `keyup` event
      -        self.$selection.off('keyup.search');
      -      }
      -    );
      -
      -    this.$selection.on(
      -      'keyup.search input.search',
      -      '.select2-search--inline',
      -      function (evt) {
      -        // IE will trigger the `input` event when a placeholder is used on a
      -        // search box. To get around this issue, we are forced to ignore all
      -        // `input` events in IE and keep using `keyup`.
      -        if (disableInputEvents && evt.type === 'input') {
      -          self.$selection.off('input.search input.searchcheck');
      -          return;
      -        }
      -
      -        var key = evt.which;
      -
      -        // We can freely ignore events from modifier keys
      -        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
      -          return;
      -        }
      -
      -        // Tabbing will be handled during the `keydown` phase
      -        if (key == KEYS.TAB) {
      -          return;
      -        }
      -
      -        self.handleSearch(evt);
      -      }
      -    );
      -  };
      -
      -  /**
      -   * This method will transfer the tabindex attribute from the rendered
      -   * selection to the search box. This allows for the search box to be used as
      -   * the primary focus instead of the selection container.
      -   *
      -   * @private
      -   */
      -  Search.prototype._transferTabIndex = function (decorated) {
      -    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
      -    this.$selection.attr('tabindex', '-1');
      -  };
      -
      -  Search.prototype.createPlaceholder = function (decorated, placeholder) {
      -    this.$search.attr('placeholder', placeholder.text);
      -  };
      -
      -  Search.prototype.update = function (decorated, data) {
      -    var searchHadFocus = this.$search[0] == document.activeElement;
      -
      -    this.$search.attr('placeholder', '');
      -
      -    decorated.call(this, data);
      -
      -    this.$selection.find('.select2-selection__rendered')
      -                   .append(this.$searchContainer);
      -
      -    this.resizeSearch();
      -    if (searchHadFocus) {
      -      this.$search.focus();
      -    }
      -  };
      -
      -  Search.prototype.handleSearch = function () {
      -    this.resizeSearch();
      -
      -    if (!this._keyUpPrevented) {
      -      var input = this.$search.val();
      -
      -      this.trigger('query', {
      -        term: input
      -      });
      -    }
      -
      -    this._keyUpPrevented = false;
      -  };
      -
      -  Search.prototype.searchRemoveChoice = function (decorated, item) {
      -    this.trigger('unselect', {
      -      data: item
      -    });
      -
      -    this.$search.val(item.text);
      -    this.handleSearch();
      -  };
      -
      -  Search.prototype.resizeSearch = function () {
      -    this.$search.css('width', '25px');
      -
      -    var width = '';
      -
      -    if (this.$search.attr('placeholder') !== '') {
      -      width = this.$selection.find('.select2-selection__rendered').innerWidth();
      -    } else {
      -      var minimumWidth = this.$search.val().length + 1;
      -
      -      width = (minimumWidth * 0.75) + 'em';
      -    }
      -
      -    this.$search.css('width', width);
      -  };
      -
      -  return Search;
      -});
      -
      -S2.define('select2/selection/eventRelay',[
      -  'jquery'
      -], function ($) {
      -  function EventRelay () { }
      -
      -  EventRelay.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -    var relayEvents = [
      -      'open', 'opening',
      -      'close', 'closing',
      -      'select', 'selecting',
      -      'unselect', 'unselecting'
      -    ];
      -
      -    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('*', function (name, params) {
      -      // Ignore events that should not be relayed
      -      if ($.inArray(name, relayEvents) === -1) {
      -        return;
      -      }
      -
      -      // The parameters should always be an object
      -      params = params || {};
      -
      -      // Generate the jQuery event for the Select2 event
      -      var evt = $.Event('select2:' + name, {
      -        params: params
      -      });
      -
      -      self.$element.trigger(evt);
      -
      -      // Only handle preventable events if it was one
      -      if ($.inArray(name, preventableEvents) === -1) {
      -        return;
      -      }
      -
      -      params.prevented = evt.isDefaultPrevented();
      -    });
      -  };
      -
      -  return EventRelay;
      -});
      -
      -S2.define('select2/translation',[
      -  'jquery',
      -  'require'
      -], function ($, require) {
      -  function Translation (dict) {
      -    this.dict = dict || {};
      -  }
      -
      -  Translation.prototype.all = function () {
      -    return this.dict;
      -  };
      -
      -  Translation.prototype.get = function (key) {
      -    return this.dict[key];
      -  };
      -
      -  Translation.prototype.extend = function (translation) {
      -    this.dict = $.extend({}, translation.all(), this.dict);
      -  };
      -
      -  // Static functions
      -
      -  Translation._cache = {};
      -
      -  Translation.loadPath = function (path) {
      -    if (!(path in Translation._cache)) {
      -      var translations = require(path);
      -
      -      Translation._cache[path] = translations;
      -    }
      -
      -    return new Translation(Translation._cache[path]);
      -  };
      -
      -  return Translation;
      -});
      -
      -S2.define('select2/diacritics',[
      -
      -], function () {
      -  var diacritics = {
      -    '\u24B6': 'A',
      -    '\uFF21': 'A',
      -    '\u00C0': 'A',
      -    '\u00C1': 'A',
      -    '\u00C2': 'A',
      -    '\u1EA6': 'A',
      -    '\u1EA4': 'A',
      -    '\u1EAA': 'A',
      -    '\u1EA8': 'A',
      -    '\u00C3': 'A',
      -    '\u0100': 'A',
      -    '\u0102': 'A',
      -    '\u1EB0': 'A',
      -    '\u1EAE': 'A',
      -    '\u1EB4': 'A',
      -    '\u1EB2': 'A',
      -    '\u0226': 'A',
      -    '\u01E0': 'A',
      -    '\u00C4': 'A',
      -    '\u01DE': 'A',
      -    '\u1EA2': 'A',
      -    '\u00C5': 'A',
      -    '\u01FA': 'A',
      -    '\u01CD': 'A',
      -    '\u0200': 'A',
      -    '\u0202': 'A',
      -    '\u1EA0': 'A',
      -    '\u1EAC': 'A',
      -    '\u1EB6': 'A',
      -    '\u1E00': 'A',
      -    '\u0104': 'A',
      -    '\u023A': 'A',
      -    '\u2C6F': 'A',
      -    '\uA732': 'AA',
      -    '\u00C6': 'AE',
      -    '\u01FC': 'AE',
      -    '\u01E2': 'AE',
      -    '\uA734': 'AO',
      -    '\uA736': 'AU',
      -    '\uA738': 'AV',
      -    '\uA73A': 'AV',
      -    '\uA73C': 'AY',
      -    '\u24B7': 'B',
      -    '\uFF22': 'B',
      -    '\u1E02': 'B',
      -    '\u1E04': 'B',
      -    '\u1E06': 'B',
      -    '\u0243': 'B',
      -    '\u0182': 'B',
      -    '\u0181': 'B',
      -    '\u24B8': 'C',
      -    '\uFF23': 'C',
      -    '\u0106': 'C',
      -    '\u0108': 'C',
      -    '\u010A': 'C',
      -    '\u010C': 'C',
      -    '\u00C7': 'C',
      -    '\u1E08': 'C',
      -    '\u0187': 'C',
      -    '\u023B': 'C',
      -    '\uA73E': 'C',
      -    '\u24B9': 'D',
      -    '\uFF24': 'D',
      -    '\u1E0A': 'D',
      -    '\u010E': 'D',
      -    '\u1E0C': 'D',
      -    '\u1E10': 'D',
      -    '\u1E12': 'D',
      -    '\u1E0E': 'D',
      -    '\u0110': 'D',
      -    '\u018B': 'D',
      -    '\u018A': 'D',
      -    '\u0189': 'D',
      -    '\uA779': 'D',
      -    '\u01F1': 'DZ',
      -    '\u01C4': 'DZ',
      -    '\u01F2': 'Dz',
      -    '\u01C5': 'Dz',
      -    '\u24BA': 'E',
      -    '\uFF25': 'E',
      -    '\u00C8': 'E',
      -    '\u00C9': 'E',
      -    '\u00CA': 'E',
      -    '\u1EC0': 'E',
      -    '\u1EBE': 'E',
      -    '\u1EC4': 'E',
      -    '\u1EC2': 'E',
      -    '\u1EBC': 'E',
      -    '\u0112': 'E',
      -    '\u1E14': 'E',
      -    '\u1E16': 'E',
      -    '\u0114': 'E',
      -    '\u0116': 'E',
      -    '\u00CB': 'E',
      -    '\u1EBA': 'E',
      -    '\u011A': 'E',
      -    '\u0204': 'E',
      -    '\u0206': 'E',
      -    '\u1EB8': 'E',
      -    '\u1EC6': 'E',
      -    '\u0228': 'E',
      -    '\u1E1C': 'E',
      -    '\u0118': 'E',
      -    '\u1E18': 'E',
      -    '\u1E1A': 'E',
      -    '\u0190': 'E',
      -    '\u018E': 'E',
      -    '\u24BB': 'F',
      -    '\uFF26': 'F',
      -    '\u1E1E': 'F',
      -    '\u0191': 'F',
      -    '\uA77B': 'F',
      -    '\u24BC': 'G',
      -    '\uFF27': 'G',
      -    '\u01F4': 'G',
      -    '\u011C': 'G',
      -    '\u1E20': 'G',
      -    '\u011E': 'G',
      -    '\u0120': 'G',
      -    '\u01E6': 'G',
      -    '\u0122': 'G',
      -    '\u01E4': 'G',
      -    '\u0193': 'G',
      -    '\uA7A0': 'G',
      -    '\uA77D': 'G',
      -    '\uA77E': 'G',
      -    '\u24BD': 'H',
      -    '\uFF28': 'H',
      -    '\u0124': 'H',
      -    '\u1E22': 'H',
      -    '\u1E26': 'H',
      -    '\u021E': 'H',
      -    '\u1E24': 'H',
      -    '\u1E28': 'H',
      -    '\u1E2A': 'H',
      -    '\u0126': 'H',
      -    '\u2C67': 'H',
      -    '\u2C75': 'H',
      -    '\uA78D': 'H',
      -    '\u24BE': 'I',
      -    '\uFF29': 'I',
      -    '\u00CC': 'I',
      -    '\u00CD': 'I',
      -    '\u00CE': 'I',
      -    '\u0128': 'I',
      -    '\u012A': 'I',
      -    '\u012C': 'I',
      -    '\u0130': 'I',
      -    '\u00CF': 'I',
      -    '\u1E2E': 'I',
      -    '\u1EC8': 'I',
      -    '\u01CF': 'I',
      -    '\u0208': 'I',
      -    '\u020A': 'I',
      -    '\u1ECA': 'I',
      -    '\u012E': 'I',
      -    '\u1E2C': 'I',
      -    '\u0197': 'I',
      -    '\u24BF': 'J',
      -    '\uFF2A': 'J',
      -    '\u0134': 'J',
      -    '\u0248': 'J',
      -    '\u24C0': 'K',
      -    '\uFF2B': 'K',
      -    '\u1E30': 'K',
      -    '\u01E8': 'K',
      -    '\u1E32': 'K',
      -    '\u0136': 'K',
      -    '\u1E34': 'K',
      -    '\u0198': 'K',
      -    '\u2C69': 'K',
      -    '\uA740': 'K',
      -    '\uA742': 'K',
      -    '\uA744': 'K',
      -    '\uA7A2': 'K',
      -    '\u24C1': 'L',
      -    '\uFF2C': 'L',
      -    '\u013F': 'L',
      -    '\u0139': 'L',
      -    '\u013D': 'L',
      -    '\u1E36': 'L',
      -    '\u1E38': 'L',
      -    '\u013B': 'L',
      -    '\u1E3C': 'L',
      -    '\u1E3A': 'L',
      -    '\u0141': 'L',
      -    '\u023D': 'L',
      -    '\u2C62': 'L',
      -    '\u2C60': 'L',
      -    '\uA748': 'L',
      -    '\uA746': 'L',
      -    '\uA780': 'L',
      -    '\u01C7': 'LJ',
      -    '\u01C8': 'Lj',
      -    '\u24C2': 'M',
      -    '\uFF2D': 'M',
      -    '\u1E3E': 'M',
      -    '\u1E40': 'M',
      -    '\u1E42': 'M',
      -    '\u2C6E': 'M',
      -    '\u019C': 'M',
      -    '\u24C3': 'N',
      -    '\uFF2E': 'N',
      -    '\u01F8': 'N',
      -    '\u0143': 'N',
      -    '\u00D1': 'N',
      -    '\u1E44': 'N',
      -    '\u0147': 'N',
      -    '\u1E46': 'N',
      -    '\u0145': 'N',
      -    '\u1E4A': 'N',
      -    '\u1E48': 'N',
      -    '\u0220': 'N',
      -    '\u019D': 'N',
      -    '\uA790': 'N',
      -    '\uA7A4': 'N',
      -    '\u01CA': 'NJ',
      -    '\u01CB': 'Nj',
      -    '\u24C4': 'O',
      -    '\uFF2F': 'O',
      -    '\u00D2': 'O',
      -    '\u00D3': 'O',
      -    '\u00D4': 'O',
      -    '\u1ED2': 'O',
      -    '\u1ED0': 'O',
      -    '\u1ED6': 'O',
      -    '\u1ED4': 'O',
      -    '\u00D5': 'O',
      -    '\u1E4C': 'O',
      -    '\u022C': 'O',
      -    '\u1E4E': 'O',
      -    '\u014C': 'O',
      -    '\u1E50': 'O',
      -    '\u1E52': 'O',
      -    '\u014E': 'O',
      -    '\u022E': 'O',
      -    '\u0230': 'O',
      -    '\u00D6': 'O',
      -    '\u022A': 'O',
      -    '\u1ECE': 'O',
      -    '\u0150': 'O',
      -    '\u01D1': 'O',
      -    '\u020C': 'O',
      -    '\u020E': 'O',
      -    '\u01A0': 'O',
      -    '\u1EDC': 'O',
      -    '\u1EDA': 'O',
      -    '\u1EE0': 'O',
      -    '\u1EDE': 'O',
      -    '\u1EE2': 'O',
      -    '\u1ECC': 'O',
      -    '\u1ED8': 'O',
      -    '\u01EA': 'O',
      -    '\u01EC': 'O',
      -    '\u00D8': 'O',
      -    '\u01FE': 'O',
      -    '\u0186': 'O',
      -    '\u019F': 'O',
      -    '\uA74A': 'O',
      -    '\uA74C': 'O',
      -    '\u01A2': 'OI',
      -    '\uA74E': 'OO',
      -    '\u0222': 'OU',
      -    '\u24C5': 'P',
      -    '\uFF30': 'P',
      -    '\u1E54': 'P',
      -    '\u1E56': 'P',
      -    '\u01A4': 'P',
      -    '\u2C63': 'P',
      -    '\uA750': 'P',
      -    '\uA752': 'P',
      -    '\uA754': 'P',
      -    '\u24C6': 'Q',
      -    '\uFF31': 'Q',
      -    '\uA756': 'Q',
      -    '\uA758': 'Q',
      -    '\u024A': 'Q',
      -    '\u24C7': 'R',
      -    '\uFF32': 'R',
      -    '\u0154': 'R',
      -    '\u1E58': 'R',
      -    '\u0158': 'R',
      -    '\u0210': 'R',
      -    '\u0212': 'R',
      -    '\u1E5A': 'R',
      -    '\u1E5C': 'R',
      -    '\u0156': 'R',
      -    '\u1E5E': 'R',
      -    '\u024C': 'R',
      -    '\u2C64': 'R',
      -    '\uA75A': 'R',
      -    '\uA7A6': 'R',
      -    '\uA782': 'R',
      -    '\u24C8': 'S',
      -    '\uFF33': 'S',
      -    '\u1E9E': 'S',
      -    '\u015A': 'S',
      -    '\u1E64': 'S',
      -    '\u015C': 'S',
      -    '\u1E60': 'S',
      -    '\u0160': 'S',
      -    '\u1E66': 'S',
      -    '\u1E62': 'S',
      -    '\u1E68': 'S',
      -    '\u0218': 'S',
      -    '\u015E': 'S',
      -    '\u2C7E': 'S',
      -    '\uA7A8': 'S',
      -    '\uA784': 'S',
      -    '\u24C9': 'T',
      -    '\uFF34': 'T',
      -    '\u1E6A': 'T',
      -    '\u0164': 'T',
      -    '\u1E6C': 'T',
      -    '\u021A': 'T',
      -    '\u0162': 'T',
      -    '\u1E70': 'T',
      -    '\u1E6E': 'T',
      -    '\u0166': 'T',
      -    '\u01AC': 'T',
      -    '\u01AE': 'T',
      -    '\u023E': 'T',
      -    '\uA786': 'T',
      -    '\uA728': 'TZ',
      -    '\u24CA': 'U',
      -    '\uFF35': 'U',
      -    '\u00D9': 'U',
      -    '\u00DA': 'U',
      -    '\u00DB': 'U',
      -    '\u0168': 'U',
      -    '\u1E78': 'U',
      -    '\u016A': 'U',
      -    '\u1E7A': 'U',
      -    '\u016C': 'U',
      -    '\u00DC': 'U',
      -    '\u01DB': 'U',
      -    '\u01D7': 'U',
      -    '\u01D5': 'U',
      -    '\u01D9': 'U',
      -    '\u1EE6': 'U',
      -    '\u016E': 'U',
      -    '\u0170': 'U',
      -    '\u01D3': 'U',
      -    '\u0214': 'U',
      -    '\u0216': 'U',
      -    '\u01AF': 'U',
      -    '\u1EEA': 'U',
      -    '\u1EE8': 'U',
      -    '\u1EEE': 'U',
      -    '\u1EEC': 'U',
      -    '\u1EF0': 'U',
      -    '\u1EE4': 'U',
      -    '\u1E72': 'U',
      -    '\u0172': 'U',
      -    '\u1E76': 'U',
      -    '\u1E74': 'U',
      -    '\u0244': 'U',
      -    '\u24CB': 'V',
      -    '\uFF36': 'V',
      -    '\u1E7C': 'V',
      -    '\u1E7E': 'V',
      -    '\u01B2': 'V',
      -    '\uA75E': 'V',
      -    '\u0245': 'V',
      -    '\uA760': 'VY',
      -    '\u24CC': 'W',
      -    '\uFF37': 'W',
      -    '\u1E80': 'W',
      -    '\u1E82': 'W',
      -    '\u0174': 'W',
      -    '\u1E86': 'W',
      -    '\u1E84': 'W',
      -    '\u1E88': 'W',
      -    '\u2C72': 'W',
      -    '\u24CD': 'X',
      -    '\uFF38': 'X',
      -    '\u1E8A': 'X',
      -    '\u1E8C': 'X',
      -    '\u24CE': 'Y',
      -    '\uFF39': 'Y',
      -    '\u1EF2': 'Y',
      -    '\u00DD': 'Y',
      -    '\u0176': 'Y',
      -    '\u1EF8': 'Y',
      -    '\u0232': 'Y',
      -    '\u1E8E': 'Y',
      -    '\u0178': 'Y',
      -    '\u1EF6': 'Y',
      -    '\u1EF4': 'Y',
      -    '\u01B3': 'Y',
      -    '\u024E': 'Y',
      -    '\u1EFE': 'Y',
      -    '\u24CF': 'Z',
      -    '\uFF3A': 'Z',
      -    '\u0179': 'Z',
      -    '\u1E90': 'Z',
      -    '\u017B': 'Z',
      -    '\u017D': 'Z',
      -    '\u1E92': 'Z',
      -    '\u1E94': 'Z',
      -    '\u01B5': 'Z',
      -    '\u0224': 'Z',
      -    '\u2C7F': 'Z',
      -    '\u2C6B': 'Z',
      -    '\uA762': 'Z',
      -    '\u24D0': 'a',
      -    '\uFF41': 'a',
      -    '\u1E9A': 'a',
      -    '\u00E0': 'a',
      -    '\u00E1': 'a',
      -    '\u00E2': 'a',
      -    '\u1EA7': 'a',
      -    '\u1EA5': 'a',
      -    '\u1EAB': 'a',
      -    '\u1EA9': 'a',
      -    '\u00E3': 'a',
      -    '\u0101': 'a',
      -    '\u0103': 'a',
      -    '\u1EB1': 'a',
      -    '\u1EAF': 'a',
      -    '\u1EB5': 'a',
      -    '\u1EB3': 'a',
      -    '\u0227': 'a',
      -    '\u01E1': 'a',
      -    '\u00E4': 'a',
      -    '\u01DF': 'a',
      -    '\u1EA3': 'a',
      -    '\u00E5': 'a',
      -    '\u01FB': 'a',
      -    '\u01CE': 'a',
      -    '\u0201': 'a',
      -    '\u0203': 'a',
      -    '\u1EA1': 'a',
      -    '\u1EAD': 'a',
      -    '\u1EB7': 'a',
      -    '\u1E01': 'a',
      -    '\u0105': 'a',
      -    '\u2C65': 'a',
      -    '\u0250': 'a',
      -    '\uA733': 'aa',
      -    '\u00E6': 'ae',
      -    '\u01FD': 'ae',
      -    '\u01E3': 'ae',
      -    '\uA735': 'ao',
      -    '\uA737': 'au',
      -    '\uA739': 'av',
      -    '\uA73B': 'av',
      -    '\uA73D': 'ay',
      -    '\u24D1': 'b',
      -    '\uFF42': 'b',
      -    '\u1E03': 'b',
      -    '\u1E05': 'b',
      -    '\u1E07': 'b',
      -    '\u0180': 'b',
      -    '\u0183': 'b',
      -    '\u0253': 'b',
      -    '\u24D2': 'c',
      -    '\uFF43': 'c',
      -    '\u0107': 'c',
      -    '\u0109': 'c',
      -    '\u010B': 'c',
      -    '\u010D': 'c',
      -    '\u00E7': 'c',
      -    '\u1E09': 'c',
      -    '\u0188': 'c',
      -    '\u023C': 'c',
      -    '\uA73F': 'c',
      -    '\u2184': 'c',
      -    '\u24D3': 'd',
      -    '\uFF44': 'd',
      -    '\u1E0B': 'd',
      -    '\u010F': 'd',
      -    '\u1E0D': 'd',
      -    '\u1E11': 'd',
      -    '\u1E13': 'd',
      -    '\u1E0F': 'd',
      -    '\u0111': 'd',
      -    '\u018C': 'd',
      -    '\u0256': 'd',
      -    '\u0257': 'd',
      -    '\uA77A': 'd',
      -    '\u01F3': 'dz',
      -    '\u01C6': 'dz',
      -    '\u24D4': 'e',
      -    '\uFF45': 'e',
      -    '\u00E8': 'e',
      -    '\u00E9': 'e',
      -    '\u00EA': 'e',
      -    '\u1EC1': 'e',
      -    '\u1EBF': 'e',
      -    '\u1EC5': 'e',
      -    '\u1EC3': 'e',
      -    '\u1EBD': 'e',
      -    '\u0113': 'e',
      -    '\u1E15': 'e',
      -    '\u1E17': 'e',
      -    '\u0115': 'e',
      -    '\u0117': 'e',
      -    '\u00EB': 'e',
      -    '\u1EBB': 'e',
      -    '\u011B': 'e',
      -    '\u0205': 'e',
      -    '\u0207': 'e',
      -    '\u1EB9': 'e',
      -    '\u1EC7': 'e',
      -    '\u0229': 'e',
      -    '\u1E1D': 'e',
      -    '\u0119': 'e',
      -    '\u1E19': 'e',
      -    '\u1E1B': 'e',
      -    '\u0247': 'e',
      -    '\u025B': 'e',
      -    '\u01DD': 'e',
      -    '\u24D5': 'f',
      -    '\uFF46': 'f',
      -    '\u1E1F': 'f',
      -    '\u0192': 'f',
      -    '\uA77C': 'f',
      -    '\u24D6': 'g',
      -    '\uFF47': 'g',
      -    '\u01F5': 'g',
      -    '\u011D': 'g',
      -    '\u1E21': 'g',
      -    '\u011F': 'g',
      -    '\u0121': 'g',
      -    '\u01E7': 'g',
      -    '\u0123': 'g',
      -    '\u01E5': 'g',
      -    '\u0260': 'g',
      -    '\uA7A1': 'g',
      -    '\u1D79': 'g',
      -    '\uA77F': 'g',
      -    '\u24D7': 'h',
      -    '\uFF48': 'h',
      -    '\u0125': 'h',
      -    '\u1E23': 'h',
      -    '\u1E27': 'h',
      -    '\u021F': 'h',
      -    '\u1E25': 'h',
      -    '\u1E29': 'h',
      -    '\u1E2B': 'h',
      -    '\u1E96': 'h',
      -    '\u0127': 'h',
      -    '\u2C68': 'h',
      -    '\u2C76': 'h',
      -    '\u0265': 'h',
      -    '\u0195': 'hv',
      -    '\u24D8': 'i',
      -    '\uFF49': 'i',
      -    '\u00EC': 'i',
      -    '\u00ED': 'i',
      -    '\u00EE': 'i',
      -    '\u0129': 'i',
      -    '\u012B': 'i',
      -    '\u012D': 'i',
      -    '\u00EF': 'i',
      -    '\u1E2F': 'i',
      -    '\u1EC9': 'i',
      -    '\u01D0': 'i',
      -    '\u0209': 'i',
      -    '\u020B': 'i',
      -    '\u1ECB': 'i',
      -    '\u012F': 'i',
      -    '\u1E2D': 'i',
      -    '\u0268': 'i',
      -    '\u0131': 'i',
      -    '\u24D9': 'j',
      -    '\uFF4A': 'j',
      -    '\u0135': 'j',
      -    '\u01F0': 'j',
      -    '\u0249': 'j',
      -    '\u24DA': 'k',
      -    '\uFF4B': 'k',
      -    '\u1E31': 'k',
      -    '\u01E9': 'k',
      -    '\u1E33': 'k',
      -    '\u0137': 'k',
      -    '\u1E35': 'k',
      -    '\u0199': 'k',
      -    '\u2C6A': 'k',
      -    '\uA741': 'k',
      -    '\uA743': 'k',
      -    '\uA745': 'k',
      -    '\uA7A3': 'k',
      -    '\u24DB': 'l',
      -    '\uFF4C': 'l',
      -    '\u0140': 'l',
      -    '\u013A': 'l',
      -    '\u013E': 'l',
      -    '\u1E37': 'l',
      -    '\u1E39': 'l',
      -    '\u013C': 'l',
      -    '\u1E3D': 'l',
      -    '\u1E3B': 'l',
      -    '\u017F': 'l',
      -    '\u0142': 'l',
      -    '\u019A': 'l',
      -    '\u026B': 'l',
      -    '\u2C61': 'l',
      -    '\uA749': 'l',
      -    '\uA781': 'l',
      -    '\uA747': 'l',
      -    '\u01C9': 'lj',
      -    '\u24DC': 'm',
      -    '\uFF4D': 'm',
      -    '\u1E3F': 'm',
      -    '\u1E41': 'm',
      -    '\u1E43': 'm',
      -    '\u0271': 'm',
      -    '\u026F': 'm',
      -    '\u24DD': 'n',
      -    '\uFF4E': 'n',
      -    '\u01F9': 'n',
      -    '\u0144': 'n',
      -    '\u00F1': 'n',
      -    '\u1E45': 'n',
      -    '\u0148': 'n',
      -    '\u1E47': 'n',
      -    '\u0146': 'n',
      -    '\u1E4B': 'n',
      -    '\u1E49': 'n',
      -    '\u019E': 'n',
      -    '\u0272': 'n',
      -    '\u0149': 'n',
      -    '\uA791': 'n',
      -    '\uA7A5': 'n',
      -    '\u01CC': 'nj',
      -    '\u24DE': 'o',
      -    '\uFF4F': 'o',
      -    '\u00F2': 'o',
      -    '\u00F3': 'o',
      -    '\u00F4': 'o',
      -    '\u1ED3': 'o',
      -    '\u1ED1': 'o',
      -    '\u1ED7': 'o',
      -    '\u1ED5': 'o',
      -    '\u00F5': 'o',
      -    '\u1E4D': 'o',
      -    '\u022D': 'o',
      -    '\u1E4F': 'o',
      -    '\u014D': 'o',
      -    '\u1E51': 'o',
      -    '\u1E53': 'o',
      -    '\u014F': 'o',
      -    '\u022F': 'o',
      -    '\u0231': 'o',
      -    '\u00F6': 'o',
      -    '\u022B': 'o',
      -    '\u1ECF': 'o',
      -    '\u0151': 'o',
      -    '\u01D2': 'o',
      -    '\u020D': 'o',
      -    '\u020F': 'o',
      -    '\u01A1': 'o',
      -    '\u1EDD': 'o',
      -    '\u1EDB': 'o',
      -    '\u1EE1': 'o',
      -    '\u1EDF': 'o',
      -    '\u1EE3': 'o',
      -    '\u1ECD': 'o',
      -    '\u1ED9': 'o',
      -    '\u01EB': 'o',
      -    '\u01ED': 'o',
      -    '\u00F8': 'o',
      -    '\u01FF': 'o',
      -    '\u0254': 'o',
      -    '\uA74B': 'o',
      -    '\uA74D': 'o',
      -    '\u0275': 'o',
      -    '\u01A3': 'oi',
      -    '\u0223': 'ou',
      -    '\uA74F': 'oo',
      -    '\u24DF': 'p',
      -    '\uFF50': 'p',
      -    '\u1E55': 'p',
      -    '\u1E57': 'p',
      -    '\u01A5': 'p',
      -    '\u1D7D': 'p',
      -    '\uA751': 'p',
      -    '\uA753': 'p',
      -    '\uA755': 'p',
      -    '\u24E0': 'q',
      -    '\uFF51': 'q',
      -    '\u024B': 'q',
      -    '\uA757': 'q',
      -    '\uA759': 'q',
      -    '\u24E1': 'r',
      -    '\uFF52': 'r',
      -    '\u0155': 'r',
      -    '\u1E59': 'r',
      -    '\u0159': 'r',
      -    '\u0211': 'r',
      -    '\u0213': 'r',
      -    '\u1E5B': 'r',
      -    '\u1E5D': 'r',
      -    '\u0157': 'r',
      -    '\u1E5F': 'r',
      -    '\u024D': 'r',
      -    '\u027D': 'r',
      -    '\uA75B': 'r',
      -    '\uA7A7': 'r',
      -    '\uA783': 'r',
      -    '\u24E2': 's',
      -    '\uFF53': 's',
      -    '\u00DF': 's',
      -    '\u015B': 's',
      -    '\u1E65': 's',
      -    '\u015D': 's',
      -    '\u1E61': 's',
      -    '\u0161': 's',
      -    '\u1E67': 's',
      -    '\u1E63': 's',
      -    '\u1E69': 's',
      -    '\u0219': 's',
      -    '\u015F': 's',
      -    '\u023F': 's',
      -    '\uA7A9': 's',
      -    '\uA785': 's',
      -    '\u1E9B': 's',
      -    '\u24E3': 't',
      -    '\uFF54': 't',
      -    '\u1E6B': 't',
      -    '\u1E97': 't',
      -    '\u0165': 't',
      -    '\u1E6D': 't',
      -    '\u021B': 't',
      -    '\u0163': 't',
      -    '\u1E71': 't',
      -    '\u1E6F': 't',
      -    '\u0167': 't',
      -    '\u01AD': 't',
      -    '\u0288': 't',
      -    '\u2C66': 't',
      -    '\uA787': 't',
      -    '\uA729': 'tz',
      -    '\u24E4': 'u',
      -    '\uFF55': 'u',
      -    '\u00F9': 'u',
      -    '\u00FA': 'u',
      -    '\u00FB': 'u',
      -    '\u0169': 'u',
      -    '\u1E79': 'u',
      -    '\u016B': 'u',
      -    '\u1E7B': 'u',
      -    '\u016D': 'u',
      -    '\u00FC': 'u',
      -    '\u01DC': 'u',
      -    '\u01D8': 'u',
      -    '\u01D6': 'u',
      -    '\u01DA': 'u',
      -    '\u1EE7': 'u',
      -    '\u016F': 'u',
      -    '\u0171': 'u',
      -    '\u01D4': 'u',
      -    '\u0215': 'u',
      -    '\u0217': 'u',
      -    '\u01B0': 'u',
      -    '\u1EEB': 'u',
      -    '\u1EE9': 'u',
      -    '\u1EEF': 'u',
      -    '\u1EED': 'u',
      -    '\u1EF1': 'u',
      -    '\u1EE5': 'u',
      -    '\u1E73': 'u',
      -    '\u0173': 'u',
      -    '\u1E77': 'u',
      -    '\u1E75': 'u',
      -    '\u0289': 'u',
      -    '\u24E5': 'v',
      -    '\uFF56': 'v',
      -    '\u1E7D': 'v',
      -    '\u1E7F': 'v',
      -    '\u028B': 'v',
      -    '\uA75F': 'v',
      -    '\u028C': 'v',
      -    '\uA761': 'vy',
      -    '\u24E6': 'w',
      -    '\uFF57': 'w',
      -    '\u1E81': 'w',
      -    '\u1E83': 'w',
      -    '\u0175': 'w',
      -    '\u1E87': 'w',
      -    '\u1E85': 'w',
      -    '\u1E98': 'w',
      -    '\u1E89': 'w',
      -    '\u2C73': 'w',
      -    '\u24E7': 'x',
      -    '\uFF58': 'x',
      -    '\u1E8B': 'x',
      -    '\u1E8D': 'x',
      -    '\u24E8': 'y',
      -    '\uFF59': 'y',
      -    '\u1EF3': 'y',
      -    '\u00FD': 'y',
      -    '\u0177': 'y',
      -    '\u1EF9': 'y',
      -    '\u0233': 'y',
      -    '\u1E8F': 'y',
      -    '\u00FF': 'y',
      -    '\u1EF7': 'y',
      -    '\u1E99': 'y',
      -    '\u1EF5': 'y',
      -    '\u01B4': 'y',
      -    '\u024F': 'y',
      -    '\u1EFF': 'y',
      -    '\u24E9': 'z',
      -    '\uFF5A': 'z',
      -    '\u017A': 'z',
      -    '\u1E91': 'z',
      -    '\u017C': 'z',
      -    '\u017E': 'z',
      -    '\u1E93': 'z',
      -    '\u1E95': 'z',
      -    '\u01B6': 'z',
      -    '\u0225': 'z',
      -    '\u0240': 'z',
      -    '\u2C6C': 'z',
      -    '\uA763': 'z',
      -    '\u0386': '\u0391',
      -    '\u0388': '\u0395',
      -    '\u0389': '\u0397',
      -    '\u038A': '\u0399',
      -    '\u03AA': '\u0399',
      -    '\u038C': '\u039F',
      -    '\u038E': '\u03A5',
      -    '\u03AB': '\u03A5',
      -    '\u038F': '\u03A9',
      -    '\u03AC': '\u03B1',
      -    '\u03AD': '\u03B5',
      -    '\u03AE': '\u03B7',
      -    '\u03AF': '\u03B9',
      -    '\u03CA': '\u03B9',
      -    '\u0390': '\u03B9',
      -    '\u03CC': '\u03BF',
      -    '\u03CD': '\u03C5',
      -    '\u03CB': '\u03C5',
      -    '\u03B0': '\u03C5',
      -    '\u03C9': '\u03C9',
      -    '\u03C2': '\u03C3'
      -  };
      -
      -  return diacritics;
      -});
      -
      -S2.define('select2/data/base',[
      -  '../utils'
      -], function (Utils) {
      -  function BaseAdapter ($element, options) {
      -    BaseAdapter.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(BaseAdapter, Utils.Observable);
      -
      -  BaseAdapter.prototype.current = function (callback) {
      -    throw new Error('The `current` method must be defined in child classes.');
      -  };
      -
      -  BaseAdapter.prototype.query = function (params, callback) {
      -    throw new Error('The `query` method must be defined in child classes.');
      -  };
      -
      -  BaseAdapter.prototype.bind = function (container, $container) {
      -    // Can be implemented in subclasses
      -  };
      -
      -  BaseAdapter.prototype.destroy = function () {
      -    // Can be implemented in subclasses
      -  };
      -
      -  BaseAdapter.prototype.generateResultId = function (container, data) {
      -    var id = container.id + '-result-';
      -
      -    id += Utils.generateChars(4);
      -
      -    if (data.id != null) {
      -      id += '-' + data.id.toString();
      -    } else {
      -      id += '-' + Utils.generateChars(4);
      -    }
      -    return id;
      -  };
      -
      -  return BaseAdapter;
      -});
      -
      -S2.define('select2/data/select',[
      -  './base',
      -  '../utils',
      -  'jquery'
      -], function (BaseAdapter, Utils, $) {
      -  function SelectAdapter ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    SelectAdapter.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(SelectAdapter, BaseAdapter);
      -
      -  SelectAdapter.prototype.current = function (callback) {
      -    var data = [];
      -    var self = this;
      -
      -    this.$element.find(':selected').each(function () {
      -      var $option = $(this);
      -
      -      var option = self.item($option);
      -
      -      data.push(option);
      -    });
      -
      -    callback(data);
      -  };
      -
      -  SelectAdapter.prototype.select = function (data) {
      -    var self = this;
      -
      -    data.selected = true;
      -
      -    // If data.element is a DOM node, use it instead
      -    if ($(data.element).is('option')) {
      -      data.element.selected = true;
      -
      -      this.$element.trigger('change');
      -
      -      return;
      -    }
      -
      -    if (this.$element.prop('multiple')) {
      -      this.current(function (currentData) {
      -        var val = [];
      -
      -        data = [data];
      -        data.push.apply(data, currentData);
      -
      -        for (var d = 0; d < data.length; d++) {
      -          var id = data[d].id;
      -
      -          if ($.inArray(id, val) === -1) {
      -            val.push(id);
      -          }
      -        }
      -
      -        self.$element.val(val);
      -        self.$element.trigger('change');
      -      });
      -    } else {
      -      var val = data.id;
      -
      -      this.$element.val(val);
      -      this.$element.trigger('change');
      -    }
      -  };
      -
      -  SelectAdapter.prototype.unselect = function (data) {
      -    var self = this;
      -
      -    if (!this.$element.prop('multiple')) {
      -      return;
      -    }
      -
      -    data.selected = false;
      -
      -    if ($(data.element).is('option')) {
      -      data.element.selected = false;
      -
      -      this.$element.trigger('change');
      -
      -      return;
      -    }
      -
      -    this.current(function (currentData) {
      -      var val = [];
      -
      -      for (var d = 0; d < currentData.length; d++) {
      -        var id = currentData[d].id;
      -
      -        if (id !== data.id && $.inArray(id, val) === -1) {
      -          val.push(id);
      -        }
      -      }
      -
      -      self.$element.val(val);
      -
      -      self.$element.trigger('change');
      -    });
      -  };
      -
      -  SelectAdapter.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    this.container = container;
      -
      -    container.on('select', function (params) {
      -      self.select(params.data);
      -    });
      -
      -    container.on('unselect', function (params) {
      -      self.unselect(params.data);
      -    });
      -  };
      -
      -  SelectAdapter.prototype.destroy = function () {
      -    // Remove anything added to child elements
      -    this.$element.find('*').each(function () {
      -      // Remove any custom data set by Select2
      -      $.removeData(this, 'data');
      -    });
      -  };
      -
      -  SelectAdapter.prototype.query = function (params, callback) {
      -    var data = [];
      -    var self = this;
      -
      -    var $options = this.$element.children();
      -
      -    $options.each(function () {
      -      var $option = $(this);
      -
      -      if (!$option.is('option') && !$option.is('optgroup')) {
      -        return;
      -      }
      -
      -      var option = self.item($option);
      -
      -      var matches = self.matches(params, option);
      -
      -      if (matches !== null) {
      -        data.push(matches);
      -      }
      -    });
      -
      -    callback({
      -      results: data
      -    });
      -  };
      -
      -  SelectAdapter.prototype.addOptions = function ($options) {
      -    Utils.appendMany(this.$element, $options);
      -  };
      -
      -  SelectAdapter.prototype.option = function (data) {
      -    var option;
      -
      -    if (data.children) {
      -      option = document.createElement('optgroup');
      -      option.label = data.text;
      -    } else {
      -      option = document.createElement('option');
      -
      -      if (option.textContent !== undefined) {
      -        option.textContent = data.text;
      -      } else {
      -        option.innerText = data.text;
      -      }
      -    }
      -
      -    if (data.id) {
      -      option.value = data.id;
      -    }
      -
      -    if (data.disabled) {
      -      option.disabled = true;
      -    }
      -
      -    if (data.selected) {
      -      option.selected = true;
      -    }
      -
      -    if (data.title) {
      -      option.title = data.title;
      -    }
      -
      -    var $option = $(option);
      -
      -    var normalizedData = this._normalizeItem(data);
      -    normalizedData.element = option;
      -
      -    // Override the option's data with the combined data
      -    $.data(option, 'data', normalizedData);
      -
      -    return $option;
      -  };
      -
      -  SelectAdapter.prototype.item = function ($option) {
      -    var data = {};
      -
      -    data = $.data($option[0], 'data');
      -
      -    if (data != null) {
      -      return data;
      -    }
      -
      -    if ($option.is('option')) {
      -      data = {
      -        id: $option.val(),
      -        text: $option.text(),
      -        disabled: $option.prop('disabled'),
      -        selected: $option.prop('selected'),
      -        title: $option.prop('title')
      -      };
      -    } else if ($option.is('optgroup')) {
      -      data = {
      -        text: $option.prop('label'),
      -        children: [],
      -        title: $option.prop('title')
      -      };
      -
      -      var $children = $option.children('option');
      -      var children = [];
      -
      -      for (var c = 0; c < $children.length; c++) {
      -        var $child = $($children[c]);
      -
      -        var child = this.item($child);
      -
      -        children.push(child);
      -      }
      -
      -      data.children = children;
      -    }
      -
      -    data = this._normalizeItem(data);
      -    data.element = $option[0];
      -
      -    $.data($option[0], 'data', data);
      -
      -    return data;
      -  };
      -
      -  SelectAdapter.prototype._normalizeItem = function (item) {
      -    if (!$.isPlainObject(item)) {
      -      item = {
      -        id: item,
      -        text: item
      -      };
      -    }
      -
      -    item = $.extend({}, {
      -      text: ''
      -    }, item);
      -
      -    var defaults = {
      -      selected: false,
      -      disabled: false
      -    };
      -
      -    if (item.id != null) {
      -      item.id = item.id.toString();
      -    }
      -
      -    if (item.text != null) {
      -      item.text = item.text.toString();
      -    }
      -
      -    if (item._resultId == null && item.id && this.container != null) {
      -      item._resultId = this.generateResultId(this.container, item);
      -    }
      -
      -    return $.extend({}, defaults, item);
      -  };
      -
      -  SelectAdapter.prototype.matches = function (params, data) {
      -    var matcher = this.options.get('matcher');
      -
      -    return matcher(params, data);
      -  };
      -
      -  return SelectAdapter;
      -});
      -
      -S2.define('select2/data/array',[
      -  './select',
      -  '../utils',
      -  'jquery'
      -], function (SelectAdapter, Utils, $) {
      -  function ArrayAdapter ($element, options) {
      -    var data = options.get('data') || [];
      -
      -    ArrayAdapter.__super__.constructor.call(this, $element, options);
      -
      -    this.addOptions(this.convertToOptions(data));
      -  }
      -
      -  Utils.Extend(ArrayAdapter, SelectAdapter);
      -
      -  ArrayAdapter.prototype.select = function (data) {
      -    var $option = this.$element.find('option').filter(function (i, elm) {
      -      return elm.value == data.id.toString();
      -    });
      -
      -    if ($option.length === 0) {
      -      $option = this.option(data);
      -
      -      this.addOptions($option);
      -    }
      -
      -    ArrayAdapter.__super__.select.call(this, data);
      -  };
      -
      -  ArrayAdapter.prototype.convertToOptions = function (data) {
      -    var self = this;
      -
      -    var $existing = this.$element.find('option');
      -    var existingIds = $existing.map(function () {
      -      return self.item($(this)).id;
      -    }).get();
      -
      -    var $options = [];
      -
      -    // Filter out all items except for the one passed in the argument
      -    function onlyItem (item) {
      -      return function () {
      -        return $(this).val() == item.id;
      -      };
      -    }
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var item = this._normalizeItem(data[d]);
      -
      -      // Skip items which were pre-loaded, only merge the data
      -      if ($.inArray(item.id, existingIds) >= 0) {
      -        var $existingOption = $existing.filter(onlyItem(item));
      -
      -        var existingData = this.item($existingOption);
      -        var newData = $.extend(true, {}, item, existingData);
      -
      -        var $newOption = this.option(newData);
      -
      -        $existingOption.replaceWith($newOption);
      -
      -        continue;
      -      }
      -
      -      var $option = this.option(item);
      -
      -      if (item.children) {
      -        var $children = this.convertToOptions(item.children);
      -
      -        Utils.appendMany($option, $children);
      -      }
      -
      -      $options.push($option);
      -    }
      -
      -    return $options;
      -  };
      -
      -  return ArrayAdapter;
      -});
      -
      -S2.define('select2/data/ajax',[
      -  './array',
      -  '../utils',
      -  'jquery'
      -], function (ArrayAdapter, Utils, $) {
      -  function AjaxAdapter ($element, options) {
      -    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
      -
      -    if (this.ajaxOptions.processResults != null) {
      -      this.processResults = this.ajaxOptions.processResults;
      -    }
      -
      -    AjaxAdapter.__super__.constructor.call(this, $element, options);
      -  }
      -
      -  Utils.Extend(AjaxAdapter, ArrayAdapter);
      -
      -  AjaxAdapter.prototype._applyDefaults = function (options) {
      -    var defaults = {
      -      data: function (params) {
      -        return $.extend({}, params, {
      -          q: params.term
      -        });
      -      },
      -      transport: function (params, success, failure) {
      -        var $request = $.ajax(params);
      -
      -        $request.then(success);
      -        $request.fail(failure);
      -
      -        return $request;
      -      }
      -    };
      -
      -    return $.extend({}, defaults, options, true);
      -  };
      -
      -  AjaxAdapter.prototype.processResults = function (results) {
      -    return results;
      -  };
      -
      -  AjaxAdapter.prototype.query = function (params, callback) {
      -    var matches = [];
      -    var self = this;
      -
      -    if (this._request != null) {
      -      // JSONP requests cannot always be aborted
      -      if ($.isFunction(this._request.abort)) {
      -        this._request.abort();
      -      }
      -
      -      this._request = null;
      -    }
      -
      -    var options = $.extend({
      -      type: 'GET'
      -    }, this.ajaxOptions);
      -
      -    if (typeof options.url === 'function') {
      -      options.url = options.url.call(this.$element, params);
      -    }
      -
      -    if (typeof options.data === 'function') {
      -      options.data = options.data.call(this.$element, params);
      -    }
      -
      -    function request () {
      -      var $request = options.transport(options, function (data) {
      -        var results = self.processResults(data, params);
      -
      -        if (self.options.get('debug') && window.console && console.error) {
      -          // Check to make sure that the response included a `results` key.
      -          if (!results || !results.results || !$.isArray(results.results)) {
      -            console.error(
      -              'Select2: The AJAX results did not return an array in the ' +
      -              '`results` key of the response.'
      -            );
      -          }
      -        }
      -
      -        callback(results);
      -      }, function () {
      -        // Attempt to detect if a request was aborted
      -        // Only works if the transport exposes a status property
      -        if ($request.status && $request.status === '0') {
      -          return;
      -        }
      -
      -        self.trigger('results:message', {
      -          message: 'errorLoading'
      -        });
      -      });
      -
      -      self._request = $request;
      -    }
      -
      -    if (this.ajaxOptions.delay && params.term != null) {
      -      if (this._queryTimeout) {
      -        window.clearTimeout(this._queryTimeout);
      -      }
      -
      -      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
      -    } else {
      -      request();
      -    }
      -  };
      -
      -  return AjaxAdapter;
      -});
      -
      -S2.define('select2/data/tags',[
      -  'jquery'
      -], function ($) {
      -  function Tags (decorated, $element, options) {
      -    var tags = options.get('tags');
      -
      -    var createTag = options.get('createTag');
      -
      -    if (createTag !== undefined) {
      -      this.createTag = createTag;
      -    }
      -
      -    var insertTag = options.get('insertTag');
      -
      -    if (insertTag !== undefined) {
      -        this.insertTag = insertTag;
      -    }
      -
      -    decorated.call(this, $element, options);
      -
      -    if ($.isArray(tags)) {
      -      for (var t = 0; t < tags.length; t++) {
      -        var tag = tags[t];
      -        var item = this._normalizeItem(tag);
      -
      -        var $option = this.option(item);
      -
      -        this.$element.append($option);
      -      }
      -    }
      -  }
      -
      -  Tags.prototype.query = function (decorated, params, callback) {
      -    var self = this;
      -
      -    this._removeOldTags();
      -
      -    if (params.term == null || params.page != null) {
      -      decorated.call(this, params, callback);
      -      return;
      -    }
      -
      -    function wrapper (obj, child) {
      -      var data = obj.results;
      -
      -      for (var i = 0; i < data.length; i++) {
      -        var option = data[i];
      -
      -        var checkChildren = (
      -          option.children != null &&
      -          !wrapper({
      -            results: option.children
      -          }, true)
      -        );
      -
      -        var checkText = option.text === params.term;
      -
      -        if (checkText || checkChildren) {
      -          if (child) {
      -            return false;
      -          }
      -
      -          obj.data = data;
      -          callback(obj);
      -
      -          return;
      -        }
      -      }
      -
      -      if (child) {
      -        return true;
      -      }
      -
      -      var tag = self.createTag(params);
      -
      -      if (tag != null) {
      -        var $option = self.option(tag);
      -        $option.attr('data-select2-tag', true);
      -
      -        self.addOptions([$option]);
      -
      -        self.insertTag(data, tag);
      -      }
      -
      -      obj.results = data;
      -
      -      callback(obj);
      -    }
      -
      -    decorated.call(this, params, wrapper);
      -  };
      -
      -  Tags.prototype.createTag = function (decorated, params) {
      -    var term = $.trim(params.term);
      -
      -    if (term === '') {
      -      return null;
      -    }
      -
      -    return {
      -      id: term,
      -      text: term
      -    };
      -  };
      -
      -  Tags.prototype.insertTag = function (_, data, tag) {
      -    data.unshift(tag);
      -  };
      -
      -  Tags.prototype._removeOldTags = function (_) {
      -    var tag = this._lastTag;
      -
      -    var $options = this.$element.find('option[data-select2-tag]');
      -
      -    $options.each(function () {
      -      if (this.selected) {
      -        return;
      -      }
      -
      -      $(this).remove();
      -    });
      -  };
      -
      -  return Tags;
      -});
      -
      -S2.define('select2/data/tokenizer',[
      -  'jquery'
      -], function ($) {
      -  function Tokenizer (decorated, $element, options) {
      -    var tokenizer = options.get('tokenizer');
      -
      -    if (tokenizer !== undefined) {
      -      this.tokenizer = tokenizer;
      -    }
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Tokenizer.prototype.bind = function (decorated, container, $container) {
      -    decorated.call(this, container, $container);
      -
      -    this.$search =  container.dropdown.$search || container.selection.$search ||
      -      $container.find('.select2-search__field');
      -  };
      -
      -  Tokenizer.prototype.query = function (decorated, params, callback) {
      -    var self = this;
      -
      -    function createAndSelect (data) {
      -      // Normalize the data object so we can use it for checks
      -      var item = self._normalizeItem(data);
      -
      -      // Check if the data object already exists as a tag
      -      // Select it if it doesn't
      -      var $existingOptions = self.$element.find('option').filter(function () {
      -        return $(this).val() === item.id;
      -      });
      -
      -      // If an existing option wasn't found for it, create the option
      -      if (!$existingOptions.length) {
      -        var $option = self.option(item);
      -        $option.attr('data-select2-tag', true);
      -
      -        self._removeOldTags();
      -        self.addOptions([$option]);
      -      }
      -
      -      // Select the item, now that we know there is an option for it
      -      select(item);
      -    }
      -
      -    function select (data) {
      -      self.trigger('select', {
      -        data: data
      -      });
      -    }
      -
      -    params.term = params.term || '';
      -
      -    var tokenData = this.tokenizer(params, this.options, createAndSelect);
      -
      -    if (tokenData.term !== params.term) {
      -      // Replace the search term if we have the search box
      -      if (this.$search.length) {
      -        this.$search.val(tokenData.term);
      -        this.$search.focus();
      -      }
      -
      -      params.term = tokenData.term;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
      -    var separators = options.get('tokenSeparators') || [];
      -    var term = params.term;
      -    var i = 0;
      -
      -    var createTag = this.createTag || function (params) {
      -      return {
      -        id: params.term,
      -        text: params.term
      -      };
      -    };
      -
      -    while (i < term.length) {
      -      var termChar = term[i];
      -
      -      if ($.inArray(termChar, separators) === -1) {
      -        i++;
      -
      -        continue;
      -      }
      -
      -      var part = term.substr(0, i);
      -      var partParams = $.extend({}, params, {
      -        term: part
      -      });
      -
      -      var data = createTag(partParams);
      -
      -      if (data == null) {
      -        i++;
      -        continue;
      -      }
      -
      -      callback(data);
      -
      -      // Reset the term to not include the tokenized portion
      -      term = term.substr(i + 1) || '';
      -      i = 0;
      -    }
      -
      -    return {
      -      term: term
      -    };
      -  };
      -
      -  return Tokenizer;
      -});
      -
      -S2.define('select2/data/minimumInputLength',[
      -
      -], function () {
      -  function MinimumInputLength (decorated, $e, options) {
      -    this.minimumInputLength = options.get('minimumInputLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MinimumInputLength.prototype.query = function (decorated, params, callback) {
      -    params.term = params.term || '';
      -
      -    if (params.term.length < this.minimumInputLength) {
      -      this.trigger('results:message', {
      -        message: 'inputTooShort',
      -        args: {
      -          minimum: this.minimumInputLength,
      -          input: params.term,
      -          params: params
      -        }
      -      });
      -
      -      return;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  return MinimumInputLength;
      -});
      -
      -S2.define('select2/data/maximumInputLength',[
      -
      -], function () {
      -  function MaximumInputLength (decorated, $e, options) {
      -    this.maximumInputLength = options.get('maximumInputLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MaximumInputLength.prototype.query = function (decorated, params, callback) {
      -    params.term = params.term || '';
      -
      -    if (this.maximumInputLength > 0 &&
      -        params.term.length > this.maximumInputLength) {
      -      this.trigger('results:message', {
      -        message: 'inputTooLong',
      -        args: {
      -          maximum: this.maximumInputLength,
      -          input: params.term,
      -          params: params
      -        }
      -      });
      -
      -      return;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  return MaximumInputLength;
      -});
      -
      -S2.define('select2/data/maximumSelectionLength',[
      -
      -], function (){
      -  function MaximumSelectionLength (decorated, $e, options) {
      -    this.maximumSelectionLength = options.get('maximumSelectionLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MaximumSelectionLength.prototype.query =
      -    function (decorated, params, callback) {
      -      var self = this;
      -
      -      this.current(function (currentData) {
      -        var count = currentData != null ? currentData.length : 0;
      -        if (self.maximumSelectionLength > 0 &&
      -          count >= self.maximumSelectionLength) {
      -          self.trigger('results:message', {
      -            message: 'maximumSelected',
      -            args: {
      -              maximum: self.maximumSelectionLength
      -            }
      -          });
      -          return;
      -        }
      -        decorated.call(self, params, callback);
      -      });
      -  };
      -
      -  return MaximumSelectionLength;
      -});
      -
      -S2.define('select2/dropdown',[
      -  'jquery',
      -  './utils'
      -], function ($, Utils) {
      -  function Dropdown ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    Dropdown.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(Dropdown, Utils.Observable);
      -
      -  Dropdown.prototype.render = function () {
      -    var $dropdown = $(
      -      '<span class="select2-dropdown">' +
      -        '<span class="select2-results"></span>' +
      -      '</span>'
      -    );
      -
      -    $dropdown.attr('dir', this.options.get('dir'));
      -
      -    this.$dropdown = $dropdown;
      -
      -    return $dropdown;
      -  };
      -
      -  Dropdown.prototype.bind = function () {
      -    // Should be implemented in subclasses
      -  };
      -
      -  Dropdown.prototype.position = function ($dropdown, $container) {
      -    // Should be implmented in subclasses
      -  };
      -
      -  Dropdown.prototype.destroy = function () {
      -    // Remove the dropdown from the DOM
      -    this.$dropdown.remove();
      -  };
      -
      -  return Dropdown;
      -});
      -
      -S2.define('select2/dropdown/search',[
      -  'jquery',
      -  '../utils'
      -], function ($, Utils) {
      -  function Search () { }
      -
      -  Search.prototype.render = function (decorated) {
      -    var $rendered = decorated.call(this);
      -
      -    var $search = $(
      -      '<span class="select2-search select2-search--dropdown">' +
      -        '<input class="select2-search__field" type="search" tabindex="-1"' +
      -        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
      -        ' spellcheck="false" role="textbox" />' +
      -      '</span>'
      -    );
      -
      -    this.$searchContainer = $search;
      -    this.$search = $search.find('input');
      -
      -    $rendered.prepend($search);
      -
      -    return $rendered;
      -  };
      -
      -  Search.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    this.$search.on('keydown', function (evt) {
      -      self.trigger('keypress', evt);
      -
      -      self._keyUpPrevented = evt.isDefaultPrevented();
      -    });
      -
      -    // Workaround for browsers which do not support the `input` event
      -    // This will prevent double-triggering of events for browsers which support
      -    // both the `keyup` and `input` events.
      -    this.$search.on('input', function (evt) {
      -      // Unbind the duplicated `keyup` event
      -      $(this).off('keyup');
      -    });
      -
      -    this.$search.on('keyup input', function (evt) {
      -      self.handleSearch(evt);
      -    });
      -
      -    container.on('open', function () {
      -      self.$search.attr('tabindex', 0);
      -
      -      self.$search.focus();
      -
      -      window.setTimeout(function () {
      -        self.$search.focus();
      -      }, 0);
      -    });
      -
      -    container.on('close', function () {
      -      self.$search.attr('tabindex', -1);
      -
      -      self.$search.val('');
      -    });
      -
      -    container.on('focus', function () {
      -      if (container.isOpen()) {
      -        self.$search.focus();
      -      }
      -    });
      -
      -    container.on('results:all', function (params) {
      -      if (params.query.term == null || params.query.term === '') {
      -        var showSearch = self.showSearch(params);
      -
      -        if (showSearch) {
      -          self.$searchContainer.removeClass('select2-search--hide');
      -        } else {
      -          self.$searchContainer.addClass('select2-search--hide');
      -        }
      -      }
      -    });
      -  };
      -
      -  Search.prototype.handleSearch = function (evt) {
      -    if (!this._keyUpPrevented) {
      -      var input = this.$search.val();
      -
      -      this.trigger('query', {
      -        term: input
      -      });
      -    }
      -
      -    this._keyUpPrevented = false;
      -  };
      -
      -  Search.prototype.showSearch = function (_, params) {
      -    return true;
      -  };
      -
      -  return Search;
      -});
      -
      -S2.define('select2/dropdown/hidePlaceholder',[
      -
      -], function () {
      -  function HidePlaceholder (decorated, $element, options, dataAdapter) {
      -    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -  }
      -
      -  HidePlaceholder.prototype.append = function (decorated, data) {
      -    data.results = this.removePlaceholder(data.results);
      -
      -    decorated.call(this, data);
      -  };
      -
      -  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
      -    if (typeof placeholder === 'string') {
      -      placeholder = {
      -        id: '',
      -        text: placeholder
      -      };
      -    }
      -
      -    return placeholder;
      -  };
      -
      -  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
      -    var modifiedData = data.slice(0);
      -
      -    for (var d = data.length - 1; d >= 0; d--) {
      -      var item = data[d];
      -
      -      if (this.placeholder.id === item.id) {
      -        modifiedData.splice(d, 1);
      -      }
      -    }
      -
      -    return modifiedData;
      -  };
      -
      -  return HidePlaceholder;
      -});
      -
      -S2.define('select2/dropdown/infiniteScroll',[
      -  'jquery'
      -], function ($) {
      -  function InfiniteScroll (decorated, $element, options, dataAdapter) {
      -    this.lastParams = {};
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -
      -    this.$loadingMore = this.createLoadingMore();
      -    this.loading = false;
      -  }
      -
      -  InfiniteScroll.prototype.append = function (decorated, data) {
      -    this.$loadingMore.remove();
      -    this.loading = false;
      -
      -    decorated.call(this, data);
      -
      -    if (this.showLoadingMore(data)) {
      -      this.$results.append(this.$loadingMore);
      -    }
      -  };
      -
      -  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('query', function (params) {
      -      self.lastParams = params;
      -      self.loading = true;
      -    });
      -
      -    container.on('query:append', function (params) {
      -      self.lastParams = params;
      -      self.loading = true;
      -    });
      -
      -    this.$results.on('scroll', function () {
      -      var isLoadMoreVisible = $.contains(
      -        document.documentElement,
      -        self.$loadingMore[0]
      -      );
      -
      -      if (self.loading || !isLoadMoreVisible) {
      -        return;
      -      }
      -
      -      var currentOffset = self.$results.offset().top +
      -        self.$results.outerHeight(false);
      -      var loadingMoreOffset = self.$loadingMore.offset().top +
      -        self.$loadingMore.outerHeight(false);
      -
      -      if (currentOffset + 50 >= loadingMoreOffset) {
      -        self.loadMore();
      -      }
      -    });
      -  };
      -
      -  InfiniteScroll.prototype.loadMore = function () {
      -    this.loading = true;
      -
      -    var params = $.extend({}, {page: 1}, this.lastParams);
      -
      -    params.page++;
      -
      -    this.trigger('query:append', params);
      -  };
      -
      -  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
      -    return data.pagination && data.pagination.more;
      -  };
      -
      -  InfiniteScroll.prototype.createLoadingMore = function () {
      -    var $option = $(
      -      '<li ' +
      -      'class="select2-results__option select2-results__option--load-more"' +
      -      'role="treeitem" aria-disabled="true"></li>'
      -    );
      -
      -    var message = this.options.get('translations').get('loadingMore');
      -
      -    $option.html(message(this.lastParams));
      -
      -    return $option;
      -  };
      -
      -  return InfiniteScroll;
      -});
      -
      -S2.define('select2/dropdown/attachBody',[
      -  'jquery',
      -  '../utils'
      -], function ($, Utils) {
      -  function AttachBody (decorated, $element, options) {
      -    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  AttachBody.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    var setupResultsEvents = false;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('open', function () {
      -      self._showDropdown();
      -      self._attachPositioningHandler(container);
      -
      -      if (!setupResultsEvents) {
      -        setupResultsEvents = true;
      -
      -        container.on('results:all', function () {
      -          self._positionDropdown();
      -          self._resizeDropdown();
      -        });
      -
      -        container.on('results:append', function () {
      -          self._positionDropdown();
      -          self._resizeDropdown();
      -        });
      -      }
      -    });
      -
      -    container.on('close', function () {
      -      self._hideDropdown();
      -      self._detachPositioningHandler(container);
      -    });
      -
      -    this.$dropdownContainer.on('mousedown', function (evt) {
      -      evt.stopPropagation();
      -    });
      -  };
      -
      -  AttachBody.prototype.destroy = function (decorated) {
      -    decorated.call(this);
      -
      -    this.$dropdownContainer.remove();
      -  };
      -
      -  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
      -    // Clone all of the container classes
      -    $dropdown.attr('class', $container.attr('class'));
      -
      -    $dropdown.removeClass('select2');
      -    $dropdown.addClass('select2-container--open');
      -
      -    $dropdown.css({
      -      position: 'absolute',
      -      top: -999999
      -    });
      -
      -    this.$container = $container;
      -  };
      -
      -  AttachBody.prototype.render = function (decorated) {
      -    var $container = $('<span></span>');
      -
      -    var $dropdown = decorated.call(this);
      -    $container.append($dropdown);
      -
      -    this.$dropdownContainer = $container;
      -
      -    return $container;
      -  };
      -
      -  AttachBody.prototype._hideDropdown = function (decorated) {
      -    this.$dropdownContainer.detach();
      -  };
      -
      -  AttachBody.prototype._attachPositioningHandler =
      -      function (decorated, container) {
      -    var self = this;
      -
      -    var scrollEvent = 'scroll.select2.' + container.id;
      -    var resizeEvent = 'resize.select2.' + container.id;
      -    var orientationEvent = 'orientationchange.select2.' + container.id;
      -
      -    var $watchers = this.$container.parents().filter(Utils.hasScroll);
      -    $watchers.each(function () {
      -      $(this).data('select2-scroll-position', {
      -        x: $(this).scrollLeft(),
      -        y: $(this).scrollTop()
      -      });
      -    });
      -
      -    $watchers.on(scrollEvent, function (ev) {
      -      var position = $(this).data('select2-scroll-position');
      -      $(this).scrollTop(position.y);
      -    });
      -
      -    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
      -      function (e) {
      -      self._positionDropdown();
      -      self._resizeDropdown();
      -    });
      -  };
      -
      -  AttachBody.prototype._detachPositioningHandler =
      -      function (decorated, container) {
      -    var scrollEvent = 'scroll.select2.' + container.id;
      -    var resizeEvent = 'resize.select2.' + container.id;
      -    var orientationEvent = 'orientationchange.select2.' + container.id;
      -
      -    var $watchers = this.$container.parents().filter(Utils.hasScroll);
      -    $watchers.off(scrollEvent);
      -
      -    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
      -  };
      -
      -  AttachBody.prototype._positionDropdown = function () {
      -    var $window = $(window);
      -
      -    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
      -    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
      -
      -    var newDirection = null;
      -
      -    var offset = this.$container.offset();
      -
      -    offset.bottom = offset.top + this.$container.outerHeight(false);
      -
      -    var container = {
      -      height: this.$container.outerHeight(false)
      -    };
      -
      -    container.top = offset.top;
      -    container.bottom = offset.top + container.height;
      -
      -    var dropdown = {
      -      height: this.$dropdown.outerHeight(false)
      -    };
      -
      -    var viewport = {
      -      top: $window.scrollTop(),
      -      bottom: $window.scrollTop() + $window.height()
      -    };
      -
      -    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
      -    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
      -
      -    var css = {
      -      left: offset.left,
      -      top: container.bottom
      -    };
      -
      -    // Determine what the parent element is to use for calciulating the offset
      -    var $offsetParent = this.$dropdownParent;
      -
      -    // For statically positoned elements, we need to get the element
      -    // that is determining the offset
      -    if ($offsetParent.css('position') === 'static') {
      -      $offsetParent = $offsetParent.offsetParent();
      -    }
      -
      -    var parentOffset = $offsetParent.offset();
      -
      -    css.top -= parentOffset.top;
      -    css.left -= parentOffset.left;
      -
      -    if (!isCurrentlyAbove && !isCurrentlyBelow) {
      -      newDirection = 'below';
      -    }
      -
      -    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
      -      newDirection = 'above';
      -    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
      -      newDirection = 'below';
      -    }
      -
      -    if (newDirection == 'above' ||
      -      (isCurrentlyAbove && newDirection !== 'below')) {
      -      css.top = container.top - parentOffset.top - dropdown.height;
      -    }
      -
      -    if (newDirection != null) {
      -      this.$dropdown
      -        .removeClass('select2-dropdown--below select2-dropdown--above')
      -        .addClass('select2-dropdown--' + newDirection);
      -      this.$container
      -        .removeClass('select2-container--below select2-container--above')
      -        .addClass('select2-container--' + newDirection);
      -    }
      -
      -    this.$dropdownContainer.css(css);
      -  };
      -
      -  AttachBody.prototype._resizeDropdown = function () {
      -    var css = {
      -      width: this.$container.outerWidth(false) + 'px'
      -    };
      -
      -    if (this.options.get('dropdownAutoWidth')) {
      -      css.minWidth = css.width;
      -      css.position = 'relative';
      -      css.width = 'auto';
      -    }
      -
      -    this.$dropdown.css(css);
      -  };
      -
      -  AttachBody.prototype._showDropdown = function (decorated) {
      -    this.$dropdownContainer.appendTo(this.$dropdownParent);
      -
      -    this._positionDropdown();
      -    this._resizeDropdown();
      -  };
      -
      -  return AttachBody;
      -});
      -
      -S2.define('select2/dropdown/minimumResultsForSearch',[
      -
      -], function () {
      -  function countResults (data) {
      -    var count = 0;
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var item = data[d];
      -
      -      if (item.children) {
      -        count += countResults(item.children);
      -      } else {
      -        count++;
      -      }
      -    }
      -
      -    return count;
      -  }
      -
      -  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
      -    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
      -
      -    if (this.minimumResultsForSearch < 0) {
      -      this.minimumResultsForSearch = Infinity;
      -    }
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -  }
      -
      -  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
      -    if (countResults(params.data.results) < this.minimumResultsForSearch) {
      -      return false;
      -    }
      -
      -    return decorated.call(this, params);
      -  };
      -
      -  return MinimumResultsForSearch;
      -});
      -
      -S2.define('select2/dropdown/selectOnClose',[
      -
      -], function () {
      -  function SelectOnClose () { }
      -
      -  SelectOnClose.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('close', function (params) {
      -      self._handleSelectOnClose(params);
      -    });
      -  };
      -
      -  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
      -    if (params && params.originalSelect2Event != null) {
      -      var event = params.originalSelect2Event;
      -
      -      // Don't select an item if the close event was triggered from a select or
      -      // unselect event
      -      if (event._type === 'select' || event._type === 'unselect') {
      -        return;
      -      }
      -    }
      -
      -    var $highlightedResults = this.getHighlightedResults();
      -
      -    // Only select highlighted results
      -    if ($highlightedResults.length < 1) {
      -      return;
      -    }
      -
      -    var data = $highlightedResults.data('data');
      -
      -    // Don't re-select already selected resulte
      -    if (
      -      (data.element != null && data.element.selected) ||
      -      (data.element == null && data.selected)
      -    ) {
      -      return;
      -    }
      -
      -    this.trigger('select', {
      -        data: data
      -    });
      -  };
      -
      -  return SelectOnClose;
      -});
      -
      -S2.define('select2/dropdown/closeOnSelect',[
      -
      -], function () {
      -  function CloseOnSelect () { }
      -
      -  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('select', function (evt) {
      -      self._selectTriggered(evt);
      -    });
      -
      -    container.on('unselect', function (evt) {
      -      self._selectTriggered(evt);
      -    });
      -  };
      -
      -  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
      -    var originalEvent = evt.originalEvent;
      -
      -    // Don't close if the control key is being held
      -    if (originalEvent && originalEvent.ctrlKey) {
      -      return;
      -    }
      -
      -    this.trigger('close', {
      -      originalEvent: originalEvent,
      -      originalSelect2Event: evt
      -    });
      -  };
      -
      -  return CloseOnSelect;
      -});
      -
      -S2.define('select2/i18n/en',[],function () {
      -  // English
      -  return {
      -    errorLoading: function () {
      -      return 'The results could not be loaded.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Please delete ' + overChars + ' character';
      -
      -      if (overChars != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Please enter ' + remainingChars + ' or more characters';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Loading more results…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'You can only select ' + args.maximum + ' item';
      -
      -      if (args.maximum != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'No results found';
      -    },
      -    searching: function () {
      -      return 'Searching…';
      -    }
      -  };
      -});
      -
      -S2.define('select2/defaults',[
      -  'jquery',
      -  'require',
      -
      -  './results',
      -
      -  './selection/single',
      -  './selection/multiple',
      -  './selection/placeholder',
      -  './selection/allowClear',
      -  './selection/search',
      -  './selection/eventRelay',
      -
      -  './utils',
      -  './translation',
      -  './diacritics',
      -
      -  './data/select',
      -  './data/array',
      -  './data/ajax',
      -  './data/tags',
      -  './data/tokenizer',
      -  './data/minimumInputLength',
      -  './data/maximumInputLength',
      -  './data/maximumSelectionLength',
      -
      -  './dropdown',
      -  './dropdown/search',
      -  './dropdown/hidePlaceholder',
      -  './dropdown/infiniteScroll',
      -  './dropdown/attachBody',
      -  './dropdown/minimumResultsForSearch',
      -  './dropdown/selectOnClose',
      -  './dropdown/closeOnSelect',
      -
      -  './i18n/en'
      -], function ($, require,
      -
      -             ResultsList,
      -
      -             SingleSelection, MultipleSelection, Placeholder, AllowClear,
      -             SelectionSearch, EventRelay,
      -
      -             Utils, Translation, DIACRITICS,
      -
      -             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
      -             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
      -
      -             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
      -             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
      -
      -             EnglishTranslation) {
      -  function Defaults () {
      -    this.reset();
      -  }
      -
      -  Defaults.prototype.apply = function (options) {
      -    options = $.extend(true, {}, this.defaults, options);
      -
      -    if (options.dataAdapter == null) {
      -      if (options.ajax != null) {
      -        options.dataAdapter = AjaxData;
      -      } else if (options.data != null) {
      -        options.dataAdapter = ArrayData;
      -      } else {
      -        options.dataAdapter = SelectData;
      -      }
      -
      -      if (options.minimumInputLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MinimumInputLength
      -        );
      -      }
      -
      -      if (options.maximumInputLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MaximumInputLength
      -        );
      -      }
      -
      -      if (options.maximumSelectionLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MaximumSelectionLength
      -        );
      -      }
      -
      -      if (options.tags) {
      -        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
      -      }
      -
      -      if (options.tokenSeparators != null || options.tokenizer != null) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          Tokenizer
      -        );
      -      }
      -
      -      if (options.query != null) {
      -        var Query = require(options.amdBase + 'compat/query');
      -
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          Query
      -        );
      -      }
      -
      -      if (options.initSelection != null) {
      -        var InitSelection = require(options.amdBase + 'compat/initSelection');
      -
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          InitSelection
      -        );
      -      }
      -    }
      -
      -    if (options.resultsAdapter == null) {
      -      options.resultsAdapter = ResultsList;
      -
      -      if (options.ajax != null) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          InfiniteScroll
      -        );
      -      }
      -
      -      if (options.placeholder != null) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          HidePlaceholder
      -        );
      -      }
      -
      -      if (options.selectOnClose) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          SelectOnClose
      -        );
      -      }
      -    }
      -
      -    if (options.dropdownAdapter == null) {
      -      if (options.multiple) {
      -        options.dropdownAdapter = Dropdown;
      -      } else {
      -        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
      -
      -        options.dropdownAdapter = SearchableDropdown;
      -      }
      -
      -      if (options.minimumResultsForSearch !== 0) {
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          MinimumResultsForSearch
      -        );
      -      }
      -
      -      if (options.closeOnSelect) {
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          CloseOnSelect
      -        );
      -      }
      -
      -      if (
      -        options.dropdownCssClass != null ||
      -        options.dropdownCss != null ||
      -        options.adaptDropdownCssClass != null
      -      ) {
      -        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
      -
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          DropdownCSS
      -        );
      -      }
      -
      -      options.dropdownAdapter = Utils.Decorate(
      -        options.dropdownAdapter,
      -        AttachBody
      -      );
      -    }
      -
      -    if (options.selectionAdapter == null) {
      -      if (options.multiple) {
      -        options.selectionAdapter = MultipleSelection;
      -      } else {
      -        options.selectionAdapter = SingleSelection;
      -      }
      -
      -      // Add the placeholder mixin if a placeholder was specified
      -      if (options.placeholder != null) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          Placeholder
      -        );
      -      }
      -
      -      if (options.allowClear) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          AllowClear
      -        );
      -      }
      -
      -      if (options.multiple) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          SelectionSearch
      -        );
      -      }
      -
      -      if (
      -        options.containerCssClass != null ||
      -        options.containerCss != null ||
      -        options.adaptContainerCssClass != null
      -      ) {
      -        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
      -
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          ContainerCSS
      -        );
      -      }
      -
      -      options.selectionAdapter = Utils.Decorate(
      -        options.selectionAdapter,
      -        EventRelay
      -      );
      -    }
      -
      -    if (typeof options.language === 'string') {
      -      // Check if the language is specified with a region
      -      if (options.language.indexOf('-') > 0) {
      -        // Extract the region information if it is included
      -        var languageParts = options.language.split('-');
      -        var baseLanguage = languageParts[0];
      -
      -        options.language = [options.language, baseLanguage];
      -      } else {
      -        options.language = [options.language];
      -      }
      -    }
      -
      -    if ($.isArray(options.language)) {
      -      var languages = new Translation();
      -      options.language.push('en');
      -
      -      var languageNames = options.language;
      -
      -      for (var l = 0; l < languageNames.length; l++) {
      -        var name = languageNames[l];
      -        var language = {};
      -
      -        try {
      -          // Try to load it with the original name
      -          language = Translation.loadPath(name);
      -        } catch (e) {
      -          try {
      -            // If we couldn't load it, check if it wasn't the full path
      -            name = this.defaults.amdLanguageBase + name;
      -            language = Translation.loadPath(name);
      -          } catch (ex) {
      -            // The translation could not be loaded at all. Sometimes this is
      -            // because of a configuration problem, other times this can be
      -            // because of how Select2 helps load all possible translation files.
      -            if (options.debug && window.console && console.warn) {
      -              console.warn(
      -                'Select2: The language file for "' + name + '" could not be ' +
      -                'automatically loaded. A fallback will be used instead.'
      -              );
      -            }
      -
      -            continue;
      -          }
      -        }
      -
      -        languages.extend(language);
      -      }
      -
      -      options.translations = languages;
      -    } else {
      -      var baseTranslation = Translation.loadPath(
      -        this.defaults.amdLanguageBase + 'en'
      -      );
      -      var customTranslation = new Translation(options.language);
      -
      -      customTranslation.extend(baseTranslation);
      -
      -      options.translations = customTranslation;
      -    }
      -
      -    return options;
      -  };
      -
      -  Defaults.prototype.reset = function () {
      -    function stripDiacritics (text) {
      -      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
      -      function match(a) {
      -        return DIACRITICS[a] || a;
      -      }
      -
      -      return text.replace(/[^\u0000-\u007E]/g, match);
      -    }
      -
      -    function matcher (params, data) {
      -      // Always return the object if there is nothing to compare
      -      if ($.trim(params.term) === '') {
      -        return data;
      -      }
      -
      -      // Do a recursive check for options with children
      -      if (data.children && data.children.length > 0) {
      -        // Clone the data object if there are children
      -        // This is required as we modify the object to remove any non-matches
      -        var match = $.extend(true, {}, data);
      -
      -        // Check each child of the option
      -        for (var c = data.children.length - 1; c >= 0; c--) {
      -          var child = data.children[c];
      -
      -          var matches = matcher(params, child);
      -
      -          // If there wasn't a match, remove the object in the array
      -          if (matches == null) {
      -            match.children.splice(c, 1);
      -          }
      -        }
      -
      -        // If any children matched, return the new object
      -        if (match.children.length > 0) {
      -          return match;
      -        }
      -
      -        // If there were no matching children, check just the plain object
      -        return matcher(params, match);
      -      }
      -
      -      var original = stripDiacritics(data.text).toUpperCase();
      -      var term = stripDiacritics(params.term).toUpperCase();
      -
      -      // Check if the text contains the term
      -      if (original.indexOf(term) > -1) {
      -        return data;
      -      }
      -
      -      // If it doesn't contain the term, don't return anything
      -      return null;
      -    }
      -
      -    this.defaults = {
      -      amdBase: './',
      -      amdLanguageBase: './i18n/',
      -      closeOnSelect: true,
      -      debug: false,
      -      dropdownAutoWidth: false,
      -      escapeMarkup: Utils.escapeMarkup,
      -      language: EnglishTranslation,
      -      matcher: matcher,
      -      minimumInputLength: 0,
      -      maximumInputLength: 0,
      -      maximumSelectionLength: 0,
      -      minimumResultsForSearch: 0,
      -      selectOnClose: false,
      -      sorter: function (data) {
      -        return data;
      -      },
      -      templateResult: function (result) {
      -        return result.text;
      -      },
      -      templateSelection: function (selection) {
      -        return selection.text;
      -      },
      -      theme: 'default',
      -      width: 'resolve'
      -    };
      -  };
      -
      -  Defaults.prototype.set = function (key, value) {
      -    var camelKey = $.camelCase(key);
      -
      -    var data = {};
      -    data[camelKey] = value;
      -
      -    var convertedData = Utils._convertData(data);
      -
      -    $.extend(this.defaults, convertedData);
      -  };
      -
      -  var defaults = new Defaults();
      -
      -  return defaults;
      -});
      -
      -S2.define('select2/options',[
      -  'require',
      -  'jquery',
      -  './defaults',
      -  './utils'
      -], function (require, $, Defaults, Utils) {
      -  function Options (options, $element) {
      -    this.options = options;
      -
      -    if ($element != null) {
      -      this.fromElement($element);
      -    }
      -
      -    this.options = Defaults.apply(this.options);
      -
      -    if ($element && $element.is('input')) {
      -      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
      -
      -      this.options.dataAdapter = Utils.Decorate(
      -        this.options.dataAdapter,
      -        InputCompat
      -      );
      -    }
      -  }
      -
      -  Options.prototype.fromElement = function ($e) {
      -    var excludedData = ['select2'];
      -
      -    if (this.options.multiple == null) {
      -      this.options.multiple = $e.prop('multiple');
      -    }
      -
      -    if (this.options.disabled == null) {
      -      this.options.disabled = $e.prop('disabled');
      -    }
      -
      -    if (this.options.language == null) {
      -      if ($e.prop('lang')) {
      -        this.options.language = $e.prop('lang').toLowerCase();
      -      } else if ($e.closest('[lang]').prop('lang')) {
      -        this.options.language = $e.closest('[lang]').prop('lang');
      -      }
      -    }
      -
      -    if (this.options.dir == null) {
      -      if ($e.prop('dir')) {
      -        this.options.dir = $e.prop('dir');
      -      } else if ($e.closest('[dir]').prop('dir')) {
      -        this.options.dir = $e.closest('[dir]').prop('dir');
      -      } else {
      -        this.options.dir = 'ltr';
      -      }
      -    }
      -
      -    $e.prop('disabled', this.options.disabled);
      -    $e.prop('multiple', this.options.multiple);
      -
      -    if ($e.data('select2Tags')) {
      -      if (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.'
      -        );
      -      }
      -
      -      $e.data('data', $e.data('select2Tags'));
      -      $e.data('tags', true);
      -    }
      -
      -    if ($e.data('ajaxUrl')) {
      -      if (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.'
      -        );
      -      }
      -
      -      $e.attr('ajax--url', $e.data('ajaxUrl'));
      -      $e.data('ajax--url', $e.data('ajaxUrl'));
      -    }
      -
      -    var dataset = {};
      -
      -    // Prefer the element's `dataset` attribute if it exists
      -    // jQuery 1.x does not correctly handle data attributes with multiple dashes
      -    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
      -      dataset = $.extend(true, {}, $e[0].dataset, $e.data());
      -    } else {
      -      dataset = $e.data();
      -    }
      -
      -    var data = $.extend(true, {}, dataset);
      -
      -    data = Utils._convertData(data);
      -
      -    for (var key in data) {
      -      if ($.inArray(key, excludedData) > -1) {
      -        continue;
      -      }
      -
      -      if ($.isPlainObject(this.options[key])) {
      -        $.extend(this.options[key], data[key]);
      -      } else {
      -        this.options[key] = data[key];
      -      }
      -    }
      -
      -    return this;
      -  };
      -
      -  Options.prototype.get = function (key) {
      -    return this.options[key];
      -  };
      -
      -  Options.prototype.set = function (key, val) {
      -    this.options[key] = val;
      -  };
      -
      -  return Options;
      -});
      -
      -S2.define('select2/core',[
      -  'jquery',
      -  './options',
      -  './utils',
      -  './keys'
      -], function ($, Options, Utils, KEYS) {
      -  var Select2 = function ($element, options) {
      -    if ($element.data('select2') != null) {
      -      $element.data('select2').destroy();
      -    }
      -
      -    this.$element = $element;
      -
      -    this.id = this._generateId($element);
      -
      -    options = options || {};
      -
      -    this.options = new Options(options, $element);
      -
      -    Select2.__super__.constructor.call(this);
      -
      -    // Set up the tabindex
      -
      -    var tabindex = $element.attr('tabindex') || 0;
      -    $element.data('old-tabindex', tabindex);
      -    $element.attr('tabindex', '-1');
      -
      -    // Set up containers and adapters
      -
      -    var DataAdapter = this.options.get('dataAdapter');
      -    this.dataAdapter = new DataAdapter($element, this.options);
      -
      -    var $container = this.render();
      -
      -    this._placeContainer($container);
      -
      -    var SelectionAdapter = this.options.get('selectionAdapter');
      -    this.selection = new SelectionAdapter($element, this.options);
      -    this.$selection = this.selection.render();
      -
      -    this.selection.position(this.$selection, $container);
      -
      -    var DropdownAdapter = this.options.get('dropdownAdapter');
      -    this.dropdown = new DropdownAdapter($element, this.options);
      -    this.$dropdown = this.dropdown.render();
      -
      -    this.dropdown.position(this.$dropdown, $container);
      -
      -    var ResultsAdapter = this.options.get('resultsAdapter');
      -    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
      -    this.$results = this.results.render();
      -
      -    this.results.position(this.$results, this.$dropdown);
      -
      -    // Bind events
      -
      -    var self = this;
      -
      -    // Bind the container to all of the adapters
      -    this._bindAdapters();
      -
      -    // Register any DOM event handlers
      -    this._registerDomEvents();
      -
      -    // Register any internal event handlers
      -    this._registerDataEvents();
      -    this._registerSelectionEvents();
      -    this._registerDropdownEvents();
      -    this._registerResultsEvents();
      -    this._registerEvents();
      -
      -    // Set the initial state
      -    this.dataAdapter.current(function (initialData) {
      -      self.trigger('selection:update', {
      -        data: initialData
      -      });
      -    });
      -
      -    // Hide the original select
      -    $element.addClass('select2-hidden-accessible');
      -    $element.attr('aria-hidden', 'true');
      -
      -    // Synchronize any monitored attributes
      -    this._syncAttributes();
      -
      -    $element.data('select2', this);
      -  };
      -
      -  Utils.Extend(Select2, Utils.Observable);
      -
      -  Select2.prototype._generateId = function ($element) {
      -    var id = '';
      -
      -    if ($element.attr('id') != null) {
      -      id = $element.attr('id');
      -    } else if ($element.attr('name') != null) {
      -      id = $element.attr('name') + '-' + Utils.generateChars(2);
      -    } else {
      -      id = Utils.generateChars(4);
      -    }
      -
      -    id = id.replace(/(:|\.|\[|\]|,)/g, '');
      -    id = 'select2-' + id;
      -
      -    return id;
      -  };
      -
      -  Select2.prototype._placeContainer = function ($container) {
      -    $container.insertAfter(this.$element);
      -
      -    var width = this._resolveWidth(this.$element, this.options.get('width'));
      -
      -    if (width != null) {
      -      $container.css('width', width);
      -    }
      -  };
      -
      -  Select2.prototype._resolveWidth = function ($element, method) {
      -    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
      -
      -    if (method == 'resolve') {
      -      var styleWidth = this._resolveWidth($element, 'style');
      -
      -      if (styleWidth != null) {
      -        return styleWidth;
      -      }
      -
      -      return this._resolveWidth($element, 'element');
      -    }
      -
      -    if (method == 'element') {
      -      var elementWidth = $element.outerWidth(false);
      -
      -      if (elementWidth <= 0) {
      -        return 'auto';
      -      }
      -
      -      return elementWidth + 'px';
      -    }
      -
      -    if (method == 'style') {
      -      var style = $element.attr('style');
      -
      -      if (typeof(style) !== 'string') {
      -        return null;
      -      }
      -
      -      var attrs = style.split(';');
      -
      -      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
      -        var attr = attrs[i].replace(/\s/g, '');
      -        var matches = attr.match(WIDTH);
      -
      -        if (matches !== null && matches.length >= 1) {
      -          return matches[1];
      -        }
      -      }
      -
      -      return null;
      -    }
      -
      -    return method;
      -  };
      -
      -  Select2.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);
      -  };
      -
      -  Select2.prototype._registerDomEvents = function () {
      -    var self = this;
      -
      -    this.$element.on('change.select2', function () {
      -      self.dataAdapter.current(function (data) {
      -        self.trigger('selection:update', {
      -          data: data
      -        });
      -      });
      -    });
      -
      -    this.$element.on('focus.select2', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this._syncA = Utils.bind(this._syncAttributes, this);
      -    this._syncS = Utils.bind(this._syncSubtree, this);
      -
      -    if (this.$element[0].attachEvent) {
      -      this.$element[0].attachEvent('onpropertychange', this._syncA);
      -    }
      -
      -    var observer = window.MutationObserver ||
      -      window.WebKitMutationObserver ||
      -      window.MozMutationObserver
      -    ;
      -
      -    if (observer != null) {
      -      this._observer = new observer(function (mutations) {
      -        $.each(mutations, self._syncA);
      -        $.each(mutations, self._syncS);
      -      });
      -      this._observer.observe(this.$element[0], {
      -        attributes: true,
      -        childList: true,
      -        subtree: false
      -      });
      -    } else if (this.$element[0].addEventListener) {
      -      this.$element[0].addEventListener(
      -        'DOMAttrModified',
      -        self._syncA,
      -        false
      -      );
      -      this.$element[0].addEventListener(
      -        'DOMNodeInserted',
      -        self._syncS,
      -        false
      -      );
      -      this.$element[0].addEventListener(
      -        'DOMNodeRemoved',
      -        self._syncS,
      -        false
      -      );
      -    }
      -  };
      -
      -  Select2.prototype._registerDataEvents = function () {
      -    var self = this;
      -
      -    this.dataAdapter.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerSelectionEvents = function () {
      -    var self = this;
      -    var nonRelayEvents = ['toggle', 'focus'];
      -
      -    this.selection.on('toggle', function () {
      -      self.toggleDropdown();
      -    });
      -
      -    this.selection.on('focus', function (params) {
      -      self.focus(params);
      -    });
      -
      -    this.selection.on('*', function (name, params) {
      -      if ($.inArray(name, nonRelayEvents) !== -1) {
      -        return;
      -      }
      -
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerDropdownEvents = function () {
      -    var self = this;
      -
      -    this.dropdown.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerResultsEvents = function () {
      -    var self = this;
      -
      -    this.results.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerEvents = function () {
      -    var self = this;
      -
      -    this.on('open', function () {
      -      self.$container.addClass('select2-container--open');
      -    });
      -
      -    this.on('close', function () {
      -      self.$container.removeClass('select2-container--open');
      -    });
      -
      -    this.on('enable', function () {
      -      self.$container.removeClass('select2-container--disabled');
      -    });
      -
      -    this.on('disable', function () {
      -      self.$container.addClass('select2-container--disabled');
      -    });
      -
      -    this.on('blur', function () {
      -      self.$container.removeClass('select2-container--focus');
      -    });
      -
      -    this.on('query', function (params) {
      -      if (!self.isOpen()) {
      -        self.trigger('open', {});
      -      }
      -
      -      this.dataAdapter.query(params, function (data) {
      -        self.trigger('results:all', {
      -          data: data,
      -          query: params
      -        });
      -      });
      -    });
      -
      -    this.on('query:append', function (params) {
      -      this.dataAdapter.query(params, function (data) {
      -        self.trigger('results:append', {
      -          data: data,
      -          query: params
      -        });
      -      });
      -    });
      -
      -    this.on('keypress', function (evt) {
      -      var key = evt.which;
      -
      -      if (self.isOpen()) {
      -        if (key === KEYS.ESC || key === KEYS.TAB ||
      -            (key === KEYS.UP && evt.altKey)) {
      -          self.close();
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.ENTER) {
      -          self.trigger('results:select', {});
      -
      -          evt.preventDefault();
      -        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
      -          self.trigger('results:toggle', {});
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.UP) {
      -          self.trigger('results:previous', {});
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.DOWN) {
      -          self.trigger('results:next', {});
      -
      -          evt.preventDefault();
      -        }
      -      } else {
      -        if (key === KEYS.ENTER || key === KEYS.SPACE ||
      -            (key === KEYS.DOWN && evt.altKey)) {
      -          self.open();
      -
      -          evt.preventDefault();
      -        }
      -      }
      -    });
      -  };
      -
      -  Select2.prototype._syncAttributes = function () {
      -    this.options.set('disabled', this.$element.prop('disabled'));
      -
      -    if (this.options.get('disabled')) {
      -      if (this.isOpen()) {
      -        this.close();
      -      }
      -
      -      this.trigger('disable', {});
      -    } else {
      -      this.trigger('enable', {});
      -    }
      -  };
      -
      -  Select2.prototype._syncSubtree = function (evt, mutations) {
      -    var changed = false;
      -    var self = this;
      -
      -    // Ignore any mutation events raised for elements that aren't options or
      -    // optgroups. This handles the case when the select element is destroyed
      -    if (
      -      evt && evt.target && (
      -        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
      -      )
      -    ) {
      -      return;
      -    }
      -
      -    if (!mutations) {
      -      // If mutation events aren't supported, then we can only assume that the
      -      // change affected the selections
      -      changed = true;
      -    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
      -      for (var n = 0; n < mutations.addedNodes.length; n++) {
      -        var node = mutations.addedNodes[n];
      -
      -        if (node.selected) {
      -          changed = true;
      -        }
      -      }
      -    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
      -      changed = true;
      -    }
      -
      -    // Only re-pull the data if we think there is a change
      -    if (changed) {
      -      this.dataAdapter.current(function (currentData) {
      -        self.trigger('selection:update', {
      -          data: currentData
      -        });
      -      });
      -    }
      -  };
      -
      -  /**
      -   * Override the trigger method to automatically trigger pre-events when
      -   * there are events that can be prevented.
      -   */
      -  Select2.prototype.trigger = function (name, args) {
      -    var actualTrigger = Select2.__super__.trigger;
      -    var preTriggerMap = {
      -      'open': 'opening',
      -      'close': 'closing',
      -      'select': 'selecting',
      -      'unselect': 'unselecting'
      -    };
      -
      -    if (args === undefined) {
      -      args = {};
      -    }
      -
      -    if (name in preTriggerMap) {
      -      var preTriggerName = preTriggerMap[name];
      -      var preTriggerArgs = {
      -        prevented: false,
      -        name: name,
      -        args: args
      -      };
      -
      -      actualTrigger.call(this, preTriggerName, preTriggerArgs);
      -
      -      if (preTriggerArgs.prevented) {
      -        args.prevented = true;
      -
      -        return;
      -      }
      -    }
      -
      -    actualTrigger.call(this, name, args);
      -  };
      -
      -  Select2.prototype.toggleDropdown = function () {
      -    if (this.options.get('disabled')) {
      -      return;
      -    }
      -
      -    if (this.isOpen()) {
      -      this.close();
      -    } else {
      -      this.open();
      -    }
      -  };
      -
      -  Select2.prototype.open = function () {
      -    if (this.isOpen()) {
      -      return;
      -    }
      -
      -    this.trigger('query', {});
      -  };
      -
      -  Select2.prototype.close = function () {
      -    if (!this.isOpen()) {
      -      return;
      -    }
      -
      -    this.trigger('close', {});
      -  };
      -
      -  Select2.prototype.isOpen = function () {
      -    return this.$container.hasClass('select2-container--open');
      -  };
      -
      -  Select2.prototype.hasFocus = function () {
      -    return this.$container.hasClass('select2-container--focus');
      -  };
      -
      -  Select2.prototype.focus = function (data) {
      -    // No need to re-trigger focus events if we are already focused
      -    if (this.hasFocus()) {
      -      return;
      -    }
      -
      -    this.$container.addClass('select2-container--focus');
      -    this.trigger('focus', {});
      -  };
      -
      -  Select2.prototype.enable = function (args) {
      -    if (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.'
      -      );
      -    }
      -
      -    if (args == null || args.length === 0) {
      -      args = [true];
      -    }
      -
      -    var disabled = !args[0];
      -
      -    this.$element.prop('disabled', disabled);
      -  };
      -
      -  Select2.prototype.data = function () {
      -    if (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 data = [];
      -
      -    this.dataAdapter.current(function (currentData) {
      -      data = currentData;
      -    });
      -
      -    return data;
      -  };
      -
      -  Select2.prototype.val = function (args) {
      -    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.'
      -      );
      -    }
      -
      -    if (args == null || args.length === 0) {
      -      return this.$element.val();
      -    }
      -
      -    var newVal = args[0];
      -
      -    if ($.isArray(newVal)) {
      -      newVal = $.map(newVal, function (obj) {
      -        return obj.toString();
      -      });
      -    }
      -
      -    this.$element.val(newVal).trigger('change');
      -  };
      -
      -  Select2.prototype.destroy = function () {
      -    this.$container.remove();
      -
      -    if (this.$element[0].detachEvent) {
      -      this.$element[0].detachEvent('onpropertychange', this._syncA);
      -    }
      -
      -    if (this._observer != null) {
      -      this._observer.disconnect();
      -      this._observer = null;
      -    } else if (this.$element[0].removeEventListener) {
      -      this.$element[0]
      -        .removeEventListener('DOMAttrModified', this._syncA, false);
      -      this.$element[0]
      -        .removeEventListener('DOMNodeInserted', this._syncS, false);
      -      this.$element[0]
      -        .removeEventListener('DOMNodeRemoved', this._syncS, false);
      -    }
      -
      -    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;
      -  };
      -
      -  Select2.prototype.render = function () {
      -    var $container = $(
      -      '<span class="select2 select2-container">' +
      -        '<span class="selection"></span>' +
      -        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
      -      '</span>'
      -    );
      -
      -    $container.attr('dir', this.options.get('dir'));
      -
      -    this.$container = $container;
      -
      -    this.$container.addClass('select2-container--' + this.options.get('theme'));
      -
      -    $container.data('element', this.$element);
      -
      -    return $container;
      -  };
      -
      -  return Select2;
      -});
      -
      -S2.define('jquery-mousewheel',[
      -  'jquery'
      -], function ($) {
      -  // Used to shim jQuery.mousewheel for non-full builds.
      -  return $;
      -});
      -
      -S2.define('jquery.select2',[
      -  'jquery',
      -  'jquery-mousewheel',
      -
      -  './select2/core',
      -  './select2/defaults'
      -], function ($, _, Select2, Defaults) {
      -  if ($.fn.select2 == null) {
      -    // All methods that should return the element
      -    var thisMethods = ['open', 'close', 'destroy'];
      -
      -    $.fn.select2 = function (options) {
      -      options = options || {};
      -
      -      if (typeof options === 'object') {
      -        this.each(function () {
      -          var instanceOptions = $.extend(true, {}, options);
      -
      -          var instance = new Select2($(this), instanceOptions);
      -        });
      -
      -        return this;
      -      } else if (typeof options === 'string') {
      -        var ret;
      -        var args = Array.prototype.slice.call(arguments, 1);
      -
      -        this.each(function () {
      -          var instance = $(this).data('select2');
      -
      -          if (instance == null && window.console && console.error) {
      -            console.error(
      -              'The select2(\'' + options + '\') method was called on an ' +
      -              'element that is not using Select2.'
      -            );
      -          }
      -
      -          ret = instance[options].apply(instance, args);
      -        });
      -
      -        // Check if we should be returning `this`
      -        if ($.inArray(options, thisMethods) > -1) {
      -          return this;
      -        }
      -
      -        return ret;
      -      } else {
      -        throw new Error('Invalid arguments for Select2: ' + options);
      -      }
      -    };
      -  }
      -
      -  if ($.fn.select2.defaults == null) {
      -    $.fn.select2.defaults = Defaults;
      -  }
      -
      -  return Select2;
      -});
      -
      -  // Return the AMD loader configuration so it can be used outside of this file
      -  return {
      -    define: S2.define,
      -    require: S2.require
      -  };
      -}());
      -
      -  // Autoload the jQuery bindings
      -  // We know that all of the modules exist above this, so we're safe
      -  var select2 = S2.require('jquery.select2');
      -
      -  // Hold the AMD module references on the jQuery function that was just loaded
      -  // This allows Select2 to use the internal loader outside of this file, such
      -  // as in the language files.
      -  jQuery.fn.select2.amd = S2;
      -
      -  // Return the Select2 instance for anyone who is importing it.
      -  return select2;
      -}));
      diff --git a/bower_components/select2/dist/js/select2.min.js b/bower_components/select2/dist/js/select2.min.js
      deleted file mode 100644
      index 43f0a651e6..0000000000
      --- a/bower_components/select2/dist/js/select2.min.js
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -/*! 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;k<a.length;k+=1)if(m=a[k],"."===m)a.splice(k,1),k-=1;else if(".."===m){if(1===k&&(".."===a[2]||".."===a[0]))break;k>0&&(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;n<c.length;n+=1)if(m=o(c[n],f),k=m.f,"require"===k)u[n]=p.require(a);else if("exports"===k)u[n]=p.exports(a),s=!0;else if("module"===k)h=u[n]=p.module(a);else if(e(q,k)||e(r,k)||e(t,k))u[n]=j(k);else{if(!m.p)throw new Error(a+" missing "+k);m.p.load(m.n,g(f,!0),i(k),{}),u[n]=q[k]}l=d?d.apply(q[a],u):void 0,a&&(h&&h.exports!==b&&h.exports!==q[a]?q[a]=h.exports:l===b&&s||(q[a]=l))}else a&&(q[a]=d)},a=c=n=function(a,c,d,e,f){if("string"==typeof a)return p[a]?p[a](c):j(o(a,c).f);if(!a.splice){if(s=a,s.deps&&n(s.deps,s.callback),!c)return;c.splice?(a=c,c=d,d=null):a=b}return c=c||function(){},"function"==typeof d&&(d=e,e=f),e?m(b,a,c,d):setTimeout(function(){m(b,a,c,d)},4),n},n.config=function(a){return n(a)},a._defined=q,d=function(a,b,c){if("string"!=typeof a)throw new Error("See almond README: incorrect module build, no module name");b.splice||(c=b,b=[]),e(q,a)||e(r,a)||(r[a]=[a,b,c])},d.amd={jQuery:!0}}(),b.requirejs=a,b.require=c,b.define=d}}(),b.define("almond",function(){}),b.define("jquery",[],function(){var b=a||$;return null==b&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),b}),b.define("select2/utils",["jquery"],function(a){function b(a){var b=a.prototype,c=[];for(var d in b){var e=b[d];"function"==typeof e&&"constructor"!==d&&c.push(d)}return c}var c={};c.Extend=function(a,b){function c(){this.constructor=a}var d={}.hasOwnProperty;for(var e in b)d.call(b,e)&&(a[e]=b[e]);return c.prototype=b.prototype,a.prototype=new c,a.__super__=b.prototype,a},c.Decorate=function(a,c){function d(){var b=Array.prototype.unshift,d=c.prototype.constructor.length,e=a.prototype.constructor;d>0&&(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;h<g.length;h++){var i=g[h];d.prototype[i]=a.prototype[i]}for(var j=(function(a){var b=function(){};a in d.prototype&&(b=d.prototype[a]);var e=c.prototype[a];return function(){var a=Array.prototype.unshift;return a.call(arguments,b),e.apply(this,arguments)}}),k=0;k<f.length;k++){var l=f[k];d.prototype[l]=j(l)}return d};var d=function(){this.listeners={}};return d.prototype.on=function(a,b){this.listeners=this.listeners||{},a in this.listeners?this.listeners[a].push(b):this.listeners[a]=[b]},d.prototype.trigger=function(a){var b=Array.prototype.slice,c=b.call(arguments,1);this.listeners=this.listeners||{},null==c&&(c=[]),0===c.length&&c.push({}),c[0]._type=a,a in this.listeners&&this.invoke(this.listeners[a],b.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},d.prototype.invoke=function(a,b){for(var c=0,d=a.length;d>c;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<c.length;e++){var f=c[e];f=f.substring(0,1).toLowerCase()+f.substring(1),f in d||(d[f]={}),e==c.length-1&&(d[f]=a[b]),d=d[f]}delete a[b]}}return a},c.hasScroll=function(b,c){var d=a(c),e=c.style.overflowX,f=c.style.overflowY;return e!==f||"hidden"!==f&&"visible"!==f?"scroll"===e||"scroll"===f?!0:d.innerHeight()<c.scrollHeight||d.innerWidth()<c.scrollWidth:!1},c.escapeMarkup=function(a){var b={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};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('<ul class="select2-results__options" role="tree"></ul>');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('<li role="treeitem" aria-live="assertive" class="select2-results__option"></li>'),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;c<a.results.length;c++){var d=a.results[c],e=this.option(d);b.push(e)}this.$results.append(b)},c.prototype.position=function(a,b){var c=b.find(".select2-results");c.append(a)},c.prototype.sort=function(a){var b=this.options.get("sorter");return b(a)},c.prototype.highlightFirstItem=function(){var a=this.$results.find(".select2-results__option[aria-selected]"),b=a.filter("[aria-selected=true]");b.length>0?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<b.children.length;j++){var k=b.children[j],l=this.option(k);i.push(l)}var m=a("<ul></ul>",{"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('<span class="select2-selection" role="combobox"  aria-haspopup="true" aria-expanded="false"></span>');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('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),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("<span></span>")},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('<ul class="select2-selection__rendered"></ul>'),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('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation">&times;</span></li>');return b},d.prototype.update=function(a){if(this.clear(),0!==a.length){for(var b=[],d=0;d<a.length;d++){var e=a[d],f=this.selectionContainer(),g=this.display(e,f);f.append(g),f.prop("title",e.title||e.text),f.data("data",e),b.push(f)}var h=this.$selection.find(".select2-selection__rendered");c.appendMany(h,b)}},d}),b.define("select2/selection/placeholder",["../utils"],function(a){function b(a,b,c){this.placeholder=this.normalizePlaceholder(c.get("placeholder")),a.call(this,b,c)}return b.prototype.normalizePlaceholder=function(a,b){return"string"==typeof b&&(b={id:"",text:b}),b},b.prototype.createPlaceholder=function(a,b){var c=this.selectionContainer();return c.html(this.display(b)),c.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),c},b.prototype.update=function(a,b){var c=1==b.length&&b[0].id!=this.placeholder.id,d=b.length>1;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;e<d.length;e++){var f={data:d[e]};if(this.trigger("unselect",f),f.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},c.prototype._handleKeyboardClear=function(a,c,d){d.isOpen()||(c.which==b.DELETE||c.which==b.BACKSPACE)&&this._handleClear(c)},c.prototype.update=function(b,c){if(b.call(this,c),!(this.$selection.find(".select2-selection__placeholder").length>0||0===c.length)){var d=a('<span class="select2-selection__clear">&times;</span>');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('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');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");
      -if(this.$element.prop("multiple"))this.current(function(d){var e=[];a=[a],a.push.apply(a,d);for(var f=0;f<a.length;f++){var g=a[f].id;-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")});else{var d=a.id;this.$element.val(d),this.$element.trigger("change")}},d.prototype.unselect=function(a){var b=this;if(this.$element.prop("multiple"))return a.selected=!1,c(a.element).is("option")?(a.element.selected=!1,void this.$element.trigger("change")):void this.current(function(d){for(var e=[],f=0;f<d.length;f++){var g=d[f].id;g!==a.id&&-1===c.inArray(g,e)&&e.push(g)}b.$element.val(e),b.$element.trigger("change")})},d.prototype.bind=function(a,b){var c=this;this.container=a,a.on("select",function(a){c.select(a.data)}),a.on("unselect",function(a){c.unselect(a.data)})},d.prototype.destroy=function(){this.$element.find("*").each(function(){c.removeData(this,"data")})},d.prototype.query=function(a,b){var d=[],e=this,f=this.$element.children();f.each(function(){var b=c(this);if(b.is("option")||b.is("optgroup")){var f=e.item(b),g=e.matches(a,f);null!==g&&d.push(g)}}),b({results:d})},d.prototype.addOptions=function(a){b.appendMany(this.$element,a)},d.prototype.option=function(a){var b;a.children?(b=document.createElement("optgroup"),b.label=a.text):(b=document.createElement("option"),void 0!==b.textContent?b.textContent=a.text:b.innerText=a.text),a.id&&(b.value=a.id),a.disabled&&(b.disabled=!0),a.selected&&(b.selected=!0),a.title&&(b.title=a.title);var d=c(b),e=this._normalizeItem(a);return e.element=b,c.data(b,"data",e),d},d.prototype.item=function(a){var b={};if(b=c.data(a[0],"data"),null!=b)return b;if(a.is("option"))b={id:a.val(),text:a.text(),disabled:a.prop("disabled"),selected:a.prop("selected"),title:a.prop("title")};else if(a.is("optgroup")){b={text:a.prop("label"),children:[],title:a.prop("title")};for(var d=a.children("option"),e=[],f=0;f<d.length;f++){var g=c(d[f]),h=this.item(g);e.push(h)}b.children=e}return b=this._normalizeItem(b),b.element=a[0],c.data(a[0],"data",b),b},d.prototype._normalizeItem=function(a){c.isPlainObject(a)||(a={id:a,text:a}),a=c.extend({},{text:""},a);var b={selected:!1,disabled:!1};return null!=a.id&&(a.id=a.id.toString()),null!=a.text&&(a.text=a.text.toString()),null==a._resultId&&a.id&&null!=this.container&&(a._resultId=this.generateResultId(this.container,a)),c.extend({},b,a)},d.prototype.matches=function(a,b){var c=this.options.get("matcher");return c(a,b)},d}),b.define("select2/data/array",["./select","../utils","jquery"],function(a,b,c){function d(a,b){var c=b.get("data")||[];d.__super__.constructor.call(this,a,b),this.addOptions(this.convertToOptions(c))}return b.Extend(d,a),d.prototype.select=function(a){var b=this.$element.find("option").filter(function(b,c){return c.value==a.id.toString()});0===b.length&&(b=this.option(a),this.addOptions(b)),d.__super__.select.call(this,a)},d.prototype.convertToOptions=function(a){function d(a){return function(){return c(this).val()==a.id}}for(var e=this,f=this.$element.find("option"),g=f.map(function(){return e.item(c(this)).id}).get(),h=[],i=0;i<a.length;i++){var j=this._normalizeItem(a[i]);if(c.inArray(j.id,g)>=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;h<e.length;h++){var i=e[h],j=this._normalizeItem(i),k=this.option(j);this.$element.append(k)}}return b.prototype.query=function(a,b,c){function d(a,f){for(var g=a.results,h=0;h<g.length;h++){var i=g[h],j=null!=i.children&&!d({results:i.children},!0),k=i.text===b.term;if(k||j)return f?!1:(a.data=g,void c(a))}if(f)return!0;var l=e.createTag(b);if(null!=l){var m=e.option(l);m.attr("data-select2-tag",!0),e.addOptions([m]),e.insertTag(g,l)}a.results=g,c(a)}var e=this;return this._removeOldTags(),null==b.term||null!=b.page?void a.call(this,b,c):void a.call(this,b,d)},b.prototype.createTag=function(b,c){var d=a.trim(c.term);return""===d?null:{id:d,text:d}},b.prototype.insertTag=function(a,b,c){b.unshift(c)},b.prototype._removeOldTags=function(b){var c=(this._lastTag,this.$element.find("option[data-select2-tag]"));c.each(function(){this.selected||a(this).remove()})},b}),b.define("select2/data/tokenizer",["jquery"],function(a){function b(a,b,c){var d=c.get("tokenizer");void 0!==d&&(this.tokenizer=d),a.call(this,b,c)}return b.prototype.bind=function(a,b,c){a.call(this,b,c),this.$search=b.dropdown.$search||b.selection.$search||c.find(".select2-search__field")},b.prototype.query=function(b,c,d){function e(b){var c=g._normalizeItem(b),d=g.$element.find("option").filter(function(){return a(this).val()===c.id});if(!d.length){var e=g.option(c);e.attr("data-select2-tag",!0),g._removeOldTags(),g.addOptions([e])}f(c)}function f(a){g.trigger("select",{data:a})}var g=this;c.term=c.term||"";var h=this.tokenizer(c,this.options,e);h.term!==c.term&&(this.$search.length&&(this.$search.val(h.term),this.$search.focus()),c.term=h.term),b.call(this,c,d)},b.prototype.tokenizer=function(b,c,d,e){for(var f=d.get("tokenSeparators")||[],g=c.term,h=0,i=this.createTag||function(a){return{id:a.term,text:a.term}};h<g.length;){var j=g[h];if(-1!==a.inArray(j,f)){var k=g.substr(0,h),l=a.extend({},c,{term:k}),m=i(l);null!=m?(e(m),g=g.substr(h+1)||"",h=0):h++}else h++}return{term:g}},b}),b.define("select2/data/minimumInputLength",[],function(){function a(a,b,c){this.minimumInputLength=c.get("minimumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",b.term.length<this.minimumInputLength?void this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:b.term,params:b}}):void a.call(this,b,c)},a}),b.define("select2/data/maximumInputLength",[],function(){function a(a,b,c){this.maximumInputLength=c.get("maximumInputLength"),a.call(this,b,c)}return a.prototype.query=function(a,b,c){return b.term=b.term||"",this.maximumInputLength>0&&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('<span class="select2-dropdown"><span class="select2-results"></span></span>');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('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="search" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" role="textbox" /></span>');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('<li class="select2-results__option select2-results__option--load-more"role="treeitem" aria-disabled="true"></li>'),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("<span></span>"),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.top<f.top-h.height,k=i.bottom>f.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;d<b.length;d++){var e=b[d];e.children?c+=a(e.children):c++}return c}function b(a,b,c,d){this.minimumResultsForSearch=c.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),a.call(this,b,c,d)}return b.prototype.showSearch=function(b,c){return a(c.data.results)<this.minimumResultsForSearch?!1:b.call(this,c)},b}),b.define("select2/dropdown/selectOnClose",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("close",function(a){d._handleSelectOnClose(a)})},a.prototype._handleSelectOnClose=function(a,b){if(b&&null!=b.originalSelect2Event){var c=b.originalSelect2Event;if("select"===c._type||"unselect"===c._type)return}var d=this.getHighlightedResults();if(!(d.length<1)){var e=d.data("data");null!=e.element&&e.element.selected||null==e.element&&e.selected||this.trigger("select",{data:e})}},a}),b.define("select2/dropdown/closeOnSelect",[],function(){function a(){}return a.prototype.bind=function(a,b,c){var d=this;a.call(this,b,c),b.on("select",function(a){d._selectTriggered(a)}),b.on("unselect",function(a){d._selectTriggered(a)})},a.prototype._selectTriggered=function(a,b){var c=b.originalEvent;c&&c.ctrlKey||this.trigger("close",{originalEvent:c,originalSelect2Event:b})},a}),b.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(a){var b=a.input.length-a.maximum,c="Please delete "+b+" character";return 1!=b&&(c+="s"),c},inputTooShort:function(a){var b=a.minimum-a.input.length,c="Please enter "+b+" or more characters";return c},loadingMore:function(){return"Loading more results…"},maximumSelected:function(a){var b="You can only select "+a.maximum+" item";return 1!=a.maximum&&(b+="s"),b},noResults:function(){return"No results found"},searching:function(){return"Searching…"}}}),b.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C){function D(){this.reset()}D.prototype.apply=function(l){if(l=a.extend(!0,{},this.defaults,l),null==l.dataAdapter){if(null!=l.ajax?l.dataAdapter=o:null!=l.data?l.dataAdapter=n:l.dataAdapter=m,l.minimumInputLength>0&&(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;L<K.length;L++){var M=K[L],N={};try{N=k.loadPath(M)}catch(O){try{M=this.defaults.amdLanguageBase+M,N=k.loadPath(M)}catch(P){l.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+M+'" could not be automatically loaded. A fallback will be used instead.');continue}}J.extend(N)}l.translations=J}else{var Q=k.loadPath(this.defaults.amdLanguageBase+"en"),R=new k(l.language);R.extend(Q),l.translations=R}return l},D.prototype.reset=function(){function b(a){function b(a){return l[a]||a}return a.replace(/[^\u0000-\u007E]/g,b)}function c(d,e){if(""===a.trim(d.term))return e;if(e.children&&e.children.length>0){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;e<b.addedNodes.length;e++){var f=b.addedNodes[e];f.selected&&(c=!0)}else b.removedNodes&&b.removedNodes.length>0&&(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;
      -},e.prototype.render=function(){var b=a('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');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("jquery-mousewheel",["jquery"],function(a){return a}),b.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(a,b,c,d){if(null==a.fn.select2){var e=["open","close","destroy"];a.fn.select2=function(b){if(b=b||{},"object"==typeof b)return this.each(function(){var d=a.extend(!0,{},b);new c(a(this),d)}),this;if("string"==typeof b){var d,f=Array.prototype.slice.call(arguments,1);return this.each(function(){var c=a(this).data("select2");null==c&&window.console&&console.error&&console.error("The select2('"+b+"') method was called on an element that is not using Select2."),d=c[b].apply(c,f)}),a.inArray(b,e)>-1?this:d}throw new Error("Invalid arguments for Select2: "+b)}}return null==a.fn.select2.defaults&&(a.fn.select2.defaults=d),c}),{define:b.define,require:b.require}}(),c=b.require("jquery.select2");return a.fn.select2.amd=b,c});
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/.gitignore b/bower_components/select2/docs/.gitignore
      deleted file mode 100644
      index aec680090a..0000000000
      --- a/bower_components/select2/docs/.gitignore
      +++ /dev/null
      @@ -1,2 +0,0 @@
      -_site
      -dist
      diff --git a/bower_components/select2/docs/README.md b/bower_components/select2/docs/README.md
      deleted file mode 100644
      index b69aed1b32..0000000000
      --- a/bower_components/select2/docs/README.md
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -Select2 Documentation
      -=====================
      -[This repository][select2-docs-source] holds the latest documentation for
      -[Select2][select2].
      -
      -What is this?
      --------------
      -The documentation is automatically extracted from the `docs` directory at the
      -[Select2 source repository][select2-source]. This is done periodically by
      -the maintainers of Select2.
      -
      -How can I fix an issue in these docs?
      --------------------------------------
      -If you are reading this from the source repository, within the `docs` directory,
      -then you're already in the right place. You can fork the source repository,
      -commit your changes, and then make a pull request and it will be reviewed.
      -
      -**If you are reading this from the
      -[documentation repository][select2-docs-source], you are in the wrong place.**
      -Pull requests made directly to the documentation repository will be ignored and
      -eventually closed, so don't do that.
      -
      -How can I build these docs manually?
      -------------------------------------
      -In the [main Select2 repository][select2-source], you can build the
      -documentation by executing
      -
      -```bash
      -grunt docs
      -```
      -
      -Which will start up the documentation on port 4000. You will need
      -[Jekyll][jekyll] installed to build the documentation.
      -
      -[jekyll]: http://jekyllrb.com/
      -[select2]: https://select2.github.io
      -[select2-docs-source]: https://github.com/select2/select2.github.io
      -[select2-source]: https://github.com/select2/select2
      diff --git a/bower_components/select2/docs/_includes/examples/basics.html b/bower_components/select2/docs/_includes/examples/basics.html
      deleted file mode 100644
      index a077da7721..0000000000
      --- a/bower_components/select2/docs/_includes/examples/basics.html
      +++ /dev/null
      @@ -1,97 +0,0 @@
      -<section>
      -
      -  <h1 id="basics" class="page-header">The basics</h1>
      -
      -  <h2 id="single">Single select boxes</h2>
      -
      -  <p>
      -    Select2 can take a regular select box like this...
      -  </p>
      -
      -  <p>
      -    <select class="js-states form-control"></select>
      -  </p>
      -
      -  <p>
      -    and turn it into this...
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-basic-single js-states form-control"></select>
      -    </p>
      -  </div>
      -
      -{% highlight html linenos %}
      -<script type="text/javascript">
      -$(document).ready(function() {
      -  $(".js-example-basic-single").select2();
      -});
      -</script>
      -
      -<select class="js-example-basic-single">
      -  <option value="AL">Alabama</option>
      -    ...
      -  <option value="WY">Wyoming</option>
      -</select>
      -{% endhighlight %}
      -
      -  <h2 id="multiple">Multiple select boxes</h2>
      -
      -  <p>
      -    Select2 also supports multi-value select boxes. The select below is declared with the <code>multiple</code> attribute.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-basic-multiple js-states form-control" multiple="multiple"></select>
      -    </p>
      -  </div>
      -
      -{% highlight html linenos %}
      -<script type="text/javascript">
      -$(".js-example-basic-multiple").select2();
      -</script>
      -
      -<select class="js-example-basic-multiple" multiple="multiple">
      -  <option value="AL">Alabama</option>
      -    ...
      -  <option value="WY">Wyoming</option>
      -</select>
      -{% endhighlight %}
      -
      -  <h2>Select boxes with labels</h2>
      -
      -  <p>
      -    You can, and should, use a <code>&lt;label&gt;</code> with Select2, just like any other <code>&lt;select&gt</code> element.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <label for="id_label_single">
      -        Click this to highlight the single select element
      -        <select class="js-example-basic-single js-states form-control" id="id_label_single"></select>
      -      </label>
      -    </p>
      -    <p>
      -      <label for="id_label_multiple">
      -        Click this to highlight the multiple select element
      -        <select class="js-example-basic-multiple js-states form-control" id="id_label_multiple" multiple="multiple"></select>
      -      </label>
      -    </p>
      -  </div>
      -
      -{% highlight html linenos %}
      -<label for="id_label_single">
      -  Click this to highlight the single select element
      -
      -  <select class="js-example-basic-single js-states form-control" id="id_label_single"></select>
      -</label>
      -
      -<label for="id_label_multiple">
      -  Click this to highlight the multiple select element
      -
      -  <select class="js-example-basic-multiple js-states form-control" id="id_label_multiple" multiple="multiple"></select>
      -</label>
      -{% endhighlight %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/examples/data.html b/bower_components/select2/docs/_includes/examples/data.html
      deleted file mode 100644
      index 4b55a760ac..0000000000
      --- a/bower_components/select2/docs/_includes/examples/data.html
      +++ /dev/null
      @@ -1,123 +0,0 @@
      -<section>
      -
      -  <h1 id="data" class="page-header">
      -    Data sources
      -  </h1>
      -
      -  <p>In addition to handling options from a standard <code>&lt;select&gt;</code>, Select2 can also retrieve the results from other data sources.</p>
      -
      -  <h2 id="data-array" >Loading array data</h2>
      -
      -  <p>
      -    Select2 provides a way to load the data from a local array.
      -    You can provide initial selections with array data by providing the
      -    option tag for the selected values, similar to how it would be done for
      -    a standard select.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-data-array form-control"></select>
      -    </p>
      -    <p>
      -      <select class="js-example-data-array-selected form-control">
      -        <option value="2" selected="selected">duplicate</option>
      -      </select>
      -    </p>
      -  </div>
      -
      -{% highlight html linenos %}
      -<script type="text/javascript">
      -var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
      -
      -$(".js-example-data-array").select2({
      -  data: data
      -})
      -
      -$(".js-example-data-array-selected").select2({
      -  data: data
      -})
      -</script>
      -
      -<select class="js-example-data-array"></select>
      -
      -<select class="js-example-data-array-selected">
      -  <option value="2" selected="selected">duplicate</option>
      -</select>
      -{% endhighlight %}
      -
      -  <h2 id="data-ajax" >Loading remote data</h2>
      -
      -  <p>
      -    Select2 comes with AJAX support built in, using jQuery's AJAX methods.
      -    In this example, we can search for repositories using GitHub's API.
      -  </p>
      -
      -  <p>
      -    <select class="js-example-data-ajax form-control">
      -      <option value="3620194" selected="selected">select2/select2</option>
      -    </select>
      -  </p>
      -
      -  <p>
      -    When using Select2 with remote data, the HTML required for the
      -    <code>select</code> is the same as any other Select2. If you need to
      -    provide default selections, you just need to include an
      -    <code>option</code> for each selection that contains the value and text
      -    that should be displayed.
      -  </p>
      -
      -{% highlight html linenos %}
      -<select class="js-data-example-ajax">
      -  <option value="3620194" selected="selected">select2/select2</option>
      -</select>
      -{% endhighlight %}
      -
      -  <p>
      -    You can configure how Select2 searches for remote data using the
      -    <code>ajax</code> option. More information on the individual options
      -    that Select2 handles can be found in the
      -    <a href="options.html#ajax">options documentation for <code>ajax</code></a>.
      -  </p>
      -
      -{% highlight js linenos %}
      -$(".js-data-example-ajax").select2({
      -  ajax: {
      -    url: "https://api.github.com/search/repositories",
      -    dataType: 'json',
      -    delay: 250,
      -    data: function (params) {
      -      return {
      -        q: params.term, // search term
      -        page: params.page
      -      };
      -    },
      -    processResults: function (data, params) {
      -      // parse the results into the format expected by Select2
      -      // since we are using custom formatting functions we do not need to
      -      // alter the remote JSON data, except to indicate that infinite
      -      // scrolling can be used
      -      params.page = params.page || 1;
      -
      -      return {
      -        results: data.items,
      -        pagination: {
      -          more: (params.page * 30) < data.total_count
      -        }
      -      };
      -    },
      -    cache: true
      -  },
      -  escapeMarkup: function (markup) { return markup; }, // let our custom formatter work
      -  minimumInputLength: 1,
      -  templateResult: formatRepo, // omitted for brevity, see the source of this page
      -  templateSelection: formatRepoSelection // omitted for brevity, see the source of this page
      -});
      -{% endhighlight %}
      -
      -  <p>
      -    Select2 will pass any options in the <code>ajax</code> object to
      -    jQuery's <code>$.ajax</code> function, or the <code>transport</code>
      -    function you specify.
      -  </p>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/disabled-mode.html b/bower_components/select2/docs/_includes/examples/disabled-mode.html
      deleted file mode 100644
      index 309a2c2b63..0000000000
      --- a/bower_components/select2/docs/_includes/examples/disabled-mode.html
      +++ /dev/null
      @@ -1,43 +0,0 @@
      -<section>
      -
      -  <h1 id="disabled">Disabled mode</h1>
      -
      -  <p>
      -    Select2 will respond to the <code>disabled</code> attribute on
      -    <code>&lt;select&gt;</code> elements. You can also initialize Select2
      -    with <code>disabled: true</code> to get the same effect.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-disabled js-states form-control" disabled="disabled"></select>
      -    </p>
      -
      -    <p>
      -      <select class="js-example-disabled-multi js-states form-control" multiple="multiple" disabled="disabled"></select>
      -    </p>
      -    <div class="btn-group btn-group-sm" role="group" aria-label="Programmatic enabling and disabling">
      -      <button type="button" class="js-programmatic-enable btn btn-default">
      -        Enable
      -      </button>
      -      <button type="button" class="js-programmatic-disable btn btn-default">
      -        Disable
      -      </button>
      -    </div>
      -  </div>
      -
      -  <pre data-fill-from=".js-code-disabled"></pre>
      -
      -<script type="text/javascript" class="js-code-disabled">
      -$(".js-programmatic-enable").on("click", function () {
      -  $(".js-example-disabled").prop("disabled", false);
      -  $(".js-example-disabled-multi").prop("disabled", false);
      -});
      -
      -$(".js-programmatic-disable").on("click", function () {
      -  $(".js-example-disabled").prop("disabled", true);
      -  $(".js-example-disabled-multi").prop("disabled", true);
      -});
      -</script>
      -
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/disabled-results.html b/bower_components/select2/docs/_includes/examples/disabled-results.html
      deleted file mode 100644
      index b695a3b6f4..0000000000
      --- a/bower_components/select2/docs/_includes/examples/disabled-results.html
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -<section>
      -
      -  <h1 id="disabled-results">Disabled results</h1>
      -
      -  <p>
      -    Select2 will correctly handle disabled results, both with data coming
      -    from a standard select (when the <code>disabled</code> attribute is set)
      -    and from remote sources, where the object has
      -    <code>disabled: true</code> set.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-disabled-results form-control">
      -        <option value="one">First</option>
      -        <option value="two" disabled="disabled">Second (disabled)</option>
      -        <option value="three">Third</option>
      -      </select>
      -    </p>
      -  </div>
      -
      -{% highlight html linenos %}
      -<select class="js-example-disabled-results">
      -  <option value="one">First</option>
      -  <option value="two" disabled="disabled">Second (disabled)</option>
      -  <option value="three">Third</option>
      -</select>
      -{% endhighlight %}
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/hide-search.html b/bower_components/select2/docs/_includes/examples/hide-search.html
      deleted file mode 100644
      index 0203c1a750..0000000000
      --- a/bower_components/select2/docs/_includes/examples/hide-search.html
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -<section>
      -
      -  <h1 id="hide-search">Hiding the search box</h1>
      -
      -  <p>
      -    Select2 allows you to hide the search box depending on the number of
      -    options which are displayed. In this example, we use the value
      -    <code>Infinity</code> to tell Select2 to never display the search box.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-basic-hide-search js-states form-control"></select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-basic-hide-search").select2({
      -  minimumResultsForSearch: Infinity
      -});
      -{% endhighlight %}
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/localization-rtl-diacritics.html b/bower_components/select2/docs/_includes/examples/localization-rtl-diacritics.html
      deleted file mode 100644
      index 8b881586a6..0000000000
      --- a/bower_components/select2/docs/_includes/examples/localization-rtl-diacritics.html
      +++ /dev/null
      @@ -1,82 +0,0 @@
      -<section>
      -  <h1 id="localization-rtl-diacritics" class="page-header">
      -    Localization, RTL and diacritics support
      -  </h1>
      -
      -  <h2 id="language">Multiple languages</h2>
      -
      -  <p>
      -    Select2 supports displaying the messages in different languages, as well
      -    as providing your own
      -    <a href="options.html#language">custom messages</a>
      -    that can be displayed.
      -  </p>
      -
      -  <p>
      -    The language does not have to be defined when Select2 is being
      -    initialized, but instead can be defined in the <code>[lang]</code>
      -    attribute of any parent elements as <code>[lang="es"]</code>.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-language js-states form-control">
      -      </select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-language").select2({
      -  language: "es"
      -});
      -{% endhighlight %}
      -
      -  <h2 id="rtl">RTL support</h2>
      -
      -  <p>
      -    Select2 will work on RTL websites if the <code>dir</code> attribute is
      -    set on the <code>&lt;select&gt;</code> or any parents of it. You can also
      -    initialize Select2 with <code>dir: "rtl"</code> set.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-rtl js-states form-control" dir="rtl"></select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-rtl").select2({
      -  dir: "rtl"
      -});
      -{% endhighlight %}
      -
      -  <h2 id="diacritics">Diacritics support</h2>
      -
      -  <p>
      -    Select2's default matcher will ignore diacritics, making it easier for
      -    users to filter results in international selects. Type "aero" into the
      -    select below.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-diacritics form-control">
      -        <option>Aeróbics</option>
      -        <option>Aeróbics en Agua</option>
      -        <option>Aerografía</option>
      -        <option>Aeromodelaje</option>
      -        <option>Águilas</option>
      -        <option>Ajedrez</option>
      -        <option>Ala Delta</option>
      -        <option>Álbumes de Música</option>
      -        <option>Alusivos</option>
      -        <option>Análisis de Escritura a Mano</option>
      -      </select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-diacritics").select2();
      -{% endhighlight %}
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/matcher.html b/bower_components/select2/docs/_includes/examples/matcher.html
      deleted file mode 100644
      index fbdcf1f204..0000000000
      --- a/bower_components/select2/docs/_includes/examples/matcher.html
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -<section>
      -  <h1 id="matcher">Customizing how results are matched</h1>
      -
      -  <p>
      -    Unlike other dropdowns on this page, this one matches options only if
      -    the term appears in the beginning of the string as opposed to anywhere:
      -  </p>
      -
      -  <p>
      -    This custom matcher uses a
      -    <a href="options.html#compat-matcher">compatibility module</a> that is
      -    only bundled in the
      -    <a href="index.html#builds-full">full version of Select2</a>. You also
      -    have the option of using a
      -    <a href="options.html#matcher">more complex matcher</a>.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-matcher-start js-states form-control"></select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -function matchStart (term, text) {
      -  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
      -    return true;
      -  }
      -
      -  return false;
      -}
      -
      -$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
      -  $(".js-example-matcher-start").select2({
      -    matcher: oldMatcher(matchStart)
      -  })
      -});
      -{% endhighlight %}
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/multiple-max.html b/bower_components/select2/docs/_includes/examples/multiple-max.html
      deleted file mode 100644
      index 6ec0056e70..0000000000
      --- a/bower_components/select2/docs/_includes/examples/multiple-max.html
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -<section>
      -  <h1 id="multiple-max">
      -    Limiting the number of selections
      -  </h1>
      -
      -  <p>
      -    Select2 multi-value select boxes can set restrictions regarding the
      -    maximum number of options selected. The select below is declared with
      -    the <code>multiple</code> attribute with <code>maximumSelectionLength</code>
      -    in the select2 options.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-basic-multiple-limit js-states form-control" multiple="multiple"></select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-basic-multiple-limit").select2({
      -  maximumSelectionLength: 2
      -});
      -{% endhighlight %}
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/placeholders.html b/bower_components/select2/docs/_includes/examples/placeholders.html
      deleted file mode 100644
      index 1b6afda950..0000000000
      --- a/bower_components/select2/docs/_includes/examples/placeholders.html
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -<section>
      -  <h1 id="placeholders">Placeholders</h1>
      -
      -  <p>
      -    A placeholder value can be defined and will be displayed until a
      -    selection is made. Select2 uses the <code>placeholder</code> attribute
      -    on multiple select boxes, which requires IE 10+. You can support it in
      -    older versions with
      -    <a href="https://github.com/jamesallardice/Placeholders.js">the Placeholders.js polyfill</a>.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-placeholder-single js-states form-control">
      -        <option></option>
      -      </select>
      -    </p>
      -    <p>
      -      <select class="js-example-placeholder-multiple js-states form-control" multiple="multiple"></select>
      -    </p>
      -  </div>
      -
      -  <pre data-fill-from=".js-code-placeholder"></pre>
      -
      -<script type="text/javascript" class="js-code-placeholder">
      -$(".js-example-placeholder-single").select2({
      -  placeholder: "Select a state",
      -  allowClear: true
      -});
      -
      -$(".js-example-placeholder-multiple").select2({
      -  placeholder: "Select a state"
      -});
      -</script>
      -
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/programmatic-control.html b/bower_components/select2/docs/_includes/examples/programmatic-control.html
      deleted file mode 100644
      index 375eaa4206..0000000000
      --- a/bower_components/select2/docs/_includes/examples/programmatic-control.html
      +++ /dev/null
      @@ -1,155 +0,0 @@
      -<section>
      -  <h1 id="programmatic-control" class="page-header">
      -    Programmatic control
      -  </h1>
      -
      -  <h2 id="events">DOM events</h2>
      -
      -  <p>
      -    Select2 will trigger some events on the original select element,
      -    allowing you to integrate it with other components. You can find more
      -    information on events
      -    <a href="options.html#events">on the options page</a>.
      -  </p>
      -
      -  <p>
      -    <code>change</code> is fired whenever an option is selected or removed.
      -  </p>
      -
      -  <p>
      -    <code>select2:open</code> is fired whenever the dropdown is opened.
      -    <code>select2:opening</code> is fired before this and can be prevented.
      -  </p>
      -
      -  <p>
      -    <code>select2:close</code> is fired whenever the dropdown is closed.
      -    <code>select2:closing</code> is fired before this and can be prevented.
      -  </p>
      -
      -  <p>
      -    <code>select2:select</code> is fired whenever a result is selected.
      -    <code>select2:selecting</code> is fired before this and can be prevented.
      -  </p>
      -
      -  <p>
      -    <code>select2:unselect</code> is fired whenever a result is unselected.
      -    <code>select2:unselecting</code> is fired before this and can be prevented.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-states js-example-events form-control"></select>
      -    </p>
      -    <p>
      -      <select class="js-states js-example-events form-control" multiple="multiple"></select>
      -    </p>
      -  </div>
      -
      -  <div class="s2-event-log">
      -    <ul class="js-event-log"></ul>
      -  </div>
      -
      -  <pre data-fill-from=".js-code-events"></pre>
      -
      -<script type="text/javascript" class="js-code-events">
      -var $eventLog = $(".js-event-log");
      -var $eventSelect = $(".js-example-events");
      -
      -$eventSelect.on("select2:open", function (e) { log("select2:open", e); });
      -$eventSelect.on("select2:close", function (e) { log("select2:close", e); });
      -$eventSelect.on("select2:select", function (e) { log("select2:select", e); });
      -$eventSelect.on("select2:unselect", function (e) { log("select2:unselect", e); });
      -
      -$eventSelect.on("change", function (e) { log("change"); });
      -
      -function log (name, evt) {
      -  if (!evt) {
      -    var args = "{}";
      -  } else {
      -    var args = JSON.stringify(evt.params, function (key, value) {
      -      if (value && value.nodeName) return "[DOM node]";
      -      if (value instanceof $.Event) return "[$.Event]";
      -      return value;
      -    });
      -  }
      -  var $e = $("<li>" + name + " -> " + args + "</li>");
      -  $eventLog.append($e);
      -  $e.animate({ opacity: 1 }, 10000, 'linear', function () {
      -    $e.animate({ opacity: 0 }, 2000, 'linear', function () {
      -      $e.remove();
      -    });
      -  });
      -}
      -</script>
      -
      -  <h2 id="programmatic">Programmatic access</h2>
      -
      -  <p>
      -    Select2 supports methods that allow programmatic control of the
      -    component.
      -  </p>
      -
      -  <div class="s2-example">
      -
      -    <p>
      -      <select class="js-example-programmatic js-states form-control"></select>
      -    </p>
      -
      -    <div class="btn-toolbar" role="toolbar" aria-label="Programmatic control">
      -      <div class="btn-group btn-group-sm" aria-label="Set Select2 option">
      -        <button class="js-programmatic-set-val btn btn-default">
      -          Set "California"
      -        </button>
      -      </div>
      -      <div class="btn-group btn-group-sm" role="group" aria-label="Open and close">
      -        <button class="js-programmatic-open btn btn-default">
      -          Open
      -        </button>
      -        <button class="js-programmatic-close btn btn-default">
      -          Close
      -        </button>
      -      </div>
      -      <div class="btn-group btn-group-sm" role="group" aria-label="Initialize and destroy">
      -        <button class="js-programmatic-init btn btn-default">
      -          Init
      -        </button>
      -        <button class="js-programmatic-destroy btn btn-default">
      -          Destroy
      -        </button>
      -      </div>
      -    </div>
      -
      -    <p>
      -      <select class="js-example-programmatic-multi js-states form-control" multiple="multiple"></select>
      -    </p>
      -
      -    <div class="btn-group btn-group-sm" role="group" aria-label="Programmatic setting and clearing Select2 options">
      -      <button type="button" class="js-programmatic-multi-set-val btn btn-default">
      -        Set to California and Alabama
      -      </button>
      -      <button type="button" class="js-programmatic-multi-clear btn btn-default">
      -        Clear
      -      </button>
      -    </div>
      -
      -  </div>
      -
      -  <pre data-fill-from=".js-code-programmatic"></pre>
      -
      -<script type="text/javascript" class="js-code-programmatic">
      -var $example = $(".js-example-programmatic").select2();
      -var $exampleMulti = $(".js-example-programmatic-multi").select2();
      -
      -$(".js-programmatic-set-val").on("click", function () { $example.val("CA").trigger("change"); });
      -
      -$(".js-programmatic-open").on("click", function () { $example.select2("open"); });
      -$(".js-programmatic-close").on("click", function () { $example.select2("close"); });
      -
      -$(".js-programmatic-init").on("click", function () { $example.select2(); });
      -$(".js-programmatic-destroy").on("click", function () { $example.select2("destroy"); });
      -
      -$(".js-programmatic-multi-set-val").on("click", function () { $exampleMulti.val(["CA", "AL"]).trigger("change"); });
      -$(".js-programmatic-multi-clear").on("click", function () { $exampleMulti.val(null).trigger("change"); });
      -</script>
      -
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/tags.html b/bower_components/select2/docs/_includes/examples/tags.html
      deleted file mode 100644
      index 69733a386d..0000000000
      --- a/bower_components/select2/docs/_includes/examples/tags.html
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -<section>
      -  <h1 id="tags">Tagging support</h1>
      -
      -  <p>
      -    Select2 can be used to quickly set up fields used for tagging.
      -  </p>
      -
      -  <p>
      -    Note that when tagging is enabled the user can select from pre-existing
      -    options or create a new tag by picking the first choice, which is what
      -    the user has typed into the search box so far.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-tags form-control" multiple="multiple">
      -        <option selected="selected">orange</option>
      -        <option>white</option>
      -        <option selected="selected">purple</option>
      -      </select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-tags").select2({
      -  tags: true
      -})
      -{% endhighlight %}
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/themes-templating-responsive-design.html b/bower_components/select2/docs/_includes/examples/themes-templating-responsive-design.html
      deleted file mode 100644
      index 15537f7480..0000000000
      --- a/bower_components/select2/docs/_includes/examples/themes-templating-responsive-design.html
      +++ /dev/null
      @@ -1,104 +0,0 @@
      -<section>
      -
      -  <h1 id="themes-templating-responsive-design" class="page-header">
      -    Themes, templating and responsive design
      -  </h1>
      -
      -  <h2 id="themes">Theme support</h2>
      -
      -  <p>
      -    Select2 supports custom themes using the
      -    <a href="options.html#theme">theme option</a>
      -    so you can style Select2 to match the rest of your application.
      -  </p>
      -
      -  <p>
      -    These are using the <code>classic</code> theme, which matches the old
      -    look of Select2.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-theme-single js-states form-control">
      -      </select>
      -    </p>
      -    <p>
      -      <select class="js-example-theme-multiple js-states form-control" multiple="multiple"></select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-theme-single").select2({
      -  theme: "classic"
      -});
      -
      -$(".js-example-theme-multiple").select2({
      -  theme: "classic"
      -});
      -{% endhighlight %}
      -
      -<h2 id="templating">Templating</h2>
      -
      -<p>
      -  Various display options of the Select2 component can be changed:
      -  You can access the <code>&lt;option&gt;</code> element
      -  (or <code>&lt;optgroup&gt;</code>) and any attributes on those elements
      -  using <code>.element</code>.
      -</p>
      -
      -<p>
      -  Templating is primarily controlled by the
      -  <a href="options.html#templateResult"><code>templateResult</code></a>
      -  and <a href="options.html#templateSelection"><code>templateSelection</code></a>
      -  options.
      -</p>
      -
      -<div class="s2-example">
      -  <p>
      -    <select class="js-example-templating js-states form-control"></select>
      -  </p>
      -</div>
      -
      -{% highlight js linenos %}
      -function formatState (state) {
      -  if (!state.id) { return state.text; }
      -  var $state = $(
      -    '<span><img src="vendor/images/flags/' + state.element.value.toLowerCase() + '.png" class="img-flag" /> ' + state.text + '</span>'
      -  );
      -  return $state;
      -};
      -
      -$(".js-example-templating").select2({
      -  templateResult: formatState
      -});
      -{% endhighlight %}
      -
      -<h2 id="responsive">Responsive design - Percent width</h2>
      -
      -<p>
      -  Select2's width can be set to a percentage of its parent to support
      -  responsive design. The two Select2 boxes below are styled to 50% and 75%
      -  width respectively.
      -</p>
      -
      -<div class="s2-example">
      -  <p>
      -    <select class="js-example-responsive js-states" style="width: 50%"></select>
      -  </p>
      -  <p>
      -    <select class="js-example-responsive js-states" multiple="multiple" style="width: 75%"></select>
      -  </p>
      -</div>
      -
      -{% highlight html linenos %}
      -<select class="js-example-responsive" style="width: 50%"></select>
      -<select class="js-example-responsive" multiple="multiple" style="width: 75%"></select>
      -{% endhighlight %}
      -
      -<div class="alert alert-warning">
      -  Select2 will do its best to resolve the percent width specified via a
      -  css class, but it is not always possible. The best way to ensure that
      -  Select2 is using a percent based width is to inline the
      -  <code>style</code> declaration into the tag.
      -</div>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/examples/tokenizer.html b/bower_components/select2/docs/_includes/examples/tokenizer.html
      deleted file mode 100644
      index 6fa04ca6d1..0000000000
      --- a/bower_components/select2/docs/_includes/examples/tokenizer.html
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -<section>
      -  <h1 id="tokenizer">Automatic tokenization</h1>
      -
      -  <p>
      -    Select2 supports ability to add choices automatically as the user is
      -    typing into the search field. Try typing in the search field below and
      -    entering a space or a comma.
      -  </p>
      -
      -  <p>
      -    The separators that should be used when tokenizing can be specified
      -    using the <a href="options.html#tokenSeparators">tokenSeparators</a>
      -    options.
      -  </p>
      -
      -  <div class="s2-example">
      -    <p>
      -      <select class="js-example-tokenizer form-control" multiple="multiple">
      -        <option>red</option>
      -        <option>blue</option>
      -        <option>green</option>
      -      </select>
      -    </p>
      -  </div>
      -
      -{% highlight js linenos %}
      -$(".js-example-tokenizer").select2({
      -  tags: true,
      -  tokenSeparators: [',', ' ']
      -})
      -{% endhighlight %}
      -</section>
      diff --git a/bower_components/select2/docs/_includes/footer.html b/bower_components/select2/docs/_includes/footer.html
      deleted file mode 100644
      index 1198d5af3d..0000000000
      --- a/bower_components/select2/docs/_includes/footer.html
      +++ /dev/null
      @@ -1,20 +0,0 @@
      -<footer class="s2-docs-footer" role="contentinfo">
      -  <div class="container">
      -    {% include social-buttons.html %}
      -    <p>
      -      Select2 is licensed under <a href="https://github.com/select2/select2/blob/master/LICENSE.md">MIT</a>, documentation under <a href="https://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.
      -    </p>
      -    <p>
      -      Maintained by <a href="https://github.com/kevin-brown">Kevin Brown</a> and <a href="https://github.com/ivaynberg">Igor Vaynberg</a> with the help of <a href="https://github.com/select2/select2/graphs/contributors">our contributors</a>.
      -    </p>
      -    <ul class="s2-docs-footer-links">
      -      <li>Currently v4.0.3</li>
      -      <li><a href="https://github.com/select2/select2">GitHub</a></li>
      -      <li><a href="./examples.html">Examples</a></li>
      -      <li><a href="./options.html">Options</a></li>
      -      <li><a href="http://select2.github.io/select2/">v3.5.2 docs</a></li>
      -      <li><a href="https://github.com/select2/select2/issues">Issues</a></li>
      -      <li><a href="https://github.com/select2/select2/releases">Releases</a></li>
      -    </ul>
      -  </div>
      -</footer>
      diff --git a/bower_components/select2/docs/_includes/ga.html b/bower_components/select2/docs/_includes/ga.html
      deleted file mode 100644
      index 5ed5228526..0000000000
      --- a/bower_components/select2/docs/_includes/ga.html
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -<script type="text/javascript">
      -  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      -    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      -    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      -  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      -
      -  ga('create', 'UA-57144786-2', 'auto');
      -  ga('send', 'pageview');
      -</script>
      diff --git a/bower_components/select2/docs/_includes/head.html b/bower_components/select2/docs/_includes/head.html
      deleted file mode 100644
      index 84270cfc35..0000000000
      --- a/bower_components/select2/docs/_includes/head.html
      +++ /dev/null
      @@ -1,31 +0,0 @@
      -<meta charset="utf-8">
      -<meta http-equiv="X-UA-Compatible" content="IE=edge">
      -<meta name="viewport" content="width=device-width, initial-scale=1">
      -
      -<link rel="apple-touch-icon" sizes="57x57" href="/images/apple-touch-icon-57x57.png?v=699Nxpjr2A">
      -<link rel="apple-touch-icon" sizes="60x60" href="/images/apple-touch-icon-60x60.png?v=699Nxpjr2A">
      -<link rel="apple-touch-icon" sizes="72x72" href="/images/apple-touch-icon-72x72.png?v=699Nxpjr2A">
      -<link rel="icon" type="image/png" href="/images/favicon-32x32.png?v=699Nxpjr2A" sizes="32x32">
      -<link rel="icon" type="image/png" href="/images/favicon-16x16.png?v=699Nxpjr2A" sizes="16x16">
      -<link rel="manifest" href="/images/manifest.json?v=699Nxpjr2A">
      -<link rel="mask-icon" href="/images/safari-pinned-tab.svg?v=699Nxpjr2A" color="#F6F6F6">
      -<link rel="shortcut icon" href="/images/favicon.ico?v=699Nxpjr2A">
      -<meta name="msapplication-TileColor" content="#da532c">
      -<meta name="msapplication-config" content="/browserconfig.xml?v=699Nxpjr2A">
      -<meta name="theme-color" content="#f6f6f6">
      -
      -<title>
      -  {{ page.title }}
      -</title>
      -
      -<script type="text/javascript" src="vendor/js/jquery.min.js"></script>
      -<script type="text/javascript" src="dist/js/select2.full.js"></script>
      -<script type="text/javascript" src="vendor/js/bootstrap.min.js"></script>
      -<script type="text/javascript" src="vendor/js/prettify.min.js"></script>
      -<script type="text/javascript" src="vendor/js/anchor.min.js"></script>
      -
      -<link href="css/bootstrap.css" type="text/css" rel="stylesheet" />
      -<link href="dist/css/select2.min.css" type="text/css" rel="stylesheet" />
      -
      -<link href="css/font-awesome.css" type="text/css" rel="stylesheet" />
      -<link href="css/s2-docs.css" type="text/css" rel="stylesheet" >
      diff --git a/bower_components/select2/docs/_includes/js-source-states.html b/bower_components/select2/docs/_includes/js-source-states.html
      deleted file mode 100644
      index 34876bee6e..0000000000
      --- a/bower_components/select2/docs/_includes/js-source-states.html
      +++ /dev/null
      @@ -1,62 +0,0 @@
      -<select class="js-source-states">
      -  <optgroup label="Alaskan/Hawaiian Time Zone">
      -    <option value="AK">Alaska</option>
      -    <option value="HI">Hawaii</option>
      -  </optgroup>
      -  <optgroup label="Pacific Time Zone">
      -    <option value="CA">California</option>
      -    <option value="NV">Nevada</option>
      -    <option value="OR">Oregon</option>
      -    <option value="WA">Washington</option>
      -  </optgroup>
      -  <optgroup label="Mountain Time Zone">
      -    <option value="AZ">Arizona</option>
      -    <option value="CO">Colorado</option>
      -    <option value="ID">Idaho</option>
      -    <option value="MT">Montana</option>
      -    <option value="NE">Nebraska</option>
      -    <option value="NM">New Mexico</option>
      -    <option value="ND">North Dakota</option>
      -    <option value="UT">Utah</option>
      -    <option value="WY">Wyoming</option>
      -  </optgroup>
      -  <optgroup label="Central Time Zone">
      -    <option value="AL">Alabama</option>
      -    <option value="AR">Arkansas</option>
      -    <option value="IL">Illinois</option>
      -    <option value="IA">Iowa</option>
      -    <option value="KS">Kansas</option>
      -    <option value="KY">Kentucky</option>
      -    <option value="LA">Louisiana</option>
      -    <option value="MN">Minnesota</option>
      -    <option value="MS">Mississippi</option>
      -    <option value="MO">Missouri</option>
      -    <option value="OK">Oklahoma</option>
      -    <option value="SD">South Dakota</option>
      -    <option value="TX">Texas</option>
      -    <option value="TN">Tennessee</option>
      -    <option value="WI">Wisconsin</option>
      -  </optgroup>
      -  <optgroup label="Eastern Time Zone">
      -    <option value="CT">Connecticut</option>
      -    <option value="DE">Delaware</option>
      -    <option value="FL">Florida</option>
      -    <option value="GA">Georgia</option>
      -    <option value="IN">Indiana</option>
      -    <option value="ME">Maine</option>
      -    <option value="MD">Maryland</option>
      -    <option value="MA">Massachusetts</option>
      -    <option value="MI">Michigan</option>
      -    <option value="NH">New Hampshire</option>
      -    <option value="NJ">New Jersey</option>
      -    <option value="NY">New York</option>
      -    <option value="NC">North Carolina</option>
      -    <option value="OH">Ohio</option>
      -    <option value="PA">Pennsylvania</option>
      -    <option value="RI">Rhode Island</option>
      -    <option value="SC">South Carolina</option>
      -    <option value="VT">Vermont</option>
      -    <option value="VA">Virginia</option>
      -    <option value="WV">West Virginia</option>
      -  </optgroup>
      -</select>
      diff --git a/bower_components/select2/docs/_includes/nav/announcements-4.0.html b/bower_components/select2/docs/_includes/nav/announcements-4.0.html
      deleted file mode 100644
      index 733e2c472f..0000000000
      --- a/bower_components/select2/docs/_includes/nav/announcements-4.0.html
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
      -  <ul class="nav s2-docs-sidenav">
      -    <li>
      -      <a href="#select2-400">Select2 4.0.0</a>
      -      <ul class="nav">
      -        <li><a href="#new-features">New features</a></li>
      -        <li><a href="#plugin-system">Plugin system</a></li>
      -        <li><a href="#amd-based-build-system">AMD-based build system</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#migrating-from-select2-35">Migrating from Select2 3.5</a>
      -      <ul class="nav">
      -        <li><a href="#hidden-input">No more hidden input tags</a></li>
      -        <li><a href="#new-matcher">Advanced matching of searches</a></li>
      -        <li><a href="#flexible-placeholders">More flexible placeholders</a></li>
      -        <li><a href="#value-ordering">Display reflects the actual order of the values</a></li>
      -        <li><a href="#changed-options">Changed method and option names</a></li>
      -        <li><a href="#removed-methods">Deprecated and removed methods</a></li>
      -      </ul>
      -    </li>
      -  </ul>
      -  <a class="back-to-top" href="#top">
      -    Back to top
      -  </a>
      -</nav>
      diff --git a/bower_components/select2/docs/_includes/nav/examples.html b/bower_components/select2/docs/_includes/nav/examples.html
      deleted file mode 100644
      index 3e48e4046f..0000000000
      --- a/bower_components/select2/docs/_includes/nav/examples.html
      +++ /dev/null
      @@ -1,96 +0,0 @@
      -<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
      -  <ul class="nav s2-docs-sidenav">
      -    <li>
      -      <a href="#basics">The basics</a>
      -      <ul class="nav">
      -        <li>
      -          <a href="#single">Single select boxes</a>
      -        </li>
      -        <li>
      -          <a href="#multiple">Multiple select boxes</a>
      -        </li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#placeholders">Placeholders</a>
      -    </li>
      -    <li>
      -      <a href="#data">
      -        Data sources
      -      </a>
      -      <ul class="nav">
      -        <li>
      -          <a href="#data-array">Loading array data</a>
      -        </li>
      -        <li>
      -          <a href="#data-ajax">Loading remote data</a>
      -        </li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#disabled">Disabled mode</a>
      -    </li>
      -    <li>
      -      <a href="#disabled-results">Disabled results</a>
      -    </li>
      -    <li>
      -      <a href="#multiple-max">Limiting the number of selections</a>
      -    </li>
      -    <li>
      -      <a href="#hide-search">Hiding the search box</a>
      -    </li>
      -    <li>
      -      <a href="#programmatic-control">Programmatic control</a>
      -      <ul class="nav">
      -        <li>
      -          <a href="#events">DOM events</a>
      -        </li>
      -        <li>
      -          <a href="#programmatic">Programmatic access</a>
      -        </li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#tags">Tagging support</a>
      -    </li>
      -    <li>
      -      <a href="#tokenizer">Automatic tokenization</a>
      -    </li>
      -    <li>
      -      <a href="#matcher">Customizing how results are matched</a>
      -    </li>
      -    <li>
      -      <a href="#localization-rtl-diacritics">Localization, RTL and diacritics support</a>
      -      <ul class="nav">
      -        <li>
      -          <a href="#language">Multiple languages</a>
      -        </li>
      -        <li>
      -          <a href="#rtl">RTL support</a>
      -        </li>
      -        <li>
      -          <a href="#diacritics">Diacritics support</a>
      -        </li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#themes-templating-responsive-design">
      -        Themes, templating and responsive design
      -      </a>
      -      <ul class="nav">
      -        <li>
      -          <a href="#themes">Theme support</a>
      -        </li>
      -        <li>
      -          <a href="#templating">Templating</a>
      -        </li>
      -        <li>
      -          <a href="#responsive">Responsive design</a>
      -        </li>
      -      </ul>
      -    </li>
      -  </ul>
      -  <a class="back-to-top" href="#top">
      -    Back to top
      -  </a>
      -</nav>
      diff --git a/bower_components/select2/docs/_includes/nav/options-old.html b/bower_components/select2/docs/_includes/nav/options-old.html
      deleted file mode 100644
      index b03d3d0701..0000000000
      --- a/bower_components/select2/docs/_includes/nav/options-old.html
      +++ /dev/null
      @@ -1,55 +0,0 @@
      -<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
      -  <ul class="nav s2-docs-sidenav">
      -    <li>
      -      <a href="#core-options">Core Options</a>
      -      <ul class="nav">
      -        <li><a href="#data-attributes">Declaring configuration in the <code>data-*</code> attributes</a></li>
      -        <li><a href="#amd">AMD compatibility</a></li>
      -        <li><a href="#core-options-display">Displaying selections</a></li>
      -        <li><a href="#core-options-results">Returning and displaying results</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#dropdown">Dropdown</a>
      -      <ul class="nav">
      -        <li><a href="#dropdownParent">Attached to body</a></li>
      -        <li><a href="#dropdown-attachContainer">Attached below the container</a></li>
      -        <li><a href="#dropdown-search">Search</a></li>
      -        <li><a href="#dropdown-select-on-close">Select the highlighted option on close</a></li>
      -        <li><a href="#closeOnSelect">Close the dropdown when a result is selected</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#events">Events</a>
      -      <ul class="nav">
      -        <li><a href="#events-public">Public events</a></li>
      -        <li><a href="#events-internal">Internal events</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#adapters">The plugin system (adapters)</a>
      -      <ul class="nav">
      -        <li><a href="#adapters-all">All adapters</a></li>
      -        <li><a href="#selectionAdapter">Container (selection)</a></li>
      -        <li><a href="#dataAdapter">Data set</a></li>
      -        <li><a href="#dropdownAdapter">Dropdown</a></li>
      -        <li><a href="#resultsAdapter">Results</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#setting-default-options">Setting default options</a>
      -    </li>
      -    <li>
      -      <a href="#backwards-compatibility">Backwards compatibility</a>
      -      <ul class="nav">
      -        <li><a href="#compat-matcher">Simplified function for matching data objects</a></li>
      -        <li><a href="#initSelection">Old initial selections with <code>initSelection</code></a></li>
      -        <li><a href="#query">Querying old data with <code>query</code></a></li>
      -        <li><a href="#input-fallback">Compatibility with <code>&lt;input type="text" /&gt;</code></a></li>
      -      </ul>
      -    </li>
      -  </ul>
      -  <a class="back-to-top" href="#top">
      -    Back to top
      -  </a>
      -</nav>
      diff --git a/bower_components/select2/docs/_includes/nav/options.html b/bower_components/select2/docs/_includes/nav/options.html
      deleted file mode 100644
      index 4c1be4f355..0000000000
      --- a/bower_components/select2/docs/_includes/nav/options.html
      +++ /dev/null
      @@ -1,77 +0,0 @@
      -<nav class="s2-docs-sidebar hidden-print hidden-xs hidden-sm">
      -  <ul class="nav s2-docs-sidenav">
      -    <li>
      -      <a href="#core-options">Core options</a>
      -      <ul class="nav">
      -        <li><a href="#setting-default-options">Changing default options</a></li>
      -        <li><a href="#data-attributes">Declaring configuration in the HTML</a></li>
      -        <li><a href="#amd">AMD compatibility</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#data-adapters">Data adapters</a>
      -      <ul class="nav">
      -        <li>
      -          <a href="#data-adapters-select-tag">Using a <code>&lt;select&gt;</code></a>
      -        </li>
      -        <li>
      -          <a href="#data">Loading data from an array</a>
      -        </li>
      -        <li>
      -          <a href="#ajax">Connecting to a remote data source</a>
      -        </li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#selections">Displaying selections</a>
      -      <ul class="nav">
      -        <li>
      -          <a href="#placeholder">Showing a placeholder</a>
      -        </li>
      -        <li>
      -          <a href="#allowClear">Clearing selections</a>
      -        </li>
      -        <li>
      -          <a href="#templateSelection">Templating</a>
      -        </li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#results">Displaying results</a>
      -      <ul class="nav">
      -        <li><a href="#can-i-change-when-search-results-are-loaded">Controlling result loading</a></li>
      -        <li><a href="#can-i-change-how-selecting-results-works">Making selections</a></li>
      -        <li><a href="#can-i-change-how-the-dropdown-is-placed">Placement</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#events">Events</a>
      -      <ul class="nav">
      -        <li><a href="#events-public">Public jQuery events</a></li>
      -        <li><a href="#events-internal">Internal events</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#adapters">The plugin system (adapters)</a>
      -      <ul class="nav">
      -        <li><a href="#adapters-all">All adapters</a></li>
      -        <li><a href="#selectionAdapter">Container (selection)</a></li>
      -        <li><a href="#dataAdapter">Data set</a></li>
      -        <li><a href="#dropdownAdapter">Dropdown</a></li>
      -        <li><a href="#resultsAdapter">Results</a></li>
      -      </ul>
      -    </li>
      -    <li>
      -      <a href="#backwards-compatibility">Deprecated options</a>
      -      <ul class="nav">
      -        <li><a href="#compat-matcher">Simplified function for matching data objects</a></li>
      -        <li><a href="#initSelection">Old initial selections with <code>initSelection</code></a></li>
      -        <li><a href="#query">Querying old data with <code>query</code></a></li>
      -        <li><a href="#input-fallback">Compatibility with <code>&lt;input type="text" /&gt;</code></a></li>
      -      </ul>
      -    </li>
      -  </ul>
      -  <a class="back-to-top" href="#top">
      -    Back to top
      -  </a>
      -</nav>
      diff --git a/bower_components/select2/docs/_includes/navigation.html b/bower_components/select2/docs/_includes/navigation.html
      deleted file mode 100644
      index d694fa1f46..0000000000
      --- a/bower_components/select2/docs/_includes/navigation.html
      +++ /dev/null
      @@ -1,53 +0,0 @@
      -<header class="s2-docs-nav navbar navbar-default navbar-static-top" id="top" role="banner">
      -  <div class="container">
      -    <div class="navbar-header">
      -      <button class="navbar-toggle collapsed" type="button" data-toggle="collapse" data-target=".select2-navbar-collapse">
      -        <span class="sr-only">Toggle navigation</span>
      -        <span class="icon-bar top-bar"></span>
      -        <span class="icon-bar middle-bar"></span>
      -        <span class="icon-bar bottom-bar"></span>
      -      </button>
      -      <a href="./" class="navbar-brand"><img src="/images/logo.png" height="20px"> Select2</a>
      -    </div>
      -
      -    <nav class="collapse navbar-collapse select2-navbar-collapse" role="navigation">
      -      <ul class="nav navbar-nav">
      -        <li{% if page.slug == "examples" %} class="active"{% endif %}>
      -          <a href="./examples.html">Examples</a>
      -        </li>
      -        <li{% if page.slug == "options" %} class="active"{% endif %}>
      -          <a href="./options.html">Options</a>
      -        </li>
      -        <li class="dropdown{% if page.slug == "announcements-4.0" %} active{% endif %}">
      -          <a href="#" class="dropdown-toggle" data-toggle="dropdown">
      -            Topics
      -            <span class="caret"></span>
      -          </a>
      -          <ul class="dropdown-menu">
      -            <li{% if page.slug == "announcements-4.0" %} class="active"{% endif %}>
      -              <a href="./announcements-4.0.html">4.0 Announcement</a>
      -            </li>
      -            <li class="divider"></li>
      -            <li>
      -              <a href="https://github.com/select2/select2/releases">
      -                Release notes
      -              </a>
      -            </li>
      -          </ul>
      -        </li>
      -        <li{% if page.slug == "community" %} class="active"{% endif %}>
      -          <a href="./community.html">Community</a>
      -        </li>
      -      </ul>
      -
      -      <ul class="nav navbar-nav navbar-right">
      -        <li>
      -          <a href="https://github.com/select2/select2">
      -            <i class="fa fa-github"></i>
      -            GitHub
      -          </a>
      -        </li>
      -      </ul>
      -    </nav>
      -  </div>
      -</header>
      diff --git a/bower_components/select2/docs/_includes/notice-previous.html b/bower_components/select2/docs/_includes/notice-previous.html
      deleted file mode 100644
      index 9a444cfc98..0000000000
      --- a/bower_components/select2/docs/_includes/notice-previous.html
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -<section class="notice-previous">
      -  <div class="container text-center">
      -    <a href="http://select2.github.io/select2/">Looking for the Select2 3.5.2 docs?</a>
      -    We have moved them to a new location
      -    <a href="announcements-4.0.html">while we push forward with Select2 4.0</a>.
      -  </div>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options-old/adapters.html b/bower_components/select2/docs/_includes/options-old/adapters.html
      deleted file mode 100644
      index c0807ede12..0000000000
      --- a/bower_components/select2/docs/_includes/options-old/adapters.html
      +++ /dev/null
      @@ -1,209 +0,0 @@
      -<section>
      -  <div class="page-header">
      -    <h1 id="adapters">Adapters</h1>
      -  </div>
      -
      -  <p>
      -    Select2 allows plugins to add additional functionality through the core
      -    adapters. You can change almost anything involving the way Select2 works
      -    to the way Select2 interacts with the page by modifying the core adapters.
      -    Most third-party plugins should provide decorators (used to wrap adapters)
      -    and custom adapters that you can use.
      -  </p>
      -
      -  <p>
      -    Each adapter contains a set of methods which will must always be defined.
      -    Along with the global methods that all adapters must implement, these
      -    methods must be implemented.
      -  </p>
      -
      -  <h2 id="adapters-all">
      -    All adapters
      -  </h2>
      -
      -  <p>
      -    All adapters must implement a set of methods that Select2 will use to
      -    display them and bind any internal events.
      -  </p>
      -
      -<pre class="prettyprint linenums">
      -// The basic HTML that should be rendered by Select2. A jQuery or DOM element
      -// should be returned, which will automatically be placed by Select2 within the
      -// DOM.
      -//
      -// @returns A jQuery or DOM element that contains any elements that must be
      -//   rendered by Select2.
      -Adapter.render = function () {
      -  return $jq;
      -};
      -
      -// Bind to any Select2 or DOM events.
      -//
      -// @param container The Select2 object that is bound to the jQuery element.  You
      -//   can listen to Select2 events with `on` and trigger Select2 events using the
      -//   `trigger` method.
      -// @param $container The jQuery DOM node that all default adapters will be
      -//   rendered within.
      -Adapter.bind = function (container, $container) { };
      -
      -// Position the DOM element within the Select2 DOM container, or in another
      -// place. This allows adapters to be located outside of the Select2 DOM,
      -// such as at the end of the document or in a specific place within the Select2
      -// DOM node.
      -//
      -// Note: This method is not called on data adapters.
      -//
      -// @param $rendered The rendered DOM element that was returned from the call to
      -//   `render`. This may have been modified by Select2, but the root element
      -//   will always be the same.
      -// @param $defaultContainer The default container that Select2 will typically
      -//   place the rendered DOM element within. For most adapters, this is the
      -//   Select2 DOM element.
      -Adapter.position = function ($rendered, $defaultContainer) { };
      -
      -// Destroy any events or DOM elements that have been created.
      -// This is called when `select2("destroy")` is called on an element.
      -Adapter.destroy = function () { };
      -</pre>
      -
      -  <h2 id="selectionAdapter">
      -    Container (selection)
      -  </h2>
      -
      -  <p>
      -    The selection is what is shown to the user as a replacement of the
      -    standard <code>&lt;select&gt;</code> box. It controls the display of the
      -    selection option(s), as well anything else that needs to be embedded
      -    within the container, such as a search box.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd>
      -      <code>selectionAdapter</code>
      -    </dd>
      -
      -    <dt>Default</dt>
      -    <dd>
      -      <code title="select2/selection/single">SingleSelection</code> or
      -      <code title="select2/selection/multiple">MultipleSelection</code>
      -    </dd>
      -
      -    <dt>Base</dt>
      -    <dd>
      -      <code title="select2/selection/base">BaseSelection</code>
      -    </dd>
      -  </dl>
      -
      -<pre class="prettyprint linenums">
      -// Update the selected data.
      -//
      -// @param data An array of data objects that have been generated by the data
      -//   adapter. If no objects should be selected, an empty array will be passed.
      -//
      -// Note: An array will always be passed into this method, even if Select2 is
      -// attached to a source which only accepts a single selection.
      -SelectionAdapter.update = function (data) { };
      -</pre>
      -
      -  <h2 id="dataAdapter">
      -    Data set
      -  </h2>
      -
      -  <p>
      -    The data set is what Select2 uses to generate the possible results that
      -    can be selected, as well as the currently selected results.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd>
      -      <code>dataAdapter</code>
      -    </dd>
      -
      -    <dt>Default</dt>
      -    <dd>
      -      <code title="select2/data/select">SelectAdapter</code>
      -    </dd>
      -
      -    <dt>Base</dt>
      -    <dd>
      -      <code title="select2/data/base">BaseAdapter</code>
      -    </dd>
      -  </dl>
      -
      -<pre class="prettyprint linenums">
      -// Get the currently selected options. This is called when trying to get the
      -// initial selection for Select2, as well as when Select2 needs to determine
      -// what options within the results are selected.
      -//
      -// @param callback A function that should be called when the current selection
      -//   has been retrieved. The first parameter to the function should be an array
      -//   of data objects.
      -DataAdapter.current = function (callback) {
      -  callback(currentData);
      -}
      -
      -// Get a set of options that are filtered based on the parameters that have
      -// been passed on in.
      -//
      -// @param params An object containing any number of parameters that the query
      -//   could be affected by. Only the core parameters will be documented.
      -// @param params.term A user-supplied term. This is typically the value of the
      -//   search box, if one exists, but can also be an empty string or null value.
      -// @param params.page The specific page that should be loaded. This is typically
      -//   provided when working with remote data sets, which rely on pagination to
      -//   determine what objects should be displayed.
      -// @param callback The function that should be called with the queried results.
      -DataAdapter.query = function (params, callback) {
      -  callback(queryiedData);
      -}
      -</pre>
      -
      -  <h2 id="dropdownAdapter">
      -    Dropdown
      -  </h2>
      -
      -  <p>
      -    The dropdown adapter defines the main container that the dropdown should
      -    be held in. <strong>It does not define any extra methods that can be used
      -    for decorators</strong>, but it is common for decorators to attach to the
      -    <code>render</code> and <code>position</code> methods to alter how the
      -    dropdown is altered and positioned.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd>
      -      <code>dropdownAdapter</code>
      -    </dd>
      -
      -    <dt>Default</dt>
      -    <dd>
      -      <code title="select2/dropdown">DropdownAdapter</code>
      -    </dd>
      -  </dl>
      -
      -  <h2 id="resultsAdapter">
      -    Results
      -  </h2>
      -
      -  <p>
      -    The results adapter controls the list of results that the user can select
      -    from. While the results adapter does not define any additional methods
      -    that must be implemented, it makes extensive use of the Select2 event
      -    system for controlling the display of results and messages.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd>
      -      <code>resultsAdapter</code>
      -    </dd>
      -
      -    <dt>Default</dt>
      -    <dd>
      -      <code title="select2/results">ResultsAdapter</code>
      -    </dd>
      -  </dl>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options-old/backwards-compatibility.html b/bower_components/select2/docs/_includes/options-old/backwards-compatibility.html
      deleted file mode 100644
      index 4bdd937203..0000000000
      --- a/bower_components/select2/docs/_includes/options-old/backwards-compatibility.html
      +++ /dev/null
      @@ -1,200 +0,0 @@
      -<section>
      -  <div class="page-header">
      -    <h1 id="compatibility">Backwards compatibility</h1>
      -  </div>
      -
      -  <p>
      -    Select2 offers limited backwards compatibility with the previously 3.5.x
      -    release line, allowing people more efficiently transfer across releases
      -    and get the latest features. For many of the larger changes, such as the
      -    change in how custom data adapters work, compatibility modules were
      -    created that will be used to assist in the upgrade process. It is not
      -    recommended to rely on these compatibility modules, as they will not
      -    always exist, but they make upgrading easier for major changes.
      -  </p>
      -
      -  <p>
      -    <strong>The compatibility modules are only included in the
      -    <a href="index.html#builds-full" class="alert-link">full builds</a> of
      -    Select2</strong>. These files end in <code>.full.js</code>, and the
      -    compatibility modules are prefixed with <code>select2/compat</code>.
      -  </p>
      -
      -  <h2 id="compat-matcher">
      -    Simplified function for matching data objects
      -  </h2>
      -
      -  <p class="alert alert-info">
      -    <a href="announcements-4.0.html#new-matcher" class="alert-link">Added in Select2 4.0.0.</a>
      -    This method was added to make upgrading easier from earlier versions of
      -    Select2.
      -  </p>
      -
      -  <p>
      -    During the <a href="announcements-4.0.html">Select2 4.0.0 release</a>, the
      -    <code>matcher</code> function was changed to allow for more complex
      -    matching of nested objects.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>matcher</code>
      -        </dd>
      -
      -        <dt>Value</dt>
      -        <dd>
      -          A function taking a search <code>term</code> and the data object
      -          <code>text</code>.
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/compat/matcher">oldMatcher</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <p>
      -    The <a href="examples.html#matcher">custom matcher example</a> provides a
      -    guide for how to use this in your own application. For those upgrading
      -    from older versions of Select2, you just need to wrap your old
      -    <code>matcher</code> with this function to maintain compatibility.
      -  </p>
      -
      -  <h2 id="initSelection">
      -    Old initial selections with <code>initSelection</code>
      -  </h2>
      -
      -  <p class="alert alert-warning">
      -    <a href="announcements-4.0.html#removed-initselection" class="alert-link">Deprecated in Select2 4.0.</a>
      -    This has been replaced by another option and is only available in the
      -    <a href="index.html#builds-full" class="alert-link">full builds</a> of
      -    Select2.
      -  </p>
      -
      -  <p>
      -    In the past, Select2 required an option called <code>initSelection</code>
      -    that was defined whenever a custom data source was being used, allowing
      -    for the initial selection for the component to be determined. This has
      -    been replaced by the <code>current</code> method on the
      -    <a href="#dataAdapter">data adapter</a>.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>initSelection</code>
      -        </dd>
      -
      -        <dt>Value</dt>
      -        <dd>
      -          A function taking a <code>callback</code>
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/base">DataAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/compat/initSelection">InitSelection</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <h2 id="query">
      -    Querying old data with <code>query</code>
      -  </h2>
      -
      -  <p class="alert alert-warning">
      -    <a href="announcements-4.0.html#query-to-data-adapter" class="alert-link">Deprecated in Select2 4.0.</a>
      -    This has been replaced by another option and is only available in the
      -    <a href="index.html#builds-full" class="alert-link">full builds</a> of
      -    Select2.
      -  </p>
      -
      -  <p>
      -    In the past, Select2 supported an option called <code>query</code> that
      -    allowed for a custom data source to be used. This option has been replaced
      -    by the <code>query</code> method on the
      -    <a href="#dataAdapter">data adapter</a> and takes a very similar set of
      -    parameters.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>query</code>
      -        </dd>
      -
      -        <dt>Value</dt>
      -        <dd>
      -          A function taking <code>params</code> (including a <code>callback</code>)
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/base">DataAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/compat/query">Query</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <h2 id="input-fallback">
      -    Compatibility with <code>&lt;input type="text" /&gt;</code>
      -  </h2>
      -
      -  <p class="alert alert-warning">
      -    <a href="announcements-4.0.html#hidden-input" class="alert-link">Deprecated in Select2 4.0.</a>
      -    It is now encouraged to use the <code>&lt;select&gt;</code> tag instead.
      -  </p>
      -
      -  <p>
      -    In past versions of Select2, a <code>&lt;select&gt;</code> element could
      -    only be used with a limited subset of options. An
      -    <code>&lt;input type="hidden" /&gt;</code> was required instead, which did
      -    not allow for a graceful fallback for users who did not have JavaScript
      -    enabled. Select2 now supports the <code>&lt;select&gt;</code> element for
      -    all options, so it is no longer required to use <code>&lt;input /&gt;</code>
      -    elements with Select2.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Adapter</dt>
      -    <dd>
      -      <code title="select2/data/base">DataAdapter</code>
      -    </dd>
      -
      -    <dt>Decorator</dt>
      -    <dd>
      -      <code title="select2/compat/inputData">InputData</code>
      -    </dd>
      -  </dl>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options-old/core-options.html b/bower_components/select2/docs/_includes/options-old/core-options.html
      deleted file mode 100644
      index c32ca56f66..0000000000
      --- a/bower_components/select2/docs/_includes/options-old/core-options.html
      +++ /dev/null
      @@ -1,790 +0,0 @@
      -<section>
      -  <h1 id="core-options" class="page-header">Core options</h1>
      -
      -  <p>
      -    Select2 supports a small subset of options in every build that is
      -    generated. Each option typically has a decorator that is required that
      -    wraps an adapter, adding support for the option. This is only required
      -    when a custom adapter is being used, as Select2 will build the required
      -    adapters by default.
      -  </p>
      -
      -  <p>
      -    Select2 will automatically apply decorators to any adapters which have not
      -    been manually overridden. The only time you need to decorate adapters is
      -    when you are using third-party adapters not provided by Select2, or you
      -    are using features not provided in the Select2 core. You can apply a
      -    decorator to an adapter using the
      -    <code title="select2/utils">Utils.Decorate</code> method provided with
      -    Select2.
      -  </p>
      -
      -<pre class="prettyprint linenums">
      -$.fn.select2.amd.require(
      -    ["select2/utils", "select2/selection/single", "select2/selection/placeholder"],
      -    function (Utils, SingleSelection, Placeholder) {
      -  var CustomSelectionAdapter = Utils.Decorate(SingleSelection, Placeholder);
      -});
      -</pre>
      -
      -  <p>
      -    All core options that use decorators or adapters will clearly state it
      -    in the "Decorator" or "Adapter" part of the documentation. Decorators are
      -    typically only compatible with a specific type of adapter, so make sure to
      -    note what adapter is given.
      -  </p>
      -
      -  <h2 id="data-attributes">
      -    Declaring configuration in the <code>data-*</code> attributes
      -  </h2>
      -
      -  <p>
      -    It is recommended that you declare your configuration options for Select2
      -    when initializing Select2. You can also define your configuration options
      -    by using the HTML5 <code>data-*</code> attributes, which will override
      -    any options set when initializing Select2 and any defaults.
      -  </p>
      -
      -  <p>
      -    This means that if you declare your <code>&lt;select&gt;</code> tag as...
      -  </p>
      -
      -<pre class="prettyprint">
      -&lt;select data-tags="true" data-placeholder="Select an option"&gt;&lt;/select&gt;
      -</pre>
      -
      -  <p>
      -    Will be interpreted the same as initializing Select2 as...
      -  </p>
      -
      -<pre class="prettyprint linenums">
      -$("select").select2({
      -  tags: "true",
      -  placeholder: "Select an option"
      -});
      -</pre>
      -
      -  <p>
      -    You can also define nested configurations, which are typically needed for
      -    options such as AJAX. Each level of nesting should be separated by two
      -    dashes (<code>--</code>) instead of one. Due to
      -    <a href="https://github.com/jquery/jquery/issues/2070">a jQuery bug</a>,
      -    nested options using <code>data-*</code> attributes
      -    <a href="https://github.com/select2/select2/issues/2969">do not work in jQuery 1.x</a>.
      -  </p>
      -
      -<pre class="prettyprint">
      -&lt;select data-ajax--url="http://example.org/api/test" data-ajax--cache="true"&gt;&lt;/select&gt;
      -</pre>
      -
      -  <p>
      -    Which will be interpreted the same as initializing Select2 with...
      -  </p>
      -
      -<pre class="prettyprint linenums">
      -$("select").select2({
      -  ajax: {
      -    url: "http://example.org/api/test",
      -    cache: "true"
      -  }
      -});
      -</pre>
      -
      -  <p>
      -    The value of the option is subject to jQuery's
      -    <a href="https://api.jquery.com/data/#data-html5">parsing rules</a> for
      -    HTML5 data attributes.
      -  </p>
      -
      -  <h2 id="amd">
      -    AMD compatibility
      -  </h2>
      -
      -  <p>
      -    You can find more information on how to integrate Select2 with your
      -    existing AMD-based project by
      -    <a href="announcements-4.0.html#builds">viewing the 4.0 release notes</a>.
      -    Select2 automatically loads some modules when the adapters are being
      -    automatically constructed, so those who are using Select2 with a custom
      -    AMD build using their own system may need to specify the paths that are
      -    generated to the Select2 modules.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>amdBase</code>
      -        </dd>
      -
      -        <dt>Default</dt>
      -        <dd>
      -          <code>select2/</code>
      -        </dd>
      -      </dl>
      -    </div>
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>amdLanguageBase</code>
      -        </dd>
      -
      -        <dt>Default</dt>
      -        <dd>
      -          <code>select2/i18n/</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <h2 id="core-options-display">
      -    Displaying selections
      -  </h2>
      -
      -  <p>
      -    Select2 provides options that allow you to directly affect how the
      -    container that holds the current selection is displayed.
      -  </p>
      -
      -  <h3 id="placeholder">
      -    Placeholders
      -  </h3>
      -
      -  <p>
      -    Select2 can display a placeholder for a single-value select that will
      -    replace an option, or be shown when no options are selected for
      -    multiple-value selects. You can find an example on the
      -    <a href="examples.html#placeholders">example page</a>.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>placeholder</code>
      -        </dd>
      -
      -        <dt>Value</dt>
      -        <dd>string or object</dd>
      -      </dl>
      -
      -      <hr />
      -
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/selection/base">SelectionAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/selection/placeholder">Placeholder</code>
      -          and
      -          <code title="select2/dropdown/hidePlaceholder">HidePlaceholder</code>
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <div class="alert alert-warning">
      -        <strong>Heads up!</strong>
      -        Because browsers assume that the first <code>option</code> in
      -        single-value select boxes is selected, you should add an empty
      -        <code>&lt;option&gt;&lt;/option&gt;</code> tag that the placeholder
      -        should use or it may not work.
      -      </div>
      -    </div>
      -  </div>
      -
      -  <p>
      -    If the <strong>value is a string</strong>, the placeholder will be
      -    displayed when a <strong>blank option</strong> is used as the placeholder.
      -    The <strong>value</strong> will be the message to show to users as the
      -    placeholders.
      -  </p>
      -
      -<pre class="prettyprint">
      -placeholder: "Select a repository"
      -</pre>
      -
      -      <p>
      -        If the <strong>value is an object</strong>, the object should be
      -        compatible with Select2's internal objects. The <code>id</code> should
      -        be the id to look for when determining if the placeholder should be
      -        displayed. The <code>text</code> should be the placeholder to display
      -        when that option is selected.
      -      </p>
      -
      -<pre class="prettyprint linenums">
      -placeholder: {
      -  id: "-1",
      -  text: "Select a repository"
      -}
      -</pre>
      -
      -  <div class="alert alert-info">
      -    You should <strong>pass in an object</strong> when you are using a
      -    framework that <strong>creates its own placeholder option</strong>. The
      -    <strong>id</strong> should be the same as the <code>value</code>
      -    attribute on the <code>option</code>.
      -  </div>
      -
      -  <p id="allowClear">
      -    You can allow a selected option to be cleared back to the placeholder by
      -    enabling the <code>allowClear</code> option.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>allowClear</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>boolean</dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/selection/base">SelectionAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/selection/allowClear">AllowClear</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <p>
      -    This will display an "x" that the user can click to clear the current
      -    selection. It is designed to be used for cases where a single selection
      -    can be made.
      -  </p>
      -
      -  <h3 id="multiple">
      -    Multiple selections
      -  </h3>
      -
      -  <p>
      -    Select2 can display either a single selection or multiple selections.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd><code>multiple</code></dd>
      -
      -    <dt>Value</dt>
      -    <dd>boolean (<code>true</code> or <code>false</code>)</dd>
      -  </dl>
      -
      -  <p>
      -    This option will determine what the <code>SelectAdapter</code> (used by
      -    default) should use to set the value of the underlying <code>select</code>
      -    element. It will also determine if the <code>MultipleSelection</code>
      -    adapter should be used.
      -  </p>
      -
      -  <h3 id="width">
      -    Container width
      -  </h3>
      -
      -  <p>
      -    Select2 will try to match the width of the original element as closely as
      -    possible. Sometimes this isn't perfect, which is what you can tell Select2
      -    how to determine the width.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <table class="table table-striped table-bordered">
      -        <thead>
      -          <tr>
      -            <th>Value</th>
      -            <th>Description</th>
      -          </tr>
      -        </thead>
      -        <tbody>
      -          <tr>
      -            <td><code>"element"</code></td>
      -            <td>
      -              Uses javascript to calculate the width of the source element.
      -            </td>
      -          </tr>
      -          <tr>
      -            <td><code>"style"</code></td>
      -            <td>
      -              Copies the value of the width <code>style</code> attribute set on the source element.
      -            </td>
      -          </tr>
      -          <tr>
      -            <td><code>"resolve"</code></td>
      -            <td>
      -              Tries to use <code>style</code> to determine the width, falling back to <code>element</code>.
      -            </td>
      -          </tr>
      -          <tr>
      -            <td>Anything else</td>
      -            <td>
      -              The value of the <code>width</code> option is directly set as the width of the container.
      -            </td>
      -          </tr>
      -        </tbody>
      -      </table>
      -    </div>
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>width</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>string</dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <h3 id="language">
      -    Internationalization (Language support)
      -  </h3>
      -
      -  <p>
      -    Messages will be displayed to users when necessary, such as when no
      -    search results were found or more characters need to be entered in order
      -    for a search to be made. These messages have been
      -    <a href="community.html#translations">translated into many languages</a>
      -    by contributors to Select2, but you can also provide your own
      -    translations.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>language</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>object or string</dd>
      -      </dl>
      -
      -      <hr />
      -
      -      <dl class="dl-horizontal">
      -        <dt>Module</dt>
      -        <dd>
      -          <code title="select2/translation">Translation</code>
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <p class="alert alert-warning">
      -        <strong>Heads up!</strong> When using translations provided by Select2,
      -        you must make sure to include the translation file in your page after
      -        Select2.
      -      </p>
      -    </div>
      -  </div>
      -
      -  <p>
      -    When a string is passed in as the language, Select2 will try to resolve
      -    it into a language file. This allows you to specify your own language
      -    files, which must be defined as an AMD module. If the language file
      -    cannot be found, Select2 will assume it is a language code controlled by
      -    Select2, and it will try to load the translations for that language
      -    instead.
      -  </p>
      -
      -  <p>
      -    You can include your own translations by providing an object similar to
      -    the one below.
      -  </p>
      -
      -<pre class="prettyprint linenums">
      -language: {
      -  // You can find all of the options in the language files provided in the
      -  // build. They all must be functions that return the string that should be
      -  // displayed.
      -  inputTooShort: function () {
      -    return "You must enter more characters...";
      -  }
      -}
      -</pre>
      -
      -  <h3 id="templating">
      -    Templating results and selections
      -  </h3>
      -
      -  <p>
      -    By default, Select2 will display the option text within the list of
      -    results and when the option has been selected.  Select2 comes with options
      -    that allow you to further customize the display of results and selections,
      -    allowing you to display them however you want.
      -  </p>
      -
      -  <h4 id="templateSelection">
      -    Customizing the display of selections
      -  </h4>
      -
      -  <p>
      -    When an option is displayed after it has been selected, it is passed
      -    through a formatting function that determines what is displayed. By
      -    default, the function only returns the <code>text</code> key of the data
      -    object.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd><code>templateSelection</code></dd>
      -
      -    <dt>Value</dt>
      -    <dd>A function taking a <code>selection</code> object</dd>
      -  </dl>
      -
      -  <div class="alert alert-info">
      -    <strong>Anything rendered as a selection is templated.</strong>
      -    This includes placeholders and pre-existing selections that are displayed,
      -    so you must ensure that your templating functions can support them.
      -  </div>
      -
      -  <p>
      -    The <code>templateSelection</code> function should return a string
      -    containing the text to be displayed, or an object (such as a jQuery
      -    object) that contains the data that should be displayed.
      -  </p>
      -
      -  <p>
      -    <strong>Strings are assumed to contain only text</strong> and will be
      -    passed through the <code>escapeMarkup</code> function, which strips any
      -    HTML markup.
      -  </p>
      -
      -  <p>
      -    <strong>
      -      Anything else will be passed
      -      <a href="https://api.jquery.com/append/">directly to <code>jQuery.fn.append</code></a>
      -    </strong> and will be handled directly by jQuery.  Any markup, such as
      -    HTML, returned will not be escaped and it is up to you to escape any
      -    malicious input provided by users.
      -  </p>
      -
      -  <h4 id="templateResult">
      -    Customizing the display of results
      -  </h4>
      -
      -  <p>
      -    When an option is displayed after it has been selected, it is passed
      -    through a formatting function that determines what is displayed. By
      -    default, the function only returns the <code>text</code> key of the data
      -    object.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd><code>templateResult</code></dd>
      -
      -    <dt>Value</dt>
      -    <dd>A function taking a <code>result</code> object</dd>
      -  </dl>
      -
      -  <div class="alert alert-info">
      -    <strong>Anything rendered in the results is templated.</strong>
      -    This includes results such as the "Searching..." and "Loading more..."
      -    text which will periodically be displayed, which allows you to add more
      -    advanced formatting to these automatically generated options.
      -  </div>
      -
      -  <p>
      -    The <code>templateResult</code> function should return a string
      -    containing the text to be displayed, or an object (such as a jQuery
      -    object) that contains the data that should be displayed.  It can also
      -    return <code>null</code>, which will prevent the option from being
      -    displayed in the results list.
      -  </p>
      -
      -  <p>
      -    <strong>Strings are assumed to contain only text</strong> and will be
      -    passed through the <code>escapeMarkup</code> function, which strips any
      -    HTML markup.
      -  </p>
      -
      -  <p>
      -    <strong>
      -      Anything else will be passed
      -      <a href="https://api.jquery.com/append/">directly to <code>jQuery.fn.append</code></a>
      -    </strong> and will be handled directly by jQuery.  Any markup, such as
      -    HTML, returned will not be escaped and it is up to you to escape any
      -    malicious input provided by users.
      -  </p>
      -
      -  <h2 id="core-options-results">
      -    Returning and displaying results
      -  </h2>
      -
      -  <p>
      -    Select2 can work on many different data sets ranging from local options,
      -    the same way that a <code>&lt;select&gt;</code> typically works, from
      -    remote options where a server generates the results that users can select
      -    from.
      -  </p>
      -
      -  <h3 id="data">
      -    Array
      -  </h3>
      -
      -  <p>
      -    Select2 allows creating the results based on an array of data objects that
      -    is included when initializing Select2.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>data</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>array of objects</dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/array">ArrayAdapter</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <p>
      -    The objects that the users can select from should be passed as an array
      -    with each object containing <code>id</code> and <code>text</code>
      -    properties.
      -  </p>
      -
      -  <h3 id="ajax">
      -    AJAX
      -  </h3>
      -
      -  <p>
      -    Select2 allows searching for results from remote data sources using AJAX
      -    requests.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>ajax</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>object</dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/ajax">AjaxAdapter</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <p>
      -    All options passed to this option will be directly passed to the
      -    <code>$.ajax</code> function that executes AJAX requests. There are a few
      -    custom options that Select2 will intercept, allowing you to customize the
      -    request as it is being made.
      -
      -<pre class="prettyprint linenums">
      -ajax: {
      -  // The number of milliseconds to wait for the user to stop typing before
      -  // issuing the ajax request.
      -  delay: 250,
      -  // You can craft a custom url based on the parameters that are passed into the
      -  // request. This is useful if you are using a framework which has
      -  // JavaScript-based functions for generating the urls to make requests to.
      -  //
      -  // @param params The object containing the parameters used to generate the
      -  //   request.
      -  // @returns The url that the request should be made to.
      -  url: function (params) {
      -    return UrlGenerator.Random();
      -  },
      -  // You can pass custom data into the request based on the parameters used to
      -  // make the request. For `GET` requests, the default method, these are the
      -  // query parameters that are appended to the url. For `POST` requests, this
      -  // is the form data that will be passed into the request. For other requests,
      -  // the data returned from here should be customized based on what jQuery and
      -  // your server are expecting.
      -  //
      -  // @param params The object containing the parameters used to generate the
      -  //   request.
      -  // @returns Data to be directly passed into the request.
      -  data: function (params) {
      -    var queryParameters = {
      -      q: params.term
      -    }
      -
      -    return queryParameters;
      -  },
      -  // You can modify the results that are returned from the server, allowing you
      -  // to make last-minute changes to the data, or find the correct part of the
      -  // response to pass to Select2. Keep in mind that results should be passed as
      -  // an array of objects.
      -  //
      -  // @param data The data as it is returned directly by jQuery.
      -  // @returns An object containing the results data as well as any required
      -  //   metadata that is used by plugins. The object should contain an array of
      -  //   data objects as the `results` key.
      -  processResults: function (data) {
      -    return {
      -      results: data
      -    };
      -  },
      -  // You can use a custom AJAX transport function if you do not want to use the
      -  // default one provided by jQuery.
      -  //
      -  // @param params The object containing the parameters used to generate the
      -  //   request.
      -  // @param success A callback function that takes `data`, the results from the
      -  //   request.
      -  // @param failure A callback function that indicates that the request could
      -  //   not be completed.
      -  // @returns An object that has an `abort` function that can be called to abort
      -  //   the request if needed.
      -  transport: function (params, success, failure) {
      -    var $request = $.ajax(params);
      -
      -    $request.then(success);
      -    $request.fail(failure);
      -
      -    return $request;
      -  }
      -}
      -</pre>
      -  </p>
      -
      -  <h3 id="tags">
      -    Tags
      -  </h3>
      -
      -  <p>
      -    Users can create their own options based on the text that they have
      -    entered.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>tags</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>boolean / array of objects</dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/base">DataAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/data/tags">Tags</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <p>
      -    If the <code>tags</code> option is passed into Select2, if a user types
      -    anything into the search box which doesn't already exist, it will be
      -    displayed at the top and the user will be able to select it.
      -  </p>
      -
      -  <p>
      -    <strong>For backwards compatibility</strong>, if an array of objects is
      -    passed in with the <code>tags</code> option, the options will be
      -    automatically created and the user will be able to select from them.
      -    This is the <strong>same as how <a href="#data">array data</a>
      -    works</strong>, and has similar limitations.
      -  </p>
      -
      -  <h3 id="matcher">
      -    Change how options are matched when searching
      -  </h3>
      -
      -  <p>
      -    When users filter down the results by entering search terms into the
      -    search box, Select2 uses an internal "matcher" to match search terms to
      -    results. <strong>When a remote data set is used, Select2 expects that the
      -    returned results have already been filtered.</strong>
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Key</dt>
      -    <dd>
      -      <code>matcher</code>
      -    </dd>
      -
      -    <dt>Value</dt>
      -    <dd>
      -      A function taking search <code>params</code> and the
      -      <code>data</code> object.
      -    </dd>
      -  </dl>
      -
      -  <p>
      -    Select2 will pass the individual data objects that have been passed back
      -    from the data adapter into the <code>matcher</code> individually to
      -    determine if they should be displayed. Only the first-level objects will
      -    be passed in, so <strong>if you are working with nested data, you need to
      -    match those individually</strong>.
      -  </p>
      -
      -<pre class="prettyprint linenums">
      -matcher: function (params, data) {
      -  // If there are no search terms, return all of the data
      -  if ($.trim(params.term) === '') {
      -    return data;
      -  }
      -
      -  // `params.term` should be the term that is used for searching
      -  // `data.text` is the text that is displayed for the data object
      -  if (data.text.indexOf(params.term) > -1) {
      -    var modifiedData = $.extend({}, data, true);
      -    modifiedData.text += ' (matched)';
      -
      -    // You can return modified objects from here
      -    // This includes matching the `children` how you want in nested data sets
      -    return modifiedData;
      -  }
      -
      -  // Return `null` if the term should not be displayed
      -  return null;
      -}
      -</pre>
      -
      -  <p>
      -    This allows for more advanced matching when working with nested objects,
      -    allowing you to handle them however you want. For those who are not
      -    looking to implement highly customized matching, but instead are just
      -    looking to change the matching algorithm for the text, a
      -    <a href="#compat-matcher">compatibility modules</a> has been created to
      -    make it easier.
      -  </p>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options-old/dropdown.html b/bower_components/select2/docs/_includes/options-old/dropdown.html
      deleted file mode 100644
      index 87629077dd..0000000000
      --- a/bower_components/select2/docs/_includes/options-old/dropdown.html
      +++ /dev/null
      @@ -1,308 +0,0 @@
      -<section>
      -  <div class="page-header">
      -    <h1 id="dropdown">Dropdown</h1>
      -  </div>
      -
      -  <p>
      -    Select2 allows you to change the way that the dropdown works, allowing you
      -    to do anything from attach it to a different location in the document or
      -    add a search box.
      -  </p>
      -
      -  <h2 id="dropdownParent">
      -    Attached to body
      -  </h2>
      -
      -  <p>
      -    By default, Select2 will attach the dropdown to the end of the body and
      -    will absolutely position it to appear below the selection container.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>dropdownParent</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>jQuery element or DOM node</dd>
      -
      -        <hr />
      -
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/dropdown">DropdownAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/dropdown/attachBody">AttachBody</code>
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <div class="alert alert-warning">
      -        <strong>Heads up!</strong>
      -        This will cause DOM events to be raised outside of the standard
      -        Select2 DOM container. This can cause issues with
      -        third-party components such as modals.
      -      </div>
      -    </div>
      -  </div>
      -
      -  <p>
      -    When the dropdown is attached to the body, you are not limited to just
      -    displaying the dropdown below the container. Select2 will display above
      -    the container if there is not enough space below the container, but there
      -    is enough space above it. You are also not limited to displaying the
      -    dropdown within the parent container, which means Select2 will render
      -    correctly inside of modals and other small containers.
      -  </p>
      -
      -  <h2 id="dropdown-attachContainer">
      -    Attached below the container
      -  </h2>
      -
      -  <p>
      -    Select2 can place the dropdown directly after the selection container, so
      -    it will appear in the same location within the DOM as the rest of Select2.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/dropdown">DropdownAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/dropdown/attachContainer">AttachContainer</code>
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <div class="alert alert-warning">
      -        <strong>Check your build.</strong> This module is only included in the
      -        <a href="index.html#builds-full" class="alert-link">full builds</a> of
      -        Select2.
      -      </div>
      -    </div>
      -  </div>
      -
      -  <div class="alert alert-info">
      -    <strong>
      -      <a href="https://harvesthq.github.io/chosen/">Harvest Chosen</a>
      -      migrators!
      -    </strong>
      -    If you are migrating to Select2 from Chosen, this option will cause
      -    Select2 to position the dropdown in a similar way.
      -  </div>
      -
      -  <h2 id="dropdown-search">
      -    Search
      -  </h2>
      -
      -  <p>
      -    Users can filter down the results by typing a search term into a box that
      -    is displayed at the top of the dropdown.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Adapter</dt>
      -    <dd>
      -      <code title="select2/dropdown">DropdownAdapter</code>
      -    </dd>
      -
      -    <dt>Decorator</dt>
      -    <dd>
      -      <code title="select2/dropdown/search">DropdownSearch</code>
      -    </dd>
      -  </dl>
      -
      -  <p>
      -    A search box is added to the top of the dropdown automatically for select
      -    boxes where only a single option can be selected.
      -  </p>
      -
      -  <h3 id="dropdown-minimumInputLength">
      -    Minimum search term length to filter results
      -  </h3>
      -
      -  <p>
      -    Sometimes when working with large data sets, it is more efficient to start
      -    filtering the results when the search term is a certain length. This is
      -    very common when working with remote data sets, as allows for only
      -    significant search terms to be used.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>minimumInputLength</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>integer</dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/base">DataAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/data/minimumInputLength">MinimumInputLength</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <h3 id="dropdown-maximumInputLength">
      -    Maximum search term length to filter results
      -  </h3>
      -
      -  <p>
      -    In some cases, search terms need to be limited to a certain range. Select2
      -    allows you to limit the length of the search term such that it does not
      -    exceed a certain length.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>maximumInputLength</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>integer</dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/base">DataAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/data/maximumInputLength">MaximumInputLength</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <h3 id="dropdown-maximumInputLength">
      -    Minimum results to display the search box
      -  </h3>
      -
      -  <p>
      -    When working with smaller data sets, the search box can take up more space
      -    that is necessary, as there are not enough results for filtering to be
      -    effective. Select2 allows you to only display the search box when the
      -    number of search results reaches a certain threshold.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>minimumResultsForSearch</code></dd>
      -
      -        <dt>Value</dt>
      -        <dd>integer</dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/dropdown">DropdownAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/dropdown/minimumResultsForSearch">MinimumResultsForSearch</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <h2 id="dropdown-select-on-close">
      -    Select the highlighted option on close
      -  </h2>
      -
      -  <p>
      -    When users close the dropdown, the last highlighted option can be
      -    automatically selected. This is commonly used in combination with
      -    <a href="#tags">tagging</a> and <a href="#placeholder">placeholders</a>
      -    and other situations where the user is required to select an option, or
      -    they need to be able to quickly select multiple options.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Adapter</dt>
      -    <dd>
      -      <code title="select2/results">ResultsAdapter</code>
      -    </dd>
      -
      -    <dt>Decorator</dt>
      -    <dd>
      -      <code title="select2/dropdown/selectOnClose">SelectOnClose</code>
      -    </dd>
      -  </dl>
      -
      -  <h2 id="closeOnSelect">
      -    Close the dropdown when a result is selected
      -  </h2>
      -
      -  <p>
      -    Select2 will automatically close the dropdown when an element is selected,
      -    similar to what is done with a normal select box.  This behavior can be
      -    changed though to keep the dropdown open when results are selected,
      -    allowing for multiple options to be selected quickly.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd><code>closeOnSelect</code></dd>
      -
      -        <dt>Default</dt>
      -        <dd><code>true</code></dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/dropdown">DropdownAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/dropdown/closeOnSelect">CloseOnSelect</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <p>
      -    If this decorator is not used (or <code>closeOnSelect</code> is set to
      -    <code>false</code>), the dropdown will not automatically close when a
      -    result is selected.  The dropdown will also never close if the
      -    <kbd>ctrl</kbd> key is held down when the result is selected.
      -  </p>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options-old/events.html b/bower_components/select2/docs/_includes/options-old/events.html
      deleted file mode 100644
      index bf4f39a942..0000000000
      --- a/bower_components/select2/docs/_includes/options-old/events.html
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -<section>
      -  <div id="events" class="page-header">
      -    <h1>Events</h1>
      -  </div>
      -
      -  <p>
      -    Select2 has an internal event system that is used to notify parts of the
      -    component that state has changed, as well as an adapter that allows some
      -    of these events to be relayed to the outside word.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Adapter</dt>
      -    <dd>
      -      <code title="select2/selection">SelectionAdapter</code>
      -    </dd>
      -
      -    <dt>Decorator</dt>
      -    <dd>
      -      <code title="select2/selection/eventRelay">EventRelay</code>
      -    </dd>
      -  </dl>
      -
      -  <h2 id="events-public">
      -    Public events
      -  </h2>
      -
      -  <p>
      -    All public events are relayed using the jQuery event system, and they are
      -    triggered on the <code>&lt;select&gt;</code> element that Select2 is
      -    attached to. You can attach to them using the
      -    <a href="https://api.jquery.com/on/"><code>.on</code> method</a> provided
      -    by jQuery.
      -  </p>
      -
      -  <h2 id="events-internal">
      -    Internal events
      -  </h2>
      -
      -  <p>
      -    Select2 triggers internal events using its own internal event system,
      -    which allows adapters to communicate with each other. These events are not
      -    accessible through the jQuery event system.
      -  </p>
      -
      -  <p>
      -    You can find more information on the public events triggered by individual
      -    adapters in <a href="#adapters">the individual adapter documentation</a>.
      -  </p>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options-old/setting-default-options.html b/bower_components/select2/docs/_includes/options-old/setting-default-options.html
      deleted file mode 100644
      index f2c74f6096..0000000000
      --- a/bower_components/select2/docs/_includes/options-old/setting-default-options.html
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -<section>
      -  <h1 id="setting-default-options">Setting default options</h1>
      -
      -  <p>
      -    In some cases, you need to set the default options for all instances of
      -    Select2 in your web application. This is especially useful when you are
      -    migrating from past versions of Select2, or you are using non-standard
      -    options <a href="#amd">like custom AMD builds</a>. Select2 exposes the
      -    default options through <code>$.fn.select2.defaults</code>, which allows
      -    you to set them globally.
      -  </p>
      -
      -  <p>
      -    When setting options globally, any past defaults that have been set will
      -    be overriden. Default options are only used when an option is requested
      -    that has not been set during initialization.
      -  </p>
      -
      -  <p>
      -    <strong>You can set default options</strong> by calling
      -    <code>$.fn.select2.defaults.set("key", "value")</code>. The key that is
      -    set should take the same format as keys set using
      -    <a href="#data-attributes">HTML <code>data-*</code> attributes</a> which
      -    means that two dashes (<code>--</code>) will be replaced by a level of
      -    nesting, and a single dash (<code>-</code>) will convert it to a camelCase
      -    string.
      -  </p>
      -
      -<pre class="prettyprint">
      -$.fn.select2.defaults.set("theme", "classic");
      -</pre>
      -
      -  <p>
      -    <strong>You can reset the default options</strong> by calling
      -    <code>$.fn.select2.defaults.reset()</code>.
      -  </p>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options/compatibility.html b/bower_components/select2/docs/_includes/options/compatibility.html
      deleted file mode 100644
      index a7f6197e28..0000000000
      --- a/bower_components/select2/docs/_includes/options/compatibility.html
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -<section>
      -  <h1>
      -    Backwards compatibility
      -  </h1>
      -
      -  {% include options/compatibility/matcher.html %}
      -  {% include options/compatibility/initial-selection.html %}
      -  {% include options/compatibility/query-function.html %}
      -  {% include options/compatibility/text-input.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/compatibility/initial-selection.html b/bower_components/select2/docs/_includes/options/compatibility/initial-selection.html
      deleted file mode 100644
      index 62fd09335a..0000000000
      --- a/bower_components/select2/docs/_includes/options/compatibility/initial-selection.html
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -<section>
      -  <h2 id="initSelection">
      -    Old initial selections with <code>initSelection</code>
      -  </h2>
      -
      -  <p class="alert alert-warning">
      -    <a href="announcements-4.0.html#removed-initselection" class="alert-link">Deprecated in Select2 4.0.</a>
      -    This has been replaced by another option and is only available in the
      -    <a href="index.html#builds-full" class="alert-link">full builds</a> of
      -    Select2.
      -  </p>
      -
      -  <p>
      -    In the past, Select2 required an option called <code>initSelection</code>
      -    that was defined whenever a custom data source was being used, allowing
      -    for the initial selection for the component to be determined. This has
      -    been replaced by the <code>current</code> method on the
      -    <a href="#dataAdapter">data adapter</a>.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>initSelection</code>
      -        </dd>
      -
      -        <dt>Value</dt>
      -        <dd>
      -          A function taking a <code>callback</code>
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/base">DataAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/compat/initSelection">InitSelection</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/compatibility/introduction.html b/bower_components/select2/docs/_includes/options/compatibility/introduction.html
      deleted file mode 100644
      index 0e82aabe14..0000000000
      --- a/bower_components/select2/docs/_includes/options/compatibility/introduction.html
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -<section>
      -  <p>
      -    Select2 offers limited backwards compatibility with the previously 3.5.x
      -    release line, allowing people more efficiently transfer across releases
      -    and get the latest features. For many of the larger changes, such as the
      -    change in how custom data adapters work, compatibility modules were
      -    created that will be used to assist in the upgrade process. It is not
      -    recommended to rely on these compatibility modules, as they will not
      -    always exist, but they make upgrading easier for major changes.
      -  </p>
      -
      -  <p>
      -    <strong>The compatibility modules are only included in the
      -    <a href="index.html#builds-full" class="alert-link">full builds</a> of
      -    Select2</strong>. These files end in <code>.full.js</code>, and the
      -    compatibility modules are prefixed with <code>select2/compat</code>.
      -  </p>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/compatibility/matcher.html b/bower_components/select2/docs/_includes/options/compatibility/matcher.html
      deleted file mode 100644
      index 150f72c192..0000000000
      --- a/bower_components/select2/docs/_includes/options/compatibility/matcher.html
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -<section>
      -  <h2 id="compat-matcher">
      -    Simplified function for matching data objects
      -  </h2>
      -
      -  <p class="alert alert-info">
      -    <a href="announcements-4.0.html#new-matcher" class="alert-link">Added in Select2 4.0.0.</a>
      -    This method was added to make upgrading easier from earlier versions of
      -    Select2.
      -  </p>
      -
      -  <p>
      -    During the <a href="announcements-4.0.html">Select2 4.0.0 release</a>, the
      -    <code>matcher</code> function was changed to allow for more complex
      -    matching of nested objects.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>matcher</code>
      -        </dd>
      -
      -        <dt>Value</dt>
      -        <dd>
      -          A function taking a search <code>term</code> and the data object
      -          <code>text</code>.
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/compat/matcher">oldMatcher</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -
      -  <p>
      -    The <a href="examples.html#matcher">custom matcher example</a> provides a
      -    guide for how to use this in your own application. For those upgrading
      -    from older versions of Select2, you just need to wrap your old
      -    <code>matcher</code> with this function to maintain compatibility.
      -  </p>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/compatibility/query-function.html b/bower_components/select2/docs/_includes/options/compatibility/query-function.html
      deleted file mode 100644
      index f5f557ded3..0000000000
      --- a/bower_components/select2/docs/_includes/options/compatibility/query-function.html
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -<section>
      -  <h2 id="query">
      -    Querying old data with <code>query</code>
      -  </h2>
      -
      -  <p class="alert alert-warning">
      -    <a href="announcements-4.0.html#query-to-data-adapter" class="alert-link">Deprecated in Select2 4.0.</a>
      -    This has been replaced by another option and is only available in the
      -    <a href="index.html#builds-full" class="alert-link">full builds</a> of
      -    Select2.
      -  </p>
      -
      -  <p>
      -    In the past, Select2 supported an option called <code>query</code> that
      -    allowed for a custom data source to be used. This option has been replaced
      -    by the <code>query</code> method on the
      -    <a href="#dataAdapter">data adapter</a> and takes a very similar set of
      -    parameters.
      -  </p>
      -
      -  <div class="row">
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Key</dt>
      -        <dd>
      -          <code>query</code>
      -        </dd>
      -
      -        <dt>Value</dt>
      -        <dd>
      -          A function taking <code>params</code> (including a <code>callback</code>)
      -        </dd>
      -      </dl>
      -    </div>
      -
      -    <div class="col-sm-6">
      -      <dl class="dl-horizontal">
      -        <dt>Adapter</dt>
      -        <dd>
      -          <code title="select2/data/base">DataAdapter</code>
      -        </dd>
      -
      -        <dt>Decorator</dt>
      -        <dd>
      -          <code title="select2/compat/query">Query</code>
      -        </dd>
      -      </dl>
      -    </div>
      -  </div>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/compatibility/text-input.html b/bower_components/select2/docs/_includes/options/compatibility/text-input.html
      deleted file mode 100644
      index 4cea8c86c1..0000000000
      --- a/bower_components/select2/docs/_includes/options/compatibility/text-input.html
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -<section>
      -  <h2 id="input-fallback">
      -    Compatibility with <code>&lt;input type="text" /&gt;</code>
      -  </h2>
      -
      -  <p class="alert alert-warning">
      -    <a href="announcements-4.0.html#hidden-input" class="alert-link">Deprecated in Select2 4.0.</a>
      -    It is now encouraged to use the <code>&lt;select&gt;</code> tag instead.
      -  </p>
      -
      -  <p>
      -    In past versions of Select2, a <code>&lt;select&gt;</code> element could
      -    only be used with a limited subset of options. An
      -    <code>&lt;input type="hidden" /&gt;</code> was required instead, which did
      -    not allow for a graceful fallback for users who did not have JavaScript
      -    enabled. Select2 now supports the <code>&lt;select&gt;</code> element for
      -    all options, so it is no longer required to use <code>&lt;input /&gt;</code>
      -    elements with Select2.
      -  </p>
      -
      -  <dl class="dl-horizontal">
      -    <dt>Adapter</dt>
      -    <dd>
      -      <code title="select2/data/base">DataAdapter</code>
      -    </dd>
      -
      -    <dt>Decorator</dt>
      -    <dd>
      -      <code title="select2/compat/inputData">InputData</code>
      -    </dd>
      -  </dl>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/core.html b/bower_components/select2/docs/_includes/options/core.html
      deleted file mode 100644
      index df834804f6..0000000000
      --- a/bower_components/select2/docs/_includes/options/core.html
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -<section>
      -  <h1>
      -    Core options
      -  </h1>
      -
      -  {% include options/core/options.html %}
      -  {% include options/core/data-attributes.html %}
      -  {% include options/core/amd-support.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/core/amd-support.html b/bower_components/select2/docs/_includes/options/core/amd-support.html
      deleted file mode 100644
      index 2cb6b30766..0000000000
      --- a/bower_components/select2/docs/_includes/options/core/amd-support.html
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -<section>
      -  <h2 id="amd">
      -    Can I use Select2 with my AMD or CommonJS loader?
      -  </h2>
      -
      -  <p>
      -    Select2 should work with most AMD- or CommonJS-compliant module loaders, including <a href="http://requirejs.org/">RequireJS</a> and <a href="https://github.com/jrburke/almond">almond</a>. Select2 ships with a modified version of the <a href="https://github.com/umdjs/umd/blob/f208d385768ed30cd0025d5415997075345cd1c0/templates/jqueryPlugin.js">UMD jQuery template</a> that supports both CommonJS and AMD environments.
      -  </p>
      -
      -  <h3>
      -    How do I tell Select2 where to look for modules?
      -  </h3>
      -
      -  <p>
      -    For most AMD and CommonJS setups, the location of the data files used by Select2 will be automatically determined and handled without you needing to do anything.
      -  </p>
      -
      -  <p>
      -    If you are using Select2 in a build environment where preexisting module names are changed during a build step, Select2 may not be able to find optional dependencies or language files. You can manually set the prefixes to use for these files using the <code>amdBase</code> and <code>amdLanugageBase</code> options.
      -  </p>
      -
      -{% highlight js linenos %}
      -$.fn.select2.defaults.set('amdBase', 'select2/');
      -$.fn.select2.defaults.set('amdLanguageBase', 'select2/i18n/');
      -{% endhighlight %}
      -
      -  <h3>
      -    Select2 is being placed before jQuery in my JavaScript file
      -  </h3>
      -
      -  <p>
      -    Due to <a href="https://github.com/jrburke/requirejs/issues/1342">a bug in older versions</a> of the r.js build tool, Select2 was sometimes placed before jQuery in then compiled build file. Because of this, Select2 will trigger an error because it won't be able to find or load jQuery.
      -  </p>
      -
      -  <p>
      -    By upgrading to version 2.1.18 or higher of the r.js build tool, you will be able to fix the issue.
      -  </p>
      -
      -  <h3>
      -    Should I point to the files in <code>dist</code> or <code>src</code>?
      -  </h3>
      -
      -  <p>
      -    Select2 internally uses AMD and the r.js build tool to build the files located in the <code>dist</code> folder. These are built using the files in the <code>src</code> folder, so <em>you can</em> just point your modules to the Select2 source and load in <code>jquery.select2</code> or <code>select2/core</code> when you want to use Select2. The files located in the <code>dist</code> folder are also AMD-compatible, so you can point to that file if you want to load in all of the default Select2 modules.
      -  </p>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/core/data-attributes.html b/bower_components/select2/docs/_includes/options/core/data-attributes.html
      deleted file mode 100644
      index db6078d9e7..0000000000
      --- a/bower_components/select2/docs/_includes/options/core/data-attributes.html
      +++ /dev/null
      @@ -1,76 +0,0 @@
      -<section>
      -  <h2 id="data-attributes">
      -    Can I declare my configuration within the HTML?
      -  </h2>
      -
      -  <p>
      -    It is recommended that you declare your configuration options for Select2
      -    when initializing Select2. You can also define your configuration options
      -    by using the HTML5 <code>data-*</code> attributes, which will override
      -    any options set when initializing Select2 and any defaults.
      -  </p>
      -
      -  <h3>
      -    How should <code>camelCase</code> options be written?
      -  </h3>
      -
      -  <p>
      -    HTML data attributes are case-insensitive, so any options which contain capital letters will be parsed as if they were all lowercase. Because Select2 has many options which are camelCase, where words are separated by uppercase letters, you must write these options out with dashes instead. So an option that would normally be called <code>allowClear</code> should instead be defined as <code>allow-clear</code>.
      -  </p>
      -
      -  <p>
      -    This means that if you declare your <code>&lt;select&gt;</code> tag as...
      -  </p>
      -
      -{% highlight html linenos %}
      -<select data-tags="true" data-placeholder="Select an option" data-allow-clear="true"></select>
      -{% endhighlight %}
      -
      -  <p>
      -    Will be interpreted the same as initializing Select2 as...
      -  </p>
      -
      -{% highlight js linenos %}
      -$("select").select2({
      -  tags: "true",
      -  placeholder: "Select an option",
      -  allowClear: true
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    Are options with nested configurations supported?
      -  </h3>
      -
      -  <p>
      -    You can also define nested configurations, which are typically needed for
      -    options such as AJAX. Each level of nesting should be separated by two
      -    dashes (<code>--</code>) instead of one. Due to
      -    <a href="https://github.com/jquery/jquery/issues/2070">a jQuery bug</a>,
      -    nested options using <code>data-*</code> attributes
      -    <a href="https://github.com/select2/select2/issues/2969">do not work in jQuery 1.x</a>.
      -  </p>
      -
      -{% highlight html linenos %}
      -<select data-ajax--url="http://example.org/api/test" data-ajax--cache="true"></select>
      -{% endhighlight %}
      -
      -  <p>
      -    Which will be interpreted the same as initializing Select2 with...
      -  </p>
      -
      -{% highlight js linenos %}
      -$("select").select2({
      -  ajax: {
      -    url: "http://example.org/api/test",
      -    cache: true
      -  }
      -});
      -{% endhighlight %}
      -
      -  <p>
      -    The value of the option is subject to jQuery's
      -    <a href="https://api.jquery.com/data/#data-html5">parsing rules</a> for
      -    HTML5 data attributes.
      -  </p>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/core/options.html b/bower_components/select2/docs/_includes/options/core/options.html
      deleted file mode 100644
      index aaa2b1126e..0000000000
      --- a/bower_components/select2/docs/_includes/options/core/options.html
      +++ /dev/null
      @@ -1,80 +0,0 @@
      -<section>
      -  <h2 id="options">
      -    How should Select2 be initialized?
      -  </h2>
      -
      -  <p>
      -    Select2 will register itself as a jQuery function if you use any of the distribution builds, so you can call <code>.select2()</code> on any jQuery element where you would like to initialize Select2.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2();
      -{% endhighlight %}
      -
      -  <p>
      -    You can optionally pass an object containing all of the options that you would like to initialize Select2 with.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  placeholder: 'Select an option'
      -});
      -{% endhighlight %}
      -
      -  <h3 id="setting-default-options">
      -    Can default options be set for all dropdowns?
      -  </h3>
      -
      -  <p>
      -    In some cases, you need to set the default options for all instances of
      -    Select2 in your web application. This is especially useful when you are
      -    migrating from past versions of Select2, or you are using non-standard
      -    options <a href="#amd">like custom AMD builds</a>. Select2 exposes the
      -    default options through <code>$.fn.select2.defaults</code>, which allows
      -    you to set them globally.
      -  </p>
      -
      -  <p>
      -    When setting options globally, any past defaults that have been set will
      -    be overriden. Default options are only used when an option is requested
      -    that has not been set during initialization.
      -  </p>
      -
      -  <p>
      -    <strong>You can set default options</strong> by calling
      -    <code>$.fn.select2.defaults.set("key", "value")</code>.
      -  </p>
      -
      -{% highlight js linenos %}
      -$.fn.select2.defaults.set("theme", "classic");
      -{% endhighlight %}
      -
      -  <h3>
      -    How can I set a default value for a nested option?
      -  </h3>
      -
      -  <p>
      -    The key that is
      -    set should take the same format as keys set using
      -    <a href="#data-attributes">HTML <code>data-*</code> attributes</a> which
      -    means that two dashes (<code>--</code>) will be replaced by a level of
      -    nesting, and a single dash (<code>-</code>) will convert it to a camelCase
      -    string.
      -  </p>
      -
      -{% highlight js linenos %}
      -$.fn.select2.defaults.set("ajax--cache", false);
      -{% endhighlight %}
      -
      -  <h3>
      -    How can I reset all of the global default options?
      -  </h3>
      -
      -  <p>
      -    You can reset the default options to their initial values by calling
      -  </p>
      -
      -{% highlight js linenos %}
      -$.fn.select2.defaults.reset();
      -{% endhighlight %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/data.html b/bower_components/select2/docs/_includes/options/data.html
      deleted file mode 100644
      index c9c6f684b2..0000000000
      --- a/bower_components/select2/docs/_includes/options/data.html
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -<section>
      -  <h1>
      -    Data adapters
      -  </h1>
      -
      -  {% include options/data/select.html %}
      -  {% include options/data/array.html %}
      -  {% include options/data/ajax.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/data/ajax.html b/bower_components/select2/docs/_includes/options/data/ajax.html
      deleted file mode 100644
      index 774727410a..0000000000
      --- a/bower_components/select2/docs/_includes/options/data/ajax.html
      +++ /dev/null
      @@ -1,147 +0,0 @@
      -<section>
      -  <h2 id="ajax">
      -    Can Select2 be connected to a remote data source?
      -  </h2>
      -
      -  <p>
      -    Select2 supports connecting to a remote data source using the <code>ajax</code> option.
      -  </p>
      -
      -  <h3>
      -    How can I set the initially selected options when using AJAX?
      -  </h3>
      -
      -  <p>
      -    You can refer to the following Stack Overflow answer if you want to set the initial value for AJAX requests: <a href="http://stackoverflow.com/q/30316586/359284#30328989">Select2 4.0.0 initial value with AJAX</a>
      -  </p>
      -
      -  <h3>
      -    What should the results returned to Select2 look like?
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    Is there a way to modify the response before passing it back to Select2?
      -  </h3>
      -
      -  <p>
      -    You can use the <code>ajax.processResults</code> option to modify the data returned from the server before passing it to Select2.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  ajax: {
      -    url: '/example/api',
      -    processResults: function (data) {
      -      return {
      -        results: data.items
      -      };
      -    }
      -  }
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    A request is being triggered on every key stroke, can I delay this?
      -  </h3>
      -
      -  <p>
      -    By default, Select2 will trigger a new AJAX request whenever the user changes their search term. You can set a time limit for debouncing requests using the <code>ajax.delay</code> option.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  ajax: {
      -    url: '/example/api',
      -    delay: 250
      -  }
      -});
      -{% endhighlight %}
      -
      -  <p>
      -    This will tell Select2 to wait 250 milliseconds before sending the request out to your API.
      -  </p>
      -
      -  <h3>
      -    How do I tell Select2 which URL to get the results from?
      -  </h3>
      -
      -  <p>
      -    When connecting Select2 to a remote data source, you have the option of using either a single endpoint (a single page which handles all requests) or a dynamic endpoint (one of many pages). You can point Select2 to a single endpoint during initialization by specifying a string for the <code>ajax.url</code> option.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  ajax: {
      -    url: '/path/to/search/endpoint'
      -  }
      -});
      -{% endhighlight %}
      -
      -  <p>
      -    If there isn't a single url for your search results, or you need to call a function to determine the url to use, you can specify a function for the <code>ajax.url</code> option, and this will be used instead. The query parameters will be passed in through the <code>params</code> option.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  ajax: {
      -    url: function (params) {
      -      return '/some/url/' + params.term;
      -    }
      -  }
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    I want to add more query parameters to the request, where can this be done?
      -  </h3>
      -
      -  <p>
      -    By default, Select2 will send the query term as well as the pagination data as query parameters in requests. You can override the data that is sent to your API, or change any of the query paramters, by overriding the <code>ajax.data</codE> option.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  ajax: {
      -    data: function (params) {
      -      var query = {
      -        search: params.term,
      -        page: params.page
      -      }
      -
      -      // Query paramters will be ?search=[term]&page=[page]
      -      return query;
      -    }
      -  }
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    The results that I am seeing never change
      -  </h3>
      -
      -  <p>
      -    Select2 expects that the results that are returned from the remote endpoint are already filtered ahead of time based on the search term. If your remote endpoint just returns the list of all possible options, you may be interested in using Select2's <a href="examples.html#data-array">support for data arrays</a>.
      -  </p>
      -
      -  <h3>
      -    Can an AJAX plugin other than <code>jQuery.ajax</code> be used?
      -  </h3>
      -
      -  <p>
      -    Select2 uses the transport method defined in <code>ajax.transport</code> to send requests to your API. By default, this transport method is <code>jQuery.ajax</code> but this can be changed.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  ajax: {
      -    transport: function (params, success, failure) {
      -      var request = new AjaxRequest(params.url, params);
      -      request.on('success', success);
      -      request.on('failure', failure);
      -    }
      -  }
      -});
      -{% endhighlight %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/data/array.html b/bower_components/select2/docs/_includes/options/data/array.html
      deleted file mode 100644
      index 751635e861..0000000000
      --- a/bower_components/select2/docs/_includes/options/data/array.html
      +++ /dev/null
      @@ -1,150 +0,0 @@
      -<section>
      -  <h2 id="data">
      -    Can I load data into Select2 using an array?
      -  </h2>
      -
      -  <p>
      -    While Select2 is designed to be used with a <code>&lt;select&gt;</code> tag
      -    the data that is used to search through and display the results can be
      -    loaded from a JavaScript array using the <code>data</code> option. This
      -    option should be passed in during the initialization of Select2.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  data: [
      -    {
      -      id: 'value',
      -      text: 'Text to display'
      -    },
      -    // ... more data objects ...
      -  ]
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    What properties are required on the objects passed in to the array?
      -  </h3>
      -
      -  <p>
      -    The <code>id</code> and <code>text</code> properties are required on each
      -    object, and these are the properties that Select2 uses for the internal
      -    data objects. Any additional paramters passed in with data objects will be
      -    included on the data objects that Select2 exposes.
      -  </p>
      -
      -  <h3>
      -    Do the <code>id</code> properties have to be strings?
      -  </h3>
      -
      -  <p>
      -    Because the <code>value</code> attributes on a <code>&gt;select&lt;</code>
      -    tag must be strings, the <code>id</code> property on the data objects must
      -    also be strings. Select2 will attempt to convert anything that is not a
      -    string to a string, which will work for most situations, but it is
      -    recommended to force all of your ids to strings ahead of time.
      -  </p>
      -
      -  <h3>
      -    I can't select results with blank ids or an id of <code>0</code>!
      -  </h3>
      -
      -  <p>
      -    See <a href="#do-the-id-properties-have-to-be-strings">Do the <code>id</code> properties have to be strings?</a>.
      -  </p>
      -
      -  <h3>
      -    How should nested results be formatted?
      -  </h3>
      -
      -  <p>
      -    Nested results should be specified using the <code>children</code> property
      -    on the data objects that are passed in. This <code>children</code> property
      -    should be an array of data objects that are grouped under this option, and
      -    the label for the group should be specified as the <code>text</code>
      -    property on the root data object.
      -  </p>
      -
      -{% highlight js linenos %}
      -{
      -  text: 'Group label',
      -  children: [
      -    {
      -      id: 'nested-1',
      -      text: 'First nested option'
      -    },
      -    // ... more data objects ...
      -  ]
      -}
      -{% endhighlight %}
      -
      -  <h3>
      -    How many levels of nesting are allowed?
      -  </h3>
      -
      -  <p>
      -    Because Select2 falls back to an <code>&lt;optgroup&gt;</code> when
      -    creating nested options, only
      -    <a href="#how-many-levels-of-nesting-can-there-be">a single level of nesting</a>
      -    is supported. Any additional levels of nesting is not guarenteed to be
      -    displayed properly across all browsers and devices.
      -  </p>
      -
      -  <h3>
      -    Why are <code>&lt;option&gt;</code> tags being created?
      -  </h3>
      -
      -  <p>
      -    The <code>data</code> option is a shortcut that Select2 provides which
      -    allows you to load options into your <code>select</code> from a data array.
      -  </p>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    My objects don&apos;t use <code>id</code> for their unique identifiers,
      -    what can I do?
      -  </h3>
      -
      -  <p>
      -    Select2 requires that the <code>id</code> property is used to uniquely
      -    identify the options that are displayed in the results list. If you use a
      -    property other than <code>id</code> (like <code>pk</code>) to uniquely
      -    identify an option, you need to map your old property to <code>id</code>
      -    before passing it to Select2.
      -  </p>
      -
      -  <p>
      -    If you cannot do this on your server or you are in a situation where the
      -    identifier cannot be changed, you can do this in JavaScript before passing
      -    it to Select2.
      -  </p>
      -
      -{% highlight js linenos %}
      -var data = $.map(yourArrayData, function (obj) {
      -  obj.id = obj.id || obj.pk; // replace pk with your identifier
      -
      -  return obj;
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    My objects use a property other than <code>text</code> for the text that
      -    needs to be displayed
      -  </h3>
      -
      -  <p>
      -    Just like with the <code>id</code> property, Select2 requires that the text
      -    that should be displayed for an option is stored in the <code>text</code>
      -    property. You can map this property from any existing property using the
      -    following JavaScript.
      -  </p>
      -
      -{% highlight js linenos %}
      -var data = $.map(yourArrayData, function (obj) {
      -  obj.text = obj.text || obj.name; // replace name with the property used for the text
      -
      -  return obj;
      -});
      -{% endhighlight %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/data/select.html b/bower_components/select2/docs/_includes/options/data/select.html
      deleted file mode 100644
      index aa323012c1..0000000000
      --- a/bower_components/select2/docs/_includes/options/data/select.html
      +++ /dev/null
      @@ -1,69 +0,0 @@
      -<section>
      -  <h2 id="data-adapters-select-tag">
      -    Can Select2 be used with a <code>&lt;select&gt;</code> tag?
      -  </h2>
      -
      -  <p>
      -    Select2 was designed to be a replacement for the standard <code>&lt;select&gt;</code> boxes that are displayed by the browser, so by default it supports all options and operations that are available in a standard select box, but with added flexibility. There is no special configuration required to make Select2 work with a <code>&lt;select&gt;</code> tag.
      -  </p>
      -
      -  <h3>
      -    Does Select2 support nesting options?
      -  </h3>
      -
      -  <p>
      -    A standard <code>&lt;select&gt;</code> box can display nested options by wrapping them with in an <code>&lt;optgroup&gt;</code> tag.
      -  </p>
      -
      -{% highlight html linenos %}
      -<select>
      -  <optgroup label="Group Name">
      -    <option>Nested option</option>
      -  </optgroup>
      -</select>
      -{% endhighlight %}
      -
      -  <h3>
      -    How many levels of nesting can there be?
      -  </h3>
      -
      -  <p>
      -    Only a single level of nesting is allowed per the HTML specification. If you nest an <code>&lt;optgroup&gt;</code> within another <code>&lt;optgroup&gt;</code>, Select2 will not be able to detect the extra level of nesting and errors may be triggered as a result.
      -  </p>
      -
      -  <h3>
      -    Can <code>&lt;optgroup&gt;</code> tags be made selectable?
      -  </h3>
      -
      -  <p>
      -    No. This is a limitation of the HTML specification and is not a limitation that Select2 can overcome. You can emulate grouping by using an <code>&lt;option&gt;</code> instead of an <code>&lt;optgroup&gt;</code> and <a href="http://stackoverflow.com/q/30820215/359284#30948247">changing the style by using CSS</a>, but this is not recommended as it is not fully accessible.
      -  </p>
      -
      -  <h3>
      -    How are <code>&lt;option&gt;</code> and <code>&lt;optgroup&gt;</code> tags serialized into data objects?
      -  </h3>
      -
      -  <p>
      -    Select2 will convert the <code>&lt;option&gt;</code> tag into a data object based on the following rules.
      -  </p>
      -
      -{% highlight js linenos %}
      -{
      -  "id": "value attribute" || "option text",
      -  "text": "label attribute" || "option text",
      -  "element": HTMLOptionElement
      -}
      -{% endhighlight %}
      -
      -  <p>
      -    And <code>&lt;optgroup&gt;</code> tags will be converted into data objects using the following rules
      -  </p>
      -
      -{% highlight js linenos %}
      -{
      -  "text": "label attribute",
      -  "children": [ option data object, ... ],
      -  "elment": HTMLOptGroupElement
      -}
      -{% endhighlight %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/dropdown.html b/bower_components/select2/docs/_includes/options/dropdown.html
      deleted file mode 100644
      index 52d8ea25bb..0000000000
      --- a/bower_components/select2/docs/_includes/options/dropdown.html
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -<section>
      -  <h1 id="results">
      -    Displaying results
      -  </h1>
      -
      -  {% include options/dropdown/filtering.html %}
      -  {% include options/dropdown/selections.html %}
      -  {% include options/dropdown/tagging.html %}
      -  {% include options/dropdown/placement.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/dropdown/filtering.html b/bower_components/select2/docs/_includes/options/dropdown/filtering.html
      deleted file mode 100644
      index 7e6bce75f3..0000000000
      --- a/bower_components/select2/docs/_includes/options/dropdown/filtering.html
      +++ /dev/null
      @@ -1,55 +0,0 @@
      -<section>
      -  <h2>
      -    Can I change when search results are loaded?
      -  </h2>
      -
      -  <h3>
      -    Can Select2 wait until the user has typed a search term before triggering the request?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  ajax: {
      -    delay: 250 // wait 250 milliseconds before triggering the request
      -  }
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    Select2 is allowing long search terms, can this be prevented?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  maximumInputLength: 20 // only allow terms up to 20 characters long
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    I only want the search box if there are enough results
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  minimumResultsForSearch: 20 // at least 20 results must be displayed
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    How can I permanently hide the search box?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  minimumResultsForSearch: Infinity
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/dropdown/placement.html b/bower_components/select2/docs/_includes/options/dropdown/placement.html
      deleted file mode 100644
      index 1f78686c59..0000000000
      --- a/bower_components/select2/docs/_includes/options/dropdown/placement.html
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -<section>
      -  <h2>
      -    Can I change how the dropdown is placed?
      -  </h2>
      -
      -  <h3 id="dropdown-attachContainer">
      -    Can the dropdown be placed directly after the selection container?
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3 id="dropdownParent">
      -    Can I pick an element for the dropdown to be appended to?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  dropdownParent: $('#my_amazing_modal')
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    I&apos;m using a Bootstrap modal and I can&apos;t use the search box
      -  </h3>
      -
      -  <p>
      -    Use the <code>dropdownParent</code> option, setting it to the modal.
      -  </p>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    I&apos;m using jQuery UI and I can&apos;t use the search box
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/dropdown/selections.html b/bower_components/select2/docs/_includes/options/dropdown/selections.html
      deleted file mode 100644
      index 1c9f86e36b..0000000000
      --- a/bower_components/select2/docs/_includes/options/dropdown/selections.html
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -<section>
      -  <h2>
      -    Can I change how selecting results works?
      -  </h2>
      -
      -  <h3>
      -    Can I select the highlighted result when the dropdown is closed?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  selectOnClose: true
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    Can I prevent the dropdown from closing when a result is selected?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  closeOnSelect: false
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/dropdown/tagging.html b/bower_components/select2/docs/_includes/options/dropdown/tagging.html
      deleted file mode 100644
      index 43e1eb015c..0000000000
      --- a/bower_components/select2/docs/_includes/options/dropdown/tagging.html
      +++ /dev/null
      @@ -1,89 +0,0 @@
      -<section>
      -  <h2>
      -    Can options be created based on the search term?
      -  </h2>
      -
      -  <h3>
      -    How do I enable tagging?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  tags: true
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    Does tagging work with a single select?
      -  </h3>
      -
      -  <p>
      -    Yes.
      -  </p>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    How do I add extra properties to the tag?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  createTag: function (params) {
      -    var term = $.trim(params.term);
      -
      -    if (term === '') {
      -      return null;
      -    }
      -
      -    return {
      -      id: term,
      -      text: term,
      -      newTag: true // add additional parameters
      -    }
      -  }
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    Can I control when tags are created?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  createTag: function (params) {
      -    // Don't offset to create a tag if there is no @ symbol
      -    if (params.term.indexOf('@') === -1) {
      -      // Return null to disable tag creation
      -      return null;
      -    }
      -
      -    return {
      -      id: params.term,
      -      text: params.term
      -    }
      -  }
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    How do I control the placement of the option?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  insertTag: function (data, tag) {
      -    // Insert the tag at the end of the results
      -    data.push(tag);
      -  }
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/events.html b/bower_components/select2/docs/_includes/options/events.html
      deleted file mode 100644
      index ea0dd2c16a..0000000000
      --- a/bower_components/select2/docs/_includes/options/events.html
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -<section>
      -  <h1>
      -    Events
      -  </h1>
      -
      -  {% include options/events/jquery.html %}
      -  {% include options/events/internal.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/events/internal.html b/bower_components/select2/docs/_includes/options/events/internal.html
      deleted file mode 100644
      index df49d5c92f..0000000000
      --- a/bower_components/select2/docs/_includes/options/events/internal.html
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -<section>
      -  <h2 id="events-internal">
      -    Internal Select2 events
      -  </h2>
      -  
      -  <p>
      -    Select2 has an internal event system that works independently of the DOM event system. This internal event system is only accesssible from plugins and adapters that are connected to Select2.
      -  </p>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/events/jquery.html b/bower_components/select2/docs/_includes/options/events/jquery.html
      deleted file mode 100644
      index 0c2bb2257c..0000000000
      --- a/bower_components/select2/docs/_includes/options/events/jquery.html
      +++ /dev/null
      @@ -1,101 +0,0 @@
      -<section>
      -  <h2 id="events-public">
      -    Public jQuery events
      -  </h2>
      -
      -  <h3>
      -    What events will Select2 trigger?
      -  </h3>
      -
      -  <p>
      -    Select2 will trigger a few different events when different actions are taken using the component, allowing you to add custom hooks and perform actions.
      -  </p>
      -
      -  <dl class="s2-docs-panels">
      -    <dt>change</dt>
      -    <dd>Triggered whenever an option is selected or removed.</dd>
      -
      -    <dt>select2:close</dt>
      -    <dd>Triggered whenever the dropdown is closed.</dd>
      -
      -    <dt>select2:closing</dt>
      -    <dd>Triggered before the dropdown is closed. This event can be prevented.</dd>
      -
      -    <dt>select2:open</dt>
      -    <dd>Triggered whenever the dropdown is opened.</dd>
      -
      -    <dt>select2:opening</dt>
      -    <dd>Triggered before the dropdown is opened. This event can be prevented.</dd>
      -
      -    <dt>select2:select</dt>
      -    <dd>Triggered whenever a result is selected.</dd>
      -
      -    <dt>select2:selecting</dt>
      -    <dd>Triggered before a result is selected. This event can be prevented.</dd>
      -
      -    <dt>select2:unselect</dt>
      -    <dd>Triggered whenever a selection is removed.</dd>
      -
      -    <dt>select2:unselecting</dt>
      -    <dd>Triggered before a selection is removed. This event can be prevented.</dd>
      -  </dl>
      -
      -  <h3>
      -    Does Select2 include extra information in these events?
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    How can I attach listeners for these events?
      -  </h3>
      -
      -{% highlight js linenos %}
      -$('select').on('select2:select', function (evt) {
      -  // Do something
      -});
      -{% endhighlight %}
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    What events does Select2 listen for?
      -  </h3>
      -
      -  <p>
      -    Select2 will listen for the <code>change</code> event on the
      -    <code>&lt;select&gt;</code> that it is attached to. If you make any
      -    external changes that need to be reflected in Select2 (such as changing the
      -    value), you should trigger this event.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').val('US'); // Select the option with a value of 'US'
      -$('select').trigger('change'); // Notify any JS components that the value changed
      -{% endhighlight %}
      -
      -  <h3>
      -    Can I trigger an event other than <code>change</code> to notify Select2 of changes?
      -  </h3>
      -
      -  <p>
      -    It's common for other components to be listening to the <code>change</code>
      -    event, or for custom event handlers to be attached that may have side
      -    effects. Select2 does not have a custom event (like
      -    <code>select2:update</code>) that can be triggered other than
      -    <code>change</code>. You can rely on jQuery's event namespacing to limit
      -    the scope to Select2 though by triggering the <code>change.select2</code>
      -    event.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').val('US'); // Change the value or make some change to the internal state
      -$('select').trigger('change.select2'); // Notify only Select2 of changes
      -{% endhighlight %}
      -
      -  <h3>
      -    What events can be prevented? How can I prevent a selection from being made?
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/introduction.html b/bower_components/select2/docs/_includes/options/introduction.html
      deleted file mode 100644
      index 7cc343fcb4..0000000000
      --- a/bower_components/select2/docs/_includes/options/introduction.html
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -<section>
      -  <div class="alert alert-warning">
      -    This page of the documentation is currently <strong>undergoing a rewrite and may be incomplete</strong>. If you do not find the answer you are looking for on this page, you may have better luck looking at <a href="options-old.html">the old options page</a>.
      -  </div>
      -
      -  <p>
      -    This documentation is set up in the form of a FAQ and covers the most common questions. If you do not find the answer to your question here, you may want to <a href="community.html">reach out to the community</a> to see if someone else can answer it.
      -  </p>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/not-written.html b/bower_components/select2/docs/_includes/options/not-written.html
      deleted file mode 100644
      index b4967088d3..0000000000
      --- a/bower_components/select2/docs/_includes/options/not-written.html
      +++ /dev/null
      @@ -1,3 +0,0 @@
      -<div class="alert alert-info">
      -  This answer to this question has not yet been written. You can <a href="https://github.com/select2/select2/blob/master/docs/README.md#how-can-i-fix-an-issue-in-these-docs">improve this documentation</a> by creating a pull request with an answer to this question.
      -</div>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/selections.html b/bower_components/select2/docs/_includes/options/selections.html
      deleted file mode 100644
      index 086c2aec9e..0000000000
      --- a/bower_components/select2/docs/_includes/options/selections.html
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -<section>
      -  <h1 id="selections">
      -    Displaying selections
      -  </h1>
      -
      -  {% include options/selections/multiple.html %}
      -  {% include options/selections/placeholder.html %}
      -  {% include options/selections/clearing-selections.html %}
      -  {% include options/selections/templating.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/selections/clearing-selections.html b/bower_components/select2/docs/_includes/options/selections/clearing-selections.html
      deleted file mode 100644
      index dd9c10d2b0..0000000000
      --- a/bower_components/select2/docs/_includes/options/selections/clearing-selections.html
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -<section>
      -  <h2 id="allowClear">
      -    Can I allow users to clear their selections?
      -  </h2>
      -
      -  <p>
      -    You can allow people to clear their current selections with the <code>allowClear</code> option when initializing Select2. Setting this option to <code>true</code> will enable an "x" icon that will reset the selection to the placeholder.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  placeholder: 'This is my placeholder',
      -  allowClear: true
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    Why is a placeholder required?
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    The "x" icon is not clearing the selection
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    Can users remove all of their selections in a multiple select at once?
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/selections/multiple.html b/bower_components/select2/docs/_includes/options/selections/multiple.html
      deleted file mode 100644
      index 645a0b6141..0000000000
      --- a/bower_components/select2/docs/_includes/options/selections/multiple.html
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -<section>
      -  <h2 id="multiple">
      -    Can I allow users to make multiple selections?
      -  </h2>
      -
      -  <p>
      -    Yes, Select2 supports making multiple selections through the use of the <code>multiple</code> option that can be passed in when initializing Select2.
      -  </p>
      -
      -  <h3>
      -    Can the <code>multiple</code> attribute be used on my <code>&lt;select&gt;</code> element?
      -  </h3>
      -
      -  <p>
      -    Yes, Select2 will automatically map the value of the <code>multiple</code> attribute to the <code>multiple</code> option during initialization.
      -  </p>
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/options/selections/placeholder.html b/bower_components/select2/docs/_includes/options/selections/placeholder.html
      deleted file mode 100644
      index 3dd5ef9c5e..0000000000
      --- a/bower_components/select2/docs/_includes/options/selections/placeholder.html
      +++ /dev/null
      @@ -1,84 +0,0 @@
      -<section>
      -  <h2 id="placeholder">
      -    How can I have Select2 display a placeholder?
      -  </h2>
      -
      -  <p>
      -    Select2 supports displaying a placeholder by default using the <code>placeholder</code> option. This can be either a data object matching the placeholder option, or a string to display as the placeholder if you are using a blank placeholder option.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  placeholder: 'Select an option'
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    My first option is being displayed instead of my placeholder
      -  </h3>
      -
      -  <p>
      -    This usually means that you do not have a blank <code>&lt;option&gt;&lt/option&gt;</code> as the first option in your <code>&lt;select&gt;</code>.
      -  </p>
      -
      -  <p>
      -    Note that this does not apply to multiple selects, as the browser does not select the first option by default when multiple selections can be made.
      -  </p>
      -
      -  <h3>
      -    I am using AJAX, can I still show a placeholder?
      -  </h3>
      -
      -  <p>
      -    Yes, Select2 supports placeholders for all configurations. You will still need to add in the placeholder option if you are using a single select.
      -  </p>
      -
      -  <h3>
      -    Can I use an option without a blank value as my placeholder?
      -  </h3>
      -
      -  <p>
      -    The <code>placeholder</code> option allows you to pass in a data object instead of just a string if you need more flexibility. The <code>id</code> of the data object should match the <code>value</code> of the placeholder option.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  placeholder: {
      -    id: '-1', // the value of the option
      -    text: 'Select an option'
      -  }
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    Can I change how the placeholder looks?
      -  </h3>
      -
      -  <p>
      -    When using Select2 <strong>when only a single selection can be made</strong>, the placeholder option will be passed through the standard templating methods, including the <code>templateSelection</code> option, so you are able to change how it is displayed.
      -  </p>
      -
      -{% highlight js linenos %}
      -$('select').select2({
      -  templateResult: function (data) {
      -    if (data.id === '') { // adjust for custom placeholder values
      -      return 'Custom styled placeholder text';
      -    }
      -
      -    return data.text;
      -  }
      -});
      -{% endhighlight %}
      -
      -  <p>
      -    <strong>When multiple selections are allowed</strong>, the placeholder will be displayed using the <code>placeholder</code> attribute on the search box. You can cusotmize the display of this placholder using CSS, as explained in the following Stack Overflow answer: <a href="http://stackoverflow.com/q/2610497/359284">Change an input's HTML5 placeholder color with CSS</a>
      -  </p>
      -
      -  <h3>
      -    My placeholders aren&apos;t being displayed in Internet Explorer
      -  </h3>
      -
      -  <p>
      -    Select2 uses the native <code>placeholder</code> attribute on input boxes for the multiple select, and that attribute is not supported in older versions of Internet Explorer. You need to include <a href="https://github.com/jamesallardice/Placeholders.js">Placeholders.js</a> on your page, or use the full build, in order to add <code>placeholder</code> attribute support to input boxes.
      -  </p>
      -</section>
      diff --git a/bower_components/select2/docs/_includes/options/selections/templating.html b/bower_components/select2/docs/_includes/options/selections/templating.html
      deleted file mode 100644
      index 19eb8f23dd..0000000000
      --- a/bower_components/select2/docs/_includes/options/selections/templating.html
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -<section>
      -  <h2 id="templateSelection">
      -    How can I customize the way selections are displayed?
      -  </h2>
      -
      -  <p>
      -    When a selection is made by the user Select2 will display the text of the option by default, just like how it is displayed in a standard select box.  You can override the display of the selection by setting the <code>templateSelection</code> option to a JavaScript function.
      -  </p>
      -
      -{% highlight js linenos %}
      -function template(data, container) {
      -  return data.text;
      -}
      -
      -$('select').select2({
      -  templateSelection: template
      -});
      -{% endhighlight %}
      -
      -  <h3>
      -    Nothing is being displayed when I select an option
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    I am using HTML in my selection template but it isn't displaying it
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -
      -  <h3>
      -    How can I access the container where the selection is displayed?
      -  </h3>
      -
      -  {% include options/not-written.html %}
      -</section>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_includes/social-buttons.html b/bower_components/select2/docs/_includes/social-buttons.html
      deleted file mode 100644
      index bcf90cfd4c..0000000000
      --- a/bower_components/select2/docs/_includes/social-buttons.html
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -<div class="s2-docs-social">
      -  <ul class="s2-docs-social-buttons">
      -    <li>
      -      <iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user=select2&amp;repo=select2&amp;type=watch&amp;count=true" width="100" height="20" title="Star on GitHub"></iframe>
      -    </li>
      -    <li>
      -      <iframe class="github-btn" src="https://ghbtns.com/github-btn.html?user=select2&amp;repo=select2&amp;type=fork&amp;count=true" width="102" height="20" title="Fork on GitHub"></iframe>
      -    </li>
      -  </ul>
      -</div>
      diff --git a/bower_components/select2/docs/_layouts/default.html b/bower_components/select2/docs/_layouts/default.html
      deleted file mode 100644
      index 97bd98716f..0000000000
      --- a/bower_components/select2/docs/_layouts/default.html
      +++ /dev/null
      @@ -1,57 +0,0 @@
      -<!doctype html>
      -<html>
      -  <head>
      -    {% include head.html %}
      -  </head>
      -  <body>
      -    {% include navigation.html %}
      -
      -    {{ content }}
      -
      -    {% include footer.html %}
      -
      -    <script>
      -      (function ($) {
      -        'use strict';
      -
      -        $(function () {
      -          var $window = $(window);
      -          var $body = $(document.body);
      -          var $sidebar = $('.s2-docs-sidebar');
      -
      -          $body.scrollspy({
      -            target: '.s2-docs-sidebar',
      -            offset: 40
      -          });
      -
      -          $window.on('load', function () {
      -            $body.scrollspy('refresh');
      -          });
      -
      -          $sidebar.affix({
      -            offset: {
      -              top: function () {
      -                var offsetTop = $sidebar.offset().top;
      -                var navOuterHeight = $('.s2-docs-nav').height();
      -
      -                return (this.top = offsetTop - navOuterHeight);
      -              },
      -              bottom: function () {
      -                return (this.bottom = $('.s2-docs-footer').outerHeight(true));
      -              }
      -            }
      -          });
      -        });
      -      })(jQuery);
      -
      -      (function () {
      -        'use strict';
      -
      -        anchors.options.placement = 'left';
      -        anchors.add('.s2-docs-container h1, .s2-docs-container h2, .s2-docs-container h3, .s2-docs-container h4, .s2-docs-container h5');
      -      })();
      -    </script>
      -
      -    {% include ga.html %}
      -  </body>
      -</html>
      diff --git a/bower_components/select2/docs/_layouts/home.html b/bower_components/select2/docs/_layouts/home.html
      deleted file mode 100644
      index 0732b29f35..0000000000
      --- a/bower_components/select2/docs/_layouts/home.html
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -<!doctype html>
      -<html class="s2-docs-home">
      -  <head>
      -    {% include head.html %}
      -  </head>
      -  <body>
      -    {% include navigation.html %}
      -
      -    {{ content }}
      -
      -    {% include footer.html %}
      -
      -    <script>
      -      (function () {
      -        'use strict';
      -
      -        prettyPrint();
      -      })();
      -    </script>
      -
      -    {% include ga.html %}
      -  </body>
      -</html>
      diff --git a/bower_components/select2/docs/_sass/_alert.scss b/bower_components/select2/docs/_sass/_alert.scss
      deleted file mode 100644
      index cb5d54fd28..0000000000
      --- a/bower_components/select2/docs/_sass/_alert.scss
      +++ /dev/null
      @@ -1,47 +0,0 @@
      -// Alerts
      -//
      -// Modify Bootstrap's default alert styles to mimick
      -// the `.bs-callout` styles from Bootstrap's docs.
      -//
      -// @see https://github.com/twbs/bootstrap/blob/master/docs/assets/css/src/docs.css#L711
      -// @see https://github.com/twbs/bootstrap/blob/master/less/alerts.less
      -
      -.alert {
      -  background: #fff;
      -  border: 1px solid #eee;
      -  border-left-width: 5px;
      -  border-radius: 3px;
      -  color: #333;
      -  margin: 20px 0;
      -  padding: 20px;
      -
      -  h4 {
      -    font-size: 18px;
      -    margin-top: 0;
      -    margin-bottom: 5px;
      -  }
      -
      -  &-danger {
      -    border-left-color: #ce4844;
      -
      -    h4 {
      -      color: #ce4844;
      -    }
      -  }
      -
      -  &-info {
      -    border-left-color: #1b809e;
      -
      -    h4 {
      -      color: #1b809e;
      -    }
      -  }
      -
      -  &-warning {
      -    border-left-color: #aa6708;
      -
      -    h4 {
      -      color: #aa6708;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_anchorjs.scss b/bower_components/select2/docs/_sass/_anchorjs.scss
      deleted file mode 100644
      index 6190049164..0000000000
      --- a/bower_components/select2/docs/_sass/_anchorjs.scss
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -// AnchorJS Styles
      -
      -.anchorjs-link {
      -  color: inherit;
      -  transition: all .16s linear;
      -  text-decoration: none;
      -
      -  &:link,
      -  &:visited {
      -    text-decoration: none;
      -    color: inherit;
      -  }
      -
      -  @media (max-width: 480px) {
      -    display: none;
      -  }
      -}
      -
      -*:hover > .anchorjs-link {
      -  opacity: .5;
      -  margin-left: -0.9em !important;
      -}
      -
      -*:hover > .anchorjs-link:hover,
      -.anchorjs-link:focus {
      -  opacity: 1;
      -}
      diff --git a/bower_components/select2/docs/_sass/_buttons.scss b/bower_components/select2/docs/_sass/_buttons.scss
      deleted file mode 100644
      index 1ad817691a..0000000000
      --- a/bower_components/select2/docs/_sass/_buttons.scss
      +++ /dev/null
      @@ -1,20 +0,0 @@
      -// Buttons
      -
      -.btn-outline-inverse {
      -  color: #428BCA;
      -  background-color: transparent;
      -  border-color: #428BCA;
      -  padding: 15px 30px;
      -  font-size: 20px;
      -  transition: all .1s ease-in-out;
      -
      -  &:hover {
      -    color: #fff;
      -    border-color: #428BCA;
      -    background-color: #428BCA;
      -  }
      -}
      -
      -.btn-toolbar {
      -  margin-bottom: 20px;
      -}
      diff --git a/bower_components/select2/docs/_sass/_code.scss b/bower_components/select2/docs/_sass/_code.scss
      deleted file mode 100644
      index ecd3aa97c6..0000000000
      --- a/bower_components/select2/docs/_sass/_code.scss
      +++ /dev/null
      @@ -1,16 +0,0 @@
      -// Code (inline and block)
      -
      -// Inline code within headings retain the heading's background-color
      -h2 code,
      -h3 code,
      -h4 code {
      -  background-color: inherit;
      -}
      -
      -// Modify Bootstrap's styles for blocks of code
      -pre.prettyprint {
      -  padding: 9px 14px;
      -  margin-bottom: 14px;
      -  background-color: #f7f7f9;
      -  border: 1px solid #e1e1e8;
      -}
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_sass/_dl-panels.scss b/bower_components/select2/docs/_sass/_dl-panels.scss
      deleted file mode 100644
      index 76d5151f9e..0000000000
      --- a/bower_components/select2/docs/_sass/_dl-panels.scss
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -.s2-docs-panels {
      -    dt, dd {
      -        border: 1px solid $panel-default-border;
      -    }
      -
      -    dt {
      -        background-color: $panel-default-heading-bg;
      -        border-top-left-radius: $panel-border-radius;
      -        border-top-right-radius: $panel-border-radius;
      -        padding: 5px 7.5px;
      -    }
      -
      -    dd {
      -        background-color: $panel-bg;
      -        border-bottom-left-radius: $panel-border-radius;
      -        border-bottom-right-radius: $panel-border-radius;
      -        margin-bottom: 0.75em;
      -        padding: 7.5px;
      -    }
      -
      -    dt + dd {
      -        border-top: none;
      -    }
      -}
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_sass/_examples.scss b/bower_components/select2/docs/_sass/_examples.scss
      deleted file mode 100644
      index 0af5591477..0000000000
      --- a/bower_components/select2/docs/_sass/_examples.scss
      +++ /dev/null
      @@ -1,91 +0,0 @@
      -// Examples
      -//
      -// Styles for the Select2 examples, largely copied
      -// from Bootstrap's docs styles.
      -//
      -// @see https://github.com/twbs/bootstrap/blob/master/docs/assets/css/src/docs.css#L533
      -
      -.s2-example {
      -  position: relative;
      -  padding: 45px 15px 15px;
      -  margin: 0 -15px 15px;
      -  background-color: #fafafa;
      -  box-shadow: inset 0 3px 6px rgba(0, 0, 0, 0.05);
      -  border-color: #e5e5e5 #eee #eee;
      -  border-style: solid;
      -  border-width: 1px 0;
      -
      -  &:after {
      -    content: "Example";
      -    position: absolute;
      -    top: 15px;
      -    left: 15px;
      -    font-size: 12px;
      -    font-weight: bold;
      -    color: #bbb;
      -    text-transform: uppercase;
      -    letter-spacing: 1px;
      -  }
      -
      -  @media (min-width: 768px) {
      -    margin-left: 0;
      -    margin-right: 0;
      -    background-color: #fff;
      -    border-width: 1px;
      -    border-color: #eee;
      -    border-radius: 4px 4px 0 0;
      -    box-shadow: none;
      -  }
      -}
      -
      -// styles for the event log in the "DOM events" section of the docs
      -.s2-event-log {
      -  background: #002451;
      -  color: white;
      -  font-family: Menlo, 'Bitstream Vera Sans Mono', 'DejaVu Sans Mono', Monaco, Consolas, monospace;
      -  margin: 0 -15px 15px;
      -  padding: 45px 15px 15px;
      -  position: relative;
      -
      -  &:after {
      -    content: "Event Log";
      -    position: absolute;
      -    top: 15px;
      -    left: 15px;
      -    font-size: 12px;
      -    font-weight: bold;
      -    color: #BBB;
      -    text-transform: uppercase;
      -    letter-spacing: 1px;
      -  }
      -
      -  @media (min-width: 768px) {
      -    margin-left: 0;
      -    margin-right: 0;
      -    margin-top: -15px;
      -    border-width: 1px;
      -    border-color: #eee;
      -    box-shadow: none;
      -  }
      -}
      -
      -.s2-example + pre,
      -.s2-example + figure,
      -.s2-event-log + pre {
      -  margin: -15px -15px 15px;
      -  border-radius: 0;
      -  border-width: 0 0 1px;
      -
      -  @media (min-width: 768px) {
      -    margin-top: -16px;
      -    margin-left: 0;
      -    margin-right: 0;
      -    border-width: 1px;
      -    border-bottom-left-radius: 4px;
      -    border-bottom-right-radius: 4px;
      -  }
      -}
      -
      -.s2-example + .s2-event-log {
      -  margin-top: -15px;
      -}
      diff --git a/bower_components/select2/docs/_sass/_featurette.scss b/bower_components/select2/docs/_sass/_featurette.scss
      deleted file mode 100644
      index 56eedf8c42..0000000000
      --- a/bower_components/select2/docs/_sass/_featurette.scss
      +++ /dev/null
      @@ -1,16 +0,0 @@
      -// Homepage featurettes
      -
      -.s2-docs-featurette {
      -  color: #777;
      -  padding: 15px 0;
      -  text-align: center;
      -
      -  h4 {
      -    margin: 30px 0 15px;
      -  }
      -
      -  .fa {
      -    font-size: 28px;
      -    color: #777;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_footer.scss b/bower_components/select2/docs/_sass/_footer.scss
      deleted file mode 100644
      index dfe5d40e10..0000000000
      --- a/bower_components/select2/docs/_sass/_footer.scss
      +++ /dev/null
      @@ -1,42 +0,0 @@
      -// Footer
      -
      -.s2-docs-footer {
      -  border-top: 1px solid #eee;
      -  color: #767676;
      -  padding-top: 40px;
      -  padding-bottom: 40px;
      -  margin-top: 100px;
      -  text-align: center;
      -
      -  &-links {
      -    padding-left: 0;
      -    margin-top: 20px;
      -  }
      -
      -  &-links li {
      -    display: inline;
      -    padding: 0 2px;
      -
      -    &:after {
      -      content: "·";
      -      padding-left: 8px;
      -    }
      -
      -    &:first-child {
      -      padding-left: 0;
      -    }
      -
      -    &:last-child:after {
      -      content: "";
      -      padding-left: 0;
      -    }
      -  }
      -
      -  @media (min-width: 768px) {
      -    p {
      -      margin-bottom: 0;
      -    }
      -  }
      -}
      -
      -
      diff --git a/bower_components/select2/docs/_sass/_hamburger.scss b/bower_components/select2/docs/_sass/_hamburger.scss
      deleted file mode 100644
      index 759c53fc25..0000000000
      --- a/bower_components/select2/docs/_sass/_hamburger.scss
      +++ /dev/null
      @@ -1,49 +0,0 @@
      -// Animated hamburger icon
      -//
      -// Add an animation to Bootstrap's `.navbar-toggle` hamburger icon,
      -// courtesy of Julien Melissas.
      -//
      -// @see http://codepen.io/JulienMelissas/pen/LEBGLj
      -// @see http://julienmelissas.com/animated-x-icon-for-the-bootstrap-navbar-toggle/
      -
      -.navbar-toggle {
      -  border: none;
      -  background: transparent !important;
      -
      -  &:hover {
      -    background: transparent !important;
      -  }
      -
      -  .icon-bar {
      -    width: 22px;
      -    transition: all 0.2s;
      -  }
      -
      -  .top-bar {
      -    transform: rotate(45deg);
      -    transform-origin: 10% 10%;
      -  }
      -
      -  .middle-bar {
      -    opacity: 0;
      -  }
      -
      -  .bottom-bar {
      -    transform: rotate(-45deg);
      -    transform-origin: 10% 90%;
      -  }
      -
      -  &.collapsed {
      -    .top-bar {
      -      transform: rotate(0);
      -    }
      -
      -    .middle-bar {
      -      opacity: 1;
      -    }
      -
      -    .bottom-bar {
      -      transform: rotate(0);
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_home.scss b/bower_components/select2/docs/_sass/_home.scss
      deleted file mode 100644
      index 985308022e..0000000000
      --- a/bower_components/select2/docs/_sass/_home.scss
      +++ /dev/null
      @@ -1,31 +0,0 @@
      -// Homepage-specific styles
      -
      -.s2-docs-home {
      -  .jumbotron {
      -    margin-bottom: 0;
      -    color: #000;
      -
      -    h1 {
      -      color: #000;
      -      margin-top: 20px;
      -    }
      -  }
      -
      -  .lead {
      -    text-align: center;
      -    max-width: 800px;
      -    margin: 0 auto 40px;
      -  }
      -
      -  .notice-previous {
      -    background: #f6f6f6;
      -    color: #666;
      -    border-bottom: 1px solid #eee;
      -    padding: 15px 20px;
      -  }
      -
      -  .half-rule {
      -    width: 100px;
      -    margin: 40px auto;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_jumbotron.scss b/bower_components/select2/docs/_sass/_jumbotron.scss
      deleted file mode 100644
      index 7b3cc5eedd..0000000000
      --- a/bower_components/select2/docs/_sass/_jumbotron.scss
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -// Jumbotron
      -//
      -// Modify Bootstrap's default `.jumbotron` styles.
      -
      -.jumbotron {
      -  background-color: #F6F6F6;
      -  border-bottom: 1px solid #eee;
      -  color: #777;
      -  padding-left: 0;
      -  padding-right: 0;
      -
      -  h1 {
      -    color: #777;
      -    font-size: 36px;
      -    margin-top: 10px;
      -  }
      -
      -  .version {
      -    color: #999;
      -    font-size: 14px;
      -    font-weight: normal;
      -    margin-bottom: 30px;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_layout.scss b/bower_components/select2/docs/_sass/_layout.scss
      deleted file mode 100644
      index e53a648efd..0000000000
      --- a/bower_components/select2/docs/_sass/_layout.scss
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -// Layout
      -
      -.s2-docs-container {
      -  line-height: 1.6;
      -}
      -
      -section {
      -  margin-bottom: 40px;
      -}
      -
      -.page-header {
      -  padding-bottom: 19px;
      -  margin-bottom: 29px;
      -}
      diff --git a/bower_components/select2/docs/_sass/_nav.scss b/bower_components/select2/docs/_sass/_nav.scss
      deleted file mode 100644
      index 40fd17ce79..0000000000
      --- a/bower_components/select2/docs/_sass/_nav.scss
      +++ /dev/null
      @@ -1,59 +0,0 @@
      -// Main navigation
      -//
      -// Styles for the top `.navbar` and its dropdowns.
      -
      -.s2-docs-nav {
      -  margin-bottom: 0;
      -  border-color: #eee;
      -  background-color: #f6f6f6;
      -
      -  .navbar-brand {
      -    font-weight: 500;
      -    > img {
      -      display: inline;
      -      margin-right: 4px;
      -    }
      -  }
      -
      -  .navbar-nav > .active > a,
      -  .navbar-nav > .active > a:hover,
      -  .navbar-nav > .active > a:focus {
      -    background-color: #f0f0f0;
      -    color: #000;
      -  }
      -
      -  @media (min-width: 768px) {
      -
      -    .navbar-nav > li > .dropdown-menu:before {
      -      position: absolute;
      -      top: -21px;
      -      left: 24px;
      -      display: block;
      -      width: 0;
      -      height: 0;
      -      border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) rgba(0, 0, 0, 0.1);
      -      border-style: solid;
      -      border-width: 10px;
      -      content: "";
      -    }
      -
      -    .navbar-nav > li > .dropdown-menu:after {
      -      position: absolute;
      -      top: -20px;
      -      left: 24px;
      -      display: block;
      -      width: 0;
      -      height: 0;
      -      border-color: rgba(0, 0, 0, 0) rgba(0, 0, 0, 0) #FFF;
      -      border-style: solid;
      -      border-width: 10px;
      -      content: '';
      -    }
      -
      -    .navbar-nav .dropdown-menu {
      -      border-radius: 4px;
      -      border-color: #ddd;
      -      margin-top: -1px;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_prettify.scss b/bower_components/select2/docs/_sass/_prettify.scss
      deleted file mode 100644
      index 4b799d544b..0000000000
      --- a/bower_components/select2/docs/_sass/_prettify.scss
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -// Google Code Prettify styles
      -
      -.com {
      -  color: #999;
      -}
      -.lit {
      -  color: #195f91;
      -}
      -.pun, .opn, .clo {
      -  color: #93a1a1;
      -}
      -.fun {
      -  color: #dc322f;
      -}
      -.str, .atv {
      -  color: #C7254E;
      -}
      -.kwd, .prettyprint .tag {
      -  color: #2F6F9F;
      -}
      -.typ, .atn, .dec, .var {
      -  color: #428BCA;
      -}
      -.pln {
      -  color: #333;
      -}
      -
      -.prettyprint {
      -  padding: 9px 14px;
      -  margin-bottom: 20px;
      -  margin-top: 20px;
      -  border: 1px solid #eee;
      -
      -  &.linenums {
      -    -webkit-box-shadow: inset 40px 0 0 #fbfbfb, inset 41px 0 0 #f6f6f6;
      -       -moz-box-shadow: inset 40px 0 0 #fbfbfb, inset 41px 0 0 #f6f6f6;
      -            box-shadow: inset 40px 0 0 #fbfbfb, inset 41px 0 0 #f6f6f6;
      -  }
      -}
      -
      -// Specify class=linenums on a pre to get line numbering
      -ol.linenums {
      -  margin: 0 0 0 -12px;
      -
      -  li {
      -    padding-left: 12px;
      -    color: #bebebe;
      -    line-height: 18px;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_result-repository.scss b/bower_components/select2/docs/_sass/_result-repository.scss
      deleted file mode 100644
      index a4e256afe0..0000000000
      --- a/bower_components/select2/docs/_sass/_result-repository.scss
      +++ /dev/null
      @@ -1,62 +0,0 @@
      -// Styles accompanying the "Loading remote data" example `templateResult
      -
      -.select2-result-repository {
      -  padding-top: 4px;
      -  padding-bottom: 3px;
      -
      -  &__avatar {
      -    float: left;
      -    width: 60px;
      -    margin-right: 10px;
      -
      -    img {
      -      width: 100%;
      -      height: auto;
      -      border-radius: 2px;
      -    }
      -  }
      -
      -  &__meta {
      -    margin-left: 70px;
      -  }
      -
      -  &__title {
      -    color: black;
      -    font-weight: bold;
      -    word-wrap: break-word;
      -    line-height: 1.1;
      -    margin-bottom: 4px;
      -  }
      -
      -  &__forks,
      -  &__stargazers {
      -    margin-right: 1em;
      -  }
      -
      -  &__forks,
      -  &__stargazers,
      -  &__watchers {
      -    display: inline-block;
      -    color: #aaa;
      -    font-size: 11px;
      -  }
      -
      -  &__description {
      -    font-size: 13px;
      -    color: #777;
      -    margin-top: 4px;
      -  }
      -
      -  .select2-results__option--highlighted & {
      -    &__title {
      -      color: white;
      -    }
      -
      -    &__forks,
      -    &__stargazers,
      -    &__description,
      -    &__watchers {
      -      color: mix(#428BCA, white, 30%);
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_sidenav.scss b/bower_components/select2/docs/_sass/_sidenav.scss
      deleted file mode 100644
      index 3608c15086..0000000000
      --- a/bower_components/select2/docs/_sass/_sidenav.scss
      +++ /dev/null
      @@ -1,152 +0,0 @@
      -// Side navigation
      -//
      -// Scrollspy and affixed enhanced navigation to
      -// highlight sections and secondary sections of docs content`.
      -
      -.s2-docs-sidebar {
      -  // By default it is not affixed in mobile views, so undo that
      -  &.affix {
      -    position: static;
      -  }
      -
      -  @media (min-width: 768px) {
      -    padding-left: 20px;
      -  }
      -}
      -
      -// First level of nav
      -.s2-docs-sidenav {
      -  margin-top: 20px;
      -  margin-bottom: 20px;
      -}
      -
      -// All levels of nav
      -.s2-docs-sidebar .nav {
      -  > li > a {
      -    margin-left: -1px;
      -    display: block;
      -    padding: 4px 20px;
      -    font-size: 13px;
      -    font-weight: 500;
      -    color: #767676;
      -    border-left: 1px solid transparent;
      -    transition: color .2s, border-color .2s;
      -  }
      -
      -  > li > a code {
      -    background-color: inherit;
      -    color: inherit;
      -  }
      -
      -  > li > a:hover,
      -  > li > a:focus {
      -    color: #428BCA;
      -    text-decoration: none;
      -    background-color: transparent;
      -    border-left-color: #428BCA;
      -  }
      -
      -  > .active > a,
      -  > .active:hover > a,
      -  > .active:focus > a {
      -    padding-left: 19px;
      -    font-weight: bold;
      -    color: #428BCA;
      -    background-color: transparent;
      -    border-left: 2px solid #428BCA;
      -  }
      -
      -  // Nav: second level (shown on .active)
      -  .nav {
      -    display: none; // Hide by default, but at >768px, show it
      -    padding-bottom: 10px;
      -  }
      -
      -  .nav > li > a {
      -    padding-top: 1px;
      -    padding-bottom: 1px;
      -    padding-left: 30px;
      -    font-size: 12px;
      -    font-weight: normal;
      -  }
      -
      -  .nav > li > a:hover,
      -  .nav > li > a:focus {
      -    padding-left: 30px;
      -  }
      -
      -  .nav > .active > a,
      -  .nav > .active:hover > a,
      -  .nav > .active:focus > a {
      -    padding-left: 29px;
      -    font-weight: 400;
      -  }
      -}
      -
      -// Show and affix the side nav when space allows it
      -@media (min-width: 992px) {
      -  .s2-docs-sidebar .s2-docs-sidenav {
      -    padding-top: 40px;
      -    transition: border-color .2s;
      -    border-left: 1px solid transparent;
      -  }
      -
      -  .s2-docs-sidebar.affix .s2-docs-sidenav {
      -    border-left-color: #eee;
      -  }
      -
      -  .s2-docs-sidebar .nav > .active > ul {
      -    display: block;
      -  }
      -
      -  // Widen the fixed sidebar
      -  .s2-docs-sidebar.affix,
      -  .s2-docs-sidebar.affix-bottom {
      -    width: 213px;
      -  }
      -
      -  // Undo the static from mobile first approach
      -  .s2-docs-sidebar.affix {
      -    position: fixed;
      -    top: 0px;
      -  }
      -
      -  // Undo the static from mobile first approach
      -  .s2-docs-sidebar.affix-bottom {
      -    position: absolute;
      -  }
      -
      -  .s2-docs-sidebar.affix-bottom .s2-docs-sidenav,
      -  .s2-docs-sidebar.affix .s2-docs-sidenav {
      -    margin-top: 0;
      -    margin-bottom: 0;
      -  }
      -}
      -
      -@media (min-width: 1200px) {
      -  // Widen the fixed sidebar again
      -  .s2-docs-sidebar.affix-bottom,
      -  .s2-docs-sidebar.affix {
      -    width: 263px;
      -  }
      -}
      -
      -/* Back to top (hidden on mobile) */
      -.back-to-top {
      -  display: none;
      -  padding: 4px 10px;
      -  margin-top: 10px;
      -  margin-left: 10px;
      -  font-size: 12px;
      -  font-weight: 400;
      -  color: #999;
      -
      -  &:hover {
      -    color: #428BCA;
      -    text-decoration: none;
      -  }
      -
      -  @media (min-width: 768px) {
      -    display: block;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/_social.scss b/bower_components/select2/docs/_sass/_social.scss
      deleted file mode 100644
      index 0e8d073689..0000000000
      --- a/bower_components/select2/docs/_sass/_social.scss
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -// Social buttons
      -//
      -// Twitter and GitHub social action buttons.
      -
      -.s2-docs-social {
      -  margin-bottom: 20px;
      -  text-align: center;
      -}
      -
      -.s2-docs-social-buttons {
      -  display: inline-block;
      -  padding-left: 0;
      -  margin-bottom: 0;
      -  list-style: none;
      -
      -  li {
      -    display: inline-block;
      -    padding: 5px 8px;
      -    line-height: 1;
      -  }
      -
      -  .twitter-follow-button {
      -    width: 225px !important;
      -  }
      -
      -  .twitter-share-button {
      -    width: 98px !important;
      -  }
      -}
      -
      -// Style the GitHub buttons via CSS instead of inline attributes
      -.github-btn {
      -  overflow: hidden;
      -  border: 0;
      -}
      diff --git a/bower_components/select2/docs/_sass/_syntax-highlighting.scss b/bower_components/select2/docs/_sass/_syntax-highlighting.scss
      deleted file mode 100644
      index 9dca6bdc28..0000000000
      --- a/bower_components/select2/docs/_sass/_syntax-highlighting.scss
      +++ /dev/null
      @@ -1,117 +0,0 @@
      -// Jekyll syntax highlighting styles adjusted to match Google Code Prettify
      -
      -.highlight  {
      -    background: #fff;
      -
      -    // Text
      -    .nx {
      -        color: #333;
      -    }
      -
      -    // Keywords and operators
      -    .k, .o {
      -        font-weight: bold;
      -    }
      -
      -    // Attribute name
      -    .na {
      -        color: #428BCA;
      -    }
      -
      -    // Strings
      -    .s, .s1, .s2, .sb, .sc, .sd, .se, .sh, .si, .sx {
      -        color: #C7254E;
      -    }
      -
      -    // Literals
      -    .m, .mf, mh, .mi, .mo {
      -        color: #195f91;
      -    }
      -
      -    // Parentheses
      -    .p {
      -        color: #93a1a1;
      -    }
      -
      -    // Tag
      -    .nt {
      -        color: #2F6F9F;
      -    }
      -
      -    // Comments
      -    .c {
      -        color: #999;
      -        font-style: italic;
      -    }
      -
      -    // Error
      -    .err {
      -        background-color: #e3d2d2;
      -        color: #a61717;
      -    }
      -
      -    // Generic error
      -    .gr {
      -        color: #a00;
      -    }
      -
      -    // Container styles
      -    pre {
      -        border: none;
      -        margin: 0;
      -    }
      -
      -    & > pre {
      -        border: 1px solid #eee;
      -        padding: 0;
      -        margin-bottom: 14px;
      -    }
      -
      -    // Line numbers
      -    .lineno {
      -        background-color: #fbfbfb;
      -        color: #bebebe;
      -
      -        -ms-user-select: none;
      -        -moz-user-select: none;
      -        -webkit-user-select: none;
      -    }
      -}
      -
      -.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
      -.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
      -.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
      -.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
      -.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
      -.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
      -.highlight .ge { font-style: italic } /* Generic.Emph */
      -.highlight .gh { color: #999999 } /* Generic.Heading */
      -.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
      -.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
      -.highlight .go { color: #888888 } /* Generic.Output */
      -.highlight .gp { color: #555555 } /* Generic.Prompt */
      -.highlight .gs { font-weight: bold } /* Generic.Strong */
      -.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
      -.highlight .gt { color: #aa0000 } /* Generic.Traceback */
      -.highlight .kc { font-weight: bold } /* Keyword.Constant */
      -.highlight .kd { font-weight: bold } /* Keyword.Declaration */
      -.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
      -.highlight .kr { font-weight: bold } /* Keyword.Reserved */
      -.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
      -.highlight .nb { color: #0086B3 } /* Name.Builtin */
      -.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
      -.highlight .no { color: #008080 } /* Name.Constant */
      -.highlight .ni { color: #800080 } /* Name.Entity */
      -.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
      -.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
      -.highlight .nn { color: #555555 } /* Name.Namespace */
      -.highlight .nv { color: #008080 } /* Name.Variable */
      -.highlight .ow { font-weight: bold } /* Operator.Word */
      -.highlight .w { color: #bbbbbb } /* Text.Whitespace */
      -.highlight .sr { color: #009926 } /* Literal.String.Regex */
      -.highlight .ss { color: #990073 } /* Literal.String.Symbol */
      -.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
      -.highlight .vc { color: #008080 } /* Name.Variable.Class */
      -.highlight .vg { color: #008080 } /* Name.Variable.Global */
      -.highlight .vi { color: #008080 } /* Name.Variable.Instance */
      -.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/_sass/_typography.scss b/bower_components/select2/docs/_sass/_typography.scss
      deleted file mode 100644
      index 1046c99455..0000000000
      --- a/bower_components/select2/docs/_sass/_typography.scss
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -// Typography
      -
      -h1[id] {
      -  padding-top: 20px;
      -  margin-top: 0;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_alerts.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_alerts.scss
      deleted file mode 100644
      index 7d1e1fddd1..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_alerts.scss
      +++ /dev/null
      @@ -1,73 +0,0 @@
      -//
      -// Alerts
      -// --------------------------------------------------
      -
      -
      -// Base styles
      -// -------------------------
      -
      -.alert {
      -  padding: $alert-padding;
      -  margin-bottom: $line-height-computed;
      -  border: 1px solid transparent;
      -  border-radius: $alert-border-radius;
      -
      -  // Headings for larger alerts
      -  h4 {
      -    margin-top: 0;
      -    // Specified for the h4 to prevent conflicts of changing $headings-color
      -    color: inherit;
      -  }
      -
      -  // Provide class for links that match alerts
      -  .alert-link {
      -    font-weight: $alert-link-font-weight;
      -  }
      -
      -  // Improve alignment and spacing of inner content
      -  > p,
      -  > ul {
      -    margin-bottom: 0;
      -  }
      -
      -  > p + p {
      -    margin-top: 5px;
      -  }
      -}
      -
      -// Dismissible alerts
      -//
      -// Expand the right padding and account for the close button's positioning.
      -
      -.alert-dismissable, // The misspelled .alert-dismissable was deprecated in 3.2.0.
      -.alert-dismissible {
      -  padding-right: ($alert-padding + 20);
      -
      -  // Adjust close link position
      -  .close {
      -    position: relative;
      -    top: -2px;
      -    right: -21px;
      -    color: inherit;
      -  }
      -}
      -
      -// Alternate styles
      -//
      -// Generate contextual modifier classes for colorizing the alert.
      -
      -.alert-success {
      -  @include alert-variant($alert-success-bg, $alert-success-border, $alert-success-text);
      -}
      -
      -.alert-info {
      -  @include alert-variant($alert-info-bg, $alert-info-border, $alert-info-text);
      -}
      -
      -.alert-warning {
      -  @include alert-variant($alert-warning-bg, $alert-warning-border, $alert-warning-text);
      -}
      -
      -.alert-danger {
      -  @include alert-variant($alert-danger-bg, $alert-danger-border, $alert-danger-text);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_badges.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_badges.scss
      deleted file mode 100644
      index 70002e085b..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_badges.scss
      +++ /dev/null
      @@ -1,68 +0,0 @@
      -//
      -// Badges
      -// --------------------------------------------------
      -
      -
      -// Base class
      -.badge {
      -  display: inline-block;
      -  min-width: 10px;
      -  padding: 3px 7px;
      -  font-size: $font-size-small;
      -  font-weight: $badge-font-weight;
      -  color: $badge-color;
      -  line-height: $badge-line-height;
      -  vertical-align: middle;
      -  white-space: nowrap;
      -  text-align: center;
      -  background-color: $badge-bg;
      -  border-radius: $badge-border-radius;
      -
      -  // Empty badges collapse automatically (not available in IE8)
      -  &:empty {
      -    display: none;
      -  }
      -
      -  // Quick fix for badges in buttons
      -  .btn & {
      -    position: relative;
      -    top: -1px;
      -  }
      -
      -  .btn-xs &,
      -  .btn-group-xs > .btn & {
      -    top: 0;
      -    padding: 1px 5px;
      -  }
      -
      -  // [converter] extracted a& to a.badge
      -
      -  // Account for badges in navs
      -  .list-group-item.active > &,
      -  .nav-pills > .active > a > & {
      -    color: $badge-active-color;
      -    background-color: $badge-active-bg;
      -  }
      -
      -  .list-group-item > & {
      -    float: right;
      -  }
      -
      -  .list-group-item > & + & {
      -    margin-right: 5px;
      -  }
      -
      -  .nav-pills > li > a > & {
      -    margin-left: 3px;
      -  }
      -}
      -
      -// Hover state, but only for links
      -a.badge {
      -  &:hover,
      -  &:focus {
      -    color: $badge-link-hover-color;
      -    text-decoration: none;
      -    cursor: pointer;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_breadcrumbs.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_breadcrumbs.scss
      deleted file mode 100644
      index b61f0c731c..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_breadcrumbs.scss
      +++ /dev/null
      @@ -1,28 +0,0 @@
      -//
      -// Breadcrumbs
      -// --------------------------------------------------
      -
      -
      -.breadcrumb {
      -  padding: $breadcrumb-padding-vertical $breadcrumb-padding-horizontal;
      -  margin-bottom: $line-height-computed;
      -  list-style: none;
      -  background-color: $breadcrumb-bg;
      -  border-radius: $border-radius-base;
      -
      -  > li {
      -    display: inline-block;
      -
      -    + li:before {
      -      // [converter] Workaround for https://github.com/sass/libsass/issues/1115
      -      $nbsp: "\00a0";
      -      content: "#{$breadcrumb-separator}#{$nbsp}"; // Unicode space added since inline-block means non-collapsing white-space
      -      padding: 0 5px;
      -      color: $breadcrumb-color;
      -    }
      -  }
      -
      -  > .active {
      -    color: $breadcrumb-active-color;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_button-groups.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_button-groups.scss
      deleted file mode 100644
      index baaacc4446..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_button-groups.scss
      +++ /dev/null
      @@ -1,244 +0,0 @@
      -//
      -// Button groups
      -// --------------------------------------------------
      -
      -// Make the div behave like a button
      -.btn-group,
      -.btn-group-vertical {
      -  position: relative;
      -  display: inline-block;
      -  vertical-align: middle; // match .btn alignment given font-size hack above
      -  > .btn {
      -    position: relative;
      -    float: left;
      -    // Bring the "active" button to the front
      -    &:hover,
      -    &:focus,
      -    &:active,
      -    &.active {
      -      z-index: 2;
      -    }
      -  }
      -}
      -
      -// Prevent double borders when buttons are next to each other
      -.btn-group {
      -  .btn + .btn,
      -  .btn + .btn-group,
      -  .btn-group + .btn,
      -  .btn-group + .btn-group {
      -    margin-left: -1px;
      -  }
      -}
      -
      -// Optional: Group multiple button groups together for a toolbar
      -.btn-toolbar {
      -  margin-left: -5px; // Offset the first child's margin
      -  @include clearfix;
      -
      -  .btn,
      -  .btn-group,
      -  .input-group {
      -    float: left;
      -  }
      -  > .btn,
      -  > .btn-group,
      -  > .input-group {
      -    margin-left: 5px;
      -  }
      -}
      -
      -.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
      -  border-radius: 0;
      -}
      -
      -// Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match
      -.btn-group > .btn:first-child {
      -  margin-left: 0;
      -  &:not(:last-child):not(.dropdown-toggle) {
      -    @include border-right-radius(0);
      -  }
      -}
      -// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
      -.btn-group > .btn:last-child:not(:first-child),
      -.btn-group > .dropdown-toggle:not(:first-child) {
      -  @include border-left-radius(0);
      -}
      -
      -// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
      -.btn-group > .btn-group {
      -  float: left;
      -}
      -.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
      -  border-radius: 0;
      -}
      -.btn-group > .btn-group:first-child:not(:last-child) {
      -  > .btn:last-child,
      -  > .dropdown-toggle {
      -    @include border-right-radius(0);
      -  }
      -}
      -.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
      -  @include border-left-radius(0);
      -}
      -
      -// On active and open, don't show outline
      -.btn-group .dropdown-toggle:active,
      -.btn-group.open .dropdown-toggle {
      -  outline: 0;
      -}
      -
      -
      -// Sizing
      -//
      -// Remix the default button sizing classes into new ones for easier manipulation.
      -
      -.btn-group-xs > .btn { @extend .btn-xs; }
      -.btn-group-sm > .btn { @extend .btn-sm; }
      -.btn-group-lg > .btn { @extend .btn-lg; }
      -
      -
      -// Split button dropdowns
      -// ----------------------
      -
      -// Give the line between buttons some depth
      -.btn-group > .btn + .dropdown-toggle {
      -  padding-left: 8px;
      -  padding-right: 8px;
      -}
      -.btn-group > .btn-lg + .dropdown-toggle {
      -  padding-left: 12px;
      -  padding-right: 12px;
      -}
      -
      -// The clickable button for toggling the menu
      -// Remove the gradient and set the same inset shadow as the :active state
      -.btn-group.open .dropdown-toggle {
      -  @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
      -
      -  // Show no shadow for `.btn-link` since it has no other button styles.
      -  &.btn-link {
      -    @include box-shadow(none);
      -  }
      -}
      -
      -
      -// Reposition the caret
      -.btn .caret {
      -  margin-left: 0;
      -}
      -// Carets in other button sizes
      -.btn-lg .caret {
      -  border-width: $caret-width-large $caret-width-large 0;
      -  border-bottom-width: 0;
      -}
      -// Upside down carets for .dropup
      -.dropup .btn-lg .caret {
      -  border-width: 0 $caret-width-large $caret-width-large;
      -}
      -
      -
      -// Vertical button groups
      -// ----------------------
      -
      -.btn-group-vertical {
      -  > .btn,
      -  > .btn-group,
      -  > .btn-group > .btn {
      -    display: block;
      -    float: none;
      -    width: 100%;
      -    max-width: 100%;
      -  }
      -
      -  // Clear floats so dropdown menus can be properly placed
      -  > .btn-group {
      -    @include clearfix;
      -    > .btn {
      -      float: none;
      -    }
      -  }
      -
      -  > .btn + .btn,
      -  > .btn + .btn-group,
      -  > .btn-group + .btn,
      -  > .btn-group + .btn-group {
      -    margin-top: -1px;
      -    margin-left: 0;
      -  }
      -}
      -
      -.btn-group-vertical > .btn {
      -  &:not(:first-child):not(:last-child) {
      -    border-radius: 0;
      -  }
      -  &:first-child:not(:last-child) {
      -    @include border-top-radius($btn-border-radius-base);
      -    @include border-bottom-radius(0);
      -  }
      -  &:last-child:not(:first-child) {
      -    @include border-top-radius(0);
      -    @include border-bottom-radius($btn-border-radius-base);
      -  }
      -}
      -.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
      -  border-radius: 0;
      -}
      -.btn-group-vertical > .btn-group:first-child:not(:last-child) {
      -  > .btn:last-child,
      -  > .dropdown-toggle {
      -    @include border-bottom-radius(0);
      -  }
      -}
      -.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
      -  @include border-top-radius(0);
      -}
      -
      -
      -// Justified button groups
      -// ----------------------
      -
      -.btn-group-justified {
      -  display: table;
      -  width: 100%;
      -  table-layout: fixed;
      -  border-collapse: separate;
      -  > .btn,
      -  > .btn-group {
      -    float: none;
      -    display: table-cell;
      -    width: 1%;
      -  }
      -  > .btn-group .btn {
      -    width: 100%;
      -  }
      -
      -  > .btn-group .dropdown-menu {
      -    left: auto;
      -  }
      -}
      -
      -
      -// Checkbox and radio options
      -//
      -// In order to support the browser's form validation feedback, powered by the
      -// `required` attribute, we have to "hide" the inputs via `clip`. We cannot use
      -// `display: none;` or `visibility: hidden;` as that also hides the popover.
      -// Simply visually hiding the inputs via `opacity` would leave them clickable in
      -// certain cases which is prevented by using `clip` and `pointer-events`.
      -// This way, we ensure a DOM element is visible to position the popover from.
      -//
      -// See https://github.com/twbs/bootstrap/pull/12794 and
      -// https://github.com/twbs/bootstrap/pull/14559 for more information.
      -
      -[data-toggle="buttons"] {
      -  > .btn,
      -  > .btn-group > .btn {
      -    input[type="radio"],
      -    input[type="checkbox"] {
      -      position: absolute;
      -      clip: rect(0,0,0,0);
      -      pointer-events: none;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_buttons.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_buttons.scss
      deleted file mode 100644
      index 6452b709f1..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_buttons.scss
      +++ /dev/null
      @@ -1,168 +0,0 @@
      -//
      -// Buttons
      -// --------------------------------------------------
      -
      -
      -// Base styles
      -// --------------------------------------------------
      -
      -.btn {
      -  display: inline-block;
      -  margin-bottom: 0; // For input.btn
      -  font-weight: $btn-font-weight;
      -  text-align: center;
      -  vertical-align: middle;
      -  touch-action: manipulation;
      -  cursor: pointer;
      -  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
      -  border: 1px solid transparent;
      -  white-space: nowrap;
      -  @include button-size($padding-base-vertical, $padding-base-horizontal, $font-size-base, $line-height-base, $btn-border-radius-base);
      -  @include user-select(none);
      -
      -  &,
      -  &:active,
      -  &.active {
      -    &:focus,
      -    &.focus {
      -      @include tab-focus;
      -    }
      -  }
      -
      -  &:hover,
      -  &:focus,
      -  &.focus {
      -    color: $btn-default-color;
      -    text-decoration: none;
      -  }
      -
      -  &:active,
      -  &.active {
      -    outline: 0;
      -    background-image: none;
      -    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
      -  }
      -
      -  &.disabled,
      -  &[disabled],
      -  fieldset[disabled] & {
      -    cursor: $cursor-disabled;
      -    @include opacity(.65);
      -    @include box-shadow(none);
      -  }
      -
      -  // [converter] extracted a& to a.btn
      -}
      -
      -a.btn {
      -  &.disabled,
      -  fieldset[disabled] & {
      -    pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
      -  }
      -}
      -
      -
      -// Alternate buttons
      -// --------------------------------------------------
      -
      -.btn-default {
      -  @include button-variant($btn-default-color, $btn-default-bg, $btn-default-border);
      -}
      -.btn-primary {
      -  @include button-variant($btn-primary-color, $btn-primary-bg, $btn-primary-border);
      -}
      -// Success appears as green
      -.btn-success {
      -  @include button-variant($btn-success-color, $btn-success-bg, $btn-success-border);
      -}
      -// Info appears as blue-green
      -.btn-info {
      -  @include button-variant($btn-info-color, $btn-info-bg, $btn-info-border);
      -}
      -// Warning appears as orange
      -.btn-warning {
      -  @include button-variant($btn-warning-color, $btn-warning-bg, $btn-warning-border);
      -}
      -// Danger and error appear as red
      -.btn-danger {
      -  @include button-variant($btn-danger-color, $btn-danger-bg, $btn-danger-border);
      -}
      -
      -
      -// Link buttons
      -// -------------------------
      -
      -// Make a button look and behave like a link
      -.btn-link {
      -  color: $link-color;
      -  font-weight: normal;
      -  border-radius: 0;
      -
      -  &,
      -  &:active,
      -  &.active,
      -  &[disabled],
      -  fieldset[disabled] & {
      -    background-color: transparent;
      -    @include box-shadow(none);
      -  }
      -  &,
      -  &:hover,
      -  &:focus,
      -  &:active {
      -    border-color: transparent;
      -  }
      -  &:hover,
      -  &:focus {
      -    color: $link-hover-color;
      -    text-decoration: $link-hover-decoration;
      -    background-color: transparent;
      -  }
      -  &[disabled],
      -  fieldset[disabled] & {
      -    &:hover,
      -    &:focus {
      -      color: $btn-link-disabled-color;
      -      text-decoration: none;
      -    }
      -  }
      -}
      -
      -
      -// Button Sizes
      -// --------------------------------------------------
      -
      -.btn-lg {
      -  // line-height: ensure even-numbered height of button next to large input
      -  @include button-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $btn-border-radius-large);
      -}
      -.btn-sm {
      -  // line-height: ensure proper height of button next to small input
      -  @include button-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
      -}
      -.btn-xs {
      -  @include button-size($padding-xs-vertical, $padding-xs-horizontal, $font-size-small, $line-height-small, $btn-border-radius-small);
      -}
      -
      -
      -// Block button
      -// --------------------------------------------------
      -
      -.btn-block {
      -  display: block;
      -  width: 100%;
      -}
      -
      -// Vertically space out multiple block buttons
      -.btn-block + .btn-block {
      -  margin-top: 5px;
      -}
      -
      -// Specificity overrides
      -input[type="submit"],
      -input[type="reset"],
      -input[type="button"] {
      -  &.btn-block {
      -    width: 100%;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_carousel.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_carousel.scss
      deleted file mode 100644
      index 753d881f45..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_carousel.scss
      +++ /dev/null
      @@ -1,270 +0,0 @@
      -//
      -// Carousel
      -// --------------------------------------------------
      -
      -
      -// Wrapper for the slide container and indicators
      -.carousel {
      -  position: relative;
      -}
      -
      -.carousel-inner {
      -  position: relative;
      -  overflow: hidden;
      -  width: 100%;
      -
      -  > .item {
      -    display: none;
      -    position: relative;
      -    @include transition(.6s ease-in-out left);
      -
      -    // Account for jankitude on images
      -    > img,
      -    > a > img {
      -      @include img-responsive;
      -      line-height: 1;
      -    }
      -
      -    // WebKit CSS3 transforms for supported devices
      -    @media all and (transform-3d), (-webkit-transform-3d) {
      -      @include transition-transform(0.6s ease-in-out);
      -      @include backface-visibility(hidden);
      -      @include perspective(1000px);
      -
      -      &.next,
      -      &.active.right {
      -        @include translate3d(100%, 0, 0);
      -        left: 0;
      -      }
      -      &.prev,
      -      &.active.left {
      -        @include translate3d(-100%, 0, 0);
      -        left: 0;
      -      }
      -      &.next.left,
      -      &.prev.right,
      -      &.active {
      -        @include translate3d(0, 0, 0);
      -        left: 0;
      -      }
      -    }
      -  }
      -
      -  > .active,
      -  > .next,
      -  > .prev {
      -    display: block;
      -  }
      -
      -  > .active {
      -    left: 0;
      -  }
      -
      -  > .next,
      -  > .prev {
      -    position: absolute;
      -    top: 0;
      -    width: 100%;
      -  }
      -
      -  > .next {
      -    left: 100%;
      -  }
      -  > .prev {
      -    left: -100%;
      -  }
      -  > .next.left,
      -  > .prev.right {
      -    left: 0;
      -  }
      -
      -  > .active.left {
      -    left: -100%;
      -  }
      -  > .active.right {
      -    left: 100%;
      -  }
      -
      -}
      -
      -// Left/right controls for nav
      -// ---------------------------
      -
      -.carousel-control {
      -  position: absolute;
      -  top: 0;
      -  left: 0;
      -  bottom: 0;
      -  width: $carousel-control-width;
      -  @include opacity($carousel-control-opacity);
      -  font-size: $carousel-control-font-size;
      -  color: $carousel-control-color;
      -  text-align: center;
      -  text-shadow: $carousel-text-shadow;
      -  background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
      -  // We can't have this transition here because WebKit cancels the carousel
      -  // animation if you trip this while in the middle of another animation.
      -
      -  // Set gradients for backgrounds
      -  &.left {
      -    @include gradient-horizontal($start-color: rgba(0,0,0,.5), $end-color: rgba(0,0,0,.0001));
      -  }
      -  &.right {
      -    left: auto;
      -    right: 0;
      -    @include gradient-horizontal($start-color: rgba(0,0,0,.0001), $end-color: rgba(0,0,0,.5));
      -  }
      -
      -  // Hover/focus state
      -  &:hover,
      -  &:focus {
      -    outline: 0;
      -    color: $carousel-control-color;
      -    text-decoration: none;
      -    @include opacity(.9);
      -  }
      -
      -  // Toggles
      -  .icon-prev,
      -  .icon-next,
      -  .glyphicon-chevron-left,
      -  .glyphicon-chevron-right {
      -    position: absolute;
      -    top: 50%;
      -    margin-top: -10px;
      -    z-index: 5;
      -    display: inline-block;
      -  }
      -  .icon-prev,
      -  .glyphicon-chevron-left {
      -    left: 50%;
      -    margin-left: -10px;
      -  }
      -  .icon-next,
      -  .glyphicon-chevron-right {
      -    right: 50%;
      -    margin-right: -10px;
      -  }
      -  .icon-prev,
      -  .icon-next {
      -    width:  20px;
      -    height: 20px;
      -    line-height: 1;
      -    font-family: serif;
      -  }
      -
      -
      -  .icon-prev {
      -    &:before {
      -      content: '\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)
      -    }
      -  }
      -  .icon-next {
      -    &:before {
      -      content: '\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)
      -    }
      -  }
      -}
      -
      -// Optional indicator pips
      -//
      -// Add an unordered list with the following class and add a list item for each
      -// slide your carousel holds.
      -
      -.carousel-indicators {
      -  position: absolute;
      -  bottom: 10px;
      -  left: 50%;
      -  z-index: 15;
      -  width: 60%;
      -  margin-left: -30%;
      -  padding-left: 0;
      -  list-style: none;
      -  text-align: center;
      -
      -  li {
      -    display: inline-block;
      -    width:  10px;
      -    height: 10px;
      -    margin: 1px;
      -    text-indent: -999px;
      -    border: 1px solid $carousel-indicator-border-color;
      -    border-radius: 10px;
      -    cursor: pointer;
      -
      -    // IE8-9 hack for event handling
      -    //
      -    // Internet Explorer 8-9 does not support clicks on elements without a set
      -    // `background-color`. We cannot use `filter` since that's not viewed as a
      -    // background color by the browser. Thus, a hack is needed.
      -    // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Internet_Explorer
      -    //
      -    // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we
      -    // set alpha transparency for the best results possible.
      -    background-color: #000 \9; // IE8
      -    background-color: rgba(0,0,0,0); // IE9
      -  }
      -  .active {
      -    margin: 0;
      -    width:  12px;
      -    height: 12px;
      -    background-color: $carousel-indicator-active-bg;
      -  }
      -}
      -
      -// Optional captions
      -// -----------------------------
      -// Hidden by default for smaller viewports
      -.carousel-caption {
      -  position: absolute;
      -  left: 15%;
      -  right: 15%;
      -  bottom: 20px;
      -  z-index: 10;
      -  padding-top: 20px;
      -  padding-bottom: 20px;
      -  color: $carousel-caption-color;
      -  text-align: center;
      -  text-shadow: $carousel-text-shadow;
      -  & .btn {
      -    text-shadow: none; // No shadow for button elements in carousel-caption
      -  }
      -}
      -
      -
      -// Scale up controls for tablets and up
      -@media screen and (min-width: $screen-sm-min) {
      -
      -  // Scale up the controls a smidge
      -  .carousel-control {
      -    .glyphicon-chevron-left,
      -    .glyphicon-chevron-right,
      -    .icon-prev,
      -    .icon-next {
      -      width: ($carousel-control-font-size * 1.5);
      -      height: ($carousel-control-font-size * 1.5);
      -      margin-top: ($carousel-control-font-size / -2);
      -      font-size: ($carousel-control-font-size * 1.5);
      -    }
      -    .glyphicon-chevron-left,
      -    .icon-prev {
      -      margin-left: ($carousel-control-font-size / -2);
      -    }
      -    .glyphicon-chevron-right,
      -    .icon-next {
      -      margin-right: ($carousel-control-font-size / -2);
      -    }
      -  }
      -
      -  // Show and left align the captions
      -  .carousel-caption {
      -    left: 20%;
      -    right: 20%;
      -    padding-bottom: 30px;
      -  }
      -
      -  // Move up the indicators
      -  .carousel-indicators {
      -    bottom: 20px;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_close.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_close.scss
      deleted file mode 100644
      index 3b74d8a973..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_close.scss
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -//
      -// Close icons
      -// --------------------------------------------------
      -
      -
      -.close {
      -  float: right;
      -  font-size: ($font-size-base * 1.5);
      -  font-weight: $close-font-weight;
      -  line-height: 1;
      -  color: $close-color;
      -  text-shadow: $close-text-shadow;
      -  @include opacity(.2);
      -
      -  &:hover,
      -  &:focus {
      -    color: $close-color;
      -    text-decoration: none;
      -    cursor: pointer;
      -    @include opacity(.5);
      -  }
      -
      -  // [converter] extracted button& to button.close
      -}
      -
      -// Additional properties for button version
      -// iOS requires the button element instead of an anchor tag.
      -// If you want the anchor version, it requires `href="#"`.
      -// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
      -button.close {
      -  padding: 0;
      -  cursor: pointer;
      -  background: transparent;
      -  border: 0;
      -  -webkit-appearance: none;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_code.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_code.scss
      deleted file mode 100644
      index caa5f06304..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_code.scss
      +++ /dev/null
      @@ -1,69 +0,0 @@
      -//
      -// Code (inline and block)
      -// --------------------------------------------------
      -
      -
      -// Inline and block code styles
      -code,
      -kbd,
      -pre,
      -samp {
      -  font-family: $font-family-monospace;
      -}
      -
      -// Inline code
      -code {
      -  padding: 2px 4px;
      -  font-size: 90%;
      -  color: $code-color;
      -  background-color: $code-bg;
      -  border-radius: $border-radius-base;
      -}
      -
      -// User input typically entered via keyboard
      -kbd {
      -  padding: 2px 4px;
      -  font-size: 90%;
      -  color: $kbd-color;
      -  background-color: $kbd-bg;
      -  border-radius: $border-radius-small;
      -  box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
      -
      -  kbd {
      -    padding: 0;
      -    font-size: 100%;
      -    font-weight: bold;
      -    box-shadow: none;
      -  }
      -}
      -
      -// Blocks of code
      -pre {
      -  display: block;
      -  padding: (($line-height-computed - 1) / 2);
      -  margin: 0 0 ($line-height-computed / 2);
      -  font-size: ($font-size-base - 1); // 14px to 13px
      -  line-height: $line-height-base;
      -  word-break: break-all;
      -  word-wrap: break-word;
      -  color: $pre-color;
      -  background-color: $pre-bg;
      -  border: 1px solid $pre-border-color;
      -  border-radius: $border-radius-base;
      -
      -  // Account for some code outputs that place code tags in pre tags
      -  code {
      -    padding: 0;
      -    font-size: inherit;
      -    color: inherit;
      -    white-space: pre-wrap;
      -    background-color: transparent;
      -    border-radius: 0;
      -  }
      -}
      -
      -// Enable scrollable blocks of code
      -.pre-scrollable {
      -  max-height: $pre-scrollable-max-height;
      -  overflow-y: scroll;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_component-animations.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_component-animations.scss
      deleted file mode 100644
      index ca3b43ca78..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_component-animations.scss
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -//
      -// Component animations
      -// --------------------------------------------------
      -
      -// Heads up!
      -//
      -// We don't use the `.opacity()` mixin here since it causes a bug with text
      -// fields in IE7-8. Source: https://github.com/twbs/bootstrap/pull/3552.
      -
      -.fade {
      -  opacity: 0;
      -  @include transition(opacity .15s linear);
      -  &.in {
      -    opacity: 1;
      -  }
      -}
      -
      -.collapse {
      -  display: none;
      -
      -  &.in      { display: block; }
      -  // [converter] extracted tr&.in to tr.collapse.in
      -  // [converter] extracted tbody&.in to tbody.collapse.in
      -}
      -
      -tr.collapse.in    { display: table-row; }
      -
      -tbody.collapse.in { display: table-row-group; }
      -
      -.collapsing {
      -  position: relative;
      -  height: 0;
      -  overflow: hidden;
      -  @include transition-property(height, visibility);
      -  @include transition-duration(.35s);
      -  @include transition-timing-function(ease);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_dropdowns.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_dropdowns.scss
      deleted file mode 100644
      index aac84597a4..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_dropdowns.scss
      +++ /dev/null
      @@ -1,216 +0,0 @@
      -//
      -// Dropdown menus
      -// --------------------------------------------------
      -
      -
      -// Dropdown arrow/caret
      -.caret {
      -  display: inline-block;
      -  width: 0;
      -  height: 0;
      -  margin-left: 2px;
      -  vertical-align: middle;
      -  border-top:   $caret-width-base dashed;
      -  border-top:   $caret-width-base solid \9; // IE8
      -  border-right: $caret-width-base solid transparent;
      -  border-left:  $caret-width-base solid transparent;
      -}
      -
      -// The dropdown wrapper (div)
      -.dropup,
      -.dropdown {
      -  position: relative;
      -}
      -
      -// Prevent the focus on the dropdown toggle when closing dropdowns
      -.dropdown-toggle:focus {
      -  outline: 0;
      -}
      -
      -// The dropdown menu (ul)
      -.dropdown-menu {
      -  position: absolute;
      -  top: 100%;
      -  left: 0;
      -  z-index: $zindex-dropdown;
      -  display: none; // none by default, but block on "open" of the menu
      -  float: left;
      -  min-width: 160px;
      -  padding: 5px 0;
      -  margin: 2px 0 0; // override default ul
      -  list-style: none;
      -  font-size: $font-size-base;
      -  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)
      -  background-color: $dropdown-bg;
      -  border: 1px solid $dropdown-fallback-border; // IE8 fallback
      -  border: 1px solid $dropdown-border;
      -  border-radius: $border-radius-base;
      -  @include box-shadow(0 6px 12px rgba(0,0,0,.175));
      -  background-clip: padding-box;
      -
      -  // Aligns the dropdown menu to right
      -  //
      -  // Deprecated as of 3.1.0 in favor of `.dropdown-menu-[dir]`
      -  &.pull-right {
      -    right: 0;
      -    left: auto;
      -  }
      -
      -  // Dividers (basically an hr) within the dropdown
      -  .divider {
      -    @include nav-divider($dropdown-divider-bg);
      -  }
      -
      -  // Links within the dropdown menu
      -  > li > a {
      -    display: block;
      -    padding: 3px 20px;
      -    clear: both;
      -    font-weight: normal;
      -    line-height: $line-height-base;
      -    color: $dropdown-link-color;
      -    white-space: nowrap; // prevent links from randomly breaking onto new lines
      -  }
      -}
      -
      -// Hover/Focus state
      -.dropdown-menu > li > a {
      -  &:hover,
      -  &:focus {
      -    text-decoration: none;
      -    color: $dropdown-link-hover-color;
      -    background-color: $dropdown-link-hover-bg;
      -  }
      -}
      -
      -// Active state
      -.dropdown-menu > .active > a {
      -  &,
      -  &:hover,
      -  &:focus {
      -    color: $dropdown-link-active-color;
      -    text-decoration: none;
      -    outline: 0;
      -    background-color: $dropdown-link-active-bg;
      -  }
      -}
      -
      -// Disabled state
      -//
      -// Gray out text and ensure the hover/focus state remains gray
      -
      -.dropdown-menu > .disabled > a {
      -  &,
      -  &:hover,
      -  &:focus {
      -    color: $dropdown-link-disabled-color;
      -  }
      -
      -  // Nuke hover/focus effects
      -  &:hover,
      -  &:focus {
      -    text-decoration: none;
      -    background-color: transparent;
      -    background-image: none; // Remove CSS gradient
      -    @include reset-filter;
      -    cursor: $cursor-disabled;
      -  }
      -}
      -
      -// Open state for the dropdown
      -.open {
      -  // Show the menu
      -  > .dropdown-menu {
      -    display: block;
      -  }
      -
      -  // Remove the outline when :focus is triggered
      -  > a {
      -    outline: 0;
      -  }
      -}
      -
      -// Menu positioning
      -//
      -// Add extra class to `.dropdown-menu` to flip the alignment of the dropdown
      -// menu with the parent.
      -.dropdown-menu-right {
      -  left: auto; // Reset the default from `.dropdown-menu`
      -  right: 0;
      -}
      -// With v3, we enabled auto-flipping if you have a dropdown within a right
      -// aligned nav component. To enable the undoing of that, we provide an override
      -// to restore the default dropdown menu alignment.
      -//
      -// This is only for left-aligning a dropdown menu within a `.navbar-right` or
      -// `.pull-right` nav component.
      -.dropdown-menu-left {
      -  left: 0;
      -  right: auto;
      -}
      -
      -// Dropdown section headers
      -.dropdown-header {
      -  display: block;
      -  padding: 3px 20px;
      -  font-size: $font-size-small;
      -  line-height: $line-height-base;
      -  color: $dropdown-header-color;
      -  white-space: nowrap; // as with > li > a
      -}
      -
      -// Backdrop to catch body clicks on mobile, etc.
      -.dropdown-backdrop {
      -  position: fixed;
      -  left: 0;
      -  right: 0;
      -  bottom: 0;
      -  top: 0;
      -  z-index: ($zindex-dropdown - 10);
      -}
      -
      -// Right aligned dropdowns
      -.pull-right > .dropdown-menu {
      -  right: 0;
      -  left: auto;
      -}
      -
      -// Allow for dropdowns to go bottom up (aka, dropup-menu)
      -//
      -// Just add .dropup after the standard .dropdown class and you're set, bro.
      -// TODO: abstract this so that the navbar fixed styles are not placed here?
      -
      -.dropup,
      -.navbar-fixed-bottom .dropdown {
      -  // Reverse the caret
      -  .caret {
      -    border-top: 0;
      -    border-bottom: $caret-width-base dashed;
      -    border-bottom: $caret-width-base solid \9; // IE8
      -    content: "";
      -  }
      -  // Different positioning for bottom up menu
      -  .dropdown-menu {
      -    top: auto;
      -    bottom: 100%;
      -    margin-bottom: 2px;
      -  }
      -}
      -
      -
      -// Component alignment
      -//
      -// Reiterate per navbar.less and the modified component alignment there.
      -
      -@media (min-width: $grid-float-breakpoint) {
      -  .navbar-right {
      -    .dropdown-menu {
      -      right: 0; left: auto;
      -    }
      -    // Necessary for overrides of the default right aligned menu.
      -    // Will remove come v4 in all likelihood.
      -    .dropdown-menu-left {
      -      left: 0; right: auto;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_forms.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_forms.scss
      deleted file mode 100644
      index 11ba1096c7..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_forms.scss
      +++ /dev/null
      @@ -1,617 +0,0 @@
      -//
      -// Forms
      -// --------------------------------------------------
      -
      -
      -// Normalize non-controls
      -//
      -// Restyle and baseline non-control form elements.
      -
      -fieldset {
      -  padding: 0;
      -  margin: 0;
      -  border: 0;
      -  // Chrome and Firefox set a `min-width: min-content;` on fieldsets,
      -  // so we reset that to ensure it behaves more like a standard block element.
      -  // See https://github.com/twbs/bootstrap/issues/12359.
      -  min-width: 0;
      -}
      -
      -legend {
      -  display: block;
      -  width: 100%;
      -  padding: 0;
      -  margin-bottom: $line-height-computed;
      -  font-size: ($font-size-base * 1.5);
      -  line-height: inherit;
      -  color: $legend-color;
      -  border: 0;
      -  border-bottom: 1px solid $legend-border-color;
      -}
      -
      -label {
      -  display: inline-block;
      -  max-width: 100%; // Force IE8 to wrap long content (see https://github.com/twbs/bootstrap/issues/13141)
      -  margin-bottom: 5px;
      -  font-weight: bold;
      -}
      -
      -
      -// Normalize form controls
      -//
      -// While most of our form styles require extra classes, some basic normalization
      -// is required to ensure optimum display with or without those classes to better
      -// address browser inconsistencies.
      -
      -// Override content-box in Normalize (* isn't specific enough)
      -input[type="search"] {
      -  @include box-sizing(border-box);
      -}
      -
      -// Position radios and checkboxes better
      -input[type="radio"],
      -input[type="checkbox"] {
      -  margin: 4px 0 0;
      -  margin-top: 1px \9; // IE8-9
      -  line-height: normal;
      -}
      -
      -input[type="file"] {
      -  display: block;
      -}
      -
      -// Make range inputs behave like textual form controls
      -input[type="range"] {
      -  display: block;
      -  width: 100%;
      -}
      -
      -// Make multiple select elements height not fixed
      -select[multiple],
      -select[size] {
      -  height: auto;
      -}
      -
      -// Focus for file, radio, and checkbox
      -input[type="file"]:focus,
      -input[type="radio"]:focus,
      -input[type="checkbox"]:focus {
      -  @include tab-focus;
      -}
      -
      -// Adjust output element
      -output {
      -  display: block;
      -  padding-top: ($padding-base-vertical + 1);
      -  font-size: $font-size-base;
      -  line-height: $line-height-base;
      -  color: $input-color;
      -}
      -
      -
      -// Common form controls
      -//
      -// Shared size and type resets for form controls. Apply `.form-control` to any
      -// of the following form controls:
      -//
      -// select
      -// textarea
      -// input[type="text"]
      -// input[type="password"]
      -// input[type="datetime"]
      -// input[type="datetime-local"]
      -// input[type="date"]
      -// input[type="month"]
      -// input[type="time"]
      -// input[type="week"]
      -// input[type="number"]
      -// input[type="email"]
      -// input[type="url"]
      -// input[type="search"]
      -// input[type="tel"]
      -// input[type="color"]
      -
      -.form-control {
      -  display: block;
      -  width: 100%;
      -  height: $input-height-base; // Make inputs at least the height of their button counterpart (base line-height + padding + border)
      -  padding: $padding-base-vertical $padding-base-horizontal;
      -  font-size: $font-size-base;
      -  line-height: $line-height-base;
      -  color: $input-color;
      -  background-color: $input-bg;
      -  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
      -  border: 1px solid $input-border;
      -  border-radius: $input-border-radius; // Note: This has no effect on <select>s in some browsers, due to the limited stylability of <select>s in CSS.
      -  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075));
      -  @include transition(border-color ease-in-out .15s, box-shadow ease-in-out .15s);
      -
      -  // Customize the `:focus` state to imitate native WebKit styles.
      -  @include form-control-focus;
      -
      -  // Placeholder
      -  @include placeholder;
      -
      -  // Unstyle the caret on `<select>`s in IE10+.
      -  &::-ms-expand {
      -    border: 0;
      -    background-color: transparent;
      -  }
      -
      -  // Disabled and read-only inputs
      -  //
      -  // HTML5 says that controls under a fieldset > legend:first-child won't be
      -  // disabled if the fieldset is disabled. Due to implementation difficulty, we
      -  // don't honor that edge case; we style them as disabled anyway.
      -  &[disabled],
      -  &[readonly],
      -  fieldset[disabled] & {
      -    background-color: $input-bg-disabled;
      -    opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
      -  }
      -
      -  &[disabled],
      -  fieldset[disabled] & {
      -    cursor: $cursor-disabled;
      -  }
      -
      -  // [converter] extracted textarea& to textarea.form-control
      -}
      -
      -// Reset height for `textarea`s
      -textarea.form-control {
      -  height: auto;
      -}
      -
      -
      -// Search inputs in iOS
      -//
      -// This overrides the extra rounded corners on search inputs in iOS so that our
      -// `.form-control` class can properly style them. Note that this cannot simply
      -// be added to `.form-control` as it's not specific enough. For details, see
      -// https://github.com/twbs/bootstrap/issues/11586.
      -
      -input[type="search"] {
      -  -webkit-appearance: none;
      -}
      -
      -
      -// Special styles for iOS temporal inputs
      -//
      -// In Mobile Safari, setting `display: block` on temporal inputs causes the
      -// text within the input to become vertically misaligned. As a workaround, we
      -// set a pixel line-height that matches the given height of the input, but only
      -// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
      -//
      -// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
      -
      -@media screen and (-webkit-min-device-pixel-ratio: 0) {
      -  input[type="date"],
      -  input[type="time"],
      -  input[type="datetime-local"],
      -  input[type="month"] {
      -    &.form-control {
      -      line-height: $input-height-base;
      -    }
      -
      -    &.input-sm,
      -    .input-group-sm & {
      -      line-height: $input-height-small;
      -    }
      -
      -    &.input-lg,
      -    .input-group-lg & {
      -      line-height: $input-height-large;
      -    }
      -  }
      -}
      -
      -
      -// Form groups
      -//
      -// Designed to help with the organization and spacing of vertical forms. For
      -// horizontal forms, use the predefined grid classes.
      -
      -.form-group {
      -  margin-bottom: $form-group-margin-bottom;
      -}
      -
      -
      -// Checkboxes and radios
      -//
      -// Indent the labels to position radios/checkboxes as hanging controls.
      -
      -.radio,
      -.checkbox {
      -  position: relative;
      -  display: block;
      -  margin-top: 10px;
      -  margin-bottom: 10px;
      -
      -  label {
      -    min-height: $line-height-computed; // Ensure the input doesn't jump when there is no text
      -    padding-left: 20px;
      -    margin-bottom: 0;
      -    font-weight: normal;
      -    cursor: pointer;
      -  }
      -}
      -.radio input[type="radio"],
      -.radio-inline input[type="radio"],
      -.checkbox input[type="checkbox"],
      -.checkbox-inline input[type="checkbox"] {
      -  position: absolute;
      -  margin-left: -20px;
      -  margin-top: 4px \9;
      -}
      -
      -.radio + .radio,
      -.checkbox + .checkbox {
      -  margin-top: -5px; // Move up sibling radios or checkboxes for tighter spacing
      -}
      -
      -// Radios and checkboxes on same line
      -.radio-inline,
      -.checkbox-inline {
      -  position: relative;
      -  display: inline-block;
      -  padding-left: 20px;
      -  margin-bottom: 0;
      -  vertical-align: middle;
      -  font-weight: normal;
      -  cursor: pointer;
      -}
      -.radio-inline + .radio-inline,
      -.checkbox-inline + .checkbox-inline {
      -  margin-top: 0;
      -  margin-left: 10px; // space out consecutive inline controls
      -}
      -
      -// Apply same disabled cursor tweak as for inputs
      -// Some special care is needed because <label>s don't inherit their parent's `cursor`.
      -//
      -// Note: Neither radios nor checkboxes can be readonly.
      -input[type="radio"],
      -input[type="checkbox"] {
      -  &[disabled],
      -  &.disabled,
      -  fieldset[disabled] & {
      -    cursor: $cursor-disabled;
      -  }
      -}
      -// These classes are used directly on <label>s
      -.radio-inline,
      -.checkbox-inline {
      -  &.disabled,
      -  fieldset[disabled] & {
      -    cursor: $cursor-disabled;
      -  }
      -}
      -// These classes are used on elements with <label> descendants
      -.radio,
      -.checkbox {
      -  &.disabled,
      -  fieldset[disabled] & {
      -    label {
      -      cursor: $cursor-disabled;
      -    }
      -  }
      -}
      -
      -
      -// Static form control text
      -//
      -// Apply class to a `p` element to make any string of text align with labels in
      -// a horizontal form layout.
      -
      -.form-control-static {
      -  // Size it appropriately next to real form controls
      -  padding-top: ($padding-base-vertical + 1);
      -  padding-bottom: ($padding-base-vertical + 1);
      -  // Remove default margin from `p`
      -  margin-bottom: 0;
      -  min-height: ($line-height-computed + $font-size-base);
      -
      -  &.input-lg,
      -  &.input-sm {
      -    padding-left: 0;
      -    padding-right: 0;
      -  }
      -}
      -
      -
      -// Form control sizing
      -//
      -// Build on `.form-control` with modifier classes to decrease or increase the
      -// height and font-size of form controls.
      -//
      -// The `.form-group-* form-control` variations are sadly duplicated to avoid the
      -// issue documented in https://github.com/twbs/bootstrap/issues/15074.
      -
      -@include input-size('.input-sm', $input-height-small, $padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $input-border-radius-small);
      -.form-group-sm {
      -  .form-control {
      -    height: $input-height-small;
      -    padding: $padding-small-vertical $padding-small-horizontal;
      -    font-size: $font-size-small;
      -    line-height: $line-height-small;
      -    border-radius: $input-border-radius-small;
      -  }
      -  select.form-control {
      -    height: $input-height-small;
      -    line-height: $input-height-small;
      -  }
      -  textarea.form-control,
      -  select[multiple].form-control {
      -    height: auto;
      -  }
      -  .form-control-static {
      -    height: $input-height-small;
      -    min-height: ($line-height-computed + $font-size-small);
      -    padding: ($padding-small-vertical + 1) $padding-small-horizontal;
      -    font-size: $font-size-small;
      -    line-height: $line-height-small;
      -  }
      -}
      -
      -@include input-size('.input-lg', $input-height-large, $padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $input-border-radius-large);
      -.form-group-lg {
      -  .form-control {
      -    height: $input-height-large;
      -    padding: $padding-large-vertical $padding-large-horizontal;
      -    font-size: $font-size-large;
      -    line-height: $line-height-large;
      -    border-radius: $input-border-radius-large;
      -  }
      -  select.form-control {
      -    height: $input-height-large;
      -    line-height: $input-height-large;
      -  }
      -  textarea.form-control,
      -  select[multiple].form-control {
      -    height: auto;
      -  }
      -  .form-control-static {
      -    height: $input-height-large;
      -    min-height: ($line-height-computed + $font-size-large);
      -    padding: ($padding-large-vertical + 1) $padding-large-horizontal;
      -    font-size: $font-size-large;
      -    line-height: $line-height-large;
      -  }
      -}
      -
      -
      -// Form control feedback states
      -//
      -// Apply contextual and semantic states to individual form controls.
      -
      -.has-feedback {
      -  // Enable absolute positioning
      -  position: relative;
      -
      -  // Ensure icons don't overlap text
      -  .form-control {
      -    padding-right: ($input-height-base * 1.25);
      -  }
      -}
      -// Feedback icon (requires .glyphicon classes)
      -.form-control-feedback {
      -  position: absolute;
      -  top: 0;
      -  right: 0;
      -  z-index: 2; // Ensure icon is above input groups
      -  display: block;
      -  width: $input-height-base;
      -  height: $input-height-base;
      -  line-height: $input-height-base;
      -  text-align: center;
      -  pointer-events: none;
      -}
      -.input-lg + .form-control-feedback,
      -.input-group-lg + .form-control-feedback,
      -.form-group-lg .form-control + .form-control-feedback {
      -  width: $input-height-large;
      -  height: $input-height-large;
      -  line-height: $input-height-large;
      -}
      -.input-sm + .form-control-feedback,
      -.input-group-sm + .form-control-feedback,
      -.form-group-sm .form-control + .form-control-feedback {
      -  width: $input-height-small;
      -  height: $input-height-small;
      -  line-height: $input-height-small;
      -}
      -
      -// Feedback states
      -.has-success {
      -  @include form-control-validation($state-success-text, $state-success-text, $state-success-bg);
      -}
      -.has-warning {
      -  @include form-control-validation($state-warning-text, $state-warning-text, $state-warning-bg);
      -}
      -.has-error {
      -  @include form-control-validation($state-danger-text, $state-danger-text, $state-danger-bg);
      -}
      -
      -// Reposition feedback icon if input has visible label above
      -.has-feedback label {
      -
      -  & ~ .form-control-feedback {
      -    top: ($line-height-computed + 5); // Height of the `label` and its margin
      -  }
      -  &.sr-only ~ .form-control-feedback {
      -    top: 0;
      -  }
      -}
      -
      -
      -// Help text
      -//
      -// Apply to any element you wish to create light text for placement immediately
      -// below a form control. Use for general help, formatting, or instructional text.
      -
      -.help-block {
      -  display: block; // account for any element using help-block
      -  margin-top: 5px;
      -  margin-bottom: 10px;
      -  color: lighten($text-color, 25%); // lighten the text some for contrast
      -}
      -
      -
      -// Inline forms
      -//
      -// Make forms appear inline(-block) by adding the `.form-inline` class. Inline
      -// forms begin stacked on extra small (mobile) devices and then go inline when
      -// viewports reach <768px.
      -//
      -// Requires wrapping inputs and labels with `.form-group` for proper display of
      -// default HTML form controls and our custom form controls (e.g., input groups).
      -//
      -// Heads up! This is mixin-ed into `.navbar-form` in navbars.less.
      -
      -// [converter] extracted from `.form-inline` for libsass compatibility
      -@mixin form-inline {
      -
      -  // Kick in the inline
      -  @media (min-width: $screen-sm-min) {
      -    // Inline-block all the things for "inline"
      -    .form-group {
      -      display: inline-block;
      -      margin-bottom: 0;
      -      vertical-align: middle;
      -    }
      -
      -    // In navbar-form, allow folks to *not* use `.form-group`
      -    .form-control {
      -      display: inline-block;
      -      width: auto; // Prevent labels from stacking above inputs in `.form-group`
      -      vertical-align: middle;
      -    }
      -
      -    // Make static controls behave like regular ones
      -    .form-control-static {
      -      display: inline-block;
      -    }
      -
      -    .input-group {
      -      display: inline-table;
      -      vertical-align: middle;
      -
      -      .input-group-addon,
      -      .input-group-btn,
      -      .form-control {
      -        width: auto;
      -      }
      -    }
      -
      -    // Input groups need that 100% width though
      -    .input-group > .form-control {
      -      width: 100%;
      -    }
      -
      -    .control-label {
      -      margin-bottom: 0;
      -      vertical-align: middle;
      -    }
      -
      -    // Remove default margin on radios/checkboxes that were used for stacking, and
      -    // then undo the floating of radios and checkboxes to match.
      -    .radio,
      -    .checkbox {
      -      display: inline-block;
      -      margin-top: 0;
      -      margin-bottom: 0;
      -      vertical-align: middle;
      -
      -      label {
      -        padding-left: 0;
      -      }
      -    }
      -    .radio input[type="radio"],
      -    .checkbox input[type="checkbox"] {
      -      position: relative;
      -      margin-left: 0;
      -    }
      -
      -    // Re-override the feedback icon.
      -    .has-feedback .form-control-feedback {
      -      top: 0;
      -    }
      -  }
      -}
      -// [converter] extracted as `@mixin form-inline` for libsass compatibility
      -.form-inline {
      -  @include form-inline;
      -}
      -
      -
      -
      -// Horizontal forms
      -//
      -// Horizontal forms are built on grid classes and allow you to create forms with
      -// labels on the left and inputs on the right.
      -
      -.form-horizontal {
      -
      -  // Consistent vertical alignment of radios and checkboxes
      -  //
      -  // Labels also get some reset styles, but that is scoped to a media query below.
      -  .radio,
      -  .checkbox,
      -  .radio-inline,
      -  .checkbox-inline {
      -    margin-top: 0;
      -    margin-bottom: 0;
      -    padding-top: ($padding-base-vertical + 1); // Default padding plus a border
      -  }
      -  // Account for padding we're adding to ensure the alignment and of help text
      -  // and other content below items
      -  .radio,
      -  .checkbox {
      -    min-height: ($line-height-computed + ($padding-base-vertical + 1));
      -  }
      -
      -  // Make form groups behave like rows
      -  .form-group {
      -    @include make-row;
      -  }
      -
      -  // Reset spacing and right align labels, but scope to media queries so that
      -  // labels on narrow viewports stack the same as a default form example.
      -  @media (min-width: $screen-sm-min) {
      -    .control-label {
      -      text-align: right;
      -      margin-bottom: 0;
      -      padding-top: ($padding-base-vertical + 1); // Default padding plus a border
      -    }
      -  }
      -
      -  // Validation states
      -  //
      -  // Reposition the icon because it's now within a grid column and columns have
      -  // `position: relative;` on them. Also accounts for the grid gutter padding.
      -  .has-feedback .form-control-feedback {
      -    right: floor(($grid-gutter-width / 2));
      -  }
      -
      -  // Form group sizes
      -  //
      -  // Quick utility class for applying `.input-lg` and `.input-sm` styles to the
      -  // inputs and labels within a `.form-group`.
      -  .form-group-lg {
      -    @media (min-width: $screen-sm-min) {
      -      .control-label {
      -        padding-top: ($padding-large-vertical + 1);
      -        font-size: $font-size-large;
      -      }
      -    }
      -  }
      -  .form-group-sm {
      -    @media (min-width: $screen-sm-min) {
      -      .control-label {
      -        padding-top: ($padding-small-vertical + 1);
      -        font-size: $font-size-small;
      -      }
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_glyphicons.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_glyphicons.scss
      deleted file mode 100644
      index 07a0fc91fe..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_glyphicons.scss
      +++ /dev/null
      @@ -1,307 +0,0 @@
      -//
      -// Glyphicons for Bootstrap
      -//
      -// Since icons are fonts, they can be placed anywhere text is placed and are
      -// thus automatically sized to match the surrounding child. To use, create an
      -// inline element with the appropriate classes, like so:
      -//
      -// <a href="#"><span class="glyphicon glyphicon-star"></span> Star</a>
      -
      -@at-root {
      -  // Import the fonts
      -  @font-face {
      -    font-family: 'Glyphicons Halflings';
      -    src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot'), '#{$icon-font-path}#{$icon-font-name}.eot'));
      -    src: url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.eot?#iefix'), '#{$icon-font-path}#{$icon-font-name}.eot?#iefix')) format('embedded-opentype'),
      -         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff2'), '#{$icon-font-path}#{$icon-font-name}.woff2')) format('woff2'),
      -         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.woff'), '#{$icon-font-path}#{$icon-font-name}.woff')) format('woff'),
      -         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.ttf'), '#{$icon-font-path}#{$icon-font-name}.ttf')) format('truetype'),
      -         url(if($bootstrap-sass-asset-helper, twbs-font-path('#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}'), '#{$icon-font-path}#{$icon-font-name}.svg##{$icon-font-svg-id}')) format('svg');
      -  }
      -}
      -
      -// Catchall baseclass
      -.glyphicon {
      -  position: relative;
      -  top: 1px;
      -  display: inline-block;
      -  font-family: 'Glyphicons Halflings';
      -  font-style: normal;
      -  font-weight: normal;
      -  line-height: 1;
      -  -webkit-font-smoothing: antialiased;
      -  -moz-osx-font-smoothing: grayscale;
      -}
      -
      -// Individual icons
      -.glyphicon-asterisk               { &:before { content: "\002a"; } }
      -.glyphicon-plus                   { &:before { content: "\002b"; } }
      -.glyphicon-euro,
      -.glyphicon-eur                    { &:before { content: "\20ac"; } }
      -.glyphicon-minus                  { &:before { content: "\2212"; } }
      -.glyphicon-cloud                  { &:before { content: "\2601"; } }
      -.glyphicon-envelope               { &:before { content: "\2709"; } }
      -.glyphicon-pencil                 { &:before { content: "\270f"; } }
      -.glyphicon-glass                  { &:before { content: "\e001"; } }
      -.glyphicon-music                  { &:before { content: "\e002"; } }
      -.glyphicon-search                 { &:before { content: "\e003"; } }
      -.glyphicon-heart                  { &:before { content: "\e005"; } }
      -.glyphicon-star                   { &:before { content: "\e006"; } }
      -.glyphicon-star-empty             { &:before { content: "\e007"; } }
      -.glyphicon-user                   { &:before { content: "\e008"; } }
      -.glyphicon-film                   { &:before { content: "\e009"; } }
      -.glyphicon-th-large               { &:before { content: "\e010"; } }
      -.glyphicon-th                     { &:before { content: "\e011"; } }
      -.glyphicon-th-list                { &:before { content: "\e012"; } }
      -.glyphicon-ok                     { &:before { content: "\e013"; } }
      -.glyphicon-remove                 { &:before { content: "\e014"; } }
      -.glyphicon-zoom-in                { &:before { content: "\e015"; } }
      -.glyphicon-zoom-out               { &:before { content: "\e016"; } }
      -.glyphicon-off                    { &:before { content: "\e017"; } }
      -.glyphicon-signal                 { &:before { content: "\e018"; } }
      -.glyphicon-cog                    { &:before { content: "\e019"; } }
      -.glyphicon-trash                  { &:before { content: "\e020"; } }
      -.glyphicon-home                   { &:before { content: "\e021"; } }
      -.glyphicon-file                   { &:before { content: "\e022"; } }
      -.glyphicon-time                   { &:before { content: "\e023"; } }
      -.glyphicon-road                   { &:before { content: "\e024"; } }
      -.glyphicon-download-alt           { &:before { content: "\e025"; } }
      -.glyphicon-download               { &:before { content: "\e026"; } }
      -.glyphicon-upload                 { &:before { content: "\e027"; } }
      -.glyphicon-inbox                  { &:before { content: "\e028"; } }
      -.glyphicon-play-circle            { &:before { content: "\e029"; } }
      -.glyphicon-repeat                 { &:before { content: "\e030"; } }
      -.glyphicon-refresh                { &:before { content: "\e031"; } }
      -.glyphicon-list-alt               { &:before { content: "\e032"; } }
      -.glyphicon-lock                   { &:before { content: "\e033"; } }
      -.glyphicon-flag                   { &:before { content: "\e034"; } }
      -.glyphicon-headphones             { &:before { content: "\e035"; } }
      -.glyphicon-volume-off             { &:before { content: "\e036"; } }
      -.glyphicon-volume-down            { &:before { content: "\e037"; } }
      -.glyphicon-volume-up              { &:before { content: "\e038"; } }
      -.glyphicon-qrcode                 { &:before { content: "\e039"; } }
      -.glyphicon-barcode                { &:before { content: "\e040"; } }
      -.glyphicon-tag                    { &:before { content: "\e041"; } }
      -.glyphicon-tags                   { &:before { content: "\e042"; } }
      -.glyphicon-book                   { &:before { content: "\e043"; } }
      -.glyphicon-bookmark               { &:before { content: "\e044"; } }
      -.glyphicon-print                  { &:before { content: "\e045"; } }
      -.glyphicon-camera                 { &:before { content: "\e046"; } }
      -.glyphicon-font                   { &:before { content: "\e047"; } }
      -.glyphicon-bold                   { &:before { content: "\e048"; } }
      -.glyphicon-italic                 { &:before { content: "\e049"; } }
      -.glyphicon-text-height            { &:before { content: "\e050"; } }
      -.glyphicon-text-width             { &:before { content: "\e051"; } }
      -.glyphicon-align-left             { &:before { content: "\e052"; } }
      -.glyphicon-align-center           { &:before { content: "\e053"; } }
      -.glyphicon-align-right            { &:before { content: "\e054"; } }
      -.glyphicon-align-justify          { &:before { content: "\e055"; } }
      -.glyphicon-list                   { &:before { content: "\e056"; } }
      -.glyphicon-indent-left            { &:before { content: "\e057"; } }
      -.glyphicon-indent-right           { &:before { content: "\e058"; } }
      -.glyphicon-facetime-video         { &:before { content: "\e059"; } }
      -.glyphicon-picture                { &:before { content: "\e060"; } }
      -.glyphicon-map-marker             { &:before { content: "\e062"; } }
      -.glyphicon-adjust                 { &:before { content: "\e063"; } }
      -.glyphicon-tint                   { &:before { content: "\e064"; } }
      -.glyphicon-edit                   { &:before { content: "\e065"; } }
      -.glyphicon-share                  { &:before { content: "\e066"; } }
      -.glyphicon-check                  { &:before { content: "\e067"; } }
      -.glyphicon-move                   { &:before { content: "\e068"; } }
      -.glyphicon-step-backward          { &:before { content: "\e069"; } }
      -.glyphicon-fast-backward          { &:before { content: "\e070"; } }
      -.glyphicon-backward               { &:before { content: "\e071"; } }
      -.glyphicon-play                   { &:before { content: "\e072"; } }
      -.glyphicon-pause                  { &:before { content: "\e073"; } }
      -.glyphicon-stop                   { &:before { content: "\e074"; } }
      -.glyphicon-forward                { &:before { content: "\e075"; } }
      -.glyphicon-fast-forward           { &:before { content: "\e076"; } }
      -.glyphicon-step-forward           { &:before { content: "\e077"; } }
      -.glyphicon-eject                  { &:before { content: "\e078"; } }
      -.glyphicon-chevron-left           { &:before { content: "\e079"; } }
      -.glyphicon-chevron-right          { &:before { content: "\e080"; } }
      -.glyphicon-plus-sign              { &:before { content: "\e081"; } }
      -.glyphicon-minus-sign             { &:before { content: "\e082"; } }
      -.glyphicon-remove-sign            { &:before { content: "\e083"; } }
      -.glyphicon-ok-sign                { &:before { content: "\e084"; } }
      -.glyphicon-question-sign          { &:before { content: "\e085"; } }
      -.glyphicon-info-sign              { &:before { content: "\e086"; } }
      -.glyphicon-screenshot             { &:before { content: "\e087"; } }
      -.glyphicon-remove-circle          { &:before { content: "\e088"; } }
      -.glyphicon-ok-circle              { &:before { content: "\e089"; } }
      -.glyphicon-ban-circle             { &:before { content: "\e090"; } }
      -.glyphicon-arrow-left             { &:before { content: "\e091"; } }
      -.glyphicon-arrow-right            { &:before { content: "\e092"; } }
      -.glyphicon-arrow-up               { &:before { content: "\e093"; } }
      -.glyphicon-arrow-down             { &:before { content: "\e094"; } }
      -.glyphicon-share-alt              { &:before { content: "\e095"; } }
      -.glyphicon-resize-full            { &:before { content: "\e096"; } }
      -.glyphicon-resize-small           { &:before { content: "\e097"; } }
      -.glyphicon-exclamation-sign       { &:before { content: "\e101"; } }
      -.glyphicon-gift                   { &:before { content: "\e102"; } }
      -.glyphicon-leaf                   { &:before { content: "\e103"; } }
      -.glyphicon-fire                   { &:before { content: "\e104"; } }
      -.glyphicon-eye-open               { &:before { content: "\e105"; } }
      -.glyphicon-eye-close              { &:before { content: "\e106"; } }
      -.glyphicon-warning-sign           { &:before { content: "\e107"; } }
      -.glyphicon-plane                  { &:before { content: "\e108"; } }
      -.glyphicon-calendar               { &:before { content: "\e109"; } }
      -.glyphicon-random                 { &:before { content: "\e110"; } }
      -.glyphicon-comment                { &:before { content: "\e111"; } }
      -.glyphicon-magnet                 { &:before { content: "\e112"; } }
      -.glyphicon-chevron-up             { &:before { content: "\e113"; } }
      -.glyphicon-chevron-down           { &:before { content: "\e114"; } }
      -.glyphicon-retweet                { &:before { content: "\e115"; } }
      -.glyphicon-shopping-cart          { &:before { content: "\e116"; } }
      -.glyphicon-folder-close           { &:before { content: "\e117"; } }
      -.glyphicon-folder-open            { &:before { content: "\e118"; } }
      -.glyphicon-resize-vertical        { &:before { content: "\e119"; } }
      -.glyphicon-resize-horizontal      { &:before { content: "\e120"; } }
      -.glyphicon-hdd                    { &:before { content: "\e121"; } }
      -.glyphicon-bullhorn               { &:before { content: "\e122"; } }
      -.glyphicon-bell                   { &:before { content: "\e123"; } }
      -.glyphicon-certificate            { &:before { content: "\e124"; } }
      -.glyphicon-thumbs-up              { &:before { content: "\e125"; } }
      -.glyphicon-thumbs-down            { &:before { content: "\e126"; } }
      -.glyphicon-hand-right             { &:before { content: "\e127"; } }
      -.glyphicon-hand-left              { &:before { content: "\e128"; } }
      -.glyphicon-hand-up                { &:before { content: "\e129"; } }
      -.glyphicon-hand-down              { &:before { content: "\e130"; } }
      -.glyphicon-circle-arrow-right     { &:before { content: "\e131"; } }
      -.glyphicon-circle-arrow-left      { &:before { content: "\e132"; } }
      -.glyphicon-circle-arrow-up        { &:before { content: "\e133"; } }
      -.glyphicon-circle-arrow-down      { &:before { content: "\e134"; } }
      -.glyphicon-globe                  { &:before { content: "\e135"; } }
      -.glyphicon-wrench                 { &:before { content: "\e136"; } }
      -.glyphicon-tasks                  { &:before { content: "\e137"; } }
      -.glyphicon-filter                 { &:before { content: "\e138"; } }
      -.glyphicon-briefcase              { &:before { content: "\e139"; } }
      -.glyphicon-fullscreen             { &:before { content: "\e140"; } }
      -.glyphicon-dashboard              { &:before { content: "\e141"; } }
      -.glyphicon-paperclip              { &:before { content: "\e142"; } }
      -.glyphicon-heart-empty            { &:before { content: "\e143"; } }
      -.glyphicon-link                   { &:before { content: "\e144"; } }
      -.glyphicon-phone                  { &:before { content: "\e145"; } }
      -.glyphicon-pushpin                { &:before { content: "\e146"; } }
      -.glyphicon-usd                    { &:before { content: "\e148"; } }
      -.glyphicon-gbp                    { &:before { content: "\e149"; } }
      -.glyphicon-sort                   { &:before { content: "\e150"; } }
      -.glyphicon-sort-by-alphabet       { &:before { content: "\e151"; } }
      -.glyphicon-sort-by-alphabet-alt   { &:before { content: "\e152"; } }
      -.glyphicon-sort-by-order          { &:before { content: "\e153"; } }
      -.glyphicon-sort-by-order-alt      { &:before { content: "\e154"; } }
      -.glyphicon-sort-by-attributes     { &:before { content: "\e155"; } }
      -.glyphicon-sort-by-attributes-alt { &:before { content: "\e156"; } }
      -.glyphicon-unchecked              { &:before { content: "\e157"; } }
      -.glyphicon-expand                 { &:before { content: "\e158"; } }
      -.glyphicon-collapse-down          { &:before { content: "\e159"; } }
      -.glyphicon-collapse-up            { &:before { content: "\e160"; } }
      -.glyphicon-log-in                 { &:before { content: "\e161"; } }
      -.glyphicon-flash                  { &:before { content: "\e162"; } }
      -.glyphicon-log-out                { &:before { content: "\e163"; } }
      -.glyphicon-new-window             { &:before { content: "\e164"; } }
      -.glyphicon-record                 { &:before { content: "\e165"; } }
      -.glyphicon-save                   { &:before { content: "\e166"; } }
      -.glyphicon-open                   { &:before { content: "\e167"; } }
      -.glyphicon-saved                  { &:before { content: "\e168"; } }
      -.glyphicon-import                 { &:before { content: "\e169"; } }
      -.glyphicon-export                 { &:before { content: "\e170"; } }
      -.glyphicon-send                   { &:before { content: "\e171"; } }
      -.glyphicon-floppy-disk            { &:before { content: "\e172"; } }
      -.glyphicon-floppy-saved           { &:before { content: "\e173"; } }
      -.glyphicon-floppy-remove          { &:before { content: "\e174"; } }
      -.glyphicon-floppy-save            { &:before { content: "\e175"; } }
      -.glyphicon-floppy-open            { &:before { content: "\e176"; } }
      -.glyphicon-credit-card            { &:before { content: "\e177"; } }
      -.glyphicon-transfer               { &:before { content: "\e178"; } }
      -.glyphicon-cutlery                { &:before { content: "\e179"; } }
      -.glyphicon-header                 { &:before { content: "\e180"; } }
      -.glyphicon-compressed             { &:before { content: "\e181"; } }
      -.glyphicon-earphone               { &:before { content: "\e182"; } }
      -.glyphicon-phone-alt              { &:before { content: "\e183"; } }
      -.glyphicon-tower                  { &:before { content: "\e184"; } }
      -.glyphicon-stats                  { &:before { content: "\e185"; } }
      -.glyphicon-sd-video               { &:before { content: "\e186"; } }
      -.glyphicon-hd-video               { &:before { content: "\e187"; } }
      -.glyphicon-subtitles              { &:before { content: "\e188"; } }
      -.glyphicon-sound-stereo           { &:before { content: "\e189"; } }
      -.glyphicon-sound-dolby            { &:before { content: "\e190"; } }
      -.glyphicon-sound-5-1              { &:before { content: "\e191"; } }
      -.glyphicon-sound-6-1              { &:before { content: "\e192"; } }
      -.glyphicon-sound-7-1              { &:before { content: "\e193"; } }
      -.glyphicon-copyright-mark         { &:before { content: "\e194"; } }
      -.glyphicon-registration-mark      { &:before { content: "\e195"; } }
      -.glyphicon-cloud-download         { &:before { content: "\e197"; } }
      -.glyphicon-cloud-upload           { &:before { content: "\e198"; } }
      -.glyphicon-tree-conifer           { &:before { content: "\e199"; } }
      -.glyphicon-tree-deciduous         { &:before { content: "\e200"; } }
      -.glyphicon-cd                     { &:before { content: "\e201"; } }
      -.glyphicon-save-file              { &:before { content: "\e202"; } }
      -.glyphicon-open-file              { &:before { content: "\e203"; } }
      -.glyphicon-level-up               { &:before { content: "\e204"; } }
      -.glyphicon-copy                   { &:before { content: "\e205"; } }
      -.glyphicon-paste                  { &:before { content: "\e206"; } }
      -// The following 2 Glyphicons are omitted for the time being because
      -// they currently use Unicode codepoints that are outside the
      -// Basic Multilingual Plane (BMP). Older buggy versions of WebKit can't handle
      -// non-BMP codepoints in CSS string escapes, and thus can't display these two icons.
      -// Notably, the bug affects some older versions of the Android Browser.
      -// More info: https://github.com/twbs/bootstrap/issues/10106
      -// .glyphicon-door                   { &:before { content: "\1f6aa"; } }
      -// .glyphicon-key                    { &:before { content: "\1f511"; } }
      -.glyphicon-alert                  { &:before { content: "\e209"; } }
      -.glyphicon-equalizer              { &:before { content: "\e210"; } }
      -.glyphicon-king                   { &:before { content: "\e211"; } }
      -.glyphicon-queen                  { &:before { content: "\e212"; } }
      -.glyphicon-pawn                   { &:before { content: "\e213"; } }
      -.glyphicon-bishop                 { &:before { content: "\e214"; } }
      -.glyphicon-knight                 { &:before { content: "\e215"; } }
      -.glyphicon-baby-formula           { &:before { content: "\e216"; } }
      -.glyphicon-tent                   { &:before { content: "\26fa"; } }
      -.glyphicon-blackboard             { &:before { content: "\e218"; } }
      -.glyphicon-bed                    { &:before { content: "\e219"; } }
      -.glyphicon-apple                  { &:before { content: "\f8ff"; } }
      -.glyphicon-erase                  { &:before { content: "\e221"; } }
      -.glyphicon-hourglass              { &:before { content: "\231b"; } }
      -.glyphicon-lamp                   { &:before { content: "\e223"; } }
      -.glyphicon-duplicate              { &:before { content: "\e224"; } }
      -.glyphicon-piggy-bank             { &:before { content: "\e225"; } }
      -.glyphicon-scissors               { &:before { content: "\e226"; } }
      -.glyphicon-bitcoin                { &:before { content: "\e227"; } }
      -.glyphicon-btc                    { &:before { content: "\e227"; } }
      -.glyphicon-xbt                    { &:before { content: "\e227"; } }
      -.glyphicon-yen                    { &:before { content: "\00a5"; } }
      -.glyphicon-jpy                    { &:before { content: "\00a5"; } }
      -.glyphicon-ruble                  { &:before { content: "\20bd"; } }
      -.glyphicon-rub                    { &:before { content: "\20bd"; } }
      -.glyphicon-scale                  { &:before { content: "\e230"; } }
      -.glyphicon-ice-lolly              { &:before { content: "\e231"; } }
      -.glyphicon-ice-lolly-tasted       { &:before { content: "\e232"; } }
      -.glyphicon-education              { &:before { content: "\e233"; } }
      -.glyphicon-option-horizontal      { &:before { content: "\e234"; } }
      -.glyphicon-option-vertical        { &:before { content: "\e235"; } }
      -.glyphicon-menu-hamburger         { &:before { content: "\e236"; } }
      -.glyphicon-modal-window           { &:before { content: "\e237"; } }
      -.glyphicon-oil                    { &:before { content: "\e238"; } }
      -.glyphicon-grain                  { &:before { content: "\e239"; } }
      -.glyphicon-sunglasses             { &:before { content: "\e240"; } }
      -.glyphicon-text-size              { &:before { content: "\e241"; } }
      -.glyphicon-text-color             { &:before { content: "\e242"; } }
      -.glyphicon-text-background        { &:before { content: "\e243"; } }
      -.glyphicon-object-align-top       { &:before { content: "\e244"; } }
      -.glyphicon-object-align-bottom    { &:before { content: "\e245"; } }
      -.glyphicon-object-align-horizontal{ &:before { content: "\e246"; } }
      -.glyphicon-object-align-left      { &:before { content: "\e247"; } }
      -.glyphicon-object-align-vertical  { &:before { content: "\e248"; } }
      -.glyphicon-object-align-right     { &:before { content: "\e249"; } }
      -.glyphicon-triangle-right         { &:before { content: "\e250"; } }
      -.glyphicon-triangle-left          { &:before { content: "\e251"; } }
      -.glyphicon-triangle-bottom        { &:before { content: "\e252"; } }
      -.glyphicon-triangle-top           { &:before { content: "\e253"; } }
      -.glyphicon-console                { &:before { content: "\e254"; } }
      -.glyphicon-superscript            { &:before { content: "\e255"; } }
      -.glyphicon-subscript              { &:before { content: "\e256"; } }
      -.glyphicon-menu-left              { &:before { content: "\e257"; } }
      -.glyphicon-menu-right             { &:before { content: "\e258"; } }
      -.glyphicon-menu-down              { &:before { content: "\e259"; } }
      -.glyphicon-menu-up                { &:before { content: "\e260"; } }
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_grid.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_grid.scss
      deleted file mode 100644
      index b15ca27bb5..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_grid.scss
      +++ /dev/null
      @@ -1,84 +0,0 @@
      -//
      -// Grid system
      -// --------------------------------------------------
      -
      -
      -// Container widths
      -//
      -// Set the container width, and override it for fixed navbars in media queries.
      -
      -.container {
      -  @include container-fixed;
      -
      -  @media (min-width: $screen-sm-min) {
      -    width: $container-sm;
      -  }
      -  @media (min-width: $screen-md-min) {
      -    width: $container-md;
      -  }
      -  @media (min-width: $screen-lg-min) {
      -    width: $container-lg;
      -  }
      -}
      -
      -
      -// Fluid container
      -//
      -// Utilizes the mixin meant for fixed width containers, but without any defined
      -// width for fluid, full width layouts.
      -
      -.container-fluid {
      -  @include container-fixed;
      -}
      -
      -
      -// Row
      -//
      -// Rows contain and clear the floats of your columns.
      -
      -.row {
      -  @include make-row;
      -}
      -
      -
      -// Columns
      -//
      -// Common styles for small and large grid columns
      -
      -@include make-grid-columns;
      -
      -
      -// Extra small grid
      -//
      -// Columns, offsets, pushes, and pulls for extra small devices like
      -// smartphones.
      -
      -@include make-grid(xs);
      -
      -
      -// Small grid
      -//
      -// Columns, offsets, pushes, and pulls for the small device range, from phones
      -// to tablets.
      -
      -@media (min-width: $screen-sm-min) {
      -  @include make-grid(sm);
      -}
      -
      -
      -// Medium grid
      -//
      -// Columns, offsets, pushes, and pulls for the desktop device range.
      -
      -@media (min-width: $screen-md-min) {
      -  @include make-grid(md);
      -}
      -
      -
      -// Large grid
      -//
      -// Columns, offsets, pushes, and pulls for the large desktop device range.
      -
      -@media (min-width: $screen-lg-min) {
      -  @include make-grid(lg);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_input-groups.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_input-groups.scss
      deleted file mode 100644
      index f7c1d60139..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_input-groups.scss
      +++ /dev/null
      @@ -1,171 +0,0 @@
      -//
      -// Input groups
      -// --------------------------------------------------
      -
      -// Base styles
      -// -------------------------
      -.input-group {
      -  position: relative; // For dropdowns
      -  display: table;
      -  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table
      -
      -  // Undo padding and float of grid classes
      -  &[class*="col-"] {
      -    float: none;
      -    padding-left: 0;
      -    padding-right: 0;
      -  }
      -
      -  .form-control {
      -    // Ensure that the input is always above the *appended* addon button for
      -    // proper border colors.
      -    position: relative;
      -    z-index: 2;
      -
      -    // IE9 fubars the placeholder attribute in text inputs and the arrows on
      -    // select elements in input groups. To fix it, we float the input. Details:
      -    // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855
      -    float: left;
      -
      -    width: 100%;
      -    margin-bottom: 0;
      -    
      -    &:focus {
      -      z-index: 3;
      -    }
      -  }
      -}
      -
      -// Sizing options
      -//
      -// Remix the default form control sizing classes into new ones for easier
      -// manipulation.
      -
      -.input-group-lg > .form-control,
      -.input-group-lg > .input-group-addon,
      -.input-group-lg > .input-group-btn > .btn {
      -  @extend .input-lg;
      -}
      -.input-group-sm > .form-control,
      -.input-group-sm > .input-group-addon,
      -.input-group-sm > .input-group-btn > .btn {
      -  @extend .input-sm;
      -}
      -
      -
      -// Display as table-cell
      -// -------------------------
      -.input-group-addon,
      -.input-group-btn,
      -.input-group .form-control {
      -  display: table-cell;
      -
      -  &:not(:first-child):not(:last-child) {
      -    border-radius: 0;
      -  }
      -}
      -// Addon and addon wrapper for buttons
      -.input-group-addon,
      -.input-group-btn {
      -  width: 1%;
      -  white-space: nowrap;
      -  vertical-align: middle; // Match the inputs
      -}
      -
      -// Text input groups
      -// -------------------------
      -.input-group-addon {
      -  padding: $padding-base-vertical $padding-base-horizontal;
      -  font-size: $font-size-base;
      -  font-weight: normal;
      -  line-height: 1;
      -  color: $input-color;
      -  text-align: center;
      -  background-color: $input-group-addon-bg;
      -  border: 1px solid $input-group-addon-border-color;
      -  border-radius: $input-border-radius;
      -
      -  // Sizing
      -  &.input-sm {
      -    padding: $padding-small-vertical $padding-small-horizontal;
      -    font-size: $font-size-small;
      -    border-radius: $input-border-radius-small;
      -  }
      -  &.input-lg {
      -    padding: $padding-large-vertical $padding-large-horizontal;
      -    font-size: $font-size-large;
      -    border-radius: $input-border-radius-large;
      -  }
      -
      -  // Nuke default margins from checkboxes and radios to vertically center within.
      -  input[type="radio"],
      -  input[type="checkbox"] {
      -    margin-top: 0;
      -  }
      -}
      -
      -// Reset rounded corners
      -.input-group .form-control:first-child,
      -.input-group-addon:first-child,
      -.input-group-btn:first-child > .btn,
      -.input-group-btn:first-child > .btn-group > .btn,
      -.input-group-btn:first-child > .dropdown-toggle,
      -.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
      -.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
      -  @include border-right-radius(0);
      -}
      -.input-group-addon:first-child {
      -  border-right: 0;
      -}
      -.input-group .form-control:last-child,
      -.input-group-addon:last-child,
      -.input-group-btn:last-child > .btn,
      -.input-group-btn:last-child > .btn-group > .btn,
      -.input-group-btn:last-child > .dropdown-toggle,
      -.input-group-btn:first-child > .btn:not(:first-child),
      -.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
      -  @include border-left-radius(0);
      -}
      -.input-group-addon:last-child {
      -  border-left: 0;
      -}
      -
      -// Button input groups
      -// -------------------------
      -.input-group-btn {
      -  position: relative;
      -  // Jankily prevent input button groups from wrapping with `white-space` and
      -  // `font-size` in combination with `inline-block` on buttons.
      -  font-size: 0;
      -  white-space: nowrap;
      -
      -  // Negative margin for spacing, position for bringing hovered/focused/actived
      -  // element above the siblings.
      -  > .btn {
      -    position: relative;
      -    + .btn {
      -      margin-left: -1px;
      -    }
      -    // Bring the "active" button to the front
      -    &:hover,
      -    &:focus,
      -    &:active {
      -      z-index: 2;
      -    }
      -  }
      -
      -  // Negative margin to only have a 1px border between the two
      -  &:first-child {
      -    > .btn,
      -    > .btn-group {
      -      margin-right: -1px;
      -    }
      -  }
      -  &:last-child {
      -    > .btn,
      -    > .btn-group {
      -      z-index: 2;
      -      margin-left: -1px;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_jumbotron.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_jumbotron.scss
      deleted file mode 100644
      index a27da4738f..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_jumbotron.scss
      +++ /dev/null
      @@ -1,54 +0,0 @@
      -//
      -// Jumbotron
      -// --------------------------------------------------
      -
      -
      -.jumbotron {
      -  padding-top:    $jumbotron-padding;
      -  padding-bottom: $jumbotron-padding;
      -  margin-bottom: $jumbotron-padding;
      -  color: $jumbotron-color;
      -  background-color: $jumbotron-bg;
      -
      -  h1,
      -  .h1 {
      -    color: $jumbotron-heading-color;
      -  }
      -
      -  p {
      -    margin-bottom: ($jumbotron-padding / 2);
      -    font-size: $jumbotron-font-size;
      -    font-weight: 200;
      -  }
      -
      -  > hr {
      -    border-top-color: darken($jumbotron-bg, 10%);
      -  }
      -
      -  .container &,
      -  .container-fluid & {
      -    border-radius: $border-radius-large; // Only round corners at higher resolutions if contained in a container
      -    padding-left:  ($grid-gutter-width / 2);
      -    padding-right: ($grid-gutter-width / 2);
      -  }
      -
      -  .container {
      -    max-width: 100%;
      -  }
      -
      -  @media screen and (min-width: $screen-sm-min) {
      -    padding-top:    ($jumbotron-padding * 1.6);
      -    padding-bottom: ($jumbotron-padding * 1.6);
      -
      -    .container &,
      -    .container-fluid & {
      -      padding-left:  ($jumbotron-padding * 2);
      -      padding-right: ($jumbotron-padding * 2);
      -    }
      -
      -    h1,
      -    .h1 {
      -      font-size: $jumbotron-heading-font-size;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_labels.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_labels.scss
      deleted file mode 100644
      index 42ed6ea123..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_labels.scss
      +++ /dev/null
      @@ -1,66 +0,0 @@
      -//
      -// Labels
      -// --------------------------------------------------
      -
      -.label {
      -  display: inline;
      -  padding: .2em .6em .3em;
      -  font-size: 75%;
      -  font-weight: bold;
      -  line-height: 1;
      -  color: $label-color;
      -  text-align: center;
      -  white-space: nowrap;
      -  vertical-align: baseline;
      -  border-radius: .25em;
      -
      -  // [converter] extracted a& to a.label
      -
      -  // Empty labels collapse automatically (not available in IE8)
      -  &:empty {
      -    display: none;
      -  }
      -
      -  // Quick fix for labels in buttons
      -  .btn & {
      -    position: relative;
      -    top: -1px;
      -  }
      -}
      -
      -// Add hover effects, but only for links
      -a.label {
      -  &:hover,
      -  &:focus {
      -    color: $label-link-hover-color;
      -    text-decoration: none;
      -    cursor: pointer;
      -  }
      -}
      -
      -// Colors
      -// Contextual variations (linked labels get darker on :hover)
      -
      -.label-default {
      -  @include label-variant($label-default-bg);
      -}
      -
      -.label-primary {
      -  @include label-variant($label-primary-bg);
      -}
      -
      -.label-success {
      -  @include label-variant($label-success-bg);
      -}
      -
      -.label-info {
      -  @include label-variant($label-info-bg);
      -}
      -
      -.label-warning {
      -  @include label-variant($label-warning-bg);
      -}
      -
      -.label-danger {
      -  @include label-variant($label-danger-bg);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_list-group.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_list-group.scss
      deleted file mode 100644
      index 7cb83aab05..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_list-group.scss
      +++ /dev/null
      @@ -1,130 +0,0 @@
      -//
      -// List groups
      -// --------------------------------------------------
      -
      -
      -// Base class
      -//
      -// Easily usable on <ul>, <ol>, or <div>.
      -
      -.list-group {
      -  // No need to set list-style: none; since .list-group-item is block level
      -  margin-bottom: 20px;
      -  padding-left: 0; // reset padding because ul and ol
      -}
      -
      -
      -// Individual list items
      -//
      -// Use on `li`s or `div`s within the `.list-group` parent.
      -
      -.list-group-item {
      -  position: relative;
      -  display: block;
      -  padding: 10px 15px;
      -  // Place the border on the list items and negative margin up for better styling
      -  margin-bottom: -1px;
      -  background-color: $list-group-bg;
      -  border: 1px solid $list-group-border;
      -
      -  // Round the first and last items
      -  &:first-child {
      -    @include border-top-radius($list-group-border-radius);
      -  }
      -  &:last-child {
      -    margin-bottom: 0;
      -    @include border-bottom-radius($list-group-border-radius);
      -  }
      -}
      -
      -
      -// Interactive list items
      -//
      -// Use anchor or button elements instead of `li`s or `div`s to create interactive items.
      -// Includes an extra `.active` modifier class for showing selected items.
      -
      -a.list-group-item,
      -button.list-group-item {
      -  color: $list-group-link-color;
      -
      -  .list-group-item-heading {
      -    color: $list-group-link-heading-color;
      -  }
      -
      -  // Hover state
      -  &:hover,
      -  &:focus {
      -    text-decoration: none;
      -    color: $list-group-link-hover-color;
      -    background-color: $list-group-hover-bg;
      -  }
      -}
      -
      -button.list-group-item {
      -  width: 100%;
      -  text-align: left;
      -}
      -
      -.list-group-item {
      -  // Disabled state
      -  &.disabled,
      -  &.disabled:hover,
      -  &.disabled:focus {
      -    background-color: $list-group-disabled-bg;
      -    color: $list-group-disabled-color;
      -    cursor: $cursor-disabled;
      -
      -    // Force color to inherit for custom content
      -    .list-group-item-heading {
      -      color: inherit;
      -    }
      -    .list-group-item-text {
      -      color: $list-group-disabled-text-color;
      -    }
      -  }
      -
      -  // Active class on item itself, not parent
      -  &.active,
      -  &.active:hover,
      -  &.active:focus {
      -    z-index: 2; // Place active items above their siblings for proper border styling
      -    color: $list-group-active-color;
      -    background-color: $list-group-active-bg;
      -    border-color: $list-group-active-border;
      -
      -    // Force color to inherit for custom content
      -    .list-group-item-heading,
      -    .list-group-item-heading > small,
      -    .list-group-item-heading > .small {
      -      color: inherit;
      -    }
      -    .list-group-item-text {
      -      color: $list-group-active-text-color;
      -    }
      -  }
      -}
      -
      -
      -// Contextual variants
      -//
      -// Add modifier classes to change text and background color on individual items.
      -// Organizationally, this must come after the `:hover` states.
      -
      -@include list-group-item-variant(success, $state-success-bg, $state-success-text);
      -@include list-group-item-variant(info, $state-info-bg, $state-info-text);
      -@include list-group-item-variant(warning, $state-warning-bg, $state-warning-text);
      -@include list-group-item-variant(danger, $state-danger-bg, $state-danger-text);
      -
      -
      -// Custom content options
      -//
      -// Extra classes for creating well-formatted content within `.list-group-item`s.
      -
      -.list-group-item-heading {
      -  margin-top: 0;
      -  margin-bottom: 5px;
      -}
      -.list-group-item-text {
      -  margin-bottom: 0;
      -  line-height: 1.3;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_media.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_media.scss
      deleted file mode 100644
      index 8c835e861e..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_media.scss
      +++ /dev/null
      @@ -1,66 +0,0 @@
      -.media {
      -  // Proper spacing between instances of .media
      -  margin-top: 15px;
      -
      -  &:first-child {
      -    margin-top: 0;
      -  }
      -}
      -
      -.media,
      -.media-body {
      -  zoom: 1;
      -  overflow: hidden;
      -}
      -
      -.media-body {
      -  width: 10000px;
      -}
      -
      -.media-object {
      -  display: block;
      -
      -  // Fix collapse in webkit from max-width: 100% and display: table-cell.
      -  &.img-thumbnail {
      -    max-width: none;
      -  }
      -}
      -
      -.media-right,
      -.media > .pull-right {
      -  padding-left: 10px;
      -}
      -
      -.media-left,
      -.media > .pull-left {
      -  padding-right: 10px;
      -}
      -
      -.media-left,
      -.media-right,
      -.media-body {
      -  display: table-cell;
      -  vertical-align: top;
      -}
      -
      -.media-middle {
      -  vertical-align: middle;
      -}
      -
      -.media-bottom {
      -  vertical-align: bottom;
      -}
      -
      -// Reset margins on headings for tighter default spacing
      -.media-heading {
      -  margin-top: 0;
      -  margin-bottom: 5px;
      -}
      -
      -// Media list variation
      -//
      -// Undo default ul/ol styles
      -.media-list {
      -  padding-left: 0;
      -  list-style: none;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_mixins.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_mixins.scss
      deleted file mode 100644
      index 78cd5aa0ff..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_mixins.scss
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -// Mixins
      -// --------------------------------------------------
      -
      -// Utilities
      -@import "mixins/hide-text";
      -@import "mixins/opacity";
      -@import "mixins/image";
      -@import "mixins/labels";
      -@import "mixins/reset-filter";
      -@import "mixins/resize";
      -@import "mixins/responsive-visibility";
      -@import "mixins/size";
      -@import "mixins/tab-focus";
      -@import "mixins/reset-text";
      -@import "mixins/text-emphasis";
      -@import "mixins/text-overflow";
      -@import "mixins/vendor-prefixes";
      -
      -// Components
      -@import "mixins/alerts";
      -@import "mixins/buttons";
      -@import "mixins/panels";
      -@import "mixins/pagination";
      -@import "mixins/list-group";
      -@import "mixins/nav-divider";
      -@import "mixins/forms";
      -@import "mixins/progress-bar";
      -@import "mixins/table-row";
      -
      -// Skins
      -@import "mixins/background-variant";
      -@import "mixins/border-radius";
      -@import "mixins/gradients";
      -
      -// Layout
      -@import "mixins/clearfix";
      -@import "mixins/center-block";
      -@import "mixins/nav-vertical-align";
      -@import "mixins/grid-framework";
      -@import "mixins/grid";
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_modals.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_modals.scss
      deleted file mode 100644
      index 823870f2a4..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_modals.scss
      +++ /dev/null
      @@ -1,150 +0,0 @@
      -//
      -// Modals
      -// --------------------------------------------------
      -
      -// .modal-open      - body class for killing the scroll
      -// .modal           - container to scroll within
      -// .modal-dialog    - positioning shell for the actual modal
      -// .modal-content   - actual modal w/ bg and corners and shit
      -
      -// Kill the scroll on the body
      -.modal-open {
      -  overflow: hidden;
      -}
      -
      -// Container that the modal scrolls within
      -.modal {
      -  display: none;
      -  overflow: hidden;
      -  position: fixed;
      -  top: 0;
      -  right: 0;
      -  bottom: 0;
      -  left: 0;
      -  z-index: $zindex-modal;
      -  -webkit-overflow-scrolling: touch;
      -
      -  // Prevent Chrome on Windows from adding a focus outline. For details, see
      -  // https://github.com/twbs/bootstrap/pull/10951.
      -  outline: 0;
      -
      -  // When fading in the modal, animate it to slide down
      -  &.fade .modal-dialog {
      -    @include translate(0, -25%);
      -    @include transition-transform(0.3s ease-out);
      -  }
      -  &.in .modal-dialog { @include translate(0, 0) }
      -}
      -.modal-open .modal {
      -  overflow-x: hidden;
      -  overflow-y: auto;
      -}
      -
      -// Shell div to position the modal with bottom padding
      -.modal-dialog {
      -  position: relative;
      -  width: auto;
      -  margin: 10px;
      -}
      -
      -// Actual modal
      -.modal-content {
      -  position: relative;
      -  background-color: $modal-content-bg;
      -  border: 1px solid $modal-content-fallback-border-color; //old browsers fallback (ie8 etc)
      -  border: 1px solid $modal-content-border-color;
      -  border-radius: $border-radius-large;
      -  @include box-shadow(0 3px 9px rgba(0,0,0,.5));
      -  background-clip: padding-box;
      -  // Remove focus outline from opened modal
      -  outline: 0;
      -}
      -
      -// Modal background
      -.modal-backdrop {
      -  position: fixed;
      -  top: 0;
      -  right: 0;
      -  bottom: 0;
      -  left: 0;
      -  z-index: $zindex-modal-background;
      -  background-color: $modal-backdrop-bg;
      -  // Fade for backdrop
      -  &.fade { @include opacity(0); }
      -  &.in { @include opacity($modal-backdrop-opacity); }
      -}
      -
      -// Modal header
      -// Top section of the modal w/ title and dismiss
      -.modal-header {
      -  padding: $modal-title-padding;
      -  border-bottom: 1px solid $modal-header-border-color;
      -  @include clearfix;
      -}
      -// Close icon
      -.modal-header .close {
      -  margin-top: -2px;
      -}
      -
      -// Title text within header
      -.modal-title {
      -  margin: 0;
      -  line-height: $modal-title-line-height;
      -}
      -
      -// Modal body
      -// Where all modal content resides (sibling of .modal-header and .modal-footer)
      -.modal-body {
      -  position: relative;
      -  padding: $modal-inner-padding;
      -}
      -
      -// Footer (for actions)
      -.modal-footer {
      -  padding: $modal-inner-padding;
      -  text-align: right; // right align buttons
      -  border-top: 1px solid $modal-footer-border-color;
      -  @include clearfix; // clear it in case folks use .pull-* classes on buttons
      -
      -  // Properly space out buttons
      -  .btn + .btn {
      -    margin-left: 5px;
      -    margin-bottom: 0; // account for input[type="submit"] which gets the bottom margin like all other inputs
      -  }
      -  // but override that for button groups
      -  .btn-group .btn + .btn {
      -    margin-left: -1px;
      -  }
      -  // and override it for block buttons as well
      -  .btn-block + .btn-block {
      -    margin-left: 0;
      -  }
      -}
      -
      -// Measure scrollbar width for padding body during modal show/hide
      -.modal-scrollbar-measure {
      -  position: absolute;
      -  top: -9999px;
      -  width: 50px;
      -  height: 50px;
      -  overflow: scroll;
      -}
      -
      -// Scale up the modal
      -@media (min-width: $screen-sm-min) {
      -  // Automatically set modal's width for larger viewports
      -  .modal-dialog {
      -    width: $modal-md;
      -    margin: 30px auto;
      -  }
      -  .modal-content {
      -    @include box-shadow(0 5px 15px rgba(0,0,0,.5));
      -  }
      -
      -  // Modal sizes
      -  .modal-sm { width: $modal-sm; }
      -}
      -
      -@media (min-width: $screen-md-min) {
      -  .modal-lg { width: $modal-lg; }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_navbar.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_navbar.scss
      deleted file mode 100644
      index 11e5c01c15..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_navbar.scss
      +++ /dev/null
      @@ -1,662 +0,0 @@
      -//
      -// Navbars
      -// --------------------------------------------------
      -
      -
      -// Wrapper and base class
      -//
      -// Provide a static navbar from which we expand to create full-width, fixed, and
      -// other navbar variations.
      -
      -.navbar {
      -  position: relative;
      -  min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
      -  margin-bottom: $navbar-margin-bottom;
      -  border: 1px solid transparent;
      -
      -  // Prevent floats from breaking the navbar
      -  @include clearfix;
      -
      -  @media (min-width: $grid-float-breakpoint) {
      -    border-radius: $navbar-border-radius;
      -  }
      -}
      -
      -
      -// Navbar heading
      -//
      -// Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
      -// styling of responsive aspects.
      -
      -.navbar-header {
      -  @include clearfix;
      -
      -  @media (min-width: $grid-float-breakpoint) {
      -    float: left;
      -  }
      -}
      -
      -
      -// Navbar collapse (body)
      -//
      -// Group your navbar content into this for easy collapsing and expanding across
      -// various device sizes. By default, this content is collapsed when <768px, but
      -// will expand past that for a horizontal display.
      -//
      -// To start (on mobile devices) the navbar links, forms, and buttons are stacked
      -// vertically and include a `max-height` to overflow in case you have too much
      -// content for the user's viewport.
      -
      -.navbar-collapse {
      -  overflow-x: visible;
      -  padding-right: $navbar-padding-horizontal;
      -  padding-left:  $navbar-padding-horizontal;
      -  border-top: 1px solid transparent;
      -  box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
      -  @include clearfix;
      -  -webkit-overflow-scrolling: touch;
      -
      -  &.in {
      -    overflow-y: auto;
      -  }
      -
      -  @media (min-width: $grid-float-breakpoint) {
      -    width: auto;
      -    border-top: 0;
      -    box-shadow: none;
      -
      -    &.collapse {
      -      display: block !important;
      -      height: auto !important;
      -      padding-bottom: 0; // Override default setting
      -      overflow: visible !important;
      -    }
      -
      -    &.in {
      -      overflow-y: visible;
      -    }
      -
      -    // Undo the collapse side padding for navbars with containers to ensure
      -    // alignment of right-aligned contents.
      -    .navbar-fixed-top &,
      -    .navbar-static-top &,
      -    .navbar-fixed-bottom & {
      -      padding-left: 0;
      -      padding-right: 0;
      -    }
      -  }
      -}
      -
      -.navbar-fixed-top,
      -.navbar-fixed-bottom {
      -  .navbar-collapse {
      -    max-height: $navbar-collapse-max-height;
      -
      -    @media (max-device-width: $screen-xs-min) and (orientation: landscape) {
      -      max-height: 200px;
      -    }
      -  }
      -}
      -
      -
      -// Both navbar header and collapse
      -//
      -// When a container is present, change the behavior of the header and collapse.
      -
      -.container,
      -.container-fluid {
      -  > .navbar-header,
      -  > .navbar-collapse {
      -    margin-right: -$navbar-padding-horizontal;
      -    margin-left:  -$navbar-padding-horizontal;
      -
      -    @media (min-width: $grid-float-breakpoint) {
      -      margin-right: 0;
      -      margin-left:  0;
      -    }
      -  }
      -}
      -
      -
      -//
      -// Navbar alignment options
      -//
      -// Display the navbar across the entirety of the page or fixed it to the top or
      -// bottom of the page.
      -
      -// Static top (unfixed, but 100% wide) navbar
      -.navbar-static-top {
      -  z-index: $zindex-navbar;
      -  border-width: 0 0 1px;
      -
      -  @media (min-width: $grid-float-breakpoint) {
      -    border-radius: 0;
      -  }
      -}
      -
      -// Fix the top/bottom navbars when screen real estate supports it
      -.navbar-fixed-top,
      -.navbar-fixed-bottom {
      -  position: fixed;
      -  right: 0;
      -  left: 0;
      -  z-index: $zindex-navbar-fixed;
      -
      -  // Undo the rounded corners
      -  @media (min-width: $grid-float-breakpoint) {
      -    border-radius: 0;
      -  }
      -}
      -.navbar-fixed-top {
      -  top: 0;
      -  border-width: 0 0 1px;
      -}
      -.navbar-fixed-bottom {
      -  bottom: 0;
      -  margin-bottom: 0; // override .navbar defaults
      -  border-width: 1px 0 0;
      -}
      -
      -
      -// Brand/project name
      -
      -.navbar-brand {
      -  float: left;
      -  padding: $navbar-padding-vertical $navbar-padding-horizontal;
      -  font-size: $font-size-large;
      -  line-height: $line-height-computed;
      -  height: $navbar-height;
      -
      -  &:hover,
      -  &:focus {
      -    text-decoration: none;
      -  }
      -
      -  > img {
      -    display: block;
      -  }
      -
      -  @media (min-width: $grid-float-breakpoint) {
      -    .navbar > .container &,
      -    .navbar > .container-fluid & {
      -      margin-left: -$navbar-padding-horizontal;
      -    }
      -  }
      -}
      -
      -
      -// Navbar toggle
      -//
      -// Custom button for toggling the `.navbar-collapse`, powered by the collapse
      -// JavaScript plugin.
      -
      -.navbar-toggle {
      -  position: relative;
      -  float: right;
      -  margin-right: $navbar-padding-horizontal;
      -  padding: 9px 10px;
      -  @include navbar-vertical-align(34px);
      -  background-color: transparent;
      -  background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
      -  border: 1px solid transparent;
      -  border-radius: $border-radius-base;
      -
      -  // We remove the `outline` here, but later compensate by attaching `:hover`
      -  // styles to `:focus`.
      -  &:focus {
      -    outline: 0;
      -  }
      -
      -  // Bars
      -  .icon-bar {
      -    display: block;
      -    width: 22px;
      -    height: 2px;
      -    border-radius: 1px;
      -  }
      -  .icon-bar + .icon-bar {
      -    margin-top: 4px;
      -  }
      -
      -  @media (min-width: $grid-float-breakpoint) {
      -    display: none;
      -  }
      -}
      -
      -
      -// Navbar nav links
      -//
      -// Builds on top of the `.nav` components with its own modifier class to make
      -// the nav the full height of the horizontal nav (above 768px).
      -
      -.navbar-nav {
      -  margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal);
      -
      -  > li > a {
      -    padding-top:    10px;
      -    padding-bottom: 10px;
      -    line-height: $line-height-computed;
      -  }
      -
      -  @media (max-width: $grid-float-breakpoint-max) {
      -    // Dropdowns get custom display when collapsed
      -    .open .dropdown-menu {
      -      position: static;
      -      float: none;
      -      width: auto;
      -      margin-top: 0;
      -      background-color: transparent;
      -      border: 0;
      -      box-shadow: none;
      -      > li > a,
      -      .dropdown-header {
      -        padding: 5px 15px 5px 25px;
      -      }
      -      > li > a {
      -        line-height: $line-height-computed;
      -        &:hover,
      -        &:focus {
      -          background-image: none;
      -        }
      -      }
      -    }
      -  }
      -
      -  // Uncollapse the nav
      -  @media (min-width: $grid-float-breakpoint) {
      -    float: left;
      -    margin: 0;
      -
      -    > li {
      -      float: left;
      -      > a {
      -        padding-top:    $navbar-padding-vertical;
      -        padding-bottom: $navbar-padding-vertical;
      -      }
      -    }
      -  }
      -}
      -
      -
      -// Navbar form
      -//
      -// Extension of the `.form-inline` with some extra flavor for optimum display in
      -// our navbars.
      -
      -.navbar-form {
      -  margin-left: -$navbar-padding-horizontal;
      -  margin-right: -$navbar-padding-horizontal;
      -  padding: 10px $navbar-padding-horizontal;
      -  border-top: 1px solid transparent;
      -  border-bottom: 1px solid transparent;
      -  $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
      -  @include box-shadow($shadow);
      -
      -  // Mixin behavior for optimum display
      -  @include form-inline;
      -
      -  .form-group {
      -    @media (max-width: $grid-float-breakpoint-max) {
      -      margin-bottom: 5px;
      -
      -      &:last-child {
      -        margin-bottom: 0;
      -      }
      -    }
      -  }
      -
      -  // Vertically center in expanded, horizontal navbar
      -  @include navbar-vertical-align($input-height-base);
      -
      -  // Undo 100% width for pull classes
      -  @media (min-width: $grid-float-breakpoint) {
      -    width: auto;
      -    border: 0;
      -    margin-left: 0;
      -    margin-right: 0;
      -    padding-top: 0;
      -    padding-bottom: 0;
      -    @include box-shadow(none);
      -  }
      -}
      -
      -
      -// Dropdown menus
      -
      -// Menu position and menu carets
      -.navbar-nav > li > .dropdown-menu {
      -  margin-top: 0;
      -  @include border-top-radius(0);
      -}
      -// Menu position and menu caret support for dropups via extra dropup class
      -.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
      -  margin-bottom: 0;
      -  @include border-top-radius($navbar-border-radius);
      -  @include border-bottom-radius(0);
      -}
      -
      -
      -// Buttons in navbars
      -//
      -// Vertically center a button within a navbar (when *not* in a form).
      -
      -.navbar-btn {
      -  @include navbar-vertical-align($input-height-base);
      -
      -  &.btn-sm {
      -    @include navbar-vertical-align($input-height-small);
      -  }
      -  &.btn-xs {
      -    @include navbar-vertical-align(22);
      -  }
      -}
      -
      -
      -// Text in navbars
      -//
      -// Add a class to make any element properly align itself vertically within the navbars.
      -
      -.navbar-text {
      -  @include navbar-vertical-align($line-height-computed);
      -
      -  @media (min-width: $grid-float-breakpoint) {
      -    float: left;
      -    margin-left: $navbar-padding-horizontal;
      -    margin-right: $navbar-padding-horizontal;
      -  }
      -}
      -
      -
      -// Component alignment
      -//
      -// Repurpose the pull utilities as their own navbar utilities to avoid specificity
      -// issues with parents and chaining. Only do this when the navbar is uncollapsed
      -// though so that navbar contents properly stack and align in mobile.
      -//
      -// Declared after the navbar components to ensure more specificity on the margins.
      -
      -@media (min-width: $grid-float-breakpoint) {
      -  .navbar-left {
      -    float: left !important;
      -  }
      -  .navbar-right {
      -    float: right !important;
      -  margin-right: -$navbar-padding-horizontal;
      -
      -    ~ .navbar-right {
      -      margin-right: 0;
      -    }
      -  }
      -}
      -
      -
      -// Alternate navbars
      -// --------------------------------------------------
      -
      -// Default navbar
      -.navbar-default {
      -  background-color: $navbar-default-bg;
      -  border-color: $navbar-default-border;
      -
      -  .navbar-brand {
      -    color: $navbar-default-brand-color;
      -    &:hover,
      -    &:focus {
      -      color: $navbar-default-brand-hover-color;
      -      background-color: $navbar-default-brand-hover-bg;
      -    }
      -  }
      -
      -  .navbar-text {
      -    color: $navbar-default-color;
      -  }
      -
      -  .navbar-nav {
      -    > li > a {
      -      color: $navbar-default-link-color;
      -
      -      &:hover,
      -      &:focus {
      -        color: $navbar-default-link-hover-color;
      -        background-color: $navbar-default-link-hover-bg;
      -      }
      -    }
      -    > .active > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        color: $navbar-default-link-active-color;
      -        background-color: $navbar-default-link-active-bg;
      -      }
      -    }
      -    > .disabled > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        color: $navbar-default-link-disabled-color;
      -        background-color: $navbar-default-link-disabled-bg;
      -      }
      -    }
      -  }
      -
      -  .navbar-toggle {
      -    border-color: $navbar-default-toggle-border-color;
      -    &:hover,
      -    &:focus {
      -      background-color: $navbar-default-toggle-hover-bg;
      -    }
      -    .icon-bar {
      -      background-color: $navbar-default-toggle-icon-bar-bg;
      -    }
      -  }
      -
      -  .navbar-collapse,
      -  .navbar-form {
      -    border-color: $navbar-default-border;
      -  }
      -
      -  // Dropdown menu items
      -  .navbar-nav {
      -    // Remove background color from open dropdown
      -    > .open > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        background-color: $navbar-default-link-active-bg;
      -        color: $navbar-default-link-active-color;
      -      }
      -    }
      -
      -    @media (max-width: $grid-float-breakpoint-max) {
      -      // Dropdowns get custom display when collapsed
      -      .open .dropdown-menu {
      -        > li > a {
      -          color: $navbar-default-link-color;
      -          &:hover,
      -          &:focus {
      -            color: $navbar-default-link-hover-color;
      -            background-color: $navbar-default-link-hover-bg;
      -          }
      -        }
      -        > .active > a {
      -          &,
      -          &:hover,
      -          &:focus {
      -            color: $navbar-default-link-active-color;
      -            background-color: $navbar-default-link-active-bg;
      -          }
      -        }
      -        > .disabled > a {
      -          &,
      -          &:hover,
      -          &:focus {
      -            color: $navbar-default-link-disabled-color;
      -            background-color: $navbar-default-link-disabled-bg;
      -          }
      -        }
      -      }
      -    }
      -  }
      -
      -
      -  // Links in navbars
      -  //
      -  // Add a class to ensure links outside the navbar nav are colored correctly.
      -
      -  .navbar-link {
      -    color: $navbar-default-link-color;
      -    &:hover {
      -      color: $navbar-default-link-hover-color;
      -    }
      -  }
      -
      -  .btn-link {
      -    color: $navbar-default-link-color;
      -    &:hover,
      -    &:focus {
      -      color: $navbar-default-link-hover-color;
      -    }
      -    &[disabled],
      -    fieldset[disabled] & {
      -      &:hover,
      -      &:focus {
      -        color: $navbar-default-link-disabled-color;
      -      }
      -    }
      -  }
      -}
      -
      -// Inverse navbar
      -
      -.navbar-inverse {
      -  background-color: $navbar-inverse-bg;
      -  border-color: $navbar-inverse-border;
      -
      -  .navbar-brand {
      -    color: $navbar-inverse-brand-color;
      -    &:hover,
      -    &:focus {
      -      color: $navbar-inverse-brand-hover-color;
      -      background-color: $navbar-inverse-brand-hover-bg;
      -    }
      -  }
      -
      -  .navbar-text {
      -    color: $navbar-inverse-color;
      -  }
      -
      -  .navbar-nav {
      -    > li > a {
      -      color: $navbar-inverse-link-color;
      -
      -      &:hover,
      -      &:focus {
      -        color: $navbar-inverse-link-hover-color;
      -        background-color: $navbar-inverse-link-hover-bg;
      -      }
      -    }
      -    > .active > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        color: $navbar-inverse-link-active-color;
      -        background-color: $navbar-inverse-link-active-bg;
      -      }
      -    }
      -    > .disabled > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        color: $navbar-inverse-link-disabled-color;
      -        background-color: $navbar-inverse-link-disabled-bg;
      -      }
      -    }
      -  }
      -
      -  // Darken the responsive nav toggle
      -  .navbar-toggle {
      -    border-color: $navbar-inverse-toggle-border-color;
      -    &:hover,
      -    &:focus {
      -      background-color: $navbar-inverse-toggle-hover-bg;
      -    }
      -    .icon-bar {
      -      background-color: $navbar-inverse-toggle-icon-bar-bg;
      -    }
      -  }
      -
      -  .navbar-collapse,
      -  .navbar-form {
      -    border-color: darken($navbar-inverse-bg, 7%);
      -  }
      -
      -  // Dropdowns
      -  .navbar-nav {
      -    > .open > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        background-color: $navbar-inverse-link-active-bg;
      -        color: $navbar-inverse-link-active-color;
      -      }
      -    }
      -
      -    @media (max-width: $grid-float-breakpoint-max) {
      -      // Dropdowns get custom display
      -      .open .dropdown-menu {
      -        > .dropdown-header {
      -          border-color: $navbar-inverse-border;
      -        }
      -        .divider {
      -          background-color: $navbar-inverse-border;
      -        }
      -        > li > a {
      -          color: $navbar-inverse-link-color;
      -          &:hover,
      -          &:focus {
      -            color: $navbar-inverse-link-hover-color;
      -            background-color: $navbar-inverse-link-hover-bg;
      -          }
      -        }
      -        > .active > a {
      -          &,
      -          &:hover,
      -          &:focus {
      -            color: $navbar-inverse-link-active-color;
      -            background-color: $navbar-inverse-link-active-bg;
      -          }
      -        }
      -        > .disabled > a {
      -          &,
      -          &:hover,
      -          &:focus {
      -            color: $navbar-inverse-link-disabled-color;
      -            background-color: $navbar-inverse-link-disabled-bg;
      -          }
      -        }
      -      }
      -    }
      -  }
      -
      -  .navbar-link {
      -    color: $navbar-inverse-link-color;
      -    &:hover {
      -      color: $navbar-inverse-link-hover-color;
      -    }
      -  }
      -
      -  .btn-link {
      -    color: $navbar-inverse-link-color;
      -    &:hover,
      -    &:focus {
      -      color: $navbar-inverse-link-hover-color;
      -    }
      -    &[disabled],
      -    fieldset[disabled] & {
      -      &:hover,
      -      &:focus {
      -        color: $navbar-inverse-link-disabled-color;
      -      }
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_navs.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_navs.scss
      deleted file mode 100644
      index 9d369f3079..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_navs.scss
      +++ /dev/null
      @@ -1,242 +0,0 @@
      -//
      -// Navs
      -// --------------------------------------------------
      -
      -
      -// Base class
      -// --------------------------------------------------
      -
      -.nav {
      -  margin-bottom: 0;
      -  padding-left: 0; // Override default ul/ol
      -  list-style: none;
      -  @include clearfix;
      -
      -  > li {
      -    position: relative;
      -    display: block;
      -
      -    > a {
      -      position: relative;
      -      display: block;
      -      padding: $nav-link-padding;
      -      &:hover,
      -      &:focus {
      -        text-decoration: none;
      -        background-color: $nav-link-hover-bg;
      -      }
      -    }
      -
      -    // Disabled state sets text to gray and nukes hover/tab effects
      -    &.disabled > a {
      -      color: $nav-disabled-link-color;
      -
      -      &:hover,
      -      &:focus {
      -        color: $nav-disabled-link-hover-color;
      -        text-decoration: none;
      -        background-color: transparent;
      -        cursor: $cursor-disabled;
      -      }
      -    }
      -  }
      -
      -  // Open dropdowns
      -  .open > a {
      -    &,
      -    &:hover,
      -    &:focus {
      -      background-color: $nav-link-hover-bg;
      -      border-color: $link-color;
      -    }
      -  }
      -
      -  // Nav dividers (deprecated with v3.0.1)
      -  //
      -  // This should have been removed in v3 with the dropping of `.nav-list`, but
      -  // we missed it. We don't currently support this anywhere, but in the interest
      -  // of maintaining backward compatibility in case you use it, it's deprecated.
      -  .nav-divider {
      -    @include nav-divider;
      -  }
      -
      -  // Prevent IE8 from misplacing imgs
      -  //
      -  // See https://github.com/h5bp/html5-boilerplate/issues/984#issuecomment-3985989
      -  > li > a > img {
      -    max-width: none;
      -  }
      -}
      -
      -
      -// Tabs
      -// -------------------------
      -
      -// Give the tabs something to sit on
      -.nav-tabs {
      -  border-bottom: 1px solid $nav-tabs-border-color;
      -  > li {
      -    float: left;
      -    // Make the list-items overlay the bottom border
      -    margin-bottom: -1px;
      -
      -    // Actual tabs (as links)
      -    > a {
      -      margin-right: 2px;
      -      line-height: $line-height-base;
      -      border: 1px solid transparent;
      -      border-radius: $border-radius-base $border-radius-base 0 0;
      -      &:hover {
      -        border-color: $nav-tabs-link-hover-border-color $nav-tabs-link-hover-border-color $nav-tabs-border-color;
      -      }
      -    }
      -
      -    // Active state, and its :hover to override normal :hover
      -    &.active > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        color: $nav-tabs-active-link-hover-color;
      -        background-color: $nav-tabs-active-link-hover-bg;
      -        border: 1px solid $nav-tabs-active-link-hover-border-color;
      -        border-bottom-color: transparent;
      -        cursor: default;
      -      }
      -    }
      -  }
      -  // pulling this in mainly for less shorthand
      -  &.nav-justified {
      -    @extend .nav-justified;
      -    @extend .nav-tabs-justified;
      -  }
      -}
      -
      -
      -// Pills
      -// -------------------------
      -.nav-pills {
      -  > li {
      -    float: left;
      -
      -    // Links rendered as pills
      -    > a {
      -      border-radius: $nav-pills-border-radius;
      -    }
      -    + li {
      -      margin-left: 2px;
      -    }
      -
      -    // Active state
      -    &.active > a {
      -      &,
      -      &:hover,
      -      &:focus {
      -        color: $nav-pills-active-link-hover-color;
      -        background-color: $nav-pills-active-link-hover-bg;
      -      }
      -    }
      -  }
      -}
      -
      -
      -// Stacked pills
      -.nav-stacked {
      -  > li {
      -    float: none;
      -    + li {
      -      margin-top: 2px;
      -      margin-left: 0; // no need for this gap between nav items
      -    }
      -  }
      -}
      -
      -
      -// Nav variations
      -// --------------------------------------------------
      -
      -// Justified nav links
      -// -------------------------
      -
      -.nav-justified {
      -  width: 100%;
      -
      -  > li {
      -    float: none;
      -    > a {
      -      text-align: center;
      -      margin-bottom: 5px;
      -    }
      -  }
      -
      -  > .dropdown .dropdown-menu {
      -    top: auto;
      -    left: auto;
      -  }
      -
      -  @media (min-width: $screen-sm-min) {
      -    > li {
      -      display: table-cell;
      -      width: 1%;
      -      > a {
      -        margin-bottom: 0;
      -      }
      -    }
      -  }
      -}
      -
      -// Move borders to anchors instead of bottom of list
      -//
      -// Mixin for adding on top the shared `.nav-justified` styles for our tabs
      -.nav-tabs-justified {
      -  border-bottom: 0;
      -
      -  > li > a {
      -    // Override margin from .nav-tabs
      -    margin-right: 0;
      -    border-radius: $border-radius-base;
      -  }
      -
      -  > .active > a,
      -  > .active > a:hover,
      -  > .active > a:focus {
      -    border: 1px solid $nav-tabs-justified-link-border-color;
      -  }
      -
      -  @media (min-width: $screen-sm-min) {
      -    > li > a {
      -      border-bottom: 1px solid $nav-tabs-justified-link-border-color;
      -      border-radius: $border-radius-base $border-radius-base 0 0;
      -    }
      -    > .active > a,
      -    > .active > a:hover,
      -    > .active > a:focus {
      -      border-bottom-color: $nav-tabs-justified-active-link-border-color;
      -    }
      -  }
      -}
      -
      -
      -// Tabbable tabs
      -// -------------------------
      -
      -// Hide tabbable panes to start, show them when `.active`
      -.tab-content {
      -  > .tab-pane {
      -    display: none;
      -  }
      -  > .active {
      -    display: block;
      -  }
      -}
      -
      -
      -// Dropdowns
      -// -------------------------
      -
      -// Specific dropdowns
      -.nav-tabs .dropdown-menu {
      -  // make dropdown border overlap tab border
      -  margin-top: -1px;
      -  // Remove the top rounded corners here since there is a hard edge above the menu
      -  @include border-top-radius(0);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_normalize.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_normalize.scss
      deleted file mode 100644
      index 9dddf73ad2..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_normalize.scss
      +++ /dev/null
      @@ -1,424 +0,0 @@
      -/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
      -
      -//
      -// 1. Set default font family to sans-serif.
      -// 2. Prevent iOS and IE text size adjust after device orientation change,
      -//    without disabling user zoom.
      -//
      -
      -html {
      -  font-family: sans-serif; // 1
      -  -ms-text-size-adjust: 100%; // 2
      -  -webkit-text-size-adjust: 100%; // 2
      -}
      -
      -//
      -// Remove default margin.
      -//
      -
      -body {
      -  margin: 0;
      -}
      -
      -// HTML5 display definitions
      -// ==========================================================================
      -
      -//
      -// Correct `block` display not defined for any HTML5 element in IE 8/9.
      -// Correct `block` display not defined for `details` or `summary` in IE 10/11
      -// and Firefox.
      -// Correct `block` display not defined for `main` in IE 11.
      -//
      -
      -article,
      -aside,
      -details,
      -figcaption,
      -figure,
      -footer,
      -header,
      -hgroup,
      -main,
      -menu,
      -nav,
      -section,
      -summary {
      -  display: block;
      -}
      -
      -//
      -// 1. Correct `inline-block` display not defined in IE 8/9.
      -// 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
      -//
      -
      -audio,
      -canvas,
      -progress,
      -video {
      -  display: inline-block; // 1
      -  vertical-align: baseline; // 2
      -}
      -
      -//
      -// Prevent modern browsers from displaying `audio` without controls.
      -// Remove excess height in iOS 5 devices.
      -//
      -
      -audio:not([controls]) {
      -  display: none;
      -  height: 0;
      -}
      -
      -//
      -// Address `[hidden]` styling not present in IE 8/9/10.
      -// Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
      -//
      -
      -[hidden],
      -template {
      -  display: none;
      -}
      -
      -// Links
      -// ==========================================================================
      -
      -//
      -// Remove the gray background color from active links in IE 10.
      -//
      -
      -a {
      -  background-color: transparent;
      -}
      -
      -//
      -// Improve readability of focused elements when they are also in an
      -// active/hover state.
      -//
      -
      -a:active,
      -a:hover {
      -  outline: 0;
      -}
      -
      -// Text-level semantics
      -// ==========================================================================
      -
      -//
      -// Address styling not present in IE 8/9/10/11, Safari, and Chrome.
      -//
      -
      -abbr[title] {
      -  border-bottom: 1px dotted;
      -}
      -
      -//
      -// Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
      -//
      -
      -b,
      -strong {
      -  font-weight: bold;
      -}
      -
      -//
      -// Address styling not present in Safari and Chrome.
      -//
      -
      -dfn {
      -  font-style: italic;
      -}
      -
      -//
      -// Address variable `h1` font-size and margin within `section` and `article`
      -// contexts in Firefox 4+, Safari, and Chrome.
      -//
      -
      -h1 {
      -  font-size: 2em;
      -  margin: 0.67em 0;
      -}
      -
      -//
      -// Address styling not present in IE 8/9.
      -//
      -
      -mark {
      -  background: #ff0;
      -  color: #000;
      -}
      -
      -//
      -// Address inconsistent and variable font size in all browsers.
      -//
      -
      -small {
      -  font-size: 80%;
      -}
      -
      -//
      -// Prevent `sub` and `sup` affecting `line-height` in all browsers.
      -//
      -
      -sub,
      -sup {
      -  font-size: 75%;
      -  line-height: 0;
      -  position: relative;
      -  vertical-align: baseline;
      -}
      -
      -sup {
      -  top: -0.5em;
      -}
      -
      -sub {
      -  bottom: -0.25em;
      -}
      -
      -// Embedded content
      -// ==========================================================================
      -
      -//
      -// Remove border when inside `a` element in IE 8/9/10.
      -//
      -
      -img {
      -  border: 0;
      -}
      -
      -//
      -// Correct overflow not hidden in IE 9/10/11.
      -//
      -
      -svg:not(:root) {
      -  overflow: hidden;
      -}
      -
      -// Grouping content
      -// ==========================================================================
      -
      -//
      -// Address margin not present in IE 8/9 and Safari.
      -//
      -
      -figure {
      -  margin: 1em 40px;
      -}
      -
      -//
      -// Address differences between Firefox and other browsers.
      -//
      -
      -hr {
      -  box-sizing: content-box;
      -  height: 0;
      -}
      -
      -//
      -// Contain overflow in all browsers.
      -//
      -
      -pre {
      -  overflow: auto;
      -}
      -
      -//
      -// Address odd `em`-unit font size rendering in all browsers.
      -//
      -
      -code,
      -kbd,
      -pre,
      -samp {
      -  font-family: monospace, monospace;
      -  font-size: 1em;
      -}
      -
      -// Forms
      -// ==========================================================================
      -
      -//
      -// Known limitation: by default, Chrome and Safari on OS X allow very limited
      -// styling of `select`, unless a `border` property is set.
      -//
      -
      -//
      -// 1. Correct color not being inherited.
      -//    Known issue: affects color of disabled elements.
      -// 2. Correct font properties not being inherited.
      -// 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
      -//
      -
      -button,
      -input,
      -optgroup,
      -select,
      -textarea {
      -  color: inherit; // 1
      -  font: inherit; // 2
      -  margin: 0; // 3
      -}
      -
      -//
      -// Address `overflow` set to `hidden` in IE 8/9/10/11.
      -//
      -
      -button {
      -  overflow: visible;
      -}
      -
      -//
      -// Address inconsistent `text-transform` inheritance for `button` and `select`.
      -// All other form control elements do not inherit `text-transform` values.
      -// Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
      -// Correct `select` style inheritance in Firefox.
      -//
      -
      -button,
      -select {
      -  text-transform: none;
      -}
      -
      -//
      -// 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
      -//    and `video` controls.
      -// 2. Correct inability to style clickable `input` types in iOS.
      -// 3. Improve usability and consistency of cursor style between image-type
      -//    `input` and others.
      -//
      -
      -button,
      -html input[type="button"], // 1
      -input[type="reset"],
      -input[type="submit"] {
      -  -webkit-appearance: button; // 2
      -  cursor: pointer; // 3
      -}
      -
      -//
      -// Re-set default cursor for disabled elements.
      -//
      -
      -button[disabled],
      -html input[disabled] {
      -  cursor: default;
      -}
      -
      -//
      -// Remove inner padding and border in Firefox 4+.
      -//
      -
      -button::-moz-focus-inner,
      -input::-moz-focus-inner {
      -  border: 0;
      -  padding: 0;
      -}
      -
      -//
      -// Address Firefox 4+ setting `line-height` on `input` using `!important` in
      -// the UA stylesheet.
      -//
      -
      -input {
      -  line-height: normal;
      -}
      -
      -//
      -// It's recommended that you don't attempt to style these elements.
      -// Firefox's implementation doesn't respect box-sizing, padding, or width.
      -//
      -// 1. Address box sizing set to `content-box` in IE 8/9/10.
      -// 2. Remove excess padding in IE 8/9/10.
      -//
      -
      -input[type="checkbox"],
      -input[type="radio"] {
      -  box-sizing: border-box; // 1
      -  padding: 0; // 2
      -}
      -
      -//
      -// Fix the cursor style for Chrome's increment/decrement buttons. For certain
      -// `font-size` values of the `input`, it causes the cursor style of the
      -// decrement button to change from `default` to `text`.
      -//
      -
      -input[type="number"]::-webkit-inner-spin-button,
      -input[type="number"]::-webkit-outer-spin-button {
      -  height: auto;
      -}
      -
      -//
      -// 1. Address `appearance` set to `searchfield` in Safari and Chrome.
      -// 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
      -//
      -
      -input[type="search"] {
      -  -webkit-appearance: textfield; // 1
      -  box-sizing: content-box; //2
      -}
      -
      -//
      -// Remove inner padding and search cancel button in Safari and Chrome on OS X.
      -// Safari (but not Chrome) clips the cancel button when the search input has
      -// padding (and `textfield` appearance).
      -//
      -
      -input[type="search"]::-webkit-search-cancel-button,
      -input[type="search"]::-webkit-search-decoration {
      -  -webkit-appearance: none;
      -}
      -
      -//
      -// Define consistent border, margin, and padding.
      -//
      -
      -fieldset {
      -  border: 1px solid #c0c0c0;
      -  margin: 0 2px;
      -  padding: 0.35em 0.625em 0.75em;
      -}
      -
      -//
      -// 1. Correct `color` not being inherited in IE 8/9/10/11.
      -// 2. Remove padding so people aren't caught out if they zero out fieldsets.
      -//
      -
      -legend {
      -  border: 0; // 1
      -  padding: 0; // 2
      -}
      -
      -//
      -// Remove default vertical scrollbar in IE 8/9/10/11.
      -//
      -
      -textarea {
      -  overflow: auto;
      -}
      -
      -//
      -// Don't inherit the `font-weight` (applied by a rule above).
      -// NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
      -//
      -
      -optgroup {
      -  font-weight: bold;
      -}
      -
      -// Tables
      -// ==========================================================================
      -
      -//
      -// Remove most spacing between table cells.
      -//
      -
      -table {
      -  border-collapse: collapse;
      -  border-spacing: 0;
      -}
      -
      -td,
      -th {
      -  padding: 0;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_pager.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_pager.scss
      deleted file mode 100644
      index c2342174ff..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_pager.scss
      +++ /dev/null
      @@ -1,54 +0,0 @@
      -//
      -// Pager pagination
      -// --------------------------------------------------
      -
      -
      -.pager {
      -  padding-left: 0;
      -  margin: $line-height-computed 0;
      -  list-style: none;
      -  text-align: center;
      -  @include clearfix;
      -  li {
      -    display: inline;
      -    > a,
      -    > span {
      -      display: inline-block;
      -      padding: 5px 14px;
      -      background-color: $pager-bg;
      -      border: 1px solid $pager-border;
      -      border-radius: $pager-border-radius;
      -    }
      -
      -    > a:hover,
      -    > a:focus {
      -      text-decoration: none;
      -      background-color: $pager-hover-bg;
      -    }
      -  }
      -
      -  .next {
      -    > a,
      -    > span {
      -      float: right;
      -    }
      -  }
      -
      -  .previous {
      -    > a,
      -    > span {
      -      float: left;
      -    }
      -  }
      -
      -  .disabled {
      -    > a,
      -    > a:hover,
      -    > a:focus,
      -    > span {
      -      color: $pager-disabled-color;
      -      background-color: $pager-bg;
      -      cursor: $cursor-disabled;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_pagination.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_pagination.scss
      deleted file mode 100644
      index fecfa9c642..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_pagination.scss
      +++ /dev/null
      @@ -1,89 +0,0 @@
      -//
      -// Pagination (multiple pages)
      -// --------------------------------------------------
      -.pagination {
      -  display: inline-block;
      -  padding-left: 0;
      -  margin: $line-height-computed 0;
      -  border-radius: $border-radius-base;
      -
      -  > li {
      -    display: inline; // Remove list-style and block-level defaults
      -    > a,
      -    > span {
      -      position: relative;
      -      float: left; // Collapse white-space
      -      padding: $padding-base-vertical $padding-base-horizontal;
      -      line-height: $line-height-base;
      -      text-decoration: none;
      -      color: $pagination-color;
      -      background-color: $pagination-bg;
      -      border: 1px solid $pagination-border;
      -      margin-left: -1px;
      -    }
      -    &:first-child {
      -      > a,
      -      > span {
      -        margin-left: 0;
      -        @include border-left-radius($border-radius-base);
      -      }
      -    }
      -    &:last-child {
      -      > a,
      -      > span {
      -        @include border-right-radius($border-radius-base);
      -      }
      -    }
      -  }
      -
      -  > li > a,
      -  > li > span {
      -    &:hover,
      -    &:focus {
      -      z-index: 2;
      -      color: $pagination-hover-color;
      -      background-color: $pagination-hover-bg;
      -      border-color: $pagination-hover-border;
      -    }
      -  }
      -
      -  > .active > a,
      -  > .active > span {
      -    &,
      -    &:hover,
      -    &:focus {
      -      z-index: 3;
      -      color: $pagination-active-color;
      -      background-color: $pagination-active-bg;
      -      border-color: $pagination-active-border;
      -      cursor: default;
      -    }
      -  }
      -
      -  > .disabled {
      -    > span,
      -    > span:hover,
      -    > span:focus,
      -    > a,
      -    > a:hover,
      -    > a:focus {
      -      color: $pagination-disabled-color;
      -      background-color: $pagination-disabled-bg;
      -      border-color: $pagination-disabled-border;
      -      cursor: $cursor-disabled;
      -    }
      -  }
      -}
      -
      -// Sizing
      -// --------------------------------------------------
      -
      -// Large
      -.pagination-lg {
      -  @include pagination-size($padding-large-vertical, $padding-large-horizontal, $font-size-large, $line-height-large, $border-radius-large);
      -}
      -
      -// Small
      -.pagination-sm {
      -  @include pagination-size($padding-small-vertical, $padding-small-horizontal, $font-size-small, $line-height-small, $border-radius-small);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_panels.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_panels.scss
      deleted file mode 100644
      index be9410f5b9..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_panels.scss
      +++ /dev/null
      @@ -1,271 +0,0 @@
      -//
      -// Panels
      -// --------------------------------------------------
      -
      -
      -// Base class
      -.panel {
      -  margin-bottom: $line-height-computed;
      -  background-color: $panel-bg;
      -  border: 1px solid transparent;
      -  border-radius: $panel-border-radius;
      -  @include box-shadow(0 1px 1px rgba(0,0,0,.05));
      -}
      -
      -// Panel contents
      -.panel-body {
      -  padding: $panel-body-padding;
      -  @include clearfix;
      -}
      -
      -// Optional heading
      -.panel-heading {
      -  padding: $panel-heading-padding;
      -  border-bottom: 1px solid transparent;
      -  @include border-top-radius(($panel-border-radius - 1));
      -
      -  > .dropdown .dropdown-toggle {
      -    color: inherit;
      -  }
      -}
      -
      -// Within heading, strip any `h*` tag of its default margins for spacing.
      -.panel-title {
      -  margin-top: 0;
      -  margin-bottom: 0;
      -  font-size: ceil(($font-size-base * 1.125));
      -  color: inherit;
      -
      -  > a,
      -  > small,
      -  > .small,
      -  > small > a,
      -  > .small > a {
      -    color: inherit;
      -  }
      -}
      -
      -// Optional footer (stays gray in every modifier class)
      -.panel-footer {
      -  padding: $panel-footer-padding;
      -  background-color: $panel-footer-bg;
      -  border-top: 1px solid $panel-inner-border;
      -  @include border-bottom-radius(($panel-border-radius - 1));
      -}
      -
      -
      -// List groups in panels
      -//
      -// By default, space out list group content from panel headings to account for
      -// any kind of custom content between the two.
      -
      -.panel {
      -  > .list-group,
      -  > .panel-collapse > .list-group {
      -    margin-bottom: 0;
      -
      -    .list-group-item {
      -      border-width: 1px 0;
      -      border-radius: 0;
      -    }
      -
      -    // Add border top radius for first one
      -    &:first-child {
      -      .list-group-item:first-child {
      -        border-top: 0;
      -        @include border-top-radius(($panel-border-radius - 1));
      -      }
      -    }
      -
      -    // Add border bottom radius for last one
      -    &:last-child {
      -      .list-group-item:last-child {
      -        border-bottom: 0;
      -        @include border-bottom-radius(($panel-border-radius - 1));
      -      }
      -    }
      -  }
      -  > .panel-heading + .panel-collapse > .list-group {
      -    .list-group-item:first-child {
      -      @include border-top-radius(0);
      -    }
      -  }
      -}
      -// Collapse space between when there's no additional content.
      -.panel-heading + .list-group {
      -  .list-group-item:first-child {
      -    border-top-width: 0;
      -  }
      -}
      -.list-group + .panel-footer {
      -  border-top-width: 0;
      -}
      -
      -// Tables in panels
      -//
      -// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and
      -// watch it go full width.
      -
      -.panel {
      -  > .table,
      -  > .table-responsive > .table,
      -  > .panel-collapse > .table {
      -    margin-bottom: 0;
      -
      -    caption {
      -      padding-left: $panel-body-padding;
      -      padding-right: $panel-body-padding;
      -    }
      -  }
      -  // Add border top radius for first one
      -  > .table:first-child,
      -  > .table-responsive:first-child > .table:first-child {
      -    @include border-top-radius(($panel-border-radius - 1));
      -
      -    > thead:first-child,
      -    > tbody:first-child {
      -      > tr:first-child {
      -        border-top-left-radius: ($panel-border-radius - 1);
      -        border-top-right-radius: ($panel-border-radius - 1);
      -
      -        td:first-child,
      -        th:first-child {
      -          border-top-left-radius: ($panel-border-radius - 1);
      -        }
      -        td:last-child,
      -        th:last-child {
      -          border-top-right-radius: ($panel-border-radius - 1);
      -        }
      -      }
      -    }
      -  }
      -  // Add border bottom radius for last one
      -  > .table:last-child,
      -  > .table-responsive:last-child > .table:last-child {
      -    @include border-bottom-radius(($panel-border-radius - 1));
      -
      -    > tbody:last-child,
      -    > tfoot:last-child {
      -      > tr:last-child {
      -        border-bottom-left-radius: ($panel-border-radius - 1);
      -        border-bottom-right-radius: ($panel-border-radius - 1);
      -
      -        td:first-child,
      -        th:first-child {
      -          border-bottom-left-radius: ($panel-border-radius - 1);
      -        }
      -        td:last-child,
      -        th:last-child {
      -          border-bottom-right-radius: ($panel-border-radius - 1);
      -        }
      -      }
      -    }
      -  }
      -  > .panel-body + .table,
      -  > .panel-body + .table-responsive,
      -  > .table + .panel-body,
      -  > .table-responsive + .panel-body {
      -    border-top: 1px solid $table-border-color;
      -  }
      -  > .table > tbody:first-child > tr:first-child th,
      -  > .table > tbody:first-child > tr:first-child td {
      -    border-top: 0;
      -  }
      -  > .table-bordered,
      -  > .table-responsive > .table-bordered {
      -    border: 0;
      -    > thead,
      -    > tbody,
      -    > tfoot {
      -      > tr {
      -        > th:first-child,
      -        > td:first-child {
      -          border-left: 0;
      -        }
      -        > th:last-child,
      -        > td:last-child {
      -          border-right: 0;
      -        }
      -      }
      -    }
      -    > thead,
      -    > tbody {
      -      > tr:first-child {
      -        > td,
      -        > th {
      -          border-bottom: 0;
      -        }
      -      }
      -    }
      -    > tbody,
      -    > tfoot {
      -      > tr:last-child {
      -        > td,
      -        > th {
      -          border-bottom: 0;
      -        }
      -      }
      -    }
      -  }
      -  > .table-responsive {
      -    border: 0;
      -    margin-bottom: 0;
      -  }
      -}
      -
      -
      -// Collapsable panels (aka, accordion)
      -//
      -// Wrap a series of panels in `.panel-group` to turn them into an accordion with
      -// the help of our collapse JavaScript plugin.
      -
      -.panel-group {
      -  margin-bottom: $line-height-computed;
      -
      -  // Tighten up margin so it's only between panels
      -  .panel {
      -    margin-bottom: 0;
      -    border-radius: $panel-border-radius;
      -
      -    + .panel {
      -      margin-top: 5px;
      -    }
      -  }
      -
      -  .panel-heading {
      -    border-bottom: 0;
      -
      -    + .panel-collapse > .panel-body,
      -    + .panel-collapse > .list-group {
      -      border-top: 1px solid $panel-inner-border;
      -    }
      -  }
      -
      -  .panel-footer {
      -    border-top: 0;
      -    + .panel-collapse .panel-body {
      -      border-bottom: 1px solid $panel-inner-border;
      -    }
      -  }
      -}
      -
      -
      -// Contextual variations
      -.panel-default {
      -  @include panel-variant($panel-default-border, $panel-default-text, $panel-default-heading-bg, $panel-default-border);
      -}
      -.panel-primary {
      -  @include panel-variant($panel-primary-border, $panel-primary-text, $panel-primary-heading-bg, $panel-primary-border);
      -}
      -.panel-success {
      -  @include panel-variant($panel-success-border, $panel-success-text, $panel-success-heading-bg, $panel-success-border);
      -}
      -.panel-info {
      -  @include panel-variant($panel-info-border, $panel-info-text, $panel-info-heading-bg, $panel-info-border);
      -}
      -.panel-warning {
      -  @include panel-variant($panel-warning-border, $panel-warning-text, $panel-warning-heading-bg, $panel-warning-border);
      -}
      -.panel-danger {
      -  @include panel-variant($panel-danger-border, $panel-danger-text, $panel-danger-heading-bg, $panel-danger-border);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_popovers.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_popovers.scss
      deleted file mode 100644
      index 9b90a2e964..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_popovers.scss
      +++ /dev/null
      @@ -1,131 +0,0 @@
      -//
      -// Popovers
      -// --------------------------------------------------
      -
      -
      -.popover {
      -  position: absolute;
      -  top: 0;
      -  left: 0;
      -  z-index: $zindex-popover;
      -  display: none;
      -  max-width: $popover-max-width;
      -  padding: 1px;
      -  // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
      -  // So reset our font and text properties to avoid inheriting weird values.
      -  @include reset-text;
      -  font-size: $font-size-base;
      -
      -  background-color: $popover-bg;
      -  background-clip: padding-box;
      -  border: 1px solid $popover-fallback-border-color;
      -  border: 1px solid $popover-border-color;
      -  border-radius: $border-radius-large;
      -  @include box-shadow(0 5px 10px rgba(0,0,0,.2));
      -
      -  // Offset the popover to account for the popover arrow
      -  &.top     { margin-top: -$popover-arrow-width; }
      -  &.right   { margin-left: $popover-arrow-width; }
      -  &.bottom  { margin-top: $popover-arrow-width; }
      -  &.left    { margin-left: -$popover-arrow-width; }
      -}
      -
      -.popover-title {
      -  margin: 0; // reset heading margin
      -  padding: 8px 14px;
      -  font-size: $font-size-base;
      -  background-color: $popover-title-bg;
      -  border-bottom: 1px solid darken($popover-title-bg, 5%);
      -  border-radius: ($border-radius-large - 1) ($border-radius-large - 1) 0 0;
      -}
      -
      -.popover-content {
      -  padding: 9px 14px;
      -}
      -
      -// Arrows
      -//
      -// .arrow is outer, .arrow:after is inner
      -
      -.popover > .arrow {
      -  &,
      -  &:after {
      -    position: absolute;
      -    display: block;
      -    width: 0;
      -    height: 0;
      -    border-color: transparent;
      -    border-style: solid;
      -  }
      -}
      -.popover > .arrow {
      -  border-width: $popover-arrow-outer-width;
      -}
      -.popover > .arrow:after {
      -  border-width: $popover-arrow-width;
      -  content: "";
      -}
      -
      -.popover {
      -  &.top > .arrow {
      -    left: 50%;
      -    margin-left: -$popover-arrow-outer-width;
      -    border-bottom-width: 0;
      -    border-top-color: $popover-arrow-outer-fallback-color; // IE8 fallback
      -    border-top-color: $popover-arrow-outer-color;
      -    bottom: -$popover-arrow-outer-width;
      -    &:after {
      -      content: " ";
      -      bottom: 1px;
      -      margin-left: -$popover-arrow-width;
      -      border-bottom-width: 0;
      -      border-top-color: $popover-arrow-color;
      -    }
      -  }
      -  &.right > .arrow {
      -    top: 50%;
      -    left: -$popover-arrow-outer-width;
      -    margin-top: -$popover-arrow-outer-width;
      -    border-left-width: 0;
      -    border-right-color: $popover-arrow-outer-fallback-color; // IE8 fallback
      -    border-right-color: $popover-arrow-outer-color;
      -    &:after {
      -      content: " ";
      -      left: 1px;
      -      bottom: -$popover-arrow-width;
      -      border-left-width: 0;
      -      border-right-color: $popover-arrow-color;
      -    }
      -  }
      -  &.bottom > .arrow {
      -    left: 50%;
      -    margin-left: -$popover-arrow-outer-width;
      -    border-top-width: 0;
      -    border-bottom-color: $popover-arrow-outer-fallback-color; // IE8 fallback
      -    border-bottom-color: $popover-arrow-outer-color;
      -    top: -$popover-arrow-outer-width;
      -    &:after {
      -      content: " ";
      -      top: 1px;
      -      margin-left: -$popover-arrow-width;
      -      border-top-width: 0;
      -      border-bottom-color: $popover-arrow-color;
      -    }
      -  }
      -
      -  &.left > .arrow {
      -    top: 50%;
      -    right: -$popover-arrow-outer-width;
      -    margin-top: -$popover-arrow-outer-width;
      -    border-right-width: 0;
      -    border-left-color: $popover-arrow-outer-fallback-color; // IE8 fallback
      -    border-left-color: $popover-arrow-outer-color;
      -    &:after {
      -      content: " ";
      -      right: 1px;
      -      border-right-width: 0;
      -      border-left-color: $popover-arrow-color;
      -      bottom: -$popover-arrow-width;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_print.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_print.scss
      deleted file mode 100644
      index 66e54ab489..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_print.scss
      +++ /dev/null
      @@ -1,101 +0,0 @@
      -/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
      -
      -// ==========================================================================
      -// Print styles.
      -// Inlined to avoid the additional HTTP request: h5bp.com/r
      -// ==========================================================================
      -
      -@media print {
      -    *,
      -    *:before,
      -    *:after {
      -        background: transparent !important;
      -        color: #000 !important; // Black prints faster: h5bp.com/s
      -        box-shadow: none !important;
      -        text-shadow: none !important;
      -    }
      -
      -    a,
      -    a:visited {
      -        text-decoration: underline;
      -    }
      -
      -    a[href]:after {
      -        content: " (" attr(href) ")";
      -    }
      -
      -    abbr[title]:after {
      -        content: " (" attr(title) ")";
      -    }
      -
      -    // Don't show links that are fragment identifiers,
      -    // or use the `javascript:` pseudo protocol
      -    a[href^="#"]:after,
      -    a[href^="javascript:"]:after {
      -        content: "";
      -    }
      -
      -    pre,
      -    blockquote {
      -        border: 1px solid #999;
      -        page-break-inside: avoid;
      -    }
      -
      -    thead {
      -        display: table-header-group; // h5bp.com/t
      -    }
      -
      -    tr,
      -    img {
      -        page-break-inside: avoid;
      -    }
      -
      -    img {
      -        max-width: 100% !important;
      -    }
      -
      -    p,
      -    h2,
      -    h3 {
      -        orphans: 3;
      -        widows: 3;
      -    }
      -
      -    h2,
      -    h3 {
      -        page-break-after: avoid;
      -    }
      -
      -    // Bootstrap specific changes start
      -
      -    // Bootstrap components
      -    .navbar {
      -        display: none;
      -    }
      -    .btn,
      -    .dropup > .btn {
      -        > .caret {
      -            border-top-color: #000 !important;
      -        }
      -    }
      -    .label {
      -        border: 1px solid #000;
      -    }
      -
      -    .table {
      -        border-collapse: collapse !important;
      -
      -        td,
      -        th {
      -            background-color: #fff !important;
      -        }
      -    }
      -    .table-bordered {
      -        th,
      -        td {
      -            border: 1px solid #ddd !important;
      -        }
      -    }
      -
      -    // Bootstrap specific changes end
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_progress-bars.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_progress-bars.scss
      deleted file mode 100644
      index 343df6323c..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_progress-bars.scss
      +++ /dev/null
      @@ -1,87 +0,0 @@
      -//
      -// Progress bars
      -// --------------------------------------------------
      -
      -
      -// Bar animations
      -// -------------------------
      -
      -// WebKit
      -@-webkit-keyframes progress-bar-stripes {
      -  from  { background-position: 40px 0; }
      -  to    { background-position: 0 0; }
      -}
      -
      -// Spec and IE10+
      -@keyframes progress-bar-stripes {
      -  from  { background-position: 40px 0; }
      -  to    { background-position: 0 0; }
      -}
      -
      -
      -// Bar itself
      -// -------------------------
      -
      -// Outer container
      -.progress {
      -  overflow: hidden;
      -  height: $line-height-computed;
      -  margin-bottom: $line-height-computed;
      -  background-color: $progress-bg;
      -  border-radius: $progress-border-radius;
      -  @include box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
      -}
      -
      -// Bar of progress
      -.progress-bar {
      -  float: left;
      -  width: 0%;
      -  height: 100%;
      -  font-size: $font-size-small;
      -  line-height: $line-height-computed;
      -  color: $progress-bar-color;
      -  text-align: center;
      -  background-color: $progress-bar-bg;
      -  @include box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
      -  @include transition(width .6s ease);
      -}
      -
      -// Striped bars
      -//
      -// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
      -// `.progress-bar-striped` class, which you just add to an existing
      -// `.progress-bar`.
      -.progress-striped .progress-bar,
      -.progress-bar-striped {
      -  @include gradient-striped;
      -  background-size: 40px 40px;
      -}
      -
      -// Call animation for the active one
      -//
      -// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the
      -// `.progress-bar.active` approach.
      -.progress.active .progress-bar,
      -.progress-bar.active {
      -  @include animation(progress-bar-stripes 2s linear infinite);
      -}
      -
      -
      -// Variations
      -// -------------------------
      -
      -.progress-bar-success {
      -  @include progress-bar-variant($progress-bar-success-bg);
      -}
      -
      -.progress-bar-info {
      -  @include progress-bar-variant($progress-bar-info-bg);
      -}
      -
      -.progress-bar-warning {
      -  @include progress-bar-variant($progress-bar-warning-bg);
      -}
      -
      -.progress-bar-danger {
      -  @include progress-bar-variant($progress-bar-danger-bg);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-embed.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-embed.scss
      deleted file mode 100644
      index 080a5118fe..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-embed.scss
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -// Embeds responsive
      -//
      -// Credit: Nicolas Gallagher and SUIT CSS.
      -
      -.embed-responsive {
      -  position: relative;
      -  display: block;
      -  height: 0;
      -  padding: 0;
      -  overflow: hidden;
      -
      -  .embed-responsive-item,
      -  iframe,
      -  embed,
      -  object,
      -  video {
      -    position: absolute;
      -    top: 0;
      -    left: 0;
      -    bottom: 0;
      -    height: 100%;
      -    width: 100%;
      -    border: 0;
      -  }
      -}
      -
      -// Modifier class for 16:9 aspect ratio
      -.embed-responsive-16by9 {
      -  padding-bottom: 56.25%;
      -}
      -
      -// Modifier class for 4:3 aspect ratio
      -.embed-responsive-4by3 {
      -  padding-bottom: 75%;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-utilities.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-utilities.scss
      deleted file mode 100644
      index f3f0c839be..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_responsive-utilities.scss
      +++ /dev/null
      @@ -1,179 +0,0 @@
      -//
      -// Responsive: Utility classes
      -// --------------------------------------------------
      -
      -
      -// IE10 in Windows (Phone) 8
      -//
      -// Support for responsive views via media queries is kind of borked in IE10, for
      -// Surface/desktop in split view and for Windows Phone 8. This particular fix
      -// must be accompanied by a snippet of JavaScript to sniff the user agent and
      -// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at
      -// our Getting Started page for more information on this bug.
      -//
      -// For more information, see the following:
      -//
      -// Issue: https://github.com/twbs/bootstrap/issues/10497
      -// Docs: http://getbootstrap.com/getting-started/#support-ie10-width
      -// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/
      -// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/
      -
      -@at-root {
      -  @-ms-viewport {
      -    width: device-width;
      -  }
      -}
      -
      -
      -// Visibility utilities
      -// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0
      -
      -@include responsive-invisibility('.visible-xs');
      -@include responsive-invisibility('.visible-sm');
      -@include responsive-invisibility('.visible-md');
      -@include responsive-invisibility('.visible-lg');
      -
      -.visible-xs-block,
      -.visible-xs-inline,
      -.visible-xs-inline-block,
      -.visible-sm-block,
      -.visible-sm-inline,
      -.visible-sm-inline-block,
      -.visible-md-block,
      -.visible-md-inline,
      -.visible-md-inline-block,
      -.visible-lg-block,
      -.visible-lg-inline,
      -.visible-lg-inline-block {
      -  display: none !important;
      -}
      -
      -@media (max-width: $screen-xs-max) {
      -  @include responsive-visibility('.visible-xs');
      -}
      -.visible-xs-block {
      -  @media (max-width: $screen-xs-max) {
      -    display: block !important;
      -  }
      -}
      -.visible-xs-inline {
      -  @media (max-width: $screen-xs-max) {
      -    display: inline !important;
      -  }
      -}
      -.visible-xs-inline-block {
      -  @media (max-width: $screen-xs-max) {
      -    display: inline-block !important;
      -  }
      -}
      -
      -@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
      -  @include responsive-visibility('.visible-sm');
      -}
      -.visible-sm-block {
      -  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
      -    display: block !important;
      -  }
      -}
      -.visible-sm-inline {
      -  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
      -    display: inline !important;
      -  }
      -}
      -.visible-sm-inline-block {
      -  @media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
      -    display: inline-block !important;
      -  }
      -}
      -
      -@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
      -  @include responsive-visibility('.visible-md');
      -}
      -.visible-md-block {
      -  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
      -    display: block !important;
      -  }
      -}
      -.visible-md-inline {
      -  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
      -    display: inline !important;
      -  }
      -}
      -.visible-md-inline-block {
      -  @media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
      -    display: inline-block !important;
      -  }
      -}
      -
      -@media (min-width: $screen-lg-min) {
      -  @include responsive-visibility('.visible-lg');
      -}
      -.visible-lg-block {
      -  @media (min-width: $screen-lg-min) {
      -    display: block !important;
      -  }
      -}
      -.visible-lg-inline {
      -  @media (min-width: $screen-lg-min) {
      -    display: inline !important;
      -  }
      -}
      -.visible-lg-inline-block {
      -  @media (min-width: $screen-lg-min) {
      -    display: inline-block !important;
      -  }
      -}
      -
      -@media (max-width: $screen-xs-max) {
      -  @include responsive-invisibility('.hidden-xs');
      -}
      -
      -@media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) {
      -  @include responsive-invisibility('.hidden-sm');
      -}
      -
      -@media (min-width: $screen-md-min) and (max-width: $screen-md-max) {
      -  @include responsive-invisibility('.hidden-md');
      -}
      -
      -@media (min-width: $screen-lg-min) {
      -  @include responsive-invisibility('.hidden-lg');
      -}
      -
      -
      -// Print utilities
      -//
      -// Media queries are placed on the inside to be mixin-friendly.
      -
      -// Note: Deprecated .visible-print as of v3.2.0
      -
      -@include responsive-invisibility('.visible-print');
      -
      -@media print {
      -  @include responsive-visibility('.visible-print');
      -}
      -.visible-print-block {
      -  display: none !important;
      -
      -  @media print {
      -    display: block !important;
      -  }
      -}
      -.visible-print-inline {
      -  display: none !important;
      -
      -  @media print {
      -    display: inline !important;
      -  }
      -}
      -.visible-print-inline-block {
      -  display: none !important;
      -
      -  @media print {
      -    display: inline-block !important;
      -  }
      -}
      -
      -@media print {
      -  @include responsive-invisibility('.hidden-print');
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_scaffolding.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_scaffolding.scss
      deleted file mode 100644
      index 83adb5dd51..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_scaffolding.scss
      +++ /dev/null
      @@ -1,161 +0,0 @@
      -//
      -// Scaffolding
      -// --------------------------------------------------
      -
      -
      -// Reset the box-sizing
      -//
      -// Heads up! This reset may cause conflicts with some third-party widgets.
      -// For recommendations on resolving such conflicts, see
      -// http://getbootstrap.com/getting-started/#third-box-sizing
      -* {
      -  @include box-sizing(border-box);
      -}
      -*:before,
      -*:after {
      -  @include box-sizing(border-box);
      -}
      -
      -
      -// Body reset
      -
      -html {
      -  font-size: 10px;
      -  -webkit-tap-highlight-color: rgba(0,0,0,0);
      -}
      -
      -body {
      -  font-family: $font-family-base;
      -  font-size: $font-size-base;
      -  line-height: $line-height-base;
      -  color: $text-color;
      -  background-color: $body-bg;
      -}
      -
      -// Reset fonts for relevant elements
      -input,
      -button,
      -select,
      -textarea {
      -  font-family: inherit;
      -  font-size: inherit;
      -  line-height: inherit;
      -}
      -
      -
      -// Links
      -
      -a {
      -  color: $link-color;
      -  text-decoration: none;
      -
      -  &:hover,
      -  &:focus {
      -    color: $link-hover-color;
      -    text-decoration: $link-hover-decoration;
      -  }
      -
      -  &:focus {
      -    @include tab-focus;
      -  }
      -}
      -
      -
      -// Figures
      -//
      -// We reset this here because previously Normalize had no `figure` margins. This
      -// ensures we don't break anyone's use of the element.
      -
      -figure {
      -  margin: 0;
      -}
      -
      -
      -// Images
      -
      -img {
      -  vertical-align: middle;
      -}
      -
      -// Responsive images (ensure images don't scale beyond their parents)
      -.img-responsive {
      -  @include img-responsive;
      -}
      -
      -// Rounded corners
      -.img-rounded {
      -  border-radius: $border-radius-large;
      -}
      -
      -// Image thumbnails
      -//
      -// Heads up! This is mixin-ed into thumbnails.less for `.thumbnail`.
      -.img-thumbnail {
      -  padding: $thumbnail-padding;
      -  line-height: $line-height-base;
      -  background-color: $thumbnail-bg;
      -  border: 1px solid $thumbnail-border;
      -  border-radius: $thumbnail-border-radius;
      -  @include transition(all .2s ease-in-out);
      -
      -  // Keep them at most 100% wide
      -  @include img-responsive(inline-block);
      -}
      -
      -// Perfect circle
      -.img-circle {
      -  border-radius: 50%; // set radius in percents
      -}
      -
      -
      -// Horizontal rules
      -
      -hr {
      -  margin-top:    $line-height-computed;
      -  margin-bottom: $line-height-computed;
      -  border: 0;
      -  border-top: 1px solid $hr-border;
      -}
      -
      -
      -// Only display content to screen readers
      -//
      -// See: http://a11yproject.com/posts/how-to-hide-content/
      -
      -.sr-only {
      -  position: absolute;
      -  width: 1px;
      -  height: 1px;
      -  margin: -1px;
      -  padding: 0;
      -  overflow: hidden;
      -  clip: rect(0,0,0,0);
      -  border: 0;
      -}
      -
      -// Use in conjunction with .sr-only to only display content when it's focused.
      -// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1
      -// Credit: HTML5 Boilerplate
      -
      -.sr-only-focusable {
      -  &:active,
      -  &:focus {
      -    position: static;
      -    width: auto;
      -    height: auto;
      -    margin: 0;
      -    overflow: visible;
      -    clip: auto;
      -  }
      -}
      -
      -
      -// iOS "clickable elements" fix for role="button"
      -//
      -// Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
      -// for traditionally non-focusable elements with role="button"
      -// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
      -
      -[role="button"] {
      -  cursor: pointer;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_tables.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_tables.scss
      deleted file mode 100644
      index affcc58c0b..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_tables.scss
      +++ /dev/null
      @@ -1,234 +0,0 @@
      -//
      -// Tables
      -// --------------------------------------------------
      -
      -
      -table {
      -  background-color: $table-bg;
      -}
      -caption {
      -  padding-top: $table-cell-padding;
      -  padding-bottom: $table-cell-padding;
      -  color: $text-muted;
      -  text-align: left;
      -}
      -th {
      -  text-align: left;
      -}
      -
      -
      -// Baseline styles
      -
      -.table {
      -  width: 100%;
      -  max-width: 100%;
      -  margin-bottom: $line-height-computed;
      -  // Cells
      -  > thead,
      -  > tbody,
      -  > tfoot {
      -    > tr {
      -      > th,
      -      > td {
      -        padding: $table-cell-padding;
      -        line-height: $line-height-base;
      -        vertical-align: top;
      -        border-top: 1px solid $table-border-color;
      -      }
      -    }
      -  }
      -  // Bottom align for column headings
      -  > thead > tr > th {
      -    vertical-align: bottom;
      -    border-bottom: 2px solid $table-border-color;
      -  }
      -  // Remove top border from thead by default
      -  > caption + thead,
      -  > colgroup + thead,
      -  > thead:first-child {
      -    > tr:first-child {
      -      > th,
      -      > td {
      -        border-top: 0;
      -      }
      -    }
      -  }
      -  // Account for multiple tbody instances
      -  > tbody + tbody {
      -    border-top: 2px solid $table-border-color;
      -  }
      -
      -  // Nesting
      -  .table {
      -    background-color: $body-bg;
      -  }
      -}
      -
      -
      -// Condensed table w/ half padding
      -
      -.table-condensed {
      -  > thead,
      -  > tbody,
      -  > tfoot {
      -    > tr {
      -      > th,
      -      > td {
      -        padding: $table-condensed-cell-padding;
      -      }
      -    }
      -  }
      -}
      -
      -
      -// Bordered version
      -//
      -// Add borders all around the table and between all the columns.
      -
      -.table-bordered {
      -  border: 1px solid $table-border-color;
      -  > thead,
      -  > tbody,
      -  > tfoot {
      -    > tr {
      -      > th,
      -      > td {
      -        border: 1px solid $table-border-color;
      -      }
      -    }
      -  }
      -  > thead > tr {
      -    > th,
      -    > td {
      -      border-bottom-width: 2px;
      -    }
      -  }
      -}
      -
      -
      -// Zebra-striping
      -//
      -// Default zebra-stripe styles (alternating gray and transparent backgrounds)
      -
      -.table-striped {
      -  > tbody > tr:nth-of-type(odd) {
      -    background-color: $table-bg-accent;
      -  }
      -}
      -
      -
      -// Hover effect
      -//
      -// Placed here since it has to come after the potential zebra striping
      -
      -.table-hover {
      -  > tbody > tr:hover {
      -    background-color: $table-bg-hover;
      -  }
      -}
      -
      -
      -// Table cell sizing
      -//
      -// Reset default table behavior
      -
      -table col[class*="col-"] {
      -  position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
      -  float: none;
      -  display: table-column;
      -}
      -table {
      -  td,
      -  th {
      -    &[class*="col-"] {
      -      position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
      -      float: none;
      -      display: table-cell;
      -    }
      -  }
      -}
      -
      -
      -// Table backgrounds
      -//
      -// Exact selectors below required to override `.table-striped` and prevent
      -// inheritance to nested tables.
      -
      -// Generate the contextual variants
      -@include table-row-variant('active', $table-bg-active);
      -@include table-row-variant('success', $state-success-bg);
      -@include table-row-variant('info', $state-info-bg);
      -@include table-row-variant('warning', $state-warning-bg);
      -@include table-row-variant('danger', $state-danger-bg);
      -
      -
      -// Responsive tables
      -//
      -// Wrap your tables in `.table-responsive` and we'll make them mobile friendly
      -// by enabling horizontal scrolling. Only applies <768px. Everything above that
      -// will display normally.
      -
      -.table-responsive {
      -  overflow-x: auto;
      -  min-height: 0.01%; // Workaround for IE9 bug (see https://github.com/twbs/bootstrap/issues/14837)
      -
      -  @media screen and (max-width: $screen-xs-max) {
      -    width: 100%;
      -    margin-bottom: ($line-height-computed * 0.75);
      -    overflow-y: hidden;
      -    -ms-overflow-style: -ms-autohiding-scrollbar;
      -    border: 1px solid $table-border-color;
      -
      -    // Tighten up spacing
      -    > .table {
      -      margin-bottom: 0;
      -
      -      // Ensure the content doesn't wrap
      -      > thead,
      -      > tbody,
      -      > tfoot {
      -        > tr {
      -          > th,
      -          > td {
      -            white-space: nowrap;
      -          }
      -        }
      -      }
      -    }
      -
      -    // Special overrides for the bordered tables
      -    > .table-bordered {
      -      border: 0;
      -
      -      // Nuke the appropriate borders so that the parent can handle them
      -      > thead,
      -      > tbody,
      -      > tfoot {
      -        > tr {
      -          > th:first-child,
      -          > td:first-child {
      -            border-left: 0;
      -          }
      -          > th:last-child,
      -          > td:last-child {
      -            border-right: 0;
      -          }
      -        }
      -      }
      -
      -      // Only nuke the last row's bottom-border in `tbody` and `tfoot` since
      -      // chances are there will be only one `tr` in a `thead` and that would
      -      // remove the border altogether.
      -      > tbody,
      -      > tfoot {
      -        > tr:last-child {
      -          > th,
      -          > td {
      -            border-bottom: 0;
      -          }
      -        }
      -      }
      -
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_theme.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_theme.scss
      deleted file mode 100644
      index c64b3d619a..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_theme.scss
      +++ /dev/null
      @@ -1,291 +0,0 @@
      -/*!
      - * Bootstrap v3.3.6 (http://getbootstrap.com)
      - * Copyright 2011-2015 Twitter, Inc.
      - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
      - */
      -
      -//
      -// Load core variables and mixins
      -// --------------------------------------------------
      -
      -@import "variables";
      -@import "mixins";
      -
      -
      -//
      -// Buttons
      -// --------------------------------------------------
      -
      -// Common styles
      -.btn-default,
      -.btn-primary,
      -.btn-success,
      -.btn-info,
      -.btn-warning,
      -.btn-danger {
      -  text-shadow: 0 -1px 0 rgba(0,0,0,.2);
      -  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);
      -  @include box-shadow($shadow);
      -
      -  // Reset the shadow
      -  &:active,
      -  &.active {
      -    @include box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
      -  }
      -
      -  &.disabled,
      -  &[disabled],
      -  fieldset[disabled] & {
      -    @include box-shadow(none);
      -  }
      -
      -  .badge {
      -    text-shadow: none;
      -  }
      -}
      -
      -// Mixin for generating new styles
      -@mixin btn-styles($btn-color: #555) {
      -  @include gradient-vertical($start-color: $btn-color, $end-color: darken($btn-color, 12%));
      -  @include reset-filter; // Disable gradients for IE9 because filter bleeds through rounded corners; see https://github.com/twbs/bootstrap/issues/10620
      -  background-repeat: repeat-x;
      -  border-color: darken($btn-color, 14%);
      -
      -  &:hover,
      -  &:focus  {
      -    background-color: darken($btn-color, 12%);
      -    background-position: 0 -15px;
      -  }
      -
      -  &:active,
      -  &.active {
      -    background-color: darken($btn-color, 12%);
      -    border-color: darken($btn-color, 14%);
      -  }
      -
      -  &.disabled,
      -  &[disabled],
      -  fieldset[disabled] & {
      -    &,
      -    &:hover,
      -    &:focus,
      -    &.focus,
      -    &:active,
      -    &.active {
      -      background-color: darken($btn-color, 12%);
      -      background-image: none;
      -    }
      -  }
      -}
      -
      -// Common styles
      -.btn {
      -  // Remove the gradient for the pressed/active state
      -  &:active,
      -  &.active {
      -    background-image: none;
      -  }
      -}
      -
      -// Apply the mixin to the buttons
      -.btn-default { @include btn-styles($btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }
      -.btn-primary { @include btn-styles($btn-primary-bg); }
      -.btn-success { @include btn-styles($btn-success-bg); }
      -.btn-info    { @include btn-styles($btn-info-bg); }
      -.btn-warning { @include btn-styles($btn-warning-bg); }
      -.btn-danger  { @include btn-styles($btn-danger-bg); }
      -
      -
      -//
      -// Images
      -// --------------------------------------------------
      -
      -.thumbnail,
      -.img-thumbnail {
      -  @include box-shadow(0 1px 2px rgba(0,0,0,.075));
      -}
      -
      -
      -//
      -// Dropdowns
      -// --------------------------------------------------
      -
      -.dropdown-menu > li > a:hover,
      -.dropdown-menu > li > a:focus {
      -  @include gradient-vertical($start-color: $dropdown-link-hover-bg, $end-color: darken($dropdown-link-hover-bg, 5%));
      -  background-color: darken($dropdown-link-hover-bg, 5%);
      -}
      -.dropdown-menu > .active > a,
      -.dropdown-menu > .active > a:hover,
      -.dropdown-menu > .active > a:focus {
      -  @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
      -  background-color: darken($dropdown-link-active-bg, 5%);
      -}
      -
      -
      -//
      -// Navbar
      -// --------------------------------------------------
      -
      -// Default navbar
      -.navbar-default {
      -  @include gradient-vertical($start-color: lighten($navbar-default-bg, 10%), $end-color: $navbar-default-bg);
      -  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered
      -  border-radius: $navbar-border-radius;
      -  $shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);
      -  @include box-shadow($shadow);
      -
      -  .navbar-nav > .open > a,
      -  .navbar-nav > .active > a {
      -    @include gradient-vertical($start-color: darken($navbar-default-link-active-bg, 5%), $end-color: darken($navbar-default-link-active-bg, 2%));
      -    @include box-shadow(inset 0 3px 9px rgba(0,0,0,.075));
      -  }
      -}
      -.navbar-brand,
      -.navbar-nav > li > a {
      -  text-shadow: 0 1px 0 rgba(255,255,255,.25);
      -}
      -
      -// Inverted navbar
      -.navbar-inverse {
      -  @include gradient-vertical($start-color: lighten($navbar-inverse-bg, 10%), $end-color: $navbar-inverse-bg);
      -  @include reset-filter; // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
      -  border-radius: $navbar-border-radius;
      -  .navbar-nav > .open > a,
      -  .navbar-nav > .active > a {
      -    @include gradient-vertical($start-color: $navbar-inverse-link-active-bg, $end-color: lighten($navbar-inverse-link-active-bg, 2.5%));
      -    @include box-shadow(inset 0 3px 9px rgba(0,0,0,.25));
      -  }
      -
      -  .navbar-brand,
      -  .navbar-nav > li > a {
      -    text-shadow: 0 -1px 0 rgba(0,0,0,.25);
      -  }
      -}
      -
      -// Undo rounded corners in static and fixed navbars
      -.navbar-static-top,
      -.navbar-fixed-top,
      -.navbar-fixed-bottom {
      -  border-radius: 0;
      -}
      -
      -// Fix active state of dropdown items in collapsed mode
      -@media (max-width: $grid-float-breakpoint-max) {
      -  .navbar .navbar-nav .open .dropdown-menu > .active > a {
      -    &,
      -    &:hover,
      -    &:focus {
      -      color: #fff;
      -      @include gradient-vertical($start-color: $dropdown-link-active-bg, $end-color: darken($dropdown-link-active-bg, 5%));
      -    }
      -  }
      -}
      -
      -
      -//
      -// Alerts
      -// --------------------------------------------------
      -
      -// Common styles
      -.alert {
      -  text-shadow: 0 1px 0 rgba(255,255,255,.2);
      -  $shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);
      -  @include box-shadow($shadow);
      -}
      -
      -// Mixin for generating new styles
      -@mixin alert-styles($color) {
      -  @include gradient-vertical($start-color: $color, $end-color: darken($color, 7.5%));
      -  border-color: darken($color, 15%);
      -}
      -
      -// Apply the mixin to the alerts
      -.alert-success    { @include alert-styles($alert-success-bg); }
      -.alert-info       { @include alert-styles($alert-info-bg); }
      -.alert-warning    { @include alert-styles($alert-warning-bg); }
      -.alert-danger     { @include alert-styles($alert-danger-bg); }
      -
      -
      -//
      -// Progress bars
      -// --------------------------------------------------
      -
      -// Give the progress background some depth
      -.progress {
      -  @include gradient-vertical($start-color: darken($progress-bg, 4%), $end-color: $progress-bg)
      -}
      -
      -// Mixin for generating new styles
      -@mixin progress-bar-styles($color) {
      -  @include gradient-vertical($start-color: $color, $end-color: darken($color, 10%));
      -}
      -
      -// Apply the mixin to the progress bars
      -.progress-bar            { @include progress-bar-styles($progress-bar-bg); }
      -.progress-bar-success    { @include progress-bar-styles($progress-bar-success-bg); }
      -.progress-bar-info       { @include progress-bar-styles($progress-bar-info-bg); }
      -.progress-bar-warning    { @include progress-bar-styles($progress-bar-warning-bg); }
      -.progress-bar-danger     { @include progress-bar-styles($progress-bar-danger-bg); }
      -
      -// Reset the striped class because our mixins don't do multiple gradients and
      -// the above custom styles override the new `.progress-bar-striped` in v3.2.0.
      -.progress-bar-striped {
      -  @include gradient-striped;
      -}
      -
      -
      -//
      -// List groups
      -// --------------------------------------------------
      -
      -.list-group {
      -  border-radius: $border-radius-base;
      -  @include box-shadow(0 1px 2px rgba(0,0,0,.075));
      -}
      -.list-group-item.active,
      -.list-group-item.active:hover,
      -.list-group-item.active:focus {
      -  text-shadow: 0 -1px 0 darken($list-group-active-bg, 10%);
      -  @include gradient-vertical($start-color: $list-group-active-bg, $end-color: darken($list-group-active-bg, 7.5%));
      -  border-color: darken($list-group-active-border, 7.5%);
      -
      -  .badge {
      -    text-shadow: none;
      -  }
      -}
      -
      -
      -//
      -// Panels
      -// --------------------------------------------------
      -
      -// Common styles
      -.panel {
      -  @include box-shadow(0 1px 2px rgba(0,0,0,.05));
      -}
      -
      -// Mixin for generating new styles
      -@mixin panel-heading-styles($color) {
      -  @include gradient-vertical($start-color: $color, $end-color: darken($color, 5%));
      -}
      -
      -// Apply the mixin to the panel headings only
      -.panel-default > .panel-heading   { @include panel-heading-styles($panel-default-heading-bg); }
      -.panel-primary > .panel-heading   { @include panel-heading-styles($panel-primary-heading-bg); }
      -.panel-success > .panel-heading   { @include panel-heading-styles($panel-success-heading-bg); }
      -.panel-info > .panel-heading      { @include panel-heading-styles($panel-info-heading-bg); }
      -.panel-warning > .panel-heading   { @include panel-heading-styles($panel-warning-heading-bg); }
      -.panel-danger > .panel-heading    { @include panel-heading-styles($panel-danger-heading-bg); }
      -
      -
      -//
      -// Wells
      -// --------------------------------------------------
      -
      -.well {
      -  @include gradient-vertical($start-color: darken($well-bg, 5%), $end-color: $well-bg);
      -  border-color: darken($well-bg, 10%);
      -  $shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);
      -  @include box-shadow($shadow);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_thumbnails.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_thumbnails.scss
      deleted file mode 100644
      index da0e1e76cf..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_thumbnails.scss
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -//
      -// Thumbnails
      -// --------------------------------------------------
      -
      -
      -// Mixin and adjust the regular image class
      -.thumbnail {
      -  display: block;
      -  padding: $thumbnail-padding;
      -  margin-bottom: $line-height-computed;
      -  line-height: $line-height-base;
      -  background-color: $thumbnail-bg;
      -  border: 1px solid $thumbnail-border;
      -  border-radius: $thumbnail-border-radius;
      -  @include transition(border .2s ease-in-out);
      -
      -  > img,
      -  a > img {
      -    @include img-responsive;
      -    margin-left: auto;
      -    margin-right: auto;
      -  }
      -
      -  // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active
      -
      -  // Image captions
      -  .caption {
      -    padding: $thumbnail-caption-padding;
      -    color: $thumbnail-caption-color;
      -  }
      -}
      -
      -// Add a hover state for linked versions only
      -a.thumbnail:hover,
      -a.thumbnail:focus,
      -a.thumbnail.active {
      -  border-color: $link-color;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_tooltip.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_tooltip.scss
      deleted file mode 100644
      index f0c1658274..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_tooltip.scss
      +++ /dev/null
      @@ -1,101 +0,0 @@
      -//
      -// Tooltips
      -// --------------------------------------------------
      -
      -
      -// Base class
      -.tooltip {
      -  position: absolute;
      -  z-index: $zindex-tooltip;
      -  display: block;
      -  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
      -  // So reset our font and text properties to avoid inheriting weird values.
      -  @include reset-text;
      -  font-size: $font-size-small;
      -
      -  @include opacity(0);
      -
      -  &.in     { @include opacity($tooltip-opacity); }
      -  &.top    { margin-top:  -3px; padding: $tooltip-arrow-width 0; }
      -  &.right  { margin-left:  3px; padding: 0 $tooltip-arrow-width; }
      -  &.bottom { margin-top:   3px; padding: $tooltip-arrow-width 0; }
      -  &.left   { margin-left: -3px; padding: 0 $tooltip-arrow-width; }
      -}
      -
      -// Wrapper for the tooltip content
      -.tooltip-inner {
      -  max-width: $tooltip-max-width;
      -  padding: 3px 8px;
      -  color: $tooltip-color;
      -  text-align: center;
      -  background-color: $tooltip-bg;
      -  border-radius: $border-radius-base;
      -}
      -
      -// Arrows
      -.tooltip-arrow {
      -  position: absolute;
      -  width: 0;
      -  height: 0;
      -  border-color: transparent;
      -  border-style: solid;
      -}
      -// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1
      -.tooltip {
      -  &.top .tooltip-arrow {
      -    bottom: 0;
      -    left: 50%;
      -    margin-left: -$tooltip-arrow-width;
      -    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
      -    border-top-color: $tooltip-arrow-color;
      -  }
      -  &.top-left .tooltip-arrow {
      -    bottom: 0;
      -    right: $tooltip-arrow-width;
      -    margin-bottom: -$tooltip-arrow-width;
      -    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
      -    border-top-color: $tooltip-arrow-color;
      -  }
      -  &.top-right .tooltip-arrow {
      -    bottom: 0;
      -    left: $tooltip-arrow-width;
      -    margin-bottom: -$tooltip-arrow-width;
      -    border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
      -    border-top-color: $tooltip-arrow-color;
      -  }
      -  &.right .tooltip-arrow {
      -    top: 50%;
      -    left: 0;
      -    margin-top: -$tooltip-arrow-width;
      -    border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
      -    border-right-color: $tooltip-arrow-color;
      -  }
      -  &.left .tooltip-arrow {
      -    top: 50%;
      -    right: 0;
      -    margin-top: -$tooltip-arrow-width;
      -    border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
      -    border-left-color: $tooltip-arrow-color;
      -  }
      -  &.bottom .tooltip-arrow {
      -    top: 0;
      -    left: 50%;
      -    margin-left: -$tooltip-arrow-width;
      -    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
      -    border-bottom-color: $tooltip-arrow-color;
      -  }
      -  &.bottom-left .tooltip-arrow {
      -    top: 0;
      -    right: $tooltip-arrow-width;
      -    margin-top: -$tooltip-arrow-width;
      -    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
      -    border-bottom-color: $tooltip-arrow-color;
      -  }
      -  &.bottom-right .tooltip-arrow {
      -    top: 0;
      -    left: $tooltip-arrow-width;
      -    margin-top: -$tooltip-arrow-width;
      -    border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
      -    border-bottom-color: $tooltip-arrow-color;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_type.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_type.scss
      deleted file mode 100644
      index 620796adc1..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_type.scss
      +++ /dev/null
      @@ -1,298 +0,0 @@
      -//
      -// Typography
      -// --------------------------------------------------
      -
      -
      -// Headings
      -// -------------------------
      -
      -h1, h2, h3, h4, h5, h6,
      -.h1, .h2, .h3, .h4, .h5, .h6 {
      -  font-family: $headings-font-family;
      -  font-weight: $headings-font-weight;
      -  line-height: $headings-line-height;
      -  color: $headings-color;
      -
      -  small,
      -  .small {
      -    font-weight: normal;
      -    line-height: 1;
      -    color: $headings-small-color;
      -  }
      -}
      -
      -h1, .h1,
      -h2, .h2,
      -h3, .h3 {
      -  margin-top: $line-height-computed;
      -  margin-bottom: ($line-height-computed / 2);
      -
      -  small,
      -  .small {
      -    font-size: 65%;
      -  }
      -}
      -h4, .h4,
      -h5, .h5,
      -h6, .h6 {
      -  margin-top: ($line-height-computed / 2);
      -  margin-bottom: ($line-height-computed / 2);
      -
      -  small,
      -  .small {
      -    font-size: 75%;
      -  }
      -}
      -
      -h1, .h1 { font-size: $font-size-h1; }
      -h2, .h2 { font-size: $font-size-h2; }
      -h3, .h3 { font-size: $font-size-h3; }
      -h4, .h4 { font-size: $font-size-h4; }
      -h5, .h5 { font-size: $font-size-h5; }
      -h6, .h6 { font-size: $font-size-h6; }
      -
      -
      -// Body text
      -// -------------------------
      -
      -p {
      -  margin: 0 0 ($line-height-computed / 2);
      -}
      -
      -.lead {
      -  margin-bottom: $line-height-computed;
      -  font-size: floor(($font-size-base * 1.15));
      -  font-weight: 300;
      -  line-height: 1.4;
      -
      -  @media (min-width: $screen-sm-min) {
      -    font-size: ($font-size-base * 1.5);
      -  }
      -}
      -
      -
      -// Emphasis & misc
      -// -------------------------
      -
      -// Ex: (12px small font / 14px base font) * 100% = about 85%
      -small,
      -.small {
      -  font-size: floor((100% * $font-size-small / $font-size-base));
      -}
      -
      -mark,
      -.mark {
      -  background-color: $state-warning-bg;
      -  padding: .2em;
      -}
      -
      -// Alignment
      -.text-left           { text-align: left; }
      -.text-right          { text-align: right; }
      -.text-center         { text-align: center; }
      -.text-justify        { text-align: justify; }
      -.text-nowrap         { white-space: nowrap; }
      -
      -// Transformation
      -.text-lowercase      { text-transform: lowercase; }
      -.text-uppercase      { text-transform: uppercase; }
      -.text-capitalize     { text-transform: capitalize; }
      -
      -// Contextual colors
      -.text-muted {
      -  color: $text-muted;
      -}
      -
      -@include text-emphasis-variant('.text-primary', $brand-primary);
      -
      -@include text-emphasis-variant('.text-success', $state-success-text);
      -
      -@include text-emphasis-variant('.text-info', $state-info-text);
      -
      -@include text-emphasis-variant('.text-warning', $state-warning-text);
      -
      -@include text-emphasis-variant('.text-danger', $state-danger-text);
      -
      -// Contextual backgrounds
      -// For now we'll leave these alongside the text classes until v4 when we can
      -// safely shift things around (per SemVer rules).
      -.bg-primary {
      -  // Given the contrast here, this is the only class to have its color inverted
      -  // automatically.
      -  color: #fff;
      -}
      -@include bg-variant('.bg-primary', $brand-primary);
      -
      -@include bg-variant('.bg-success', $state-success-bg);
      -
      -@include bg-variant('.bg-info', $state-info-bg);
      -
      -@include bg-variant('.bg-warning', $state-warning-bg);
      -
      -@include bg-variant('.bg-danger', $state-danger-bg);
      -
      -
      -// Page header
      -// -------------------------
      -
      -.page-header {
      -  padding-bottom: (($line-height-computed / 2) - 1);
      -  margin: ($line-height-computed * 2) 0 $line-height-computed;
      -  border-bottom: 1px solid $page-header-border-color;
      -}
      -
      -
      -// Lists
      -// -------------------------
      -
      -// Unordered and Ordered lists
      -ul,
      -ol {
      -  margin-top: 0;
      -  margin-bottom: ($line-height-computed / 2);
      -  ul,
      -  ol {
      -    margin-bottom: 0;
      -  }
      -}
      -
      -// List options
      -
      -// [converter] extracted from `.list-unstyled` for libsass compatibility
      -@mixin list-unstyled {
      -  padding-left: 0;
      -  list-style: none;
      -}
      -// [converter] extracted as `@mixin list-unstyled` for libsass compatibility
      -.list-unstyled {
      -  @include list-unstyled;
      -}
      -
      -
      -// Inline turns list items into inline-block
      -.list-inline {
      -  @include list-unstyled;
      -  margin-left: -5px;
      -
      -  > li {
      -    display: inline-block;
      -    padding-left: 5px;
      -    padding-right: 5px;
      -  }
      -}
      -
      -// Description Lists
      -dl {
      -  margin-top: 0; // Remove browser default
      -  margin-bottom: $line-height-computed;
      -}
      -dt,
      -dd {
      -  line-height: $line-height-base;
      -}
      -dt {
      -  font-weight: bold;
      -}
      -dd {
      -  margin-left: 0; // Undo browser default
      -}
      -
      -// Horizontal description lists
      -//
      -// Defaults to being stacked without any of the below styles applied, until the
      -// grid breakpoint is reached (default of ~768px).
      -
      -.dl-horizontal {
      -  dd {
      -    @include clearfix; // Clear the floated `dt` if an empty `dd` is present
      -  }
      -
      -  @media (min-width: $dl-horizontal-breakpoint) {
      -    dt {
      -      float: left;
      -      width: ($dl-horizontal-offset - 20);
      -      clear: left;
      -      text-align: right;
      -      @include text-overflow;
      -    }
      -    dd {
      -      margin-left: $dl-horizontal-offset;
      -    }
      -  }
      -}
      -
      -
      -// Misc
      -// -------------------------
      -
      -// Abbreviations and acronyms
      -abbr[title],
      -// Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
      -abbr[data-original-title] {
      -  cursor: help;
      -  border-bottom: 1px dotted $abbr-border-color;
      -}
      -.initialism {
      -  font-size: 90%;
      -  @extend .text-uppercase;
      -}
      -
      -// Blockquotes
      -blockquote {
      -  padding: ($line-height-computed / 2) $line-height-computed;
      -  margin: 0 0 $line-height-computed;
      -  font-size: $blockquote-font-size;
      -  border-left: 5px solid $blockquote-border-color;
      -
      -  p,
      -  ul,
      -  ol {
      -    &:last-child {
      -      margin-bottom: 0;
      -    }
      -  }
      -
      -  // Note: Deprecated small and .small as of v3.1.0
      -  // Context: https://github.com/twbs/bootstrap/issues/11660
      -  footer,
      -  small,
      -  .small {
      -    display: block;
      -    font-size: 80%; // back to default font-size
      -    line-height: $line-height-base;
      -    color: $blockquote-small-color;
      -
      -    &:before {
      -      content: '\2014 \00A0'; // em dash, nbsp
      -    }
      -  }
      -}
      -
      -// Opposite alignment of blockquote
      -//
      -// Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.
      -.blockquote-reverse,
      -blockquote.pull-right {
      -  padding-right: 15px;
      -  padding-left: 0;
      -  border-right: 5px solid $blockquote-border-color;
      -  border-left: 0;
      -  text-align: right;
      -
      -  // Account for citation
      -  footer,
      -  small,
      -  .small {
      -    &:before { content: ''; }
      -    &:after {
      -      content: '\00A0 \2014'; // nbsp, em dash
      -    }
      -  }
      -}
      -
      -// Addresses
      -address {
      -  margin-bottom: $line-height-computed;
      -  font-style: normal;
      -  line-height: $line-height-base;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_utilities.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_utilities.scss
      deleted file mode 100644
      index 8c99c71643..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_utilities.scss
      +++ /dev/null
      @@ -1,55 +0,0 @@
      -//
      -// Utility classes
      -// --------------------------------------------------
      -
      -
      -// Floats
      -// -------------------------
      -
      -.clearfix {
      -  @include clearfix;
      -}
      -.center-block {
      -  @include center-block;
      -}
      -.pull-right {
      -  float: right !important;
      -}
      -.pull-left {
      -  float: left !important;
      -}
      -
      -
      -// Toggling content
      -// -------------------------
      -
      -// Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
      -.hide {
      -  display: none !important;
      -}
      -.show {
      -  display: block !important;
      -}
      -.invisible {
      -  visibility: hidden;
      -}
      -.text-hide {
      -  @include text-hide;
      -}
      -
      -
      -// Hide from screenreaders and browsers
      -//
      -// Credit: HTML5 Boilerplate
      -
      -.hidden {
      -  display: none !important;
      -}
      -
      -
      -// For Affix plugin
      -// -------------------------
      -
      -.affix {
      -  position: fixed;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_variables.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_variables.scss
      deleted file mode 100644
      index 0703b0c9a6..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_variables.scss
      +++ /dev/null
      @@ -1,874 +0,0 @@
      -$bootstrap-sass-asset-helper: false !default;
      -//
      -// Variables
      -// --------------------------------------------------
      -
      -
      -//== Colors
      -//
      -//## Gray and brand colors for use across Bootstrap.
      -
      -$gray-base:              #000 !default;
      -$gray-darker:            lighten($gray-base, 13.5%) !default; // #222
      -$gray-dark:              lighten($gray-base, 20%) !default;   // #333
      -$gray:                   lighten($gray-base, 33.5%) !default; // #555
      -$gray-light:             lighten($gray-base, 46.7%) !default; // #777
      -$gray-lighter:           lighten($gray-base, 93.5%) !default; // #eee
      -
      -$brand-primary:         darken(#428bca, 6.5%) !default; // #337ab7
      -$brand-success:         #5cb85c !default;
      -$brand-info:            #5bc0de !default;
      -$brand-warning:         #f0ad4e !default;
      -$brand-danger:          #d9534f !default;
      -
      -
      -//== Scaffolding
      -//
      -//## Settings for some of the most global styles.
      -
      -//** Background color for `<body>`.
      -$body-bg:               #fff !default;
      -//** Global text color on `<body>`.
      -$text-color:            $gray-dark !default;
      -
      -//** Global textual link color.
      -$link-color:            $brand-primary !default;
      -//** Link hover color set via `darken()` function.
      -$link-hover-color:      darken($link-color, 15%) !default;
      -//** Link hover decoration.
      -$link-hover-decoration: underline !default;
      -
      -
      -//== Typography
      -//
      -//## Font, line-height, and color for body text, headings, and more.
      -
      -$font-family-sans-serif:  "Helvetica Neue", Helvetica, Arial, sans-serif !default;
      -$font-family-serif:       Georgia, "Times New Roman", Times, serif !default;
      -//** Default monospace fonts for `<code>`, `<kbd>`, and `<pre>`.
      -$font-family-monospace:   Menlo, Monaco, Consolas, "Courier New", monospace !default;
      -$font-family-base:        $font-family-sans-serif !default;
      -
      -$font-size-base:          14px !default;
      -$font-size-large:         ceil(($font-size-base * 1.25)) !default; // ~18px
      -$font-size-small:         ceil(($font-size-base * 0.85)) !default; // ~12px
      -
      -$font-size-h1:            floor(($font-size-base * 2.6)) !default; // ~36px
      -$font-size-h2:            floor(($font-size-base * 2.15)) !default; // ~30px
      -$font-size-h3:            ceil(($font-size-base * 1.7)) !default; // ~24px
      -$font-size-h4:            ceil(($font-size-base * 1.25)) !default; // ~18px
      -$font-size-h5:            $font-size-base !default;
      -$font-size-h6:            ceil(($font-size-base * 0.85)) !default; // ~12px
      -
      -//** Unit-less `line-height` for use in components like buttons.
      -$line-height-base:        1.428571429 !default; // 20/14
      -//** Computed "line-height" (`font-size` * `line-height`) for use with `margin`, `padding`, etc.
      -$line-height-computed:    floor(($font-size-base * $line-height-base)) !default; // ~20px
      -
      -//** By default, this inherits from the `<body>`.
      -$headings-font-family:    inherit !default;
      -$headings-font-weight:    500 !default;
      -$headings-line-height:    1.1 !default;
      -$headings-color:          inherit !default;
      -
      -
      -//== Iconography
      -//
      -//## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower.
      -
      -//** Load fonts from this directory.
      -
      -// [converter] If $bootstrap-sass-asset-helper if used, provide path relative to the assets load path.
      -// [converter] This is because some asset helpers, such as Sprockets, do not work with file-relative paths.
      -$icon-font-path: if($bootstrap-sass-asset-helper, "bootstrap/", "../fonts/bootstrap/") !default;
      -
      -//** File name for all font files.
      -$icon-font-name:          "glyphicons-halflings-regular" !default;
      -//** Element ID within SVG icon file.
      -$icon-font-svg-id:        "glyphicons_halflingsregular" !default;
      -
      -
      -//== Components
      -//
      -//## Define common padding and border radius sizes and more. Values based on 14px text and 1.428 line-height (~20px to start).
      -
      -$padding-base-vertical:     6px !default;
      -$padding-base-horizontal:   12px !default;
      -
      -$padding-large-vertical:    10px !default;
      -$padding-large-horizontal:  16px !default;
      -
      -$padding-small-vertical:    5px !default;
      -$padding-small-horizontal:  10px !default;
      -
      -$padding-xs-vertical:       1px !default;
      -$padding-xs-horizontal:     5px !default;
      -
      -$line-height-large:         1.3333333 !default; // extra decimals for Win 8.1 Chrome
      -$line-height-small:         1.5 !default;
      -
      -$border-radius-base:        4px !default;
      -$border-radius-large:       6px !default;
      -$border-radius-small:       3px !default;
      -
      -//** Global color for active items (e.g., navs or dropdowns).
      -$component-active-color:    #fff !default;
      -//** Global background color for active items (e.g., navs or dropdowns).
      -$component-active-bg:       $brand-primary !default;
      -
      -//** Width of the `border` for generating carets that indicator dropdowns.
      -$caret-width-base:          4px !default;
      -//** Carets increase slightly in size for larger components.
      -$caret-width-large:         5px !default;
      -
      -
      -//== Tables
      -//
      -//## Customizes the `.table` component with basic values, each used across all table variations.
      -
      -//** Padding for `<th>`s and `<td>`s.
      -$table-cell-padding:            8px !default;
      -//** Padding for cells in `.table-condensed`.
      -$table-condensed-cell-padding:  5px !default;
      -
      -//** Default background color used for all tables.
      -$table-bg:                      transparent !default;
      -//** Background color used for `.table-striped`.
      -$table-bg-accent:               #f9f9f9 !default;
      -//** Background color used for `.table-hover`.
      -$table-bg-hover:                #f5f5f5 !default;
      -$table-bg-active:               $table-bg-hover !default;
      -
      -//** Border color for table and cell borders.
      -$table-border-color:            #ddd !default;
      -
      -
      -//== Buttons
      -//
      -//## For each of Bootstrap's buttons, define text, background and border color.
      -
      -$btn-font-weight:                normal !default;
      -
      -$btn-default-color:              #333 !default;
      -$btn-default-bg:                 #fff !default;
      -$btn-default-border:             #ccc !default;
      -
      -$btn-primary-color:              #fff !default;
      -$btn-primary-bg:                 $brand-primary !default;
      -$btn-primary-border:             darken($btn-primary-bg, 5%) !default;
      -
      -$btn-success-color:              #fff !default;
      -$btn-success-bg:                 $brand-success !default;
      -$btn-success-border:             darken($btn-success-bg, 5%) !default;
      -
      -$btn-info-color:                 #fff !default;
      -$btn-info-bg:                    $brand-info !default;
      -$btn-info-border:                darken($btn-info-bg, 5%) !default;
      -
      -$btn-warning-color:              #fff !default;
      -$btn-warning-bg:                 $brand-warning !default;
      -$btn-warning-border:             darken($btn-warning-bg, 5%) !default;
      -
      -$btn-danger-color:               #fff !default;
      -$btn-danger-bg:                  $brand-danger !default;
      -$btn-danger-border:              darken($btn-danger-bg, 5%) !default;
      -
      -$btn-link-disabled-color:        $gray-light !default;
      -
      -// Allows for customizing button radius independently from global border radius
      -$btn-border-radius-base:         $border-radius-base !default;
      -$btn-border-radius-large:        $border-radius-large !default;
      -$btn-border-radius-small:        $border-radius-small !default;
      -
      -
      -//== Forms
      -//
      -//##
      -
      -//** `<input>` background color
      -$input-bg:                       #fff !default;
      -//** `<input disabled>` background color
      -$input-bg-disabled:              $gray-lighter !default;
      -
      -//** Text color for `<input>`s
      -$input-color:                    $gray !default;
      -//** `<input>` border color
      -$input-border:                   #ccc !default;
      -
      -// TODO: Rename `$input-border-radius` to `$input-border-radius-base` in v4
      -//** Default `.form-control` border radius
      -// This has no effect on `<select>`s in some browsers, due to the limited stylability of `<select>`s in CSS.
      -$input-border-radius:            $border-radius-base !default;
      -//** Large `.form-control` border radius
      -$input-border-radius-large:      $border-radius-large !default;
      -//** Small `.form-control` border radius
      -$input-border-radius-small:      $border-radius-small !default;
      -
      -//** Border color for inputs on focus
      -$input-border-focus:             #66afe9 !default;
      -
      -//** Placeholder text color
      -$input-color-placeholder:        #999 !default;
      -
      -//** Default `.form-control` height
      -$input-height-base:              ($line-height-computed + ($padding-base-vertical * 2) + 2) !default;
      -//** Large `.form-control` height
      -$input-height-large:             (ceil($font-size-large * $line-height-large) + ($padding-large-vertical * 2) + 2) !default;
      -//** Small `.form-control` height
      -$input-height-small:             (floor($font-size-small * $line-height-small) + ($padding-small-vertical * 2) + 2) !default;
      -
      -//** `.form-group` margin
      -$form-group-margin-bottom:       15px !default;
      -
      -$legend-color:                   $gray-dark !default;
      -$legend-border-color:            #e5e5e5 !default;
      -
      -//** Background color for textual input addons
      -$input-group-addon-bg:           $gray-lighter !default;
      -//** Border color for textual input addons
      -$input-group-addon-border-color: $input-border !default;
      -
      -//** Disabled cursor for form controls and buttons.
      -$cursor-disabled:                not-allowed !default;
      -
      -
      -//== Dropdowns
      -//
      -//## Dropdown menu container and contents.
      -
      -//** Background for the dropdown menu.
      -$dropdown-bg:                    #fff !default;
      -//** Dropdown menu `border-color`.
      -$dropdown-border:                rgba(0,0,0,.15) !default;
      -//** Dropdown menu `border-color` **for IE8**.
      -$dropdown-fallback-border:       #ccc !default;
      -//** Divider color for between dropdown items.
      -$dropdown-divider-bg:            #e5e5e5 !default;
      -
      -//** Dropdown link text color.
      -$dropdown-link-color:            $gray-dark !default;
      -//** Hover color for dropdown links.
      -$dropdown-link-hover-color:      darken($gray-dark, 5%) !default;
      -//** Hover background for dropdown links.
      -$dropdown-link-hover-bg:         #f5f5f5 !default;
      -
      -//** Active dropdown menu item text color.
      -$dropdown-link-active-color:     $component-active-color !default;
      -//** Active dropdown menu item background color.
      -$dropdown-link-active-bg:        $component-active-bg !default;
      -
      -//** Disabled dropdown menu item background color.
      -$dropdown-link-disabled-color:   $gray-light !default;
      -
      -//** Text color for headers within dropdown menus.
      -$dropdown-header-color:          $gray-light !default;
      -
      -//** Deprecated `$dropdown-caret-color` as of v3.1.0
      -$dropdown-caret-color:           #000 !default;
      -
      -
      -//-- Z-index master list
      -//
      -// Warning: Avoid customizing these values. They're used for a bird's eye view
      -// of components dependent on the z-axis and are designed to all work together.
      -//
      -// Note: These variables are not generated into the Customizer.
      -
      -$zindex-navbar:            1000 !default;
      -$zindex-dropdown:          1000 !default;
      -$zindex-popover:           1060 !default;
      -$zindex-tooltip:           1070 !default;
      -$zindex-navbar-fixed:      1030 !default;
      -$zindex-modal-background:  1040 !default;
      -$zindex-modal:             1050 !default;
      -
      -
      -//== Media queries breakpoints
      -//
      -//## Define the breakpoints at which your layout will change, adapting to different screen sizes.
      -
      -// Extra small screen / phone
      -//** Deprecated `$screen-xs` as of v3.0.1
      -$screen-xs:                  480px !default;
      -//** Deprecated `$screen-xs-min` as of v3.2.0
      -$screen-xs-min:              $screen-xs !default;
      -//** Deprecated `$screen-phone` as of v3.0.1
      -$screen-phone:               $screen-xs-min !default;
      -
      -// Small screen / tablet
      -//** Deprecated `$screen-sm` as of v3.0.1
      -$screen-sm:                  768px !default;
      -$screen-sm-min:              $screen-sm !default;
      -//** Deprecated `$screen-tablet` as of v3.0.1
      -$screen-tablet:              $screen-sm-min !default;
      -
      -// Medium screen / desktop
      -//** Deprecated `$screen-md` as of v3.0.1
      -$screen-md:                  992px !default;
      -$screen-md-min:              $screen-md !default;
      -//** Deprecated `$screen-desktop` as of v3.0.1
      -$screen-desktop:             $screen-md-min !default;
      -
      -// Large screen / wide desktop
      -//** Deprecated `$screen-lg` as of v3.0.1
      -$screen-lg:                  1200px !default;
      -$screen-lg-min:              $screen-lg !default;
      -//** Deprecated `$screen-lg-desktop` as of v3.0.1
      -$screen-lg-desktop:          $screen-lg-min !default;
      -
      -// So media queries don't overlap when required, provide a maximum
      -$screen-xs-max:              ($screen-sm-min - 1) !default;
      -$screen-sm-max:              ($screen-md-min - 1) !default;
      -$screen-md-max:              ($screen-lg-min - 1) !default;
      -
      -
      -//== Grid system
      -//
      -//## Define your custom responsive grid.
      -
      -//** Number of columns in the grid.
      -$grid-columns:              12 !default;
      -//** Padding between columns. Gets divided in half for the left and right.
      -$grid-gutter-width:         30px !default;
      -// Navbar collapse
      -//** Point at which the navbar becomes uncollapsed.
      -$grid-float-breakpoint:     $screen-sm-min !default;
      -//** Point at which the navbar begins collapsing.
      -$grid-float-breakpoint-max: ($grid-float-breakpoint - 1) !default;
      -
      -
      -//== Container sizes
      -//
      -//## Define the maximum width of `.container` for different screen sizes.
      -
      -// Small screen / tablet
      -$container-tablet:             (720px + $grid-gutter-width) !default;
      -//** For `$screen-sm-min` and up.
      -$container-sm:                 $container-tablet !default;
      -
      -// Medium screen / desktop
      -$container-desktop:            (940px + $grid-gutter-width) !default;
      -//** For `$screen-md-min` and up.
      -$container-md:                 $container-desktop !default;
      -
      -// Large screen / wide desktop
      -$container-large-desktop:      (1140px + $grid-gutter-width) !default;
      -//** For `$screen-lg-min` and up.
      -$container-lg:                 $container-large-desktop !default;
      -
      -
      -//== Navbar
      -//
      -//##
      -
      -// Basics of a navbar
      -$navbar-height:                    50px !default;
      -$navbar-margin-bottom:             $line-height-computed !default;
      -$navbar-border-radius:             $border-radius-base !default;
      -$navbar-padding-horizontal:        floor(($grid-gutter-width / 2)) !default;
      -$navbar-padding-vertical:          (($navbar-height - $line-height-computed) / 2) !default;
      -$navbar-collapse-max-height:       340px !default;
      -
      -$navbar-default-color:             #777 !default;
      -$navbar-default-bg:                #f8f8f8 !default;
      -$navbar-default-border:            darken($navbar-default-bg, 6.5%) !default;
      -
      -// Navbar links
      -$navbar-default-link-color:                #777 !default;
      -$navbar-default-link-hover-color:          #333 !default;
      -$navbar-default-link-hover-bg:             transparent !default;
      -$navbar-default-link-active-color:         #555 !default;
      -$navbar-default-link-active-bg:            darken($navbar-default-bg, 6.5%) !default;
      -$navbar-default-link-disabled-color:       #ccc !default;
      -$navbar-default-link-disabled-bg:          transparent !default;
      -
      -// Navbar brand label
      -$navbar-default-brand-color:               $navbar-default-link-color !default;
      -$navbar-default-brand-hover-color:         darken($navbar-default-brand-color, 10%) !default;
      -$navbar-default-brand-hover-bg:            transparent !default;
      -
      -// Navbar toggle
      -$navbar-default-toggle-hover-bg:           #ddd !default;
      -$navbar-default-toggle-icon-bar-bg:        #888 !default;
      -$navbar-default-toggle-border-color:       #ddd !default;
      -
      -
      -//=== Inverted navbar
      -// Reset inverted navbar basics
      -$navbar-inverse-color:                      lighten($gray-light, 15%) !default;
      -$navbar-inverse-bg:                         #222 !default;
      -$navbar-inverse-border:                     darken($navbar-inverse-bg, 10%) !default;
      -
      -// Inverted navbar links
      -$navbar-inverse-link-color:                 lighten($gray-light, 15%) !default;
      -$navbar-inverse-link-hover-color:           #fff !default;
      -$navbar-inverse-link-hover-bg:              transparent !default;
      -$navbar-inverse-link-active-color:          $navbar-inverse-link-hover-color !default;
      -$navbar-inverse-link-active-bg:             darken($navbar-inverse-bg, 10%) !default;
      -$navbar-inverse-link-disabled-color:        #444 !default;
      -$navbar-inverse-link-disabled-bg:           transparent !default;
      -
      -// Inverted navbar brand label
      -$navbar-inverse-brand-color:                $navbar-inverse-link-color !default;
      -$navbar-inverse-brand-hover-color:          #fff !default;
      -$navbar-inverse-brand-hover-bg:             transparent !default;
      -
      -// Inverted navbar toggle
      -$navbar-inverse-toggle-hover-bg:            #333 !default;
      -$navbar-inverse-toggle-icon-bar-bg:         #fff !default;
      -$navbar-inverse-toggle-border-color:        #333 !default;
      -
      -
      -//== Navs
      -//
      -//##
      -
      -//=== Shared nav styles
      -$nav-link-padding:                          10px 15px !default;
      -$nav-link-hover-bg:                         $gray-lighter !default;
      -
      -$nav-disabled-link-color:                   $gray-light !default;
      -$nav-disabled-link-hover-color:             $gray-light !default;
      -
      -//== Tabs
      -$nav-tabs-border-color:                     #ddd !default;
      -
      -$nav-tabs-link-hover-border-color:          $gray-lighter !default;
      -
      -$nav-tabs-active-link-hover-bg:             $body-bg !default;
      -$nav-tabs-active-link-hover-color:          $gray !default;
      -$nav-tabs-active-link-hover-border-color:   #ddd !default;
      -
      -$nav-tabs-justified-link-border-color:            #ddd !default;
      -$nav-tabs-justified-active-link-border-color:     $body-bg !default;
      -
      -//== Pills
      -$nav-pills-border-radius:                   $border-radius-base !default;
      -$nav-pills-active-link-hover-bg:            $component-active-bg !default;
      -$nav-pills-active-link-hover-color:         $component-active-color !default;
      -
      -
      -//== Pagination
      -//
      -//##
      -
      -$pagination-color:                     $link-color !default;
      -$pagination-bg:                        #fff !default;
      -$pagination-border:                    #ddd !default;
      -
      -$pagination-hover-color:               $link-hover-color !default;
      -$pagination-hover-bg:                  $gray-lighter !default;
      -$pagination-hover-border:              #ddd !default;
      -
      -$pagination-active-color:              #fff !default;
      -$pagination-active-bg:                 $brand-primary !default;
      -$pagination-active-border:             $brand-primary !default;
      -
      -$pagination-disabled-color:            $gray-light !default;
      -$pagination-disabled-bg:               #fff !default;
      -$pagination-disabled-border:           #ddd !default;
      -
      -
      -//== Pager
      -//
      -//##
      -
      -$pager-bg:                             $pagination-bg !default;
      -$pager-border:                         $pagination-border !default;
      -$pager-border-radius:                  15px !default;
      -
      -$pager-hover-bg:                       $pagination-hover-bg !default;
      -
      -$pager-active-bg:                      $pagination-active-bg !default;
      -$pager-active-color:                   $pagination-active-color !default;
      -
      -$pager-disabled-color:                 $pagination-disabled-color !default;
      -
      -
      -//== Jumbotron
      -//
      -//##
      -
      -$jumbotron-padding:              30px !default;
      -$jumbotron-color:                inherit !default;
      -$jumbotron-bg:                   $gray-lighter !default;
      -$jumbotron-heading-color:        inherit !default;
      -$jumbotron-font-size:            ceil(($font-size-base * 1.5)) !default;
      -$jumbotron-heading-font-size:    ceil(($font-size-base * 4.5)) !default;
      -
      -
      -//== Form states and alerts
      -//
      -//## Define colors for form feedback states and, by default, alerts.
      -
      -$state-success-text:             #3c763d !default;
      -$state-success-bg:               #dff0d8 !default;
      -$state-success-border:           darken(adjust-hue($state-success-bg, -10), 5%) !default;
      -
      -$state-info-text:                #31708f !default;
      -$state-info-bg:                  #d9edf7 !default;
      -$state-info-border:              darken(adjust-hue($state-info-bg, -10), 7%) !default;
      -
      -$state-warning-text:             #8a6d3b !default;
      -$state-warning-bg:               #fcf8e3 !default;
      -$state-warning-border:           darken(adjust-hue($state-warning-bg, -10), 5%) !default;
      -
      -$state-danger-text:              #a94442 !default;
      -$state-danger-bg:                #f2dede !default;
      -$state-danger-border:            darken(adjust-hue($state-danger-bg, -10), 5%) !default;
      -
      -
      -//== Tooltips
      -//
      -//##
      -
      -//** Tooltip max width
      -$tooltip-max-width:           200px !default;
      -//** Tooltip text color
      -$tooltip-color:               #fff !default;
      -//** Tooltip background color
      -$tooltip-bg:                  #000 !default;
      -$tooltip-opacity:             .9 !default;
      -
      -//** Tooltip arrow width
      -$tooltip-arrow-width:         5px !default;
      -//** Tooltip arrow color
      -$tooltip-arrow-color:         $tooltip-bg !default;
      -
      -
      -//== Popovers
      -//
      -//##
      -
      -//** Popover body background color
      -$popover-bg:                          #fff !default;
      -//** Popover maximum width
      -$popover-max-width:                   276px !default;
      -//** Popover border color
      -$popover-border-color:                rgba(0,0,0,.2) !default;
      -//** Popover fallback border color
      -$popover-fallback-border-color:       #ccc !default;
      -
      -//** Popover title background color
      -$popover-title-bg:                    darken($popover-bg, 3%) !default;
      -
      -//** Popover arrow width
      -$popover-arrow-width:                 10px !default;
      -//** Popover arrow color
      -$popover-arrow-color:                 $popover-bg !default;
      -
      -//** Popover outer arrow width
      -$popover-arrow-outer-width:           ($popover-arrow-width + 1) !default;
      -//** Popover outer arrow color
      -$popover-arrow-outer-color:           fade_in($popover-border-color, 0.05) !default;
      -//** Popover outer arrow fallback color
      -$popover-arrow-outer-fallback-color:  darken($popover-fallback-border-color, 20%) !default;
      -
      -
      -//== Labels
      -//
      -//##
      -
      -//** Default label background color
      -$label-default-bg:            $gray-light !default;
      -//** Primary label background color
      -$label-primary-bg:            $brand-primary !default;
      -//** Success label background color
      -$label-success-bg:            $brand-success !default;
      -//** Info label background color
      -$label-info-bg:               $brand-info !default;
      -//** Warning label background color
      -$label-warning-bg:            $brand-warning !default;
      -//** Danger label background color
      -$label-danger-bg:             $brand-danger !default;
      -
      -//** Default label text color
      -$label-color:                 #fff !default;
      -//** Default text color of a linked label
      -$label-link-hover-color:      #fff !default;
      -
      -
      -//== Modals
      -//
      -//##
      -
      -//** Padding applied to the modal body
      -$modal-inner-padding:         15px !default;
      -
      -//** Padding applied to the modal title
      -$modal-title-padding:         15px !default;
      -//** Modal title line-height
      -$modal-title-line-height:     $line-height-base !default;
      -
      -//** Background color of modal content area
      -$modal-content-bg:                             #fff !default;
      -//** Modal content border color
      -$modal-content-border-color:                   rgba(0,0,0,.2) !default;
      -//** Modal content border color **for IE8**
      -$modal-content-fallback-border-color:          #999 !default;
      -
      -//** Modal backdrop background color
      -$modal-backdrop-bg:           #000 !default;
      -//** Modal backdrop opacity
      -$modal-backdrop-opacity:      .5 !default;
      -//** Modal header border color
      -$modal-header-border-color:   #e5e5e5 !default;
      -//** Modal footer border color
      -$modal-footer-border-color:   $modal-header-border-color !default;
      -
      -$modal-lg:                    900px !default;
      -$modal-md:                    600px !default;
      -$modal-sm:                    300px !default;
      -
      -
      -//== Alerts
      -//
      -//## Define alert colors, border radius, and padding.
      -
      -$alert-padding:               15px !default;
      -$alert-border-radius:         $border-radius-base !default;
      -$alert-link-font-weight:      bold !default;
      -
      -$alert-success-bg:            $state-success-bg !default;
      -$alert-success-text:          $state-success-text !default;
      -$alert-success-border:        $state-success-border !default;
      -
      -$alert-info-bg:               $state-info-bg !default;
      -$alert-info-text:             $state-info-text !default;
      -$alert-info-border:           $state-info-border !default;
      -
      -$alert-warning-bg:            $state-warning-bg !default;
      -$alert-warning-text:          $state-warning-text !default;
      -$alert-warning-border:        $state-warning-border !default;
      -
      -$alert-danger-bg:             $state-danger-bg !default;
      -$alert-danger-text:           $state-danger-text !default;
      -$alert-danger-border:         $state-danger-border !default;
      -
      -
      -//== Progress bars
      -//
      -//##
      -
      -//** Background color of the whole progress component
      -$progress-bg:                 #f5f5f5 !default;
      -//** Progress bar text color
      -$progress-bar-color:          #fff !default;
      -//** Variable for setting rounded corners on progress bar.
      -$progress-border-radius:      $border-radius-base !default;
      -
      -//** Default progress bar color
      -$progress-bar-bg:             $brand-primary !default;
      -//** Success progress bar color
      -$progress-bar-success-bg:     $brand-success !default;
      -//** Warning progress bar color
      -$progress-bar-warning-bg:     $brand-warning !default;
      -//** Danger progress bar color
      -$progress-bar-danger-bg:      $brand-danger !default;
      -//** Info progress bar color
      -$progress-bar-info-bg:        $brand-info !default;
      -
      -
      -//== List group
      -//
      -//##
      -
      -//** Background color on `.list-group-item`
      -$list-group-bg:                 #fff !default;
      -//** `.list-group-item` border color
      -$list-group-border:             #ddd !default;
      -//** List group border radius
      -$list-group-border-radius:      $border-radius-base !default;
      -
      -//** Background color of single list items on hover
      -$list-group-hover-bg:           #f5f5f5 !default;
      -//** Text color of active list items
      -$list-group-active-color:       $component-active-color !default;
      -//** Background color of active list items
      -$list-group-active-bg:          $component-active-bg !default;
      -//** Border color of active list elements
      -$list-group-active-border:      $list-group-active-bg !default;
      -//** Text color for content within active list items
      -$list-group-active-text-color:  lighten($list-group-active-bg, 40%) !default;
      -
      -//** Text color of disabled list items
      -$list-group-disabled-color:      $gray-light !default;
      -//** Background color of disabled list items
      -$list-group-disabled-bg:         $gray-lighter !default;
      -//** Text color for content within disabled list items
      -$list-group-disabled-text-color: $list-group-disabled-color !default;
      -
      -$list-group-link-color:         #555 !default;
      -$list-group-link-hover-color:   $list-group-link-color !default;
      -$list-group-link-heading-color: #333 !default;
      -
      -
      -//== Panels
      -//
      -//##
      -
      -$panel-bg:                    #fff !default;
      -$panel-body-padding:          15px !default;
      -$panel-heading-padding:       10px 15px !default;
      -$panel-footer-padding:        $panel-heading-padding !default;
      -$panel-border-radius:         $border-radius-base !default;
      -
      -//** Border color for elements within panels
      -$panel-inner-border:          #ddd !default;
      -$panel-footer-bg:             #f5f5f5 !default;
      -
      -$panel-default-text:          $gray-dark !default;
      -$panel-default-border:        #ddd !default;
      -$panel-default-heading-bg:    #f5f5f5 !default;
      -
      -$panel-primary-text:          #fff !default;
      -$panel-primary-border:        $brand-primary !default;
      -$panel-primary-heading-bg:    $brand-primary !default;
      -
      -$panel-success-text:          $state-success-text !default;
      -$panel-success-border:        $state-success-border !default;
      -$panel-success-heading-bg:    $state-success-bg !default;
      -
      -$panel-info-text:             $state-info-text !default;
      -$panel-info-border:           $state-info-border !default;
      -$panel-info-heading-bg:       $state-info-bg !default;
      -
      -$panel-warning-text:          $state-warning-text !default;
      -$panel-warning-border:        $state-warning-border !default;
      -$panel-warning-heading-bg:    $state-warning-bg !default;
      -
      -$panel-danger-text:           $state-danger-text !default;
      -$panel-danger-border:         $state-danger-border !default;
      -$panel-danger-heading-bg:     $state-danger-bg !default;
      -
      -
      -//== Thumbnails
      -//
      -//##
      -
      -//** Padding around the thumbnail image
      -$thumbnail-padding:           4px !default;
      -//** Thumbnail background color
      -$thumbnail-bg:                $body-bg !default;
      -//** Thumbnail border color
      -$thumbnail-border:            #ddd !default;
      -//** Thumbnail border radius
      -$thumbnail-border-radius:     $border-radius-base !default;
      -
      -//** Custom text color for thumbnail captions
      -$thumbnail-caption-color:     $text-color !default;
      -//** Padding around the thumbnail caption
      -$thumbnail-caption-padding:   9px !default;
      -
      -
      -//== Wells
      -//
      -//##
      -
      -$well-bg:                     #f5f5f5 !default;
      -$well-border:                 darken($well-bg, 7%) !default;
      -
      -
      -//== Badges
      -//
      -//##
      -
      -$badge-color:                 #fff !default;
      -//** Linked badge text color on hover
      -$badge-link-hover-color:      #fff !default;
      -$badge-bg:                    $gray-light !default;
      -
      -//** Badge text color in active nav link
      -$badge-active-color:          $link-color !default;
      -//** Badge background color in active nav link
      -$badge-active-bg:             #fff !default;
      -
      -$badge-font-weight:           bold !default;
      -$badge-line-height:           1 !default;
      -$badge-border-radius:         10px !default;
      -
      -
      -//== Breadcrumbs
      -//
      -//##
      -
      -$breadcrumb-padding-vertical:   8px !default;
      -$breadcrumb-padding-horizontal: 15px !default;
      -//** Breadcrumb background color
      -$breadcrumb-bg:                 #f5f5f5 !default;
      -//** Breadcrumb text color
      -$breadcrumb-color:              #ccc !default;
      -//** Text color of current page in the breadcrumb
      -$breadcrumb-active-color:       $gray-light !default;
      -//** Textual separator for between breadcrumb elements
      -$breadcrumb-separator:          "/" !default;
      -
      -
      -//== Carousel
      -//
      -//##
      -
      -$carousel-text-shadow:                        0 1px 2px rgba(0,0,0,.6) !default;
      -
      -$carousel-control-color:                      #fff !default;
      -$carousel-control-width:                      15% !default;
      -$carousel-control-opacity:                    .5 !default;
      -$carousel-control-font-size:                  20px !default;
      -
      -$carousel-indicator-active-bg:                #fff !default;
      -$carousel-indicator-border-color:             #fff !default;
      -
      -$carousel-caption-color:                      #fff !default;
      -
      -
      -//== Close
      -//
      -//##
      -
      -$close-font-weight:           bold !default;
      -$close-color:                 #000 !default;
      -$close-text-shadow:           0 1px 0 #fff !default;
      -
      -
      -//== Code
      -//
      -//##
      -
      -$code-color:                  #c7254e !default;
      -$code-bg:                     #f9f2f4 !default;
      -
      -$kbd-color:                   #fff !default;
      -$kbd-bg:                      #333 !default;
      -
      -$pre-bg:                      #f5f5f5 !default;
      -$pre-color:                   $gray-dark !default;
      -$pre-border-color:            #ccc !default;
      -$pre-scrollable-max-height:   340px !default;
      -
      -
      -//== Type
      -//
      -//##
      -
      -//** Horizontal offset for forms and lists.
      -$component-offset-horizontal: 180px !default;
      -//** Text muted color
      -$text-muted:                  $gray-light !default;
      -//** Abbreviations and acronyms border color
      -$abbr-border-color:           $gray-light !default;
      -//** Headings small color
      -$headings-small-color:        $gray-light !default;
      -//** Blockquote small color
      -$blockquote-small-color:      $gray-light !default;
      -//** Blockquote font size
      -$blockquote-font-size:        ($font-size-base * 1.25) !default;
      -//** Blockquote border color
      -$blockquote-border-color:     $gray-lighter !default;
      -//** Page header border color
      -$page-header-border-color:    $gray-lighter !default;
      -//** Width of horizontal description list titles
      -$dl-horizontal-offset:        $component-offset-horizontal !default;
      -//** Point at which .dl-horizontal becomes horizontal
      -$dl-horizontal-breakpoint:    $grid-float-breakpoint !default;
      -//** Horizontal line color.
      -$hr-border:                   $gray-lighter !default;
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/_wells.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/_wells.scss
      deleted file mode 100644
      index b8657118a6..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/_wells.scss
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -//
      -// Wells
      -// --------------------------------------------------
      -
      -
      -// Base class
      -.well {
      -  min-height: 20px;
      -  padding: 19px;
      -  margin-bottom: 20px;
      -  background-color: $well-bg;
      -  border: 1px solid $well-border;
      -  border-radius: $border-radius-base;
      -  @include box-shadow(inset 0 1px 1px rgba(0,0,0,.05));
      -  blockquote {
      -    border-color: #ddd;
      -    border-color: rgba(0,0,0,.15);
      -  }
      -}
      -
      -// Sizes
      -.well-lg {
      -  padding: 24px;
      -  border-radius: $border-radius-large;
      -}
      -.well-sm {
      -  padding: 9px;
      -  border-radius: $border-radius-small;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_alerts.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_alerts.scss
      deleted file mode 100644
      index 3faf0b5a50..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_alerts.scss
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -// Alerts
      -
      -@mixin alert-variant($background, $border, $text-color) {
      -  background-color: $background;
      -  border-color: $border;
      -  color: $text-color;
      -
      -  hr {
      -    border-top-color: darken($border, 5%);
      -  }
      -  .alert-link {
      -    color: darken($text-color, 10%);
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_background-variant.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_background-variant.scss
      deleted file mode 100644
      index 4c7769e13a..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_background-variant.scss
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -// Contextual backgrounds
      -
      -// [converter] $parent hack
      -@mixin bg-variant($parent, $color) {
      -  #{$parent} {
      -    background-color: $color;
      -  }
      -  a#{$parent}:hover,
      -  a#{$parent}:focus {
      -    background-color: darken($color, 10%);
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_border-radius.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_border-radius.scss
      deleted file mode 100644
      index ce19499875..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_border-radius.scss
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -// Single side border-radius
      -
      -@mixin border-top-radius($radius) {
      -  border-top-right-radius: $radius;
      -   border-top-left-radius: $radius;
      -}
      -@mixin border-right-radius($radius) {
      -  border-bottom-right-radius: $radius;
      -     border-top-right-radius: $radius;
      -}
      -@mixin border-bottom-radius($radius) {
      -  border-bottom-right-radius: $radius;
      -   border-bottom-left-radius: $radius;
      -}
      -@mixin border-left-radius($radius) {
      -  border-bottom-left-radius: $radius;
      -     border-top-left-radius: $radius;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_buttons.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_buttons.scss
      deleted file mode 100644
      index b93f84b2cb..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_buttons.scss
      +++ /dev/null
      @@ -1,65 +0,0 @@
      -// Button variants
      -//
      -// Easily pump out default styles, as well as :hover, :focus, :active,
      -// and disabled options for all buttons
      -
      -@mixin button-variant($color, $background, $border) {
      -  color: $color;
      -  background-color: $background;
      -  border-color: $border;
      -
      -  &:focus,
      -  &.focus {
      -    color: $color;
      -    background-color: darken($background, 10%);
      -        border-color: darken($border, 25%);
      -  }
      -  &:hover {
      -    color: $color;
      -    background-color: darken($background, 10%);
      -        border-color: darken($border, 12%);
      -  }
      -  &:active,
      -  &.active,
      -  .open > &.dropdown-toggle {
      -    color: $color;
      -    background-color: darken($background, 10%);
      -        border-color: darken($border, 12%);
      -
      -    &:hover,
      -    &:focus,
      -    &.focus {
      -      color: $color;
      -      background-color: darken($background, 17%);
      -          border-color: darken($border, 25%);
      -    }
      -  }
      -  &:active,
      -  &.active,
      -  .open > &.dropdown-toggle {
      -    background-image: none;
      -  }
      -  &.disabled,
      -  &[disabled],
      -  fieldset[disabled] & {
      -    &:hover,
      -    &:focus,
      -    &.focus {
      -      background-color: $background;
      -          border-color: $border;
      -    }
      -  }
      -
      -  .badge {
      -    color: $background;
      -    background-color: $color;
      -  }
      -}
      -
      -// Button sizes
      -@mixin button-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
      -  padding: $padding-vertical $padding-horizontal;
      -  font-size: $font-size;
      -  line-height: $line-height;
      -  border-radius: $border-radius;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_center-block.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_center-block.scss
      deleted file mode 100644
      index e06fb5e276..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_center-block.scss
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -// Center-align a block level element
      -
      -@mixin center-block() {
      -  display: block;
      -  margin-left: auto;
      -  margin-right: auto;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_clearfix.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_clearfix.scss
      deleted file mode 100644
      index dc3e2ab426..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_clearfix.scss
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -// Clearfix
      -//
      -// For modern browsers
      -// 1. The space content is one way to avoid an Opera bug when the
      -//    contenteditable attribute is included anywhere else in the document.
      -//    Otherwise it causes space to appear at the top and bottom of elements
      -//    that are clearfixed.
      -// 2. The use of `table` rather than `block` is only necessary if using
      -//    `:before` to contain the top-margins of child elements.
      -//
      -// Source: http://nicolasgallagher.com/micro-clearfix-hack/
      -
      -@mixin clearfix() {
      -  &:before,
      -  &:after {
      -    content: " "; // 1
      -    display: table; // 2
      -  }
      -  &:after {
      -    clear: both;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_forms.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_forms.scss
      deleted file mode 100644
      index 277aa5f8e1..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_forms.scss
      +++ /dev/null
      @@ -1,88 +0,0 @@
      -// Form validation states
      -//
      -// Used in forms.less to generate the form validation CSS for warnings, errors,
      -// and successes.
      -
      -@mixin form-control-validation($text-color: #555, $border-color: #ccc, $background-color: #f5f5f5) {
      -  // Color the label and help text
      -  .help-block,
      -  .control-label,
      -  .radio,
      -  .checkbox,
      -  .radio-inline,
      -  .checkbox-inline,
      -  &.radio label,
      -  &.checkbox label,
      -  &.radio-inline label,
      -  &.checkbox-inline label  {
      -    color: $text-color;
      -  }
      -  // Set the border and box shadow on specific inputs to match
      -  .form-control {
      -    border-color: $border-color;
      -    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075)); // Redeclare so transitions work
      -    &:focus {
      -      border-color: darken($border-color, 10%);
      -      $shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 6px lighten($border-color, 20%);
      -      @include box-shadow($shadow);
      -    }
      -  }
      -  // Set validation states also for addons
      -  .input-group-addon {
      -    color: $text-color;
      -    border-color: $border-color;
      -    background-color: $background-color;
      -  }
      -  // Optional feedback icon
      -  .form-control-feedback {
      -    color: $text-color;
      -  }
      -}
      -
      -
      -// Form control focus state
      -//
      -// Generate a customized focus state and for any input with the specified color,
      -// which defaults to the `$input-border-focus` variable.
      -//
      -// We highly encourage you to not customize the default value, but instead use
      -// this to tweak colors on an as-needed basis. This aesthetic change is based on
      -// WebKit's default styles, but applicable to a wider range of browsers. Its
      -// usability and accessibility should be taken into account with any change.
      -//
      -// Example usage: change the default blue border and shadow to white for better
      -// contrast against a dark gray background.
      -@mixin form-control-focus($color: $input-border-focus) {
      -  $color-rgba: rgba(red($color), green($color), blue($color), .6);
      -  &:focus {
      -    border-color: $color;
      -    outline: 0;
      -    @include box-shadow(inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px $color-rgba);
      -  }
      -}
      -
      -// Form control sizing
      -//
      -// Relative text size, padding, and border-radii changes for form controls. For
      -// horizontal sizing, wrap controls in the predefined grid classes. `<select>`
      -// element gets special love because it's special, and that's a fact!
      -// [converter] $parent hack
      -@mixin input-size($parent, $input-height, $padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
      -  #{$parent} {
      -    height: $input-height;
      -    padding: $padding-vertical $padding-horizontal;
      -    font-size: $font-size;
      -    line-height: $line-height;
      -    border-radius: $border-radius;
      -  }
      -
      -  select#{$parent} {
      -    height: $input-height;
      -    line-height: $input-height;
      -  }
      -
      -  textarea#{$parent},
      -  select[multiple]#{$parent} {
      -    height: auto;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_gradients.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_gradients.scss
      deleted file mode 100644
      index a8939f5ae6..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_gradients.scss
      +++ /dev/null
      @@ -1,58 +0,0 @@
      -// Gradients
      -
      -
      -
      -// Horizontal gradient, from left to right
      -//
      -// Creates two color stops, start and end, by specifying a color and position for each color stop.
      -// Color stops are not available in IE9 and below.
      -@mixin gradient-horizontal($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
      -  background-image: -webkit-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Safari 5.1-6, Chrome 10+
      -  background-image: -o-linear-gradient(left, $start-color $start-percent, $end-color $end-percent); // Opera 12
      -  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
      -  background-repeat: repeat-x;
      -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down
      -}
      -
      -// Vertical gradient, from top to bottom
      -//
      -// Creates two color stops, start and end, by specifying a color and position for each color stop.
      -// Color stops are not available in IE9 and below.
      -@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
      -  background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Safari 5.1-6, Chrome 10+
      -  background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Opera 12
      -  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
      -  background-repeat: repeat-x;
      -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
      -}
      -
      -@mixin gradient-directional($start-color: #555, $end-color: #333, $deg: 45deg) {
      -  background-repeat: repeat-x;
      -  background-image: -webkit-linear-gradient($deg, $start-color, $end-color); // Safari 5.1-6, Chrome 10+
      -  background-image: -o-linear-gradient($deg, $start-color, $end-color); // Opera 12
      -  background-image: linear-gradient($deg, $start-color, $end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
      -}
      -@mixin gradient-horizontal-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
      -  background-image: -webkit-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
      -  background-image: -o-linear-gradient(left, $start-color, $mid-color $color-stop, $end-color);
      -  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);
      -  background-repeat: no-repeat;
      -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=1); // IE9 and down, gets no color-stop at all for proper fallback
      -}
      -@mixin gradient-vertical-three-colors($start-color: #00b3ee, $mid-color: #7a43b6, $color-stop: 50%, $end-color: #c3325f) {
      -  background-image: -webkit-linear-gradient($start-color, $mid-color $color-stop, $end-color);
      -  background-image: -o-linear-gradient($start-color, $mid-color $color-stop, $end-color);
      -  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);
      -  background-repeat: no-repeat;
      -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down, gets no color-stop at all for proper fallback
      -}
      -@mixin gradient-radial($inner-color: #555, $outer-color: #333) {
      -  background-image: -webkit-radial-gradient(circle, $inner-color, $outer-color);
      -  background-image: radial-gradient(circle, $inner-color, $outer-color);
      -  background-repeat: no-repeat;
      -}
      -@mixin gradient-striped($color: rgba(255,255,255,.15), $angle: 45deg) {
      -  background-image: -webkit-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
      -  background-image: -o-linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
      -  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid-framework.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid-framework.scss
      deleted file mode 100644
      index 16d038c04f..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid-framework.scss
      +++ /dev/null
      @@ -1,81 +0,0 @@
      -// Framework grid generation
      -//
      -// Used only by Bootstrap to generate the correct number of grid classes given
      -// any value of `$grid-columns`.
      -
      -// [converter] This is defined recursively in LESS, but Sass supports real loops
      -@mixin make-grid-columns($i: 1, $list: ".col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}") {
      -  @for $i from (1 + 1) through $grid-columns {
      -    $list: "#{$list}, .col-xs-#{$i}, .col-sm-#{$i}, .col-md-#{$i}, .col-lg-#{$i}";
      -  }
      -  #{$list} {
      -    position: relative;
      -    // Prevent columns from collapsing when empty
      -    min-height: 1px;
      -    // Inner gutter via padding
      -    padding-left:  ceil(($grid-gutter-width / 2));
      -    padding-right: floor(($grid-gutter-width / 2));
      -  }
      -}
      -
      -
      -// [converter] This is defined recursively in LESS, but Sass supports real loops
      -@mixin float-grid-columns($class, $i: 1, $list: ".col-#{$class}-#{$i}") {
      -  @for $i from (1 + 1) through $grid-columns {
      -    $list: "#{$list}, .col-#{$class}-#{$i}";
      -  }
      -  #{$list} {
      -    float: left;
      -  }
      -}
      -
      -
      -@mixin calc-grid-column($index, $class, $type) {
      -  @if ($type == width) and ($index > 0) {
      -    .col-#{$class}-#{$index} {
      -      width: percentage(($index / $grid-columns));
      -    }
      -  }
      -  @if ($type == push) and ($index > 0) {
      -    .col-#{$class}-push-#{$index} {
      -      left: percentage(($index / $grid-columns));
      -    }
      -  }
      -  @if ($type == push) and ($index == 0) {
      -    .col-#{$class}-push-0 {
      -      left: auto;
      -    }
      -  }
      -  @if ($type == pull) and ($index > 0) {
      -    .col-#{$class}-pull-#{$index} {
      -      right: percentage(($index / $grid-columns));
      -    }
      -  }
      -  @if ($type == pull) and ($index == 0) {
      -    .col-#{$class}-pull-0 {
      -      right: auto;
      -    }
      -  }
      -  @if ($type == offset) {
      -    .col-#{$class}-offset-#{$index} {
      -      margin-left: percentage(($index / $grid-columns));
      -    }
      -  }
      -}
      -
      -// [converter] This is defined recursively in LESS, but Sass supports real loops
      -@mixin loop-grid-columns($columns, $class, $type) {
      -  @for $i from 0 through $columns {
      -    @include calc-grid-column($i, $class, $type);
      -  }
      -}
      -
      -
      -// Create grid for specific class
      -@mixin make-grid($class) {
      -  @include float-grid-columns($class);
      -  @include loop-grid-columns($grid-columns, $class, width);
      -  @include loop-grid-columns($grid-columns, $class, pull);
      -  @include loop-grid-columns($grid-columns, $class, push);
      -  @include loop-grid-columns($grid-columns, $class, offset);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid.scss
      deleted file mode 100644
      index 59551dac1e..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_grid.scss
      +++ /dev/null
      @@ -1,122 +0,0 @@
      -// Grid system
      -//
      -// Generate semantic grid columns with these mixins.
      -
      -// Centered container element
      -@mixin container-fixed($gutter: $grid-gutter-width) {
      -  margin-right: auto;
      -  margin-left: auto;
      -  padding-left:  floor(($gutter / 2));
      -  padding-right: ceil(($gutter / 2));
      -  @include clearfix;
      -}
      -
      -// Creates a wrapper for a series of columns
      -@mixin make-row($gutter: $grid-gutter-width) {
      -  margin-left:  ceil(($gutter / -2));
      -  margin-right: floor(($gutter / -2));
      -  @include clearfix;
      -}
      -
      -// Generate the extra small columns
      -@mixin make-xs-column($columns, $gutter: $grid-gutter-width) {
      -  position: relative;
      -  float: left;
      -  width: percentage(($columns / $grid-columns));
      -  min-height: 1px;
      -  padding-left:  ($gutter / 2);
      -  padding-right: ($gutter / 2);
      -}
      -@mixin make-xs-column-offset($columns) {
      -  margin-left: percentage(($columns / $grid-columns));
      -}
      -@mixin make-xs-column-push($columns) {
      -  left: percentage(($columns / $grid-columns));
      -}
      -@mixin make-xs-column-pull($columns) {
      -  right: percentage(($columns / $grid-columns));
      -}
      -
      -// Generate the small columns
      -@mixin make-sm-column($columns, $gutter: $grid-gutter-width) {
      -  position: relative;
      -  min-height: 1px;
      -  padding-left:  ($gutter / 2);
      -  padding-right: ($gutter / 2);
      -
      -  @media (min-width: $screen-sm-min) {
      -    float: left;
      -    width: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-sm-column-offset($columns) {
      -  @media (min-width: $screen-sm-min) {
      -    margin-left: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-sm-column-push($columns) {
      -  @media (min-width: $screen-sm-min) {
      -    left: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-sm-column-pull($columns) {
      -  @media (min-width: $screen-sm-min) {
      -    right: percentage(($columns / $grid-columns));
      -  }
      -}
      -
      -// Generate the medium columns
      -@mixin make-md-column($columns, $gutter: $grid-gutter-width) {
      -  position: relative;
      -  min-height: 1px;
      -  padding-left:  ($gutter / 2);
      -  padding-right: ($gutter / 2);
      -
      -  @media (min-width: $screen-md-min) {
      -    float: left;
      -    width: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-md-column-offset($columns) {
      -  @media (min-width: $screen-md-min) {
      -    margin-left: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-md-column-push($columns) {
      -  @media (min-width: $screen-md-min) {
      -    left: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-md-column-pull($columns) {
      -  @media (min-width: $screen-md-min) {
      -    right: percentage(($columns / $grid-columns));
      -  }
      -}
      -
      -// Generate the large columns
      -@mixin make-lg-column($columns, $gutter: $grid-gutter-width) {
      -  position: relative;
      -  min-height: 1px;
      -  padding-left:  ($gutter / 2);
      -  padding-right: ($gutter / 2);
      -
      -  @media (min-width: $screen-lg-min) {
      -    float: left;
      -    width: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-lg-column-offset($columns) {
      -  @media (min-width: $screen-lg-min) {
      -    margin-left: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-lg-column-push($columns) {
      -  @media (min-width: $screen-lg-min) {
      -    left: percentage(($columns / $grid-columns));
      -  }
      -}
      -@mixin make-lg-column-pull($columns) {
      -  @media (min-width: $screen-lg-min) {
      -    right: percentage(($columns / $grid-columns));
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_hide-text.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_hide-text.scss
      deleted file mode 100644
      index 1767e029c5..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_hide-text.scss
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -// CSS image replacement
      -//
      -// Heads up! v3 launched with only `.hide-text()`, but per our pattern for
      -// mixins being reused as classes with the same name, this doesn't hold up. As
      -// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
      -//
      -// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
      -
      -// Deprecated as of v3.0.1 (has been removed in v4)
      -@mixin hide-text() {
      -  font: 0/0 a;
      -  color: transparent;
      -  text-shadow: none;
      -  background-color: transparent;
      -  border: 0;
      -}
      -
      -// New mixin to use as of v3.0.1
      -@mixin text-hide() {
      -  @include hide-text;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_image.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_image.scss
      deleted file mode 100644
      index c8dcf5e9cd..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_image.scss
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -// Image Mixins
      -// - Responsive image
      -// - Retina image
      -
      -
      -// Responsive image
      -//
      -// Keep images from scaling beyond the width of their parents.
      -@mixin img-responsive($display: block) {
      -  display: $display;
      -  max-width: 100%; // Part 1: Set a maximum relative to the parent
      -  height: auto; // Part 2: Scale the height according to the width, otherwise you get stretching
      -}
      -
      -
      -// Retina image
      -//
      -// Short retina mixin for setting background-image and -size. Note that the
      -// spelling of `min--moz-device-pixel-ratio` is intentional.
      -@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {
      -  background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-1x}"), "#{$file-1x}"));
      -
      -  @media
      -  only screen and (-webkit-min-device-pixel-ratio: 2),
      -  only screen and (   min--moz-device-pixel-ratio: 2),
      -  only screen and (     -o-min-device-pixel-ratio: 2/1),
      -  only screen and (        min-device-pixel-ratio: 2),
      -  only screen and (                min-resolution: 192dpi),
      -  only screen and (                min-resolution: 2dppx) {
      -    background-image: url(if($bootstrap-sass-asset-helper, twbs-image-path("#{$file-2x}"), "#{$file-2x}"));
      -    background-size: $width-1x $height-1x;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_labels.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_labels.scss
      deleted file mode 100644
      index eda6dfd29e..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_labels.scss
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -// Labels
      -
      -@mixin label-variant($color) {
      -  background-color: $color;
      -
      -  &[href] {
      -    &:hover,
      -    &:focus {
      -      background-color: darken($color, 10%);
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_list-group.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_list-group.scss
      deleted file mode 100644
      index c478eeb31e..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_list-group.scss
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -// List Groups
      -
      -@mixin list-group-item-variant($state, $background, $color) {
      -  .list-group-item-#{$state} {
      -    color: $color;
      -    background-color: $background;
      -
      -    // [converter] extracted a&, button& to a.list-group-item-#{$state}, button.list-group-item-#{$state}
      -  }
      -
      -  a.list-group-item-#{$state},
      -  button.list-group-item-#{$state} {
      -    color: $color;
      -
      -    .list-group-item-heading {
      -      color: inherit;
      -    }
      -
      -    &:hover,
      -    &:focus {
      -      color: $color;
      -      background-color: darken($background, 5%);
      -    }
      -    &.active,
      -    &.active:hover,
      -    &.active:focus {
      -      color: #fff;
      -      background-color: $color;
      -      border-color: $color;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-divider.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-divider.scss
      deleted file mode 100644
      index 2e6da02a47..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-divider.scss
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -// Horizontal dividers
      -//
      -// Dividers (basically an hr) within dropdowns and nav lists
      -
      -@mixin nav-divider($color: #e5e5e5) {
      -  height: 1px;
      -  margin: (($line-height-computed / 2) - 1) 0;
      -  overflow: hidden;
      -  background-color: $color;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-vertical-align.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-vertical-align.scss
      deleted file mode 100644
      index c8fbf1a7d6..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_nav-vertical-align.scss
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -// Navbar vertical align
      -//
      -// Vertically center elements in the navbar.
      -// Example: an element has a height of 30px, so write out `.navbar-vertical-align(30px);` to calculate the appropriate top margin.
      -
      -@mixin navbar-vertical-align($element-height) {
      -  margin-top: (($navbar-height - $element-height) / 2);
      -  margin-bottom: (($navbar-height - $element-height) / 2);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_opacity.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_opacity.scss
      deleted file mode 100644
      index 88e9a576ab..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_opacity.scss
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -// Opacity
      -
      -@mixin opacity($opacity) {
      -  opacity: $opacity;
      -  // IE8 filter
      -  $opacity-ie: ($opacity * 100);
      -  filter: alpha(opacity=$opacity-ie);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_pagination.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_pagination.scss
      deleted file mode 100644
      index d4a5404fce..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_pagination.scss
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -// Pagination
      -
      -@mixin pagination-size($padding-vertical, $padding-horizontal, $font-size, $line-height, $border-radius) {
      -  > li {
      -    > a,
      -    > span {
      -      padding: $padding-vertical $padding-horizontal;
      -      font-size: $font-size;
      -      line-height: $line-height;
      -    }
      -    &:first-child {
      -      > a,
      -      > span {
      -        @include border-left-radius($border-radius);
      -      }
      -    }
      -    &:last-child {
      -      > a,
      -      > span {
      -        @include border-right-radius($border-radius);
      -      }
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_panels.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_panels.scss
      deleted file mode 100644
      index 3ff31ae51e..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_panels.scss
      +++ /dev/null
      @@ -1,24 +0,0 @@
      -// Panels
      -
      -@mixin panel-variant($border, $heading-text-color, $heading-bg-color, $heading-border) {
      -  border-color: $border;
      -
      -  & > .panel-heading {
      -    color: $heading-text-color;
      -    background-color: $heading-bg-color;
      -    border-color: $heading-border;
      -
      -    + .panel-collapse > .panel-body {
      -      border-top-color: $border;
      -    }
      -    .badge {
      -      color: $heading-bg-color;
      -      background-color: $heading-text-color;
      -    }
      -  }
      -  & > .panel-footer {
      -    + .panel-collapse > .panel-body {
      -      border-bottom-color: $border;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_progress-bar.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_progress-bar.scss
      deleted file mode 100644
      index 90a62afc2d..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_progress-bar.scss
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -// Progress bars
      -
      -@mixin progress-bar-variant($color) {
      -  background-color: $color;
      -
      -  // Deprecated parent class requirement as of v3.2.0
      -  .progress-striped & {
      -    @include gradient-striped;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-filter.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-filter.scss
      deleted file mode 100644
      index bf73051200..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-filter.scss
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -// Reset filters for IE
      -//
      -// When you need to remove a gradient background, do not forget to use this to reset
      -// the IE filter for IE9 and below.
      -
      -@mixin reset-filter() {
      -  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-text.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-text.scss
      deleted file mode 100644
      index c9c28417fa..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_reset-text.scss
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -@mixin reset-text() {
      -  font-family: $font-family-base;
      -  // We deliberately do NOT reset font-size.
      -  font-style: normal;
      -  font-weight: normal;
      -  letter-spacing: normal;
      -  line-break: auto;
      -  line-height: $line-height-base;
      -  text-align: left; // Fallback for where `start` is not supported
      -  text-align: start;
      -  text-decoration: none;
      -  text-shadow: none;
      -  text-transform: none;
      -  white-space: normal;
      -  word-break: normal;
      -  word-spacing: normal;
      -  word-wrap: normal;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_resize.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_resize.scss
      deleted file mode 100644
      index 83fa637917..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_resize.scss
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -// Resize anything
      -
      -@mixin resizable($direction) {
      -  resize: $direction; // Options: horizontal, vertical, both
      -  overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible`
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_responsive-visibility.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_responsive-visibility.scss
      deleted file mode 100644
      index cbdf777239..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_responsive-visibility.scss
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -// Responsive utilities
      -
      -//
      -// More easily include all the states for responsive-utilities.less.
      -// [converter] $parent hack
      -@mixin responsive-visibility($parent) {
      -  #{$parent} {
      -    display: block !important;
      -  }
      -  table#{$parent}  { display: table !important; }
      -  tr#{$parent}     { display: table-row !important; }
      -  th#{$parent},
      -  td#{$parent}     { display: table-cell !important; }
      -}
      -
      -// [converter] $parent hack
      -@mixin responsive-invisibility($parent) {
      -  #{$parent} {
      -    display: none !important;
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_size.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_size.scss
      deleted file mode 100644
      index abbe2463ce..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_size.scss
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -// Sizing shortcuts
      -
      -@mixin size($width, $height) {
      -  width: $width;
      -  height: $height;
      -}
      -
      -@mixin square($size) {
      -  @include size($size, $size);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_tab-focus.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_tab-focus.scss
      deleted file mode 100644
      index 7df0ae7ca1..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_tab-focus.scss
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -// WebKit-style focus
      -
      -@mixin tab-focus() {
      -  // Default
      -  outline: thin dotted;
      -  // WebKit
      -  outline: 5px auto -webkit-focus-ring-color;
      -  outline-offset: -2px;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_table-row.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_table-row.scss
      deleted file mode 100644
      index 136795081e..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_table-row.scss
      +++ /dev/null
      @@ -1,28 +0,0 @@
      -// Tables
      -
      -@mixin table-row-variant($state, $background) {
      -  // Exact selectors below required to override `.table-striped` and prevent
      -  // inheritance to nested tables.
      -  .table > thead > tr,
      -  .table > tbody > tr,
      -  .table > tfoot > tr {
      -    > td.#{$state},
      -    > th.#{$state},
      -    &.#{$state} > td,
      -    &.#{$state} > th {
      -      background-color: $background;
      -    }
      -  }
      -
      -  // Hover states for `.table-hover`
      -  // Note: this is not available for cells or rows within `thead` or `tfoot`.
      -  .table-hover > tbody > tr {
      -    > td.#{$state}:hover,
      -    > th.#{$state}:hover,
      -    &.#{$state}:hover > td,
      -    &:hover > .#{$state},
      -    &.#{$state}:hover > th {
      -      background-color: darken($background, 5%);
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-emphasis.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-emphasis.scss
      deleted file mode 100644
      index 3b446c4152..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-emphasis.scss
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -// Typography
      -
      -// [converter] $parent hack
      -@mixin text-emphasis-variant($parent, $color) {
      -  #{$parent} {
      -    color: $color;
      -  }
      -  a#{$parent}:hover,
      -  a#{$parent}:focus {
      -    color: darken($color, 10%);
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-overflow.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-overflow.scss
      deleted file mode 100644
      index 1593b25ea5..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_text-overflow.scss
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -// Text overflow
      -// Requires inline-block or block for proper styling
      -
      -@mixin text-overflow() {
      -  overflow: hidden;
      -  text-overflow: ellipsis;
      -  white-space: nowrap;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_vendor-prefixes.scss b/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_vendor-prefixes.scss
      deleted file mode 100644
      index b3d0371fa8..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/bootstrap/mixins/_vendor-prefixes.scss
      +++ /dev/null
      @@ -1,222 +0,0 @@
      -// Vendor Prefixes
      -//
      -// All vendor mixins are deprecated as of v3.2.0 due to the introduction of
      -// Autoprefixer in our Gruntfile. They have been removed in v4.
      -
      -// - Animations
      -// - Backface visibility
      -// - Box shadow
      -// - Box sizing
      -// - Content columns
      -// - Hyphens
      -// - Placeholder text
      -// - Transformations
      -// - Transitions
      -// - User Select
      -
      -
      -// Animations
      -@mixin animation($animation) {
      -  -webkit-animation: $animation;
      -       -o-animation: $animation;
      -          animation: $animation;
      -}
      -@mixin animation-name($name) {
      -  -webkit-animation-name: $name;
      -          animation-name: $name;
      -}
      -@mixin animation-duration($duration) {
      -  -webkit-animation-duration: $duration;
      -          animation-duration: $duration;
      -}
      -@mixin animation-timing-function($timing-function) {
      -  -webkit-animation-timing-function: $timing-function;
      -          animation-timing-function: $timing-function;
      -}
      -@mixin animation-delay($delay) {
      -  -webkit-animation-delay: $delay;
      -          animation-delay: $delay;
      -}
      -@mixin animation-iteration-count($iteration-count) {
      -  -webkit-animation-iteration-count: $iteration-count;
      -          animation-iteration-count: $iteration-count;
      -}
      -@mixin animation-direction($direction) {
      -  -webkit-animation-direction: $direction;
      -          animation-direction: $direction;
      -}
      -@mixin animation-fill-mode($fill-mode) {
      -  -webkit-animation-fill-mode: $fill-mode;
      -          animation-fill-mode: $fill-mode;
      -}
      -
      -// Backface visibility
      -// Prevent browsers from flickering when using CSS 3D transforms.
      -// Default value is `visible`, but can be changed to `hidden`
      -
      -@mixin backface-visibility($visibility) {
      -  -webkit-backface-visibility: $visibility;
      -     -moz-backface-visibility: $visibility;
      -          backface-visibility: $visibility;
      -}
      -
      -// Drop shadows
      -//
      -// Note: Deprecated `.box-shadow()` as of v3.1.0 since all of Bootstrap's
      -// supported browsers that have box shadow capabilities now support it.
      -
      -@mixin box-shadow($shadow...) {
      -  -webkit-box-shadow: $shadow; // iOS <4.3 & Android <4.1
      -          box-shadow: $shadow;
      -}
      -
      -// Box sizing
      -@mixin box-sizing($boxmodel) {
      -  -webkit-box-sizing: $boxmodel;
      -     -moz-box-sizing: $boxmodel;
      -          box-sizing: $boxmodel;
      -}
      -
      -// CSS3 Content Columns
      -@mixin content-columns($column-count, $column-gap: $grid-gutter-width) {
      -  -webkit-column-count: $column-count;
      -     -moz-column-count: $column-count;
      -          column-count: $column-count;
      -  -webkit-column-gap: $column-gap;
      -     -moz-column-gap: $column-gap;
      -          column-gap: $column-gap;
      -}
      -
      -// Optional hyphenation
      -@mixin hyphens($mode: auto) {
      -  word-wrap: break-word;
      -  -webkit-hyphens: $mode;
      -     -moz-hyphens: $mode;
      -      -ms-hyphens: $mode; // IE10+
      -       -o-hyphens: $mode;
      -          hyphens: $mode;
      -}
      -
      -// Placeholder text
      -@mixin placeholder($color: $input-color-placeholder) {
      -  // Firefox
      -  &::-moz-placeholder {
      -    color: $color;
      -    opacity: 1; // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526
      -  }
      -  &:-ms-input-placeholder { color: $color; } // Internet Explorer 10+
      -  &::-webkit-input-placeholder  { color: $color; } // Safari and Chrome
      -}
      -
      -// Transformations
      -@mixin scale($ratio...) {
      -  -webkit-transform: scale($ratio);
      -      -ms-transform: scale($ratio); // IE9 only
      -       -o-transform: scale($ratio);
      -          transform: scale($ratio);
      -}
      -
      -@mixin scaleX($ratio) {
      -  -webkit-transform: scaleX($ratio);
      -      -ms-transform: scaleX($ratio); // IE9 only
      -       -o-transform: scaleX($ratio);
      -          transform: scaleX($ratio);
      -}
      -@mixin scaleY($ratio) {
      -  -webkit-transform: scaleY($ratio);
      -      -ms-transform: scaleY($ratio); // IE9 only
      -       -o-transform: scaleY($ratio);
      -          transform: scaleY($ratio);
      -}
      -@mixin skew($x, $y) {
      -  -webkit-transform: skewX($x) skewY($y);
      -      -ms-transform: skewX($x) skewY($y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+
      -       -o-transform: skewX($x) skewY($y);
      -          transform: skewX($x) skewY($y);
      -}
      -@mixin translate($x, $y) {
      -  -webkit-transform: translate($x, $y);
      -      -ms-transform: translate($x, $y); // IE9 only
      -       -o-transform: translate($x, $y);
      -          transform: translate($x, $y);
      -}
      -@mixin translate3d($x, $y, $z) {
      -  -webkit-transform: translate3d($x, $y, $z);
      -          transform: translate3d($x, $y, $z);
      -}
      -@mixin rotate($degrees) {
      -  -webkit-transform: rotate($degrees);
      -      -ms-transform: rotate($degrees); // IE9 only
      -       -o-transform: rotate($degrees);
      -          transform: rotate($degrees);
      -}
      -@mixin rotateX($degrees) {
      -  -webkit-transform: rotateX($degrees);
      -      -ms-transform: rotateX($degrees); // IE9 only
      -       -o-transform: rotateX($degrees);
      -          transform: rotateX($degrees);
      -}
      -@mixin rotateY($degrees) {
      -  -webkit-transform: rotateY($degrees);
      -      -ms-transform: rotateY($degrees); // IE9 only
      -       -o-transform: rotateY($degrees);
      -          transform: rotateY($degrees);
      -}
      -@mixin perspective($perspective) {
      -  -webkit-perspective: $perspective;
      -     -moz-perspective: $perspective;
      -          perspective: $perspective;
      -}
      -@mixin perspective-origin($perspective) {
      -  -webkit-perspective-origin: $perspective;
      -     -moz-perspective-origin: $perspective;
      -          perspective-origin: $perspective;
      -}
      -@mixin transform-origin($origin) {
      -  -webkit-transform-origin: $origin;
      -     -moz-transform-origin: $origin;
      -      -ms-transform-origin: $origin; // IE9 only
      -          transform-origin: $origin;
      -}
      -
      -
      -// Transitions
      -
      -@mixin transition($transition...) {
      -  -webkit-transition: $transition;
      -       -o-transition: $transition;
      -          transition: $transition;
      -}
      -@mixin transition-property($transition-property...) {
      -  -webkit-transition-property: $transition-property;
      -          transition-property: $transition-property;
      -}
      -@mixin transition-delay($transition-delay) {
      -  -webkit-transition-delay: $transition-delay;
      -          transition-delay: $transition-delay;
      -}
      -@mixin transition-duration($transition-duration...) {
      -  -webkit-transition-duration: $transition-duration;
      -          transition-duration: $transition-duration;
      -}
      -@mixin transition-timing-function($timing-function) {
      -  -webkit-transition-timing-function: $timing-function;
      -          transition-timing-function: $timing-function;
      -}
      -@mixin transition-transform($transition...) {
      -  -webkit-transition: -webkit-transform $transition;
      -     -moz-transition: -moz-transform $transition;
      -       -o-transition: -o-transform $transition;
      -          transition: transform $transition;
      -}
      -
      -
      -// User select
      -// For selecting text on the page
      -
      -@mixin user-select($select) {
      -  -webkit-user-select: $select;
      -     -moz-user-select: $select;
      -      -ms-user-select: $select; // IE10+
      -          user-select: $select;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_animated.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_animated.scss
      deleted file mode 100644
      index 8a020dbfff..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_animated.scss
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -// Spinning Icons
      -// --------------------------
      -
      -.#{$fa-css-prefix}-spin {
      -  -webkit-animation: fa-spin 2s infinite linear;
      -          animation: fa-spin 2s infinite linear;
      -}
      -
      -.#{$fa-css-prefix}-pulse {
      -  -webkit-animation: fa-spin 1s infinite steps(8);
      -          animation: fa-spin 1s infinite steps(8);
      -}
      -
      -@-webkit-keyframes fa-spin {
      -  0% {
      -    -webkit-transform: rotate(0deg);
      -            transform: rotate(0deg);
      -  }
      -  100% {
      -    -webkit-transform: rotate(359deg);
      -            transform: rotate(359deg);
      -  }
      -}
      -
      -@keyframes fa-spin {
      -  0% {
      -    -webkit-transform: rotate(0deg);
      -            transform: rotate(0deg);
      -  }
      -  100% {
      -    -webkit-transform: rotate(359deg);
      -            transform: rotate(359deg);
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_bordered-pulled.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_bordered-pulled.scss
      deleted file mode 100644
      index d4b85a02f2..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_bordered-pulled.scss
      +++ /dev/null
      @@ -1,25 +0,0 @@
      -// Bordered & Pulled
      -// -------------------------
      -
      -.#{$fa-css-prefix}-border {
      -  padding: .2em .25em .15em;
      -  border: solid .08em $fa-border-color;
      -  border-radius: .1em;
      -}
      -
      -.#{$fa-css-prefix}-pull-left { float: left; }
      -.#{$fa-css-prefix}-pull-right { float: right; }
      -
      -.#{$fa-css-prefix} {
      -  &.#{$fa-css-prefix}-pull-left { margin-right: .3em; }
      -  &.#{$fa-css-prefix}-pull-right { margin-left: .3em; }
      -}
      -
      -/* Deprecated as of 4.4.0 */
      -.pull-right { float: right; }
      -.pull-left { float: left; }
      -
      -.#{$fa-css-prefix} {
      -  &.pull-left { margin-right: .3em; }
      -  &.pull-right { margin-left: .3em; }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_core.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_core.scss
      deleted file mode 100644
      index 7425ef85fc..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_core.scss
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -// Base Class Definition
      -// -------------------------
      -
      -.#{$fa-css-prefix} {
      -  display: inline-block;
      -  font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
      -  font-size: inherit; // can't have font-size inherit on line above, so need to override
      -  text-rendering: auto; // optimizelegibility throws things off #1094
      -  -webkit-font-smoothing: antialiased;
      -  -moz-osx-font-smoothing: grayscale;
      -
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_fixed-width.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_fixed-width.scss
      deleted file mode 100644
      index b221c98133..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_fixed-width.scss
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -// Fixed Width Icons
      -// -------------------------
      -.#{$fa-css-prefix}-fw {
      -  width: (18em / 14);
      -  text-align: center;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_icons.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_icons.scss
      deleted file mode 100644
      index 6f9375989a..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_icons.scss
      +++ /dev/null
      @@ -1,697 +0,0 @@
      -/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
      -   readers do not read off random characters that represent icons */
      -
      -.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; }
      -.#{$fa-css-prefix}-music:before { content: $fa-var-music; }
      -.#{$fa-css-prefix}-search:before { content: $fa-var-search; }
      -.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; }
      -.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; }
      -.#{$fa-css-prefix}-star:before { content: $fa-var-star; }
      -.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; }
      -.#{$fa-css-prefix}-user:before { content: $fa-var-user; }
      -.#{$fa-css-prefix}-film:before { content: $fa-var-film; }
      -.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; }
      -.#{$fa-css-prefix}-th:before { content: $fa-var-th; }
      -.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; }
      -.#{$fa-css-prefix}-check:before { content: $fa-var-check; }
      -.#{$fa-css-prefix}-remove:before,
      -.#{$fa-css-prefix}-close:before,
      -.#{$fa-css-prefix}-times:before { content: $fa-var-times; }
      -.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; }
      -.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; }
      -.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; }
      -.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; }
      -.#{$fa-css-prefix}-gear:before,
      -.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; }
      -.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; }
      -.#{$fa-css-prefix}-home:before { content: $fa-var-home; }
      -.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; }
      -.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; }
      -.#{$fa-css-prefix}-road:before { content: $fa-var-road; }
      -.#{$fa-css-prefix}-download:before { content: $fa-var-download; }
      -.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; }
      -.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; }
      -.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; }
      -.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; }
      -.#{$fa-css-prefix}-rotate-right:before,
      -.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; }
      -.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; }
      -.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; }
      -.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; }
      -.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; }
      -.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; }
      -.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; }
      -.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; }
      -.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; }
      -.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; }
      -.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; }
      -.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; }
      -.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; }
      -.#{$fa-css-prefix}-book:before { content: $fa-var-book; }
      -.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; }
      -.#{$fa-css-prefix}-print:before { content: $fa-var-print; }
      -.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; }
      -.#{$fa-css-prefix}-font:before { content: $fa-var-font; }
      -.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; }
      -.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; }
      -.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; }
      -.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; }
      -.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; }
      -.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; }
      -.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; }
      -.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; }
      -.#{$fa-css-prefix}-list:before { content: $fa-var-list; }
      -.#{$fa-css-prefix}-dedent:before,
      -.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; }
      -.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; }
      -.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; }
      -.#{$fa-css-prefix}-photo:before,
      -.#{$fa-css-prefix}-image:before,
      -.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; }
      -.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; }
      -.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; }
      -.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; }
      -.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; }
      -.#{$fa-css-prefix}-edit:before,
      -.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; }
      -.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; }
      -.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; }
      -.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; }
      -.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; }
      -.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; }
      -.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; }
      -.#{$fa-css-prefix}-play:before { content: $fa-var-play; }
      -.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; }
      -.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; }
      -.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; }
      -.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; }
      -.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; }
      -.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; }
      -.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; }
      -.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; }
      -.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; }
      -.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; }
      -.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; }
      -.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; }
      -.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; }
      -.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; }
      -.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; }
      -.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; }
      -.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; }
      -.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; }
      -.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; }
      -.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; }
      -.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; }
      -.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; }
      -.#{$fa-css-prefix}-mail-forward:before,
      -.#{$fa-css-prefix}-share:before { content: $fa-var-share; }
      -.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; }
      -.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; }
      -.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; }
      -.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; }
      -.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; }
      -.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; }
      -.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; }
      -.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; }
      -.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; }
      -.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; }
      -.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; }
      -.#{$fa-css-prefix}-warning:before,
      -.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; }
      -.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; }
      -.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; }
      -.#{$fa-css-prefix}-random:before { content: $fa-var-random; }
      -.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; }
      -.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; }
      -.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; }
      -.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; }
      -.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; }
      -.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; }
      -.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; }
      -.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; }
      -.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; }
      -.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; }
      -.#{$fa-css-prefix}-bar-chart-o:before,
      -.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; }
      -.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; }
      -.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; }
      -.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; }
      -.#{$fa-css-prefix}-key:before { content: $fa-var-key; }
      -.#{$fa-css-prefix}-gears:before,
      -.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; }
      -.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; }
      -.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; }
      -.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; }
      -.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; }
      -.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; }
      -.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; }
      -.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; }
      -.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; }
      -.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; }
      -.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; }
      -.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; }
      -.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; }
      -.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; }
      -.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; }
      -.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; }
      -.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; }
      -.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; }
      -.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; }
      -.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; }
      -.#{$fa-css-prefix}-facebook-f:before,
      -.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; }
      -.#{$fa-css-prefix}-github:before { content: $fa-var-github; }
      -.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; }
      -.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; }
      -.#{$fa-css-prefix}-feed:before,
      -.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; }
      -.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; }
      -.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; }
      -.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; }
      -.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; }
      -.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; }
      -.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; }
      -.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; }
      -.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; }
      -.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; }
      -.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; }
      -.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; }
      -.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; }
      -.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; }
      -.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; }
      -.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; }
      -.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; }
      -.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; }
      -.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; }
      -.#{$fa-css-prefix}-group:before,
      -.#{$fa-css-prefix}-users:before { content: $fa-var-users; }
      -.#{$fa-css-prefix}-chain:before,
      -.#{$fa-css-prefix}-link:before { content: $fa-var-link; }
      -.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; }
      -.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; }
      -.#{$fa-css-prefix}-cut:before,
      -.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; }
      -.#{$fa-css-prefix}-copy:before,
      -.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; }
      -.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; }
      -.#{$fa-css-prefix}-save:before,
      -.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; }
      -.#{$fa-css-prefix}-square:before { content: $fa-var-square; }
      -.#{$fa-css-prefix}-navicon:before,
      -.#{$fa-css-prefix}-reorder:before,
      -.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; }
      -.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; }
      -.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; }
      -.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; }
      -.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; }
      -.#{$fa-css-prefix}-table:before { content: $fa-var-table; }
      -.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; }
      -.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; }
      -.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; }
      -.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; }
      -.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; }
      -.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; }
      -.#{$fa-css-prefix}-money:before { content: $fa-var-money; }
      -.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; }
      -.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; }
      -.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; }
      -.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; }
      -.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; }
      -.#{$fa-css-prefix}-unsorted:before,
      -.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; }
      -.#{$fa-css-prefix}-sort-down:before,
      -.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; }
      -.#{$fa-css-prefix}-sort-up:before,
      -.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; }
      -.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; }
      -.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; }
      -.#{$fa-css-prefix}-rotate-left:before,
      -.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; }
      -.#{$fa-css-prefix}-legal:before,
      -.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; }
      -.#{$fa-css-prefix}-dashboard:before,
      -.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; }
      -.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; }
      -.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; }
      -.#{$fa-css-prefix}-flash:before,
      -.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; }
      -.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; }
      -.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; }
      -.#{$fa-css-prefix}-paste:before,
      -.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; }
      -.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; }
      -.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; }
      -.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; }
      -.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; }
      -.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; }
      -.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; }
      -.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; }
      -.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; }
      -.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; }
      -.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; }
      -.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; }
      -.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; }
      -.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; }
      -.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; }
      -.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; }
      -.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; }
      -.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; }
      -.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; }
      -.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; }
      -.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; }
      -.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; }
      -.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; }
      -.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; }
      -.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; }
      -.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; }
      -.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; }
      -.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; }
      -.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; }
      -.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; }
      -.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; }
      -.#{$fa-css-prefix}-mobile-phone:before,
      -.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; }
      -.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; }
      -.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; }
      -.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; }
      -.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; }
      -.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; }
      -.#{$fa-css-prefix}-mail-reply:before,
      -.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; }
      -.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; }
      -.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; }
      -.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; }
      -.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; }
      -.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; }
      -.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; }
      -.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; }
      -.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; }
      -.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; }
      -.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; }
      -.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; }
      -.#{$fa-css-prefix}-code:before { content: $fa-var-code; }
      -.#{$fa-css-prefix}-mail-reply-all:before,
      -.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; }
      -.#{$fa-css-prefix}-star-half-empty:before,
      -.#{$fa-css-prefix}-star-half-full:before,
      -.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; }
      -.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; }
      -.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; }
      -.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; }
      -.#{$fa-css-prefix}-unlink:before,
      -.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; }
      -.#{$fa-css-prefix}-question:before { content: $fa-var-question; }
      -.#{$fa-css-prefix}-info:before { content: $fa-var-info; }
      -.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; }
      -.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; }
      -.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; }
      -.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; }
      -.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; }
      -.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; }
      -.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; }
      -.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; }
      -.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; }
      -.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; }
      -.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; }
      -.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; }
      -.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; }
      -.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; }
      -.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; }
      -.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; }
      -.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; }
      -.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; }
      -.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; }
      -.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; }
      -.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; }
      -.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; }
      -.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; }
      -.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; }
      -.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; }
      -.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; }
      -.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; }
      -.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; }
      -.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; }
      -.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; }
      -.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; }
      -.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; }
      -.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; }
      -.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; }
      -.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; }
      -.#{$fa-css-prefix}-toggle-down:before,
      -.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; }
      -.#{$fa-css-prefix}-toggle-up:before,
      -.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; }
      -.#{$fa-css-prefix}-toggle-right:before,
      -.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; }
      -.#{$fa-css-prefix}-euro:before,
      -.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; }
      -.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; }
      -.#{$fa-css-prefix}-dollar:before,
      -.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; }
      -.#{$fa-css-prefix}-rupee:before,
      -.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; }
      -.#{$fa-css-prefix}-cny:before,
      -.#{$fa-css-prefix}-rmb:before,
      -.#{$fa-css-prefix}-yen:before,
      -.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; }
      -.#{$fa-css-prefix}-ruble:before,
      -.#{$fa-css-prefix}-rouble:before,
      -.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; }
      -.#{$fa-css-prefix}-won:before,
      -.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; }
      -.#{$fa-css-prefix}-bitcoin:before,
      -.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; }
      -.#{$fa-css-prefix}-file:before { content: $fa-var-file; }
      -.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; }
      -.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; }
      -.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; }
      -.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; }
      -.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; }
      -.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; }
      -.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; }
      -.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; }
      -.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; }
      -.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; }
      -.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; }
      -.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; }
      -.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; }
      -.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; }
      -.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; }
      -.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; }
      -.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; }
      -.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; }
      -.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; }
      -.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; }
      -.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; }
      -.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; }
      -.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; }
      -.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; }
      -.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; }
      -.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; }
      -.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; }
      -.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; }
      -.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; }
      -.#{$fa-css-prefix}-android:before { content: $fa-var-android; }
      -.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; }
      -.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; }
      -.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; }
      -.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; }
      -.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; }
      -.#{$fa-css-prefix}-female:before { content: $fa-var-female; }
      -.#{$fa-css-prefix}-male:before { content: $fa-var-male; }
      -.#{$fa-css-prefix}-gittip:before,
      -.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; }
      -.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; }
      -.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; }
      -.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; }
      -.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; }
      -.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; }
      -.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; }
      -.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; }
      -.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; }
      -.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; }
      -.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; }
      -.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; }
      -.#{$fa-css-prefix}-toggle-left:before,
      -.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; }
      -.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; }
      -.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; }
      -.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; }
      -.#{$fa-css-prefix}-turkish-lira:before,
      -.#{$fa-css-prefix}-try:before { content: $fa-var-try; }
      -.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; }
      -.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; }
      -.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; }
      -.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; }
      -.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; }
      -.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; }
      -.#{$fa-css-prefix}-institution:before,
      -.#{$fa-css-prefix}-bank:before,
      -.#{$fa-css-prefix}-university:before { content: $fa-var-university; }
      -.#{$fa-css-prefix}-mortar-board:before,
      -.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; }
      -.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; }
      -.#{$fa-css-prefix}-google:before { content: $fa-var-google; }
      -.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; }
      -.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; }
      -.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; }
      -.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; }
      -.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; }
      -.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; }
      -.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; }
      -.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; }
      -.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; }
      -.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; }
      -.#{$fa-css-prefix}-language:before { content: $fa-var-language; }
      -.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; }
      -.#{$fa-css-prefix}-building:before { content: $fa-var-building; }
      -.#{$fa-css-prefix}-child:before { content: $fa-var-child; }
      -.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; }
      -.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; }
      -.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; }
      -.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; }
      -.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; }
      -.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; }
      -.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; }
      -.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; }
      -.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; }
      -.#{$fa-css-prefix}-automobile:before,
      -.#{$fa-css-prefix}-car:before { content: $fa-var-car; }
      -.#{$fa-css-prefix}-cab:before,
      -.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; }
      -.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; }
      -.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; }
      -.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; }
      -.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; }
      -.#{$fa-css-prefix}-database:before { content: $fa-var-database; }
      -.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; }
      -.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; }
      -.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; }
      -.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; }
      -.#{$fa-css-prefix}-file-photo-o:before,
      -.#{$fa-css-prefix}-file-picture-o:before,
      -.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; }
      -.#{$fa-css-prefix}-file-zip-o:before,
      -.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; }
      -.#{$fa-css-prefix}-file-sound-o:before,
      -.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; }
      -.#{$fa-css-prefix}-file-movie-o:before,
      -.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; }
      -.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; }
      -.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; }
      -.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; }
      -.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; }
      -.#{$fa-css-prefix}-life-bouy:before,
      -.#{$fa-css-prefix}-life-buoy:before,
      -.#{$fa-css-prefix}-life-saver:before,
      -.#{$fa-css-prefix}-support:before,
      -.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; }
      -.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; }
      -.#{$fa-css-prefix}-ra:before,
      -.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; }
      -.#{$fa-css-prefix}-ge:before,
      -.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; }
      -.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; }
      -.#{$fa-css-prefix}-git:before { content: $fa-var-git; }
      -.#{$fa-css-prefix}-y-combinator-square:before,
      -.#{$fa-css-prefix}-yc-square:before,
      -.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; }
      -.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; }
      -.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; }
      -.#{$fa-css-prefix}-wechat:before,
      -.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; }
      -.#{$fa-css-prefix}-send:before,
      -.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; }
      -.#{$fa-css-prefix}-send-o:before,
      -.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; }
      -.#{$fa-css-prefix}-history:before { content: $fa-var-history; }
      -.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; }
      -.#{$fa-css-prefix}-header:before { content: $fa-var-header; }
      -.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; }
      -.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; }
      -.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; }
      -.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; }
      -.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; }
      -.#{$fa-css-prefix}-soccer-ball-o:before,
      -.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; }
      -.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; }
      -.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; }
      -.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; }
      -.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; }
      -.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; }
      -.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; }
      -.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; }
      -.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; }
      -.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; }
      -.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; }
      -.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; }
      -.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; }
      -.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; }
      -.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; }
      -.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; }
      -.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; }
      -.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; }
      -.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; }
      -.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; }
      -.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; }
      -.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; }
      -.#{$fa-css-prefix}-at:before { content: $fa-var-at; }
      -.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; }
      -.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; }
      -.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; }
      -.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; }
      -.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; }
      -.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; }
      -.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; }
      -.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; }
      -.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; }
      -.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; }
      -.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; }
      -.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; }
      -.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; }
      -.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; }
      -.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; }
      -.#{$fa-css-prefix}-shekel:before,
      -.#{$fa-css-prefix}-sheqel:before,
      -.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; }
      -.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; }
      -.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; }
      -.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; }
      -.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; }
      -.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; }
      -.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; }
      -.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; }
      -.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; }
      -.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; }
      -.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; }
      -.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; }
      -.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; }
      -.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; }
      -.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; }
      -.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; }
      -.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; }
      -.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; }
      -.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; }
      -.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; }
      -.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; }
      -.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; }
      -.#{$fa-css-prefix}-intersex:before,
      -.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; }
      -.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; }
      -.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; }
      -.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; }
      -.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; }
      -.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; }
      -.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; }
      -.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; }
      -.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; }
      -.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; }
      -.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; }
      -.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; }
      -.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; }
      -.#{$fa-css-prefix}-server:before { content: $fa-var-server; }
      -.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; }
      -.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; }
      -.#{$fa-css-prefix}-hotel:before,
      -.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; }
      -.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; }
      -.#{$fa-css-prefix}-train:before { content: $fa-var-train; }
      -.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; }
      -.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; }
      -.#{$fa-css-prefix}-yc:before,
      -.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; }
      -.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; }
      -.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; }
      -.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; }
      -.#{$fa-css-prefix}-battery-4:before,
      -.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; }
      -.#{$fa-css-prefix}-battery-3:before,
      -.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; }
      -.#{$fa-css-prefix}-battery-2:before,
      -.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; }
      -.#{$fa-css-prefix}-battery-1:before,
      -.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; }
      -.#{$fa-css-prefix}-battery-0:before,
      -.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; }
      -.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; }
      -.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; }
      -.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; }
      -.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; }
      -.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; }
      -.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; }
      -.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; }
      -.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; }
      -.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; }
      -.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; }
      -.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; }
      -.#{$fa-css-prefix}-hourglass-1:before,
      -.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; }
      -.#{$fa-css-prefix}-hourglass-2:before,
      -.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; }
      -.#{$fa-css-prefix}-hourglass-3:before,
      -.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; }
      -.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; }
      -.#{$fa-css-prefix}-hand-grab-o:before,
      -.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; }
      -.#{$fa-css-prefix}-hand-stop-o:before,
      -.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; }
      -.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; }
      -.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; }
      -.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; }
      -.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; }
      -.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; }
      -.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; }
      -.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; }
      -.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; }
      -.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; }
      -.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; }
      -.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; }
      -.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; }
      -.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; }
      -.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; }
      -.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; }
      -.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; }
      -.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; }
      -.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; }
      -.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; }
      -.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; }
      -.#{$fa-css-prefix}-tv:before,
      -.#{$fa-css-prefix}-television:before { content: $fa-var-television; }
      -.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; }
      -.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; }
      -.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; }
      -.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; }
      -.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; }
      -.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; }
      -.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; }
      -.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; }
      -.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; }
      -.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; }
      -.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; }
      -.#{$fa-css-prefix}-map:before { content: $fa-var-map; }
      -.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; }
      -.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; }
      -.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; }
      -.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; }
      -.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; }
      -.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; }
      -.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; }
      -.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; }
      -.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; }
      -.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; }
      -.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; }
      -.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; }
      -.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; }
      -.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; }
      -.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; }
      -.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; }
      -.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; }
      -.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; }
      -.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; }
      -.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; }
      -.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; }
      -.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; }
      -.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; }
      -.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; }
      -.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; }
      -.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; }
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_larger.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_larger.scss
      deleted file mode 100644
      index 41e9a8184a..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_larger.scss
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -// Icon Sizes
      -// -------------------------
      -
      -/* makes the font 33% larger relative to the icon container */
      -.#{$fa-css-prefix}-lg {
      -  font-size: (4em / 3);
      -  line-height: (3em / 4);
      -  vertical-align: -15%;
      -}
      -.#{$fa-css-prefix}-2x { font-size: 2em; }
      -.#{$fa-css-prefix}-3x { font-size: 3em; }
      -.#{$fa-css-prefix}-4x { font-size: 4em; }
      -.#{$fa-css-prefix}-5x { font-size: 5em; }
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_list.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_list.scss
      deleted file mode 100644
      index 7d1e4d54d6..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_list.scss
      +++ /dev/null
      @@ -1,19 +0,0 @@
      -// List Icons
      -// -------------------------
      -
      -.#{$fa-css-prefix}-ul {
      -  padding-left: 0;
      -  margin-left: $fa-li-width;
      -  list-style-type: none;
      -  > li { position: relative; }
      -}
      -.#{$fa-css-prefix}-li {
      -  position: absolute;
      -  left: -$fa-li-width;
      -  width: $fa-li-width;
      -  top: (2em / 14);
      -  text-align: center;
      -  &.#{$fa-css-prefix}-lg {
      -    left: -$fa-li-width + (4em / 14);
      -  }
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_mixins.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_mixins.scss
      deleted file mode 100644
      index f96719b6a0..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_mixins.scss
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -// Mixins
      -// --------------------------
      -
      -@mixin fa-icon() {
      -  display: inline-block;
      -  font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration
      -  font-size: inherit; // can't have font-size inherit on line above, so need to override
      -  text-rendering: auto; // optimizelegibility throws things off #1094
      -  -webkit-font-smoothing: antialiased;
      -  -moz-osx-font-smoothing: grayscale;
      -
      -}
      -
      -@mixin fa-icon-rotate($degrees, $rotation) {
      -  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
      -  -webkit-transform: rotate($degrees);
      -      -ms-transform: rotate($degrees);
      -          transform: rotate($degrees);
      -}
      -
      -@mixin fa-icon-flip($horiz, $vert, $rotation) {
      -  filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation});
      -  -webkit-transform: scale($horiz, $vert);
      -      -ms-transform: scale($horiz, $vert);
      -          transform: scale($horiz, $vert);
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_path.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_path.scss
      deleted file mode 100644
      index bb457c23a8..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_path.scss
      +++ /dev/null
      @@ -1,15 +0,0 @@
      -/* FONT PATH
      - * -------------------------- */
      -
      -@font-face {
      -  font-family: 'FontAwesome';
      -  src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}');
      -  src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'),
      -    url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'),
      -    url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'),
      -    url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'),
      -    url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg');
      -//  src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts
      -  font-weight: normal;
      -  font-style: normal;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_rotated-flipped.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_rotated-flipped.scss
      deleted file mode 100644
      index a3558fd09c..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_rotated-flipped.scss
      +++ /dev/null
      @@ -1,20 +0,0 @@
      -// Rotated & Flipped Icons
      -// -------------------------
      -
      -.#{$fa-css-prefix}-rotate-90  { @include fa-icon-rotate(90deg, 1);  }
      -.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); }
      -.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); }
      -
      -.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); }
      -.#{$fa-css-prefix}-flip-vertical   { @include fa-icon-flip(1, -1, 2); }
      -
      -// Hook for IE8-9
      -// -------------------------
      -
      -:root .#{$fa-css-prefix}-rotate-90,
      -:root .#{$fa-css-prefix}-rotate-180,
      -:root .#{$fa-css-prefix}-rotate-270,
      -:root .#{$fa-css-prefix}-flip-horizontal,
      -:root .#{$fa-css-prefix}-flip-vertical {
      -  filter: none;
      -}
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_stacked.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_stacked.scss
      deleted file mode 100644
      index aef7403660..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_stacked.scss
      +++ /dev/null
      @@ -1,20 +0,0 @@
      -// Stacked Icons
      -// -------------------------
      -
      -.#{$fa-css-prefix}-stack {
      -  position: relative;
      -  display: inline-block;
      -  width: 2em;
      -  height: 2em;
      -  line-height: 2em;
      -  vertical-align: middle;
      -}
      -.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x {
      -  position: absolute;
      -  left: 0;
      -  width: 100%;
      -  text-align: center;
      -}
      -.#{$fa-css-prefix}-stack-1x { line-height: inherit; }
      -.#{$fa-css-prefix}-stack-2x { font-size: 2em; }
      -.#{$fa-css-prefix}-inverse { color: $fa-inverse; }
      diff --git a/bower_components/select2/docs/_sass/vendor/font-awesome/_variables.scss b/bower_components/select2/docs/_sass/vendor/font-awesome/_variables.scss
      deleted file mode 100644
      index 0a471102c4..0000000000
      --- a/bower_components/select2/docs/_sass/vendor/font-awesome/_variables.scss
      +++ /dev/null
      @@ -1,708 +0,0 @@
      -// Variables
      -// --------------------------
      -
      -$fa-font-path:        "../fonts" !default;
      -$fa-font-size-base:   14px !default;
      -$fa-line-height-base: 1 !default;
      -//$fa-font-path:        "//netdna.bootstrapcdn.com/font-awesome/4.5.0/fonts" !default; // for referencing Bootstrap CDN font files directly
      -$fa-css-prefix:       fa !default;
      -$fa-version:          "4.5.0" !default;
      -$fa-border-color:     #eee !default;
      -$fa-inverse:          #fff !default;
      -$fa-li-width:         (30em / 14) !default;
      -
      -$fa-var-500px: "\f26e";
      -$fa-var-adjust: "\f042";
      -$fa-var-adn: "\f170";
      -$fa-var-align-center: "\f037";
      -$fa-var-align-justify: "\f039";
      -$fa-var-align-left: "\f036";
      -$fa-var-align-right: "\f038";
      -$fa-var-amazon: "\f270";
      -$fa-var-ambulance: "\f0f9";
      -$fa-var-anchor: "\f13d";
      -$fa-var-android: "\f17b";
      -$fa-var-angellist: "\f209";
      -$fa-var-angle-double-down: "\f103";
      -$fa-var-angle-double-left: "\f100";
      -$fa-var-angle-double-right: "\f101";
      -$fa-var-angle-double-up: "\f102";
      -$fa-var-angle-down: "\f107";
      -$fa-var-angle-left: "\f104";
      -$fa-var-angle-right: "\f105";
      -$fa-var-angle-up: "\f106";
      -$fa-var-apple: "\f179";
      -$fa-var-archive: "\f187";
      -$fa-var-area-chart: "\f1fe";
      -$fa-var-arrow-circle-down: "\f0ab";
      -$fa-var-arrow-circle-left: "\f0a8";
      -$fa-var-arrow-circle-o-down: "\f01a";
      -$fa-var-arrow-circle-o-left: "\f190";
      -$fa-var-arrow-circle-o-right: "\f18e";
      -$fa-var-arrow-circle-o-up: "\f01b";
      -$fa-var-arrow-circle-right: "\f0a9";
      -$fa-var-arrow-circle-up: "\f0aa";
      -$fa-var-arrow-down: "\f063";
      -$fa-var-arrow-left: "\f060";
      -$fa-var-arrow-right: "\f061";
      -$fa-var-arrow-up: "\f062";
      -$fa-var-arrows: "\f047";
      -$fa-var-arrows-alt: "\f0b2";
      -$fa-var-arrows-h: "\f07e";
      -$fa-var-arrows-v: "\f07d";
      -$fa-var-asterisk: "\f069";
      -$fa-var-at: "\f1fa";
      -$fa-var-automobile: "\f1b9";
      -$fa-var-backward: "\f04a";
      -$fa-var-balance-scale: "\f24e";
      -$fa-var-ban: "\f05e";
      -$fa-var-bank: "\f19c";
      -$fa-var-bar-chart: "\f080";
      -$fa-var-bar-chart-o: "\f080";
      -$fa-var-barcode: "\f02a";
      -$fa-var-bars: "\f0c9";
      -$fa-var-battery-0: "\f244";
      -$fa-var-battery-1: "\f243";
      -$fa-var-battery-2: "\f242";
      -$fa-var-battery-3: "\f241";
      -$fa-var-battery-4: "\f240";
      -$fa-var-battery-empty: "\f244";
      -$fa-var-battery-full: "\f240";
      -$fa-var-battery-half: "\f242";
      -$fa-var-battery-quarter: "\f243";
      -$fa-var-battery-three-quarters: "\f241";
      -$fa-var-bed: "\f236";
      -$fa-var-beer: "\f0fc";
      -$fa-var-behance: "\f1b4";
      -$fa-var-behance-square: "\f1b5";
      -$fa-var-bell: "\f0f3";
      -$fa-var-bell-o: "\f0a2";
      -$fa-var-bell-slash: "\f1f6";
      -$fa-var-bell-slash-o: "\f1f7";
      -$fa-var-bicycle: "\f206";
      -$fa-var-binoculars: "\f1e5";
      -$fa-var-birthday-cake: "\f1fd";
      -$fa-var-bitbucket: "\f171";
      -$fa-var-bitbucket-square: "\f172";
      -$fa-var-bitcoin: "\f15a";
      -$fa-var-black-tie: "\f27e";
      -$fa-var-bluetooth: "\f293";
      -$fa-var-bluetooth-b: "\f294";
      -$fa-var-bold: "\f032";
      -$fa-var-bolt: "\f0e7";
      -$fa-var-bomb: "\f1e2";
      -$fa-var-book: "\f02d";
      -$fa-var-bookmark: "\f02e";
      -$fa-var-bookmark-o: "\f097";
      -$fa-var-briefcase: "\f0b1";
      -$fa-var-btc: "\f15a";
      -$fa-var-bug: "\f188";
      -$fa-var-building: "\f1ad";
      -$fa-var-building-o: "\f0f7";
      -$fa-var-bullhorn: "\f0a1";
      -$fa-var-bullseye: "\f140";
      -$fa-var-bus: "\f207";
      -$fa-var-buysellads: "\f20d";
      -$fa-var-cab: "\f1ba";
      -$fa-var-calculator: "\f1ec";
      -$fa-var-calendar: "\f073";
      -$fa-var-calendar-check-o: "\f274";
      -$fa-var-calendar-minus-o: "\f272";
      -$fa-var-calendar-o: "\f133";
      -$fa-var-calendar-plus-o: "\f271";
      -$fa-var-calendar-times-o: "\f273";
      -$fa-var-camera: "\f030";
      -$fa-var-camera-retro: "\f083";
      -$fa-var-car: "\f1b9";
      -$fa-var-caret-down: "\f0d7";
      -$fa-var-caret-left: "\f0d9";
      -$fa-var-caret-right: "\f0da";
      -$fa-var-caret-square-o-down: "\f150";
      -$fa-var-caret-square-o-left: "\f191";
      -$fa-var-caret-square-o-right: "\f152";
      -$fa-var-caret-square-o-up: "\f151";
      -$fa-var-caret-up: "\f0d8";
      -$fa-var-cart-arrow-down: "\f218";
      -$fa-var-cart-plus: "\f217";
      -$fa-var-cc: "\f20a";
      -$fa-var-cc-amex: "\f1f3";
      -$fa-var-cc-diners-club: "\f24c";
      -$fa-var-cc-discover: "\f1f2";
      -$fa-var-cc-jcb: "\f24b";
      -$fa-var-cc-mastercard: "\f1f1";
      -$fa-var-cc-paypal: "\f1f4";
      -$fa-var-cc-stripe: "\f1f5";
      -$fa-var-cc-visa: "\f1f0";
      -$fa-var-certificate: "\f0a3";
      -$fa-var-chain: "\f0c1";
      -$fa-var-chain-broken: "\f127";
      -$fa-var-check: "\f00c";
      -$fa-var-check-circle: "\f058";
      -$fa-var-check-circle-o: "\f05d";
      -$fa-var-check-square: "\f14a";
      -$fa-var-check-square-o: "\f046";
      -$fa-var-chevron-circle-down: "\f13a";
      -$fa-var-chevron-circle-left: "\f137";
      -$fa-var-chevron-circle-right: "\f138";
      -$fa-var-chevron-circle-up: "\f139";
      -$fa-var-chevron-down: "\f078";
      -$fa-var-chevron-left: "\f053";
      -$fa-var-chevron-right: "\f054";
      -$fa-var-chevron-up: "\f077";
      -$fa-var-child: "\f1ae";
      -$fa-var-chrome: "\f268";
      -$fa-var-circle: "\f111";
      -$fa-var-circle-o: "\f10c";
      -$fa-var-circle-o-notch: "\f1ce";
      -$fa-var-circle-thin: "\f1db";
      -$fa-var-clipboard: "\f0ea";
      -$fa-var-clock-o: "\f017";
      -$fa-var-clone: "\f24d";
      -$fa-var-close: "\f00d";
      -$fa-var-cloud: "\f0c2";
      -$fa-var-cloud-download: "\f0ed";
      -$fa-var-cloud-upload: "\f0ee";
      -$fa-var-cny: "\f157";
      -$fa-var-code: "\f121";
      -$fa-var-code-fork: "\f126";
      -$fa-var-codepen: "\f1cb";
      -$fa-var-codiepie: "\f284";
      -$fa-var-coffee: "\f0f4";
      -$fa-var-cog: "\f013";
      -$fa-var-cogs: "\f085";
      -$fa-var-columns: "\f0db";
      -$fa-var-comment: "\f075";
      -$fa-var-comment-o: "\f0e5";
      -$fa-var-commenting: "\f27a";
      -$fa-var-commenting-o: "\f27b";
      -$fa-var-comments: "\f086";
      -$fa-var-comments-o: "\f0e6";
      -$fa-var-compass: "\f14e";
      -$fa-var-compress: "\f066";
      -$fa-var-connectdevelop: "\f20e";
      -$fa-var-contao: "\f26d";
      -$fa-var-copy: "\f0c5";
      -$fa-var-copyright: "\f1f9";
      -$fa-var-creative-commons: "\f25e";
      -$fa-var-credit-card: "\f09d";
      -$fa-var-credit-card-alt: "\f283";
      -$fa-var-crop: "\f125";
      -$fa-var-crosshairs: "\f05b";
      -$fa-var-css3: "\f13c";
      -$fa-var-cube: "\f1b2";
      -$fa-var-cubes: "\f1b3";
      -$fa-var-cut: "\f0c4";
      -$fa-var-cutlery: "\f0f5";
      -$fa-var-dashboard: "\f0e4";
      -$fa-var-dashcube: "\f210";
      -$fa-var-database: "\f1c0";
      -$fa-var-dedent: "\f03b";
      -$fa-var-delicious: "\f1a5";
      -$fa-var-desktop: "\f108";
      -$fa-var-deviantart: "\f1bd";
      -$fa-var-diamond: "\f219";
      -$fa-var-digg: "\f1a6";
      -$fa-var-dollar: "\f155";
      -$fa-var-dot-circle-o: "\f192";
      -$fa-var-download: "\f019";
      -$fa-var-dribbble: "\f17d";
      -$fa-var-dropbox: "\f16b";
      -$fa-var-drupal: "\f1a9";
      -$fa-var-edge: "\f282";
      -$fa-var-edit: "\f044";
      -$fa-var-eject: "\f052";
      -$fa-var-ellipsis-h: "\f141";
      -$fa-var-ellipsis-v: "\f142";
      -$fa-var-empire: "\f1d1";
      -$fa-var-envelope: "\f0e0";
      -$fa-var-envelope-o: "\f003";
      -$fa-var-envelope-square: "\f199";
      -$fa-var-eraser: "\f12d";
      -$fa-var-eur: "\f153";
      -$fa-var-euro: "\f153";
      -$fa-var-exchange: "\f0ec";
      -$fa-var-exclamation: "\f12a";
      -$fa-var-exclamation-circle: "\f06a";
      -$fa-var-exclamation-triangle: "\f071";
      -$fa-var-expand: "\f065";
      -$fa-var-expeditedssl: "\f23e";
      -$fa-var-external-link: "\f08e";
      -$fa-var-external-link-square: "\f14c";
      -$fa-var-eye: "\f06e";
      -$fa-var-eye-slash: "\f070";
      -$fa-var-eyedropper: "\f1fb";
      -$fa-var-facebook: "\f09a";
      -$fa-var-facebook-f: "\f09a";
      -$fa-var-facebook-official: "\f230";
      -$fa-var-facebook-square: "\f082";
      -$fa-var-fast-backward: "\f049";
      -$fa-var-fast-forward: "\f050";
      -$fa-var-fax: "\f1ac";
      -$fa-var-feed: "\f09e";
      -$fa-var-female: "\f182";
      -$fa-var-fighter-jet: "\f0fb";
      -$fa-var-file: "\f15b";
      -$fa-var-file-archive-o: "\f1c6";
      -$fa-var-file-audio-o: "\f1c7";
      -$fa-var-file-code-o: "\f1c9";
      -$fa-var-file-excel-o: "\f1c3";
      -$fa-var-file-image-o: "\f1c5";
      -$fa-var-file-movie-o: "\f1c8";
      -$fa-var-file-o: "\f016";
      -$fa-var-file-pdf-o: "\f1c1";
      -$fa-var-file-photo-o: "\f1c5";
      -$fa-var-file-picture-o: "\f1c5";
      -$fa-var-file-powerpoint-o: "\f1c4";
      -$fa-var-file-sound-o: "\f1c7";
      -$fa-var-file-text: "\f15c";
      -$fa-var-file-text-o: "\f0f6";
      -$fa-var-file-video-o: "\f1c8";
      -$fa-var-file-word-o: "\f1c2";
      -$fa-var-file-zip-o: "\f1c6";
      -$fa-var-files-o: "\f0c5";
      -$fa-var-film: "\f008";
      -$fa-var-filter: "\f0b0";
      -$fa-var-fire: "\f06d";
      -$fa-var-fire-extinguisher: "\f134";
      -$fa-var-firefox: "\f269";
      -$fa-var-flag: "\f024";
      -$fa-var-flag-checkered: "\f11e";
      -$fa-var-flag-o: "\f11d";
      -$fa-var-flash: "\f0e7";
      -$fa-var-flask: "\f0c3";
      -$fa-var-flickr: "\f16e";
      -$fa-var-floppy-o: "\f0c7";
      -$fa-var-folder: "\f07b";
      -$fa-var-folder-o: "\f114";
      -$fa-var-folder-open: "\f07c";
      -$fa-var-folder-open-o: "\f115";
      -$fa-var-font: "\f031";
      -$fa-var-fonticons: "\f280";
      -$fa-var-fort-awesome: "\f286";
      -$fa-var-forumbee: "\f211";
      -$fa-var-forward: "\f04e";
      -$fa-var-foursquare: "\f180";
      -$fa-var-frown-o: "\f119";
      -$fa-var-futbol-o: "\f1e3";
      -$fa-var-gamepad: "\f11b";
      -$fa-var-gavel: "\f0e3";
      -$fa-var-gbp: "\f154";
      -$fa-var-ge: "\f1d1";
      -$fa-var-gear: "\f013";
      -$fa-var-gears: "\f085";
      -$fa-var-genderless: "\f22d";
      -$fa-var-get-pocket: "\f265";
      -$fa-var-gg: "\f260";
      -$fa-var-gg-circle: "\f261";
      -$fa-var-gift: "\f06b";
      -$fa-var-git: "\f1d3";
      -$fa-var-git-square: "\f1d2";
      -$fa-var-github: "\f09b";
      -$fa-var-github-alt: "\f113";
      -$fa-var-github-square: "\f092";
      -$fa-var-gittip: "\f184";
      -$fa-var-glass: "\f000";
      -$fa-var-globe: "\f0ac";
      -$fa-var-google: "\f1a0";
      -$fa-var-google-plus: "\f0d5";
      -$fa-var-google-plus-square: "\f0d4";
      -$fa-var-google-wallet: "\f1ee";
      -$fa-var-graduation-cap: "\f19d";
      -$fa-var-gratipay: "\f184";
      -$fa-var-group: "\f0c0";
      -$fa-var-h-square: "\f0fd";
      -$fa-var-hacker-news: "\f1d4";
      -$fa-var-hand-grab-o: "\f255";
      -$fa-var-hand-lizard-o: "\f258";
      -$fa-var-hand-o-down: "\f0a7";
      -$fa-var-hand-o-left: "\f0a5";
      -$fa-var-hand-o-right: "\f0a4";
      -$fa-var-hand-o-up: "\f0a6";
      -$fa-var-hand-paper-o: "\f256";
      -$fa-var-hand-peace-o: "\f25b";
      -$fa-var-hand-pointer-o: "\f25a";
      -$fa-var-hand-rock-o: "\f255";
      -$fa-var-hand-scissors-o: "\f257";
      -$fa-var-hand-spock-o: "\f259";
      -$fa-var-hand-stop-o: "\f256";
      -$fa-var-hashtag: "\f292";
      -$fa-var-hdd-o: "\f0a0";
      -$fa-var-header: "\f1dc";
      -$fa-var-headphones: "\f025";
      -$fa-var-heart: "\f004";
      -$fa-var-heart-o: "\f08a";
      -$fa-var-heartbeat: "\f21e";
      -$fa-var-history: "\f1da";
      -$fa-var-home: "\f015";
      -$fa-var-hospital-o: "\f0f8";
      -$fa-var-hotel: "\f236";
      -$fa-var-hourglass: "\f254";
      -$fa-var-hourglass-1: "\f251";
      -$fa-var-hourglass-2: "\f252";
      -$fa-var-hourglass-3: "\f253";
      -$fa-var-hourglass-end: "\f253";
      -$fa-var-hourglass-half: "\f252";
      -$fa-var-hourglass-o: "\f250";
      -$fa-var-hourglass-start: "\f251";
      -$fa-var-houzz: "\f27c";
      -$fa-var-html5: "\f13b";
      -$fa-var-i-cursor: "\f246";
      -$fa-var-ils: "\f20b";
      -$fa-var-image: "\f03e";
      -$fa-var-inbox: "\f01c";
      -$fa-var-indent: "\f03c";
      -$fa-var-industry: "\f275";
      -$fa-var-info: "\f129";
      -$fa-var-info-circle: "\f05a";
      -$fa-var-inr: "\f156";
      -$fa-var-instagram: "\f16d";
      -$fa-var-institution: "\f19c";
      -$fa-var-internet-explorer: "\f26b";
      -$fa-var-intersex: "\f224";
      -$fa-var-ioxhost: "\f208";
      -$fa-var-italic: "\f033";
      -$fa-var-joomla: "\f1aa";
      -$fa-var-jpy: "\f157";
      -$fa-var-jsfiddle: "\f1cc";
      -$fa-var-key: "\f084";
      -$fa-var-keyboard-o: "\f11c";
      -$fa-var-krw: "\f159";
      -$fa-var-language: "\f1ab";
      -$fa-var-laptop: "\f109";
      -$fa-var-lastfm: "\f202";
      -$fa-var-lastfm-square: "\f203";
      -$fa-var-leaf: "\f06c";
      -$fa-var-leanpub: "\f212";
      -$fa-var-legal: "\f0e3";
      -$fa-var-lemon-o: "\f094";
      -$fa-var-level-down: "\f149";
      -$fa-var-level-up: "\f148";
      -$fa-var-life-bouy: "\f1cd";
      -$fa-var-life-buoy: "\f1cd";
      -$fa-var-life-ring: "\f1cd";
      -$fa-var-life-saver: "\f1cd";
      -$fa-var-lightbulb-o: "\f0eb";
      -$fa-var-line-chart: "\f201";
      -$fa-var-link: "\f0c1";
      -$fa-var-linkedin: "\f0e1";
      -$fa-var-linkedin-square: "\f08c";
      -$fa-var-linux: "\f17c";
      -$fa-var-list: "\f03a";
      -$fa-var-list-alt: "\f022";
      -$fa-var-list-ol: "\f0cb";
      -$fa-var-list-ul: "\f0ca";
      -$fa-var-location-arrow: "\f124";
      -$fa-var-lock: "\f023";
      -$fa-var-long-arrow-down: "\f175";
      -$fa-var-long-arrow-left: "\f177";
      -$fa-var-long-arrow-right: "\f178";
      -$fa-var-long-arrow-up: "\f176";
      -$fa-var-magic: "\f0d0";
      -$fa-var-magnet: "\f076";
      -$fa-var-mail-forward: "\f064";
      -$fa-var-mail-reply: "\f112";
      -$fa-var-mail-reply-all: "\f122";
      -$fa-var-male: "\f183";
      -$fa-var-map: "\f279";
      -$fa-var-map-marker: "\f041";
      -$fa-var-map-o: "\f278";
      -$fa-var-map-pin: "\f276";
      -$fa-var-map-signs: "\f277";
      -$fa-var-mars: "\f222";
      -$fa-var-mars-double: "\f227";
      -$fa-var-mars-stroke: "\f229";
      -$fa-var-mars-stroke-h: "\f22b";
      -$fa-var-mars-stroke-v: "\f22a";
      -$fa-var-maxcdn: "\f136";
      -$fa-var-meanpath: "\f20c";
      -$fa-var-medium: "\f23a";
      -$fa-var-medkit: "\f0fa";
      -$fa-var-meh-o: "\f11a";
      -$fa-var-mercury: "\f223";
      -$fa-var-microphone: "\f130";
      -$fa-var-microphone-slash: "\f131";
      -$fa-var-minus: "\f068";
      -$fa-var-minus-circle: "\f056";
      -$fa-var-minus-square: "\f146";
      -$fa-var-minus-square-o: "\f147";
      -$fa-var-mixcloud: "\f289";
      -$fa-var-mobile: "\f10b";
      -$fa-var-mobile-phone: "\f10b";
      -$fa-var-modx: "\f285";
      -$fa-var-money: "\f0d6";
      -$fa-var-moon-o: "\f186";
      -$fa-var-mortar-board: "\f19d";
      -$fa-var-motorcycle: "\f21c";
      -$fa-var-mouse-pointer: "\f245";
      -$fa-var-music: "\f001";
      -$fa-var-navicon: "\f0c9";
      -$fa-var-neuter: "\f22c";
      -$fa-var-newspaper-o: "\f1ea";
      -$fa-var-object-group: "\f247";
      -$fa-var-object-ungroup: "\f248";
      -$fa-var-odnoklassniki: "\f263";
      -$fa-var-odnoklassniki-square: "\f264";
      -$fa-var-opencart: "\f23d";
      -$fa-var-openid: "\f19b";
      -$fa-var-opera: "\f26a";
      -$fa-var-optin-monster: "\f23c";
      -$fa-var-outdent: "\f03b";
      -$fa-var-pagelines: "\f18c";
      -$fa-var-paint-brush: "\f1fc";
      -$fa-var-paper-plane: "\f1d8";
      -$fa-var-paper-plane-o: "\f1d9";
      -$fa-var-paperclip: "\f0c6";
      -$fa-var-paragraph: "\f1dd";
      -$fa-var-paste: "\f0ea";
      -$fa-var-pause: "\f04c";
      -$fa-var-pause-circle: "\f28b";
      -$fa-var-pause-circle-o: "\f28c";
      -$fa-var-paw: "\f1b0";
      -$fa-var-paypal: "\f1ed";
      -$fa-var-pencil: "\f040";
      -$fa-var-pencil-square: "\f14b";
      -$fa-var-pencil-square-o: "\f044";
      -$fa-var-percent: "\f295";
      -$fa-var-phone: "\f095";
      -$fa-var-phone-square: "\f098";
      -$fa-var-photo: "\f03e";
      -$fa-var-picture-o: "\f03e";
      -$fa-var-pie-chart: "\f200";
      -$fa-var-pied-piper: "\f1a7";
      -$fa-var-pied-piper-alt: "\f1a8";
      -$fa-var-pinterest: "\f0d2";
      -$fa-var-pinterest-p: "\f231";
      -$fa-var-pinterest-square: "\f0d3";
      -$fa-var-plane: "\f072";
      -$fa-var-play: "\f04b";
      -$fa-var-play-circle: "\f144";
      -$fa-var-play-circle-o: "\f01d";
      -$fa-var-plug: "\f1e6";
      -$fa-var-plus: "\f067";
      -$fa-var-plus-circle: "\f055";
      -$fa-var-plus-square: "\f0fe";
      -$fa-var-plus-square-o: "\f196";
      -$fa-var-power-off: "\f011";
      -$fa-var-print: "\f02f";
      -$fa-var-product-hunt: "\f288";
      -$fa-var-puzzle-piece: "\f12e";
      -$fa-var-qq: "\f1d6";
      -$fa-var-qrcode: "\f029";
      -$fa-var-question: "\f128";
      -$fa-var-question-circle: "\f059";
      -$fa-var-quote-left: "\f10d";
      -$fa-var-quote-right: "\f10e";
      -$fa-var-ra: "\f1d0";
      -$fa-var-random: "\f074";
      -$fa-var-rebel: "\f1d0";
      -$fa-var-recycle: "\f1b8";
      -$fa-var-reddit: "\f1a1";
      -$fa-var-reddit-alien: "\f281";
      -$fa-var-reddit-square: "\f1a2";
      -$fa-var-refresh: "\f021";
      -$fa-var-registered: "\f25d";
      -$fa-var-remove: "\f00d";
      -$fa-var-renren: "\f18b";
      -$fa-var-reorder: "\f0c9";
      -$fa-var-repeat: "\f01e";
      -$fa-var-reply: "\f112";
      -$fa-var-reply-all: "\f122";
      -$fa-var-retweet: "\f079";
      -$fa-var-rmb: "\f157";
      -$fa-var-road: "\f018";
      -$fa-var-rocket: "\f135";
      -$fa-var-rotate-left: "\f0e2";
      -$fa-var-rotate-right: "\f01e";
      -$fa-var-rouble: "\f158";
      -$fa-var-rss: "\f09e";
      -$fa-var-rss-square: "\f143";
      -$fa-var-rub: "\f158";
      -$fa-var-ruble: "\f158";
      -$fa-var-rupee: "\f156";
      -$fa-var-safari: "\f267";
      -$fa-var-save: "\f0c7";
      -$fa-var-scissors: "\f0c4";
      -$fa-var-scribd: "\f28a";
      -$fa-var-search: "\f002";
      -$fa-var-search-minus: "\f010";
      -$fa-var-search-plus: "\f00e";
      -$fa-var-sellsy: "\f213";
      -$fa-var-send: "\f1d8";
      -$fa-var-send-o: "\f1d9";
      -$fa-var-server: "\f233";
      -$fa-var-share: "\f064";
      -$fa-var-share-alt: "\f1e0";
      -$fa-var-share-alt-square: "\f1e1";
      -$fa-var-share-square: "\f14d";
      -$fa-var-share-square-o: "\f045";
      -$fa-var-shekel: "\f20b";
      -$fa-var-sheqel: "\f20b";
      -$fa-var-shield: "\f132";
      -$fa-var-ship: "\f21a";
      -$fa-var-shirtsinbulk: "\f214";
      -$fa-var-shopping-bag: "\f290";
      -$fa-var-shopping-basket: "\f291";
      -$fa-var-shopping-cart: "\f07a";
      -$fa-var-sign-in: "\f090";
      -$fa-var-sign-out: "\f08b";
      -$fa-var-signal: "\f012";
      -$fa-var-simplybuilt: "\f215";
      -$fa-var-sitemap: "\f0e8";
      -$fa-var-skyatlas: "\f216";
      -$fa-var-skype: "\f17e";
      -$fa-var-slack: "\f198";
      -$fa-var-sliders: "\f1de";
      -$fa-var-slideshare: "\f1e7";
      -$fa-var-smile-o: "\f118";
      -$fa-var-soccer-ball-o: "\f1e3";
      -$fa-var-sort: "\f0dc";
      -$fa-var-sort-alpha-asc: "\f15d";
      -$fa-var-sort-alpha-desc: "\f15e";
      -$fa-var-sort-amount-asc: "\f160";
      -$fa-var-sort-amount-desc: "\f161";
      -$fa-var-sort-asc: "\f0de";
      -$fa-var-sort-desc: "\f0dd";
      -$fa-var-sort-down: "\f0dd";
      -$fa-var-sort-numeric-asc: "\f162";
      -$fa-var-sort-numeric-desc: "\f163";
      -$fa-var-sort-up: "\f0de";
      -$fa-var-soundcloud: "\f1be";
      -$fa-var-space-shuttle: "\f197";
      -$fa-var-spinner: "\f110";
      -$fa-var-spoon: "\f1b1";
      -$fa-var-spotify: "\f1bc";
      -$fa-var-square: "\f0c8";
      -$fa-var-square-o: "\f096";
      -$fa-var-stack-exchange: "\f18d";
      -$fa-var-stack-overflow: "\f16c";
      -$fa-var-star: "\f005";
      -$fa-var-star-half: "\f089";
      -$fa-var-star-half-empty: "\f123";
      -$fa-var-star-half-full: "\f123";
      -$fa-var-star-half-o: "\f123";
      -$fa-var-star-o: "\f006";
      -$fa-var-steam: "\f1b6";
      -$fa-var-steam-square: "\f1b7";
      -$fa-var-step-backward: "\f048";
      -$fa-var-step-forward: "\f051";
      -$fa-var-stethoscope: "\f0f1";
      -$fa-var-sticky-note: "\f249";
      -$fa-var-sticky-note-o: "\f24a";
      -$fa-var-stop: "\f04d";
      -$fa-var-stop-circle: "\f28d";
      -$fa-var-stop-circle-o: "\f28e";
      -$fa-var-street-view: "\f21d";
      -$fa-var-strikethrough: "\f0cc";
      -$fa-var-stumbleupon: "\f1a4";
      -$fa-var-stumbleupon-circle: "\f1a3";
      -$fa-var-subscript: "\f12c";
      -$fa-var-subway: "\f239";
      -$fa-var-suitcase: "\f0f2";
      -$fa-var-sun-o: "\f185";
      -$fa-var-superscript: "\f12b";
      -$fa-var-support: "\f1cd";
      -$fa-var-table: "\f0ce";
      -$fa-var-tablet: "\f10a";
      -$fa-var-tachometer: "\f0e4";
      -$fa-var-tag: "\f02b";
      -$fa-var-tags: "\f02c";
      -$fa-var-tasks: "\f0ae";
      -$fa-var-taxi: "\f1ba";
      -$fa-var-television: "\f26c";
      -$fa-var-tencent-weibo: "\f1d5";
      -$fa-var-terminal: "\f120";
      -$fa-var-text-height: "\f034";
      -$fa-var-text-width: "\f035";
      -$fa-var-th: "\f00a";
      -$fa-var-th-large: "\f009";
      -$fa-var-th-list: "\f00b";
      -$fa-var-thumb-tack: "\f08d";
      -$fa-var-thumbs-down: "\f165";
      -$fa-var-thumbs-o-down: "\f088";
      -$fa-var-thumbs-o-up: "\f087";
      -$fa-var-thumbs-up: "\f164";
      -$fa-var-ticket: "\f145";
      -$fa-var-times: "\f00d";
      -$fa-var-times-circle: "\f057";
      -$fa-var-times-circle-o: "\f05c";
      -$fa-var-tint: "\f043";
      -$fa-var-toggle-down: "\f150";
      -$fa-var-toggle-left: "\f191";
      -$fa-var-toggle-off: "\f204";
      -$fa-var-toggle-on: "\f205";
      -$fa-var-toggle-right: "\f152";
      -$fa-var-toggle-up: "\f151";
      -$fa-var-trademark: "\f25c";
      -$fa-var-train: "\f238";
      -$fa-var-transgender: "\f224";
      -$fa-var-transgender-alt: "\f225";
      -$fa-var-trash: "\f1f8";
      -$fa-var-trash-o: "\f014";
      -$fa-var-tree: "\f1bb";
      -$fa-var-trello: "\f181";
      -$fa-var-tripadvisor: "\f262";
      -$fa-var-trophy: "\f091";
      -$fa-var-truck: "\f0d1";
      -$fa-var-try: "\f195";
      -$fa-var-tty: "\f1e4";
      -$fa-var-tumblr: "\f173";
      -$fa-var-tumblr-square: "\f174";
      -$fa-var-turkish-lira: "\f195";
      -$fa-var-tv: "\f26c";
      -$fa-var-twitch: "\f1e8";
      -$fa-var-twitter: "\f099";
      -$fa-var-twitter-square: "\f081";
      -$fa-var-umbrella: "\f0e9";
      -$fa-var-underline: "\f0cd";
      -$fa-var-undo: "\f0e2";
      -$fa-var-university: "\f19c";
      -$fa-var-unlink: "\f127";
      -$fa-var-unlock: "\f09c";
      -$fa-var-unlock-alt: "\f13e";
      -$fa-var-unsorted: "\f0dc";
      -$fa-var-upload: "\f093";
      -$fa-var-usb: "\f287";
      -$fa-var-usd: "\f155";
      -$fa-var-user: "\f007";
      -$fa-var-user-md: "\f0f0";
      -$fa-var-user-plus: "\f234";
      -$fa-var-user-secret: "\f21b";
      -$fa-var-user-times: "\f235";
      -$fa-var-users: "\f0c0";
      -$fa-var-venus: "\f221";
      -$fa-var-venus-double: "\f226";
      -$fa-var-venus-mars: "\f228";
      -$fa-var-viacoin: "\f237";
      -$fa-var-video-camera: "\f03d";
      -$fa-var-vimeo: "\f27d";
      -$fa-var-vimeo-square: "\f194";
      -$fa-var-vine: "\f1ca";
      -$fa-var-vk: "\f189";
      -$fa-var-volume-down: "\f027";
      -$fa-var-volume-off: "\f026";
      -$fa-var-volume-up: "\f028";
      -$fa-var-warning: "\f071";
      -$fa-var-wechat: "\f1d7";
      -$fa-var-weibo: "\f18a";
      -$fa-var-weixin: "\f1d7";
      -$fa-var-whatsapp: "\f232";
      -$fa-var-wheelchair: "\f193";
      -$fa-var-wifi: "\f1eb";
      -$fa-var-wikipedia-w: "\f266";
      -$fa-var-windows: "\f17a";
      -$fa-var-won: "\f159";
      -$fa-var-wordpress: "\f19a";
      -$fa-var-wrench: "\f0ad";
      -$fa-var-xing: "\f168";
      -$fa-var-xing-square: "\f169";
      -$fa-var-y-combinator: "\f23b";
      -$fa-var-y-combinator-square: "\f1d4";
      -$fa-var-yahoo: "\f19e";
      -$fa-var-yc: "\f23b";
      -$fa-var-yc-square: "\f1d4";
      -$fa-var-yelp: "\f1e9";
      -$fa-var-yen: "\f157";
      -$fa-var-youtube: "\f167";
      -$fa-var-youtube-play: "\f16a";
      -$fa-var-youtube-square: "\f166";
      -
      diff --git a/bower_components/select2/docs/announcements-4.0.html b/bower_components/select2/docs/announcements-4.0.html
      deleted file mode 100644
      index 165af9ee85..0000000000
      --- a/bower_components/select2/docs/announcements-4.0.html
      +++ /dev/null
      @@ -1,752 +0,0 @@
      ----
      -layout: default
      -title: Select2 4.0.0 Released
      -slug: announcements-4.0
      ----
      -<section id="pre-release" class="jumbotron">
      -  <div class="container">
      -    <h1>Announcing Select2 4.0.0</h1>
      -  </div>
      -</section>
      -
      -<div class="container s2-docs-container">
      -  <div class="row">
      -    <div class="col-md-9" role="main">
      -
      -      <section id="release">
      -        <h1 class="page-header">Select2 4.0.0</h1>
      -
      -        <p class="lead">
      -          The 4.0 release of Select2 is the result of three years of working on the
      -          code base and watching where it needs to go. At the core, it is a full
      -          rewrite that addresses many of the extensibility and usability problems
      -          that could not be addressed in previous versions.
      -        </p>
      -
      -        <p>
      -          This release contains many breaking changes, but easy-upgrade paths have
      -          been created as well as helper modules that will allow for backwards
      -          compatibility to be maintained with past versions of Select2. Upgrading
      -          <em>will</em> require you to read the release notes carefully, but the
      -          migration path should be relatively straightforward. You can view a list
      -          of the most common changes that you will need to make
      -          <a href="https://github.com/select2/select2/releases">in the release notes</a>.
      -        </p>
      -
      -        <p>
      -          Below is an in-depth review of what is new in Select2, as well as some of
      -          the major changes that have been made.
      -        </p>
      -      </section>
      -
      -      <section id="new">
      -        <h2>New features</h2>
      -
      -        <p>
      -          The notable features of this new release include:
      -        </p>
      -
      -        <ul>
      -          <li>
      -            A more flexible plugin framework that allows you to override Select2 to
      -            behave exactly how you want it to.
      -          </li>
      -          <li>
      -            Consistency with standard <code>&lt;select&gt;</code> elements for all
      -            data adapters, removing the need for hidden <code>&lt;input&gt;</code>
      -            elements.
      -          </li>
      -          <li>
      -            A new build system that uses AMD to keep everything organized.
      -          </li>
      -          <li>
      -            Less specific selectors allowing for Select2 to be styled to fit the
      -            rest of your application.
      -          </li>
      -        </ul>
      -      </section>
      -
      -      <section id="plugins">
      -        <h2>Plugin system</h2>
      -
      -        <p>
      -          Select2 now provides interfaces that allow for it to be easily extended,
      -          allowing for anyone to create a plugin that changes the way Select2 works.
      -          This is the result of Select2 being broken into four distinct sections,
      -          each of which can be extended and used together to create your unique
      -          Select2.
      -        </p>
      -
      -        <p>
      -          The adapters implement a consistent interface that is documented in the
      -          <a href="options.html#adapters">options section for adapters</a>, allowing
      -          you to customize Select2 to do exactly what you are looking for. Select2
      -          is designed such that you can mix and match plugins, with most of the core
      -          options being built as decorators that wrap the standard adapters.
      -        </p>
      -      </section>
      -
      -      <section id="amd-builds">
      -        <h2>AMD-based build system</h2>
      -
      -        <p>
      -          Select2 now uses an
      -          <a href="https://en.wikipedia.org/wiki/Asynchronous_module_definition">AMD-based build system</a>,
      -          allowing for builds that only require the parts of Select2 that you need.
      -          While a custom build system has not yet been created, Select2 is open
      -          source and will gladly accept a pull request for one.
      -        </p>
      -
      -        <p>
      -          Select2 includes the minimal <a href="https://github.com/jrburke/almond">almond</a>
      -          AMD loader, but a custom <code>select2.amd.js</code> build is available
      -          if you already use an AMD loader. The code base (available in the
      -          <code>src</code> directory) also uses AMD, allowing you to include Select2
      -          in your own build system and generate your own builds alongside your
      -          existing infrastructure.
      -        </p>
      -
      -        <p>
      -          The AMD methods used by Select2 are available as
      -          <code>jQuery.fn.select2.amd.define()/require()</code>, allowing you to use the
      -          included almond loader. These methods are primarily used by the
      -          translations, but they are the recommended way to access custom modules
      -          that Select2 provides.
      -        </p>
      -      </section>
      -
      -      <section id="migrating">
      -        <h1>Migrating from Select2 3.5</h1>
      -
      -        <p>
      -          There are a few breaking changes that migrators should be aware of when
      -          they are coming from older versions of Select2.
      -        </p>
      -
      -        <p>
      -          If you use the full build of Select2 (<code>select2.full.js</code>), you
      -          will be automatically notified of the major breaking changes, and
      -          compatibility modules will be used in some cases to ensure that your code
      -          still behaves how you were expecting.
      -        </p>
      -
      -        <h2 id="hidden-input">No more hidden input tags</h2>
      -
      -        <p>
      -          In past versions of Select2, an <code>&lt;input type="hidden" /&gt;</code>
      -          tag was recommended if you wanted to do anything advanced with Select2,
      -          such as work with remote data sources or allow users to add their own
      -          tags. This had the unfortunate side-effect of servers not receiving the
      -          data from Select2 as an array, like a standard <code>&lt;select&gt;</code>
      -          element does, but instead sending a string containing the comma-separated
      -          strings. The code base ended up being littered with special cases for the
      -          hidden input, and libraries using Select2 had to work around the
      -          differences it caused.
      -        </p>
      -
      -        <p>
      -          In Select2 4.0, the <code>&lt;select&gt;</code> element supports all core
      -          options, and support for the old
      -          <code>&lt;input type="hidden" /&gt;</code> has been deprecated. This means
      -          that if you previously declared an AJAX field with some pre-selected
      -          options that looked like…
      -        </p>
      -
      -{% highlight html linenos %}
      -<input type="hidden" name="select-boxes" value="1,2,4,6" />
      -{% endhighlight %}
      -
      -        <p>
      -          It will need to be recreated as a <code>&lt;select&gt;</code> element with
      -          some <code>&lt;option&gt;</code> tags that have <code>value</code>
      -          attributes that match the old value.
      -        </p>
      -
      -{% highlight html linenos %}
      -<select name="select-boxes" multiple="multiple">
      -  <option value="1" selected="selected">Select2</option>
      -  <option value="2" selected="selected">Chosen</option>
      -  <option value="4" selected="selected">selectize.js</option>
      -  <option value="6" selected="selected">typeahead.js</option>
      -</select>
      -{% endhighlight %}
      -
      -        <p>
      -          The options that you create should have <code>selected="selected"</code>
      -          set so Select2 and the browser knows that they should be selected. The
      -          <code>value</code> attribute of the option should also be set to the value
      -          that will be returned from the server for the result, so Select2 can
      -          highlight it as selected in the dropdown. The text within the option
      -          should also reflect the value that should be displayed by default for the
      -          option.
      -        </p>
      -
      -        <h2 id="new-matcher">Advanced matching of searches</h2>
      -
      -        <p>
      -          In past versions of Select2, when matching search terms to individual
      -          options, which limited the control that you had when displaying results,
      -          especially in cases where there was nested data. The <code>matcher</code>
      -          function was only given the individual option, even if it was a nested
      -          options, without any context.
      -        </p>
      -
      -        <p>
      -          With the new matcher function, only the root-level options are matched and
      -          matchers are expected to limit the results of any children options that
      -          they contain. This allows developers to customize how options within
      -          groups can be displayed, and modify how the results are returned.
      -        </p>
      -
      -        <p>
      -          A function has been created that allows old-style matcher functions to be
      -          converted to the new style. You can retrieve the function from the
      -          <code>select2/compat/matcher</code> module, which should just wrap the old
      -          matcher function.
      -        </p>
      -
      -        <p>
      -          So if your old code used a matcher that only displayed options if they
      -          started with the term that was entered, it would look something like…
      -        </p>
      -
      -{% highlight js linenos %}
      -function matchStart (term, text) {
      -  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
      -    return true;
      -  }
      -
      -  return false;
      -}
      -
      -$("select").select2({
      -  matcher: matchStart
      -})
      -{% endhighlight %}
      -
      -        <p>
      -          Then in Select2 4.0, you would need to wrap the <code>matchStart</code>
      -          method (or the name of the matcher you created) with a
      -          <code>oldMatcher</code> method that we have created.
      -        </p>
      -
      -{% highlight js linenos %}
      -function matchStart (term, text) {
      -  if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
      -    return true;
      -  }
      -
      -  return false;
      -}
      -
      -$.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
      -  $("select").select2({
      -    matcher: oldMatcher(matchStart)
      -  })
      -});
      -{% endhighlight %}
      -
      -        <p>
      -          This will work for any matchers that only took in the search term and the
      -          text of the option as parameters. If your matcher relied on the third
      -          parameter containing the jQuery element representing the original
      -          <code>&lt;option&gt;</code> tag, then you may need to slightly change
      -          your matcher to expect the full JavaScript data object being passed in
      -          instead. You can still retrieve the jQuery element from the data object
      -          using the <code>data.element</code> property.
      -        </p>
      -
      -        <h2 id="flexible-placeholders">More flexible placeholders</h2>
      -
      -        <p>
      -          In the most recent versions of Select2, placeholders could only be
      -          applied to the first (typically the default) option in a
      -          <code>&lt;select&gt;</code> if it was blank. The
      -          <code>placeholderOption</code> option was added to Select2 to allow users
      -          using the <code>select</code> tag to select a different option, typically
      -          an automatically generated option with a different value.
      -        </p>
      -
      -        <p>
      -          The <code>placeholder</code> option can now take an object as well as just
      -          a string. This replaces the need for the old
      -          <code>placeholderOption</code>, as now the <code>id</code> of the object
      -          can be set to the <code>value</code> attribute of the
      -          <code>&lt;option&gt;</code> tag.
      -        </p>
      -
      -        <p>
      -          For a select that looks like the following, where the first option (with a
      -          value of <code>-1</code>) is the placeholder option…
      -        </p>
      -
      -{% highlight html linenos %}
      -<select>
      -  <option value="-1" selected="selected">Select an option</option>
      -  <option value="1">Something else</option>
      -</select>
      -{% endhighlight %}
      -
      -        <p>
      -          You would have previously had to get the placeholder option through the
      -          <code>placeholderOption</code>, but now you can do it through the
      -          <code>placeholder</code> option by setting an <code>id</code>.
      -        </p>
      -
      -{% highlight js linenos %}
      -$("select").select2({
      -  placeholder: {
      -    id: "-1",
      -    placeholder: "Select an option"
      -  }
      -})
      -{% endhighlight %}
      -
      -        <p>
      -          And Select2 will automatically display the placeholder when the value of
      -          the select is <code>-1</code>, which it will be by default. This does not
      -          break the old functionality of Select2 where the placeholder option was
      -          blank by default.
      -        </p>
      -
      -        <h2 id="value-ordering">Display reflects the actual order of the values</h2>
      -
      -        <p>
      -          In past versions of Select2, choices were displayed in the order that
      -          they were selected. In cases where Select2 was used on a
      -          <code>&lt;select&gt;</code> element, the order that the server received
      -          the selections did not always match the order that the choices were
      -          displayed, resulting in confusion in situations where the order is
      -          important.
      -        </p>
      -
      -        <p>
      -          Select2 will now order selected choices in the same order that will be
      -          sent to the server.
      -        </p>
      -
      -        <h2 id="changed-options">Changed method and option names</h2>
      -
      -        <p>
      -          When designing the future option set for Select2 4.0, special care was
      -          taken to ensure that the most commonly used options were brought over.
      -          For the most part, the commonly used options of Select2 can still be
      -          referenced under their previous names, but there were some changes which
      -          have been noted.
      -        </p>
      -
      -        <h3 id="removed-initselection">
      -          Removed the requirement of <code>initSelection</code>
      -        </h3>
      -
      -        <p>
      -          In the past, whenever you wanted to use a custom data adapter, such as
      -          AJAX or tagging, you needed to help Select2 out in determining the initial
      -          values that were selected. This was typically done through the
      -          <code>initSelection</code> option, which took the underlying data of the
      -          input and converted it into data objects that Select2 could use.
      -        </p>
      -
      -        <p>
      -          This is now handled by
      -          <a href="options.html#dataAdapter">the data adapter</a> in the
      -          <code>current</code> method, which allows Select2 to convert the currently
      -          selected values into data objects that can be displayed. The default
      -          implementation converts the text and value of <code>option</code> elements
      -          into data objects, and is probably suitable for most cases. An example of
      -          the old <code>initSelection</code> option is included below, which
      -          converts the value of the selected options into a data object with both
      -          the <code>id</code> and <code>text</code> matching the selected value.
      -        </p>
      -
      -{% highlight js linenos %}
      -{
      -  initSelection : function (element, callback) {
      -    var data = [];
      -    $(element.val()).each(function () {
      -      data.push({id: this, text: this});
      -    });
      -    callback(data);
      -  }
      -}
      -{% endhighlight %}
      -
      -        <p>
      -          When using the new <code>current</code> method of the custom data adapter,
      -          <strong>this method is called any time Select2 needs a list</strong> of
      -          the currently selected options. This is different from the old
      -          <code>initSelection</code> in that it was only called once, so it could
      -          suffer from being relatively slow to process the data (such as from a
      -          remote data source).
      -        </p>
      -
      -{% highlight js linenos %}
      -$.fn.select2.amd.require([
      -  'select2/data/array',
      -  'select2/utils'
      -], function (ArrayData, Utils) {
      -  function CustomData ($element, options) {
      -    CustomData.__super__.constructor.call(this, $element, options);
      -  }
      -
      -  Utils.Extend(CustomData, ArrayData);
      -
      -  CustomData.prototype.current = function (callback) {
      -    var data = [];
      -    var currentVal = this.$element.val();
      -
      -    if (!this.$element.prop('multiple')) {
      -      currentVal = [currentVal];
      -    }
      -
      -    for (var v = 0; v < currentVal.length; v++) {
      -      data.push({
      -        id: currentVal[v],
      -        text: currentVal[v]
      -      });
      -    }
      -
      -    callback(data);
      -  };
      -
      -  $("#select").select2({
      -    dataAdapter: CustomData
      -  });
      -}
      -{% endhighlight %}
      -
      -        <p>
      -          The new <code>current</code> method of the data adapter works in a similar
      -          way to the old <code>initSelection</code> method, with three notable
      -          differences. The first, and most important, is that <strong>it is called
      -          whenever the current selections are needed</strong> to ensure that Select2
      -          is always displaying the most accurate and up to date data. No matter
      -          what type of element Select2 is attached to, whether it supports a
      -          single or multiple selections, the data passed to the callback
      -          <strong>must be an array, even if it contains one selection</strong>.
      -          The last is that there is only one parameter, the callback to be
      -          executed with the latest data, and the current element that Select2 is
      -          attached to is available on the class itself as
      -          <code>this.$element</code>.
      -        </p>
      -
      -        <p>
      -          If you only need to load in the initial options once, and otherwise will
      -          be letting Select2 handle the state of the selections, you don't need to
      -          use a custom data adapter. You can just create the
      -          <code>&lt;option&gt;</code> tags on your own, and Select2 will pick up
      -          the changes.
      -        </p>
      -
      -{% highlight js linenos %}
      -var $element = $('select').select2(); // the select element you are working with
      -
      -var $request = $.ajax({
      -  url: '/my/remote/source' // wherever your data is actually coming from
      -});
      -
      -$request.then(function (data) {
      -  // This assumes that the data comes back as an array of data objects
      -  // The idea is that you are using the same callback as the old `initSelection`
      -
      -  for (var d = 0; d < data.length; d++) {
      -    var item = data[d];
      -
      -    // Create the DOM option that is pre-selected by default
      -    var option = new Option(item.text, item.id, true, true);
      -
      -    // Append it to the select
      -    $element.append(option);
      -  }
      -
      -  // Update the selected options that are displayed
      -  $element.trigger('change');
      -});
      -{% endhighlight %}
      -
      -        <h3 id="query-to-data-adapter">
      -          Custom data adapters instead of <code>query</code>
      -        </h3>
      -
      -        <p>
      -          <a href="http://select2.github.io/select2/#data">In the past</a>, any time
      -          you wanted to hook Select2 up to a different data source you would be
      -          required to implement custom <code>query</code> and
      -          <code>initSelection</code> methods. This allowed Select2 to determine the
      -          initial selection and the list of results to display, and it would handle
      -          everything else internally, which was fine more most people.
      -        </p>
      -
      -        <p>
      -          The custom <code>query</code> and <code>initSelection</code> methods have
      -          been replaced by
      -          <a href="options.html#dataAdapter">custom data adapters</a> that handle
      -          how Select2 stores and retrieves the data that will be displayed to the
      -          user. An example of the old <code>query</code> option is provided below,
      -          which is
      -          <a href="http://select2.github.io/select2/#data">the same as the old example</a>,
      -          and it generates results that contain the search term repeated a certain
      -          number of times.
      -        </p>
      -
      -{% highlight js linenos %}
      -{
      -  query: function (query) {
      -    var data = {results: []}, i, j, s;
      -    for (i = 1; i < 5; i++) {
      -      s = "";
      -      for (j = 0; j < i; j++) {s = s + query.term;}
      -      data.results.push({id: query.term + i, text: s});
      -    }
      -    query.callback(data);
      -  }
      -}
      -{% endhighlight %}
      -
      -        <p>
      -          This has been replaced by custom data adapters which define a similarly
      -          named <code>query</code> method. The comparable data adapter is provided
      -          below as an example.
      -        </p>
      -
      -{% highlight js linenos %}
      -$.fn.select2.amd.require([
      -  'select2/data/array',
      -  'select2/utils'
      -], function (ArrayData, Utils) {
      -  function CustomData ($element, options) {
      -    CustomData.__super__.constructor.call(this, $element, options);
      -  }
      -
      -  Utils.Extend(CustomData, ArrayData);
      -
      -  CustomData.prototype.query = function (params, callback) {
      -    var data = {
      -      results: []
      -    };
      -
      -    for (var i = 1; i < 5; i++) {
      -      var s = "";
      -
      -      for (var j = 0; j < i; j++) {
      -        s = s + params.term;
      -      }
      -
      -      data.results.push({
      -        id: params.term + i,
      -        text: s
      -      });
      -    }
      -
      -    callback(data);
      -  };
      -
      -  $("#select").select2({
      -    dataAdapter: CustomData
      -  });
      -}
      -{% endhighlight %}
      -
      -        <p>
      -          The new <code>query</code> method of the data adapter is very similar to
      -          the old <code>query</code> option that was passed into Select2 when
      -          initializing it. The old <code>query</code> argument is mostly the same as
      -          the new <code>params</code> that are passed in to query on, and the
      -          callback that should be used to return the results is now passed in as the
      -          second parameter.
      -        </p>
      -
      -        <h3 id="changed-templating">Renamed templating options</h3>
      -
      -        <p>
      -          Select2 previously provided multiple options for formatting the results
      -          list and selected options, commonly referred to as "formatters", using the
      -          <code>formatSelection</code> and <code>formatResult</code> options. As the
      -          "formatters" were also used for things such as localization,
      -          <a href="#changed-translations">which has also changed</a>, they have been
      -          renamed to <code>templateSelection</code> and <code>templateResult</code>
      -          and their signatures have changed as well.
      -        </p>
      -
      -        <p>
      -          You should refer to the updated
      -          <a href="options.html#templating">documentation on templates</a> when
      -          migrating from previous versions of Select2.
      -        </p>
      -
      -        <h3 id="changed-id">
      -          The <code>id</code> and <code>text</code> properties are strictly enforced
      -        </h3>
      -
      -        <p>
      -          When working with array and AJAX data in the past, Select2 allowed a
      -          custom <code>id</code> function or attribute to be set in various places,
      -          ranging from the initialization of Select2 to when the remote data was
      -          being returned. This allowed Select2 to better integrate with existing
      -          data sources that did not necessarily use the <code>id</code> attribute to
      -          indicate the unique identifier for an object.
      -        </p>
      -
      -        <p>
      -          Select2 no longer supports a custom <code>id</code> or <code>text</code>
      -          to be used, but provides integration points for converting incorrect data
      -          to the expected format.
      -        </p>
      -
      -        <h4>
      -          When working with array data
      -        </h4>
      -
      -        <p>
      -          Select2 previously supported defining array data as an object that matched
      -          the signature of an AJAX response. A <code>text</code> property could be
      -          specified that would map the given property to the <code>text</code>
      -          property on the individual objects. You can now do this when initializing
      -          Select2 by using the following jQuery code to map the old
      -          <code>text</code> and <code>id</code> properties to the new ones.
      -        </p>
      -
      -{% highlight js linenos %}
      -var data = $.map([
      -  {
      -    pk: 1,
      -    word: 'one'
      -  },
      -  {
      -    pk: 2,
      -    word: 'two'
      -  }
      -], function (obj) {
      -  obj.id = obj.id || obj.pk;
      -  obj.text = obj.text || obj.word;
      -
      -  return obj;
      -});
      -{% endhighlight %}
      -
      -        <p>
      -          This will result in an array of data objects that have the <code>id</code>
      -          properties that match the existing <code>pk</code> properties and
      -          <code>text</code> properties that match the existing <code>word</code>
      -          properties.
      -        </p>
      -
      -        <h4>
      -          When working with remote data
      -        </h4>
      -
      -        <p>
      -          The same code that was given above can be used in the
      -          <code>processResults</code> method of an AJAX call to map properties there
      -          as well.
      -        </p>
      -
      -        <h3 id="changed-translations">Renamed translation options</h3>
      -
      -        <p>
      -          In previous versions of Select2, the default messages provided to users
      -          could be localized to fit the language of the website that it was being
      -          used on. Select2 only comes with the English language by default, but
      -          provides
      -          <a href="options.html#language">community-contributed translations</a> for
      -          many common languages. Many of the formatters have been moved to the
      -          <code>language</code> option and the signatures of the formatters have
      -          been changed to handle future additions.
      -        </p>
      -
      -        <h3 id="changed-data">
      -          Declaring options using <code>data-*</code> attributes
      -        </h3>
      -
      -        <p>
      -          In the past, Select2 has only supported declaring a subset of options
      -          using <code>data-*</code> attributes. Select2 now supports declaring all
      -          options using the attributes, using
      -          <a href="options.html#data-attributes">the format specified in the documentation</a>.
      -        </p>
      -
      -        <p>
      -          You could previously declare the URL that was used for AJAX requests using
      -          the <code>data-ajax-url</code> attribute. While Select2 still allows for
      -          this, the new attribute that should be used is the
      -          <code>data-ajax--url</code> attribute. Support for the old attribute will
      -          be removed in Select2 4.1.
      -        </p>
      -
      -        <p>
      -          Although it was not documented, a list of possible tags could also be
      -          provided using the <code>data-select2-tags</code> attribute and passing in
      -          a JSON-formatted array of objects for tags. As the method for specifying
      -          tags has changed in 4.0, you should now provide the array of objects using
      -          the <code>data-data</code> attribute, which maps to
      -          <a href="options.html#data">the array data</a> option. You should also
      -          enable tags by setting <code>data-tags="true"</code> on the object, to
      -          maintain the ability for users to create their own options as well.
      -        </p>
      -
      -        <p>
      -          If you previously declared the list of tags as…
      -        </p>
      -
      -{% highlight html linenos %}
      -<select data-select2-tags='[{"id": "1", "text": "One"}, {"id": "2", "text": "Two"}]'></select>
      -{% endhighlight %}
      -
      -        <p>
      -          …then you should now declare it as…
      -        </p>
      -
      -{% highlight html linenos %}
      -<select data-data='[{"id": "1", "text": "One"}, {"id": "2", "text": "Two"}]' data-tags="true"></select>
      -{% endhighlight %}
      -
      -        <h2 id="removed-methods">Deprecated and removed methods</h2>
      -
      -        <p>
      -          As Select2 now uses a <code>&lt;select&gt;</code> element for all data
      -          sources, a few methods that were available by calling
      -          <code>.select2()</code> are no longer required.
      -        </p>
      -
      -        <h3>.select2("val")</h3>
      -
      -        <p>
      -          The <code>"val"</code> method has been deprecated and will be removed in
      -          Select2 4.1. The deprecated method no longer includes the
      -          <code>triggerChange</code> parameter.
      -        </p>
      -
      -        <p>
      -          You should directly call <code>.val</code> on the underlying
      -          <code>&lt;select&gt;</code> element instead. If you needed the second
      -          parameter (<code>triggerChange</code>), you should also call
      -          <code>.trigger("change")</code> on the element.
      -        </p>
      -
      -{% highlight js linenos %}
      -$("select").val("1").trigger("change"); // instead of $("select").select2("val", "1");
      -{% endhighlight %}
      -
      -        <h3>.select2("enable")</h3>
      -
      -        <p>
      -          Select2 will respect the <code>disabled</code> property of the underlying
      -          select element. In order to enable or disable Select2, you should call
      -          <code>.prop('disabled', true/false)</code> on the
      -          <code>&lt;select&gt;</code> element. Support for the old methods will be
      -          completely removed in Select2 4.1.
      -        </p>
      -
      -{% highlight js linenos %}
      -$("select").prop("disabled", true); // instead of $("select").enable(false);
      -{% endhighlight %}
      -
      -      </section>
      -    </div>
      -    <div class="col-md-3" role="complementary">
      -
      -      {% include nav/announcements-4.0.html %}
      -
      -    </div>
      -  </div>
      -</div>
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/browserconfig.xml b/bower_components/select2/docs/browserconfig.xml
      deleted file mode 100644
      index beca4f5f92..0000000000
      --- a/bower_components/select2/docs/browserconfig.xml
      +++ /dev/null
      @@ -1,11 +0,0 @@
      -<?xml version="1.0" encoding="utf-8"?>
      -<browserconfig>
      -  <msapplication>
      -    <tile>
      -      <square70x70logo src="/images/mstile-70x70.png?v=699Nxpjr2A"/>
      -      <square150x150logo src="/images/mstile-150x150.png?v=699Nxpjr2A"/>
      -      <wide310x150logo src="/images/mstile-310x150.png?v=699Nxpjr2A"/>
      -      <TileColor>#da532c</TileColor>
      -    </tile>
      -  </msapplication>
      -</browserconfig>
      diff --git a/bower_components/select2/docs/community.html b/bower_components/select2/docs/community.html
      deleted file mode 100644
      index 54830af089..0000000000
      --- a/bower_components/select2/docs/community.html
      +++ /dev/null
      @@ -1,154 +0,0 @@
      ----
      -layout: default
      -title: Community - Select2
      -slug: community
      ----
      -
      -<section class="jumbotron">
      -  <div class="container">
      -    <h1>
      -      Community
      -    </h1>
      -    <p class="lead">
      -      Select2 has an active community that enjoys helping each other out.
      -    </p>
      -  </div>
      -</section>
      -
      -<div class="container">
      -  <section id="support">
      -    <div class="page-header">
      -      <h1>Getting support</h1>
      -    </div>
      -
      -    <p>
      -      Having trouble getting Select2 working on your website? Is it not working
      -      together with another plugin, even though you think it should? Select2 has a
      -      few communities that you can go to for help getting it all working together.
      -    </p>
      -
      -    <ol>
      -      <li>
      -        Try sending a message to the
      -        <a href="https://groups.google.com/d/forum/select2">
      -          Select2 discussion group
      -        </a>
      -        or searching the archives.
      -      </li>
      -      <li>
      -        Ask in the <code>#select2</code> channel on
      -        <code>chat.freenode.net</code> or use the
      -        <a href="https://webchat.freenode.net/?channels=select2">
      -          web irc client.
      -        </a>
      -      </li>
      -      <li>
      -        Raise a question on
      -        <a href="http://stackoverflow.com/">Stack Overflow</a>,
      -        make sure to include the
      -        <a href="http://stackoverflow.com/questions/tagged/jquery-select2?sort=votes">
      -          "jquery-select2"
      -        </a>
      -        tag.
      -      </li>
      -    </ol>
      -  </section>
      -
      -  <section id="reporting-bugs">
      -    <div class="page-header">
      -      <h1>Reporting bugs</h1>
      -    </div>
      -
      -    <p>
      -      Found a problem with Select2? Feel free to open a ticket on the Select2
      -      repository on GitHub, but you should keep a few things in mind:
      -    </p>
      -
      -    <ol>
      -      <li>
      -        Use the
      -        <a href="https://github.com/select2/select2/search?q=&type=Issues">
      -          GitHub issue search
      -        </a>
      -        to check if your issue has already been reported.
      -      </li>
      -      <li>
      -        Try to isolate your problem as much as possible, so we can easily test if
      -        the issue has been fixed.
      -      </li>
      -      <li>
      -        Once you are sure the issue is with Select2, and not a third party
      -        library,
      -        <a href="https://github.com/select2/select2/issues/new">
      -          submit a ticket
      -        </a>
      -        to the repository.
      -      </li>
      -    </ol>
      -
      -    <p>
      -      You can find more information on reporting bugs in the
      -      <a href="https://github.com/select2/select2/blob/master/CONTRIBUTING.md#reporting-bugs-with-select2">
      -        contributing guide,
      -      </a>
      -      including tips on what information to include.
      -    </p>
      -  </section>
      -
      -  <section id="requesting-features">
      -    <div class="page-header">
      -      <h1>Requesting new features</h1>
      -    </div>
      -
      -    <p>
      -      New feature requests are usually requested by the
      -      <a href="https://github.com/select2/select2/issues">
      -        Select2 community on GitHub,
      -      </a>
      -      and are often fulfilled by
      -      <a href="#contributing">
      -        fellow contributors.
      -      </a>
      -    </p>
      -
      -    <ol>
      -      <li>
      -        Use the
      -        <a href="https://github.com/select2/select2/search?q=&type=Issues">
      -          GitHub issue search
      -        </a>
      -        to check if your feature has already been requested.
      -      </li>
      -      <li>
      -        Check if it hasn't already been implemented as a
      -        <a href="">
      -          third party plugin.
      -        </a>
      -      </li>
      -      <li>
      -        Please make sure you are only requesting a single feature, and not a
      -        collection of smaller features.
      -      </li>
      -    </ol>
      -
      -    <p>
      -      You can find more information on requesting new features in the
      -      <a href="https://github.com/select2/select2/blob/master/CONTRIBUTING.md#requesting-features-in-select2">
      -        contributing guide.
      -      </a>
      -    </p>
      -  </section>
      -
      -  <section id="contributing">
      -    <div class="page-header">
      -      <h1>Getting involved</h1>
      -    </div>
      -
      -    <p>
      -      You can find more information on getting involved with Select2 in the
      -      <a href="https://github.com/select2/select2/blob/master/CONTRIBUTING.md#triaging-issues-and-pull-requests">
      -        contributing guide.
      -      </a>
      -    </p>
      -  </section>
      -</div>
      diff --git a/bower_components/select2/docs/css/bootstrap.scss b/bower_components/select2/docs/css/bootstrap.scss
      deleted file mode 100644
      index 83fc0c7b11..0000000000
      --- a/bower_components/select2/docs/css/bootstrap.scss
      +++ /dev/null
      @@ -1,51 +0,0 @@
      ----
      ----
      -
      -/*!
      - * Bootstrap v3.3.6 (http://getbootstrap.com)
      - * Copyright 2011-2015 Twitter, Inc.
      - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
      - */
      -
      -// Core variables and mixins
      -@import "vendor/bootstrap/variables";
      -@import "vendor/bootstrap/mixins";
      -
      -// Reset and dependencies
      -@import "vendor/bootstrap/normalize";
      -@import "vendor/bootstrap/print";
      -
      -// Core CSS
      -@import "vendor/bootstrap/scaffolding";
      -@import "vendor/bootstrap/type";
      -@import "vendor/bootstrap/code";
      -@import "vendor/bootstrap/grid";
      -@import "vendor/bootstrap/tables";
      -@import "vendor/bootstrap/forms";
      -@import "vendor/bootstrap/buttons";
      -
      -// Components
      -@import "vendor/bootstrap/component-animations";
      -@import "vendor/bootstrap/dropdowns";
      -@import "vendor/bootstrap/button-groups";
      -@import "vendor/bootstrap/input-groups";
      -@import "vendor/bootstrap/navs";
      -@import "vendor/bootstrap/navbar";
      -@import "vendor/bootstrap/breadcrumbs";
      -@import "vendor/bootstrap/pagination";
      -@import "vendor/bootstrap/pager";
      -@import "vendor/bootstrap/labels";
      -@import "vendor/bootstrap/badges";
      -@import "vendor/bootstrap/jumbotron";
      -@import "vendor/bootstrap/thumbnails";
      -@import "vendor/bootstrap/alerts";
      -@import "vendor/bootstrap/media";
      -@import "vendor/bootstrap/list-group";
      -@import "vendor/bootstrap/panels";
      -@import "vendor/bootstrap/responsive-embed";
      -@import "vendor/bootstrap/wells";
      -@import "vendor/bootstrap/close";
      -
      -// Utility classes
      -@import "vendor/bootstrap/utilities";
      -@import "vendor/bootstrap/responsive-utilities";
      diff --git a/bower_components/select2/docs/css/font-awesome.scss b/bower_components/select2/docs/css/font-awesome.scss
      deleted file mode 100644
      index d72cf940fd..0000000000
      --- a/bower_components/select2/docs/css/font-awesome.scss
      +++ /dev/null
      @@ -1,16 +0,0 @@
      ----
      ----
      -
      -/*!
      - *  Font Awesome 4.5.0 by @davegandy - http://fontawesome.io - @fontawesome
      - *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
      - */
      -
      -$fa-font-path: "../vendor/fonts";
      -
      -@import "vendor/font-awesome/variables";
      -@import "vendor/font-awesome/mixins";
      -@import "vendor/font-awesome/path";
      -@import "vendor/font-awesome/core";
      -@import "vendor/font-awesome/list";
      -@import "vendor/font-awesome/icons";
      diff --git a/bower_components/select2/docs/css/s2-docs.scss b/bower_components/select2/docs/css/s2-docs.scss
      deleted file mode 100644
      index 6b66a37c1f..0000000000
      --- a/bower_components/select2/docs/css/s2-docs.scss
      +++ /dev/null
      @@ -1,24 +0,0 @@
      ----
      ----
      -
      -@import "vendor/bootstrap/variables";
      -
      -@import "result-repository";
      -@import "sidenav";
      -@import "hamburger";
      -@import "code";
      -@import "featurette";
      -@import "layout";
      -@import "nav";
      -@import "footer";
      -@import "alert";
      -@import "home";
      -@import "examples";
      -@import "social";
      -@import "buttons";
      -@import "anchorjs";
      -@import "jumbotron";
      -@import "prettify";
      -@import "syntax-highlighting";
      -@import "typography";
      -@import "dl-panels";
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/dist/.gitkeep b/bower_components/select2/docs/dist/.gitkeep
      deleted file mode 100644
      index e69de29bb2..0000000000
      diff --git a/bower_components/select2/docs/examples.html b/bower_components/select2/docs/examples.html
      deleted file mode 100644
      index aeb329ba15..0000000000
      --- a/bower_components/select2/docs/examples.html
      +++ /dev/null
      @@ -1,256 +0,0 @@
      ----
      -layout: default
      -title: Examples - Select2
      -slug: examples
      ----
      -
      -<script type="text/javascript" src="vendor/js/placeholders.jquery.min.js"></script>
      -<script type="text/javascript" src="dist/js/i18n/es.js"></script>
      -
      -<style type="text/css">
      -  .img-flag {
      -    height: 15px;
      -    width: 18px;
      -  }
      -</style>
      -
      -<section class="jumbotron">
      -  <div class="container">
      -    <h1>
      -      Examples
      -    </h1>
      -  </div>
      -</section>
      -
      -<div class="container s2-docs-container">
      -  <div class="row">
      -    <div class="col-md-9" role="main">
      -
      -      {% include examples/basics.html %}
      -      {% include examples/placeholders.html %}
      -      {% include examples/data.html %}
      -      {% include examples/disabled-mode.html %}
      -      {% include examples/disabled-results.html %}
      -      {% include examples/multiple-max.html %}
      -      {% include examples/hide-search.html %}
      -      {% include examples/programmatic-control.html %}
      -      {% include examples/tags.html %}
      -      {% include examples/tokenizer.html %}
      -      {% include examples/matcher.html %}
      -      {% include examples/localization-rtl-diacritics.html %}
      -      {% include examples/themes-templating-responsive-design.html %}
      -
      -    </div>
      -    <div class="col-md-3" role="complementary">
      -
      -      {% include nav/examples.html %}
      -
      -    </div>
      -  </div>
      -</div>
      -
      -{% include js-source-states.html %}
      -
      -<script type="text/javascript">
      -  var $states = $(".js-source-states");
      -  var statesOptions = $states.html();
      -  $states.remove();
      -
      -  $(".js-states").append(statesOptions);
      -
      -  $("[data-fill-from]").each(function () {
      -    var $this = $(this);
      -
      -    var codeContainer = $this.data("fill-from");
      -    var $container = $(codeContainer);
      -
      -    var code = $.trim($container.html());
      -
      -    $this.text(code);
      -    $this.addClass("prettyprint linenums");
      -  });
      -
      -  prettyPrint();
      -
      -  $.fn.select2.amd.require([
      -    "select2/core",
      -    "select2/utils",
      -    "select2/compat/matcher"
      -  ], function (Select2, Utils, oldMatcher) {
      -    var $basicSingle = $(".js-example-basic-single");
      -    var $basicMultiple = $(".js-example-basic-multiple");
      -    var $limitMultiple = $(".js-example-basic-multiple-limit");
      -
      -    var $dataArray = $(".js-example-data-array");
      -    var $dataArraySelected = $(".js-example-data-array-selected");
      -
      -    var data = [
      -      { id: 0, text: 'enhancement' },
      -      { id: 1, text: 'bug' },
      -      { id: 2, text: 'duplicate' },
      -      { id: 3, text: 'invalid' },
      -      { id: 4, text: 'wontfix' }
      -    ];
      -
      -    var $ajax = $(".js-example-data-ajax");
      -
      -    var $disabledResults = $(".js-example-disabled-results");
      -
      -    var $tags = $(".js-example-tags");
      -
      -    var $matcherStart = $('.js-example-matcher-start');
      -
      -    var $diacritics = $(".js-example-diacritics");
      -    var $language = $(".js-example-language");
      -
      -    $.fn.select2.defaults.set("width", "100%");
      -
      -    $basicSingle.select2();
      -    $basicMultiple.select2();
      -    $limitMultiple.select2({
      -      maximumSelectionLength: 2
      -    });
      -
      -    function formatState (state) {
      -      if (!state.id) {
      -        return state.text;
      -      }
      -      var $state = $(
      -        '<span>' +
      -          '<img src="vendor/images/flags/' +
      -            state.element.value.toLowerCase() +
      -          '.png" class="img-flag" /> ' +
      -          state.text +
      -        '</span>'
      -      );
      -      return $state;
      -    };
      -
      -    $(".js-example-templating").select2({
      -      templateResult: formatState,
      -      templateSelection: formatState
      -    });
      -
      -    $dataArray.select2({
      -      data: data
      -    });
      -
      -    $dataArraySelected.select2({
      -      data: data
      -    });
      -
      -    function formatRepo (repo) {
      -      if (repo.loading) return repo.text;
      -
      -      var markup = "<div class='select2-result-repository clearfix'>" +
      -        "<div class='select2-result-repository__avatar'><img src='" + repo.owner.avatar_url + "' /></div>" +
      -        "<div class='select2-result-repository__meta'>" +
      -          "<div class='select2-result-repository__title'>" + repo.full_name + "</div>";
      -
      -      if (repo.description) {
      -        markup += "<div class='select2-result-repository__description'>" + repo.description + "</div>";
      -      }
      -
      -      markup += "<div class='select2-result-repository__statistics'>" +
      -        "<div class='select2-result-repository__forks'><i class='fa fa-flash'></i> " + repo.forks_count + " Forks</div>" +
      -        "<div class='select2-result-repository__stargazers'><i class='fa fa-star'></i> " + repo.stargazers_count + " Stars</div>" +
      -        "<div class='select2-result-repository__watchers'><i class='fa fa-eye'></i> " + repo.watchers_count + " Watchers</div>" +
      -      "</div>" +
      -      "</div></div>";
      -
      -      return markup;
      -    }
      -
      -    function formatRepoSelection (repo) {
      -      return repo.full_name || repo.text;
      -    }
      -
      -    $ajax.select2({
      -      ajax: {
      -        url: "https://api.github.com/search/repositories",
      -        dataType: 'json',
      -        delay: 250,
      -        data: function (params) {
      -          return {
      -            q: params.term, // search term
      -            page: params.page
      -          };
      -        },
      -        processResults: function (data, params) {
      -          // parse the results into the format expected by Select2
      -          // since we are using custom formatting functions we do not need to
      -          // alter the remote JSON data, except to indicate that infinite
      -          // scrolling can be used
      -          params.page = params.page || 1;
      -
      -          return {
      -            results: data.items,
      -            pagination: {
      -              more: (params.page * 30) < data.total_count
      -            }
      -          };
      -        },
      -        cache: true
      -      },
      -      escapeMarkup: function (markup) { return markup; },
      -      minimumInputLength: 1,
      -      templateResult: formatRepo,
      -      templateSelection: formatRepoSelection
      -    });
      -
      -    $(".js-example-disabled").select2();
      -    $(".js-example-disabled-multi").select2();
      -
      -    $(".js-example-responsive").select2({
      -        width: 'resolve' // need to override the changed default
      -    });
      -
      -    $disabledResults.select2();
      -
      -    $(".js-example-programmatic").select2();
      -    $(".js-example-programmatic-multi").select2();
      -
      -    $eventSelect.select2();
      -
      -    $tags.select2({
      -      tags: ['red', 'blue', 'green']
      -    });
      -
      -    $(".js-example-tokenizer").select2({
      -      tags: true,
      -      tokenSeparators: [',', ' ']
      -    });
      -
      -    function matchStart (term, text) {
      -      if (text.toUpperCase().indexOf(term.toUpperCase()) == 0) {
      -        return true;
      -      }
      -
      -      return false;
      -    }
      -
      -    $matcherStart.select2({
      -      matcher: oldMatcher(matchStart)
      -    });
      -
      -    $(".js-example-basic-hide-search").select2({
      -      minimumResultsForSearch: Infinity
      -    });
      -
      -    $diacritics.select2();
      -
      -    $language.select2({
      -      language: "es"
      -    });
      -
      -    $(".js-example-theme-single").select2({
      -      theme: "classic"
      -    });
      -
      -    $(".js-example-theme-multiple").select2({
      -      theme: "classic"
      -    });
      -
      -    $(".js-example-rtl").select2();
      -  });
      -</script>
      diff --git a/bower_components/select2/docs/images/android-chrome-36x36.png b/bower_components/select2/docs/images/android-chrome-36x36.png
      deleted file mode 100644
      index 12a3dc6b4e9735acdea5c5e29eb42219dffaf1df..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 916
      zcmV;F18e+=P)<h;3K|Lk000e1NJLTq001Na001Ni0{{R3*4}8U00004XF*Lt006O%
      z3;baP00001b5ch_0Itp)=>Px$I8aPfMgIT*0B+d;Yu5mB-SzeM^Yr%i_4W4l_5f_y
      z_Vo1r007GZNB|g!5PI9b1W*7@zxUwa{tyuPrKSE86Zhri{XIR}0Xygb0;mjR02q(}
      zPsI7Ov^<dD+2-=5%<x5(;p_k^`v3;u>GIJ6LaYd1wFX!Ob=!v%dYKb&k`8bHaoYeH
      znEYa5{99Z3s;c}}R{T;@`T!f{?etim<F3x`<Nz}G#KiXS@sq#n7G21m4rl;s*6;ul
      z+yEc330-IufifO|&*1TgyXycHc>q(!n#1e;FfdY_;%27h#oO@vd3ixYt@?_Jc_oK;
      z7=`pFDE0sV3ro7+0Rr}df-PacRX?8h&(CxaZa@=u4j6*|1`7I<lTVG>w8Y>67=B@O
      zvjKM803M#`?D82tqGf-`HjLh|z~K13y&PB(VgLXEmq|oHR5;7klxJ7MFcd)3LP=5_
      zXa$+FR{<3jsyLYLz4spf|0nojEhJ#i@uS{v371Rz+JNvcK!0AM2KIQp9&Av1iMsIk
      z7(!#?*hOt5O0j1aeKG4{s~;rTWf>EQaTe++6ElcoW}>H|t~0G60d2Z#nG$45Xn+#L
      z_)<tiKcI#9QW4ou<fN+C+*1*Xm&>YZIU6DV=UjVCQIQ&}RARA}qocSAs~tnQaEdRy
      zu)C6UCzC#(uQCZ7R;}B!N)*%E8{b-b1aJeZC#ME`Ou{e~1>ZL={eFKcwU$ngxN~Py
      z*r^D^gyqZQL%V&I&*gKqTFQSeIhLaltT=fIf4l~Ufa`iTo6YYpIfyKg%%V_Ayge5R
      zg+KtrM*Uz{(w7M#5+TuTPPz+rI>BIYlyS^5gds^}i<6Yrlb+EXCc3FWX?Q`naNK;C
      zWg?q=D`b8SE8^WLEuDQ}@s+V=V9g2E%`maF?~Jqm^##khm@zHLaHA9s0_;YjW@$6g
      z%k&*7_TBYi(w7-HoGca&i<y7%uVTX|ahE*jijD3l00012dQ@0+Qek%>aB^>EX>4U6
      zba`-PAZc)PV*mhnoa6Eg2ys>@D9TUE%t_@^00ScnE@KN5BNI!L6ay0=M1VBIWCJ6!
      qR3OXP)X2ol#2my2%YaCrN-hBE7ZG&wLN%2D0000<MNUMnLSTa51E1{x
      
      diff --git a/bower_components/select2/docs/images/android-chrome-48x48.png b/bower_components/select2/docs/images/android-chrome-48x48.png
      deleted file mode 100644
      index 64aa46a47a5bc6ab60f5b58626068c454cee7b20..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1109
      zcmV-b1giUqP)<h;3K|Lk000e1NJLTq001xm001xu0{{R3VB86{00004XF*Lt006O%
      z3;baP00001b5ch_0Itp)=>Px$Wl&61MgIT*^Yr!rZrc6;0QU9u_Vo1i_4fAm_5f_y
      z0BzU+YuEk~5(0DDvj$nK3t<2li2xap^z`)+d))Wl-uzr#`2YaG15nKYMU4=3rVC?~
      z5OCoD0=flM02qP*HnRX6nfb1+`J<!v<>lb&^Fov1lE3Td05RGEJIMn{0CL})4r_xK
      zd;m1A=k4_O;^O@~JNsv6I*;J`03M{t?OdSb*X8o=04w(E>)`-4(*Z)(06y*j7sUfh
      z^Z)^_&F*>=f$jhR05hua^7R03+4-lZ{8d%{7#RFfQB$4c(&F;=^78tLiTAj<_;PZC
      zw(0)@3H~T3B3Z#^FO;DYX%iHI05hgLAAJB8eaGDJCO4k7!r%N(PWa5sW~Sx$0TDey
      zu=;_4R6e5s6nA+JZ0#Ey026gu6NE_;bNI>0*#IBi05NP6c{E(PqRsJVc(W~u-gmF&
      zDv94>nccO-<Yj`z8$z!DKD%q#NTdJ&0xL;GK~zY`?Um_M8Zj7$vx1xK0ip;jD^yf2
      zp#oAx1QZmHx@xs5qP_3?zW)BcVWBKZbZlq(&EFSh$oo9MJu+E@|1#(r_(x#a!v1{T
      zkFDXW0hSw2X$Wak*lk?_p!#jp$+oBjiS>3wC5YAMHjyKnIksc~fVB+`4Mf|Z7BK(|
      z)8mNC`1C*ta_VCm5=4tROVH(dzN81Zacm1+n5`HL3<CZFx-^9x1F)BKz!LWvz}oGv
      zxsa<^EV^9I`TZsC9v<X-<LFT`St^yPD}g}3#t!$mdw?xqJ)z^EPcBzdsdBlTtTq~r
      z6~GEhbjz^s0Uqp|Lzu6ogSB)z6k4uSQtu`pFZM+5p<A+hkn(ywkw_#Mtkr-Dy`9*1
      z=$XAVI*RX|KKF*hUN2A`EOh+gBm6Im09nFwpW4q}zBV&vCUZ<NkLO68RpX0Tl6ipY
      z&!f?3yM6NBFbvZ)GvVyrS)wXLPsn|w2Y~*^q|fIYfkaR1*=*J@o`Rkbq9`Q3gINH7
      z|2YZq+04nSdi{v%39$)1Au+(WUpHuOLe|z=t=9QtRkz1!nhIH9fYq-<O?}7_UHLN)
      z4dmerdr9kGnw^zy)V?169b4t@L6Y#<XD8vDUzp>c5`7KpcXSTv>Lt;e2FckxLoj+~
      zYj7o0f6J-o4l-EV>6gIo?U?~Re^de?C+rfDUUV44#9|z#g?iy}-zga*Lj46F6k0ML
      z7wNA*yZ;OL4JqMpZQ?$wod5s;S9(-fbW&k=AaHVTW@&6?Aar?fWguyAbYlPjc%0+%
      z3<z;nC@9KL%gjmTQUC)Z3oc^|6C)E#lN19JAVh#P!(;;^vs56<*wo0x%)}hT2g`s+
      bph_+P>K74o@<KJ000000NkvXXu0mjfZB+#l
      
      diff --git a/bower_components/select2/docs/images/android-chrome-72x72.png b/bower_components/select2/docs/images/android-chrome-72x72.png
      deleted file mode 100644
      index 2c2c829ba5de77ca86b7db0613108aa126a6ada6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1533
      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
      
      diff --git a/bower_components/select2/docs/images/apple-touch-icon-57x57.png b/bower_components/select2/docs/images/apple-touch-icon-57x57.png
      deleted file mode 100644
      index ae24323d4002b63b4694f75c32eb2e35c4db1ace..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1894
      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
      ZehDmzoS<xJD`&tZfWD3~p;p^5@_({MOE&-j
      
      diff --git a/bower_components/select2/docs/images/apple-touch-icon-60x60.png b/bower_components/select2/docs/images/apple-touch-icon-60x60.png
      deleted file mode 100644
      index e3f8d21fc526cf03b28dc6a18effd12b8eb931c4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1952
      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
      
      diff --git a/bower_components/select2/docs/images/apple-touch-icon-72x72.png b/bower_components/select2/docs/images/apple-touch-icon-72x72.png
      deleted file mode 100644
      index e5399209d9e126eccad30519c5f5198113cc7812..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1626
      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
      DxstZ3
      
      diff --git a/bower_components/select2/docs/images/apple-touch-icon-precomposed.png b/bower_components/select2/docs/images/apple-touch-icon-precomposed.png
      deleted file mode 100644
      index 31b912e71dfd9364ae7e5ae1db7190f810624da4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1586
      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
      W8jE5q8ER)jBY+9X!swo%3+rD}`mIm^
      
      diff --git a/bower_components/select2/docs/images/apple-touch-icon.png b/bower_components/select2/docs/images/apple-touch-icon.png
      deleted file mode 100644
      index e5399209d9e126eccad30519c5f5198113cc7812..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1626
      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
      DxstZ3
      
      diff --git a/bower_components/select2/docs/images/favicon-16x16.png b/bower_components/select2/docs/images/favicon-16x16.png
      deleted file mode 100644
      index ab60a1d139cb0a8481911f475f6cf41e788f83fa..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 655
      zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstUx|vage(c
      z!@6@aFM*ts0X`wFKAD9KIX4(g*ZgN-03wF$>p+q*3rI5lgNPK|0V)7Vfk~J$s0du@
      z4_Gfl{w<Jc5cNg(-!U-UU@&9Y@P8{u3`6F1sJQPDhKB!)ax)pFdO>z6G(ik!D1Pvb
      zf#D^C?h2liGmIX)Sb{$=h#z6`nar2ZAl%~Tyy!6ln_%L}BF%1N&#l@<3%mHr;svT~
      zgp0U@>KJUcnt1812fD$$B*-tA;qSj-=KsH${xLrPFTUc1ti-&8z59Yi=Y9RKU2a9r
      z%3Xi?|C-1r&f)TTv0=e~82I;3@}rY2(1?AWE{-7*mv#HorJD?RTKK0bI=3-@zqgG^
      z@6PN0|22d^*r`+&@3qrqnBw(eRcL>;+AG&!j?FXjSD45oPH4HDptX6eq?3e{yw>5b
      zm1kVC@3-okq<L}7lS#O?q(<g=yGGY6+kg|%@_oM_=b7)}iE)zcKKpx$%E`K#cl{h2
      zW0t;r{?+F0y6CN<44?BGzwU^hwo1e3$dcTrlU6CE-dMPuO?OksHto_~&esidy;}py
      za@7hrwTw1@{j>YZ+o-qs{~2bU6@GOl`JoEXC*f5g5hX#1<q8Ew`DvLssR|{P1*r;|
      z1trN03>9-8f8yaN4Aam!<$wB&=hGktW@T=@WNu+)VeiQz%)$yT4JL<En3Xq&D4f1=
      n<;0OQM`Vt$pKkD2;HAg#N?fqylauLGpcM?Bu6{1-oD!M<X$k{a
      
      diff --git a/bower_components/select2/docs/images/favicon-32x32.png b/bower_components/select2/docs/images/favicon-32x32.png
      deleted file mode 100644
      index 5319e04a7b46126b702f5e7f9a060a9f9bf3d672..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1155
      zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyEa{HEjtmSN`?>!lvI6;x#X;^)
      z4C~Ixyacjq1AIbUeKHFfa&G(w%H`Z(PPqtSfXKMxKoS{2l!2rYE&xf+>N^bLjX*&J
      z%DxU)&mcVy!3LWT;UX00-1x!3@DFUoZ!pP_b)6ym2E&rC3`KVs{Eh-u{sp@VsF5k_
      z(o+ToKBZa~`6glW84NM!SX?$SXs>0|oX?^=bEZ)iP%%&$L-uu`UZ9z~*g_bjCmv(+
      zp39rPf;)*pvXjB@$W;d0bBwM)yBLZeZe@#D%Nh5DfuT#FjKTK+gT(Yt461J!w4X4T
      z++{L7#pHI7CEyFA;B5w*iGoG-V)YEZdl^Lg7(^=nGVn9x-&Tq`xQHhuRkY<11H*F$
      z1~=j28T>ha7!=D?I$a&th(w=w$H2tny))cyeu;SdWVw<Bycu^G*i1y)?=#3HTTLq!
      zEEbk*6&Eg1<$e_nbdOU>kY6yvU&h@`fBrBr{#z^-=Kn<aq1Y^;e+%;zyk1*-9Q*fT
      z)zgrD&tyJmCx7eX{;pkNev+&9_p0ktE^WTF_^JO|@2QXG^UV#BN(DyiXHOT$5R22f
      zlfOsb3J_`Imr^Xe5~&j*vtsMkYghOFzQf(gDHzPkI;A%^R<`W?{=LudJm5{(C$I3N
      z=KbvF^K2L@I9n6+<mNBVzu&TJLH)GPH|t(}%2v2$e$<p_{;SUu1?)~%o1EJ!XIJUz
      zRH5JNvf<ioy@RhCGaGjweD<Z``hjjo{_iTyXSp6a>+YDsvs37ZyH$avq$B5nBdK>L
      z`!M`?Jdb5j;mr${_BHh@wrj~PP%3%8?KjWd*E?(MrfXaFE$-e}mK`XQ^wP?#WbX7+
      zFF(~S3^*}=e!7w5@txwL#}6!B<Z^w^-$j)L8@5jMn|^wKU%$Vfz;W>lca8+@NqLi#
      zFYUH5W7d^lA2nXB4GK;8`f=sds_9;DJEkSh+ArVNv}i}MYwL1<sowhfHJgoJTW{^j
      z&yU}Hf@zXgK<<~Rwr!bn(l+1pTACCYA7LcOvEg0etW_WWJY_q&?d^W|t68SM89%Zl
      zH!95LU!3^ERY&ah;hZb4OMgGVc)h>Fc%p*Ww1+pJ{raVrCLX-{s$IR;re`rG?+(9;
      z+N7KRL}Gs7Q>l4^)53)s6P(;0^~4@sd`W1^*4bY+>*~GBW3ta*b7Af@0XrRY*GUDd
      zTRuoy?we5J?P;y2npH9Hoa@#TJa=DkFg?~d$h&#>+#jtjt*so3m#^;ne?Qvej`@?P
      z_N(ViODQbYdjd>M;Z-3KB|(Yh3I#>^X_+~x3MG{VsS23|CCLm76>}bc;^8O^)6h8O
      zfBKB)(;x<BWp2G>Zee9%@5v&}!U`@8CWlj)l{bedoW618#E~;cWR9?(Ztz&(rN{6}
      WT(IPmlj&5T6%3xPelF{r5}E)%(CB&q
      
      diff --git a/bower_components/select2/docs/images/favicon.ico b/bower_components/select2/docs/images/favicon.ico
      deleted file mode 100644
      index 91dcfd50e8aac9daa112e3c7d0a3d0eafca1652d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 15086
      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
      V2i1ifJXAN;QFT?F@gptt`yUf)_xb<;
      
      diff --git a/bower_components/select2/docs/images/logo.png b/bower_components/select2/docs/images/logo.png
      deleted file mode 100644
      index 8de094fc94e4e5b948f89ccb6ff5c7ffc5cc7206..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 2501
      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
      P00000NkvXXu0mjfoT;;3
      
      diff --git a/bower_components/select2/docs/images/manifest.json b/bower_components/select2/docs/images/manifest.json
      deleted file mode 100644
      index 99bc8aa42d..0000000000
      --- a/bower_components/select2/docs/images/manifest.json
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -{
      -	"name": "Select2",
      -	"icons": [
      -		{
      -			"src": "\/images\/android-chrome-36x36.png?v=699Nxpjr2A",
      -			"sizes": "36x36",
      -			"type": "image\/png",
      -			"density": 0.75
      -		},
      -		{
      -			"src": "\/images\/android-chrome-48x48.png?v=699Nxpjr2A",
      -			"sizes": "48x48",
      -			"type": "image\/png",
      -			"density": 1
      -		},
      -		{
      -			"src": "\/images\/android-chrome-72x72.png?v=699Nxpjr2A",
      -			"sizes": "72x72",
      -			"type": "image\/png",
      -			"density": 1.5
      -		}
      -	]
      -}
      diff --git a/bower_components/select2/docs/images/mstile-150x150.png b/bower_components/select2/docs/images/mstile-150x150.png
      deleted file mode 100644
      index 9dede7da1659f7c36e6b2a810c48f7341c38bf8c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1394
      zcmZ9MdpOg39LK-2xem!H8=jhBaR|{xahBV#Y>u{_aYAM@8DctfsU00V-3}_{#}iSC
      zO1ikUM0vs{V&im~P$_dcBn*!@J&7|%PfySJKA-RR^ZLF&pU?O9$2UE|-$zf!SO);0
      zNAmTes{DoJt_4?(k!DvcRSvP=o#GBaRTgp~TwOJX{Yv%m0Og&g?^Wy`K&BJP+=R~n
      z24Z_uwgiC6zQGEsbLHRb-$z#xK+JOOioOCMs_QHKr+)$(-x5?MtDSO;18USf@2hwm
      z0EfW)n6Rcz-X$IZHz}@J!1gvUJN<QK<1;sqEP(kFnC3Si0)S}_*iiIPgMLvj`nj41
      zU_J$F1@i#3sgcqRlYx=&{HnNW&EUrfayKBHH8^-jYhR59qYt(Nn3XO7FbW*5=yB3e
      zzjeU8K$t9P-O(Y$_L*fJHVe!r08pxJ8US!$c<>7_>ISeVOa_fqVZf3tYB`<Tn3`gf
      z%|<2D(V3eK`PS(4Nr3AD7JO7xWmNI7>d_qeRDT*cy{f;^WfD1HsA)Y$-Pvo5x$Ar5
      z)4dmal#=+&v`gNQ1+!ETJf1hi9NgMc>|FI_@lY8f5CFIx$;+Ld@@k@oOMB&J+B(h4
      zFd7hMY>e*OE1=+lU^c^*)MjK3?)=`Y8s(BYe|y1MFY%8Ldpj3)WgVI-h-W4p#j4Km
      zwWTe|hvagLB59IZF}g?Lm~S;`|0dFnj@VX5ZV9WM-u#RiTL^_qoLEqP_<AS-)oF{_
      zppZcc25~*sHNzs?HzJ?$MyCU9m1d<q>LUhOZMHhyp^i4<I#<>zS35hXO0PTE@r2?;
      zEGsNlE~&#e6DYN{Wba)eOKnysO>8k8yrcLMba`gvd~Rn^e)W*NzJh;gt|f!k|0u|o
      z@k4IN>sFF7^cJO-T1L<Ld7v)j47Yl2{?&5~1NXUnFz7{N`c~v5x6Wf*uv=%2u%Tjg
      zV%QmCHA5M2T%ruxc1y4RQ~Idp;g^VYrz-YLOQce%C%NyW=A}O7SYu4VTKl5o>>-n4
      z-B?6DF(*~|5|Je5O%F!RBCk)x=*k%J+69ekw9ivYe`h|sE}TIv(ujF@+R~m(AI~df
      zJme1vAEcfZcHN{@HkLMwjEtDsvIzzqf)pit*Z3f#ZlN&aF>8#F>c(M;>`0Tumr{ah
      zZdL0V!<fxeirwOM-oNO-?%RoL|0^AWa^i~Sj(H}M6#LO}E`?-#Zh}viwrH~1+2D?#
      z7TR)KJP~*N+*RFp!6V-%vv68sTVsQ(7}wkM_U*nr?C0z(qrA9x6)x}Z?HE&dzgyqW
      zt>&@&{Rl-3Pv^QUQ6k9!pSg2zne&vjz2pNq+gee-1tM0aik+vfG0Z=VQDgi>;!UXp
      zB2K5zt$MQTgoy0zT+h$G7>#QYTJ%e4ckB`kuR0u<`(P8;u~WZfHZ^$G4_@+-V-kwy
      zp*xC39~87k9E-0}hU?o;3|@Z6bJsW-6{Z;7X#TfA-$-=#K}GNO!+tgGGZ$Qxqepr(
      zLYeK4#2iOfR}<UOGUTi@;#jweSP^9%4)gU)Yh}nSj!9Az%UpV7J!GA13Gqw_LL^1;
      zk8fmBTj57-*Jp7flZis7Xy;DVRo=MbY4-Uc_~ozc|1EhDmU!({Zg|p{MO7&9Fg=J*
      z4Nu1M4#r1vV>wv<Asz?I<?-17q!bR$=xQY}tgPC9lFCTKQ~)<e+Od%+bCe&n29Cmd
      wrEQT!z|HT{vC<y-lV(}7X|tv@&G+(dJ1}Onnm^;QHFtS;64BqQ+=KbYzfJ61!vFvP
      
      diff --git a/bower_components/select2/docs/images/mstile-310x150.png b/bower_components/select2/docs/images/mstile-310x150.png
      deleted file mode 100644
      index a266af2ea5a5648434adf4667199fae95eb0e07b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1281
      zcmeAS@N?(olHy`uVBq!ia0y~yV6+FaXK^qC$rtzb7XT@ibVpxD28NCO+<y{Tfqcf|
      zAa^H*b?0PW0y+N!d_r7(G7J9$**Q0WBwzYPAPGVL7#RLCFtKJ{`2!YV$i4wogNz``
      zAR<2*m>4pzK@0(kLj>jhHnKWw1ad_T`Xu8I`r7oDyY)b2Wu`Gm^)bYsJI?IQAkoes
      zH+MUG*hco4eJla9`LY?r>Mk=nt>#MT5-eNHlk$auVX{EMO$M8@jIIod%il6E{$gNw
      z!eHDWTvI02{Fs4>QMlv-gZcv&%U29~>5|>o85qAYDE?&-|ITgBmvkn?b91oQ>WS*L
      z721;wg-SFfI+KOV10*`HGN_aYXV{6%lLR_gwIs+dm|+3e28);8eE+0X9$N1Z{p$DX
      zUewJ+=es*oCcQ76JnLEY+hZGLn`bTcVPIh9@pN$vskrs_R%Y-m2Zr`S{s|mPP2cY(
      z3$1M`(hzg~xI#wmYsUWn>6vDVJ6sNJwB9!N<mc+MtN+^w-`J3x473peKG@HiH)l>7
      zYwG9M%XZqG=Uer0CZAA9-+9-jS05)Xh^h(P>^+5L>SN`Dg1)Y2<rW3&828-RA(>!v
      z%&H40pI4)@LQ<ad)iL*`zmL6VID1Z5P*kHLk)W2?r(k$EDfZ*qnaWYhj#qzpT#%oi
      zsAb@Bp*R0v$QFmD<c+C^L(+7Pcldjs5WdoR-h09ikASlR_P?Ue9-Ke($q{Lr`v?B^
      z_{&r^U&}U;I-9ony>XG^llpF!{U42^u5W9*u_0=$)DiQbCb!pr+6&%l+&<F5_K|mb
      z!q;PEdRxM6w0AEN?bO$BTpX%XC%#1Vyv$s|)ox8cn1t4dX;1aK_;9U;*`7T%ligy{
      zOf4N>9y@q;-s(s3A1|q@so2@SKjvMjU;g65dJVHR+tpR}eZS+aZ_dtcd3@oXr1T^4
      zrP3c+Rd&Rko9eZcxqZ)~IZ1o{Y8?0dvlH`LYNu^i*J&K$Kk<BcxWD?(ntwO8FEUAb
      zcW_hC>YS^G!ybB72y#E$D_W~*cQ4Xu63hML;Tk)b?PTY2T<W;jwUm9e?$(1zcR#)r
      zw<&9KH_JTot?TWN7;hDgquclDm#Ee3vM8GCp=}ot>+wN%-`u-*@7DHjesH=~VeOC4
      z=RQSu8O+t)w^#XFacNl1x~o~@`O5dA_pb3VxF2S=`|>s0N7-i;)!qoob8dTly6WEA
      zA2rpl{VMWVxyzfhm-poy=vcpf+kqc3Gd(&UTTlHOanbL?J*gDqHNRE&^O_axHLzzk
      z51O_uz@Fi;=h?4DiT|16d<F0C_cA!lc*N6St=WCGk2}*QA6cHR=UY?7sV8**zIVaI
      zA0|R)&KQQhXE8pqJT<BKK~?6X*Xl+J2aiUYy_)}k>tm+c4woAFi3%SxRXu7Jf7l<X
      zx=--vZXq9``EE^_dTTUQXQ<fOK6+}mU3IIFiX9@sqOxk1*sq-V_(%TQM_xdQ@T!oA
      zlAy$Lg@U5|w9K4Tg_6pGRE5lf5@4FInDh7(4@Y5`hQ=xX(`P)N1~D)zbL%B@3o8qI
      zPZnVoR&Z%BIh?|*yg5YS^o=Vgj+{9nbA<hLgU13dJ%(4}f+e4vOs9hE_H^}gS?83{
      F1OQGv8jt`0
      
      diff --git a/bower_components/select2/docs/images/mstile-70x70.png b/bower_components/select2/docs/images/mstile-70x70.png
      deleted file mode 100644
      index f2efb68c9c453e5588edc1502f37472573dff135..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1546
      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
      
      diff --git a/bower_components/select2/docs/images/safari-pinned-tab.svg b/bower_components/select2/docs/images/safari-pinned-tab.svg
      deleted file mode 100644
      index 700213c40d..0000000000
      --- a/bower_components/select2/docs/images/safari-pinned-tab.svg
      +++ /dev/null
      @@ -1,17 +0,0 @@
      -<?xml version="1.0" standalone="no"?>
      -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
      - "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
      -<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
      - width="72.000000pt" height="72.000000pt" viewBox="0 0 72.000000 72.000000"
      - preserveAspectRatio="xMidYMid meet">
      -<metadata>
      -Created by potrace 1.11, written by Peter Selinger 2001-2013
      -</metadata>
      -<g transform="translate(0.000000,72.000000) scale(0.100000,-0.100000)"
      -fill="#000000" stroke="none">
      -<path d="M177 598 l-179 -120 86 -57 c47 -31 86 -59 86 -63 0 -3 -39 -32 -86
      --63 l-86 -58 181 -119 181 -119 181 122 180 121 -82 54 c-46 30 -84 56 -86 58
      --3 2 21 21 52 42 31 22 70 49 86 61 l30 21 -180 121 c-99 67 -181 121 -183
      -120 -2 0 -83 -54 -181 -121z"/>
      -</g>
      -</svg>
      diff --git a/bower_components/select2/docs/index.html b/bower_components/select2/docs/index.html
      deleted file mode 100644
      index accd1db992..0000000000
      --- a/bower_components/select2/docs/index.html
      +++ /dev/null
      @@ -1,237 +0,0 @@
      ----
      -layout: home
      -title: Select2 - The jQuery replacement for select boxes
      -slug: home
      ----
      -
      -<main class="jumbotron" role="main">
      -  <div class="container text-center">
      -    <h1>Select2</h1>
      -    <p class="lead">
      -      The jQuery replacement for select boxes
      -    </p>
      -    <p>
      -      <a href="https://github.com/select2/select2/releases" class="btn btn-outline-inverse btn-lg">
      -        Download Select2
      -      </a>
      -    </p>
      -    <p class="version">
      -      Currently v4.0.3</a>
      -    </p>
      -  </div>
      -</main>
      -
      -{% include notice-previous.html %}
      -
      -<div class="container">
      -  <section id="lead" class="lead">
      -    Select2 gives you a customizable select box with support for searching,
      -    tagging, remote data sets, infinite scrolling, and many other highly used
      -    options.
      -  </section>
      -
      -  <hr class="half-rule">
      -
      -  <div class="s2-docs-featurette">
      -    <div class="row">
      -      <div class="col-sm-4">
      -        <i class="fa fa-language"></i>
      -        <h4>In your language</h4>
      -        <p>
      -          Select2 comes with support for
      -          <a href="examples.html#rtl">RTL environments</a>,
      -          <a href="examples.html#diacritics">searching with diacritics</a> and
      -          <a href="examples.html#language">over 40 languages</a> built-in.
      -        </p>
      -      </div>
      -
      -      <div class="col-sm-4">
      -        <i class="fa fa-database"></i>
      -        <h4>Remote data support</h4>
      -        <p>
      -          <a href="examples.html#data-ajax">Using AJAX</a> you can efficiently
      -          search large lists of items.
      -        </p>
      -      </div>
      -
      -      <div class="col-sm-4">
      -        <i class="fa fa-paint-brush"></i>
      -        <h4>Fits in with your theme</h4>
      -        <p>
      -          Fully skinnable, CSS built with Sass and an
      -          <a href="https://github.com/select2/select2-bootstrap-theme">optional theme for Bootstrap 3</a>.
      -        </p>
      -      </div>
      -    </div>
      -
      -    <div class="row">
      -      <div class="col-sm-4">
      -        <i class="fa fa-plug"></i>
      -        <h4>Fully extensible</h4>
      -        <p>
      -          The <a href="announcements-4.0.html#plugin-system">plugin system</a>
      -          allows you to easily customize Select2 to work exactly how you want it
      -          to.
      -        </p>
      -      </div>
      -
      -      <div class="col-sm-4">
      -        <i class="fa fa-tag"></i>
      -        <h4>Dynamic item creation</h4>
      -        <p>
      -          Allow users to type in a new option and
      -          <a href="examples.html#tags">add it on the fly</a>.
      -        </p>
      -      </div>
      -
      -      <div class="col-sm-4">
      -        <i class="fa fa-html5"></i>
      -        <h4>Full browser support</h4>
      -        <p>Support for both modern and legacy browsers is built-in, even including Internet Explorer 8.</p>
      -      </div>
      -    </div>
      -  </div>
      -
      -  <hr class="half-rule">
      -
      -  <section id="getting-started">
      -    <h2>
      -      Getting started with Select2
      -    </h2>
      -
      -    <p>
      -      In order to use Select2, you must include the JavaScript and CSS file on
      -      your website. You can get these files built for you from many different
      -      locations.
      -    </p>
      -
      -    <h3>
      -      Using Select2 from a CDN
      -    </h3>
      -
      -    <p>
      -      Select2 is hosted on both the
      -      <a href="https://cdnjs.com/libraries/select2">cdnjs</a> and
      -      <a href="https://www.jsdelivr.com/#!select2">jsDelivr</a> CDNs, allowing
      -      you to quickly include Select2 on your website.
      -    </p>
      -
      -    <ol>
      -      <li>
      -        <p>
      -          Include the following lines of code in the <code>&lt;head&gt;</code>
      -          section of your HTML.
      -        </p>
      -
      -{% highlight html %}
      -<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.min.css" rel="stylesheet" />
      -<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/js/select2.min.js"></script>
      -{% endhighlight %}
      -
      -        <div class="alert alert-info">
      -          <i class="fa fa-info-circle"></i>
      -          Immediately following a new release, it takes some time for CDNs to
      -          catch up and get the new versions live on the CDN.
      -        </div>
      -      </li>
      -      <li>
      -        <p>
      -          Initialize Select2 on the <code>&lt;select&gt;</code> element that you
      -          want to make awesome.
      -        </p>
      -
      -{% highlight html %}
      -<script type="text/javascript">
      -  $('select').select2();
      -</script>
      -{% endhighlight %}
      -
      -      </li>
      -      <li>
      -        Check out the <a href="examples.html">examples page</a> to start using
      -        the additional features of Select2.
      -      </li>
      -    </ol>
      -
      -    <h3>
      -      Downloading the code locally
      -    </h3>
      -
      -    <p>
      -      In some situations, you can't use Select2 from a CDN and you must include
      -      the files through your own static file servers.
      -    </p>
      -
      -    <ol>
      -      <li>
      -        <p>
      -          <a href="https://github.com/select2/select2/tags">
      -            Download the code
      -          </a>
      -          from GitHub and copy the <code>dist</code> directory to your project.
      -        </p>
      -      </li>
      -      <li>
      -        <p>
      -          Include the following lines of code in the <code>&lt;head&gt;</code>
      -          section of your HTML.
      -        </p>
      -
      -{% highlight html %}
      -<link href="path/to/select2.min.css" rel="stylesheet" />
      -<script src="path/to/select2.min.js"></script>
      -{% endhighlight %}
      -
      -      </li>
      -      <li>
      -        Check out the <a href="examples.html">examples page</a> to start using
      -        the additional features of Select2.
      -      </li>
      -    </ol>
      -  </section>
      -
      -  <section id="builds">
      -    <h2>
      -      The different Select2 builds
      -    </h2>
      -
      -    <p>
      -      Select2 provides multiple builds that are tailored to different
      -      environments where it is going to be used. If you think you need to use
      -      Select2 in a nonstandard environment, like when you are using AMD, you
      -      should read over the list below.
      -    </p>
      -
      -    <table class="table table-bordered table-striped">
      -      <thead>
      -        <tr>
      -          <th>Build name</th>
      -          <th>When you should use it</th>
      -        </tr>
      -      </thead>
      -      <tbody>
      -        <tr id="builds-standard">
      -          <td>
      -            Standard (<code>select2.js</code> / <code>select2.min.js</code>)
      -          </td>
      -          <td>
      -            This is the build that most people should be using for Select2. It
      -            includes the most commonly used features.
      -          </td>
      -        </tr>
      -        <tr id="builds-full">
      -          <td>
      -            Full (<code>select2.full.js</code> / <code>select2.full.min.js</code>)
      -          </td>
      -          <td>
      -            You should only use this build if you need the additional features
      -            from Select2, like the
      -            <a href="options.html#compatibility">compatibility modules</a> or
      -            recommended includes like
      -            <a href="https://github.com/jquery/jquery-mousewheel">jquery.mousewheel</a>
      -          </td>
      -        </tr>
      -      </tbody>
      -    </table>
      -  </section>
      -</div>
      diff --git a/bower_components/select2/docs/options-old.html b/bower_components/select2/docs/options-old.html
      deleted file mode 100644
      index 65690d1852..0000000000
      --- a/bower_components/select2/docs/options-old.html
      +++ /dev/null
      @@ -1,37 +0,0 @@
      ----
      -layout: default
      -title: Options - Select2
      -slug: options
      ----
      -
      -<section class="jumbotron">
      -  <div class="container">
      -    <h1>
      -      Options
      -    </h1>
      -  </div>
      -</section>
      -
      -<div class="container s2-docs-container">
      -  <div class="row">
      -    <div class="col-md-9" role="main">
      -
      -      {% include options-old/core-options.html %}
      -      {% include options-old/dropdown.html %}
      -      {% include options-old/events.html %}
      -      {% include options-old/adapters.html %}
      -      {% include options-old/setting-default-options.html %}
      -      {% include options-old/backwards-compatibility.html %}
      -
      -    </div>
      -    <div class="col-md-3" role="complementary">
      -
      -      {% include nav/options-old.html %}
      -
      -    </div>
      -  </div>
      -</div>
      -
      -<script type="text/javascript">
      -  prettyPrint();
      -</script>
      diff --git a/bower_components/select2/docs/options.html b/bower_components/select2/docs/options.html
      deleted file mode 100644
      index 5670c1cf10..0000000000
      --- a/bower_components/select2/docs/options.html
      +++ /dev/null
      @@ -1,37 +0,0 @@
      ----
      -layout: default
      -title: Options - Select2
      -slug: options
      ----
      -
      -<section class="jumbotron">
      -  <div class="container">
      -    <h1>
      -      Options
      -    </h1>
      -    <p class="lead">
      -      Select2 supports a wide variety of options that allow you to customize it to your needs.
      -    </p>
      -  </div>
      -</section>
      -
      -<div class="container s2-docs-container">
      -  <div class="row">
      -    <div class="col-md-9" role="main">
      -      {% include options/introduction.html %}
      -      {% include options/core.html %}
      -      {% include options/data.html %}
      -      {% include options/selections.html %}
      -      {% include options/dropdown.html %}
      -      {% include options/events.html %}
      -      {% include options/compatibility.html %}
      -    </div>
      -    <div class="col-md-3" role="complementary">
      -      {% include nav/options.html %}
      -    </div>
      -  </div>
      -</div>
      -
      -<script type="text/javascript">
      -  prettyPrint();
      -</script>
      diff --git a/bower_components/select2/docs/vendor/fonts/FontAwesome.otf b/bower_components/select2/docs/vendor/fonts/FontAwesome.otf
      deleted file mode 100644
      index 3ed7f8b48ad9bfab52eb03822fefcd6b77d2e680..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 109688
      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%0D}#zSrRb8FuaocFSDv)#ldj3
      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
      C&dmJ)
      
      diff --git a/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.eot b/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.eot
      deleted file mode 100644
      index 9b6afaedc0fd7aaf927a07f82da9c11022251b8b..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 70807
      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
      Ppt>MT0000000000CGV>t
      
      diff --git a/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.svg b/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.svg
      deleted file mode 100644
      index d05688e9e2..0000000000
      --- a/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.svg
      +++ /dev/null
      @@ -1,655 +0,0 @@
      -<?xml version="1.0" standalone="no"?>
      -<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
      -<svg xmlns="http://www.w3.org/2000/svg">
      -<metadata></metadata>
      -<defs>
      -<font id="fontawesomeregular" horiz-adv-x="1536" >
      -<font-face units-per-em="1792" ascent="1536" descent="-256" />
      -<missing-glyph horiz-adv-x="448" />
      -<glyph unicode=" "  horiz-adv-x="448" />
      -<glyph unicode="&#x09;" horiz-adv-x="448" />
      -<glyph unicode="&#xa0;" horiz-adv-x="448" />
      -<glyph unicode="&#xa8;" horiz-adv-x="1792" />
      -<glyph unicode="&#xa9;" horiz-adv-x="1792" />
      -<glyph unicode="&#xae;" horiz-adv-x="1792" />
      -<glyph unicode="&#xb4;" horiz-adv-x="1792" />
      -<glyph unicode="&#xc6;" horiz-adv-x="1792" />
      -<glyph unicode="&#xd8;" horiz-adv-x="1792" />
      -<glyph unicode="&#x2000;" horiz-adv-x="768" />
      -<glyph unicode="&#x2001;" horiz-adv-x="1537" />
      -<glyph unicode="&#x2002;" horiz-adv-x="768" />
      -<glyph unicode="&#x2003;" horiz-adv-x="1537" />
      -<glyph unicode="&#x2004;" horiz-adv-x="512" />
      -<glyph unicode="&#x2005;" horiz-adv-x="384" />
      -<glyph unicode="&#x2006;" horiz-adv-x="256" />
      -<glyph unicode="&#x2007;" horiz-adv-x="256" />
      -<glyph unicode="&#x2008;" horiz-adv-x="192" />
      -<glyph unicode="&#x2009;" horiz-adv-x="307" />
      -<glyph unicode="&#x200a;" horiz-adv-x="85" />
      -<glyph unicode="&#x202f;" horiz-adv-x="307" />
      -<glyph unicode="&#x205f;" horiz-adv-x="384" />
      -<glyph unicode="&#x2122;" horiz-adv-x="1792" />
      -<glyph unicode="&#x221e;" horiz-adv-x="1792" />
      -<glyph unicode="&#x2260;" horiz-adv-x="1792" />
      -<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
      -<glyph unicode="&#xf000;" horiz-adv-x="1792" d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
      -<glyph unicode="&#xf001;" d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89 t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf002;" horiz-adv-x="1664" d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5 t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
      -<glyph unicode="&#xf003;" horiz-adv-x="1792" d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13 t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf004;" horiz-adv-x="1792" d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600 q-18 -18 -44 -18z" />
      -<glyph unicode="&#xf005;" horiz-adv-x="1664" d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455 l502 -73q56 -9 56 -46z" />
      -<glyph unicode="&#xf006;" horiz-adv-x="1664" d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500 l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
      -<glyph unicode="&#xf007;" horiz-adv-x="1408" d="M1408 131q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q9 0 42 -21.5t74.5 -48t108 -48t133.5 -21.5t133.5 21.5t108 48t74.5 48t42 21.5q61 0 111.5 -20t85.5 -53.5t62 -81 t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
      -<glyph unicode="&#xf008;" horiz-adv-x="1920" d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128 q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45 t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128 q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19 t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf009;" horiz-adv-x="1664" d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38 h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf00a;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf00b;" horiz-adv-x="1792" d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28 h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf00c;" horiz-adv-x="1792" d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
      -<glyph unicode="&#xf00d;" horiz-adv-x="1408" d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68 t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
      -<glyph unicode="&#xf00e;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224 q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5 t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
      -<glyph unicode="&#xf010;" horiz-adv-x="1664" d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z " />
      -<glyph unicode="&#xf011;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5 t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
      -<glyph unicode="&#xf012;" horiz-adv-x="1792" d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf013;" d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38 q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13 l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22 q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
      -<glyph unicode="&#xf014;" horiz-adv-x="1408" d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832 q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf015;" horiz-adv-x="1664" d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5 l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
      -<glyph unicode="&#xf016;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z " />
      -<glyph unicode="&#xf017;" d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf018;" horiz-adv-x="1920" d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256 q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
      -<glyph unicode="&#xf019;" horiz-adv-x="1664" d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136 q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
      -<glyph unicode="&#xf01a;" d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273 t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf01b;" d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198 t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf01c;" d="M1023 576h316q-1 3 -2.5 8t-2.5 8l-212 496h-708l-212 -496q-1 -2 -2.5 -8t-2.5 -8h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552 q25 -61 25 -123z" />
      -<glyph unicode="&#xf01d;" d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf01e;" d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q14 0 25 -9 l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
      -<glyph unicode="&#xf021;" d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117 q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5 q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
      -<glyph unicode="&#xf022;" horiz-adv-x="1792" d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5 t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47 t47 -113z" />
      -<glyph unicode="&#xf023;" horiz-adv-x="1152" d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf024;" horiz-adv-x="1792" d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48 t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf025;" horiz-adv-x="1664" d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78 t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5 t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
      -<glyph unicode="&#xf026;" horiz-adv-x="768" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
      -<glyph unicode="&#xf027;" horiz-adv-x="1152" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
      -<glyph unicode="&#xf028;" horiz-adv-x="1664" d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 35.5 t12 57t-12 57t-29 35.5t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5 t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289 t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
      -<glyph unicode="&#xf029;" horiz-adv-x="1408" d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
      -<glyph unicode="&#xf02a;" horiz-adv-x="1792" d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
      -<glyph unicode="&#xf02b;" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91z" />
      -<glyph unicode="&#xf02c;" horiz-adv-x="1920" d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5 l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
      -<glyph unicode="&#xf02d;" horiz-adv-x="1664" d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23 q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906 q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5 t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
      -<glyph unicode="&#xf02e;" horiz-adv-x="1280" d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
      -<glyph unicode="&#xf02f;" horiz-adv-x="1664" d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68 v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
      -<glyph unicode="&#xf030;" horiz-adv-x="1920" d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136 q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf031;" horiz-adv-x="1664" d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57 q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -4 -0.5 -13t-0.5 -13q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5 q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
      -<glyph unicode="&#xf032;" horiz-adv-x="1408" d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142 q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5 t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68.5 -0.5t67.5 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5 t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
      -<glyph unicode="&#xf033;" horiz-adv-x="1024" d="M0 -126l17 85q6 2 81.5 21.5t111.5 37.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5 q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
      -<glyph unicode="&#xf034;" horiz-adv-x="1792" d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2 t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5 q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
      -<glyph unicode="&#xf035;" d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1 t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27 q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5 t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49 t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
      -<glyph unicode="&#xf036;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf037;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19 h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf038;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf039;" horiz-adv-x="1792" d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45 t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf03a;" horiz-adv-x="1792" d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5 t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344 q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192 q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
      -<glyph unicode="&#xf03b;" horiz-adv-x="1792" d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
      -<glyph unicode="&#xf03c;" horiz-adv-x="1792" d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5 t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088 q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
      -<glyph unicode="&#xf03d;" horiz-adv-x="1792" d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5 q39 -17 39 -59z" />
      -<glyph unicode="&#xf03e;" horiz-adv-x="1920" d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216 q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf040;" d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38 q53 0 91 -38l235 -234q37 -39 37 -91z" />
      -<glyph unicode="&#xf041;" horiz-adv-x="1024" d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
      -<glyph unicode="&#xf042;" d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf043;" horiz-adv-x="1024" d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362 q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
      -<glyph unicode="&#xf044;" horiz-adv-x="1792" d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92 l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
      -<glyph unicode="&#xf045;" horiz-adv-x="1664" d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832 q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5 t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
      -<glyph unicode="&#xf046;" horiz-adv-x="1664" d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832 q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110 q24 -24 24 -57t-24 -57z" />
      -<glyph unicode="&#xf047;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45 t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
      -<glyph unicode="&#xf048;" horiz-adv-x="1024" d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19z" />
      -<glyph unicode="&#xf049;" horiz-adv-x="1792" d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 11 13 19l710 710 q19 19 32 13t13 -32v-710q4 11 13 19z" />
      -<glyph unicode="&#xf04a;" horiz-adv-x="1664" d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-8 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q5 11 13 19z" />
      -<glyph unicode="&#xf04b;" horiz-adv-x="1408" d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
      -<glyph unicode="&#xf04c;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf04d;" d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf04e;" horiz-adv-x="1664" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
      -<glyph unicode="&#xf050;" horiz-adv-x="1792" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v710q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19l-710 -710 q-19 -19 -32 -13t-13 32v710q-5 -10 -13 -19z" />
      -<glyph unicode="&#xf051;" horiz-adv-x="1024" d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q8 -8 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-5 -10 -13 -19z" />
      -<glyph unicode="&#xf052;" horiz-adv-x="1538" d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
      -<glyph unicode="&#xf053;" horiz-adv-x="1280" d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
      -<glyph unicode="&#xf054;" horiz-adv-x="1280" d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
      -<glyph unicode="&#xf055;" d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5 t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf056;" d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
      -<glyph unicode="&#xf057;" d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19 q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf058;" d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf059;" d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59 q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf05a;" d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23 t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf05b;" d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109 q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143 q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf05c;" d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23 l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5 t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf05d;" d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198 t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf05e;" d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61 t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
      -<glyph unicode="&#xf060;" d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5 t32.5 -90.5z" />
      -<glyph unicode="&#xf061;" d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
      -<glyph unicode="&#xf062;" horiz-adv-x="1664" d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651 q37 -39 37 -91z" />
      -<glyph unicode="&#xf063;" horiz-adv-x="1664" d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
      -<glyph unicode="&#xf064;" horiz-adv-x="1792" d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22 t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
      -<glyph unicode="&#xf065;" d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332 q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf066;" d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45 t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
      -<glyph unicode="&#xf067;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf068;" horiz-adv-x="1408" d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf069;" horiz-adv-x="1664" d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154 q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
      -<glyph unicode="&#xf06a;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192 q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
      -<glyph unicode="&#xf06b;" d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320 q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5 t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf06c;" horiz-adv-x="1792" d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268 q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-30 0 -51 11t-31 24t-27 42q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5 t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
      -<glyph unicode="&#xf06d;" horiz-adv-x="1408" d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1 q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
      -<glyph unicode="&#xf06e;" horiz-adv-x="1792" d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5 t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
      -<glyph unicode="&#xf070;" horiz-adv-x="1792" d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9 q-105 -188 -315 -566t-316 -567l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5 q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z " />
      -<glyph unicode="&#xf071;" horiz-adv-x="1792" d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185 q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
      -<glyph unicode="&#xf072;" horiz-adv-x="1408" d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9 q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
      -<glyph unicode="&#xf073;" horiz-adv-x="1664" d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64 q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47 h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf074;" horiz-adv-x="1792" d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1 t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5 v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111 t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
      -<glyph unicode="&#xf075;" horiz-adv-x="1792" d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281 q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
      -<glyph unicode="&#xf076;" d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384 q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf077;" horiz-adv-x="1792" d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
      -<glyph unicode="&#xf078;" horiz-adv-x="1792" d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
      -<glyph unicode="&#xf079;" horiz-adv-x="1920" d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -11 7 -21 zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z " />
      -<glyph unicode="&#xf07a;" horiz-adv-x="1664" d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45 t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf07b;" horiz-adv-x="1664" d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
      -<glyph unicode="&#xf07c;" horiz-adv-x="1920" d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5 t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
      -<glyph unicode="&#xf07d;" horiz-adv-x="768" d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
      -<glyph unicode="&#xf07e;" horiz-adv-x="1792" d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
      -<glyph unicode="&#xf080;" horiz-adv-x="2048" d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
      -<glyph unicode="&#xf081;" d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4 q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5 t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf082;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960z" />
      -<glyph unicode="&#xf083;" horiz-adv-x="1792" d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5 t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280 q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
      -<glyph unicode="&#xf084;" horiz-adv-x="1792" d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26 l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5 t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
      -<glyph unicode="&#xf085;" horiz-adv-x="1920" d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -10 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5 l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7 l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -9 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31 q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20 t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68 q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70 q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
      -<glyph unicode="&#xf086;" horiz-adv-x="1792" d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224 q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7 q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
      -<glyph unicode="&#xf087;" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5 t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769 q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128 q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
      -<glyph unicode="&#xf088;" d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 32 18 69t-17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5 t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5 h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -74 49 -163z" />
      -<glyph unicode="&#xf089;" horiz-adv-x="896" d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
      -<glyph unicode="&#xf08a;" horiz-adv-x="1792" d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559 q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5 q224 0 351 -124t127 -344z" />
      -<glyph unicode="&#xf08b;" horiz-adv-x="1664" d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704 q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
      -<glyph unicode="&#xf08c;" d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5 q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf08d;" horiz-adv-x="1152" d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38 t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
      -<glyph unicode="&#xf08e;" horiz-adv-x="1792" d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320 q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf090;" d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5 q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf091;" horiz-adv-x="1664" d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91 t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96 q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf092;" d="M394 184q-8 -9 -20 3q-13 11 -4 19q8 9 20 -3q12 -11 4 -19zM352 245q9 -12 0 -19q-8 -6 -17 7t0 18q9 7 17 -6zM291 305q-5 -7 -13 -2q-10 5 -7 12q3 5 13 2q10 -5 7 -12zM322 271q-6 -7 -16 3q-9 11 -2 16q6 6 16 -3q9 -11 2 -16zM451 159q-4 -12 -19 -6q-17 4 -13 15 t19 7q16 -5 13 -16zM514 154q0 -11 -16 -11q-17 -2 -17 11q0 11 16 11q17 2 17 -11zM572 164q2 -10 -14 -14t-18 8t14 15q16 2 18 -9zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-224q-16 0 -24.5 1t-19.5 5t-16 14.5t-5 27.5v239q0 97 -52 142q57 6 102.5 18t94 39 t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103 q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -103t0.5 -68q0 -22 -11 -33.5t-22 -13t-33 -1.5 h-224q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf093;" horiz-adv-x="1664" d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92 t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
      -<glyph unicode="&#xf094;" d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5 q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44 q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5 q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -10 1 -18.5t3 -17t4 -13.5t6.5 -16t6.5 -17q16 -40 25 -118.5t9 -136.5z" />
      -<glyph unicode="&#xf095;" horiz-adv-x="1408" d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -52.5 3.5t-57.5 12.5t-47.5 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-128 79 -264.5 215.5t-215.5 264.5q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47.5t-12.5 57.5t-3.5 52.5 q0 92 51 186q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174 q2 -1 19 -11.5t24 -14t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
      -<glyph unicode="&#xf096;" horiz-adv-x="1408" d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832 q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf097;" horiz-adv-x="1280" d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289 q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
      -<glyph unicode="&#xf098;" d="M1280 343q0 11 -2 16q-3 8 -38.5 29.5t-88.5 49.5l-53 29q-5 3 -19 13t-25 15t-21 5q-18 0 -47 -32.5t-57 -65.5t-44 -33q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170.5 126.5t-126.5 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5t-3.5 16.5q0 13 20.5 33.5t45 38.5 t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5t320.5 -216.5q6 -2 30 -11t33 -12.5 t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf099;" horiz-adv-x="1664" d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41 q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
      -<glyph unicode="&#xf09a;" horiz-adv-x="1024" d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
      -<glyph unicode="&#xf09b;" d="M1536 640q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -39.5 7t-12.5 30v211q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 121 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-86 13.5 q-44 -113 -7 -204q-79 -85 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-40 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23 q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -89t0.5 -54q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf09c;" horiz-adv-x="1664" d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5 t316.5 -131.5t131.5 -316.5z" />
      -<glyph unicode="&#xf09d;" horiz-adv-x="1920" d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608 q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
      -<glyph unicode="&#xf09e;" horiz-adv-x="1408" d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5 t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294 q187 -186 294 -425.5t120 -501.5z" />
      -<glyph unicode="&#xf0a0;" d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5 h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75 l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
      -<glyph unicode="&#xf0a1;" horiz-adv-x="1792" d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5 t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
      -<glyph unicode="&#xf0a2;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5 t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
      -<glyph unicode="&#xf0a3;" d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70 l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70 l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
      -<glyph unicode="&#xf0a4;" horiz-adv-x="1792" d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106 q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43 q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5 t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
      -<glyph unicode="&#xf0a5;" horiz-adv-x="1792" d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-2 3 -3.5 4.5t-4 4.5t-4.5 5q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576 q-50 0 -89 -38.5t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45 t45 -19t45 19t19 45zM1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128 q0 122 81.5 189t206.5 67q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
      -<glyph unicode="&#xf0a6;" d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576 q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5 t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76 q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
      -<glyph unicode="&#xf0a7;" d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33 t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580 q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100 q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
      -<glyph unicode="&#xf0a8;" d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf0a9;" d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf0aa;" d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf0ab;" d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf0ac;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11 q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 10.5t-9.5 10.5q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5 q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5 q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5 t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-5 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3 q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25 q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5 t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5 t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10t17 -20q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21 q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5 q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3 q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5 t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q7 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5 q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7 q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
      -<glyph unicode="&#xf0ad;" horiz-adv-x="1664" d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5 t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
      -<glyph unicode="&#xf0ae;" horiz-adv-x="1792" d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19 t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0b0;" horiz-adv-x="1408" d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
      -<glyph unicode="&#xf0b1;" horiz-adv-x="1792" d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68 t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf0b2;" d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144 l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z " />
      -<glyph unicode="&#xf0c0;" horiz-adv-x="1920" d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75 t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5 t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
      -<glyph unicode="&#xf0c1;" horiz-adv-x="1664" d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26 l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15 t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207 q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
      -<glyph unicode="&#xf0c2;" horiz-adv-x="1920" d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z " />
      -<glyph unicode="&#xf0c3;" horiz-adv-x="1664" d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
      -<glyph unicode="&#xf0c4;" horiz-adv-x="1792" d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84 q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148 q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108 q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6 q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
      -<glyph unicode="&#xf0c5;" horiz-adv-x="1792" d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299 h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
      -<glyph unicode="&#xf0c6;" horiz-adv-x="1408" d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181 l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235 z" />
      -<glyph unicode="&#xf0c7;" d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5 h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
      -<glyph unicode="&#xf0c8;" d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf0c9;" d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45 t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0ca;" horiz-adv-x="1792" d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5 t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
      -<glyph unicode="&#xf0cb;" horiz-adv-x="1792" d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362 q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5 t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 122t0.5 121v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5 t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
      -<glyph unicode="&#xf0cc;" horiz-adv-x="1792" d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 97 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6 l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -55 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23 l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
      -<glyph unicode="&#xf0cd;" d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47 q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41 q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472 q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
      -<glyph unicode="&#xf0ce;" horiz-adv-x="1664" d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23 v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192 q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192 q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113 z" />
      -<glyph unicode="&#xf0d0;" horiz-adv-x="1664" d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276 l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
      -<glyph unicode="&#xf0d1;" horiz-adv-x="1792" d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5 t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38 t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0d2;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134 q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33 q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf0d3;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5 t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5 t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
      -<glyph unicode="&#xf0d4;" d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585 h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf0d5;" horiz-adv-x="2304" d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62 q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
      -<glyph unicode="&#xf0d6;" horiz-adv-x="1920" d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384 v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0d7;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0d8;" horiz-adv-x="1024" d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
      -<glyph unicode="&#xf0d9;" horiz-adv-x="640" d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
      -<glyph unicode="&#xf0da;" horiz-adv-x="640" d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
      -<glyph unicode="&#xf0db;" horiz-adv-x="1664" d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf0dc;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
      -<glyph unicode="&#xf0dd;" horiz-adv-x="1024" d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0de;" horiz-adv-x="1024" d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
      -<glyph unicode="&#xf0e0;" horiz-adv-x="1792" d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123 q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
      -<glyph unicode="&#xf0e1;" d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329 q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
      -<glyph unicode="&#xf0e2;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
      -<glyph unicode="&#xf0e3;" horiz-adv-x="1792" d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5 t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14 q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28 q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
      -<glyph unicode="&#xf0e4;" horiz-adv-x="1792" d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5 t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5 t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29 q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
      -<glyph unicode="&#xf0e5;" horiz-adv-x="1792" d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640 q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5 t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
      -<glyph unicode="&#xf0e6;" horiz-adv-x="1792" d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257 t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5 t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129 q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
      -<glyph unicode="&#xf0e7;" horiz-adv-x="896" d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
      -<glyph unicode="&#xf0e8;" horiz-adv-x="1792" d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320 q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68 z" />
      -<glyph unicode="&#xf0e9;" horiz-adv-x="1664" d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97 q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69 q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
      -<glyph unicode="&#xf0ea;" horiz-adv-x="1792" d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28 h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
      -<glyph unicode="&#xf0eb;" horiz-adv-x="1024" d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134 q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47 q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5 t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
      -<glyph unicode="&#xf0ec;" horiz-adv-x="1792" d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9 q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
      -<glyph unicode="&#xf0ed;" horiz-adv-x="1920" d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
      -<glyph unicode="&#xf0ee;" horiz-adv-x="1920" d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088 q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
      -<glyph unicode="&#xf0f0;" horiz-adv-x="1408" d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56 t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68 t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
      -<glyph unicode="&#xf0f1;" horiz-adv-x="1408" d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48 t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252 t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
      -<glyph unicode="&#xf0f2;" horiz-adv-x="1792" d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66 t66 -158z" />
      -<glyph unicode="&#xf0f3;" horiz-adv-x="1792" d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5 t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
      -<glyph unicode="&#xf0f4;" horiz-adv-x="1920" d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45 t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
      -<glyph unicode="&#xf0f5;" horiz-adv-x="1408" d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45 t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0f6;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704 q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
      -<glyph unicode="&#xf0f7;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0f8;" horiz-adv-x="1408" d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5 t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320 v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0f9;" horiz-adv-x="1920" d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152 q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf0fa;" horiz-adv-x="1792" d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32 q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
      -<glyph unicode="&#xf0fb;" horiz-adv-x="1920" d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96 q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q261 -58 287 -93z" />
      -<glyph unicode="&#xf0fc;" horiz-adv-x="1664" d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
      -<glyph unicode="&#xf0fd;" d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf0fe;" d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf100;" horiz-adv-x="1024" d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
      -<glyph unicode="&#xf101;" horiz-adv-x="1024" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23 l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
      -<glyph unicode="&#xf102;" horiz-adv-x="1152" d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393 q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
      -<glyph unicode="&#xf103;" horiz-adv-x="1152" d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23 t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
      -<glyph unicode="&#xf104;" horiz-adv-x="640" d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
      -<glyph unicode="&#xf105;" horiz-adv-x="640" d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
      -<glyph unicode="&#xf106;" horiz-adv-x="1152" d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
      -<glyph unicode="&#xf107;" horiz-adv-x="1152" d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
      -<glyph unicode="&#xf108;" horiz-adv-x="1920" d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19 t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf109;" horiz-adv-x="1920" d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
      -<glyph unicode="&#xf10a;" horiz-adv-x="1152" d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832 q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf10b;" horiz-adv-x="768" d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136 q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf10c;" d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103 t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf10d;" horiz-adv-x="1664" d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
      -<glyph unicode="&#xf10e;" horiz-adv-x="1664" d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216 v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
      -<glyph unicode="&#xf110;" horiz-adv-x="1792" d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5 q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
      -<glyph unicode="&#xf111;" d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf112;" horiz-adv-x="1792" d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19 l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
      -<glyph unicode="&#xf113;" horiz-adv-x="1664" d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320 q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86 t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218 q0 -87 -27 -168q136 -160 136 -398z" />
      -<glyph unicode="&#xf114;" horiz-adv-x="1664" d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320 q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
      -<glyph unicode="&#xf115;" horiz-adv-x="1920" d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68 v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z " />
      -<glyph unicode="&#xf116;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf117;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf118;" d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5 t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf119;" d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204 t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf11a;" d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf11b;" horiz-adv-x="1920" d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150 t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
      -<glyph unicode="&#xf11c;" horiz-adv-x="1920" d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16 h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16 h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96 q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896 h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
      -<glyph unicode="&#xf11d;" horiz-adv-x="1792" d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9 h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102 q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
      -<glyph unicode="&#xf11e;" horiz-adv-x="1792" d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2 q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266 q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8 q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
      -<glyph unicode="&#xf120;" horiz-adv-x="1664" d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9 t9 -23z" />
      -<glyph unicode="&#xf121;" horiz-adv-x="1920" d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5 l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
      -<glyph unicode="&#xf122;" horiz-adv-x="1792" d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1 q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
      -<glyph unicode="&#xf123;" horiz-adv-x="1664" d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5 l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
      -<glyph unicode="&#xf124;" horiz-adv-x="1408" d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
      -<glyph unicode="&#xf125;" horiz-adv-x="1664" d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23 v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf126;" horiz-adv-x="1024" d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5 q-2 -287 -226 -414q-68 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497 q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
      -<glyph unicode="&#xf127;" horiz-adv-x="1664" d="M439 265l-256 -256q-10 -9 -23 -9q-12 0 -23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320 q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18 l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9 t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
      -<glyph unicode="&#xf128;" horiz-adv-x="1024" d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5 t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
      -<glyph unicode="&#xf129;" horiz-adv-x="640" d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192 q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf12a;" horiz-adv-x="640" d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
      -<glyph unicode="&#xf12b;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1534 846v-206h-514l-3 27 q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5t-65.5 -51.5t-30.5 -63h232v80 h126z" />
      -<glyph unicode="&#xf12c;" d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3l-9 -21q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109zM1536 -50v-206h-514l-4 27 q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73h232v80h126z" />
      -<glyph unicode="&#xf12d;" horiz-adv-x="1920" d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
      -<glyph unicode="&#xf12e;" horiz-adv-x="1664" d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5 t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89 q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117 q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
      -<glyph unicode="&#xf130;" horiz-adv-x="1152" d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5 t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
      -<glyph unicode="&#xf131;" horiz-adv-x="1408" d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128 q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23 t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
      -<glyph unicode="&#xf132;" horiz-adv-x="1280" d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150 t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf133;" horiz-adv-x="1664" d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf134;" horiz-adv-x="1408" d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800 q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113 q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
      -<glyph unicode="&#xf135;" horiz-adv-x="1664" d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1 q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
      -<glyph unicode="&#xf136;" horiz-adv-x="1792" d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
      -<glyph unicode="&#xf137;" d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf138;" d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf139;" d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf13a;" d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5 t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf13b;" horiz-adv-x="1408" d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
      -<glyph unicode="&#xf13c;" horiz-adv-x="1792" d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
      -<glyph unicode="&#xf13d;" horiz-adv-x="1792" d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-13 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352 q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19 t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf13e;" horiz-adv-x="1152" d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181 v-320h736z" />
      -<glyph unicode="&#xf140;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150 t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640 q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf141;" horiz-adv-x="1408" d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf142;" horiz-adv-x="384" d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192 q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
      -<glyph unicode="&#xf143;" d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 232 -177 396t-396 177q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128q13 0 23 10 t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf144;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56 q16 -8 32 -8q17 0 32 9z" />
      -<glyph unicode="&#xf145;" horiz-adv-x="1792" d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136 t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
      -<glyph unicode="&#xf146;" d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
      -<glyph unicode="&#xf147;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5 t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf148;" horiz-adv-x="1024" d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
      -<glyph unicode="&#xf149;" horiz-adv-x="1024" d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
      -<glyph unicode="&#xf14a;" d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5 t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf14b;" d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf14c;" d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf14d;" d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q10 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5 t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf14e;" d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf150;" d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf151;" d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf152;" d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5 t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf153;" horiz-adv-x="1024" d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9 t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26 l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
      -<glyph unicode="&#xf154;" horiz-adv-x="1024" d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7 q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
      -<glyph unicode="&#xf155;" horiz-adv-x="1024" d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43 t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5 t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50 t53 -63.5t31.5 -76.5t13 -94z" />
      -<glyph unicode="&#xf156;" horiz-adv-x="898" d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102 q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf157;" horiz-adv-x="1027" d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61 l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
      -<glyph unicode="&#xf158;" horiz-adv-x="1280" d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128 q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
      -<glyph unicode="&#xf159;" horiz-adv-x="1792" d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23 t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28 q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf15a;" horiz-adv-x="1280" d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164 l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30 t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
      -<glyph unicode="&#xf15b;" d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
      -<glyph unicode="&#xf15c;" d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
      -<glyph unicode="&#xf15d;" horiz-adv-x="1664" d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23 v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162 l230 -662h70z" />
      -<glyph unicode="&#xf15e;" horiz-adv-x="1664" d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150 v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248 v119h121z" />
      -<glyph unicode="&#xf160;" horiz-adv-x="1792" d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832 q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf161;" horiz-adv-x="1792" d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192 q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf162;" d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23 zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5 t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
      -<glyph unicode="&#xf163;" d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9 t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13 q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
      -<glyph unicode="&#xf164;" horiz-adv-x="1664" d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76 q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5 t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
      -<glyph unicode="&#xf165;" horiz-adv-x="1664" d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135 t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121 t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
      -<glyph unicode="&#xf166;" d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 16 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15 q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38 q21 -28 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5 q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78l24 -69t23 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38q-51 0 -78 -38 q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960 q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf167;" d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73 q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51 q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99 q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-37 -51 -106 -51q-67 0 -105 51 q-28 38 -28 118v175q0 80 28 117q38 51 105 51q69 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
      -<glyph unicode="&#xf168;" horiz-adv-x="1408" d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942 q25 45 64 45h241q22 0 31 -15z" />
      -<glyph unicode="&#xf169;" d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1 l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf16a;" horiz-adv-x="1792" d="M1280 640q0 37 -30 54l-512 320q-31 20 -65 2q-33 -18 -33 -56v-640q0 -38 33 -56q16 -8 31 -8q20 0 34 10l512 320q30 17 30 54zM1792 640q0 -96 -1 -150t-8.5 -136.5t-22.5 -147.5q-16 -73 -69 -123t-124 -58q-222 -25 -671 -25t-671 25q-71 8 -124.5 58t-69.5 123 q-14 65 -21.5 147.5t-8.5 136.5t-1 150t1 150t8.5 136.5t22.5 147.5q16 73 69 123t124 58q222 25 671 25t671 -25q71 -8 124.5 -58t69.5 -123q14 -65 21.5 -147.5t8.5 -136.5t1 -150z" />
      -<glyph unicode="&#xf16b;" horiz-adv-x="1792" d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
      -<glyph unicode="&#xf16c;" d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
      -<glyph unicode="&#xf16d;" d="M1362 110v648h-135q20 -63 20 -131q0 -126 -64 -232.5t-174 -168.5t-240 -62q-197 0 -337 135.5t-140 327.5q0 68 20 131h-141v-648q0 -26 17.5 -43.5t43.5 -17.5h1069q25 0 43 17.5t18 43.5zM1078 643q0 124 -90.5 211.5t-218.5 87.5q-127 0 -217.5 -87.5t-90.5 -211.5 t90.5 -211.5t217.5 -87.5q128 0 218.5 87.5t90.5 211.5zM1362 1003v165q0 28 -20 48.5t-49 20.5h-174q-29 0 -49 -20.5t-20 -48.5v-165q0 -29 20 -49t49 -20h174q29 0 49 20t20 49zM1536 1211v-1142q0 -81 -58 -139t-139 -58h-1142q-81 0 -139 58t-58 139v1142q0 81 58 139 t139 58h1142q81 0 139 -58t58 -139z" />
      -<glyph unicode="&#xf16e;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150 t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
      -<glyph unicode="&#xf170;" d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf171;" horiz-adv-x="1408" d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22 t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18 t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5 t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
      -<glyph unicode="&#xf172;" d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5 t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120 v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf173;" horiz-adv-x="1024" d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14 q78 2 134 29z" />
      -<glyph unicode="&#xf174;" d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf175;" horiz-adv-x="768" d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
      -<glyph unicode="&#xf176;" horiz-adv-x="768" d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
      -<glyph unicode="&#xf177;" horiz-adv-x="1792" d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf178;" horiz-adv-x="1792" d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
      -<glyph unicode="&#xf179;" horiz-adv-x="1408" d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q112 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65 q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
      -<glyph unicode="&#xf17a;" horiz-adv-x="1664" d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
      -<glyph unicode="&#xf17b;" horiz-adv-x="1408" d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30 t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5 h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
      -<glyph unicode="&#xf17c;" d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-7 -10 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7 q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15 q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5 t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19 q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63 q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18l-4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92 q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152 q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-14 -1 -7 -7l4 -2 q14 -4 18 -31q0 -3 8 2zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5t-30 -18.5 t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43q-19 4 -51 9.5 t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49t-14 -48 q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54q110 143 124 195 q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5t-40.5 -33.5t-61 -14 q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5t15.5 47.5q1 -31 8 -56.5 t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
      -<glyph unicode="&#xf17d;" d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81 t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19 q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -6 6.5 -17.5t7.5 -16.5q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6 t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf17e;" d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5 t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5 q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80 q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
      -<glyph unicode="&#xf180;" horiz-adv-x="1280" d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324 l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
      -<glyph unicode="&#xf181;" d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408 q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf182;" horiz-adv-x="1280" d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43 q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
      -<glyph unicode="&#xf183;" horiz-adv-x="1024" d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
      -<glyph unicode="&#xf184;" d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf185;" horiz-adv-x="1792" d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4 l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94 q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
      -<glyph unicode="&#xf186;" d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61 t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
      -<glyph unicode="&#xf187;" horiz-adv-x="1792" d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536 q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf188;" horiz-adv-x="1664" d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207 q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19 t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
      -<glyph unicode="&#xf189;" horiz-adv-x="1920" d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-78 -100 -90 -131q-17 -41 14 -81q17 -21 81 -82h1l1 -1l1 -1l2 -2q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58 t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6 q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q17 19 38 30q53 26 239 24 q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2 q39 5 64 -2.5t31 -16.5z" />
      -<glyph unicode="&#xf18a;" horiz-adv-x="1792" d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12 q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422 q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178 q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
      -<glyph unicode="&#xf18b;" d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495 q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
      -<glyph unicode="&#xf18c;" horiz-adv-x="1408" d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5 t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56 t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -5 1 -50.5t-1 -71.5q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5 t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
      -<glyph unicode="&#xf18d;" horiz-adv-x="1280" d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z " />
      -<glyph unicode="&#xf18e;" d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf190;" d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198 t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf191;" d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf192;" d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5 t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf193;" horiz-adv-x="1664" d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128 q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 16 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
      -<glyph unicode="&#xf194;" d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179 q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf195;" horiz-adv-x="1152" d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160 q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf196;" horiz-adv-x="1408" d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832 q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf197;" horiz-adv-x="2176" d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40 t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29 q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
      -<glyph unicode="&#xf198;" horiz-adv-x="1664" d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9 q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102 t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
      -<glyph unicode="&#xf199;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69 q-46 32 -141.5 92.5t-142.5 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13 t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
      -<glyph unicode="&#xf19a;" horiz-adv-x="1792" d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5 t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21 t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286 t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273 t273 -182.5t331.5 -68z" />
      -<glyph unicode="&#xf19b;" horiz-adv-x="1792" d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
      -<glyph unicode="&#xf19c;" horiz-adv-x="2048" d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64 q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
      -<glyph unicode="&#xf19d;" horiz-adv-x="2304" d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433 q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
      -<glyph unicode="&#xf19e;" d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q43 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0 q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
      -<glyph unicode="&#xf1a0;" d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5 t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
      -<glyph unicode="&#xf1a1;" horiz-adv-x="1792" d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26 t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37 q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191 t348 71t348 -71t286 -191t191 -286t71 -348z" />
      -<glyph unicode="&#xf1a2;" d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54 q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83 q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf1a3;" d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150 v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103 t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf1a4;" horiz-adv-x="1920" d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328 v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
      -<glyph unicode="&#xf1a5;" d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5 t84.5 -203.5z" />
      -<glyph unicode="&#xf1a6;" horiz-adv-x="2048" d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123 v-369h123z" />
      -<glyph unicode="&#xf1a7;" d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101 v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960 q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf1a8;" horiz-adv-x="2038" d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14 q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24 q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33 q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5 t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43 q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5 t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13 t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
      -<glyph unicode="&#xf1a9;" d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10 q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14 q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14 t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44 q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
      -<glyph unicode="&#xf1aa;" d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5 t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5 q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126 t135.5 51q85 0 145 -60.5t60 -145.5z" />
      -<glyph unicode="&#xf1ab;" d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5 q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28 q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11 q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q106 35 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5 q20 0 20 -21v-418z" />
      -<glyph unicode="&#xf1ac;" horiz-adv-x="1792" d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48 l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23 t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128 q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128 q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
      -<glyph unicode="&#xf1ad;" d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9 t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9 t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64 q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64 q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9 t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
      -<glyph unicode="&#xf1ae;" horiz-adv-x="1280" d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68t68 28t68 -28l228 -228h368l228 228q28 28 68 28t68 -28t28 -68t-28 -68zM864 1152q0 -93 -65.5 -158.5 t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
      -<glyph unicode="&#xf1b0;" horiz-adv-x="1664" d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5 q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819 q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5 t100.5 134t141.5 55.5z" />
      -<glyph unicode="&#xf1b1;" horiz-adv-x="768" d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
      -<glyph unicode="&#xf1b2;" horiz-adv-x="1792" d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z " />
      -<glyph unicode="&#xf1b3;" horiz-adv-x="2304" d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67 t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-5 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70 v-400l434 -186q36 -16 57 -48t21 -70z" />
      -<glyph unicode="&#xf1b4;" horiz-adv-x="2048" d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658 q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204 q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
      -<glyph unicode="&#xf1b5;" d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5 t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217 t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
      -<glyph unicode="&#xf1b6;" horiz-adv-x="1792" d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5 q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89 q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
      -<glyph unicode="&#xf1b7;" d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5 q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5 q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z " />
      -<glyph unicode="&#xf1b8;" horiz-adv-x="1792" d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188 l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5 t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1 q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
      -<glyph unicode="&#xf1b9;" horiz-adv-x="2048" d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384 q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5 l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
      -<glyph unicode="&#xf1ba;" horiz-adv-x="2048" d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5 t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
      -<glyph unicode="&#xf1bb;" d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384 q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
      -<glyph unicode="&#xf1bc;" d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64 q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37 q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf1bd;" horiz-adv-x="1024" d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
      -<glyph unicode="&#xf1be;" horiz-adv-x="2304" d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11 q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245 q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785 l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242 q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236q0 -11 -8 -19 t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786q-13 2 -22 11t-9 22v899 q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
      -<glyph unicode="&#xf1c0;" d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127 t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5 t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
      -<glyph unicode="&#xf1c1;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197 q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8 q-1 1 -1 2t-0.5 1.5t-0.5 1.5q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
      -<glyph unicode="&#xf1c2;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4l-3 21q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5t-3.5 -21.5l-4 -21h-4l-2 21 q-2 26 -7 46l-99 438h90v107h-300z" />
      -<glyph unicode="&#xf1c3;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107 h-290v-107h68l189 -272l-194 -283h-68z" />
      -<glyph unicode="&#xf1c4;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
      -<glyph unicode="&#xf1c5;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
      -<glyph unicode="&#xf1c6;" d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400 v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79 q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
      -<glyph unicode="&#xf1c7;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5 q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
      -<glyph unicode="&#xf1c8;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
      -<glyph unicode="&#xf1c9;" d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243 l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
      -<glyph unicode="&#xf1ca;" d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406 q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
      -<glyph unicode="&#xf1cb;" horiz-adv-x="1792" d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546 q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
      -<glyph unicode="&#xf1cc;" horiz-adv-x="2048" d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94 q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55 t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97q14 -16 29.5 -34t34.5 -40t29 -34q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5 t-85 -189.5z" />
      -<glyph unicode="&#xf1cd;" horiz-adv-x="1792" d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194 q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5 t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
      -<glyph unicode="&#xf1ce;" horiz-adv-x="1792" d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5 t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
      -<glyph unicode="&#xf1d0;" horiz-adv-x="1792" d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41 t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170 t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136 q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
      -<glyph unicode="&#xf1d1;" horiz-adv-x="1792" d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251 l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162 q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33 q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5 t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71 t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
      -<glyph unicode="&#xf1d2;" d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85 q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392 q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072 q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf1d3;" horiz-adv-x="1792" d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58 q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47 q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171 v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
      -<glyph unicode="&#xf1d4;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf1d5;" horiz-adv-x="1280" d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5 t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153 t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
      -<glyph unicode="&#xf1d6;" horiz-adv-x="1792" d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5 q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20 t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5 t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
      -<glyph unicode="&#xf1d7;" horiz-adv-x="2048" d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25 q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5 q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109 q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
      -<glyph unicode="&#xf1d8;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
      -<glyph unicode="&#xf1d9;" horiz-adv-x="1792" d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137 l863 639l-478 -797z" />
      -<glyph unicode="&#xf1da;" d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5 t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23 t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf1db;" d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103 t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf1dc;" horiz-adv-x="1792" d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15 t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2 t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160 q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5 q0 -26 -12 -48t-36 -22z" />
      -<glyph unicode="&#xf1dd;" horiz-adv-x="1280" d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179 q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
      -<glyph unicode="&#xf1de;" d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256 q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
      -<glyph unicode="&#xf1e0;" d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5 t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
      -<glyph unicode="&#xf1e1;" d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5 t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf1e2;" horiz-adv-x="1792" d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5 t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91 q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9 t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
      -<glyph unicode="&#xf1e3;" horiz-adv-x="1792" d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323 l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
      -<glyph unicode="&#xf1e4;" horiz-adv-x="1792" d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23 v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192 q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23 zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5 t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
      -<glyph unicode="&#xf1e5;" horiz-adv-x="1792" d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf1e6;" horiz-adv-x="1792" d="M1755 1083q37 -37 37 -90t-37 -91l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234l401 400 q38 37 91 37t90 -37z" />
      -<glyph unicode="&#xf1e7;" horiz-adv-x="1792" d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5 t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q3 -2 11 -7 t11 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
      -<glyph unicode="&#xf1e8;" horiz-adv-x="1792" d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
      -<glyph unicode="&#xf1e9;" d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36 q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q70 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5 t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87 q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
      -<glyph unicode="&#xf1ea;" horiz-adv-x="2048" d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19 t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
      -<glyph unicode="&#xf1eb;" horiz-adv-x="2048" d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121 q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
      -<glyph unicode="&#xf1ec;" horiz-adv-x="1792" d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5 t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5 t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38 h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf1ed;" d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246 q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598 q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
      -<glyph unicode="&#xf1ee;" horiz-adv-x="1792" d="M602 949q19 -61 31 -123.5t17 -141.5t-14 -159t-62 -145q-21 81 -67 157t-95.5 127t-99 90.5t-78.5 57.5t-33 19q-62 34 -81.5 100t14.5 128t101 81.5t129 -14.5q138 -83 238 -177zM927 1236q11 -25 20.5 -46t36.5 -100.5t42.5 -150.5t25.5 -179.5t0 -205.5t-47.5 -209.5 t-105.5 -208.5q-51 -72 -138 -72q-54 0 -98 31q-57 40 -69 109t28 127q60 85 81 195t13 199.5t-32 180.5t-39 128t-22 52q-31 63 -8.5 129.5t85.5 97.5q34 17 75 17q47 0 88.5 -25t63.5 -69zM1248 567q-17 -160 -72 -311q-17 131 -63 246q25 174 -5 361q-27 178 -94 342 q114 -90 212 -211q9 -37 15 -80q26 -179 7 -347zM1520 1440q9 -17 23.5 -49.5t43.5 -117.5t50.5 -178t34 -227.5t5 -269t-47 -300t-112.5 -323.5q-22 -48 -66 -75.5t-95 -27.5q-39 0 -74 16q-67 31 -92.5 100t4.5 136q58 126 90 257.5t37.5 239.5t-3.5 213.5t-26.5 180.5 t-38.5 138.5t-32.5 90t-15.5 32.5q-34 65 -11.5 135.5t87.5 104.5q37 20 81 20q49 0 91.5 -25.5t66.5 -70.5z" />
      -<glyph unicode="&#xf1f0;" horiz-adv-x="2304" d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27 q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128 q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf1f1;" horiz-adv-x="2304" d="M671 603h-13q-47 0 -47 -32q0 -22 20 -22q17 0 28 15t12 39zM1066 639h62v3q1 4 0.5 6.5t-1 7t-2 8t-4.5 6.5t-7.5 5t-11.5 2q-28 0 -36 -38zM1606 603h-12q-48 0 -48 -32q0 -22 20 -22q17 0 28 15t12 39zM1925 629q0 41 -30 41q-19 0 -31 -20t-12 -51q0 -42 28 -42 q20 0 32.5 20t12.5 52zM480 770h87l-44 -262h-56l32 201l-71 -201h-39l-4 200l-34 -200h-53l44 262h81l2 -163zM733 663q0 -6 -4 -42q-16 -101 -17 -113h-47l1 22q-20 -26 -58 -26q-23 0 -37.5 16t-14.5 42q0 39 26 60.5t73 21.5q14 0 23 -1q0 3 0.5 5.5t1 4.5t0.5 3 q0 20 -36 20q-29 0 -59 -10q0 4 7 48q38 11 67 11q74 0 74 -62zM889 721l-8 -49q-22 3 -41 3q-27 0 -27 -17q0 -8 4.5 -12t21.5 -11q40 -19 40 -60q0 -72 -87 -71q-34 0 -58 6q0 2 7 49q29 -8 51 -8q32 0 32 19q0 7 -4.5 11.5t-21.5 12.5q-43 20 -43 59q0 72 84 72 q30 0 50 -4zM977 721h28l-7 -52h-29q-2 -17 -6.5 -40.5t-7 -38.5t-2.5 -18q0 -16 19 -16q8 0 16 2l-8 -47q-21 -7 -40 -7q-43 0 -45 47q0 12 8 56q3 20 25 146h55zM1180 648q0 -23 -7 -52h-111q-3 -22 10 -33t38 -11q30 0 58 14l-9 -54q-30 -8 -57 -8q-95 0 -95 95 q0 55 27.5 90.5t69.5 35.5q35 0 55.5 -21t20.5 -56zM1319 722q-13 -23 -22 -62q-22 2 -31 -24t-25 -128h-56l3 14q22 130 29 199h51l-3 -33q14 21 25.5 29.5t28.5 4.5zM1506 763l-9 -57q-28 14 -50 14q-31 0 -51 -27.5t-20 -70.5q0 -30 13.5 -47t38.5 -17q21 0 48 13 l-10 -59q-28 -8 -50 -8q-45 0 -71.5 30.5t-26.5 82.5q0 70 35.5 114.5t91.5 44.5q26 0 61 -13zM1668 663q0 -18 -4 -42q-13 -79 -17 -113h-46l1 22q-20 -26 -59 -26q-23 0 -37 16t-14 42q0 39 25.5 60.5t72.5 21.5q15 0 23 -1q2 7 2 13q0 20 -36 20q-29 0 -59 -10q0 4 8 48 q38 11 67 11q73 0 73 -62zM1809 722q-14 -24 -21 -62q-23 2 -31.5 -23t-25.5 -129h-56l3 14q19 104 29 199h52q0 -11 -4 -33q15 21 26.5 29.5t27.5 4.5zM1950 770h56l-43 -262h-53l3 19q-23 -23 -52 -23q-31 0 -49.5 24t-18.5 64q0 53 27.5 92t64.5 39q31 0 53 -29z M2061 640q0 148 -72.5 273t-198 198t-273.5 73q-181 0 -328 -110q127 -116 171 -284h-50q-44 150 -158 253q-114 -103 -158 -253h-50q44 168 171 284q-147 110 -328 110q-148 0 -273.5 -73t-198 -198t-72.5 -273t72.5 -273t198 -198t273.5 -73q181 0 328 110 q-120 111 -165 264h50q46 -138 152 -233q106 95 152 233h50q-45 -153 -165 -264q147 -110 328 -110q148 0 273.5 73t198 198t72.5 273zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf1f2;" horiz-adv-x="2304" d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42 q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604 v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569 q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73 t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
      -<glyph unicode="&#xf1f3;" horiz-adv-x="2304" d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260 l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279 v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040 q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168 q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5 t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21 h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5 t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
      -<glyph unicode="&#xf1f4;" horiz-adv-x="2304" d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16 t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76 q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59 t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489 l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66 q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf1f5;" horiz-adv-x="2304" d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109 q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118 q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151 q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31 q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf1f6;" horiz-adv-x="2048" d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5 l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5 l418 363q10 8 23.5 7t21.5 -11z" />
      -<glyph unicode="&#xf1f7;" horiz-adv-x="2048" d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128 q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161 q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
      -<glyph unicode="&#xf1f8;" horiz-adv-x="1408" d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167 q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf1f9;" d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5 t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5 t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf1fa;" d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53 q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24 t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61 t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
      -<glyph unicode="&#xf1fb;" horiz-adv-x="1792" d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10 t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
      -<glyph unicode="&#xf1fc;" horiz-adv-x="1792" d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5 t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
      -<glyph unicode="&#xf1fd;" horiz-adv-x="1792" d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11t55.5 -11t52.5 -38q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5t47 37.5 q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-35 0 -55.5 11t-52.5 38q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38t-58 27 t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448h256v448 h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51 t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
      -<glyph unicode="&#xf1fe;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
      -<glyph unicode="&#xf200;" horiz-adv-x="1792" d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf201;" horiz-adv-x="2048" d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9 t9 -23z" />
      -<glyph unicode="&#xf202;" horiz-adv-x="1792" d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20 q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50 t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1 q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
      -<glyph unicode="&#xf203;" d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73 q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110 q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960 q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf204;" horiz-adv-x="2048" d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5 t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5 t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
      -<glyph unicode="&#xf205;" horiz-adv-x="2048" d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5 t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
      -<glyph unicode="&#xf206;" horiz-adv-x="2304" d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94 q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469 q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400 q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
      -<glyph unicode="&#xf207;" d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5 h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5 t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
      -<glyph unicode="&#xf208;" horiz-adv-x="2048" d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327 q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5 q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
      -<glyph unicode="&#xf209;" horiz-adv-x="1280" d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q18 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119 t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5 t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14 q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88 q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5 t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
      -<glyph unicode="&#xf20a;" horiz-adv-x="2048" d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206 q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307 t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14 t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
      -<glyph unicode="&#xf20b;" d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5 t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
      -<glyph unicode="&#xf20c;" d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55 q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410 q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
      -<glyph unicode="&#xf20d;" d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
      -<glyph unicode="&#xf20e;" horiz-adv-x="2048" d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335 q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5 q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360q2 0 4.5 -1t5.5 -2.5l5 -2.5l188 199v347l-187 194 q-13 -8 -29 -10zM986 1438h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13 zM552 226h402l64 66l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224 l213 -225zM1023 946l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196 l-48 -227l130 227h-82zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
      -<glyph unicode="&#xf210;" d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
      -<glyph unicode="&#xf211;" d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384 q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
      -<glyph unicode="&#xf212;" horiz-adv-x="2048" d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021 q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25 q209 0 374 -102q172 107 374 102z" />
      -<glyph unicode="&#xf213;" horiz-adv-x="2048" d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101 q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284 q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
      -<glyph unicode="&#xf214;" d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34 l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114 v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378 v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51 h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5 t-43 -34t-16.5 -53.5z" />
      -<glyph unicode="&#xf215;" horiz-adv-x="2048" d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832 q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
      -<glyph unicode="&#xf216;" horiz-adv-x="2048" d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126.5t-103.5 132.5t-108.5 126t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5 t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113 t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5 q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
      -<glyph unicode="&#xf217;" horiz-adv-x="1664" d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf218;" horiz-adv-x="1664" d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5 t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920 q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
      -<glyph unicode="&#xf219;" horiz-adv-x="2048" d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20 l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
      -<glyph unicode="&#xf21a;" horiz-adv-x="2048" d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83 q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314 v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83 q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
      -<glyph unicode="&#xf21b;" d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14 t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5 q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31 t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
      -<glyph unicode="&#xf21c;" horiz-adv-x="2304" d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5 t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105 l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226 t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
      -<glyph unicode="&#xf21d;" d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12 q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384 q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5 t158.5 -65.5t65.5 -158.5z" />
      -<glyph unicode="&#xf21e;" horiz-adv-x="1792" d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221 q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124 t127 -344z" />
      -<glyph unicode="&#xf221;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292 q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
      -<glyph unicode="&#xf222;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5 q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf223;" horiz-adv-x="1280" d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5 t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf224;" d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf225;" horiz-adv-x="1792" d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64 q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9 t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf226;" horiz-adv-x="1792" d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23 t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391 q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391 q0 -226 -154 -391q103 -57 218 -57z" />
      -<glyph unicode="&#xf227;" horiz-adv-x="1920" d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230 q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9 t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128 q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -29 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
      -<glyph unicode="&#xf228;" horiz-adv-x="2048" d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23 t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9 t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5 t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
      -<glyph unicode="&#xf229;" d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5 t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5 t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf22a;" horiz-adv-x="1280" d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22 t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5 t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf22b;" horiz-adv-x="2048" d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5 t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5 t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf22c;" horiz-adv-x="1280" d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5 t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
      -<glyph unicode="&#xf22d;" horiz-adv-x="1280" d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123 t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
      -<glyph unicode="&#xf22e;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf22f;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf230;" d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
      -<glyph unicode="&#xf231;" horiz-adv-x="1280" d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5 l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5 q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
      -<glyph unicode="&#xf232;" d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5 t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233 l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
      -<glyph unicode="&#xf233;" horiz-adv-x="1792" d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216 q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
      -<glyph unicode="&#xf234;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5 t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5 t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
      -<glyph unicode="&#xf235;" horiz-adv-x="2048" d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136 q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69 t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
      -<glyph unicode="&#xf236;" horiz-adv-x="2048" d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704 q-26 0 -45 -19t-19 -45v-384h1152z" />
      -<glyph unicode="&#xf237;" d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
      -<glyph unicode="&#xf238;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56 t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
      -<glyph unicode="&#xf239;" d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47 t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
      -<glyph unicode="&#xf23a;" horiz-adv-x="1792" d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116 q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
      -<glyph unicode="&#xf23b;" d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
      -<glyph unicode="&#xf23c;" horiz-adv-x="2296" d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5 q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5 q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42 q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37 q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5 q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139 q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 4 5 8q16 18 60 23h13q5 18 19 30t33 8 t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132 q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132 q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-106 2 -211 0v1q-1 -27 2.5 -86 t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103 q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34l3 9v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4l-10 -2.5t-12 -2 l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-2 0 -3 -0.5t-3 -0.5h-3q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130t-73 70 q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -2 -1 -5t-1 -4q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150 q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12 q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
      -<glyph unicode="&#xf23d;" horiz-adv-x="2304" d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5 t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5 t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
      -<glyph unicode="&#xf23e;" horiz-adv-x="1792" d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348 t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23 t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96 q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512 q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
      -<glyph unicode="&#xf240;" horiz-adv-x="2304" d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113 v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
      -<glyph unicode="&#xf241;" horiz-adv-x="2304" d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
      -<glyph unicode="&#xf242;" horiz-adv-x="2304" d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
      -<glyph unicode="&#xf243;" horiz-adv-x="2304" d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9 h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
      -<glyph unicode="&#xf244;" horiz-adv-x="2304" d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23 v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
      -<glyph unicode="&#xf245;" horiz-adv-x="1280" d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
      -<glyph unicode="&#xf246;" horiz-adv-x="1024" d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
      -<glyph unicode="&#xf247;" horiz-adv-x="2048" d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128 h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
      -<glyph unicode="&#xf248;" horiz-adv-x="2304" d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256 v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
      -<glyph unicode="&#xf249;" d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
      -<glyph unicode="&#xf24a;" d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68 z" />
      -<glyph unicode="&#xf24b;" horiz-adv-x="2304" d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5 t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88 t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90 t90 38h2048q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf24c;" horiz-adv-x="2304" d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294 t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf24d;" horiz-adv-x="1792" d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113 zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf24e;" horiz-adv-x="2304" d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64 q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91 t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5 t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
      -<glyph unicode="&#xf250;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5 t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
      -<glyph unicode="&#xf251;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
      -<glyph unicode="&#xf252;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
      -<glyph unicode="&#xf253;" d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9 t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196 h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
      -<glyph unicode="&#xf254;" d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87 t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9 h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
      -<glyph unicode="&#xf255;" d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25 q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27 t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21 q72 69 174 69z" />
      -<glyph unicode="&#xf256;" horiz-adv-x="1792" d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33 t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52 h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
      -<glyph unicode="&#xf257;" horiz-adv-x="1792" d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668 q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17 t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5 t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5 q0 -42 -23 -78t-61 -53l-310 -141h91z" />
      -<glyph unicode="&#xf258;" horiz-adv-x="2048" d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32 q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68 q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
      -<glyph unicode="&#xf259;" horiz-adv-x="2048" d="M816 1408q-48 0 -79.5 -34t-31.5 -82q0 -14 3 -28l150 -624h-26l-116 482q-9 38 -39.5 62t-69.5 24q-47 0 -79 -34t-32 -81q0 -11 4 -29q3 -13 39 -161t68 -282t32 -138v-227l-307 230q-34 26 -77 26q-52 0 -89.5 -36.5t-37.5 -88.5q0 -67 56 -110l507 -379 q34 -26 76 -26h694q33 0 59 20.5t34 52.5l100 401q8 30 10 88t9 86l116 478q3 12 3 26q0 46 -33 79t-80 33q-38 0 -69 -25.5t-40 -62.5l-99 -408h-26l132 547q3 14 3 28q0 47 -32 80t-80 33q-38 0 -68.5 -24t-39.5 -62l-145 -602h-127l-164 682q-9 38 -39.5 62t-68.5 24z M1461 -256h-694q-85 0 -153 51l-507 380q-50 38 -78.5 94t-28.5 118q0 105 75 179t180 74q25 0 49.5 -5.5t41.5 -11t41 -20.5t35 -23t38.5 -29.5t37.5 -28.5l-123 512q-7 35 -7 59q0 93 60 162t152 79q14 87 80.5 144.5t155.5 57.5q83 0 148 -51.5t85 -132.5l103 -428 l83 348q20 81 85 132.5t148 51.5q87 0 152.5 -54t82.5 -139q93 -10 155 -78t62 -161q0 -30 -7 -57l-116 -477q-5 -22 -5 -67q0 -51 -13 -108l-101 -401q-19 -75 -79.5 -122.5t-137.5 -47.5z" />
      -<glyph unicode="&#xf25a;" horiz-adv-x="1792" d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5 q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5 v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32 v-384h32z" />
      -<glyph unicode="&#xf25b;" d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181 v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46 q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5 q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308 q0 -53 37.5 -90.5t90.5 -37.5h668z" />
      -<glyph unicode="&#xf25c;" horiz-adv-x="1973" d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5 t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141 q13 0 22 -8.5t10 -20.5z" />
      -<glyph unicode="&#xf25d;" horiz-adv-x="1792" d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109 t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640 q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
      -<glyph unicode="&#xf25e;" horiz-adv-x="1792" d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78 q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13t-23.5 -14.5t-28.5 -13.5t-33.5 -9.5 t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376 q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
      -<glyph unicode="&#xf260;" horiz-adv-x="2048" d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
      -<glyph unicode="&#xf261;" horiz-adv-x="1792" d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191 t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
      -<glyph unicode="&#xf262;" horiz-adv-x="2304" d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57 t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197 t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5 t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5 t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5 q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
      -<glyph unicode="&#xf263;" horiz-adv-x="1280" d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5 t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94 q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
      -<glyph unicode="&#xf264;" d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32 q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5 zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
      -<glyph unicode="&#xf265;" horiz-adv-x="1720" d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33 l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
      -<glyph unicode="&#xf266;" horiz-adv-x="2304" d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540 q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81 l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
      -<glyph unicode="&#xf267;" horiz-adv-x="1792" d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640 q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5 t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5 t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5 t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191 t191 -286t71 -348z" />
      -<glyph unicode="&#xf268;" horiz-adv-x="1792" d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962 q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
      -<glyph unicode="&#xf269;" horiz-adv-x="1792" d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5 q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5 q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
      -<glyph unicode="&#xf26a;" horiz-adv-x="1792" d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339 q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z " />
      -<glyph unicode="&#xf26b;" horiz-adv-x="1792" d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606 q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
      -<glyph unicode="&#xf26c;" horiz-adv-x="2048" d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23 v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
      -<glyph unicode="&#xf26d;" horiz-adv-x="1792" d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34 h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100 q-68 175 -180 287z" />
      -<glyph unicode="&#xf26e;" d="M1401 -11l-6 -6q-113 -114 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6 q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13 q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 32 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249 q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 32.5 -6t30.5 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183 q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46 t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
      -<glyph unicode="&#xf270;" horiz-adv-x="1792" d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30 q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57 t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133 q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
      -<glyph unicode="&#xf271;" horiz-adv-x="1792" d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9 h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224 v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
      -<glyph unicode="&#xf272;" horiz-adv-x="1792" d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23 t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h128q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf273;" horiz-adv-x="1792" d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280 q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf274;" horiz-adv-x="1792" d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23 t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47 t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
      -<glyph unicode="&#xf275;" horiz-adv-x="1792" d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
      -<glyph unicode="&#xf276;" horiz-adv-x="1024" d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q61 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249 q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
      -<glyph unicode="&#xf277;" horiz-adv-x="1792" d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768 q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
      -<glyph unicode="&#xf278;" horiz-adv-x="2048" d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173 v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
      -<glyph unicode="&#xf279;" horiz-adv-x="1792" d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472 q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
      -<glyph unicode="&#xf27a;" horiz-adv-x="1792" d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5 t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37 t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
      -<glyph unicode="&#xf27b;" horiz-adv-x="1792" d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5 t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5 t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51 t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
      -<glyph unicode="&#xf27c;" horiz-adv-x="1024" d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
      -<glyph unicode="&#xf27d;" horiz-adv-x="1792" d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246 q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
      -<glyph unicode="&#xf27e;" d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
      -<glyph unicode="&#xf280;" d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72 h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275 l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
      -<glyph unicode="&#xf281;" horiz-adv-x="1792" d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5 l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44 t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106 q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
      -<glyph unicode="&#xf282;" horiz-adv-x="1792" d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53 q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
      -<glyph unicode="&#xf283;" horiz-adv-x="2304" d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
      -<glyph unicode="&#xf284;" horiz-adv-x="1792" d="M1549 857q55 0 85.5 -28.5t30.5 -83.5t-34 -82t-91 -27h-136v-177h-25v398h170zM1710 267l-4 -11l-5 -10q-113 -230 -330.5 -366t-474.5 -136q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q244 0 454.5 -124t329.5 -338l2 -4l8 -16 q-30 -15 -136.5 -68.5t-163.5 -84.5q-6 -3 -479 -268q384 -183 799 -366zM896 -234q250 0 462.5 132.5t322.5 357.5l-287 129q-72 -140 -206 -222t-292 -82q-151 0 -280 75t-204 204t-75 280t75 280t204 204t280 75t280 -73.5t204 -204.5l280 143q-116 208 -321 329 t-443 121q-119 0 -232.5 -31.5t-209 -87.5t-176.5 -137t-137 -176.5t-87.5 -209t-31.5 -232.5t31.5 -232.5t87.5 -209t137 -176.5t176.5 -137t209 -87.5t232.5 -31.5z" />
      -<glyph unicode="&#xf285;" horiz-adv-x="1792" d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
      -<glyph unicode="&#xf286;" horiz-adv-x="1792" d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96 q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h16v393q-32 19 -32 55q0 26 19 45t45 19t45 -19t19 -45q0 -36 -32 -55v-9h272q16 0 16 -16v-224q0 -16 -16 -16h-272v-128h16q16 0 16 -16v-112h128 v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96q16 0 16 -16z" />
      -<glyph unicode="&#xf287;" horiz-adv-x="2304" d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96 q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5 t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
      -<glyph unicode="&#xf288;" horiz-adv-x="1792" d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348 t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
      -<glyph unicode="&#xf289;" horiz-adv-x="2304" d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22 q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5 q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13 q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
      -<glyph unicode="&#xf28a;" d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83 t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20 q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5 t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
      -<glyph unicode="&#xf28b;" d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103 t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
      -<glyph unicode="&#xf28c;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
      -<glyph unicode="&#xf28d;" d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5 t103 -385.5z" />
      -<glyph unicode="&#xf28e;" d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273 t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
      -<glyph unicode="&#xf290;" horiz-adv-x="1792" d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5 t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
      -<glyph unicode="&#xf291;" horiz-adv-x="2048" d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5 t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416 q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441 h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
      -<glyph unicode="&#xf292;" horiz-adv-x="1792" d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12 q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311 q15 0 25 -12q9 -12 6 -28z" />
      -<glyph unicode="&#xf293;" d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5 t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
      -<glyph unicode="&#xf294;" horiz-adv-x="1024" d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
      -<glyph unicode="&#xf295;" d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5 t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5 t271.5 -112.5t112.5 -271.5z" />
      -<glyph unicode="&#xf296;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf297;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf298;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf299;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf29a;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf29b;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf29c;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf29d;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf29e;" horiz-adv-x="1792" />
      -<glyph unicode="&#xf500;" horiz-adv-x="1792" />
      -</font>
      -</defs></svg> 
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.ttf b/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.ttf
      deleted file mode 100644
      index 26dea7951a73079223b50653c455c5adf46a4648..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 142072
      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%0D0!#Bo^>xe$Z4SmykflG_VnkLvLv4@e#4_y4Q
      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
      Ze}U~^VEY%?{)OB?OdNmo%speV{{d81YuNw*
      
      diff --git a/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.woff b/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.woff
      deleted file mode 100644
      index dc35ce3c2cf688c89b0bd0d4a82bc4be82b14c40..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 83588
      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
      L4D;{PWMBXQ&i-xA
      
      diff --git a/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.woff2 b/bower_components/select2/docs/vendor/fonts/fontawesome-webfont.woff2
      deleted file mode 100644
      index 500e5172534171f678e01f7569d66f9257036a09..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 66624
      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
      Ugj70-0RR91;1A}g`?1ym0Nn2un*aa+
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ak.png b/bower_components/select2/docs/vendor/images/flags/ak.png
      deleted file mode 100755
      index d79dc4fe4b26b99cc40c8f711efad9d08b92e903..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 2212
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/al.png b/bower_components/select2/docs/vendor/images/flags/al.png
      deleted file mode 100755
      index a729794e94cd38a67db6c3a12167e8042207cf1a..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 2623
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ar.png b/bower_components/select2/docs/vendor/images/flags/ar.png
      deleted file mode 100755
      index 6357a8f6f31daf868cbe03a800a3333fd0defced..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10871
      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
      D#TjZw
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/az.png b/bower_components/select2/docs/vendor/images/flags/az.png
      deleted file mode 100755
      index b6d8aaea5131e8491524312acc3a1de9515db790..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 5448
      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
      a1p2OdZ`}4d(cFEF0&2?IN|g$)LjDh8pqnB9
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ca.png b/bower_components/select2/docs/vendor/images/flags/ca.png
      deleted file mode 100755
      index 9d6d955f3945f11075238e6dba74dd629f44e76c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7159
      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
      NfW+m+YDEkK{|h_)`&j@0
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/co.png b/bower_components/select2/docs/vendor/images/flags/co.png
      deleted file mode 100755
      index 888e8308eac95375a4169db37fa91e92aa311753..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 2593
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ct.png b/bower_components/select2/docs/vendor/images/flags/ct.png
      deleted file mode 100755
      index a953918ae867357ffa1cd808d2ca80081d6c0de0..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 9209
      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
      JRf2i}{{vTNDW?Dc
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/de.png b/bower_components/select2/docs/vendor/images/flags/de.png
      deleted file mode 100755
      index 1bfb3badb3d41498d2e468b267d94c0ff018c55c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7903
      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
      JPDHLkV1jj$CUpP+
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/fl.png b/bower_components/select2/docs/vendor/images/flags/fl.png
      deleted file mode 100755
      index 199a2f16c6189fb5fd04d203d00a6ea3da900a12..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 9018
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ga.png b/bower_components/select2/docs/vendor/images/flags/ga.png
      deleted file mode 100755
      index 03f52bb855e7837f5f8ff2195f4f03bbe7070a16..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4765
      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
      V5G<yUrN@60prWXzP%dv4@*m?zAp`&b
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/hi.png b/bower_components/select2/docs/vendor/images/flags/hi.png
      deleted file mode 100755
      index 36de7a583bea4500322c2eda8442b795aeb426f5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 3170
      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%0AaQ%A^-pY
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ia.png b/bower_components/select2/docs/vendor/images/flags/ia.png
      deleted file mode 100755
      index c2c4cf0f86d7c7ee392241e2635028d7085f29d3..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7102
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/id.png b/bower_components/select2/docs/vendor/images/flags/id.png
      deleted file mode 100755
      index bfbf897f7943f7eefc2ca46e79b620809d4d9307..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7319
      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
      bH)}o;Zejv@JhT6O8Uav6HH9j9voHSx25bvN
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/il.png b/bower_components/select2/docs/vendor/images/flags/il.png
      deleted file mode 100755
      index 5c13e67a8290e6db885177581b3b5faf6d220962..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10352
      zcmV-$D38~PP)<h;3K|Lk000e1NJLTq005Q%003kN0ssI2>p5Ph00009a7bBm000XU
      z000XU0RWnu7ytku07*naRCt{2op+cV#hL%BI!{mc<h(PRqgJ~s?J6LFKx6?HM#6~X
      z06vVdefWIm^PPS69oQJooP9W)BOK<=fF;0S^fN}uAR)2JIc}WIGdr`Br*o>`AIl@l
      z*ynf;JA02le@)L+*Sz(9yQ;e13Jt&Vm9Mn5wSkMwPfnaTL9AZAdey2`b8X2*{!E-s
      zCpOnMT;wn1qJ;CFixSRzE=oA>xhUbh=l_(1nx>sQcP<`}&$S`%Da2eG@V|pB%l-ZR
      ziIEXUDow;<1VL0+SI@Ok?-BD}!c;1iOeRN9opPNx%^W>eV`E2Xs{F`9b8Xjq$9$DA
      zm&+v*iDIExID6K1@bH4E<l$Tv0mMTrXqjUZ6YcHob8X{$#5|L5YHBKz$>ejneE)za
      zkt9x>YS)cJxoidi2E%MPp4C(rMU|$fHBF-^YOd{lFPJwH>bidX*s=1+2;RHj*4N)a
      zQbk?Q>zYb41csRibvRv$WoBz@&Ru!=(v>Uo`Ft=KoNKG!3+9c4@pv4>N4(GcgoRk%
      zG+#+ixGAdB=^7OUgb<Bk3WjCYTsz@*wl*~E-@o7CaNKai4RdYvd%?Vs5Fw=R+fQ27
      zgr?*)EyUO)(=ZV7(R35<7>$H7Yi}}G+qDZ9zVXHzot>RtuXnCZevg<p5)uRfBN6Y=
      z$dP<5YGb1|)<)nd4AU00O|`XDb#}yJF`v(O?AWo6jt;-y9}b7-+T{0$c_U$MZSB;O
      z?unzvR-@2(&|m23o(lNcaEN2s^kCnqLwk<x)$F{pu6bc+=Q5Hc=i1))j(H;?K@ja-
      zT_^7S@ToIr!<Svkaa>C<=ytmw`P>7g$<s7RWQr2YkOv_ADdo6g?FZlgfjbG}ozfYG
      z(Yt5Yz{$gsPyi6)oStB$I$GOQTUY0Dx#qT9e>s&dp(u(I6BC-I%^os5Kk4&w<uZn0
      zZnyi~+0*5zvx;gYvx2B-bs@K)XslV-`NDTk9enFE|NM2A+kJ5V-dCRfhLD}q4GV)1
      z0stU{0O6QbQV?PHFIcp6$;vC2Ub50=v(0H)|4b@Z!twF(TrMYzB9=<S@o_U>uw(_0
      zWHZl|Wu@-c^<!gW9Op1hB&mAD%NIq(#*ngR<jP9GZC6wMkN?vrnis7+x?>Xs4NcR$
      zP96Y&K>&d1WC;R?LsJC@DUKh1WANa%pWyaImtK40x;yIY8|J#`e;So2p(IIX&z_a0
      zrqIsa{JA~{hLI4<Xet1}hU2=0!X$Yn7VB7XiO1vN0@Wp{Us82NGZ8`nAty&$2*s0m
      zJXH`<BNUDR#A%9_RGp<s3jqsZ!%5N0nWAbq?7D}eRGqMpId<svN8Wg)dcm@_8$Qyr
      zbop$Jt$Zp@!gM-4G&rbi*;aMrcwSWoCCNpS!=m7)>5QuK1j!LZz~OLKMLZr40HA&8
      z75PM5(F~rYFbM57YI3GjlGK`@b5?<%n>jO9s0;D31~7;quv{!2baLsuz_XNL;i<gb
      zT1Ah|C@zjA306&>{_n4S=JlG^TkgKEqvz7f7qYSjn^LLN=+Kb<)Q_8voy@ChLQxht
      z92P)ryu(A%OWdADj@J=VFvu{>>?xf~F167lXQNczFfBANk%bV({0>bw>qB<Kw6bNb
      zA!OqiEK?8=fT{t9lhRnKR1j32fnFY~3D{Kw8%l_YtfXrajcZ;9C8vj<dHi$V`IiTh
      zV*_*RlRroWNhk=y)a0b{<DYmE$=#WBT2(w0b*@xu;T!=Q8?f6Ml5$ei61N98OjT89
      z&uUxHE?Z<tRGfAup2%Yu<ZL8G67?bb=yZ`|FgHipXsY*2ieqiaGBKbBT|`}wH!WyE
      zax^W^6w0I1#f7y#7snDLTa;m;BmhhHa6~G8_KDBmyY<B<P1BrP=lmWjs39F08Buoa
      z_DxKX815jc8XKzt0GIZRcQ4kQ4w9x#(^Lh4$8cxBf8M7!j#oD>$c>)tAI~&Jy_u3k
      z;efZ{7>1K1Ns<&m*70~I;C8SKNfN*?aX~fmqDT@Lu#A9{3^?iI!#P?racEK`=42_&
      zAWaLU3zD4%Ue0#*&F9KGb=%$d%&B|+M=C|aL?Qts$??W6&9a^zi?6SW$#&NG=tuZy
      zmCxt9aQt?9dRo`@SS)t_o0i2Ze}1Ib#W7_`l~tXmiCjtY*tvqB`<*mII)>98hYbLr
      zXcj;Qja!W&wr^6za8gpu(UfRsaF)gpAY|3FOp&Fble3j^)<PhWQ(4Mr<M}yo${$Ci
      zG^C|csl0W2UY1I_eoZjM@|^LBkNH}fySuxcPRGgPhw}N{Y|2n5bfJC#fa`Bs=M6<=
      zRTmXq(F_b{NP<vw)8n8i0y8YgPy~dCz>tl?2!a9_J&;ft!o-0XbRrLjrwg*IAyrj)
      z+6=huCSayA5)Pz@3k6&Z#O?cD`%hVx=fW|6n2M3GSQLBro-E`?M6rc;q}E)^hr=x`
      zEkgsR&pvlW!^o`@FE07fH^0=|+uPgQix9f-T-I*C>4Oi_6j7E`mL~IMxgo@sWK@>*
      ziHtf^l<f?KL8$1cC~BG}<3NeH@pK94h#k)uBPp>uz&lxjAQ@37NZc^AVnc|<2>W1C
      zWeKHF%#M!?oj!GHuAKAxsT2uEj~#0ys21MY<MvF3g9VS9W!b}r4{zW4`Z=LPH>}Po
      z@y4sVOw;V{?tbHqH*{UU@bqPutfVNCBybFavSySN0FmZ(*!bD|RtO9e;m~y0FsGe0
      z0izoh$6yR@`kgkv+pQy#!Bt5r_<4)B5hB}IebpyPZ#BeFx}f+M-SXFu{j|HMXHGox
      z2dR|4Fw)+huB+!nF}LqPXx+^rpRZIZ5d^Vp<yDIpfA;XkyO-N`#(Z$&w*BdJ`sSN&
      z-o1NwOG`^tRn_cs8%@(R!&WiGiJ?@~@0iSpjUi?{qlMk9AS+HgPU1i}NkKI%NoWYt
      z=O$&6w3QS9kyz^|0VE-`!b|Vy>ghgy<j{uqUv}k{SApB^EEEcfL?RZ8@fF+`R*Hnn
      zmM@=;g{t*+5&%J-Z*Fcz2tf$bsgz^!=a1|i?D0OgZr#64PEP&e7rz)E8{6C4`_~UX
      z=ytnjbHH&-SIk(z5%oKg*)j$(LDos1k<9Cy9ZIS};YQd=5QH5;FrC+$ql|~cSeidL
      zl)Lh_PmfQGee5ImM5?N;zy8+)#V(ht^5fu@A|XXl4Gr%ECr#7LX0zpTdG^{rd+g1(
      zzyD}c*-x)Ox$r)=sp(3D(D9wmrpL3JpMJQkl7RNa8d_9Y;u$h8C;$Kep^e6I3}L|H
      zSq1{YP&fcYs$`N-il?Nyum?cw$Z!GkHs11)`)|MVt~o6GUr41$I7=pznVOo)X0xrW
      zt(i<F9*<)f25phnWpof5msJS#l1Z7{fBs`NJ18k?U6uP+I}Z*GPq;W{I$O?@xP_3S
      z86{CIh&C@z;RH!wDvkr)005bG8W<Ma8YM&xlqIb;<eIUJTW{Mi*X90;s1ymu#>S5C
      z+mHGOy!k?oBBpqrrfCQvLdb5nFaGq-lW%V{O2;(1P7{jfj`!9^{i3AqJ$$a1FIor@
      zI7X4UVOn7?H<2zu07MlQWt55+Lmp01HI@PtMHfUf<TU#x1PjuBCp$S)@;Z(0|HrpK
      z{kNZ;YX|)KREmTr_v~Sxd6q{YVzZIgU+s3g8yg!hOmNwaAJ64-PygVXQZ~M@IeO$&
      z8~`Mh%L8L+zl%-f#juAPoXp9pL6f+XqXB?^Ckp@|Foa`BH*uuO$TVb)D#@@m%!-Qc
      z<d}3`%x&8=wD$e)`n!2VMLbj(hM^3{OOhlQIsgD1I+~c8`t7i!$K$zb&3c|CNdhNu
      z464%T_;fVjz%a<tL_tsp0<tt&9dzOtHaSyLH3Ned08r8}2V){+DF!i`HYgIuAS{Zi
      zrkk2>+DPj^zw@;@DE9vn6(J#x<G|_ca=8@C>?@ainXK{jfBnBroBI0t48yoEWlL)-
      z8)zFIn_jV~F+QF$bzP9OqNo-{l_GJ6jb<4#T@Vofs%~N!v=FB021}X<ka<DpC?n>#
      zQv^PhDOdUU{_#vK;2ckt;-?Objg8G!@&7_9LP7{(q<e80Vibm#b-k}#^iQYipMP=e
      z+2?<?Wy|s7$Inl^007*y{zCwxH@&b$kz~WPNCI<njH;WdoR}AslB7zCF3DPzk0S}3
      zzz|IlvOy@CR1hsur&8H$U5FE*BUe_s8bfcLoM^A}7c7pZ>33N*Ha7UKFi>TJ-+S-9
      zH8nMJZ3a+Ob*5ZyNoObw@6F7Jrdd#w_Ck?7c%&o<1Ld-$s!peqBuSgiR+2&Qn_Das
      zA%q|V1dc%nDH7KVvpV1`3W}r|IEHz7(nOHNk&lB6O-^OSx&VVPHeVJW_=kVRomGjU
      z6CQu4Y!E!I+;rPL@0vR^apr-1Ip_=2&XG(0DB|&WMbtt7KvPo_vFg(PNYF>qw??Zy
      zB&8$kbg?*C$b0u52tWCB?v+=2ckVoQ?i@mB^)+i2F2B-3$me4HPCJ2P6oI)o1|Tqz
      zF3Fl9${I_PiVht%fMZZl%<V^#A+LLQTDFr~#K(JF+{YgH)a4)elxATMed9^STU#s^
      zFSO_M$(;;2d2G+!it-!L?Fy`yl~M~Kgwbepg6F17MNc{tpqU`e6m)G&5>u)|B0x_}
      zI**-9<g%lh8j3`^m#;c;U>9zw6X~L6SPVr>Wy%<YIF9LtMUzCjAmTWN<D|z9%95m;
      zWVMg5+1Tm4hT~}2nh&`>o{r8%AGq@)UaxoU`VHr!JhSA+J~K6b!tD?S$6}4mi)X()
      zd*<+o!y6l#R?dZoem50V3jqK)j$g5Qb@0yH<9FXa<@eDz-r;nu_6JM4VJC<YQDjZC
      z{m60K)BnBmm%n6L_GAC}Z?Z)a1XdSv39=RoI4BZl8Iqw0(?Ve{XQxS)P_rdfRLqc<
      zo6MTBRI2jXH3QdkBNzU4GBHsumo3YhJv?=C9|jEvr%X*FT-!9;6ORqQHGFhUP2g~)
      zjo?>GEt~~H7!HT+e!tM%I2{U>ayg$QFLJrYWl^)Nlf^=t!|BouWok-jZfb8|7_MzQ
      zbLcGsLxzQ%EUjpUAZr1aJ?!O&6M2W7Vre*;HA=D-a@$-SSyr*KP>co~sZ^@xinZte
      zH-7q&!~1>+teii*3;>u<KA#xd%uw27!s2W*fT+iC-_WT?D0psoB*%Gga=U$V=%ovZ
      z$K#bH;VeAQN25{N=QZ2g#v&m>6lw*z!Op3c)mJVnmRWCFXI+lA#fu|V(O7fWfwy-8
      zQv(1H1V)jBX@T){v8~!0^N|?Dl6fT-aH@tilPg5Lb`#KoP)>{Bx|{DfKRZn*jfJ?U
      zq+;)`w}tw~rEk9ecXoPO)li{`+zu<B?MqG`8XbI{V?i`b)V6(zBr9d*Vr4a??;;wF
      zc6WELyzvJ9o)7omwr<KsM_JZOQDsBN0MPUK*<_2lmwe$H{{=nuif&HlL>$9pRbSm1
      za<S;pKz<~xg}r<_FY1Qn<Xxl5e9#G<ZrANMuXuacw%Hsk%Q}2$FNR@-g6zb<_2TpY
      zgri~J4onkB3UIq1jSWtY{DLGbf`CQAH=Q^$cV77&R7!vi05C8xP%4#11_upQ<=pP-
      z+FHBa-q6s{)6+BR_4WePyk&<&H#E%}lO?wL*K;po)zv?EX45lIes{-9Pq}#pLNJ<=
      zMMbZRcrXZ4dC^7_x?#HP1m<?9ifZSQE<4N2jP0A5>GAsm)6>b0HZ(M1*cf10mWO^W
      zmp8|zuxJ=&b5^O0VHhYBtp&}vq9Uhb6vr_DKsucc1OjvCtzT0q62ATR+rqXTwxh=v
      zSr!JM4p5Tk(o2^NFKCNY$6~Qq+oDBNqU3n_RR+gr8tNKbTQ58v$8pX^R|lNqsiMP9
      zGc-w41cWe=Ejw76rpSC*n$GD}K9<6%Xq6uTP#bpcfAiI~x8Dze+IM<;*biM!aAv>~
      zMb+oQW-=B{;kp43022wsb1;#z!U0UvF`=C8JMqK#;2Tx-_jGmNG)E5mH5DPDBuTlW
      z$Njzg;-VOIxqqIVydzd)&*s9r_M~?0&USUg>uQmMmwCQ{VX`h4x&D^%v3N&E$Ay^~
      zx<=qweZ)OEQyT71ENO`V03u!<0FcO*qXE~Ym-Q4REj^QW@hkvfGH2Pb^ytX2Ws1R2
      zq*Uya72x+kQ9^|hQdE%2Al3%cGsv>QOcpI&gqtRqO6pm4S9ACoA1m?P{d3~3cTo|2
      zAxV;YvEZZVtfpcR*4gcEXJ+<hGf720olawW_cy%s^REAXp0~`AYp*KawPASQH;FU<
      zC<wxZnK;~j-7o<F6oJ=A+y&vCxx%_(F${C{H7jG)k&f2dt5+>12pj-FS^{D7o;t9N
      z<9SmX;W>~iAkzXi8jMdOw+kkwEerz_2@AsjYXhSbmaHJB1F-1(iKH-7Y#?n-@4c^n
      zn@W+;<TxCIVTNIFyp?xEY&IK?7c{-w<=&smDwbJ>Fx1{&yXJapV&j>3_nE{chj)Dc
      z!c2NrtdewSTF7CiJr1@ktGaG#x=9ikLdXEPWnB<h!ARWZP9&2&A)Y#Qx+GN#BCy+`
      zX#z<`2p~m8nH(yX5W~RuxTUHf<cHH~B#Hna69C|ImAu}Hc(kYp2>}39Bs}Hy;y2we
      zeAN}%STxMot`CNt6zQfY3__kDCtI35et%|Y>%=fPI@a>qiAxKoUp=yK>-ik2s-oB4
      zxDuGt3`O7=3^#OG01!9^0PxtUU+(TxR4rE&b0yWloqglQVzF2k3yC^Wo|%Y7Oo{}C
      zf%=Cmj~gNcQZtAoz_~$-B!H&P_Js(;0FFZp1K|LHyZ)YKxw&)Luc?&h!elz_zG`*N
      zvZY*8Betk3+0-B!2Aj#U5H@oBXmu5P+pTUVo7(-*f4+UYg>VaDBgL+$@U7{h#`|hd
      z?0uPYMQ29$BG=;SRL&V`{LGgg?|pNNp~|wRLkME^?JDWbr6wpxWO^nSa$>aIGm{tP
      za*nr=eB>6SzAnp_Wg$fc@i9~ufy)7N1ymEos;e+r0mU-%c`ytI7=-DJWw%qY`rGE(
      zZ6F?xSH$fM0HC3<(KO9su~<`6)6~?ItEm~QsZOn2-ZwCab6j;-XLon^!52QdwQn8E
      z+1IXZ-n8lT4L2|S!Lwj(;muvIe7(V6>U-<kJ=Fy~_Q8++&F0x9+AWJ$?cMfb$jv2l
      zg0ock<lT?{@QHtRmQ!x04^VV2R{)06+E_C>UF!YSw>nx0WN9`A_6=DzQMl)T+1W~j
      z0$8DhYGPR5phZyt0K_sFL4bv=_}N7BT>I=DDy0@WozC&`@kNUkjf{-={eGLx77m9S
      zTUuI|F6mghG!~1+2To>>zp!!N6^ddE3}iLUJaHmrnAq85Ls?rKbmFXaXrNF}*|^-H
      ze<_g*gW>A#<(IOB7x$gYGbGj6dC7{)udZwENDLnp6-(6&JE;ePp=4H2C4nHEi#x_i
      zLe3UYSwQIwn#m!W1~>)?98M)sI%~OI5XYc{he1D-6%?$x$`_vdJ<Tg9Ix{<Ew7<Xq
      zU0XJhBsm)fn>qf2#!DZls&W7Ty1T<R8`0SrY-{r~3~|l-R&3nYdNxrPv4f5){~Fdk
      zFq2mR02qcLU3}=<FFg9=E%$%sp8x=%P`F{qEtZ-`2szw=RJN=tQqW^_I%`fR9+4D>
      z#|3>Jn93lp3#KzjRe{$H`-e?k1DqW~2y6@>2{<*4Mke1qL_AkiiiDX=hUfWWv1qs3
      zfBV-`smP^v@y||v_ZwF)UK}o!Q~<!pNIsb?Ynr)h*C;`SdnX>;KYZEf&Mz*#`re5X
      zFTeHFjeB=*Rm%yRo%8$sIF8R|wXk!st9t3s@JQdla3P;zam@r|b|$SzI)s!UB7%TD
      zow%l>!4b=}fNp@(eHP2YQVDrn5XWIAXN4optFHX3_tZiEGnLX8PEAb#0Jfjp{>7ht
      z@e@~nV%>G?E?gmf=FpafDW^1)@)79qPj`Or)zQ<Z)3R(h95etx6m_T5sj6neSUw&f
      ze)&faB4_vMyr=u<U)A`mUwr$9hA5}Nz=E5;4IyM%_PY0Nxcr)%lgUIepUq{{1jBVT
      zI7|7nhxTTdbYUgI(sXpo8nU|+4|w6817>v<W+6}&fea0G9qBqS3W{l3bLOnyq$2vl
      z6DLl{vRqwVJ(e2VH?r?Y=16`#zoKi!XTSd0h&K}S1t<1D;o6B@U;R?~N1Mx!{^aV%
      zZg*FEj~q$da!c#zXrZRY6%KQSg3{9yd1aTkg*&E*!#01HSNYW$?#tfhwc`a>N#};g
      z^Qly-zrX*$fddGk&d#oIq^iE5`P`|W+x5Srt*yLWiI1DA3a(j2wm0JwXJBRwhGSs$
      zWrQfAkRMYul$b^y7gXU*T|E^sfw)rcNV~eaW<Ru7x8oG9$=c?z&D<vLK<dEw3*$fi
      z!cRfwAhqgqNLIy7Z_wS%7=f=*CSzZ_=Br=bT`p^9&ZHp(2!U<eh7f`;pIm=c%OQ~c
      z>QP8Coj5|Ey6K%oNwaf{0RYF3A0HYTs;jH>dR(UT25u{umg#l@Nya1vHPvA!x4}!o
      z6aZjq(zIIiMeVq(Al(2#KeR01^j6K4uYQ|~sD<YVcmtdFZI(3|Sm5Z;QAJTqmr13m
      z1@M^v_D8e#e;o<3@4voK{Mz%S@4wP;$7QQGbRRvIEEJRt8`}H(v+sLfv#Ofi-QjbS
      z!K3lEmCf1$^2GyVu3S+{r_&CH<NSV5E|-gC*>br&F)_)qHmP((*L77zst#fiOfG{a
      zNE0{&061*eXv(Z=1nCU&xUudI(&cvBy&v-U7tE=v-l0-z;dwUwauZg-3}gTZEZl+?
      zgcy8v=W}=6w@7&Ab$xKs@tF<AL|S@nFSB|P5e={pKlz<U?tScg$9j9mEembiHl%6R
      z_;}H>5CEPZ?p}9CPfB;%J6c*GgynMi{5~18P!x6i`0@S{tC3$|@w{dt&IYRrAdyE4
      zLrhtR5CEPuMsfz5gE$Uh3A{KEpd8IDVZNaiRmgrOl_jBQiaA@3!YL^wK@4IPW+;Y^
      z64qpW`FlSnn`7KPYf|s~M`)wnkKJGR@-xzFdwuIKfAkA0p8V;#7hX8SFhqO1=hUgx
      zU3Yan|NP12b*F{}_mx*Kfe@BTC5B<f$H%Lxs-~u<g27-am5Rk;%a$$kPbAOKmxM@X
      zAmShjxgu^0E^&KHX_E~wnk;I_)6DZ~xrQ?fv=b{8PFnuui$P_`2S6oAsO!eJe{mu&
      zqp00V6k<5ZsAa+Cvl)t^i@GLgUd9xDdJ339_ha{$zw@#=Ipg}5d-Q<`=@-4WHOq*`
      z=**R${^&O!to_GJfApgxnr0dX+O}=T!H5fDhqKO`A%vMs=4U_qSu7Siefo5Db#=L1
      zcDvp2c>KQm?(=%Rb+K@6V1K&#LvFd4c2qHzf{Ml6YM|bZNjBb+3m#HeG24luWOK|s
      zsXD8?pxr;$Ub}#~e=a0R;@V4lGVUdVRvTM)t%F)?57+?&1VdmrMsbvbLYBa=cU%o=
      zviy^+RA+<zj;r%ud<x@P*TWwzeDO&$orefr8v&1eWpyG^MhImy;)b4AP;5Oxk^lgb
      zB+KP8gwSrcr&6g>sg%uTola*albN-lv(A?vJ_0$r2S}1dmUEJmBNEf1J3Ce4JcY86
      zOBS8Ap>)|aY32iMpkitu0F_V+0RUY=a7`W9-iLAJ!t$PbUft9S*%3|DAcXmWJW+!%
      zzt{P>J7@0t3WU)8_$P|r*kn%5xF5S;-FsTueS-bKYCP;s-SGFdAAkRkess&1zVv3d
      z`z6s)Uma~O4h)<<d)DLe+;`u7cDub)DtSDfTrTHwx$^lu$8i%A69hr9Eb9^bCx)w7
      zuan|1ThJq7pqf$7;vrKtX+g5tslF0rA>U0=Q0ts)fBhyEAt3<Z)>g0(pB7cgH1I_q
      zy6@k2{HsjM$U?|MVm9ae?EAz`Z|Y}9`H#OJn5OWPt@P4X+x5$)ulp?Kb-KRvk?j5d
      zh76Ord=b8*_gf!5y>a`rtMUF5Cr)r27mY^K>2$GJY-wrn`Fsc=pU-ESrr+<EW!dZX
      z8it{&Y6B}YMAE?sS5nHl30yYKSxw8TP*N-^ggaOu$oaBKT-97DbJxyODH383v^6)3
      zW<~>!!1BclLO##KFF&ksiZCr`I*u~qrEi@iYD10(Z%yC+5X3O|<DV!z`V%W#^!&$X
      z<SqNvgXg#pUk_PI-}TkkhBV)z&&T8O&d$!+o5tGO+S$j!a=HBS%P%iju;BRd<JVt*
      z{mz{`7cE+J;J|^kYu7e4))#Yw@4J4<>?szqL{;P&mu~7LP8y~`;FaR5cQN;U;f2)t
      zY6qqVEMzU~UiQ$39=b7fBX8#gk`Z6rf;7YZ)sG3!ZP(9?@Sj>|CNk2`_b^v=Gncd%
      zzxEs+@i{+ttA6bBdl$K0ovgwzj39^$Z~7sG5JHE;AxV;=DCKflk|bG{1woKydA3ue
      zX?p9{t&_P))li30L&K@zyqF(K4UK2VM>C^y=9E7~#a&sg;Z^{EWm)aD?MB%+HF|0&
      zI{|CT?E7!UYl5ZwzfLwr`M<g;b>lxkmT`aeV}*x*Y!yY{m#-}y-thd0?foBra(eQP
      z%?CDL(Q?IXh8XtFWr`3gm&*$mE^KOQVi?Bn_qVsVH#9Vy->HFN7(oyK1PCFA%~9*C
      z9m|f@`|AZ&2)inGv-XOUkRcfWfM#h9o8#cn!GY3%NYGl1>Avlr?5DnoRL%YP1Ev3X
      z#TZYy9=caQJF2{Oz<Fo3ukdKu@z0yZ=eB&~6Ot^Q;m)*M?H<dMOeW8-lr|+=F8}}t
      z7D+@wRIuCaZnyjL%P$821cSj$CR0~eM^RKX8qMW$`FtKixPJY5pWA04%g6bqOVbU3
      z2F=jCTt&Yxq2eT*C6P~fdG7~r`e1ui`ww3KK^z@u-?2~aJ!Svkb&zF*AODhC)WqGs
      zT=?1p`h&+lf0Cp!Yt}ReqJij{%o$TP6+_uNxb>5Fd=f&a>MBDqmSs&PrsBhKK@cE>
      zyn|nP`N}{rV54m%xx^BzuIdhlV@95lR5>Xm6h+|~-m<K*>{v^vWv>14`>3oK>3KMY
      z8%_<|Xj@lv*Sag#O&)*A`9eR!{N5jYw(x}~NcV{AL)kM&AMf+GSc@OY<AFC)JNJz3
      z8IO+>EI~VIVM?%Q>#~N+sv=cGGeZ$iBqgLQ!s_nmrhL?jo)s#s;xs;*87)W!2%(#E
      z3x<F}EGOr@cCTuxHqyr1c$Q+lc5j6Q(talu7b86niIZ)Sw*KjUALkoP4I<Yv*M{vH
      zKA!y5^6^V_nO_XKHEpYJ+OcipE6;siR%A`mD4rsCLdhu<PuatEjKE&o|5{6PORcXK
      z0FW2+Ji}YaveR||fQxl;3<m+M57a{l6NQAGwyTC3bwpKNb<^&mT$DB0VRKZnezR1l
      zga7~nCtAa;IEFU_8v2^=+%wfhJHoz5%i`+V*%j6Q{^Ngt>GVs`23a?2O<7u5LkIx`
      z4B7B^`jLgUO>C2&l9x9vpDE4oHvZN%w<ZdSs3&S#rmV|hSNLq=Y(1z?6;n3S#t@8!
      zto~#_OS1q08)d8VRKd!M!~AY4S3&>)j^O|RJ8gGFBaz1Duq!+=GeR@;SZ0i4xX!xH
      z=iYcu6hvepKE~5Lt;@PSXqWRcvXCz5ti_&8oZL6QPiJ*gH*p+qUD&Fd`cP`9K2SfA
      zn^;u62!oh~EX~kZip@*;=1{X~nH*CQ6GZ<=Dq6zxGz1$4Q-eV(D5%10W2hP`qR{0_
      zF7He9;UwM`XghM|h{Q>%pxV9m8$vg1xOzi47$!+lkc1t*JDzy$iP6;Py6e{g1j5d+
      ztjQj`N7iHrp^J4T3rU{g5kiJ#q>8CVW<G5rG(RN7Al4FUQFMjG$&y_1a2^a|kxL`(
      z3)(rF!!YcnmtT6DeA^I>rmCiOOV_QxZv9k#DyQVig|eb6U5mRmF4(AG%IM5!oxjdy
      zcO4x&TI;PX$OQnw$jnGnuu0Zs-Ove)XbjFL{lI*Ya26cH8-tDMQaV%4&;-rWte5i&
      zijd4EuUT`=T_3m$gIHe4C-MmrC%v54v`jl~hY*rDNfY#VZX6+`8fsR^F0NiYGBZ-^
      ztHm%358xBoiN;_fiIX;J{=M_3vI1<s9}*`CjEJ}*Ud|hzi4UiTNu1P7t=3;_SVppx
      z)R0yX3mwsp(afmB=CF|EVqLnSi>jC|r2~8*>WTIz`*92}DWz&}bw<dfN~uI4(Hd!`
      z2+GA)`qrbrllfE&&x2!lN326sMcvdb%Nj}z)%a>ioP+?jgj;k|H!TwYFqRq949&;;
      z3R1ygb7+Q^E~Og+4Kzugn>sgJr<28GL!beJ^XXE47xUG00wbI@Cqpt(Pqe+NJylH6
      zBwdt?rezMNhi6;SmT*f}$l@42tDoEMMgZAqI}Y)-sy4UXO%YU$w}!;$_sb6FtArOq
      z5malWmBJ}O5kyrCJHxXb-gtJrIn)dR>`(Sfnq(oX##;jbfDjTGQOS|(KZ$wSkp4Ea
      z&*06WcUBuYffE4WVqLRiOjYixcS6<k;7R>Y=KqL<zY~ghXN0}NhZ_Du=7)rqg-jCx
      z05A;BuD8Z<h+z-_pz9U@075_z7y!UD(QJa*l(Wgse@T)U03e@NG|lk)?HB$;5SU?@
      znT+J|umk~TcP5z^ROm>>yGSI2?|tv!TW^gy9Q4MGr?+ewtgm;w-8KNg>#q+!{P505
      z#8Fe@1OW8)WgdHM&%{It!?5pu_u%&J!&hBZH!zTW;)#8xiDEIwcfWf`6tz-G{n^jX
      zg~MDrEk5?xp0Tll%f&qV><Nye_v{(lyt#k%>e@Lj^B+g$j#Rvhsw%#xC!#1uPfu7B
      zwTX#Ref>Kd7p`5~{L5bstXlQXd$|@Y@YmJ3ue`Fhwbj?(pCJhBx#v#abI+oM3j^0(
      z*RXNpsf7yz*Iru>0O;xpKK$@o-}=_|4Gr$qt81sH1;5|EVnuAlir5c-czDi=`lmB*
      znu|Y=n{RF&9W9(bot`~Bbt=7J!8_YjxZSp5QJrmv0RYRFN3&V^Z~kV>m%qHLyE`;D
      z=KfjCZwWVV?!WMG`}Sd3{*Ar7A%uVXw=14{>Zl-S0Dwq@pPm+Hf6_FQAh6jU6aaAG
      zz~uV%ZQuOnng<?O^6ayxMDaJ?3029=4+#Z9o0=*mlR_#bOiq?^IXNEBA3Qj9=1h8U
      zFsCR+Jf83G&+OO{&t|1;RvH~Gq*7ucQ63)7I~??fKis)vM;rif=bZ~TZ|)l%Eo8IO
      z(@!6}`|gfHLCIvK(a}Pwq(1%h(PXlW5DElXio)l*(0?p&_wL=RR?Ypg|KCrssEm)7
      z002%WT`Z~qfY}9w4hJoYnrWihLkOYA!(_Aa`IHz27cB5W2>bi9&CMPNp(N=?jwDsp
      zXm1aM!(1vQq|*`rz~iy;Jaytk%Cb;*cbMlZZp!cPWXFyj^FzXm{7>xIv15KTq!;-;
      zT$FI$b5X*1&qWF6Jr^aM_gs{4-g8mHc@J^$;6YiI|8T;KR3t}^9Qpsoi=7R(haHXp
      O0000<MNUMnLSTXi9P$4E
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/in.png b/bower_components/select2/docs/vendor/images/flags/in.png
      deleted file mode 100755
      index 5952580becbaf526832a05f4f2984474c87389bb..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6988
      zcmV-S8?)qzP)<h;3K|Lk000e1NJLTq005Q%003kN0ssI2>p5Ph00009a7bBm000XU
      z000XU0RWnu7ytko{z*hZRCt{2op)SQ*B-#nxi_1H5yA+BA<B|1!-2>U!~ud^ORIfV
      ztJT`tTC26Kt5&TYueGoCb-cD(?Xs>aD&oS517*sPy}~Ah1Ol1&zCUh_$V`Ah;>YiY
      zKa#^a=boG2y=VQ#fu?3(foB*p$Y?j<8AIin2o0WRA~blOiO}GA%0<Xz$VR&fI_D`D
      z;kMV#LWqxcD|E}#EJ7=ec*UYr=P?bV-4NaK6p9c+96|sghz`qT(B-qjAB=X3bPIgS
      zmiBa-V%J-z!lx7f066S+Q{xU%8@;C948vf?1IPCc%x`O_jdmM{8I(q!Gumw!PLxXY
      zYO1>tLmo3d+lV0t0MMvPwyEULbAj)FJinupGTIFsehfo|OomLZAZeHx$KmbtaX1dA
      zO)4T%zW86%&QIs5RN9RiOd~BWI*J&;SZHk_TAh%hZK*)NasU9ojtv0t8DFh!aSB<v
      zWnH4SrA7q<5MfMY_S_knS`}fNNdkS!-`&5!FM8LzA1(0ru3(!=w5nm^gtF)6-J#Ru
      zT9q0V3_yf)XJq<}ueP&k(Y(kQyQX<7Hyk<=p;RJ=4o56l_3Bv1My)OyHzSj6Dw!Nm
      zs%2wG0X?0Ox;WMUd)KdA%T^3S9C^(siq+JaiQ8!yhJ1Y_{Mf0<eHDZd_w%fh$w_&I
      zw(FK({rX4*MDPzbpWOFlOnV2l|BG63#Gmc>b-YV0h9S1rLK;=kBwz`IObml(lKejV
      zcBWFx(R5_c)9H*r$V|TBImN#uz`FuLZ~%ZYO9~*|vUkzxi~ju-+`aj9QJHm+Z#jg(
      z#;P^1$Tm7O4?%EI8>3NRJZ)kTi`CiKY}{*ENeA`fb#Lb}jbW1u$s`p3z=$Dd&=sG2
      zGwaad2n^Fl`2oEZApoGGlX~((z?|thmYg;sWyZ42cQVHIni)Yb50~0Tfw7f^xVX&f
      zW|~V}bcVQ{E)p{q$KI35$Rrf2Z!}&1;+2MG6AVK-r4*$K?OBgPiC(<s<?dYTHm;sX
      zd3no=znz%~0MyZK4jnyxvIxvfBrZ<%ayhBK$pir4>rvTPP7Fi5-1rew3ocyso<A#N
      z{;c$eB{o@k_H0who-gM9=f_B<k!<C%l%M~c0s&YWcULCwbG1N1u>hY641?9RYyg0t
      zXP+0<6ZBeyv%()#)|k(F;mzQ<cN4Gp#7xiWHQVCYv=6tOU@<$F#HIxY73UV&-n{30
      z`S0<$4|$XPONAnaOins_a`GQ%gJg2jvUzuY_$>s-`+Tbce9FmW<?|cXOpMw7?Xj@v
      z&|DP3basowfc|!*000-KhV7rsujF$&rIgc26O0(rf?^v4#k&nlMP=4L9@Up_c-~BN
      zX%*A&W{wrN(E$KVBiWCi{qJ0|U#pmb<51MbfDlMJs7$6ba%#cc8CmTTT5W@Aw~KnX
      z)*d)CJ2TfosYI{b^r&w#X=|sqN%VJHPOn9nUu+|P)Z^he%+9xWc52wO`DEf%AN6ar
      zDCXXHm)c_|Coh<NKjpStLz9WRc+|AK=NH_r;B)Thj3H9mJ80r|I*Ek2j;#j}KXE>w
      z+v{k_5$ELFbro1qnYBL459oPE+LMPR-12IRjjJxHQ;wet%+9xaZDsPE^l?%dxohUQ
      z8JPfpn8@s|i8b|RnYj*ZQ_1(ggm&9<i=UaXEbgu@o39f_b6tp{n6~?t000!hzW?OM
      zKh6eSxaQS0orGd`wu0>&|1xHE64eF=mN4itg%VA^;h|C?I1XiU(w9F(J}l+BjjMZ5
      z!0TGv)>`<*?q3pKUDMA@XLxU9xERfj^u@)g4@<bcPVV~w$Kkb9_XF?!k@3K>xrL=p
      z$8gvxGRiBoT^xHqIIwuELlc>-0sx>0?mVW!b!<J2s`&6=Y<i9(h9TXShA4u4wfE@G
      z&*HoG!<rKtl{Jdv<*11eLj2$d#|lfim3)r2Wo2^mos4k@KR9;bs&}XK3H?z^EAx-D
      zfh?xX&$ALf8s=~uoKBjM@ao#4GV5L|d}aByk_yY@8=l(V2LJ$U+i;Fd#xipq23LHD
      zjN0q(;#BYMTo*Gvd*H0SQC4Yj;Okjm?m0@lYF+7+Qg(e7Cu(D;Q=~G=rd`WgT8(<G
      z%EPrL$hYjr-$Mr15*AY$5&Uq@U~gpTjHo^gLGabjr3CqvVHk9<6`%+<e|9?4NT$MI
      zM<?}*@1uH7@%!Ogs=M3R`uAS{Yv-r)@Fz{2rUVq5nMeQt;&z%bQ%a}Fr%ft6ljPU4
      z5*k&pXY<Lm?<~hK?e<^h&q|*YnT=tPZ7N|JNv8%CAKG_Br9zY{^t+>>`NcL`)ixAH
      zv?IlFnER0D>shsY!7ZMR5CFiS%e~zABoemo%Q+<#R@zpWp5qulGsDEVGq>=Gxyc)=
      zlRaE(zBwAcZtHTT3JvhCP^pl!$-X^n*tzM<nWPC>d0O{@MP=63R-%^^QV8=Z6ve#U
      zYB=on&%c|ImgS^vZ9`$CJ5rgPwEg3Gn|3c%r=;F<j$ZawPJtZ&K-+x~9EV%?E?OLW
      zFTkf<ok*i9d_1ZWHmupUf5B@jFK_>3Uc!bo-tK%FRne_@_>_lqn*97#Z*A{_N>O4s
      z{O^(QMQhfpJAm?PPT0b&S5w`!t!;>m&RA$>DggixW({n!_6{ip05I9V<nR~YZ(4Iv
      zE7f49l=AAk&+mErB-g5yNHJo_maKgx>AEKX06{PSK+<*3g)gr+G4AYIkZme?ebuEM
      zpUl(zS~RL6e9FVmcl~nb><1inI{?7cSOOtXC{P>+9Co{8AbplD7=;-rgkbNM6D1W^
      zOV+Lvx6x;Y<^FZaPatIS>)3x?@`Dh(oRG3$PP$5kRM(novgBx!&<abrd$*oAo9wGp
      zqMcGo`=j}NbZG9S6i)y^r;Oq<rlG#cgxHRO5dVDFFaQ27T9f%Om8zIFv3TREOZ(nA
      z;pNUxO>^1(d0btiDF9&eD;FRHOV_Q-Dd0s;&CkxaAH;AlL`Fe`Jg$&TR&Cn7w7G@#
      z_g&YF2aaPMn(_*50RR{dt7^<IT=Twp&n3{O{EbzYJX~w)8ckbTjrv#j)Hax*C^kDH
      z=kL3&UDGiPsjg)&i@*ErfuEXNSn5$~S^Qn468$qVu%9}q6h%l-$;MTe_HR4k<<3vN
      z=e+aN_(O*y?&mlXd$4qx!pn`n?w#dTwd|}shvXZc6FjR%cpwC$vO9wyc(>_aU%ML+
      z;y&Z6m&M)XTD6|P>V59AZ@Z+wp2~#PDQcs4O&RZ8dvMP&f3J!gcU<SK+CW^_(XRQU
      zZO0QfysT9A@`_U_%1Qnu@zI%)A^A1+W~VRuC0_9%6i?l61mYO3(T(U7JvF@O29qJ1
      z6PX<onN{0h`s?XQIR$nDt^qt;YobE(USE}LYTN+;c=3%@>P3Z<LnDsE@+yn2`Kc7;
      zqzNVQGczMY@@neM&LmApyzE_7Yp$a^8b%C5gle3}G%Sn1<2J7DYO4Fm^8r0q>&C23
      zaT}dZQ>2{O*VUV1<BsPJ9}i~G<slObldeDBT&0kell)8P&CG}j$>Z0Xok{Xbyy8<;
      zV*rv<V_+gApiq>NQ}Y+hzTYXO{PtJS?euX(_r)}lu2`7*)#2%jV(xu=;HR!d>KaYL
      z7QEx*QML2U(;@S=sXM^5#N9%X5z$*3mgLkJfVFZ@<Z{yatKR3YdfQqHXN2aJR$A6I
      zm;wMof{LR;^S(MfJ!E20w<26i(T0~U*VLQ3JJ$vW75{zLg-DNCv9T{}C_}*@MX08x
      z-t5QUr>eh3OwITAsx)SG8ujKG>fy?7lTaZ9uPndTBw#%(;Q{~*U4FpeRKEQ)$*+`Y
      zB%L;~s8_*Qn72{LDgeN&@SII+E{=HXbj8ynLL-LE(XJT)uqftUVQDW)B`QTpScd`t
      zT3VSS+BjV@5+Wpi*<lAka4QROkZ<|IIrnKa1=C1I?1Dy3%jMUx@gDBkas`P@RuZ2H
      zm532T#<dioh?YtUjnUDKcVi^R!d;tAy|z6;BxVepwGT{KoesQa2cE#5CvdP8@VG(}
      zNrhvuNx-VCF)yjGRLD`e9961N5(%Tz6chbQE2=HV*f({pq`8G@!un^Mw5Zey0O0Rc
      zxh(#UB}a@PIF7;kW@COWn_p*EUCZXzv1{tgI;4a5M|8An-ni=0#vRWMx&{r=xd_cn
      zBr`(urcW(6dA>hGdIAPbZfDzKZ!2)H6*%yk?QB~ZG&zKzRZOp{F|XuvatnBgmwjsL
      z%oIH~R)iv>j0X-=0!jb?D;B5za%$4+E0eosC@!=1aODF4WO5R*4R+(M%Z*1<Qv|`S
      zI3hcn79LmV<<6fS@xYebLZ>MJ4%#|s{8}@99h+Zg#;;}b>&==3tbQy}31XwNW<}(@
      z^}&)}_ke~Gorn-cF&<Zl;{eCu%<u;^sv<r*<JP@#DhvStw6)WuGBS@V9An?)z!Nyw
      zHapk~jEy@Hh<8fK)ph1oeDg}a`OSOIRW;_FQu2U5mYVh3Uf8|)l-syE06=vuJLR@3
      z+e`ugAXbf6Q{BAWtF!X#ldgLTgx$wN41;xzrge>`X<1LCLx?ktWIS$*9aqTXw)lEf
      z@wh?`yA1%KRH6;dCe?&=YuQ=(b_jwSGdqbZ&YPKGY2FqUlAr#-0mmVR!IoBL&+dKb
      z=xS-7F#q;P+m18nasY7%01g0-Lx6+d&jxMzaB;hYx^2TbaXY<=Z(dnrUdiW(+UVNq
      z&3p3x#=ndhGQwo0pC3!5Lf$(tU-KuUS0KbmB+Qy4;@PzDY=pMf!oz<|1pq(z!Ld2h
      zbBGK8033%n0Ied%rd>-<Crud275i+7?sjL~o$J2;<cIOjwZvC(JN@lFi~l$qIN)z*
      zWg%)684bc1Fy+tvrY0Q&W>YB9pgG$I@x=IfR^=5vwodL92=O(~U*EauG?ntt)ag#f
      z*tJ_%RPuGT^`qMjwk31Z{=5G$@%h-P$*;cqye6eyTbZ1lXP<J%b>OT|f*?4BtYpyT
      zM9+!gkm$^bKSE~2AUe1={?Oi^kDi!(D}CI6Ig@|;IKaDt_#D1yOIDu!ATFmNx}DC%
      zMrEl~$jS5m(c!rf!TDseN}(8FY=;n^J0p{4EgXahF$`L9#3?8DJ#w%nx>TU<Q=0^=
      zNwMz_PPa~{$)l#_3Pp?oMQCHyI>ED&U&qcV;LVQ6nHB!PP({dMO5MiREn2hw+ATNd
      zF%91x_{rb9;!b++4uVz|A`*(>IJB}5`Fd1aam1f~8%@mRq%yMRKYC@2`Kb&3FD|~>
      z>wkYeJxMG1L5PP;EHY+x;y841s^_rVV<NM!-Eso}s4%3s%$i?k*0WS>RMxr6zHjVY
      zCKNGVTzqrs+_e2)%^u>=+g~Gf*OBtLLYbV@B>2bRnod)Ub8L9<kk@PG$^NBZ?>o%n
      z3IW7X1P4TqhlA{V`!!ouls&22>!0y1wKq=eL(%S*R7xcpFnfo#W0I47(>DixQum4k
      zDi!kek?;=>#&+}KAn+Mqom0S5%gn>Iro75RcOh?dXm}xRr+0Kde&m%(w4Xg?ejWS7
      z`2g3k^)8Q<eDJ$pLf39x(bUE2UK5&ISP@em^0>lo>9^9yeSIWCtEvD1LXpw&vq3B)
      zX@E}!k<!${dg;xT-~Srgmt9XolSx-IktTt0&sFR&qDOnAO#;?C`xdGv8kN<YcRyOt
      z>to(OI1Y}V3+S1C_EIl)q?#a=k&{v$Yl$10OfKK_7+h7lK#xQS0GJu}073AS+pZPW
      z97nq*7pFl6F-%JF?DpVe7`%FG@D`qPqcb|C<h@_U+)f|oKCafuLAwwrIz^8}2qBme
      zn!Ekuc?(~Db^4OG&t3MN72dmN_JGvXo0U{pc1>v#u*xbe`^w)xREly8PcUcsn;(BY
      zD}LpMgFi$?PR$=&Rk}cr3@@lug{xCT&Lg)!1i=G+%kO3k(x&gf`wuUfo2LGH^PY3;
      zij9M-ib0p52;SBA%*ML4wq6VO51pb%T6>v{oYTc^6T{%3<p%&LD6z>cv{ipCDIdIr
      zZr4c}f&R!3=#>bE5id8sk9&1-7jHrnR_A2@lG_?=tQZ_mrwAeZ$D5*C;!}xUN4yv`
      z4b8?<Ir)VJx4D)g;_s(Fre3(FwFi?y@N~X~005bcY;P-2e^n~=Xzo3{jOdNcjmjE0
      z(=gH8@`O@%#O$3=1e?=GlqwxDaw4?kh_}CaMr}i;Yr5&>g?%{M4?97AWh<9y9m9Ai
      zjGPE(hCLYT(CF(?HMrs^f@u|!K+-`~Z_eR36l!C9HLZs+xaPz~XHE?)CVX*52HlQ@
      zW+oj8^KVheDjbLLGt&V8o7P<XJIzI<LfRy><7Wdkk6%8?zx1W0HxsY;XqdlKN|tm`
      z3A03n0@eI%0~6zpy<7hbUAR?qH?uKz&G9ocAjB~Y#zkk6$*Ns%ohmHlVi>G#Fg=^>
      zrwfxAHM$j{P{g>G<@C*gpBx^|ETY45qr-Bu^X=DcS*}(5`MBuJsX;}i#+|KV`oOsX
      zkSj>yHk!FvI{-kTL^Y4=6BUy0;acP2T9cD+r(u!uYEA{;{Ieausb9Y33vU4clCFEb
      z_I`p+<p)M!MtV2XDPqx<!=HaYHRzw->E}PEyuEj^R64K<VvK#$yqOuq=eQY}6tZ&X
      zrc=e`Rw@-z+hBS&*|&c^szAte;0XW#?GkGL1}|nN9Z{jV2*fcAE?<-i09e1`>V<2b
      z7=|bmq$@Yw2YlL2UGUG&vp@drS5A+NS9g3G|DPWthi=m~AS1D;XlXU-YExTTW3Gw(
      z008Ax7Uk8PfA9QNZNj@^Q7Qo7!Zokg-%l7&58f<f{e5?wF-uCL4lsujiWm|J_237`
      z)PeLD$EGcgO{=bDzw(Zzy+s9|L+YYuE-teg0r`QEna-G*N<xAPuiPBJc<s8<O3OLZ
      zb2LBA?9>JS@I_n7s~>Ca-#;)v;ng*o=z#@7=IJD##4DbC#eM2Z;uW9pg<G<69~-%x
      zzv3OXaBJ#4XAPU`=UHiI({ki^@JpLkwzL{`i@>NmM&d0Dn^d^(%b2eYM_?FoH`D3B
      zdw<y3v}o>+S;^;+NlNwCk_t-=?NDm#O)uYYV=<-P<LflZUsY>f!RPpT{xfI3lQ~us
      z*{hj0vFKlKt|Z*S?`1je-}Wb&q|&Lro?s+4*edy))celF?=F**6R-Fv6sSU}>C+S7
      zU9oP()x*c99{gX_v`Iw(f(x1j`;l~zCwNs9mRTYY$<7}*zLOC{_UVq_ips3_eHr8L
      zU14F~cJ$;F4I2pn$j-M{>qf-w^s~vn2!fA5^n{Uk3p<}2`EVTeRNwSN$i$)*8&?zI
      zx9;aS?%k^C)18@X``*UCNF>#7XC`TKq3|gWe>pjM=Vx(J8Trx;&;RWCnQPTrr*T-g
      zZnrrC?;n94seJo_MpbmRpdph~5W#z!VX6R5%qITnW-ZNy*;n@5xZ}KJ?P>tK{h&zC
      zd4QRTL@0XPbCOVu#gqy~gLlXp84N&#T7WAcR4$9Z7Z;ra05CJ@2=uL#$w|pK+%XJF
      zW#rGki6|_!0)Pad)>c(|%hRQ7f+zq;?n7%9Q}(YVw;gyb000t-xi~eV2)6T+Ik|<l
      z08#*as`NAZrGg2Y{BX#1pg5rY@LTZWH7nH%m;7Suh{dmG<T?OI1z<=+RG?3Judx_L
      z5j_$iiekGrpCY!zh6V(XY-iI70g%ebI1ad$Vx<xVkTUdhdtO+0YidyOkXtyM=#dCL
      zTxvXB`H>;RV&A8Vi_W>5;TRmZX~TO<$Rt&8U?~7YJ@kb}RYZs84mudMju_=pfkIKv
      zosmf;t8f4!r{+TlURZETr9yBVC{^h7+pdH2&}SJ*?q)h1Ivg55GrOYNJZkBN;J`9~
      zt9r~!HDY>5zO{u2$DxC*z>*`54tuaD=01)Cr3%R@uq&(7!rwy|jQ)(&&$IH|13!&>
      z@`y;G$Y|59rKgkp2IUZhK_J6%@Zr|8uPjedDAAb-uVv-h;5Y){V9p`1<cR;X=V;Wl
      zysn7~CHlqpQ6GOjYt+yC9sQ0pGuI(<>E?5nA3Hpx=QxHh+;ZyTgh4uV;VME}KI3a4
      z1QfE0YuSMVVl!bdHUo{##?P%^yXT8ob$c2G#tT-z`r*OYQI{Xk2N41QL}EsM(c_Tv
      zg=N;2Ly2ey5df(GK=q-YMhqDMD1d{Hx~x<oX<1I{-FZm|<<@<DF-g@65h4g46O~m}
      zW4?ad3kAj8sE|AgMLBS>KKW<BQ}5tBS_Z(OtSI7UWJ)@y?|!r(@v@JDt-#Z@W(X}D
      zPDZ~U006i+)jurezWw16fzar$WZ!-7{2An1eltx|El*#lx8-`q#@7}KS!v4^&UkK9
      zev$1rN5fuDNC^)v$kte`uT%6wgmsOktKa??p&)IS&|Z5#LEAITdqw;x$TNvF)a3+3
      z@RgfhB0O~o7hfVmzCNHA9jQqCM9>)=hdo34^vW2!=6-~&Rtxu~G;keT&oq*1av_<F
      z+|ARvo1N+?q8B0@H1RVtqC<20`ftsnSOy&(z5BT@n0;TbJOu}bVT*9?jLbQG+cy+G
      z@@(q$NIN1rN<YO71-%#xwZhk<io<TlabRlF;pN63>)03(Tp(AVDiu=SWYRV6eSVRR
      zOim(^u%a%`g%i9g*`^ZWa2MCH_12c6kcovDh7dNNgE)zA)EWKV8ExTOiVp2P5;o-t
      zod%AB#4EmU>|EAuh)Vk9Qw#I9fLS}#V=a%{^56YOf&+`6EDldyobcA}rTVYn?TO*(
      z3)>~M6Xyd}N;EjIm~a`C%E<5RTeRcTc|F4dArLPvx9;j0DsHDAPYgs5e6oKDQM{v*
      z^49L9d%lS6976QbQN-}xLIMY#ApOElB0f-a3(ITz2U>+UadB$6b8a{BV%9gBcuwCl
      ziihzI5kqZv%=9b>@gIH<xs>9`VYf~6E7Pj@+^9?pL%um0cKx=SwWY}a$>2_gh2c$S
      z2&M#<EPs7<;uRkh#n!)gC2Crp=3)0B#Do0Go?Ex}(hUz3#okz*6djtImO0YLWepbw
      z*^#0sX2EW&@3K^I;0ZJju0|rM*rt-M(ZuX+1qOOl3@}g;KBFs!Iu<@d%`*`iJkLaE
      e@H`Wt!SjDon@<nE*rqrD0000<MNUMnLSTYPfvR5s
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ks.png b/bower_components/select2/docs/vendor/images/flags/ks.png
      deleted file mode 100755
      index 9190b24d20a7e15848d43c61b0d8595e96af982e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7758
      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
      U+ZG}Ls{jB107*qoM6N<$f(i8qe*gdg
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ky.png b/bower_components/select2/docs/vendor/images/flags/ky.png
      deleted file mode 100755
      index 5c8d0cad8e0dd374db524841b3fb5ade32267fda..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10162
      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
      R>2(MX082q6E5-E#{s(h|<(B{e
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/la.png b/bower_components/select2/docs/vendor/images/flags/la.png
      deleted file mode 100755
      index 3f2c4785ab8bc20a16a003f61b7cbb22d036d2ee..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 11486
      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
      JRf^~b{2z9;Mb!WR
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ma.png b/bower_components/select2/docs/vendor/images/flags/ma.png
      deleted file mode 100755
      index a50208138d676174f4f6f8a8bd1996fcf8eb1b65..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 3985
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/md.png b/bower_components/select2/docs/vendor/images/flags/md.png
      deleted file mode 100755
      index 1717a2646998f4a2a8e82490710373e11c8507fd..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4103
      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
      FV1m{l!wvud
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/me.png b/bower_components/select2/docs/vendor/images/flags/me.png
      deleted file mode 100755
      index 7e696f3e3ccbd3b2269ecc209ec535d1635c3cd7..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6238
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/mi.png b/bower_components/select2/docs/vendor/images/flags/mi.png
      deleted file mode 100755
      index 49494fcf85adf482e419230ad0ab332d6a63eec5..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10471
      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
      SB|bM70WuPb-)qE;gZ~HFT#+dN
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/mn.png b/bower_components/select2/docs/vendor/images/flags/mn.png
      deleted file mode 100755
      index 602f36b3d53d83742320dcd868839af3654379db..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7938
      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
      I2{sG)5A=d4TmS$7
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/mo.png b/bower_components/select2/docs/vendor/images/flags/mo.png
      deleted file mode 100755
      index 413ea1a6637c36d583cafbce5c26a7d1ac0a6d49..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7495
      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
      Mtg6gUDYLNu1CP&^#Q*>R
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ms.png b/bower_components/select2/docs/vendor/images/flags/ms.png
      deleted file mode 100755
      index d3e4a1cd3e2fff81c1f42c4d05c7d25018f2b949..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6088
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/mt.png b/bower_components/select2/docs/vendor/images/flags/mt.png
      deleted file mode 100755
      index 6822acb90e9938250bc4d30bb61421b86a90ea32..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7344
      zcmb7JMN}Ms4&24vin|wwLUD>L?(XjH6qm)d#a&Brr#QvkDOTKF7uN-T|MlPgVUkla
      zIZWQ<y+o@hNu#3>qW}N^bXge*wSPJ7A1shy{>4*%qtbr~*+oXz9RNW6@LvD{SviCN
      z0I8X*gqVhR&UvnncgjNNaQ9(=^(I&HXqPi>a21v(wLB1ry@uVWSFM-d+<ekB?dVtC
      z65qM_*Vj3H)vUTnBNmmRx`5$V*cU8HWO^zKs&R|_2?frVd$z+j>>?!OCM3%eW#OR7
      zoQE8)ZuhRI+=nwN2B@<F&Lju#3Rt#_B^gKR%m0f+x*u9ZJa!>0;?9j!GhusKhmW(N
      znhm9BfXDv4BoR%#Z}4wtm52v;x4@;w+Q+8O!E{=xunqo}yK;TygOBlbaYvU7E##9y
      zrmLi-%7L;I9u0ms$rRu}L930eC9JkAmv<2VjNC1MsMk0N>jCN~ite_+eno3GUP$K&
      zV>h&5=lU|e`$|@|-EqEB=cVsFgm23D{uMQwTt9GSTeZf|R*{kgm_U3Q_;O6f({fTn
      zuz20aCrfVV`CJ*B1rWNd)Fc!Cw5zq4ez+p9lW~%fzKPkhn;tJ)mT*PFl%1?d4)7D1
      zY!w>Cgb3a5`o&{`epmY{s|eHC?)kMWurM~W_&DXB-Y_v)uB|}>BmNi*HP&87k_<7`
      zu(-D}te0p;uz$~V^8A+Riu{!fIUSKcTgX^{jUgQ+#Z1g}Gq|L2e77h=$ebwfFil<L
      zb=(0UM<l}D-5n&+pWvE>p7vwYKvg@(6xL-^aZ+T1(;52wJZn%JF@K;o$$F$d;tfzw
      zl1hpr&z9$QnwXu~wuaQ;OI}|(YaImK%*=kI$ax;<uYMgmUKXF;`07yzwN@tbHc_3!
      zL-W4Kg>S!8KKU#1G<%;3FnTKTI6HkXGWPJ<6Fh7jD+YxQDj@N!&HL{czP_9f&rMt~
      z4+B+__=UJ9H)fqtZq6dcxb`6Qt$H=-VTf6?jboP+Ibwj=7+<8`Uas=pAp>I{DSB+r
      zoQbEoE@~qa20AkF2uN2mTu(%H*1p>IHSJr%{IRA`_gkGTNyZ2mYuFctQ&|-MKnGyD
      z4PB%h{%$SK1$OTGH9?WI!BeSNy+uFPy!m6MQe33-eQT3Zq|PajYy8jVIa9T*{Fowf
      zZYuAkSF!=wqI}=0qAi?`fdjCvb;QhznZ$2mcZg-Q4#@W>#naW?ql`cGLxzqc<?>OR
      zP&7Nk>on^Pj(LYjyB~=6bqBXZV636a5q9V#ZO`y7litxp(&tbj(d+NQnX|%gd!zBf
      z!aU|Z#&i^~DcgN`tC#4thwq9&mrZZ>1N*+aq`KnG&wPctY7VNSZOiHiO1bj42o}3T
      z8l(JxylIhrZyv(5IyACHR3Owzd-=HLaX2kVFN+^ar`YMYp^MDiWt_~c_Ujy?*+Q9A
      z%EO8ecl~dXVvrqRIoP||xi-FD8<@o_J_IVVv2%D$+Gm!r7$=?bloc!m(N_zNw-?k+
      zSKUA;YC}1O>eS&W2XFbEx$Izw;R$w@#|4Yc!+h?`6=UhDF8}p3w!)$|9rQbB0;r6(
      z4LjE;$9{!<l#}%W#W@$!mj2!`ek!UG8h^gC%vZua+!(V0T!7E&_e-@EAuir2uD<WT
      zW@{>&Z%_<|UAKdWKBwlq^pXuT<X%c5ZK=2ugMS}1F<3&wdtL~*u|fJT-^7*f!k&1G
      zyWCq{TodWoZTBj^RgDmh$&&*wt5d&{P^`Z8y&?k3_SYO6R%#MXp1cn4<88X?I|A2A
      z^(-I%#<&C0(mfsh9Ug{;J%>sB0X!N;>CLw*m`rSS-Jj4!_vej%>n~e;ieDW>ta~!q
      zp0l@$nRC>Cb9|9swH647$sQL7>bQuK8I29fl{^kJ<d+-8+^90(@1&9X&|ycj$ZBJS
      zwC?-)y;?lnoT}j(p*v`}9zAuk`=uyOX=}r?<$Ae=$@t~3^sca>-Yi+^1MkDon~D3r
      zPLvi=;H#jZwi4vC9V`v`zNWq)+oEb;jj8xUoiNSR*TOF|1W8J`liR8rH?vt@`O97H
      zJ8LH~?&iTcJ<z>%eh4XB>$URjk_Wp(_UjHTV$Bq&IF90``5Q&LvCYTtd5TX{tffqD
      zh&M^3)vqPdvrfVscR%RRZ&07vf<FK4UU#Dn`lmnC;7ub<UM?>aMah?v3VCauE?Sle
      z`5MRXp7GaPnT_VvqZi<g;!TfBg_FNO;a_R=oK>_IiGsEiR<_Cxl4t`k)=3ac?v|T)
      zS}H7i9=FSL{t3_LMTKgxm~AB1A#&kT)zLGQ&WUBuLmS%Gn~~eJJiMCZ-|OnD@J|za
      zZ37iUx5B?KlBD%4mkzW#jguc#9sh<C5e4b^HcvNpGfr|=c^T||+9>E~ruk9vsdKRg
      zmQu~_)<G_m?&9alS;R#vYRNA&OQdzp{5z+wU4oY_1U~BVZ6&Pb<|8)s$L}*totzeK
      z;(?7Hbm!KR4dDORoEBXTykQGqw$FT<*_8y7NJ&1Qiqn%xM`591mud^_&Fh`f>r+xq
      z3<RsL+3432z2o4hsfr;U9DJ_Lo5{=H(HH@MVT3Tla{w+rW$dDKI1Kv(`#+TOp&HWH
      zQ|&_bt$?$z58gANlz7xZmz>6{M7kza`LizY2&YVp`7br1(C+{+EwB)C$NIxj82m_7
      zvb_y<6-I^Thf4Lgl?$kO+H&FNdj$L)d7P$y#Oypm^*bX~FzJiR?z0&?{#s0_qDE*7
      zW*lxZNk4Q$T?9iGz;GI1JD?712s%<;&j@?2)3a@C4~I)DExQx5@L#VFOIHtg5`3zR
      zRNH4>>4CQ+6<w<7d_SWmW!|dPOBkeQ^S4FNhyle&+%Rx)C|v;sVhklT9tbg<GILvx
      zM4~_!Aw2>3T1@WAihQVLxp<B*4XUT6M1Gi+?CyAc01gTqms$pYF-w~Taq379ajy+k
      ztLQ6Mr%59i$%hey9%Qc}5>Huh!Uwt9))p)wJ23=WK^KlkXxnLv=63J9pVzYtBU@`X
      z>9|OS^&?|mvCZ-T5>dcEl&wl5v0@gKI4%K~6ry$bH6q`#{p2H;R#?x3EjPR$on&ek
      z^Lp)-Ze?T!_xUMa@1uu)HuXhtt9kYTS%a<MTZO}jdxwG}D5FC=2>mJgssXTdSP?)3
      zEFeOGIV%$Y>>3v%efkukwC=vT7@LHwokbmElbFCZxpFs_T*?Z&)0er69=4=|h2Meq
      zX*0|u(r-MB|Cl1I0_VDXtDSNZu=v$Tn>v&hxtZeeET5F0Zoc_6Kj1wuv2zGjd@<C%
      z+sOM1!}sdI-Av+^^eM(p0}*_Qn7Ca^w@1w0+s{#GZxzTlYFc255PPm7qRRj{YOy+u
      z9i%nqo+nNaIwxb&jw~P6NYt_L8V?@rY~)m;69t&?ehtzcFmU{XtE8T<`<KAqTWp3g
      ztOuCq3#l^X7$SfuZqR8%ohugG>gIv}9W=6MTb^R{SAh|X)K4`(f+=B}Kg(0MXV3OG
      z#0JgRq^c6nq>R}9?@brxmATC97F5ilYs!gGa<hE#F=G>Nq+bRj@&&rlJ*p$IqI*Hf
      zDp}$4m^}vV;#+bykccZH8Ll5WwJLVk4H+MuMM&5M{c>YGtD`*F4KkWG3-&5VuC+8g
      zKXt%2zhg-Z9$;#qTDj<&lPorRiMEh`Kg1@1wZ)HuDI}4Ic{J_|g4?n5Lym@VWe>4O
      zq@(1NnJA#vVGYA>-3;F?C7>qupxuzj*X@L4dT}wje|umt6sKN6ErxCdt*x>wYz~f<
      zzWS?6@$Dh*H=oZm-c7H#-!}ZnK2>C}7DofQi1EY5krpCGNcS+92H_V_=2Ps=aC8WY
      zY5*{OfCH3-cp;^|t75MNX2>wj5beh03+`h@%LDQE0nmHDL?b~BTaA{j8!9Su!!J^Z
      z!*2ZFJ1i;T;yrz_A-A2dsZ)yiG9>5=Wt`|I*zW{bLg<H;lxl?J;+xd~6MvK{qGm|`
      zbRst>Em8&b5g4WixZ24lX`I;*n;}T~4RsZBwd-hWyxZq}N^2H$QvVCdlcmEJP>Wk5
      zXY7xMLKg2iSH9NQBMVeB;bLfN#;*U(DUP+avZh~=8e|m|NS{XKqD9->NaprK^s`S^
      z(1JVdCEOAL@Q}+oizWdMA-xYkFbe_lJ0g+_dt?R9TR_2Ke0QT)tTTl1dOI)A*S(He
      z*t-w1GI!(~)Y5CGsZLz7Qx}7V;8tsK@r}l<(<Q4-to*aJb$))M0blphtT`rvk18%v
      zM4S60bThtvbEEC%yCt+aUi_8D{`uKKw_G~TH$;?sLL|5lt$!L!0p5eks)eo2c)ctQ
      zH#=RK7#4nN22t%+R-6YXxRxyPw;pQ?<fj8IdIo>`Dspu@Xo}}L%33IONLCTdeoVXI
      z%s415IfxJV7<PM$&b*&BmDkmgg9|vey{dI4J0p(K^;@0Wr}Oc{<e|%Ev5kfU*kDOu
      z^zU-`qeB5O!+<DiIBdg!+v@n;`!{a>IonIJ3$(lBkf+pTpX1(EzV$x-F}j;`X?r}F
      zpn6757|RYF$9PoAw|ql%V=&SkD561m+$C#goE;;FtI}lr_k!N}6TH_?vE;0*6Vy>?
      zaDmp(u_-x14?+L|pzgrs&-S_BlHiI$`I1xO^WcuDb>Gzo!|nTRg`e$3Khm%mfQ??Q
      z-{+%nNhNE0dpP1g5q9{K9#w1;OxP@M_<rLxGyXuW(I@fsqp~^I+y{1y&)K(?+KNGU
      zck6~}KPGPBB23BG>h|th?jbAsUW+SF;{@sNJG|E8HzZQ)W8%Zgc`M!WY-Jw5beh7r
      z!$awB%4o&(*f>D8Y`cU_nP!@)4P|<RbyXTnM6RtKYH6!&?EMf@FVcM65~49B6>Qp_
      z=Sys+?X!+Rk$iDBJy{%yM9YlZ`BrHPgZtCXfJ<YM=L!S*h12=di;Q<@EQH0-APtLx
      z%iMQ#d^ID(RQPQvT7PhwJL0GwpaP?%Rnl(#b!W|Ob#-+;K%6NJORgye<x|9CPZ;7X
      zE!<!P76?|Q$e;yeO!tqoQG;1}x<#*$;bJY|*M&!^RCTM5ZJQipx~%03MxIeyBaCRy
      zGM4>pQ}f+aR$}+_f$ns*@6V{45hTDP1EHww7G5vT2ofL4#ozt0j;guo*FM^7PRbE=
      z8dTtxR1RAY0`=G)X*dh18aA=T5+x0`cODYRKY`XB@wrVFxf@A?!(K|j7bNJlFf>%L
      zJAqIx;kNk&^$Yp?khVyckwHRYl19*q8`R=-;@GEHQaAOc<b2I=m3K?$x1AESqWB!I
      z1zuo<FarCRoJYv&x{h>-rb`HI1RSgyowbZbvRR6Lx4_mdp(4U1sHG`A+3u@vxI_t3
      zgI%f~9&_l|d1*qCL_5ob?0x@k<|Dy}Y{tLJFSX;0)9jKGawETst41Q>qf>AdWan%(
      zGmj6QiG6mi7KW7@bA{Hg=UWydKx<vF=!Ywj=5b>$7e<fiWW#T_e=nrT4Lj>sk{=eF
      z!%}7KU_xP9UxST4YN%y!+qCqTf#ncH5Oo3cbTFj2jC1}}v?N$KpLWCwF#?2Xi$MTV
      z@_`Wma?)4A6GhqhN~t|r!o*ONsk_UhIXXNNE5&^3ba}*T8n3r)AJ&v7#`1b8LtE7n
      zrBXS09_u2ylvE4HjRxzROX056dT&HwhYDNbqd?E|oaWH{u%t0fx$yK*E&wR8u)hFP
      z0vsnP3Kk2-!fe6`1WJS{phSRW3QSDq&3ZyDU~{O#e2z4cR0r%#T0W1HEksT${+?-a
      zXT&}ZFVN#QdVM@ZKBi_z3KBkO&<@M9S$Ry~_0yiv2oD#HddM%k#|pXUd5V0d5|&(A
      za1q)=N3V6cgFnafyZ*~=*l4~vEx@H+f}e^?on1yxI;_tsehu!I#FZ-_8N=G)V6qOS
      zVnTk_Ve4T^K}bzek$WCctCPe0nLHxm*aBCqP$f4M4y#B(#v+@0$(c+dBOxb))NgWP
      zX0L`X>`!s;2BswKr#Q0_c86=(+ty*Xvf8pBnTi9m!-F>-O*wfCG`8ZcH!q1cZrjWe
      zS~}OSwR&kVzZ9$5r!ZO81an)_)6vq#ef8k~{<4+K6i=C6-l#OQ^%WjxJDQiM;zVEr
      z0w{8G@z={ChY>l!#Nc2I{l(26e1*BVsY9&}(#;5EfDsiF-jl}S3?&N55euS!YsFjx
      zeZGZ(i-N5J6V*GF-PHjK7^aHh8@ziEM6p;9F}-5mhL!nuJFmU9c&Jl74s8bEa;yFw
      zfnO{%tfu7&inS>EsH5TwBh8o9lo1l^WO%3<!Ur)lsjD!`7IOP9WY(U^5+R_zDn|Yl
      z8n=4c%XUg4sYix1D|0;oJw25P^90HtsP#(T(kfP=PMB!{@K(SyOc!^YG`0w6!@`${
      zVE+EzGB5q=G`32q55^Uf3=lfmJIz|%_`v*T=b2*myRi@A)TT%pI7wC3=VCau;iB6p
      zeHW5GIDJB#cL{z<2*34L9W!|w?S`m8Eh4WcHTe(2e5m+;4vj*@(Q}b1Nm9c7aWy2C
      z(97XIBjg~+Ak2d)TwnxDa1pTUnTkg11HV}0i@b9Fk^DZN@>lDVUCm6%Z)JR&1q8cC
      z-FNNQGm>?-vf_mL1ehE^1W<W<-&BiQ>U)D{ik}f*Q+3Uxu5j=uZ(NjvOmIWzkWO)S
      zDw0SbF{SseB3cPm7iMh9R<7y*rdY95I!+5`!s(Ahv64taL}P#hT8bK)K%xjd4iSUo
      zDaqyNrvNfQMsj&+lduwoIL@EDVSpl<R!5p{y&il2XD(cvNBA(GFwo`AC7h{7h~=Nd
      zP>m3UlEB!7s4HjA_C$%Yu+o*?#lu?|7-o1tF1{M`9<ZoXoEsn#P7606PTzmhlwMLy
      zO}qhKgO3Q_SI^jxc$~V4_jC#|M^YdAqlegp;k70L_4K2zjk>y0kyYUZ^KtixGKzD+
      z{Ujbm;DGyX>K!25{E$EyaF(x!Y8)4p-AMMco}E>e)pZ%z0}(q!nir=;3&X;(PrLwG
      z5+_w|kvIo^fv43}dBYJmtaA=AjA(4ag4fY=EkPJ`|1$#@jb<E#aiBppe}#yQs!eF9
      zL|X<FW$iCOT=qRGwrS`)2-kyIasTt-kJLf=0McDw0*l|kC|`S&aGG2ZgQ8dxIg6MP
      zQP-6ajBuTrjK|0n5Ipy?&`Ac&R6~2jx}?ShtH-Rq@?9II_*~{8XT1kAP~w91;+5k;
      z)cyS;A!@M%JiRr77H-cw=JQu}VUjwpE|Cdky((DcpJaFnhhSh>)ZV`;f1UbPlX?|B
      zLe2<~I{2!?l)@GeyLB#A1#|2wqX^F&$w-dCbt`3YNJWniSX<vOjd!~@&G&-~WbYH>
      zkZX(?X)KgQp`!TbBI;bzu|m_aFyxQIX33WqO7pg&+(xb@_zLPBq-J=OxPd?%1UuxZ
      zWz##c+OSoAx49#)<~%(R&GoHbm@gIh=XwK$@j|LQeyUv$&`2UdItcKElvH3TE&-3S
      z0SN#q>gOg-E2F$Dz%3}C<|B{B;R`*Yka(JhZ(-4!xao_U`(n|8Nk-_VxVpHgI0=rS
      z3=U+U|D&{%rk5NG6>>$`zJ-NbmXaY{65_yoTjsRDD#rF5pavo00YnEQOS(Ok&75U3
      zy7y#tM9(Rk7bx$AQ#MiA;_~oq%qdetW3VJuVoE4L+yH4J+@_eP&G#CqS6)P7*Y-16
      zlDSfN02qvg1mn9pdYne27*jozf+iKB1HT4@6TkH7#Pll_`E6Sg$q2PhdyD;0j?M@G
      z>9JI-rnP(u$hj|+e}u!1cM!{g-v>8hd?N;jz{fHEAugB~Ee>DBc(vk_?^R5-QFgbE
      zln!v)t`)58C*`$hSk9&Cr@4<)W2Yk2*Pw@kP=E}*dsf9gM#rONprktZ_kdZ%z#q-I
      zRVM~9^2(f2DA+7iJzVrSC$mIrL|B>AObJwvW4Jm<?XO$rD!4szykiI^)gX63{W72S
      zN5Q64)-${_`#PJ@rDMr!)m7kuftDKo<YU?6eZ*d-HP?6t!Mlnz*M<;UElQx_x6>*b
      zT1GtGOm+nWSi{X&zq6-@G<e&v=EA6>2wVW=_Op@S-t??;K&<&7^Kem5%jWRerkM$3
      zQZjQ+UthrfJQBZ}Bw_407?IF@FefAiNBMr-$8vY`lYjtPKFK$0%4E?}ld~zE-!%03
      z`-s&g55zRj777x6RDi?<?&h$IR`ZdWp<zY;8q+_q)gM*1dUP?EMkgBg;KJ3Ou6}In
      zO>AQZktB=wWl~XDsdW8xkToehP$`d?idyrx*r(!;J-~nFOjY_zzv_KCHL@n`8$5EJ
      zXjDMsGB<?zOkp_7<wBoO6!8U&-<=mNTbSZDWl9DSGRF=z96=yNsOaBvs#lk5fmG-5
      zlves<Uo%TZ`nA~KGRS6Ke(V#A!x-!6*NaY)XY^>mf%7HYtvkphtF#?3R`_sigain4
      zY_Mb=ZEIa~xsiQ)G(}@_BM^DjFxvlB)HY6bHHY{}*exP-bo<ONcDc*f0mNKAw8_>j
      zzkuAA?5R@G(%hF9ei=4jXq9Ti*5^Bl^n;rcE3Op@C(FquZ2w7Z8X!4T5&9xH`2_n$
      zWp*;-f0~-=#JMj;@CNySjss(|ch}iw<!JBERO*16bl#7c)y}NN2I!^OSlUN(zqv5*
      zjnGu;465eh+O_xEZ1&xs5Y%QZ7r_<kELYdX623c4AqsCvwVc$xQJ+nX{hX%@-`?aX
      zy^HdVSzlQ$ma_x`ZFL&dW(sVu+)dH9gK8BzX$CwjXnNM~NfErDV$=Pb0Po{(cQqV=
      zWGlCTJOAg-mIGWXRXI#eUbRFyT898}X}e##KN83*oDACQ{0~2V)T+%;*W+i7$WBhq
      zH|B4#nGSyDZP99Kyc3WTLOoD=xnqW$-VwK~vLk{16<hiCF)T{<1;n^lSR3hcf~?k#
      zV1iT&r9ptI6AP~&GB2pw@UXKJC3z7M-<9v^2k0sS@?4G^I~d!_4+RiQ(ho{XhqM=S
      zK4qi9ihrNfuS{dh+r|uo309H&^>h{KRPJn(UUxPr&m_=}fQM2(T9n0G>9WLQm&8=z
      zg$bRmS?x%YS@RabP82R9L}aoWxqpZJ{0MTJDny~fS5t|Ck*Yd!PPflUago^zsIYZq
      zzIIn{BHllBhWI?bWlO3;=e|$Yk9H_jY)RBgA4OV?qzqKvQQ~%f%&g5wbv{>I^>#tG
      zWbX|B(iaUv1_Bhkw-Vuh=j-w6%nj<|{+Kr#Gq{B`N&u}fNzli<3(03}HC!zFk~z(M
      z1*^Ai^#3q8tPgx<xj`>~^IL@mI%y5mbQuQQq+$U?zc$`=`3zs^e*S!P=u4!ONoAvG
      zY(vdLI$-nB{9Zm%5Y3r_v4SECc~r!$9z=`1fRh)A{4hOf=W8M>@7g>)gc>RYDF|5;
      zwPcb5_L)tH`CtToB&4uMYPiRcEakSBHjL)ZfaRR(?vJH@!=n|#+`lbyw`wkC=+DDG
      zOltrl({RMeh=!87wjU>abA4>=f16*)6Y}GLci1yByTZI;r`@Jg!A^n21NsI=BqvI}
      zX)0;=cAF$li4!J_tU7s;MRj2;(WY}Sn$C0mpSXE1AAg}<qX_~2dqDzZC6y#<Kqevo
      E0Y8EBApigX
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/nc.png b/bower_components/select2/docs/vendor/images/flags/nc.png
      deleted file mode 100755
      index 9555820d8fbc35640c1284a72d4ad888b0fd1729..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 3995
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/nd.png b/bower_components/select2/docs/vendor/images/flags/nd.png
      deleted file mode 100755
      index 87e401cf7c5493ccd021ef44433f54ff12881db1..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 11795
      zcmV+uF6_~XP)<h;3K|Lk000e1NJLTq005Q%003kN0ssI2>p5Ph00009a7bBm000XU
      z000XU0RWnu7ytku07*naRCt{2op+oZ#hLe?s?O7sXEx`&(n_n0A`+57mOx}ow2e)4
      zIBXxj^V!B=Y-4c1iQqFwFh@9p3<eGml0ZTdDDG+%SG!uRHt+1r?BtoA&Ry>xD}+D+
      z0Sc>o`Tn(^>FV0*{&iJ7&r?rVBN%%>e8JfaKGO~Og3rqr5}x&ZA>moi7ZRTJd?Ddk
      z&leJ&_52@~@RC_QG-aLXR-9V?FH4y3%`Q2oe_rFznQq9b<t&zPRzt9{GK!8};L5q(
      z6RV?F&FiW!O&qHXM&za??Wdx7r;W2%LYA@axO~so7Ik<X>XAn$*9<S1IEWD$R}uTc
      zmv<gHoFW8c$`Wrr@Ya~J1ck|IY4Rz7f}DkCx(%O^MN<bFtD@z3nMpN~u7E3+<_;Yy
      z&dEG*OOs(@pHp?(^df&&*68h>{zC;g#{8Gd_uTunZ5R`VA}g9oRGm5#7jY6eTP0*^
      z>l=&riM-);s9uM<aLS<1sqX3V8YV9AW`A_ujya9N;e_CIstj!*1Tz~#fvDKt=f;@K
      z9v6D#jtvVY1~4WJZ2_P)I|^fI{!CxfXXI>^u*ff6b6%H2&;h{4nKWfh9~+)h8|e?*
      zubF>f;pD-T#5zTdXHA;6C`?4&XsnF2^?AN?*`7Nt-&5d~ErJ+|m?owvYbYx2?DC!I
      zYx<0gY6-8Mf50RtBeRD2@i}|exZwGd2U*&}7#PYDIMXn2Nv<@jAvCT$ZWr`amMzVd
      zEDO;T;TX%ZkW17qm@+WAI?A&q!i2&EA%YM>h_E#I-;L!*HozrnSD)9_G2lM30iy@{
      zOgG?o^n~m`x^72GVh1AP&I7((2fRZukq`iY#)=q)3B#B?CYnxhj7edF5y|(;S(R2a
      zx*|WV8F-`%0szK@5OCTwKmY`QAPN(cAWR6ykowYu*P)KgrXp{Y=clIBL?%{8Csak(
      z?krHWQ9VtLY6%C1?HG|Fzf_u+K7aC{VW4Q5-_z~c(dl0}WzZr>U`&f3R?rO-^Q;K~
      z7!#T@5rC{wNr}yMD;OQLHW2~<AOHvfLc}5n17T?s0TlS83#JT+yfL#ORGORiIaP+X
      z2!TX~>kr${;2k&-Mzw_TG{-U~$C!W!A>g!YZiiM?n7nLGk7Xg6vH$@~o4SE{*1(8Z
      z1SK<UU)bIkwht$SK-A{3Ya(yZwB@lY<@xE7T*>cL(1;5`fDlAs3lI<s-G9qg%R;(|
      z5CV*dVPf6Hgg_uFp6T2035;q96^)9g_<T>CV@ye*4FmJ6!7>&C;8{~Qut^YwNkU;Z
      zw&rc?$l21C+Z%G2)-m0Ej7dpOX2#g?+{U39V?sWsGSW3MA_M^daF`GRhKVsE9Ajck
      z`omvH_&G2wq#4+5(=%B{;7mf0VPP9(0s)K($C{mk&i`3mv!baak~|@oz_L(p$k7{e
      zy!dXF+pc|STK`Q;+UtrF2mv90F+o5~3j+Yc00c4$Gx$X>{G1F7ivnx7?W&^E6ebvx
      zjLdM1**WNX<kg0iO(n<aa{w@+%~45Y*caceTDG=w>5RTRuGmvslthRSf@sR3Da*7_
      zASx;<mCmxK<ibuKqtsT$h%mI}u<4N$j{s;)?1Ij7Mn+}?&Uj*Z{Z&7|VELBPkLj1=
      zR6bV8Z434bta<p4=%b1gf?nTLcJWUZ|K^1W8JPiqk%2TNv4p@tL_F3LFnU0vA%kuH
      z#K4ks`b+cDsVwVvDyD@*-f-G9jy3JPPEmwo4$9CQvj5v(XKroJJ+hKwZ}y?DHwWUv
      zy)QLJ(i{NXIJfKZ+qOKjzT%Fjr^y;cVRHWXp>ykpfA){YqxRiN)sg#e*;-YQVi{9X
      zm}Hi<Ea(qAWR*%~*-%`dFtIEoYm}nVNs0ZR)zzo;wwxfNVjz8YM`2Q8AOFERiy)pc
      z0RhLD2mykF4){p1J>A~h{xEkia`eebH!(w5JY(q}xZ&@$=bnGxLINOb6abhOx@_ve
      zwX=G5_PSr%QhLyUIgIU{{_E~L|KU5{pWP6&afV?cgrKq@MF?b7TGc5+fM?C5#QtMl
      z)hN*qMoBLmVQg9aZ$Dh?aj2$=Mgp4@wg?~u1R*#Oa9(%c`JuRQsC+|la%yEXkPzP9
      zRWR~Pj#C*<9n-Es0EM1xO+k8NM~-G-3X`8)wg)4)@0D?fcS?s%|MPb?%orQCEHEr=
      zSx7gqW?+mUt5R8oetTQ-U;ekjI_?~NIvGU)wn$3Y(doZ%dOuAQ3R@H=Bl-bA|FHe5
      z4=gy`MMDTKnL6<B*P9a(yKZmZhz42p69$#E!t@N=M+#TvW$wJNy(T~P{=VGEVXGXP
      zPOaHqG_g8b<j(?tMG%DvMqn67H>p+IN}gF&r)Z;M^crClNeBQ#F>!CNXUViafin>r
      z38R2v;#(e^*WTy(SmEtG-nK#4qpRxlj|MO?BBlOp@-RzsOi?nKWv!2noUshIa#!JN
      z&BdJ|$H!{c463CgXYsUtm#EXUWtzyeuwkLsHkLoRyneLVsH00l0O$)jIs>jH=ky<1
      zhJEz4hL_h@9xCAAb<H>!v}_N!J~pMXwDq;Q-H&{u$s}l7mk$8GGN=2=+c%56*>u47
      zv1oN#VG<wcF?UQjk!2am8mT-fv8gOOZ(_i*@QC(rZ7qFb`Iw|My7Yrl=u{AZRn5gW
      zKX~3qaJhTP`OrVdj~v2?e1A#%>pxtV@0Jfg#m*aEyH;0_0szgxtpl#^usxnRc&~>N
      z!kgQRHtqM17&SM{>HhguyK+9d&_BK;@yD-jYx>n&him-WhVpeg3utWdtoho;ia)&6
      z7)x<5`WSV+aD?8FV{fl__PF5hUYyX{;~n`CV_4J}Jf|w!+~w;T{xJG%=k@ImEN>`D
      zzSdk~SU8s9o_oKdb-+Dxv^#8HzN4r=Y8x?kzj^-t>*w^e4!GI}U59E2r+9(2UTrD~
      zB?ak&36&5u6cewR-}T%(H4nZxA*(W{>*_xpqsSsXl35MGZToXn6#+s32M5eDztsCt
      zzoMZy`IR}{J9<5<b```wX`n+0&KnbYcW)j5l=!lNxPTBCCc=nV1Pa91G<UQX6gPlE
      zpa)wOQ<L|-Hg7aL_@i1vjzpdsv!$v)OZ4J>Y3B;2@SUM@oqRZ&Aq0NAI-KS>#?lOQ
      zq^oxvymsyRf7yTluKLrt8HJvfGx+nuw)v3^KgNQs40IiwZeN>VT{gJ%<0tD0VBDYk
      z`c4j`Y9JkX)DZyCNTaYNP}wKSyUJapx`&!RY}_zs=xY0c5YBdFd=^mE`RPZ#(LB3u
      zcvFWztuTkW=?UTx^l>H0{-~`h$bL6>`;#Rd^|DT1q(K&en^=9A@B|sCMkme1)c&*=
      zfeC~FLi2JD%pcRcBUo|@?!aeZ6!|v{QolKA<I}q)-d=d%woFhOqXt!r336%0;B{c8
      z=rBmt`K%XX{cFoYH$@tC!%ZQA(ZRKaPfIw--@R;tlS)0Gx8>YY1q1>NG2daA$L%lU
      z+?GPOj_~iRHlIVtA9I@L7xylSXPGD!z*ey+&1#zmmI8QGWK4~sUT6_C2X#GD*7oHs
      zx-Wtc%!*ZWSXM|F>Ei;^I|0=s(|!>U0~KZZ_3YrPH23>=CvD!J6FYqVBNhPpcrg3u
      zkXfGY6}j6Q#%SOq)(Y-TRk$iK@uA^~JJWe##g*3hdr)`bPS)ST&j@RYiOIV4e0c;V
      z?M9+Hx-D1(XjItqqea3TuK%HP-iai=-83~jZbnPgl7wJn5VlaaM|-Si`nGi0-;{zZ
      ziO-f)+6AH)F4rQ>$l4PxI8;f!Yug{LTX*A}RzE-F_Z2UgRumZyB^CO}F_s4PUrRPW
      zHU5CxKrlpwLijeS;_jj8VfjNd)gnYF-BnqnY1O(^tmkwK+q~3rKeLSS{%!vh6WLDF
      zt@$KIkvZdF5;x{|mh0&imhau+x>9@iQn9bp)L+o^w<hX8C`D#?_r1vOE1hY;5KblG
      zl5o|!XyeGS%WB@JFHsl@Zo5eO&)4j?{@b#=yn<i+{_ns0d#?!}4tnFgfrt2(d2I+e
      z37n&^iP&$7PU=nhk7yBaSUE4hx6YEIn0har+n>%QpK``M4U8fQPn<&A@P8L>KEGNA
      zzZKt$zS>{$=I~?y080aeftdOHfk(d4ENLF!n7hV|8S~b=yZ-f0I}H=hE*!iO_uUXo
      z3Ly*t!<EK8uF@w14Z1l>eZCXntdtM{Sd{%u<@?|DOV~lo4(gZ4^Q*pd48nsJsdep{
      z#O}M!<rSC4Hw|BzNRyjxx+xe*`JTOV!aEd_ktLG-h58eM@A1gEr1tU9>siOyDj@(M
      zFm5es{!?i{zz9ULs+Ie8b_PZCd+d9z?Noq)r^XF*`RFTdex3lv7<;Y2_Mbf148Aq0
      zdwZ-%htZxCbApT(bLKOFx221hOWbr<IKPLg+CkmQ_FX<@e;uXlpsnlJl0i;PMEbn8
      z_?IsE*7oh&_jH9*jpyI9Qtwv^EEsjs>d(w5@(Vv3+vAn9Tk^h@zw0ZtL4%+-It!jp
      z7am9!5z5BKhJW$ZDVfx6RaO0d|B@w3IyyQkb2fAwW8MGbSPE~1ZAj5ff@xkRtd5*O
      zkGj4)iU(3+0nvbrtd0``7%2WYA(#(x)jm>SUR~;yCx5tm_ij-Xv)QbsX>Y9F@u%0+
      zPYC4@!<}9)%6n;01%~m7qNHglMe&NFfrMehY4T+eC^Q)VXjtkQb-j?%V>viz)4JU_
      z6^akL1ui9L847Hy4Q$1&FoQ5he+B8N=KiL=Sy`6n&YhdhW@(yErBcNurGI(#2@M@5
      z!fA=oH!HXym){XgTBTlZMpfh4Y@y4A5pqzbEcbeuVS7e$xyyRZ@(5iG)R|1$A1!ks
      zBAQ!m&Cjl_MLRuKe=0eEh*sfq7q}cg(bgM{QW$76RZ8^-bPq7DPp%OF08EQaD3x<_
      z{Dxr+3=9B3JRW;{?bf*BJjNNsn_gGT_5vZD;jl{(BuxW=5|1aVs@>73-)=WdlcA^*
      zk4M0oABOmJGtpu?<+ZSIj5<#(qd-Dpc;uEUZH?FL5|BKYNbn3(=ytO--5-k~g!*GK
      zuP6@0;}k+R2IrE#keLI_u{8Kd)#Hn$#!7)@8C};+({#C9wY9Yq>T;idqt$|=_<~|~
      zS2gUQFdj%G3S2I)C`Kj8#<DR<k~FO<Cnv2aUb~&bm_kTk7>qGPVZn?{as(+e9kbj7
      zpKe3x3`>aQzAAZn5$<D<$xswcQ3Wm+Ls7%&v|*Y)hhrcfCjcVHxdkDdPE#0j6cnKT
      zi0QNFPw0zf^p*$yZD~$U4$t!*k7v!AH55g?{`%{hD)sjF2a+F;kYT02QhD2L6Oyv*
      zve`7lAcW*Oon4WLPZW8E!3enoK{X74VY(v`nxa^m9!e(b^715A$zf7sg@KH!rjQrV
      z>3g5;%t>ged~9_c*^)0(4xaajVoFg&memY{r)iHU0zfF8=4raj=j)Hf>^xuWcE=<s
      zF3V1ihIE?(qQxF1Cl~+#NR7Mq&p*4atgMWtX<gTwnwq9enUYSY$BrFaTU%>ql;s<P
      za9EGw^&wB})mp!EIGwftFn~)C6vK$5)A=r!M-(ZHBa%c2Ny;)!QFe~A^SrF<6@I^F
      znie5$LC7dlF&izygF%His1qISKPP8KLSE}{Fy78Z0k<F|ve~Sr4JDI}MMc3>ilyna
      zsuBQ2*Zp>TzRNWbk9$N>*0i*$*5~KPBq^<`^|?Mh*=m`F#uOa!$dj5p<<`q;Vv!&r
      zq`A5I$}6voMxzL!EnBuElgU}LX1ScUHLF)fl!KNLooXq`t{9W+PAST8CX-{g$0SL&
      zER2xHX0r&1XS4Ba)+dTyQFPmEre(1dg%ILtTG924s=918)i4Ml4vr&6rivXf)p!Es
      z0y^cPyVEWqG41IMh4R{JugxI{Nm=F?CeP_~2|_%ZO)HAXacM<y@O*{eFR*MVl`>2-
      zA<Hg7$f#;CnLMYWA}PzkWD+5m;MF1BmeeW2x(^A7^w>mq^WsJGOG`^V9#3UuWp{UX
      zG#X`DcFvqR6h*!9#v7dnx?fzIB(w_vnDowi*uqnYW0*uX>lB1YCR6V7F%+elCILt(
      ziq~eV%gfU(OEV19vN(oeD9W%b%`h+kL(`UJsfNL`tYKM(X$lNeY1jN#_mILF^r>Cn
      zKdllXBjt>|RL2J<6c@#_+0Jmd)a#`%)(s<>&E~mW3`IFOj>dR6lL@6#!<h^K*jP5-
      z>CACBBux`JZs)*2b#AU<nucYCQmHDRt<DyfhSpUI$!xOAY4%l!o5vO<QsE|FPVo!N
      zUV7?@M_Ijf*QTct?Y22`o0^*LzyJQ-&2QBfYk_nj8(BHs-fftMo#UdClu=a#U}M>M
      zHtV<BL+Ny--|rJegit)2<!IW@^CJzGb)7;;U|Ew808kBMWRY^@^sKH+s#@ga>x5t=
      zD`#-tr%ft2aZaOza$iB>pN)RH+~?ce)kR@k=yn^HC8;VqGWj6{gxGmLqpF%=*m=G-
      zFHbd$P%4#_Wsas<nkIx$7)zQ)VO-#HWmHvCRmCvu4EC{Fty2f3$D5P8JNbBPZ%I#Q
      zyN%9z+<6;!=j{qC#pzd_+RG%pbzBuUZDK>Qvyb%l8rgoIT};VxN>y2mt8#OBh9QKA
      z9H$zF*KSW_vo?lt3W9^@WnE7xif$MtAx@rWC~D+M(t&aDtlMUz5K1cw0myecoq`Za
      zrximV?^60DO2*z(bYD+TbcV2*T}8_J@%cHLX|@G}WnM3Zv0D&=sg#XnU4o#SCdN3U
      zC^1Rm8Kx>HCz8nwBoa1;;TeXeC<M?GjdBd*wb>M1H!TYxG@Qu*A^A>cD4q7(?cI^c
      z<Z*P5_8V-Qb<}1UYS1)OEMMM`_d<5?S&;nu!(l=Q&$3RAv-5mLQJjJhOr>({cABCT
      zU8gVx016@9G*uA%BIja}$Z;zN7=_L&W`-GLHml<?rb_9dGA7_-l<mVtjHzqj`zsw5
      zP2pfNxhY*17iXWMn|m50B>8IdLjMqr(f&|~rl=f;V??KfEIT-kXBa2XYo@s`81#!`
      zp3|wBW?wu`2oYHpV_f8RrxhibO0g8>5`^|(kfA7sqH^r^jHbDGK9o*Ns>(A=T2GG|
      zKeaRa`{SoX5KI43)$ME71_(hZSuS$BIfe<PQiPCPhePBz07zuBE<r#D8K!At*`ZWA
      z$KlwUa`X!4Ge(pn83nrxChy3q!IXd!0MP&ztM*mUef73zB&%$|SDzwJ;}i$jh*hjN
      zU62=vXBA0R8wv{tlSx_AY%H6QWgvv5X}8VR7mKB2c}zh8N7I2s!YK$vZnvbWe!HD#
      zn4V}fttcYPs)o@Ujn?Gm#<E$TC=MkOJj;&sW1lDnQ>leB_?E#ui<U8UykInC?qsc?
      zi?<O%3Z2eyCIbKh!`N6BBQ!Erdu%q<Fj$(F4a;uh5slwc7XwQGb2?k7AFFDFfj;zx
      z2G+RpeNetn))7%oou_yz=R#tXtMAUwO%5d!Jj3t|(;bP3EK3N<YMQ_>`A#PQgp$d8
      zr_&>fZAtFkXi-43Crx`GnX32Of|5Rzh?RKU2*4=_2qBEIPZS9NAw=Z)jG}l%QPuUN
      zEay5Mg|_SrG>F}A7+NBh7AVGtj@BKgmOOW$y*rt)M2<@-3PVvgmZd2Q00<$5Wib?m
      z0s1A#v9UbEye=&a&<#L|Kz*i^HADeEg_-=Pa3C#F*3R)K_lJiY3i1MJMbo4*ueUdz
      zq`<1o$%#qX4#}x!gI<TTPxS?$icq!>^J^^)>2X3k#_B5!%B{)6)h?<fQ$T?BF`1N<
      zn3Hd5h5-OHMa3n_D~fsf`ow{(Y!wX68dtJ=ZFmCJ6G)`Ae4CiVF-X_tbVj1E>X2eJ
      zjcDa6fyUS{O_pJF)1(k000<zig3rdc$92(J-f!e9bOF-iL>Mh8qetbGNoZ-+>f1x8
      zrWD%JI4@}UrwhA!wA=uxsHa+!mOTXJCRYH&0))ZHqQrWpOw;1CfjvqZ5?Cq#eE2Mz
      z5~T*cbXwP?S}q(_3?69<rlv1k@7RC+h3LI)`L)${hI!Y8XFtED>7uDc?>5QTUX=UP
      z8_tJ*I=t*B{|p<MxF~6clVcD<79jv2a$HxMN<eOaorZ`>=#Rg#HflL#b0KCsg^K{7
      z4Qc=ou&@EDfI|S#21OqhLljCZCv25CdjJUr9(Y$7z8ugIt@_wNM2V)YY8U`m*a`r4
      z086V&KaCCK9ABUN?27a^uix{_hsS^WD-$T2GHJ@VHT$~CDs$`V_Gk94cNA}Hb%UwK
      z=?cikRlWjSDn`JiB9g6P#CsdXFHjtX)39EMj`-uFhrQ*FbJigqgMqm*F>P?8#mznJ
      zxCMlKvMpdrURvs@tY!mYjio7v-Q#fN_6-jfcya^LWMz?OFuGG88fe@9?Doqo{(}HF
      zR{;PPfCXT%`Jd}5&m5;cz@{fb9R$PzVn)Ilg!oA+L2)7Mp!q2-jDl)!)rYz6awp^M
      zw6x;mR7qv_%%s-1{i^M}x%|7WMtLCz*yC|iO?&hi<J~R$<Z~yt?%vGK*#G3~uB?>N
      zu=6t-CZm$mo;ScaX~%$L!t-Ly3vBK-FeLz_CC@XpO18nFwPz?VVLcl_i-6n>0En{q
      zx^}QMP(w$p4{4DJc<XQ~+1f_w@zsvK-Qt(drPnnD^F4(F(O_Agy=!p!P_uJx>#zSF
      zFQDZM{DbF^<yeoL-pf9PoL&i)A<#mG+K}Ed%Z$pxm~HMQFWJVuhe$lTcYf+c1PH(a
      zuBs1F1f@4H{5!<JRycvuo4EY-N3GJ9X;M^)p(q}U`#QoM`59k*jbnd*LRSrn0?TY4
      zAIs0#@~cM^9y%8QhSO=v%5u`)Ptj~k`Q$QZj?+AlVwBy$<?i6B0I_j84_gTh<N#ma
      zMPyAKnnsdwFd}q52Lz1F1fgPsZDx`#K$z-dN_DN<57bAa{=~?U))qSj!?IF}5(-fz
      zv-O?p4vdWxS4m-atZk^U>A8-frmbS0-Rra4<C2tCRn0UrmQ59EkK0tj>!AwRQ?9HX
      zN+p5I2RuqMzE7`&m<8RW^H@4p;m7HepTRcFREbth6(*!<ez$s{P#><qR+nvtcEkF1
      znzzC^x;d<YNw|qlA}L1VqZ{@Z$ueuVWtozuaSX%IbayYQuN~YFGx_=h+o<3Z%VK)g
      z!BBKsQIfJOvMfVUvaToS3XLm0dLy%aIJ&+{UNxO*s%QJhyA(zZ45^&SA8$TBgPeAA
      zhV_~e6X}Ecfe2=ax+{fUjMgUUy<n*xEXZa+(YskpM>}gsxSlhkx|K1gTn_P+8KL!9
      z{o$1f%D!T1NH@)LpD(Q_nqkPQ5swROLHuuT1UK%?*5u?>=H!@`C8?@c6m`=Cgan4^
      zBn`kGb?JbhY}aDPZbgaDF0h$|^r!V+#UAFT5&A^3b<O~%JqZy}V5?D+H2_3eYk--_
      z_8_3`fT)9BhYP?3**z<a{M`%<#*o5}b%0?Z1|yyq6HRlB^h)>ik(69Ivp2)4g>Lsy
      zGU*k?k%fg=N>UZ~l%j&DBuT2;ACLP)vE1kDjz(#O>^#3SBtco(5iKK>+*=~ADL{b=
      zQ3$8ekfawo*!>y4({YVOkKWDK&tM)Y0?YvZ=vyg98nifoYEhGcOJ~bxQMEGZdz;9X
      z8BxusWy*nl>Ak=ef}<YP;XGDS4L!dkg%k4LZrSB<#xog3(-Ohp*up{tz))14!x7JB
      z5zjj~F5l@q5E*83W-5pBA&3Q*0&1v8-f%@hShHJEh1n30L<ai>dd(1QX1`2Ev3@X0
      zvbm8NW{dZM)GAD&u${s#M%|Ov`&3hA_2=F}``hfReuk29J>-=;&jmoh7XnxiUR5M?
      z-nhuL+nLSn{J6<i%$_sv<(FTcK7IPil`Fko@0R!8;|Q?;(&@BF(*nzGpF20VW0NtU
      z3GOmGD~TwGjF_sLi)PwqGzu>+Pi@?kEw(cz!Nk$vfW!uJzC;(E>D%)Oi~<SOFa>MG
      zxr8avsC<qnmVO`u6sC)KD{X+wna<9j^kKUFeWP1ex~m}XVjvbWlH;83EuGZc(&Jk*
      zut-R}d%>LA3of`I7K@dam#eB84u}1Ie_vnUm@#8kuU?&#m-pMEBIEYkz0W^Z{hK?d
      zHV9>fOj!XFO_-smk>{fa!^V~8J8r#SYe_8y#tn=UObL#=Xf;Y01qu0Ft_jzs)^^yZ
      zt)W61b~p{GP-*p>!+dV&4O?MpT-k3c4bCf7%W9$5(QcAX3R&&lN`;esW2<ksaRY4)
      z-}@goH8hM3hr@gJ>`A3kS6p#LdwaXhX45on@7}#On{887m3i^S&S(BM=apy58QZ`%
      zeP%*@vnieBtj0RNKd7HOS^V?!u^x3k*gmjS&j$VAjHd!0#K=&_dQ+b&x6M)xOw<DP
      zmR^j2uaYDC@K|DR{N9xHBx5KVsV-rYX(QJ|UA@R@Sm3f5yN4<+p5?ml?(ZfNiI$d@
      zYp%H_l}fd@x7XFx4GauibkRkDK)~bm?pgWL+$VlJd&8S0*~CEFaB<W?Mz<SyIBI_V
      zdiOxcP&CpVq?#fN&$`&#=#UVzgdJz;xj^wB=1fq0$T=SP0>Er4xW~>&#d%E6p#IxC
      z^K}Ehzh2w_rNUrRPYsYC-Ev8Pf8RiVZ)s_1G#U*A0!x=J-Mo48f&~k9@7`TeQTfw{
      zH)Y#*P2ds&h5OQaotLu+gtJC_T$L~xmhq})X4Al=wF8Sz{B4cV!zdU?j{`A44I^3}
      zJ4VFWsA-Y1Lgv~Z4YW=4DjgY{3EC|c%s~7ne^`}F#0FcQeCnyE>+5TmF6VEk?f?J{
      zxk*GpR9(7q<;rh=``f?!!=vZUnsWbN*9GK~e9AX0hicqhp`D4y#*kzb+Sx7Iq&Qo;
      zrKJF97o_26FIk)tW>iN~GP8HkC2~eqr9bD|*68SkM}xw9xZF*`qy%>8?d`cPD!u3&
      zil#^+Wk%Z7Yi5dRJDn{O>{p1%fk3*e{*RBZSpI(B((`J5_t!T|3q376JAVF5==ryL
      z`jT!yIKx$8X@4Fo_og(R;9;ufAM&DvFiFGylfDCx$Qk2Gl2y4`S);Na-F!CBrL6ne
      z+kv=kd}+eQ85d6(+;YHgeVTp8j^yN6q!^KzwUM~Q_702ECvDApqNrhDeTS_S5^N*|
      zt+l359mtet4RK;&XHy>|UNP*tfeC*<C=Xl=lp9PHD2}p{Ch#BEh8X4Hhl_G5wp%l@
      z^hsVF#E959v)G$0&&fRe^_CS|r&|Qg7_;w{7Wcy|>JHtLrIQDjP8u{U^l#5i{;ylN
      zyxLUq&!*3t)o~Ieync4i^y(<j7#W4Rc*?+}A6<C3if)^B*X4UIo;+yd%>6@-$5z*@
      zZq2L8&GbcWnoh+&{|>E|W~+bOz9^l3DW(q0vgirN&6_4CE32BO2u4IRaDiK1I6nBR
      zt9Paq`sXh-KKm~l_61xoZYm2UIn%;fmHNR&ZB1Rir`A@r4Z0MKD$mVyhwT7x&y~A>
      z@$&f3-;$FskoHEz?=9YU?L%`WmB%HOF)h>{Z~=f@)E>BQ$6c4TnigscxO#@gnYEE`
      z%sWt#D;)?qUj4zkYiIRJDw9^2+ZOJB;<l~x#)MM}({;o)%bx(E^hl+&JmkDsq4)z@
      zx9jNHHy@P#T$c&}05;aRYj)dT=WP4_jE)#$##bg<2i&Sb%^fp*<@CN4I|?s-a2@~@
      zdFAT-%)TM#Gw)X(2-+X|dh^0@p?_>H8`*BNDlfC3A@tUclMpvJIRojl-`V(`r>3P9
      zdU|!VrQ2(m=!x66%&Hl_<LRl5rHSX>uefN^;L2SEvPLax4F3DYdu5g4S@W(JC;sS?
      z*7K@E@CpyhIY=O=H@D3ee%jiwYEQwZ-GZLBwcBTI%Pdz6=0?D$%1j$ul>Ga&Esf9X
      zAR_<(k-%4F^Ahbh%g6rs($;NV-V1-d01*7)tK05g)|iqRRi{SAB&SV(<<50km2Mqy
      z3#?IJn7Zxp>Afeoal>&rIp)mHUeBLz+}0U#ZtM1$7Ao*4-&?Zp(g)9L>GrmC`>vec
      zx2SO_kzxP+;<lf^JpQ@&D{2eUbL)p&x;=MH?u2{ou!4g$0v*8+E^M~0&+nhTIM|kP
      z2I8OM)n`lhE1l(BWzb9tfKL8~KnRhW=XEX1YcBgA0PTavOGnVm;O+FeHw}hlVezjQ
      z490CvL3awqg_8nPD`Gd!>s~M}_}2C!Rj1bN&3owU+x!mof!7*-|K`|O=Hw)op0og4
      zu2Z@Diam=b1QeaJ^ZJ+nG`G3S3jjF|b-}n`nP0kS^57GztDoCYF|skme_Yyn-&MQl
      z+wIVISZb5N!w+wU7neh4x4Bq*p)Bv-wd0Q5!T$79<jp>ONz3K$MPbV^JdfX{FJCk3
      z)uxg;^}`DrhJN+Rc*8pQqSGZ)`{$1hfB%^&0PxD4>o;`dJov_#li0SC=2S>3{nn1c
      z&XD6@FKmBwRo!#%R{+4Y%IMeTb**X5U(=fZ`nKX})zPJs2H)MA4*;7wa$JHwvpWs3
      zL%uu(5B&rdOozpD;OW=!KHS(Q-!l7vcapqqz$>4jPeUMpugvLwdHUw5|E<FQW3+)M
      z+ZPExetDuv@I6=T`SA;r2tfsI#Uw~K@xFko*qb#84kh`kXY>V={QLWk^>XrO;UwqI
      zbOs$6g??ju5dh3@2+bQCzI)k()&W;aW&&~HPs{6NjXJkJ3;-5E|NcLd9-UVJH6{Q6
      zMsUx!pdbgH{a@%BfSNLR?GfNSwwJgcEDLnbS@qLJtzNr!a$Ea}j4w&7xMl6LiJf_W
      zq(OB6cXaz%xk|tJ`RR&I<v5hSh)px_@4nK~|CfLEJ@TsGp#s4A_Pnu02>@VeGkLN<
      zb8(U-<QWqH24Xe<m{1mfbX6??%&7~n{PCI_=JWu-f4)=umD$}Rg)M@<``VOW&MY_2
      z)q!I{%EHZeLuE0<lkoKYuxTg!@MhTd4|w!<?yXh7T+!1u;hmq(Z}r*LWB&V-N0B%C
      z$d{Y9)~#Liumo#a;CcApM`6W(!Oy+}4TmLvAjmE@t`ASy-s1s)izWp+f=)YUxCDJL
      zW>a;n85jT>OXKU?b16)C#{BPfmB;$0pN*3&VN7D<66+Fl0AMJ~FcAP;J)>_?<IpqT
      z-gw#6fmnuh+qD~J_l%Uc2)bwa_)FMneb=b)Ur#_J4x$adycpIs0}v?AgDbuV9X;^q
      z-H@bmH+X*eW^Zrhs=v%>nNu^&($>jsJOJ2vV@YG+*~MEr>)-y)Ga>#37OLvunk67B
      z5Q)Qme}$P7;2(d4|9${i25cmJleIWAV@-QrePL?;*wC-9-)>_K!$Mh&n)n|Vmfvw%
      zR;3q=3lai@G27w^f!+P??8*MP^GOb{rDdinFH_>nu5Zs}X)DL64aRI6_viQ>N-!xT
      zWoA=H&it{Vo97?MYV?%K7$Fc$2>U~h=Y~pMmr9e$68JA0p`#BTTL$-i5B~TJwCn}H
      z2WrY-eKV|i3eKIu_R-T`-SrKs_r?i56YAq)zMhcTl>E8ko4HQq%5(bf8r%M7_nuqZ
      z1C1LLx}AcmN_gN-xL_vyeK|xEVB_Jw@4>69;pV$x#rsg1Y5OL1;p#cTr0~vNt9v8%
      z+s@xVu`C{!xR<w<#w6|!Uu{`DA#m}Oft|gc<vWU;f`0$CJHPYPH2q|MU;X4S`Bvwp
      zpZw<LTOOOSKj^r5{(+Wm&yF51%b1Vfy5*<KCIsR_`|n?`%FDd4vFxrFC%$~=`hS0Z
      z@;kc^hP$R##vV9-=fd3y^fn8ZT?BXB09$v#ylHUr-Eh^HVBvJQ^=I(ZeenCI!EOVW
      z9p2dlgPo*W>CfewuzRQF+>>$ak2{7ELPlm(<Cr(g#u<4oWkOkeMtO9hFg$4>L%q*H
      z0E3N(*^>cd;2604eCX(fC39f$ZID$U-w&_<1?GPpkOW_oU(U<B^~vdRiLEV2J$d`)
      z>mQzT&lS5nf{sPwhqiS3fB)u~xWu9lUe74?Nl$-!)1A*u+0lCnyq#0AYG3M;{(8&S
      zTOXeuhzpla88~ljm}AUUy9!=wF247w-B-`-U9%^DSD*W_cWUna@~(Gw=f8K@CnYf=
      z7c>U%nz46IYYH{zLBlxM-vg!v?>q&My$Dw>f<Oqq`E!s}xO5@>>U+?#7g}23^>q+S
      zz+ezW0zON2p|nUz0wr-c%Th9p4F&;2FeV~xdMV9o>h6q*`!IA+5XIoIgN+BngxCK9
      z!!e*K2n@sR_W~jC_%9$BfuH^f2ta)~6m%$G*M7XZ@!=J9NBxc^g~=7?^xru5Kt^G@
      z!*)PW<dJ#Scw}YW`nHp4h#ulpC0^7QCLjFD_6_@TUTG=`#03hIvBk+-=67!C^gsD-
      z)rkxybL+$3o!)U#e}sRB20kBVPlA_L!NYff#|bz55CGuL8=<xwzV&nPd*Hd>!W(Ph
      z;pd^O5T=cTf4&XY$i9dO7EA|=Kr#&-J&?%)02JjxK@K$UfvQsY=GE}4$Kch6;hsl;
      zrr^Hs!mJyBWnlGF@Vy71WiNPL@Z($Ir+<cOncOVD&v?J}<g`Oy6FLt0Zn+{yl2m#i
      zW{YJ`;jUh%%GqiUxGsHgUSnx|enY6tFR41-)$jh7zfC*wb&U1xx$E0=D|0hnySV#n
      zw*HE}uLH-xtE&%wz<_1o+6&?PzXk%}b-{!>=ncRn^I`U6s4Rh(RvoN`rr=LMhP6$Q
      z?}NH>xcs}&GYAjg1x2~=-TR@l53XMd4iWl-@ZL7?IKkzFDPtic15Jb50RRw7!e4#^
      zKa#tuxO-nY=kFWKj1!y8f(ap*I2{}7je_*2696M}ZhiQ=DZLk2;o>#}nrYDOaLIgF
      zwh{~j?z$Z&*27(YhK1ANC%3~7ehbT196XcfVDsPMOSeHd3a>o^udjvf0r=)M@X{){
      z^(t6$JFNK|bPs}QfU3hi55wfK@PltaA_XtJ1+TAyahiFtw!!26&(*d6+*+a?dvZO4
      zoE;J#f@jRBm9Y!Q2EN3HCk$n%W*T}as4fGZgWVl4cPc#o3z%^o#FGb45Cz!$0{qu9
      zu-o9atKr5U!w+u;O^0X#CXa>3{{eLskjlXQkHNJUK}R=i+6f$iaR!{D2glOOx{IG)
      zU%8{#`^9IsP6=MSc5Z!mrZ+lMPc-OhZ^T3q9)v>J*$;<2Muvtf&IhL*3=>+~AUF(H
      zFNVjKfu=)U1yq&7>W#o^kYhom3Dt&N1#LEQRa?PZI|?^;<QSvogT2S$ESB(aY^+i0
      z&rT?dkIP9`+cMRZR0&zHrb8S<8i9mBMqmIS02aVbz-vLC1^Jee1D%?<H{#ma=h@cf
      z-QMFFPV=L=&mGDC5ebiqQ_#zDq(YCJ>r_0V=HPXKGa1T~RJwOq>>0NA42uIX+fjXk
      zvxxu868?X}Xf(0D;8XF1gl9cpNO;!sg@k84{|_{1&ypAWSHJ)O002ovPDHLkV1l+I
      B<9h%A
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ne.png b/bower_components/select2/docs/vendor/images/flags/ne.png
      deleted file mode 100755
      index a69e15fc93c17a4a2a331fd7b85b9c1ac689a231..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 13899
      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
      TIF=0n41(mOm8GgAjD!CNld$p0
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/nh.png b/bower_components/select2/docs/vendor/images/flags/nh.png
      deleted file mode 100755
      index d6ad1cb689b353d40398fe922958e983bd43bde6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 12792
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/nj.png b/bower_components/select2/docs/vendor/images/flags/nj.png
      deleted file mode 100755
      index f2c646603bf4569104cdfaf22efca6823245d712..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7098
      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
      aKp<dt`e|6;nD$>72Pnv>N`IF$`TRc}x|=Wn
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/nm.png b/bower_components/select2/docs/vendor/images/flags/nm.png
      deleted file mode 100755
      index c2731811248dcc6e79f7711ec2f622e2e1b74418..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1523
      zcmbu9`#aMM0LH&@+~ziHE-NWgB9{!gjVH|*Vdg%WOQZ0VWRB}WG#ZaBhs>FYhn9rp
      zHgZeJ<>WGzNs`NQsktBI8jkb3-_G-V-uHc;_Ye4xF^)EpAQ%V$07<kh5_`D0hardx
      z9QM2kzVvX!?$~-o0D!pMe>n!w8HxZP#6%-6yGAn>8U10$ts$=``VvejF6Z8;t2l_F
      zzdUhehS=*qOBAxwh8CZ|Fjb9<lfhVZqzuh2=gLqzyi|TmP*dlGCNc}-!Ywj_&^yp{
      zX@&0U*8H&o-lQ@4L1>(d$@rz1w!zpN3x8}3tW}4hdZ&%S&v^Y(Nzr)Q)3N`D95)T0
      zr2%gMko{%iy;CtFV+gW_+U4#2ct2e>ylNR06t-b*@kczbe6OEU=KP~ys_3*WtywNy
      zNpEw&J&Ys#hOtWy5*gBf+#)rL4MBR6?nQ4@efQArBx6B)))8|H)%-OZr1K~ac7dLK
      zgX&OdsjAF;#l~Le&84`9=?epR(|R^n$tl|9BCrw^Fzc64ni8sLx2M9qph8aXbhH0Z
      zoYOugb{;8x6jZEOy<`tL@7ow6z<MGch2XjxM}^lBI7*>f1^+y~E>26M!(2-+<!ai?
      zEYaLPHe8~p<t2ph$<dDeDc`e0Wm0_=*BO|WZunhSd8N=3@LPvwmj(r#dkh<6<xDz^
      zkVXqejwAMq#ems67LoqR!IA5g5`FsuwW<XQ)H*Bv%DV>Yi^YKFa>DNh`IHFiU)u*0
      zKGW>Z-nWh3WtfYeA`!c+%wyCgPZ+-%13C+W%7>LdG>4CE?^{AMqRl_=jtHLjn<)j$
      zTjOc6#b4J@O;CX(%g|;j?)h+*PT|3760y;+=40HV&R{uPF>APV++<ca57$iF+49fq
      zg;$|G)+s|({>x{wLP^C%h(==^F8+laAI`rE*gi&kY>EKpOAW0Tvl}hI=7zZ}iPR9^
      z4c-j*oOCEYAdSpuA0kKdXdAa$vb>6CItF7yx}1Xahed$b`Rpq`?fJE)9K<JIVuK8R
      z>H))Q9>bbyMe8bm>yBJv#{_%Z$C~qoT_%1+CfS4gPH?>6o;Ld6S)#QweseoTRFiOR
      z?!3qS5kkEYUwTkoUsyJ&Tc8r&VO-iaiMkUYXF}rab^NL~8px>70l}yuhM_xaPbCxq
      z<IOLOxLZGclY?sxx|9*n$`OZY2&|RTXt_L)+Nc1z3NdizrnfDV3;Vbg_?KhOrjy~8
      zuH`i-_c}!6&mlAPnJ~@YvhgNvxr2MSY$<2%tOY{D=cE~ZaeIe4*TB2`$f-4sn@<T|
      z#1AV>8A9~+Vl!F-D+A#!$SSqWC++&9e{+ZlD^aVJ>$R3L@@-0e;|pa6f|VY3cUhFn
      zh>@3PWg00&I988;zn4Q`N$Q;)9cPTu1s<Ioh#xK7v$$^wJQQ+B&DUHs$hu9!^l*N;
      zshPQ0LDrdCx+1;8z-OD9cX0ma^4^vqk)%_hkVO0a-7$+ORVe^P8{OuWG{NKrcl{ja
      zS02xs8RR|FlCWNK57}SK`bq1P$F*nwNe=X3-Tum4$1B%L>t0fOoeJht3@*&CNu3l&
      zI%i957G#Fk5o?I=8C$Rvoc*i7CY?+gk$xqnr281qI*RtmyZQSy$;%F;K3S%B#@4*j
      zJVpx0(`jIxdVY@%ih@1?BaS3pvx5DwT-J`+*#AbrX{$wDuc-jUd>b=9w-#L#<)+b@
      zfdysWzA>5Rd(R``RrZIemh~y+E;svJO(qz~(*`EJq<g07vAtK-A<E)Wav_?8r`+ai
      zfZk4ekZ(2d{X!9pggvfnBu9`;?5amaVD+NR{iSB0-W9$!UZiFbL$i-QLPrVUNGlw9
      a4kVtD@5dt3mg)~J4xp_akt{2}<bMHvbgV%D
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/nv.png b/bower_components/select2/docs/vendor/images/flags/nv.png
      deleted file mode 100755
      index 8f1a855d3c15081f623de228b0c0c704761b253c..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4268
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ny.png b/bower_components/select2/docs/vendor/images/flags/ny.png
      deleted file mode 100755
      index 794b86e3c4e2d5fc73e3b2be83127b0090d67db9..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 9732
      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
      P7w}nHS*lXP<i~#i!r3c9
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/oh.png b/bower_components/select2/docs/vendor/images/flags/oh.png
      deleted file mode 100755
      index 08601a6d6c86d25a7b7e96ecfe66d5a83805bfde..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7666
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ok.png b/bower_components/select2/docs/vendor/images/flags/ok.png
      deleted file mode 100755
      index 543be9133c9597cb484fbb232c39242bf2fbc1c4..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 7290
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/or.png b/bower_components/select2/docs/vendor/images/flags/or.png
      deleted file mode 100755
      index 846b4a699aff19177c1c352faae42a3b98d14eee..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 9530
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/pa.png b/bower_components/select2/docs/vendor/images/flags/pa.png
      deleted file mode 100755
      index 55f6c0ff4e9f17bbc7ddae7e513dc270eef33588..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 11193
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ri.png b/bower_components/select2/docs/vendor/images/flags/ri.png
      deleted file mode 100755
      index 5cece5db10b5d6d25e72a6b174cac2e7aa1fb548..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6927
      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
      VFtzjzeD?qV002ovPDHLkV1hirWoZBa
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/sc.png b/bower_components/select2/docs/vendor/images/flags/sc.png
      deleted file mode 100755
      index 9e393039ce8df497ffac36e70c04b07c599e5c71..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4485
      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
      Xm7r`Q=_fUb00000NkvXXu0mjf>9)51
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/sd.png b/bower_components/select2/docs/vendor/images/flags/sd.png
      deleted file mode 100755
      index 154618f4ce129ca17c131e21761fd1c2849446da..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10252
      zcmai)WmJ@3)b?)>a0rp^5^0c<PC>c_q*FSF?viehkQ}-@grRE)Y3Y^*>F#>w|9*PE
      zJnQ*z&%M^H$#eGJ*Kc3@M5ri9zd<8G0|4NStc-*z{QeVunSv1Ej|cn)#qb-dgN(K_
      z0HEXkcOd}jnM43U1;|Q>se5D|LEL@tW)=s=N5*VVGFEK8e%sgWy%7h|(BvXxC?bh1
      zN@CZx2Z9=HB&+qs5G21KAX}ZuCE{RNp#}$E{!Ls_tZTnnNV|z^?+5+6`de<h5q9D)
      z=)5z+KMqzF-6aN9tiC;FPx$@>2@rg&UjE_G>nz=aJx-1)E#yu^cJ{wNVW=n0iTYXA
      z;P>j_t=gTuEC^v^;;c_7-R^W~wzc!n>-ntc&A~H=uP6p~M-*ZUKCS0dQom>xHrqSM
      zVc@%s)5se{A_Bxu%mdG<1e4qzyzyrD4-t|V9Xh;hr9N(tt^go+{#<k4FjfBd6gj|e
      z(she7kah$E{9-=%^F8xl7%D?_xjgDVHix1PDf5Q{Z*~lF*Yb*GsjvSAe<n@G+XG#Z
      z9E9o`vBA~n$Xf9}SAC4D_wVogiQcP<qir<b{$noIY{%}I9ban41XK#6g=#Kgp;x4N
      zxBI`=j=SSsrp<2R5dfCDspBGtl54_ZpNGpEd4`g(KqDX^*~I@4dWzF`KI-gdA^Gc$
      z@$(Drdj)ZkmHX$4YGH$|ki@8S5l==|mA&gcAb`otG)<4>uKy?gYYJi=G^-Lp<~-NF
      zRCH$?=1AQ{o-J~8BduA}Yzbp9)-cx4#I`)iE`2h&{~AODw_2Ng3mX0Omg-rl>m&qe
      z69CGi1U^>PRnXrX9r1y%obq$1ita5pQ<=6)2I%mXmXj8r9XN(%KCfWDB?cUdxcNV}
      zL8x-1JM>Gr&R%$SdXkh4!`G}XXkv2pR)T-e8st++&EIr&&+IP3!|v?+&~`qX+g?a3
      zlaoHt{;trAh>X#rkALyHd#%|RE61>UZhT2)X3W%EKR4IN6slT=vAtSu$%ah~rG6Lf
      z(T;sorRcVN+qyo<3t`vB4||_RZ-cnC757zI!_Fla3fv$~epD=(#oUW&%BI;m?za4)
      ziG1o7vQQR{dH21E6z}MsiCoA9&hXn=Qv`Oz{`c>TsD&pI?$4*GQ5L?c3yy6Wu_$&T
      z0emXLBC;&>-Ayx+ALh^62*VHnl-HYc)EqA~M`{B<$*suh>xE7fbXA-61X$bffzzR1
      zc@TWha!g?^i#e3E8a755KV7HmPR?ao1-xNOGH=$%YLSJ^#awhBpB~1{0L*FAm^fQx
      zfI;E$QW1QY)Jn@P@wkZfXOq^~p%&{Rfz`Fo$r2MM*di3_>-m8a2*AZcpb}WX@1HRX
      zg}%sYKjah5;;_neczxT}MOUpd@IPPhk=^`APavA%@ACQY#LVUx1z7GT#L?5=er&Jg
      zAe87>p7|_!F89xun?Ko3`9}K|{sRcpCRlXg_&`7iqox*~bTTJrsvTdAi?fv00A)5*
      zG<JQ7pa<*hX$V^E|NK}aA7ahC8?<2f^0ejKE+v*#u-AT3AIlTleD{N}$dB+hCoe|u
      zo!_L&O}AOb1&v~MvSPnO!pX*R@Oj~0%6KE~8{c>;Dj)~t>%Wv6`%e13#aG0;C!)8O
      z^#TRsBN;gQFD}m$A1eo65gcbjwqIh`b<wcrNq=)*k-P!`c(AMxQR7}8m5yltvKTeO
      zCPPE&(yuF9K^J9>pSi87pm5iqR*Bgt*Nl7Ub~j7-Wqh(x`EjEReAn;POk+2-bfT9E
      zY1uo%9W4a{cIn7tF^ROCZ=Y{0e4mO<&*O}4<^Ek$YkKEpXSfgnT{NvkrYZgX6eLu^
      z`4;j1Rs6^p@^TJuk<ZBVTK)@m`TB<}WI!m<KUmQ*8uN%r=NSQV7>UamG#}didap$A
      zwm4fr@WK-I&prqXaBx?>OXR2DIr6hMyt+*@6uGe2z3DWc|60H>_^@~xG(5>h4kqz!
      z;JwdpZbdU~uyIy8tQ_jdJsl0NymPxNVr?(cCzSv!rEIT!tqK7EEpSw}A|CYt#X>g~
      zuQ=Sw&rIh>yfFgMh4p2Ix2#H(EHIq7mRtJRAF5ApuM+YmM(-0eQ|D@D^;%eC5%(3)
      z<$#0ey@{Ai!o15vyy5=wF!Wk^mplfOXkMSg@tZm>nzuCA&sj-aGE777ad;LT_!QXw
      z1#xB_|Af41T+7{dA?cq05CH3LTyPfBvTx**t;GL9)f?rF3L1a=#nZOIdM=K|oH524
      zLQ~l}Pki%tMED}Hx(7=v@RXE#Zb92KyKTAz4H*b_Zjhg3V^i!TBmZM~+xO98F##OM
      z=tmEe7YAVtOBtqjY&OqmTTqS)1g)R;2-}FTLfnSCL|S239Bg}wG*%`zUB3{n{E)Jo
      zw&l=MhHb5Ws4)mc_1SYSP<WbNrwFDa2TD+Y_4?--aJIz}p(WNw^@yQ;g!shGeO>uq
      z@R`hsJ9RD{JAOU8$Pe{@ylLZgR(@hbKX5SeXb3?HC`<a0tSlm^uaVezSE*dB6oJd=
      z|Dgsv^ae2EEN-!rW`D{cm<pbp{23a0Je+di?LFhXqrje4LGgBWW`+&t3;=3tv2{i6
      z4SIDYINMF2WbElCz8ospHy;dh8=c%V74*DakTJ09H>&-0c$!y79`Zjvb#fjq_G~KV
      zR}a$)4$+xO{i+@mxf_X~HK$*3XSPtkNVptk#o*>kB~l_GU;Ij>3ubSNq{@DBa9i6?
      z?(h2KCoWzfo=cnfgZLw-ygaG-I0ai`NMqv=I{E-(^5Xpb>EdGS!JKZp0ocb@!(zZC
      zcqB)4$p0{$Em0oUbiZ(xd_YGrw~*E@^$rLCR8~HDgiu@Cf9q=szczcIxbX<nY)1wH
      zLU-4Hh4nw3uFX5MWp&)Z*KVyZ_><(*{S^}Mioo6~W#ky6jro2sok>YrI$N&_1!%k9
      zM@t#bpVR$q+H38a!+<E(b<|G<s$0@WL_iOHha@&MtXnX-wy_Zz9}l2~WX5x<RD0|9
      z?kR)R^JqroyMDaP=dq)rtfGIGxJ%#V)o-&=HjAaSJv$+Cdts!^)`zrh?r)J2OzU!q
      z(a}RbH@vQm4&iu8b*G2Wm6typ=Z2XduRMIVE|Vz!*t$Xy)o0AE1q#H9x{HYs#tdVo
      zm84E7hbZwvl*F)9b<&f%a~6-3O1ZX9*N2;%Z~Bb`foHO$U<BZPv@Q1@0dPRP|2G*8
      zE~^9QBRszf)t9^{T|*KQZWKr;c5Ox!&f16~9O2-|y}Htef4o{zLG1ztWK4)X=j3E=
      zlMeyt-K^DO5eN~7Co8)tyOx)ix;-?kJ4b-*xVQJq)00>Jgx8i#g!r+dk{?kZ<`0=F
      z=c9<%*8Que`{~c1Z%tJ?7*ndZHhKriO5y*UTBACiTObNjkx|S)*|N<!7i@VfyuGu<
      zb7N!PjQ@_$Wr%<oi~kvyq6Zl@EM9rZE60^JHh$#cS>AIQ=na;VKq4U2RAI1`<WEn(
      z#(&*htjBt0g7ShM+8WF?{lT0Vn@HM-4YglUsip5R&Ss9mlyh>Dnh?#CAZo>^#-Q`B
      zc%dqtveH|OE!gRYNOU9wf~eR$P_i5k5zEn$96{8vLz8J;&B#d8=P=exK}~$3rml6*
      zvHfF3ykQQq>kS%=u!m8h-BW`H@}iYAF+`%Du@>1zUorti0846$rrz-+1AOd#)@NpC
      z7ny{I8tN%bF=A9RWNHi&zmF+lA3=xJ%vcwzGP<>1Z1gSu`2*xn@R%z^>(~i+*4d7v
      z5?Q&h2P@z^RKEfc5Q)ez26ZWk$uBcZf~dYJjt$1i7d1bvNMF4)IXHN{2B^et|LErc
      zKxIrrD>Y#t2!z#?q7cZFF?wy0rS0-~n>?*v+PA?@RPk^PNt6ln*A<O>4P$4E-L&O-
      zC1w-`OU}-Qrxz|hzA3a75piBj?D5&}Nwaml=@1Mc1_B6Ty|Hz&y#HQ{At7~D+{zJQ
      zh17n984o1A(E9k#&h2V+y7~8eimdRk=Gook#eqSm-G!~oM2G-;MhY)a!u63L)OoiQ
      z8QqDWOv>F|G}Lo<Y_v#qu=5O!jQ-G#Fal}G7Bg|syp~Ubnj$Uw`fATbz}eTAS1f>0
      zO)5iSR+=JB-!I0VYZMWf7f$*>I|UBk&*;;|={*nQ94`uUBezk=#`k}E%iZrE^x|C*
      zQ>H?)Q17+8kWx&rEl+x_soX@Dg89bCh21po8R<*saQlG$`;-)Dg}!%OwQ*E9R)zu(
      zJYRS>2H2~Ix6i!V`C{`KhD;|_@ErN{XmEs##q(h6Zq3U=6j9=0igddA`o%hS;gLfo
      zwH=H4KfEtKQOo7Tq7s#8hFAo<l~pd|6YoNk2_Da+?vzhEgX!qo3v?Tw_NO;yw`R0O
      zZTUKSJ*IY2Fd-gdER_wklww$91KKPkp`L@LziMk+>*~m1ZCoVClGxCtsYz-!rj|dG
      zdH?qJH5s_5vE!&f0Ej4*7$bckNV`%gV|36+g%J-g)EEdaDKR36v4ytwext}3l~Imk
      zWS(+*wWvv%RasweFB8!{=3})FHOTzswh<9sGX{G@yeo*)7A(qKzdre%79?Y1a+Bt%
      z?=|t~00CpTt=9%!t@_g+8%4#HxoYSrMDV*(@%|NDD6*V)nU<E4c`|SVf$Z_dC4GV@
      z-_wP&O<a0qC3n7MhR7U-Z(KT2k*oy;G6{*a>=;&DbV%Pz)zLydkKA^<0t{Go@)^$W
      z4-BOx!avfpta9GuKXGe^9eliW+cC=gkZy!@jYjmdxs@l=PX5x)^^(o+_{Uguc|q<m
      zooo0qgM-I!Y$3&rYr_XebW`rQI8kBRqS#1}OeLOB#_{ZGc?Gg<T_2;`e~1VfRN>El
      zz7`gSx*3zUjaOHD)bIPm-=&C)U3p!!dE$nMV`eDcc(hrJsgnt~h~@qP0I3)p(W~k9
      zFJHR(l>S(5{Um6v<~?v|!a#{K02|j@lCc_b_F(sJp2jOfi)@?q)|M>M03+2*K7@r8
      zyiV<-l-p*!Skwcpcs;r|L=Gn5lOx_G|8m7pxi#FX3VuX-0DzK(lCv{dKB}!yGBz(<
      z$8O|z{MF6Dp<9Z|?_{~psR|?*Fb28(y)T~ax0(F7O?q?@Ncjwti%goO(Qd6a{m}{p
      zQK3`?@$msoO`zl<DjdfcDH|Ujnowiwh95BF9EQoM{O9$sgM|gzM7l!9<~hp}LBq+@
      z$vxyCtE_Bwg2A~qRUtTpcNx5!ngn0(Hj;?S-^!f@YDN+IIG$WDKA%zq)qE!8^C(y4
      zx9)qEe#^2H-Nh%iW!+#-64PU(qR*<Vu8sxd{Q4zEWyGAUlRSilgA<>fz3<d4OQWiw
      zU};1(e$baJS7`uVcOriGE-(P#fhdI-gJA4<lH4R}GBQA@Cou*S5<;OWGgb{gnya_B
      zp_0<ZIxJ;!G7pvdb$|_#l8)orkCx}t?%=_gKyH3|c#|pNSgkN`SdBLP_|H{z{+Rxe
      z@f{L2DB8QN0F>osBP&+uH2ntQSzGkF0S-Vq4xqrvVnxzQb?a@Xm_gGwXgGRJDrze6
      z-J7)n0!e9Uj$ZBC7vsvoVNvkPzP1J!8ulObm8#3RLuuLAW{hf__%Lu#-T3s>nHJ2Q
      ze<pKt^IT^NxPB1Q<1&$=!}vT`)i9Fw5gsl=XT8GtQW00796&&f#SWY*iPFn3^^Ith
      zoy%yiTx^_RpDb_KNKcmHM3;I%Sw)^OwWF3UnJjbZg{_3+RPX^O81zc4_wPgFD3NRY
      z@Eb&ci}%KwONuBoO+g1<UsOvKWx{Q358VWWCnnxqU9CvvCl3}(?BPL4FFa}j1Eb+7
      zCqtuE&aK8!qG5CH!QQL~TW9AZLlMJ*3pWNz%z(+h%TBF{Nl+jX{H?=gh`{vXJ^Iks
      zsOzfk2*Z*2AF^5x^)}ScwRR5gkP*A$it(QKOKQAJq)Ga@%EWbD#l9fA$~l~Lr&o~n
      zM57+HiMC6O_@PN+1D|v=0*B4sf%c|LozhrX__bBF7aBdzwo+4T;1CIq+AtV9N#!>V
      zQ8qSiTFGzq{0|SVa)q-8S2~rLpg?MBMEEaaP0=mn#K8E6jOga#5<azOT)$`CP}*q-
      zhKtWDPXI`X3Qkz<oWym8VX9^Zw7lsdP{cy|?qdZL4DmkrYRr3B)e5<-$IGipk#wbE
      zk4<1_+Bn;&0pF~49w*dXH4hl3X_!KhoSTJ5N84*_*E4wimnL$5E$OqSJRG+=!?nfP
      zxmp5;jF50_yABJfs`{j=%08QqgH}k70nh0*$|WNs4ji&Lwe?x!7Hl=k-x#p{o#77H
      z<imjR#i}td0A2R(5q&=Ge}$~oRgBl0($iy`ny@g?0|t)?l|DS4PDXc+_5#4WsWzIU
      z^Us@p;h03XO)mRU#f0e)E>SHkU~RRL-CO-4A{qRih7HlX9m%JGUch^)yhHa3;#CTI
      z<E|VD0^s(^%6fmL$?>K_TN@s@AI+n=(`<z(<Y_hx+7~UkbSS-TSz~eOm6Eo1=$P?z
      zGDeAUsMnm*9&TPdo_((B%+##7&;TkvEhDI4dAZ=B8$AXLB%Y@_xU%w!Q#*Aj#?|!-
      z#x9ZnMV$#YkzZ)&=jj9sMV6Jt;90qb_dCcO4Q~mAr)@x|v?tR+;Kk)6ZfT7QILz<O
      zF#1iuy>*YpgRNgc&csNeP|Lv21`ol39)3y$!S6*WExs2_#z#l<m2z?M@F>uslM3?i
      z2nh79JA{OwCd=8mx;_*shMA8LE&cslJVE4(J8RwWh3Sna9F&-nbKCX#%@r`R$7d}S
      zO!|9!`y@>*=&N+T!uRDTOBxOt85S;X&u;ywxwovWaE4-BEGC4D@dF*5?WqHaT+iCO
      z;`2DJ=pP{UY6W3D@;{WHpnpXYSJ3=_ibDx$K{?QmRG;{SOgT|W+h(fpm7g#BEH2)@
      z_zt-vts?|zwO&&|mrUyU+YK@$0uca3#dZNmX%1D8f|Q`ZeOcM!vb_SU=7G!3M+>Io
      z4ncZOPL)DVxXd9U@&TWCGCniCF|Q|HSQzBV$ZywAOH3TutW{?UQXm-n#-YWcqZ}70
      zM=M|0?dW(xhWR?QdD&nqc?0=GKXvcyS?`Cvkn{Khp*cbSSCM$f=iVT&Ie1BHg>d~f
      zIwJ7MoQwXMA^bJ)Pu!vn{WCa~#MStBxy244ln(r1IlDL5f$TNVq<0MNY$u|m%$-SB
      zg0%ch<zwREX=`bLz>G8bomY;o+0(dcQ^A}Ijdp^Mms3$b$uw!v@X{ER2MU9AIR^IS
      zCCZ%6*VZN{+r4{-U@@jwU1eWgVGH55X@jjBG}@L`A8cLoc~@4v?(k_5$L8iT#*#SH
      zeVkau6!NN}J1|nz;8V77zH=_>&t4&B+CVi;^YXJcvPVV2ZY8wO{_teKJLZfMWVZN=
      z!_`&)=m;&QU!pK!)Ld6jPeM&i*{Kdm5<9BTK!1f5&*}a9SCn3sMJm4=mh??I#j%2y
      zVsaTat~OXxGURAm^|GEG{F7t?rzQ)`%oM}kroc;ikus$Xmrj0OAWec%h`32DW7*LQ
      z)O2;TS1~9ub~h{hcA$|Ih4i^6I|vPfJ}ncfg+)2!oETe?aoaxS2_2MBmX8u~ui76<
      zmMWf#$t&m(u`{AtHL3{>LGAnYJXxrQk2YHNH3W|7w`a_Dc0-4UG{sYP&{hV#>7#y7
      zV9f#<X4ped$YON|6AwuxD(Vj|5?T?FZ<7V;tSPc|`3MMPz$Z9}z_s7Q!`<zWjxf~V
      zIFdZQK&9%rkMYHa>E`xvt8Tf(JmS;W#Sag-qn9T{tjzdOQ@6(}O>|5I04U)mfw37@
      zu`v*Bx_AjuD9c3#cjuUy_32h(iexKd1<&lKaxn@sF@Yq1z-7VP3kBYe_Q%Hbv9m=W
      zwXS3>E><yXlHj2!+S?B;He4V8e6b(XxR{a^sJr*}CP-oi=fplRTB(%3@$@_b0^nac
      za~1Yh_y_Lb6qy~_)BS>HZJtP)3~|rw!+?M&htJIz&Fd=zuS+wY83cfxM3WD4Qm^GA
      z0QttQ1+V@{Via*usOHT4yd94qyeEG4YuB)mlZ}v*kCOUQP%Q0wWo@DopHr=T;AUc8
      z4;e6#k`6-)fv=!g{udrQrv1ai3{g=wT3WesZW#NPLz6L4LGi#XjuDsAu9NaB00UF%
      zx>3_t+7tlN){h*i`>G;^M2UB#9y_-L@shUs{B=ag$rp)xI3!M8Xozk+T*$^gO66Z|
      z#>GiUAbAP##Yoj^9ZKaN&DS!2{dz==tz6AJwKrW?XATNPLL58W)EvvI6!N}q(Hcn^
      z?5V3yoVRURI{I$hR9045S65kDI$&C7*rFaqC1Y-0F}hPQRmwu}bh&pvIf)_wp~342
      zr(%T?HqR5UmY^LyTA>-(n3PwNU3A(Y+LOY>#nA%sd#BsfZbxC-7H&Ux?^qkHg09tf
      zd^C8P2dMCBX7u=+U!HX+;tEwP6B6@{h~WN0Wo2YV#cdR!O_~BpU_2G5#UWRURTCNI
      zJSvJ={Ilf2>}ZNipkwCR#R6tnd9lUX*5G+U!hN}Bh78T^dYHxkTf$4P;aU^TvCPun
      zql)}qzql9}sNQ|~l3(ue@Ob!DvfMpMkzzVdp@&uU+9^|})V;<aOQV46?8#51e;h~k
      z%gsgN+mqCng<q)xn4@F)OO1wUk#83UjGWb~2Mg!667WlD7Z#K=g*->M&!b6bcN|jZ
      zs<?T1u9JT9bg^%_v|OC4vKdqqPBFsGCD0rEq5>I<F|vVmc1tcNJ39+WNqKl`h>1yg
      zdQK(KsxdL?6i%+~@4FF&F4%_leJh?|Kt?8pM=3$ndm%kMsznj^lgy3TB+{R5#r@ME
      z7r&Ir_5Iwg4w%s0ubL?Rjt-aYU?+uGI;mb}@`Ek}eOB&j=EpvZJ4JuV{;l+YC&eT6
      ztHP*2`YkSKNMcB0|6J(W|B~V2^7wiced<C1Oih1NQ%k^me^8)l9eW@Z2$2tRJTCG;
      zAtqzWS*Ag1$75l<&X+R0GFP0h^4pdN?p*j>*clu5oSt^g&pR;9jBHlr=2e}51*S#$
      zTe8I5wxxM3Z4cq&4E+q}4cM^z3Z~$b!1Kx2?_l4D6hD`a_kR9Y9@tY7Vl{b-hAjM&
      zr@uZZi^_@#No}_39eXwFwOgruF*jdsay;w!0mN>qGwq+Pk;Hr#f7f|FR0YRZ&a~jo
      zu5CE7oO^qJg~y8b$!NU}M2KQ@f2OFBC#2iRtk%+$lL^PM-9U(*e$d=GG%PA1A&)2;
      z>e+T<XD@fTMESRdnsRU|(|_wLCo1#p<DFSPo0Nkq`b|Z1J4!3|%Uh-%PXTP0(7QT*
      zsd-9T71`S|bV#;kg=qCk#pvB%USGMwj!hSl8k@Pj;9wc(QvO70WK{LlWeFVfI^NhZ
      zC5x4FM@k4`hOK8XN@6wD)(XP+k&^OVa_He-Uy}cp7><hc^!&WMv{V6`E-k4FUUqf^
      zaiSWZvAEn=vImzj0i$^R7vA;h3wpvgigr*j2G5K4AUY>0Zu+S0@=kr%j8WH*e$_H!
      zDF(kfy@ce>cjQSJ!gt||o$NM%(NcrU&eBTYyWuPpLFE?Jmlj{6%BrcD#u=(q441!r
      z70b_`L*T^R-5t2K#SqiqyUhuQzHXyJ)j?xp>e^I8{S^Z(zA<xWoyu6Nss63)!kyjX
      z?cL(}qpH|gk&tgxoSb~LlH$2JUlP^=0#b;gnO2uJU*TsPK%9a^g%LmTA-Eq%dNVmc
      zA5Hh#b-my-0&7#=Zb<AbaCa1XfN0UDd7aTL*^t(8#V@drw!QB!K(GlRSvkGQOeW$<
      zAGgr1jD=HmdHE7M#_okSL*%?|Y<fDp>O<0*N~=$P$^-@lA&ZG2lF>`W#fBQEQUOTc
      zV`DqAD3T{Ex1ETwkgl%FW~@JJXo$PHC3I{3I@_p4hd3H!ZgtBVkX_qVUO+?q&|fqQ
      zfPjIwqHAXf$B~sS9XriV%@SQTvFKn!Zx?=`>p1t9wVxZV0B<d#<OzM^Fcb4@9x&_1
      z#lpeds`sTOBN75n1_cQT7Afi2w~1G;JmHCM#A&5e-1;BT3qIVtAR>^48lxd^JEdV`
      ze`m)iouT8&xZaGLIXlCK$Lu9sJFeOB(==SCSSf(6k*1-^tkhg@xiHjcQ8fhM)I%0@
      zxKg`T4=+{4KG)*2voZC!Oo(Yk8J}a{*c4B+a2#g!_O9`+`ot?02Zy5J;!wj|D5+4}
      z{^*gmHuc(6w&c*71q`ClJr`@!0xfD(xbK98)U0>>>_;Bz+1hds_nDjYP#{VxHO4>S
      zO3KTI9MH;$r!RH;L8vOk;WA_QF!WvE=Z00ExlW8IRk;6Rq@_pXRAWvCbnU$(CCA`c
      zD!DJrrXZr8{M-Tn3Oi;|+akHAUFX|V0Pu~Yv*h2mPe5@&L6(A)FhxakbBaXZ<_5J8
      zMYK|J!r*WBRedEnl9?6ZwKF4iCeMvtyi%@S_t2!iybroO2r%=BJy#$g`j4*6?fvB|
      zN<9`b$^`+ov&E;^lshWqP@&o#!qBK-Yv$Lm9~`;lF=aLM^nT;{y1LwAINz=RjZMmQ
      z==5^E0)z|_mJMi63{ps+NPx9}6A8uH1`Grj??6n<HUdrs1#mU~kFV(Y_;QM+k>Td{
      zby6~S-9mH@m6)GjnTAcB7MZFQJG|{V`EcUP6fj5rnKqXO%sznCGr_F**nLBX#6(d1
      zldNRWtJ>ituzGGxzOB*avar>?vhzr)g&QU*o*6Jpq3!22lfj2T47m(3tX|=CFP6v|
      zT78~0A}alKrTF!Fp|KYoa<<~N9vOYXpMXj?mGzpEW$R1}0D`)E*4a5ZO<%pr>+Ssw
      z&$}=fBpDyRuMEkHZEe$VxrpiaK+X`M0D#wZ|D6TcmfPHn8@IFi@d}9UuUFrHlGdU3
      z^|)J+>7ZjPGnP|mm&hSuGOnk)E!`ZB{ApLFF2Shq2p^T}Honv@f%6Panq)u#-$W+C
      z!}05NJ-aBn+bHDh{>Y>$QGY+n0Jx90F`Ess@N`U70$+L6D;Cj1#w<$JSz|XNBJz<C
      zulJ_5@9wNBE75|wIsKn|@9*uK_4GAnlhT>^-K*s2(Cw`E-(Un^-Agwuld~T-c>m@@
      zaNU=H2u!4G-vw1ub>Groh-4=^_)cWe*EP0XU->TSWEr^E(H2(R5Dx4<4%hq}!^o?x
      zt7gvon_0^ymy>?JhyG-Kocd?Xf}XtD%qaV#5zgS~Zl|4Vp*sUqmBAhenA#ir9gYkT
      zVGxkSe1o<c5mAHIuDsxQJCy8>PcQ^JS3)En-vx&mvjJTZD_--bJzM@L>@46XK5yT@
      zXG*?n!FHrK8fKji*6Z2HFE5enwC?~QFq}UE-+$>PwZA`$XvW2QhLnJiTfk^-C%!|?
      zmk$B%%2M78F4mvFH+2d&5Y2$`!%6I`#;lnIeSd$bAesI5fMm!AY&32Z7y;%k*w#&<
      z`Rs8%F8i)Z1P1l&iCNi*znT8m;)>g8_;kb+mH3m*%5t%WRij|p!6#xhh0flH=xc!p
      z2(e|ERyWhFS(d!c^?1y6;HQ;cMHzi|g!j#><}*SH-!{Hw8w@RXmj(AL6GudWrSxB3
      z%i1C@M8E(D?I6#q=W$vGV-w+1PKh!2>;3Yyyid`>&0+I(FKhd0R`u*?Y-fkn^|5Z&
      z8OuSk#*HL}P9tNmoy^kZY{IXE0s732m#+6v7}^Ue?3>#TN-)Mn_jbm6&vaMm6ivqW
      z!&$e2Q5$&e=V>VcVM<BCj;<)LVf*)ULs9^2`DOAw=&+%s1UXxDwE)w~*UJuoAp$D8
      z{2X9#0_sDgW_x$;0!Jp^UEBw`i%tO+jJibWdS<`<P8F=f7~+Q=`V{?xWTA_v4G22a
      z+hKBqEz9v60}^)c>HIlYlCkCwxTVB%U2w!E)!A_8p|+USr+cHmb4h~i_V(^iouV@i
      z6G{-=WD|P=00Gk0M$zRXNrEHaykCO-Miy;Pn`En%?qlOT{Cjg-lioKKt{%Tf_t*Y=
      zF%R!oj)IrF$)r3`)^%2ORxs7+-sAZ0p^mboknYJd&f{>%O^pek90;HSfnc(v=$PwB
      zmyUZ}g%K}@1^MsDK0ke$FMYiljeoVWfek3}6juo~c{%(5>+b!sZ?74^I(6JrUrmPR
      z*!BaZ;7o$oa0&{iqR2@RTUHBHoK?Hygd?p+nIxy>Aj$%oe7iv3173Scj$8#o!^el|
      z;x=sH>jI~20>3kbVuRj1KFkkG(XW~+cu8K&NHu1e+pBIDo(Mt{qm`s&-47eynFL6E
      zwX}jBnrA0XeX|}Htvj;@U*3lEG|Q^+VjXwO-c9yvD5~iD-`2Rsy$v;XH)pWWNkjmq
      z%w|x(N5W@{HmYF&e4=Kr5e7HOw1kfjXAKErGc+GNJF<ehcm?bl-z>;~PiXu2tsMSO
      z5#fc{)c5#oG{xM9%RObXH$N{cX)TLcn8ROc_W4t&E90fHyV{7-{m!sE0$^G4&^7sX
      zj!gS(HqN;$`NzwwE(jsV5dHnP^n{=-_|)~J&0R3)@YzCtXF9co$oOSPK7@qy0X~3t
      z%1hUz@R`5qBp!<fP#buzbD$CQb;>C0m28j>!bjDNJ}X+?lfV3t)wRu~zUCsR{osFI
      zIW%l<t~}agh%|Y5D)QAR`8dk%AZgx)d<~Y{^A{L(Y8DpTQrt(SLust#p2u6haO>jA
      zQC4g`{vsCk(|8fmOv@fDn(69RauFd`N3FBu`VE5~em3XGM;7+Ikn)~vr&FzoSGd6D
      zi?!A8l(L)9O|M$>z@|hb6ulDx&`XrZLBzMmxU<mjpZWU_ZsDck?JhJHSk>vEEJ$L#
      z-$Ac^FAEou0kH2;C@!W5XOBR-diRoCF?UH%FN+C{@}}<PcnS|Y<5)_OU#rimNg8E4
      zt9e@0<!{rT4ln`ON~@CsU^iADeocr@NMq=G*qTgTlqTy&*M3uFH-DRSCmc<KiU8;=
      z#ZWW=03MP&-Y^`^8bw<}L!07w3+ov$>l0BBy7Kr&mAuO7EO&d94YK`ejH#ygi>5E7
      zwN|E4b$RVSF#e9Qw$%tzXOu>+#c(|FacKNtb^6NleTebO`zJ{6>!Gh2O2_nUY)Z_Y
      z4u||18FKWk74}R>*a~%18+okHJ1<32b1|4lKH%9or^GcMZ$!x9{vYHl8|D8-H$VWq
      zjo{|{2Xo$f2H!Em1?tjsfd&BL?7wRBBOxeYdTB_IW^Amf9K9kKtG|;LGMJo8=ASa-
      zW{8HIM0;1RQ2}c{(mr<naJLHlGE=RA=^wgDw&x!sk&^&Y@2eby$3O4*!e|lSUt!S$
      z*zm^<iJ|e6C-vVokM;J4tIDjw#+eG|u@xvMytneQe0U&gqww39x6#jLw>Ihp&;Tl`
      tli#*W&uY*2{*#^m$BDTA|IFOQi<1dj2XjlOH~e@XAS<aPQ6+8^_&<=3wkZGr
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/tn.png b/bower_components/select2/docs/vendor/images/flags/tn.png
      deleted file mode 100755
      index 321b48cbb6f4702f713d84dae3448b6148539562..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4005
      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
      XoUzrOUOTz^y8(!nk!H2JQ}q7<mge90
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/tx.png b/bower_components/select2/docs/vendor/images/flags/tx.png
      deleted file mode 100755
      index 0914b319eab15e886156d89c3f7067bd772dd68e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 1324
      zcmeAS@N?(olHy`uVBq!ia0vp^(||aIg9%8!wv1a2q&N#aB8wRqxP?KOkzv*x2?hq1
      zd!8<iAr*7p-ih^zPL(<S@p9k3@>Bz}k~gga?hS@+H%&Uu^4t<r7g%~#vR$zJ;1Oy4
      zV>0Jb?#*b}lVaW$yTZ9Z=O*i-b19P)40nmgxS2gRiuAZ}b}wfRqt|uE$n%d`r5|0J
      z`aIL$`v1f4JG1=#=08`t|K;VwIYCpW1gic$Kci>Y!^gaC&EEp$Ie1^W*D?rbs;KaD
      zo^*ElG+}}bHJJVzTTTm|J?X9M)ywur#QVpk&(dDp*R@ThJ_PG5yq#ETxfUexNJLWg
      zU{Z~qy|Th-PtIr3i{o66vG|?Z!|lyoyk(Xv+uUbI&))3f;rKJf^F`6Kd({nFO|FS}
      z>^PFN#eS~g=N&I*o;j*k`y`pko>gdH!f7MP665}_R=yuMM|dZDHMZ!rn;r@7*ybUu
      zXZEr?C$f0E$jwa~rX34f!ugg}QtWemQ{<UnH~ZZ>8a;$}HS5mKn=}1bfD32otsRpR
      z#IJ74Id|-Q{!yO~tBw1b&dl;!9%g)gtMp_?>3lPr9kzz|eiT=4eZS5A%jxCInM>!F
      z{k>4#_&Gvx#e<2v{J;HH`}>ync5v{tHuHDK)?8g!{^Rqhv*y|REb7t>_Iymd<}7|m
      zIGt_nx?6|ce@i5v@;f=B<VQyQyxn4dMFd}ME;#e}_O{hai}HWB<a@3Bsg~#a?#G7O
      z+v}zo_WQ3i6yH(lmoAaazRzmr{;mIV{y#mTZhgDn^8ePh^VWVE|IWpo*pX-U*REpk
      zgRjSS&DG!k+ihXgTCU_-4LauXzcR~%pHKOJ?oYL`+V8(c`-Bg<tA1I1U}>x6{Mrz`
      zU##5=XU{vew|(F5kLKt8@=mHrNpd)!vM^FiXJgAGm8B~BnQPZ>5dRQY|MKPDfQ`%F
      zzPcdsU!+Q{zIG`;rzPk5u<-U{+ur<0DVg&+B_-ubbj($qEBr34pBp!8R{J{bnV5b)
      zl`}2-*(!r&40R7xM0T-sy<U1zZBD_&sMxggPw(G<x@FZN%XZedL!8CN;mg)~J-Tn7
      zn<{ke(h4EJh-VvC$yG!f9{aZS+nemS6Q3&7Z{9tpGEq*pK)`!N*y@;Xyx(*8*crwB
      zDJw3mbqAut(9ieHZN9&KQ1)ci#u;wC5r<0sZRSn<cH@q2?D2E?RZHLfPJW&~Kd<C^
      z+1+X@Wn0tAySGFI<uq)1A`Th--oJW9{jYQHmYtil>hJZo<Imp}=T_`_GWYL$)3RU7
      znaiICtZq5i;Ls7_RDSX9egQT;zMH3JOYxVmKT)_Iz{I$7<<i?>_bdtuGt#<GcWyO_
      zVi8)lT<^T6f1;1okGCt;<NyBnveSFvcl+9Rmx7~T-`@AL)$`J?FH^RzJgsaU!r`Z|
      z@O0wW3U%#!`D<@ne)iGt)1H)?N8i5j?_0AX^Xt7?hoYoZnf~A0QstU7Z+F>;^@0mI
      zf$5=t&a1y)`{(B0WbNnO@!{UefR!P$EWW;x^pYsKWwCB{>yBW>j&jA+9@k6$lT^;t
      lDR6B+M#b!oT6X+qUlQdKEMgqG2w40vc)I$ztaD0e0s!l|eVYIP
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/ut.png b/bower_components/select2/docs/vendor/images/flags/ut.png
      deleted file mode 100755
      index 7a01ae633979810f0b8a3213d0e371b02b8eecb6..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10674
      zcma)?Racx%vxXnsVUPepf?IfT5AKrS3>Ms-;1)Cl8GLY;V8Pv8gS)%CyKlaKun)TH
      zp!=Y^*6O;euc}Zb1!)XaB2)kXFl1#URNigE`!GR<eV>o`^a|b$$`2VWCjdah{ojBA
      zQql+kfE<vO5LI(eJ4tu@i8t4HH<m24q`_F~DUL9Wmg9y_$lBLO>ZW7Vudqt3aBR)L
      z)3m)ydrM;%x;5X%bK%m+U1!OiWaWvCOdTEQIVaa#Tw2ZF+Ugquf)$&`l%XVR^ObEL
      z8&2bE7jzo+7<J0<=P-N0Y8Z@1XJ15U7!)1?qm;Xs$+`DBfx8$pigENVbmGq;dqsg7
      z0va?en~k40K8*cuOT`3pM_zCT9ua{&wLLWg-UI+ZAdWZ#a(FB;IRR0wFf43us5mJy
      zLUgO(r0L`>=RE!vw!V<iZ3i{J{%^_?g)+gsss+Mry{XH`vSnwA=I&dCaSu4K<w`s}
      zfu1=utaNwVH6^MDvbxl?SU$`Qyi|mUl(XdKMv`(WKXiksnTcgPrKGop4bet$lF*SN
      zz$FW@julM48mhAPtO|1*^s5tYyMwXOU3m+9wL=iB#N3)cA^ArYEXRdTrqj*rDFO_F
      zFy<0j!F<ays0^<93P0_Aj5K7eydW#VBJxu)sxOwQ3JMDgntig{AuB^P8*<Qb8DyR~
      z(w0UW-xeBVVE>%vm>1kupI1n?u2y@-&MXdMTG&lZR;{Ohb63|P3-t8kDlbpIu$(y#
      z;axs6_~u|LBV%-V2^GInSTf|1kU&^l(rLN9AO51zN7K?17?|;4=V>oOSQM9%icqL1
      z?QP*gE8v?>*H<0dG603nl=Edj<>n)1eeQay72VrfjK>Q_KOc7$2{r<cB%R?r4^hSs
      zohV8ykO__?-&lrL@ArUu@UfPjXGmAxsozy?I^$=4TAjhvM)Yt?l!)B(f5$BL{|UnT
      zwYBG+D>j#(Vf3XNQz3tfUo+-u!ocghB&XjdW~wHa2<EfpY*|zIv_pf^&nj7cZpCa#
      z-|uks@s~vEn^!gW*jO<lU?afxqUe=SN$J98cMkQ-&s$?%G$l+SDL9H>T1!b;*f%rM
      zd)_>~!(uWDbka`xgrPxkiHJM!BVhf810UCp;~q{qfE+iNullpio_l-A=N#%QSmPc+
      zrLtXk#7-RSKmd?H=+4-M2EEpFZI2Fol&^L?RJbX4%9$PVXkJTa`@GR|!PTyHK@c3e
      zu%PsMyoj`f2pwfpinE}uz*LUX4$sX$q7R6MKSc>7QRiR;@g@rn4=h;F{YC<V#j$&g
      zawKIV9ZO=a8M|ba*|2k+#)m(IFRAbhSYj%Ev)4-UUH%Y$a!#jHM*K=g=!7FyxW?hK
      zr%2$9Na61CG-7|&svuzht<zye?s|)L%BY?YDL(qcj7)43rl}To4Lp=cK@42*&ApnQ
      zkuXROnq!eNBM}CrWNi6;Y={6uH%ak+J=xy7TD;#LTXDnr4<1}aL21qra0WK=Wc>+&
      z$kSx$FFP+Bb&?2MV{?KP#g*63j}TTDS`!XfUMhKnkN6@0IVZ720s%JsU=aiw%eu@r
      z4F0kF8LbwI$2D1#`;R_gosgChRT7l$ox#gUg-j7X{7DTPm><v7n@eQluXnXlhl?!g
      zZ+7a7gBZ(*A>Z`x`Z(-u>$Zj56j*;EbsX&ojO>kW27?g+ixjggnM59ub;2M@!l0@E
      zzZ_~gCXw-}DJNYGXWd_*hki8Cj5DMZVt<h-m*NSKK@PH?;3s`oE3r3`aXD$tNScFo
      zo}Jf<EsOs9<b@m6J}z>l^3#D&{GTH!P|i~8w%RP0kSOcugdTjF?L#hPc-2m_ZvUp_
      z6s6EJ0wQ{NOj5s=$f{Dpo65Wb458mB&~dx7wf$EL&XG7b{Fq5U%xfnc#eTr(Fa7lk
      zEP4);C-_f778Z+LIe0_>WMpKE51!dP#-9`EkU)Uv3!;8oO?fHFtD>@ZwOgriz$lTJ
      zxibyd96=w`jQOGbT1lo`9k~%9{B#{dabw&iuX62_#Rw^q;``LCqy@%CwuDG1_3Yei
      z@tWoS6T!<CaS5np9R0lbt*JL886#;Vw?Byzv4*QlO;QVy3P&=VSXu|qpTERR9klWq
      zoqxn|feG)gtWc2>zAA$J+b-?1WORGEO(5@7Wm%f_rB%Lpx)qtsA!<*Q0fufg8-<~s
      z*j>5(Gb6CRCgfX~E&TEm&i_s>MiBtfNJd-+&@*7GE8)e5ItEY|L*!H?;&7GlBI^HK
      zuu%tLu(9+gO&f`v^!cs%YR&~z^$=RJ52B?MIRqpfhlf_c`WvU@ABoT*3*g-rf41k`
      zNq-qeuShUc9OUxg;&3{|s^3G>ym}xYGL+I6LmO#zT>9<`*X+4e`lJmR<52=DhyOI<
      zkmHnGr#H)G0J8ikw~q16!%M5j!m<lXia5;2((5e-TC5XCQ|ifaB5s>KDS(tRhN65p
      zQc(rBV2~L2LkZ$KmZSw_9U;{4A<jKG|A040uF8mevW4EE#UOWpbxJfEKj0f*vw(ND
      zrb3R{&NM!qo6X;Hr5a_u3S!eU^uR}suR?m-?j}<M4DCyfPtiky{{FQGmENMXs6aH{
      z2Y)~mq&o)#KufGrq>OTY@4lUHh>C)=64Kd>5do2PkIc2PN*j6-&&>&>Et~u)bK@Ms
      zfQA<e*nVoQ379P8G{XnpX2}`OEI9c&YONbYu_jE^Diuwb&0R3E)myL;+{**;YAVl0
      zk9ogYYtvQ!ke+-u`=CDoNA(c_0m%sp@7n!iAH@w?up+HylQ?$54g#JiD?BRn7)#n+
      z*-SGdv`Y6y4?U)gN!+c(ySAjnW_LIlB!*03%bJ^?ADPK2ibE4XEh%fJX-7_&FWW_o
      z4hK-c=TI+=NI^SFX~o-FWQ>xEikdKa^+c4Z>6nzkE_gA@rom;_=81Ah=XXo?A4BHV
      z<4EacZHfOb5~WQ1j8<v5o*X$Nl)XqiIy*x_XNy(cw&=KOSB|{+O{k@e6cA26P?b|u
      zB!|Nrl+!}}74`GM0=~9dzzj2YWnshqFb6IGLj8Ssbf_?^b_9{YX;=_BY8t(y^z$R2
      zfpoZJ9W^Pa!pnoQ>8&}HNSUKJ`i!`UMx?YsG;orRY0_|rcyCBpG32;*eLnJfBlq{K
      z^0lg*-qS?g7IN-m)9KYtR`s(QKef5cWqw7!p%r&V8HbP$a#v%ES+Eg(<1}R-51_{g
      zRQ5V%V)$FXWSoz<?Xfb<1qOGGrW4aCkOY$>ODY2ZdiSc&k$m4u#Fho`pfY@9cA+o{
      zSS_N5O)rj5R1CX^%;*OR6-rC9FL|F8yAqz{`s)wsg@b)!<oW+-L(gE{C$f-k&~;w}
      zTY65R)2{l{i~9=1p`VE%%1<XfgjDtF$A*%JE8bs&I76hC!reI_lr7|1;Xyy*IFzUZ
      zL6R~4(S@5~j&uUVxT=s>Tl^?;!k~%P)-Ai1jo#o>t%b>Dbil&a*4Ex033T6$jV|e(
      zjSTqFqUcJu_*anQwj3j0{w3n(`)?P4N+zJ&jBPT28iC5DWM&gf`aOWbQCtM*Z$@V5
      z|EqUpi3K0O9xPevG}(Y%u%&D{U6y)U@gZJs<FHu9WRoJe#pF3MIME;CDN!KQAb1Lt
      zmOo^&W6u<_eV872fg!zLsvEug|J;?gY}E0?b+Veg<dj&X*l|xPD~!8z46)q?HZwU;
      z2CPH(Ia1h>qQH2OQJ>5xy>N|3L}?GvI1q83oh4ZZt=qNC`>#F0={~yz95T%;4%Xhi
      zRh!*&1Y~+nHn(}DIrjhd1!Ux@->!~?CY`q%Bkn>6L5y2fc<K-G<-+S<BV(G7YFL90
      zn)*<bf;<NP-fcGQgy&Im6uJiBy5QweNZ|d36H#<PzEC?^g-b8H)rL@aDJRf^M4?(4
      zCs;U$OY%y#jnzgYkV*OA?<Jry>_C5HRdd!{s53re1?*fITsmc_34b}gjyOwM_TQWy
      z)S`6q(e%+f__U#~SOxqo#EReE>@LXOsQ*xHTtd5@`ZJ$5dumqXX~c;nl7GQZ(hUp-
      z7|E(v;(AvD30ptPDl~_%;o$(}fF;q4;SjzJ4AtuDyH}fwzOh@R?pGGv2(YkT#Y2K@
      z|Jp(`UN(Vr4}4T+^;T`zS6KM#M6>e+**c{{D;24yB9GO2x7~(642%#Vdd1b*ae^>q
      z4?yG>8?nI_-vlVMCLv#PmW+$Sq%TXD^pHpjKTUO-)qdFVmY|@9r%_e9SDynFhf>Mc
      z>VgPu<mI+Fo?_Iw&A$lM(V0rpFGz3um-pXSWV34Oi3Drb<Kt-RR@RMi)j87ree+w+
      zowHKhuvkT9-gE1_>!*dmd<)AIte9J4&+;O7u>2h>C)Ey*C+ad>DK0dCj(=O&hOzg@
      zP)}T|W#qrNPae^%qo1z3M35bp#h}ws<$^WU1EL#<vg*#d^{MjTdLp86$6OmRaJGlP
      zhD8#}8ZP|}O|0Bx?x2@RN*(t)t2wDH8;)Y!!#FrI7X$NJ(Edon?KrmHt#KusGWK-b
      zifm5m>ZC;mL_m`x_`cf7#3l#N^B5tgqDobrssa?Zevz7oEkm9Q2%q|7qbqTSrNenb
      z|LJHMI*~r%)zsv_5uqN)vGX{wuMp{hSA3Zi@-uV+Eyp*L*Hobay}JE@8-4Yn6q_7n
      zTzM2I{ohJ>4?EQ>_PXB>{Z3oD`e|u{LsX>Qyr?*<LJsy0a{W)i_}m^U!H;?x4I|Xd
      z4`S$+p9_=JCgz7LiM;1(5JT-x&4*xsPJfoqDs`j(mK__))I&b;Bv<n<1bf?9B~<f}
      z+zcA+^-OouRxEu(C&ZXtzSmRHinS@~@jud3WE*nL(aw}(*0`{&S0k~y^V{qZ<mfvQ
      z&n1oUM*KygmGBGe+siNh4!rXFGq+Vf#F%i+0tA^h`u=QWSaL|r9-_nn@FhH^s)k#G
      zzHCBpTV7X6N?Q#6FlubcApd@5$$lpowJAbs@yAP24CT^Ou65!vHtN8}4;8KC>xZ_M
      zUW9(a1gsyj3w4U#I*$QeWoZ(P#vQ{K*?3N-qAJpk;TeR)Q33R!C=}``3B)KD_<HL`
      z`=d<?F*{VrY^9jR40I@CHFNW!MMA!u-4nGn0%Ev_kB3^gs!@%9eh*!(Nr`9<J$QWQ
      zpIRpQ3U!F3oftWx?yk|6ugQ^8uG&mPkO2TX<+(%>sVt$(vB{VWwVv+*A2AiH>3Yd(
      z(JiwWFz6u?2sS@gRd;q~?^dllE&^{|FE^y+R(*!pX>MX0lbLK+ouyj0>X#A=tpYg<
      z_M4WOE>CoQ&>#H|-ID$rsA#08vS3TL%XEB}2@{<omn4)hactiQswx@94*jNq-#N75
      zTqMsqXymTT21AN``<N~M`~Ka-@;qkSHfy89nVCP=MclrI2|2lTmX(hHr&BY99e3kF
      z;ZBg1L-|Ygx~^>n)I=%XN9SCmP6XL>`W&zu7U@#X5fO^l2TAN39MSU$PP5wlHBW0H
      zfKPx$KE;S+9TIB;r#rC(`0?8PDO5wI2mrwwauN1p2gwF{IKY<)9K0!u>rd_lkFfkq
      zm{>+y^iCGN7msMdR;ea`kIM+u>GD$y@P^``fGkI3N_;V!lh9_LhUury&S%-!&pvNY
      zO<L6uvoQq?@XAqMe-uwD(?_V0xH58W+0|F(;`xD92Px>7>#gqYXMw~RyWhWM(*Zv;
      zCXX;95j@1494<DOFS2ztwUU-!%nl~gZg1D6$w<fkoiB5E-+fI@+}M^>KaiQk&-ca7
      z#8>w6+#EtpP4(x{GbePo|3jWJv!ggHSL6H4_7xOL_EQOs;@?21GT6)B{<|oQN6Dlt
      z)hBdkSk|X!e@$=S$AIT8TpUkk+oT7{kCrI!kFN<cb(uljhw(fekawY72_SdZ((1|<
      zUkwawAbUM$Oo(?7s4VE8u;7jeJF+$o65<Oa=UY%wj=@7kk(5+WR$E$xrJ=c)u;@Rj
      zC$L#vhNju9Hda%CK!|fiqoUxC30R(i*2rDqTNZ}d)pfJgj;1lxf6LqTYJYkdy12kZ
      za7oV#$)kdL8nJguGfaSv_uRy{D4<P{ipj948+Usc#&tgu1S5no((6#2FALcm8A`pp
      zo<hrXH!3ds^^rpb>(jB8M)P6ig0IE0AR1ll7$3K=Ff-E#5t%)ddS)Z*eO(eXK8qhm
      zU0coJye<+oWjQ=tqnHGem#<X=-_+J2j`E5B2Nnj6)GUxxRwBwzW%&A>sw&$0-pq8<
      zqdq<Ml$7uWR5%5Y_6tC#QAcAd_}A6AsJl1X)Ld>bJ}RTg=Ne=;NVyf2V3M-3Si6SN
      zkOAZnJ!N>k^2^OIug6D9THK5EU#28<WI`n*$4R^lrrskR#^%C<2`prp31%>W6y@e$
      z)zzjiEJL16O+ryp+VwUt2M3IVW{8o-fB$BP__g0ImUurkjkQ1a)I8St-=BGx3s806
      zE;}`AlrDlIAX|M41T3SkSDC*^`U|a;)Fzekkf;Rr$Ud2jq)B`kp&$X9xNLuRm7odd
      z`b{z2ioNt3og|W>fXNsv$u^Ra?z*p3o_`RKC2-z>2y{g7D1-#rGl6~88W+B*_+}bq
      z@@_~eyT3bbZU`38DYF$6Ji^;?-kY1eB#=eT&()b*{R9uRoOgW+5D9~%0e*|xXUVbQ
      ziWcRE-@aGpe-a}^N987_kuCbq8X4AOb$otaTp2Zx#^=rujlCyH63Kwv=xf9UG)Vx8
      z6S*HUZ5ILn0mmSPS||F?5L-J;7ERW&EON~Lm{hwIR&xc!F-EUD*OOI7nnjrWdMs^)
      zl(^^f?w!u83On7cEFZhO)zMKd^J_Q&$Z~TjwYGn=I46^wFf!Vo)7QV8R^>oPe6}ZZ
      z46Q57HL&9$Mn0zw6@1vfZa)2NXLsBFd?_k9(cDA`otBw23~d}0sS?NM??`q~<BI8W
      zE6X|S2&og}=!FC3!%o_!IeRyh+*dCrzar@}OC@kYx;{uE0ZMp%SAm#WGa#;>kH*Fr
      zV*(r;%%kM8hhAst03ZY9$618!0R4%7eJw9d2%m3A1_0!ZGTrp6UDIz#prf0ryVdV4
      zo;T_c0LUp;k6%2Qwk`+TtuA-5;y@^Q*3t-2FZ6vpbd=#Cut0Q)NRs^H!!H%}ECAqi
      zh{-<7GnJqr85X8MuWfREXH@%VcZ$jEFB<LI_pzBaC#RV0cX}9sAkp=$D8;gJepBhr
      z>5p6OZ?Q)b%B96u!>NfLPbUax?Y=5g&Jv|Mtj0#vgRXbY9->NI@?bE!BsM%(Dmt|?
      z%Mb#u-Pr+3`*~M}@XJAAx1syxz`@Q=XhekfD*3ot_TPcvtwQR*NSN0>eMBZ&wVE=>
      z{?vR3hJHDI0|I(nCYT2+q&mFBEhE^*cnLpQQsM#8!aCa-i`hWmx4RWRmakLpuCCv7
      z)1{TKHT3ubi)O+S{4XSN(-r>A4f(vj;~EBr_;_adDUVgb(vDo~BKiSN$;JQ7aOjX>
      zgMocuo(W$RuelWr=<~W~H}Gzy+A~Wk!vhBF$;5}aIJTV}RO!dZN&2sjxAs2OZ!2z5
      zS2lCU8M^TozjV0-%s1{**A{mSB%Z`1#Q~satx8n~8J%O9NW_l!b|KVQ8bP%2YP5^&
      z*#J86E~3k)g<68@3s%lI-vJ;#z6_UcnP=sC;A-p)1{il|8LG5h5o|LU7nzVsQQ_hO
      zp>inWi%)d^<JPiKiklMD^78tz(xfUVC<=&31=Y^zE2S)AW(%3h4W{uOz`-pSWM()v
      z{^Yh^qAYqunKp|JK7}1)b+@K!Ip@zQ{V`r{OU*pFbkrneVT8c>J@dcC+SZq9MNHdO
      z5`qXhZep+!D7ACezI@Ey^vh47#{51Ez+hpj9Yy}&;P@tx5<9ljpgL*G$Vds^0qdUf
      zKLYgN?wI|+lHq`~5=A#oZQFM+uI&GywNsr(`g@I0bLYw-B4hH&{O8NS#VQ0cV8&7D
      zX1^Eg`*NNyV!Y~og}_W!lU`-%Xfh8aM#ctMyM!jO<5`D^VE}G%XLk<WIX_xyY#Ig{
      z%gEM?APi!k%-CWpTxjeT1g$|w_-YM_?z;^uQ9L<3GHii@eB;|IRR7J>UfP(PL8z?6
      z09Ib5D8HykYTaE-rzD47&o^sq>*V+(_Cv3gK<m+BY*ngn<4g3i>v3%N$Ft>9s=p(r
      zfjNPKXKkqzvf=yM?T4p)LvPE?)p=oZp-8~`W8*={Xs20-)t4?gs-|Ku37YF_Gu>d!
      zDTHU^H)K?D0JxFfR64$KBh!Dmzaj+>B(+nd8Kerjjq19^$0gFezTO2h;Tz2qso+UM
      z!fc~m`uK-a^1WVO6*MyQEqNnjdF`?+|M-u}DLP@@>)2tz8gl~frJ252!~pPvUhimQ
      z)sfg>bJ6%i)Y#f(F-w>kq!dl7b-`xZ57QI@6$cRcG|1$}jj75@Ii4es!`CIH)<tff
      zpf+rYnH|Dy6AT0POCo=lGu<g7rbozd_$BjM)Suzd&|u;X=w4=~Jv%nw2Z8j2;>LpD
      zCpcTHs*uigq**vX$X{$`HJe97rjP?WS+{N;PPiE%<j4WnO@ey*f4Vzw3*0My7X(Lc
      z({4T$f4)84NJ*jn^G}0C=zE8^ZT;(-e?nQLHOx309*QIkK*FwrkC+0o<y<0lmZM7D
      zwUyx4(+ysMDVV}x$K-$b4cY+V{R#m=M8cFgq3GSzXviqh_k`ZvpQf5zB0Ap#7AsL`
      zJfrZ_${8jn=e?2f2novsUNUHp97Qb7q<pOXZ9k^2ED}X4`PJb3s+8X<HFb;hwq-a_
      zsUiiXCXE@a>AU(&h9%grAHjpqPcqsnuZ6P7o#FQdfcz&8WOaY`fJGhuML-yW3AMS(
      z4w)qmZ<SGPoesbDG)(0|5ubLbeCeJS2|>h02SCSes-cyd<dj3~zq5z{3I!yY;U#-A
      zug%a>TU&qCf|hq_@tL~l|MXN<bcvP~v_KzAc=T^ThVkD3)RcjTiEYMm?fRzdwruno
      zUOMe}J{!|NiKhwHm)5C^;=lH$%&A<sfI+Rw-J1U7cxEm_q!<}4q8yY;0m*Oh+vYoX
      zpsnorA<I&g?hQJ$U3KE%*RhlG)SKUy)zWe26#iSBPj@874Wj(C41mdN?r7whIGo03
      zmWa7xEkp<;vJN07sA|2L4c`4y$A#bmRZpK6l-ne}#7kv(6wbfR1-dge$V0Kbm`bo>
      zn$V{^!LSW_jk!fzcfLp;PDB8}YgJ-&_@Y>zw(R;{w6I<PXEpD*n3R?B<LrDP^Aehq
      z+C{OteCPfKyB;333oM|3Q7e2|#XgCXu}_Kw(97FC6*|7MnhEB9_<>zh$8nJzj~;My
      z%=@2)$)6={hL3Y`6=w;%`@fg~;9L+86De@9SFB}0XG8C0!|P{-6?Y)%W()6NMVCZ;
      z>tn-{j5fxw)uwdJM=7F<|CYOa5{Vk1qIJMdcz!4jX22D}go`BLOK-ElWuRO5kGzPa
      z%Yvjm%Z<R_Q`V|E*MN%bm2(ou^%3W%vbBR8QbbsH&(RGrl(#P9%M9*Th-GMAG!r<V
      zZ0&eS1*@gcBz5V@7uUlT=tNdsYFKAsq(F3*CouJkWq^JTgOpf8@)=V4tW(haF#XDo
      zzPzK;;xE&sXL({<2cO`X`rqQNmz&Q@T+8$gI89))*0dJ?xe=$+{~lw(t(z&VMq7$h
      z8<UXt<;0qU$1Q!WA+(RBqv2IEIW{%TrHNB3DPlBt5S{6{PIxK(O~9@ye^9%6_%o((
      zx$=8jQhIHzURcyxs%Y+P?@0UZ{^H|rtxO?gVEy9N!nXP*jPe%)R!Zgew&Y%>+#DCc
      zDX;3Ws;hbhYa2;7`(?)%dp;1i0W52b!NgEQH(>Gay{tJHN=)}q*PiAmfn}<|Ozi#=
      zcC9ZkexK^5_*aKD-#y8HH_jn~K8Mt9?5V(d|2qe&(Bz7IUKm;t{x%tzlo<LSw~0sw
      z%CkoU)yed)(dCCr`Y(moy<~ECuXXTqm>{x;X)q|KCN1gV_%k3fJnm2OUSFkv1p;!C
      zI-_+|E}ec+d_1AOVZL$B;7-H@;OPOtLT+s=(Z_Y2Tzg->w6XNtg4?$d#oE4Jvkap9
      zq)0w~*`>xrU_GV93g~D{$T`ztT1!@*?{moI;OR&yFinTBVeXX`K?crd?k}W0Pf$h$
      zal^Hq7NcSM?%v9-Y!$pr%ye-cPCshwEexlpvf1lNDJTrT+$9RVr+IUF-=DW*rxO1g
      zcpXs8HzIu947=0(Z`V9CT~gWnrvV7avdlqvc&umCQ`VK+e60Gjg?^Rc-mq0ptm5l=
      z7ux<)>d>OpnAaA10w*~@S_&syx<^Aq3?n5fCfn)88Apulpxjw$IE-vO_&tt+G@IDx
      zR&F3nnAd1-+k8!aU?}2cMb&E-AHTZ};bVJWE(;CA&s${&hoA=DKLZlfbgBA24+c^}
      zwl|03VFc#<>3wNwNdW;3{Ad5AaWWhXD;Vg`Id6=2tNPv*JaJ$0Z*9)S&*1my*YD2g
      z+P6l<ndI%7Xw9kn$Rz)m`td97=qsjpq5a>~>+*ILhaeX&4m^z3zdy->in^0(X<44B
      zibk9)`!jrKt|BsL%~PnN%1-CK@9XaL$==q99lMz7N6x&Q`^xEP+sb85el2bADJUp#
      z)6so*f2|R&&ZQO-S~aPk8cNtHDr)ofy-O~q&i1yNJiPn#KuGiM=8@Bx&rQDG{Uc=U
      zO)n$uw|0wOL%uInr_wBJI3)^cY~RZ0(0X+>bUuDKU~-9N*2VBflQMTA>L#w<d<=u~
      zKZ-}<pEXumnEN5mnhqRC)~%gr5Z9ko3;R_6lt-yQy5G=vEojc}wQ?fQ-+Wo=Ym7zb
      zz!j>AttGX~tHo7RaMdiGPT{%{C@(Df6e>f^!)-f1PDp0|#beUxShJm6hEyJjV8`e7
      zUmD8^z3SB|Z*)_amNIi*e<L&DlI(kbfad>t0itHhyzRK~a^s#7YFqEiN;}`AHt~8`
      zb*zTJGv1E=D_e6nT0Gs&=2_IWlVY+Qc>lK6pLx^@+vwjU(go|MPq@$wc<)z+453CB
      zIj6K3Hc{}b7*(GCH+Ob;1^<jX#Wr#N(8*F7YcA!$-}E>CyuljZmXN3CFJ~S7#e6`E
      zc+qCP8viW+S38+`b+>WN>A0!9iWx_x$odcX`18xy;=%2qj&^Pe@Yg>+KK#dd*ZHfR
      zOZl1fOu#GqWH2#R`D^03Inz7Sv9uy)QKs_>E<EKB36U5%_<k_Y&4;&zrWNIkVe>_&
      z-R|vziLR*lXMbvw5398`or}GZ{quz2Y{bTIv@mV5<f{+;buQ@h6huy*bL601)6%!Q
      z9WuP!8}FaakBK*Py82{?X>pQ2hvSx)-V%{l|0u}y*h&f3Ed<+vjWB73_Z{(IpD8VK
      z$TC_RDgSub-VCQlm?l=awqg89Zrm?zof{c0Yc^kuOvf;N*+|-mKoJ*9rO3trbmum*
      z=m8nABebE_FBLHg+8I<E{l~!kW<ja@<8OVzm*8Fm;?wk-U9!4e@J%T->x0Hzduryi
      zn@)p<OvBm3T)&3;EdAP&e5!nM)rkg~g7;R;pRrPxlXyEm?^1j9SDW`2x$`8RcHoP}
      z^lW~(k!ixIiqzQ6=F8XcPXt-G`BoL)NA*o8@Vv&ysJ~tJX>@k+o4Gh<sNokD%Ay_z
      zXn!|${-h<A%~^=oRgmTIOYEAv!Q%G|S3CYUs{!bn`^!y}asQ*WRe+u@44?$+-C5q_
      zUVeNYLBe=EwbyfpRrPT_DIhF*_E>YFI*Z{;RUUn<$+sGn)!5x0?)y%A`l60Bm~#~R
      zV4t}^z`OWX5kmZd1fe8LoG?@doyyc?o>$?o_1HOWyZ&4z4>NO3*h_h?gA+QU01J!j
      zVB9v9bc>L#vf2kgqzD?Ec{^0gn4$fMkU!(w4ZF-`YA&j>HxY^Q-f8hVTkkFV(G<n>
      z!_!Ivzh;c5$!I<_?$+Ktj`HTkx%2x9%wA*y7+DP757R|=juVdpk>la^mK_;346^xA
      zs@S32-SdSdWl7%FRun3+H#%~Bipde)CoZ$jTh7=-3kM+fXqDT2zy9-ZR_r(?iKdjX
      z>bQ1oi*EnZa;fxB(w$}W#8@EVZbVz5?dd)4RF#7FijwO@2QJw4#bzV(F(7D6K_Joy
      z5%43j!?WmkeDTz@al>m~vHAXeeVl@zJ4D}mrpWS(giJlZ=Vfj|EtmUcuKC+*hKxkQ
      zgAiBW;5E{hf9?y>$N=cN#E!-7?K&cO@e*_$a9U&1e3tipHSfoPa9dOLXuOA|^%g%X
      z?W!sajJwTgUwo`vt!J#y^M&ySTKmX1yvNs*MV=2Iyj<qqy3ebnMVkI&OCh0&AV@RS
      z177SU-xW`H?lV*<Jw~_LvtOJy*`cj=h0x<9l83{1<&0GOezYxb?NU4O_k{iLUutgV
      z=6y{=Q`%oumfU#aWe&%SVL2yLh}Ujz{ewZrX$M3S%BWO9t5@9ro!g9|1y-;?&1pPG
      zOxhFq=UA-r7830}`03j0-`RfoNsBBQ@j+uhBrqkC#Da17>oN0JTSkS0`893M?Pf}@
      zB+V%vH1b3?0+v9T)b@Yf_-V1Yop#|Z&O`hjp@L7}(e#&{>vJ#&P`RMtA5dU`qM%c2
      zhC$a`a4wJHsLhv2Hj2j+ef`@o{oz@cl^w`CAc#q}JUcMtlph<7WMKS?9Na5<X5ran
      zdoXz%gt!*%<qZRXDEIag4KPaDPEMBH=ltse_SzcUzO_P}(Pfc=Xt0f<lPq*bnBkAd
      zYhVhZTS{=_zqmIWWLWRrWUXdb7iQfQ4kxq428Y`;lHd_3!KdT@NTkWUYc`L{`IYcI
      zPHKBo5O0q^QXX|i$K}_xzF&mFbuBXJa<9F?JkS`OWpEz)uHjbyUS}yuX7WwAnTLhT
      z4lKO&`*?JEJ_-xDz8_Th^<sascL530+0BhZQgZZSi*%{3_T?f<+I&o5kGC<0(sH)s
      zdQeV75v#k3U_d04axp!&-N$pF-z?>=!m+cMUp?HD_Vntb6AmokOsej(<BF7~%0XOU
      zp85H!z2HnD_9n|IOfo+Y758j|nY_1I{)s=*Ag!W;Uh8Allw}$#MS@|^QTf<PL*+wR
      zGsN0znL2dEN%7+GMxMYk0T!4vYGGNupEIS2Py6=zUR<&++6{li`ytbp6Zp&d9><M`
      zz?|>ttLjn$J}DbWC6-^F$QACI)D5q$4iOQt!8{}R=Db@!H&@e{^yjmKx2x;$V7z2{
      zdiI!*wfp_XrFq7J$99PIOi`75Y6_oSh^;!JScBK$sQ!OX^u4FW2LqmuSHVSIL0%}+
      z`|P`)(9EZZ!=DD|qE?kW_p`N9&oY{f9XcnXB8T5Dx7GBBy09a1emuMPYv|YJ&`W?o
      z1m+dm3?$Ox6oyB$b(T{quUEo%PHD>vA3fLo*=1E$PG!h{*eUUa4upk8t_r$H2hjY3
      zOds)Ul$2($xgutYv(x6^67(9HsE^Fo)l@(`@Pw@wlmxw<PPVV+_TCwug&LIF<>B(;
      zYl6w$Eqi&Z`oPuYUAyqXKkT^}DrP{$revd!m@bQcxgvYu<n`$jV{oXJiu-o{C7i=<
      zbWY9^5p7$w+d+q>xB13`&PN<fDE^i%pT}J70~kI(1l6a6(Okp$ptBA(i09{?Q;Lj_
      zquJCuEsteSq1S<ekB|B$v7(0U$q4Q8e7-r*$nu7C|ND=zOh?6?bK&%th=y8C8%t{w
      zUGr-Egiti$_P1_2^iHK2xyr50N3>Y}p-Juc*+Fdr=A8YO>E;8mRX$d%s;Q0Rjw~;7
      zP~n5Du9K6Z0`Xk55t*M760rXT-7()k#FpF$!;w}!M*;!q3pLw<3@W!c=O|tzSMW*D
      zKLaT^Qb2?C)?)8oaHN;cvzj?>+#=j5PtF|?Z(?(#b2BdTy^wBGz}UUP28BiCa$hB?
      z!t^W3Zjrc!-_jNsz&M@871Z)J>@VDwXb;r6z{!AvZ<^^?#K2DV&vQWWCjvw!l=LY7
      zP?8#qP>gbRJ-spW7<;N*kdDKkJLFST*S!@xnhJ}T!IsJ0vvmAFIvC%OhT+onmfolt
      Q-a{rJE2$t+CT0-uf7w`T(EtDd
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/va.png b/bower_components/select2/docs/vendor/images/flags/va.png
      deleted file mode 100755
      index ce58c0158dedd4620f59ec2427c2534a327faa3e..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 10138
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/vt.png b/bower_components/select2/docs/vendor/images/flags/vt.png
      deleted file mode 100755
      index fe1b19fe2e1edf87bf4587afb0999525628de8da..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 6397
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/wa.png b/bower_components/select2/docs/vendor/images/flags/wa.png
      deleted file mode 100755
      index 0c0d8f0fc98ed1d0bd11db7097046f40ca3d9661..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 45254
      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
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/wi.png b/bower_components/select2/docs/vendor/images/flags/wi.png
      deleted file mode 100755
      index 2569f176c34465d94d739e815a8a11acf2a23264..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 8539
      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
      V;IRQD+}i*E002ovPDHLkV1oE3EZqPA
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/wv.png b/bower_components/select2/docs/vendor/images/flags/wv.png
      deleted file mode 100755
      index b40389966ce3a9e44c264bead3e495db3612c34d..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 45254
      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
      Kr?&j&r~e-pNJmxx
      
      diff --git a/bower_components/select2/docs/vendor/images/flags/wy.png b/bower_components/select2/docs/vendor/images/flags/wy.png
      deleted file mode 100755
      index 82a453cc3a03a902bb21f9e0fafbac9e0c60bed7..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 4343
      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
      Z6n?T|PS#-(d*Dq5prx*>R-s}O{vTzqh%*2H
      
      diff --git a/bower_components/select2/docs/vendor/js/anchor.min.js b/bower_components/select2/docs/vendor/js/anchor.min.js
      deleted file mode 100755
      index 68c3cb7073..0000000000
      --- a/bower_components/select2/docs/vendor/js/anchor.min.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -/*!
      - * AnchorJS - v1.1.1 - 2015-05-23
      - * https://github.com/bryanbraun/anchorjs
      - * Copyright (c) 2015 Bryan Braun; Licensed MIT
      - */
      -function AnchorJS(A){"use strict";this.options=A||{},this._applyRemainingDefaultOptions=function(A){this.options.icon=this.options.hasOwnProperty("icon")?A.icon:"&#xe9cb",this.options.visible=this.options.hasOwnProperty("visible")?A.visible:"hover",this.options.placement=this.options.hasOwnProperty("placement")?A.placement:"right",this.options.class=this.options.hasOwnProperty("class")?A.class:""},this._applyRemainingDefaultOptions(A),this.add=function(A){var e,t,o,n,i,s,a,l,c,r,h,g,B,Q;if(this._applyRemainingDefaultOptions(this.options),A){if("string"!=typeof A)throw new Error("The selector provided to AnchorJS was invalid.")}else A="h1, h2, h3, h4, h5, h6";if(e=document.querySelectorAll(A),0===e.length)return!1;for(this._addBaselineStyles(),t=document.querySelectorAll("[id]"),o=[].map.call(t,function(A){return A.id}),i=0;i<e.length;i++){if(e[i].hasAttribute("id"))n=e[i].getAttribute("id");else{s=e[i].textContent,a=s.replace(/[^\w\s-]/gi,"").replace(/\s+/g,"-").replace(/-{2,}/g,"-").substring(0,64).replace(/^-+|-+$/gm,"").toLowerCase(),r=a,c=0;do void 0!==l&&(r=a+"-"+c),l=o.indexOf(r),c+=1;while(-1!==l);l=void 0,o.push(r),e[i].setAttribute("id",r),n=r}h=n.replace(/-/g," "),g='<a class="anchorjs-link '+this.options.class+'" href="#'+n+'" aria-label="Anchor link for: '+h+'" data-anchorjs-icon="'+this.options.icon+'"></a>',B=document.createElement("div"),B.innerHTML=g,Q=B.childNodes,"always"===this.options.visible&&(Q[0].style.opacity="1"),"&#xe9cb"===this.options.icon&&(Q[0].style.fontFamily="anchorjs-icons",Q[0].style.fontStyle="normal",Q[0].style.fontVariant="normal",Q[0].style.fontWeight="normal"),"left"===this.options.placement?(Q[0].style.position="absolute",Q[0].style.marginLeft="-1em",Q[0].style.paddingRight="0.5em",e[i].insertBefore(Q[0],e[i].firstChild)):(Q[0].style.paddingLeft="0.375em",e[i].appendChild(Q[0]))}return this},this.remove=function(A){for(var e,t=document.querySelectorAll(A),o=0;o<t.length;o++)e=t[o].querySelector(".anchorjs-link"),e&&t[o].removeChild(e);return this},this._addBaselineStyles=function(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style"),t=" .anchorjs-link {   opacity: 0;   text-decoration: none;   -webkit-font-smoothing: antialiased;   -moz-osx-font-smoothing: grayscale; }",o=" *:hover > .anchorjs-link, .anchorjs-link:focus  {   opacity: 1; }",n=' @font-face {   font-family: "anchorjs-icons";   font-style: normal;   font-weight: normal;   src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBTUAAAC8AAAAYGNtYXAWi9QdAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5Zgq29TcAAAF4AAABNGhlYWQEZM3pAAACrAAAADZoaGVhBhUDxgAAAuQAAAAkaG10eASAADEAAAMIAAAAFGxvY2EAKACuAAADHAAAAAxtYXhwAAgAVwAAAygAAAAgbmFtZQ5yJ3cAAANIAAAB2nBvc3QAAwAAAAAFJAAAACAAAwJAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpywPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6cv//f//AAAAAAAg6cv//f//AAH/4xY5AAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAACADEARAJTAsAAKwBUAAABIiYnJjQ/AT4BMzIWFxYUDwEGIicmND8BNjQnLgEjIgYPAQYUFxYUBw4BIwciJicmND8BNjIXFhQPAQYUFx4BMzI2PwE2NCcmNDc2MhcWFA8BDgEjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAEAAAABAACiToc1Xw889QALBAAAAAAA0XnFFgAAAADRecUWAAAAAAJTAsAAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAAAAAlMAAQAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAACAAAAAoAAMQAAAAAACgAUAB4AmgABAAAABQBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIABwCfAAEAAAAAAAMADgBLAAEAAAAAAAQADgC0AAEAAAAAAAUACwAqAAEAAAAAAAYADgB1AAEAAAAAAAoAGgDeAAMAAQQJAAEAHAAOAAMAAQQJAAIADgCmAAMAAQQJAAMAHABZAAMAAQQJAAQAHADCAAMAAQQJAAUAFgA1AAMAAQQJAAYAHACDAAMAAQQJAAoANAD4YW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzUmVndWxhcgBSAGUAZwB1AGwAYQByYW5jaG9yanMtaWNvbnMAYQBuAGMAaABvAHIAagBzAC0AaQBjAG8AbgBzRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format("truetype"); }',i=" [data-anchorjs-icon]::after {   content: attr(data-anchorjs-icon); }";e.className="anchorjs",e.appendChild(document.createTextNode("")),A=document.head.querySelector('[rel="stylesheet"], style'),void 0===A?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(t,e.sheet.cssRules.length),e.sheet.insertRule(o,e.sheet.cssRules.length),e.sheet.insertRule(i,e.sheet.cssRules.length),e.sheet.insertRule(n,e.sheet.cssRules.length)}}}var anchors=new AnchorJS;
      diff --git a/bower_components/select2/docs/vendor/js/bootstrap.min.js b/bower_components/select2/docs/vendor/js/bootstrap.min.js
      deleted file mode 100644
      index 7c1561a8b9..0000000000
      --- a/bower_components/select2/docs/vendor/js/bootstrap.min.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -/*!
      - * Bootstrap v3.2.0 (http://getbootstrap.com)
      - * Copyright 2011-2014 Twitter, Inc.
      - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
      - */
      -if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.2.0",d.prototype.close=function(b){function c(){f.detach().trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",c).emulateTransitionEnd(150):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.2.0",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),d[e](null==f[b]?this.options[b]:f[b]),setTimeout(a.proxy(function(){"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b).on("keydown.bs.carousel",a.proxy(this.keydown,this)),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.2.0",c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},c.prototype.keydown=function(a){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()},c.prototype.cycle=function(b){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},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.to=function(b){var c=this,d=this.getItemIndex(this.$active=this.$element.find(".item.active"));return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},c.prototype.pause=function(b){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},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}if(e.hasClass("active"))return this.sliding=!1;var j=e[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:g});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,f&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(e)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:g});return a.support.transition&&this.$element.hasClass("slide")?(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one("bsTransitionEnd",function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))):(d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger(m)),f&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(b=!b),e||d.data("bs.collapse",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};c.VERSION="3.2.0",c.DEFAULTS={toggle:!0},c.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},c.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var c=a.Event("show.bs.collapse");if(this.$element.trigger(c),!c.isDefaultPrevented()){var d=this.$parent&&this.$parent.find("> .panel > .in");if(d&&d.length){var e=d.data("bs.collapse");if(e&&e.transitioning)return;b.call(d,"hide"),e||d.data("bs.collapse",null)}var f=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[f](0),this.transitioning=1;var g=function(){this.$element.removeClass("collapsing").addClass("collapse in")[f](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return g.call(this);var h=a.camelCase(["scroll",f].join("-"));this.$element.one("bsTransitionEnd",a.proxy(g,this)).emulateTransitionEnd(350)[f](this.$element[0][h])}}},c.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(d,this)).emulateTransitionEnd(350):d.call(this)}}},c.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var d=a.fn.collapse;a.fn.collapse=b,a.fn.collapse.Constructor=c,a.fn.collapse.noConflict=function(){return a.fn.collapse=d,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(c){var d,e=a(this),f=e.attr("data-target")||c.preventDefault()||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),g=a(f),h=g.data("bs.collapse"),i=h?"toggle":e.data(),j=e.attr("data-parent"),k=j&&a(j);h&&h.transitioning||(k&&k.find('[data-toggle="collapse"][data-parent="'+j+'"]').not(e).addClass("collapsed"),e[g.hasClass("in")?"addClass":"removeClass"]("collapsed")),b.call(g,i)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=c(a(this)),e={relatedTarget:this};d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown",e)),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown",e))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.2.0",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(i.filter(":focus"));38==b.keyCode&&j>0&&j--,40==b.keyCode&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f+', [role="menu"], [role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.2.0",c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.$body.addClass("modal-open"),this.setScrollbar(),this.escape(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(c.$body),c.$element.show().scrollTop(0),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one("bsTransitionEnd",function(){c.$element.trigger("focus").trigger(e)}).emulateTransitionEnd(300):c.$element.trigger("focus").trigger(e)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.$body.removeClass("modal-open"),this.resetScrollbar(),this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;if(this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;e?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(150):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var f=function(){c.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",f).emulateTransitionEnd(150):f()}else b&&b()},c.prototype.checkScrollbar=function(){document.body.clientWidth>=window.innerWidth||(this.scrollbarWidth=this.scrollbarWidth||this.measureScrollbar())},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.scrollbarWidth&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.2.0",c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";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))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show()},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var c=a.contains(document.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!c)return;var d=this,e=this.tip(),f=this.getUID(this.type);this.setContent(),e.attr("id",f),this.$element.attr("aria-describedby",f),this.options.animation&&e.addClass("fade");var g="function"==typeof this.options.placement?this.options.placement.call(this,e[0],this.$element[0]):this.options.placement,h=/\s?auto?\s?/i,i=h.test(g);i&&(g=g.replace(h,"")||"top"),e.detach().css({top:0,left:0,display:"block"}).addClass(g).data("bs."+this.type,this),this.options.container?e.appendTo(this.options.container):e.insertAfter(this.$element);var j=this.getPosition(),k=e[0].offsetWidth,l=e[0].offsetHeight;if(i){var m=g,n=this.$element.parent(),o=this.getPosition(n);g="bottom"==g&&j.top+j.height+l-o.scroll>o.height?"top":"top"==g&&j.top-o.scroll-l<0?"bottom":"right"==g&&j.right+k>o.width?"left":"left"==g&&j.left-k<o.left?"right":g,e.removeClass(m).addClass(g)}var p=this.getCalculatedOffset(g,j,k,l);this.applyPlacement(p,g);var q=function(){d.$element.trigger("shown.bs."+d.type),d.hoverState=null};a.support.transition&&this.$tip.hasClass("fade")?e.one("bsTransitionEnd",q).emulateTransitionEnd(150):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=k.left?2*k.left-e+i:2*k.top-f+j,m=k.left?"left":"top",n=k.left?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(l,d[0][n],m)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach(),c.$element.trigger("hidden.bs."+c.type)}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.removeAttr("aria-describedby"),this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one("bsTransitionEnd",b).emulateTransitionEnd(150):b(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName;return a.extend({},"function"==typeof c.getBoundingClientRect?c.getBoundingClientRect():null,{scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop(),width:d?a(window).width():b.outerWidth(),height:d?a(window).height():b.outerHeight()},d?{top:0,left:0}:b.offset())},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;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))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){clearTimeout(this.timeout),this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.2.0",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").empty()[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()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("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",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.2.0",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<=e[0])return g!=(a=f[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parentsUntil(this.options.target,".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.2.0",c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.closest("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},c.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one("bsTransitionEnd",e).emulateTransitionEnd(150):e(),f.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(c){c.preventDefault(),b.call(a(this),"show")})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){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=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.2.0",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=a(document).height(),d=this.$target.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top(this.$element)),"function"==typeof h&&(h=f.bottom(this.$element));var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=b-h?"bottom":null!=g&&g>=d?"top":!1;if(this.affixed!==i){null!=this.unpin&&this.$element.css("top","");var j="affix"+(i?"-"+i:""),k=a.Event(j+".bs.affix");this.$element.trigger(k),k.isDefaultPrevented()||(this.affixed=i,this.unpin="bottom"==i?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(j).trigger(a.Event(j.replace("affix","affixed"))),"bottom"==i&&this.$element.offset({top:b-this.$element.height()-h}))}}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},d.offsetBottom&&(d.offset.bottom=d.offsetBottom),d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/vendor/js/jquery.min.js b/bower_components/select2/docs/vendor/js/jquery.min.js
      deleted file mode 100644
      index e6a051d0d1..0000000000
      --- a/bower_components/select2/docs/vendor/js/jquery.min.js
      +++ /dev/null
      @@ -1,4 +0,0 @@
      -/*! jQuery v1.11.2 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */
      -!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.2",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b=a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=hb(),z=hb(),A=hb(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},eb=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fb){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function gb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+rb(o[l]);w=ab.test(a)&&pb(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function hb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ib(a){return a[u]=!0,a}function jb(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function kb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function lb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function nb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function ob(a){return ib(function(b){return b=+b,ib(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pb(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=gb.support={},f=gb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=gb.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",eb,!1):e.attachEvent&&e.attachEvent("onunload",eb)),p=!f(g),c.attributes=jb(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=jb(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=jb(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(jb(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),jb(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&jb(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return lb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?lb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},gb.matches=function(a,b){return gb(a,null,null,b)},gb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return gb(b,n,null,[a]).length>0},gb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},gb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},gb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},gb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=gb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=gb.selectors={cacheLength:50,createPseudo:ib,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||gb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&gb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=gb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||gb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ib(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ib(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ib(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ib(function(a){return function(b){return gb(a,b).length>0}}),contains:ib(function(a){return a=a.replace(cb,db),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ib(function(a){return W.test(a||"")||gb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:ob(function(){return[0]}),last:ob(function(a,b){return[b-1]}),eq:ob(function(a,b,c){return[0>c?c+b:c]}),even:ob(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:ob(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:ob(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:ob(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=mb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=nb(b);function qb(){}qb.prototype=d.filters=d.pseudos,d.setFilters=new qb,g=gb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?gb.error(a):z(a,i).slice(0)};function rb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function tb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ub(a,b,c){for(var d=0,e=b.length;e>d;d++)gb(a,b[d],c);return c}function vb(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wb(a,b,c,d,e,f){return d&&!d[u]&&(d=wb(d)),e&&!e[u]&&(e=wb(e,f)),ib(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ub(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:vb(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=vb(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=vb(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sb(function(a){return a===b},h,!0),l=sb(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sb(tb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wb(i>1&&tb(m),i>1&&rb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xb(a.slice(i,e)),f>e&&xb(a=a.slice(e)),f>e&&rb(a))}m.push(c)}return tb(m)}function yb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=vb(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&gb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ib(f):f}return h=gb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,yb(e,d)),f.selector=a}return f},i=gb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&pb(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&rb(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&pb(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=jb(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),jb(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||kb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&jb(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||kb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),jb(function(a){return null==a.getAttribute("disabled")})||kb(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),gb}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;
      -return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?m.queue(this[0],a):void 0===b?this:this.each(function(){var c=m.queue(this,a,b);m._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&m.dequeue(this,a)})},dequeue:function(a){return this.each(function(){m.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=m.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=m._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var S=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=["Top","Right","Bottom","Left"],U=function(a,b){return a=b||a,"none"===m.css(a,"display")||!m.contains(a.ownerDocument,a)},V=m.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===m.type(c)){e=!0;for(h in c)m.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,m.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(m(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav></:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="<input type='radio' checked='checked' name='t'/>",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function ab(){return!0}function bb(){return!1}function cb(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[m.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=Z.test(e)?this.mouseHooks:Y.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new m.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=f.srcElement||y),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,g.filter?g.filter(a,f):a},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button,g=b.fromElement;return null==a.pageX&&null!=b.clientX&&(d=a.target.ownerDocument||y,e=d.documentElement,c=d.body,a.pageX=b.clientX+(e&&e.scrollLeft||c&&c.scrollLeft||0)-(e&&e.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(e&&e.scrollTop||c&&c.scrollTop||0)-(e&&e.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&g&&(a.relatedTarget=g===a.target?b.toElement:g),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==cb()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===cb()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return m.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return m.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=m.extend(new m.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?m.event.trigger(e,null,b):m.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},m.removeEvent=y.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){var d="on"+b;a.detachEvent&&(typeof a[d]===K&&(a[d]=null),a.detachEvent(d,c))},m.Event=function(a,b){return this instanceof m.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?ab:bb):this.type=a,b&&m.extend(this,b),this.timeStamp=a&&a.timeStamp||m.now(),void(this[m.expando]=!0)):new m.Event(a,b)},m.Event.prototype={isDefaultPrevented:bb,isPropagationStopped:bb,isImmediatePropagationStopped:bb,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=ab,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=ab,a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=ab,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},m.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){m.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!m.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.submitBubbles||(m.event.special.submit={setup:function(){return m.nodeName(this,"form")?!1:void m.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=m.nodeName(b,"input")||m.nodeName(b,"button")?b.form:void 0;c&&!m._data(c,"submitBubbles")&&(m.event.add(c,"submit._submit",function(a){a._submit_bubble=!0}),m._data(c,"submitBubbles",!0))})},postDispatch:function(a){a._submit_bubble&&(delete a._submit_bubble,this.parentNode&&!a.isTrigger&&m.event.simulate("submit",this.parentNode,a,!0))},teardown:function(){return m.nodeName(this,"form")?!1:void m.event.remove(this,"._submit")}}),k.changeBubbles||(m.event.special.change={setup:function(){return X.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(m.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._just_changed=!0)}),m.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1),m.event.simulate("change",this,a,!0)})),!1):void m.event.add(this,"beforeactivate._change",function(a){var b=a.target;X.test(b.nodeName)&&!m._data(b,"changeBubbles")&&(m.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||m.event.simulate("change",this.parentNode,a,!0)}),m._data(b,"changeBubbles",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return m.event.remove(this,"._change"),!X.test(this.nodeName)}}),k.focusinBubbles||m.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){m.event.simulate(b,a.target,m.event.fix(a),!0)};m.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=m._data(d,b);e||d.addEventListener(a,c,!0),m._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=m._data(d,b)-1;e?m._data(d,b,e):(d.removeEventListener(a,c,!0),m._removeData(d,b))}}}),m.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(f in a)this.on(f,b,c,a[f],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=bb;else if(!d)return this;return 1===e&&(g=d,d=function(a){return m().off(a),g.apply(this,arguments)},d.guid=g.guid||(g.guid=m.guid++)),this.each(function(){m.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,m(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=bb),this.each(function(){m.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){m.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?m.event.trigger(a,b,c,!0):void 0}});function db(a){var b=eb.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}var eb="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",fb=/ jQuery\d+="(?:null|\d+)"/g,gb=new RegExp("<(?:"+eb+")[\\s/>]","i"),hb=/^\s+/,ib=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,jb=/<([\w:]+)/,kb=/<tbody/i,lb=/<|&#?\w+;/,mb=/<(?:script|style|link)/i,nb=/checked\s*(?:[^=]|=\s*.checked.)/i,ob=/^$|\/(?:java|ecma)script/i,pb=/^true\/(.*)/,qb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,rb={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:k.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},sb=db(y),tb=sb.appendChild(y.createElement("div"));rb.optgroup=rb.option,rb.tbody=rb.tfoot=rb.colgroup=rb.caption=rb.thead,rb.th=rb.td;function ub(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ub(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function vb(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wb(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xb(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function yb(a){var b=pb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function zb(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Ab(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Bb(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xb(b).text=a.text,yb(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!gb.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(tb.innerHTML=a.outerHTML,tb.removeChild(f=tb.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ub(f),h=ub(a),g=0;null!=(e=h[g]);++g)d[g]&&Bb(e,d[g]);if(b)if(c)for(h=h||ub(a),d=d||ub(f),g=0;null!=(e=h[g]);g++)Ab(e,d[g]);else Ab(a,f);return d=ub(f,"script"),d.length>0&&zb(d,!i&&ub(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=db(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(lb.test(f)){h=h||o.appendChild(b.createElement("div")),i=(jb.exec(f)||["",""])[1].toLowerCase(),l=rb[i]||rb._default,h.innerHTML=l[1]+f.replace(ib,"<$1></$2>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&hb.test(f)&&p.push(b.createTextNode(hb.exec(f)[0])),!k.tbody){f="table"!==i||kb.test(f)?"<table>"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight),b.removeChild(i)),b.innerHTML="<table><tr><td></td><td>t</td></tr></table>",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)
      -}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||m.fx.stop(),$b=void 0},m.fx.timer=function(a){m.timers.push(a),a()?m.fx.start():m.timers.pop()},m.fx.interval=13,m.fx.start=function(){_b||(_b=setInterval(m.fx.tick,m.fx.interval))},m.fx.stop=function(){clearInterval(_b),_b=null},m.fx.speeds={slow:600,fast:200,_default:400},m.fn.delay=function(a,b){return a=m.fx?m.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a,b,c,d,e;b=y.createElement("div"),b.setAttribute("className","t"),b.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=m.event&&k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("<div>").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
      diff --git a/bower_components/select2/docs/vendor/js/placeholders.jquery.min.js b/bower_components/select2/docs/vendor/js/placeholders.jquery.min.js
      deleted file mode 100644
      index 02845bf5c9..0000000000
      --- a/bower_components/select2/docs/vendor/js/placeholders.jquery.min.js
      +++ /dev/null
      @@ -1,2 +0,0 @@
      -/* Placeholders.js v3.0.2 */
      -(function(t){"use strict";function e(t,e,r){return t.addEventListener?t.addEventListener(e,r,!1):t.attachEvent?t.attachEvent("on"+e,r):void 0}function r(t,e){var r,n;for(r=0,n=t.length;n>r;r++)if(t[r]===e)return!0;return!1}function n(t,e){var r;t.createTextRange?(r=t.createTextRange(),r.move("character",e),r.select()):t.selectionStart&&(t.focus(),t.setSelectionRange(e,e))}function a(t,e){try{return t.type=e,!0}catch(r){return!1}}t.Placeholders={Utils:{addEventListener:e,inArray:r,moveCaret:n,changeType:a}}})(this),function(t){"use strict";function e(){}function r(){try{return document.activeElement}catch(t){}}function n(t,e){var r,n,a=!!e&&t.value!==e,u=t.value===t.getAttribute(V);return(a||u)&&"true"===t.getAttribute(P)?(t.removeAttribute(P),t.value=t.value.replace(t.getAttribute(V),""),t.className=t.className.replace(R,""),n=t.getAttribute(z),parseInt(n,10)>=0&&(t.setAttribute("maxLength",n),t.removeAttribute(z)),r=t.getAttribute(D),r&&(t.type=r),!0):!1}function a(t){var e,r,n=t.getAttribute(V);return""===t.value&&n?(t.setAttribute(P,"true"),t.value=n,t.className+=" "+I,r=t.getAttribute(z),r||(t.setAttribute(z,t.maxLength),t.removeAttribute("maxLength")),e=t.getAttribute(D),e?t.type="text":"password"===t.type&&K.changeType(t,"text")&&t.setAttribute(D,"password"),!0):!1}function u(t,e){var r,n,a,u,i,l,o;if(t&&t.getAttribute(V))e(t);else for(a=t?t.getElementsByTagName("input"):f,u=t?t.getElementsByTagName("textarea"):h,r=a?a.length:0,n=u?u.length:0,o=0,l=r+n;l>o;o++)i=r>o?a[o]:u[o-r],e(i)}function i(t){u(t,n)}function l(t){u(t,a)}function o(t){return function(){b&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)?K.moveCaret(t,0):n(t)}}function c(t){return function(){a(t)}}function s(t){return function(e){return A=t.value,"true"===t.getAttribute(P)&&A===t.getAttribute(V)&&K.inArray(C,e.keyCode)?(e.preventDefault&&e.preventDefault(),!1):void 0}}function d(t){return function(){n(t,A),""===t.value&&(t.blur(),K.moveCaret(t,0))}}function v(t){return function(){t===r()&&t.value===t.getAttribute(V)&&"true"===t.getAttribute(P)&&K.moveCaret(t,0)}}function g(t){return function(){i(t)}}function p(t){t.form&&(T=t.form,"string"==typeof T&&(T=document.getElementById(T)),T.getAttribute(U)||(K.addEventListener(T,"submit",g(T)),T.setAttribute(U,"true"))),K.addEventListener(t,"focus",o(t)),K.addEventListener(t,"blur",c(t)),b&&(K.addEventListener(t,"keydown",s(t)),K.addEventListener(t,"keyup",d(t)),K.addEventListener(t,"click",v(t))),t.setAttribute(j,"true"),t.setAttribute(V,x),(b||t!==r())&&a(t)}var f,h,b,m,A,y,E,x,L,T,S,N,w,B=["text","search","url","tel","email","password","number","textarea"],C=[27,33,34,35,36,37,38,39,40,8,46],k="#ccc",I="placeholdersjs",R=RegExp("(?:^|\\s)"+I+"(?!\\S)"),V="data-placeholder-value",P="data-placeholder-active",D="data-placeholder-type",U="data-placeholder-submit",j="data-placeholder-bound",q="data-placeholder-focus",Q="data-placeholder-live",z="data-placeholder-maxlength",F=document.createElement("input"),G=document.getElementsByTagName("head")[0],H=document.documentElement,J=t.Placeholders,K=J.Utils;if(J.nativeSupport=void 0!==F.placeholder,!J.nativeSupport){for(f=document.getElementsByTagName("input"),h=document.getElementsByTagName("textarea"),b="false"===H.getAttribute(q),m="false"!==H.getAttribute(Q),y=document.createElement("style"),y.type="text/css",E=document.createTextNode("."+I+" { color:"+k+"; }"),y.styleSheet?y.styleSheet.cssText=E.nodeValue:y.appendChild(E),G.insertBefore(y,G.firstChild),w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x&&(x=x.nodeValue,x&&K.inArray(B,S.type)&&p(S));L=setInterval(function(){for(w=0,N=f.length+h.length;N>w;w++)S=f.length>w?f[w]:h[w-f.length],x=S.attributes.placeholder,x?(x=x.nodeValue,x&&K.inArray(B,S.type)&&(S.getAttribute(j)||p(S),(x!==S.getAttribute(V)||"password"===S.type&&!S.getAttribute(D))&&("password"===S.type&&!S.getAttribute(D)&&K.changeType(S,"text")&&S.setAttribute(D,"password"),S.value===S.getAttribute(V)&&(S.value=x),S.setAttribute(V,x)))):S.getAttribute(P)&&(n(S),S.removeAttribute(V));m||clearInterval(L)},100)}K.addEventListener(t,"beforeunload",function(){J.disable()}),J.disable=J.nativeSupport?e:i,J.enable=J.nativeSupport?e:l}(this),function(t){"use strict";var e=t.fn.val,r=t.fn.prop;Placeholders.nativeSupport||(t.fn.val=function(t){var r=e.apply(this,arguments),n=this.eq(0).data("placeholder-value");return void 0===t&&this.eq(0).data("placeholder-active")&&r===n?"":r},t.fn.prop=function(t,e){return void 0===e&&this.eq(0).data("placeholder-active")&&"value"===t?"":r.apply(this,arguments)})}(jQuery);
      \ No newline at end of file
      diff --git a/bower_components/select2/docs/vendor/js/prettify.min.js b/bower_components/select2/docs/vendor/js/prettify.min.js
      deleted file mode 100644
      index f66f6f2352..0000000000
      --- a/bower_components/select2/docs/vendor/js/prettify.min.js
      +++ /dev/null
      @@ -1,28 +0,0 @@
      -var q=null;window.PR_SHOULD_USE_CONTINUATION=!0;
      -(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a=
      -[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c<i;++c){var j=f[c];if(/\\[bdsw]/i.test(j))a.push(j);else{var j=m(j),d;c+2<i&&"-"===f[c+1]?(d=m(f[c+2]),c+=2):d=j;b.push([j,d]);d<65||j>122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;c<b.length;++c)i=b[c],i[0]<=j[1]+1?j[1]=Math.max(j[1],i[1]):f.push(j=i);b=["["];o&&b.push("^");b.push.apply(b,a);for(c=0;c<
      -f.length;++c)i=f[c],b.push(e(i[0])),i[1]>i[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c<b;++c){var j=f[c];j==="("?++i:"\\"===j.charAt(0)&&(j=+j.substring(1))&&j<=i&&(d[j]=-1)}for(c=1;c<d.length;++c)-1===d[c]&&(d[c]=++t);for(i=c=0;c<b;++c)j=f[c],j==="("?(++i,d[i]===void 0&&(f[c]="(?:")):"\\"===j.charAt(0)&&
      -(j=+j.substring(1))&&j<=i&&(f[c]="\\"+d[i]);for(i=c=0;c<b;++c)"^"===f[c]&&"^"!==f[c+1]&&(f[c]="");if(a.ignoreCase&&s)for(c=0;c<b;++c)j=f[c],a=j.charAt(0),j.length>=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p<d;++p){var g=a[p];if(g.ignoreCase)l=!0;else if(/[a-z]/i.test(g.source.replace(/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi,""))){s=!0;l=!1;break}}for(var r=
      -{b:8,t:9,n:10,v:11,f:12,r:13},n=[],p=0,d=a.length;p<d;++p){g=a[p];if(g.global||g.multiline)throw Error(""+g);n.push("(?:"+y(g)+")")}return RegExp(n.join("|"),l?"gi":"g")}function M(a){function m(a){switch(a.nodeType){case 1:if(e.test(a.className))break;for(var g=a.firstChild;g;g=g.nextSibling)m(g);g=a.nodeName;if("BR"===g||"LI"===g)h[s]="\n",t[s<<1]=y++,t[s++<<1|1]=a;break;case 3:case 4:g=a.nodeValue,g.length&&(g=p?g.replace(/\r\n?/g,"\n"):g.replace(/[\t\n\r ]+/g," "),h[s]=g,t[s<<1]=y,y+=g.length,
      -t[s++<<1|1]=a)}}var e=/(?:^|\s)nocode(?:\s|$)/,h=[],y=0,t=[],s=0,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=document.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);m(a);return{a:h.join("").replace(/\n$/,""),c:t}}function B(a,m,e,h){m&&(a={a:m,d:a},e(a),h.push.apply(h,a.e))}function x(a,m){function e(a){for(var l=a.d,p=[l,"pln"],d=0,g=a.a.match(y)||[],r={},n=0,z=g.length;n<z;++n){var f=g[n],b=r[f],o=void 0,c;if(typeof b===
      -"string")c=!1;else{var i=h[f.charAt(0)];if(i)o=f.match(i[1]),b=i[0];else{for(c=0;c<t;++c)if(i=m[c],o=f.match(i[1])){b=i[0];break}o||(b="pln")}if((c=b.length>=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m),
      -l=[],p={},d=0,g=e.length;d<g;++d){var r=e[d],n=r[3];if(n)for(var k=n.length;--k>=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
      -q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/,
      -q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g,
      -"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a),
      -a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e}
      -for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g<d.length;++g)e(d[g]);m===(m|0)&&d[0].setAttribute("value",
      -m);var r=s.createElement("OL");r.className="linenums";for(var n=Math.max(0,m-1|0)||0,g=0,z=d.length;g<z;++g)l=d[g],l.className="L"+(g+n)%10,l.firstChild||l.appendChild(s.createTextNode("\xa0")),r.appendChild(l);a.appendChild(r)}function k(a,m){for(var e=m.length;--e>=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*</.test(m)?"default-markup":"default-code";return A[a]}function E(a){var m=
      -a.g;try{var e=M(a.h),h=e.a;a.a=h;a.c=e.c;a.d=0;C(m,h)(a);var k=/\bMSIE\b/.test(navigator.userAgent),m=/\n/g,t=a.a,s=t.length,e=0,l=a.c,p=l.length,h=0,d=a.e,g=d.length,a=0;d[g]=s;var r,n;for(n=r=0;n<g;)d[n]!==d[n+2]?(d[r++]=d[n++],d[r++]=d[n++]):n+=2;g=r;for(n=r=0;n<g;){for(var z=d[n],f=d[n+1],b=n+2;b+2<=g&&d[b+1]===f;)b+=2;d[r++]=z;d[r++]=f;n=b}for(d.length=r;h<p;){var o=l[h+2]||s,c=d[a+2]||s,b=Math.min(o,c),i=l[h+1],j;if(i.nodeType!==1&&(j=t.substring(e,b))){k&&(j=j.replace(m,"\r"));i.nodeValue=
      -j;var u=i.ownerDocument,v=u.createElement("SPAN");v.className=d[a+1];var x=i.parentNode;x.replaceChild(v,i);v.appendChild(i);e<o&&(l[h+1]=i=u.createTextNode(t.substring(b,o)),x.insertBefore(i,v.nextSibling))}e=b;e>=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
      -"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"],
      -H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"],
      -J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+
      -I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^<?]+/],["dec",/^<!\w[^>]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),
      -["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",
      -/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),
      -["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
      -hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p<h.length&&l.now()<e;p++){var n=h[p],k=n.className;if(k.indexOf("prettyprint")>=0){var k=k.match(g),f,b;if(b=
      -!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p<h.length?setTimeout(m,
      -250):a&&a()}for(var e=[document.getElementsByTagName("pre"),document.getElementsByTagName("code"),document.getElementsByTagName("xmp")],h=[],k=0;k<e.length;++k)for(var t=0,s=e[k].length;t<s;++t)h.push(e[k][t]);var e=q,l=Date;l.now||(l={now:function(){return+new Date}});var p=0,d,g=/\blang(?:uage)?-([\w.]+)(?!\S)/;m()};window.PR={createSimpleLexer:x,registerLangHandler:k,sourceDecorator:u,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",
      -PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ"}})();
      \ No newline at end of file
      diff --git a/bower_components/select2/package.json b/bower_components/select2/package.json
      deleted file mode 100644
      index 3eda0e8a73..0000000000
      --- a/bower_components/select2/package.json
      +++ /dev/null
      @@ -1,66 +0,0 @@
      -{
      -  "name": "select2",
      -  "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
      -  "homepage": "https://select2.github.io",
      -  "author": {
      -    "name": "Kevin Brown",
      -    "url": "https://github.com/kevin-brown"
      -  },
      -  "contributors": [
      -    {
      -      "name": "Igor Vaynberg",
      -      "url": "https://github.com/ivaynberg"
      -    }
      -  ],
      -  "repository": {
      -    "type": "git",
      -    "url": "git://github.com/select2/select2.git"
      -  },
      -  "bugs": {
      -    "url": "https://github.com/select2/select2/issues"
      -  },
      -  "keywords": [
      -    "select",
      -    "autocomplete",
      -    "typeahead",
      -    "dropdown",
      -    "multiselect",
      -    "tag",
      -    "tagging"
      -  ],
      -  "license": "MIT",
      -  "main": "dist/js/select2.js",
      -  "files": [
      -    "src",
      -    "dist"
      -  ],
      -  "version": "4.0.3",
      -  "jspm": {
      -    "main": "js/select2",
      -    "directories": {
      -      "lib": "dist"
      -    }
      -  },
      -  "devDependencies": {
      -    "grunt": "^0.4.5",
      -    "grunt-cli": "^0.1.13",
      -    "grunt-contrib-clean": "^0.6.0",
      -    "grunt-contrib-concat": "^0.4.0",
      -    "grunt-contrib-connect": "^0.9.0",
      -    "grunt-contrib-jshint": "^0.10.0",
      -    "grunt-contrib-nodeunit": "~0.3.3",
      -    "grunt-contrib-qunit": "~0.4.0",
      -    "grunt-contrib-requirejs": "^0.4.4",
      -    "grunt-contrib-symlink": "^0.3.0",
      -    "grunt-contrib-uglify": "~0.4.0",
      -    "grunt-contrib-watch": "~0.6.0",
      -    "grunt-gh-pages": "^0.9.1",
      -    "grunt-jekyll": "^0.4.2",
      -    "grunt-sass": "^1.0.0",
      -    "grunt-saucelabs": "^8.6.0"
      -  },
      -  "dependencies": {
      -    "almond": "~0.3.1",
      -    "jquery-mousewheel": "~3.1.13"
      -  }
      -}
      diff --git a/bower_components/select2/select2.jquery.json b/bower_components/select2/select2.jquery.json
      deleted file mode 100644
      index e2df6ef15a..0000000000
      --- a/bower_components/select2/select2.jquery.json
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -{
      -    "name": "select2",
      -    "title": "Select2",
      -    "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.",
      -    "keywords": [
      -        "select",
      -        "autocomplete",
      -        "typeahead",
      -        "dropdown",
      -        "multiselect",
      -        "tag",
      -        "tagging"
      -    ],
      -    "version": "4.0.3",
      -    "author": {
      -        "name": "Kevin Brown",
      -        "url": "https://github.com/kevin-brown"
      -    },
      -    "licenses": [
      -        {
      -            "type": "MIT",
      -            "url": "http://opensource.org/licenses/MIT"
      -        }
      -    ],
      -    "bugs": "https://github.com/select2/select2/issues",
      -    "homepage": "https://select2.github.io",
      -    "docs": "https://select2.github.io",
      -    "download": "https://github.com/select2/select2/releases",
      -    "dependencies": {
      -        "jquery": ">=1.7.2"
      -    }
      -}
      diff --git a/bower_components/select2/src/js/banner.end.js b/bower_components/select2/src/js/banner.end.js
      deleted file mode 100644
      index ea00a0365e..0000000000
      --- a/bower_components/select2/src/js/banner.end.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -  // Return the AMD loader configuration so it can be used outside of this file
      -  return {
      -    define: S2.define,
      -    require: S2.require
      -  };
      -}());
      diff --git a/bower_components/select2/src/js/banner.start.js b/bower_components/select2/src/js/banner.start.js
      deleted file mode 100644
      index 78fe8b0212..0000000000
      --- a/bower_components/select2/src/js/banner.start.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -(function () {
      -  // Restore the Select2 AMD loader so it can be used
      -  // Needed mostly in the language files, where the loader is not inserted
      -  if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {
      -    var S2 = jQuery.fn.select2.amd;
      -  }
      diff --git a/bower_components/select2/src/js/jquery.mousewheel.shim.js b/bower_components/select2/src/js/jquery.mousewheel.shim.js
      deleted file mode 100644
      index a27fda0e65..0000000000
      --- a/bower_components/select2/src/js/jquery.mousewheel.shim.js
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  // Used to shim jQuery.mousewheel for non-full builds.
      -  return $;
      -});
      diff --git a/bower_components/select2/src/js/jquery.select2.js b/bower_components/select2/src/js/jquery.select2.js
      deleted file mode 100644
      index a3f8eff412..0000000000
      --- a/bower_components/select2/src/js/jquery.select2.js
      +++ /dev/null
      @@ -1,57 +0,0 @@
      -define([
      -  'jquery',
      -  'jquery-mousewheel',
      -
      -  './select2/core',
      -  './select2/defaults'
      -], function ($, _, Select2, Defaults) {
      -  if ($.fn.select2 == null) {
      -    // All methods that should return the element
      -    var thisMethods = ['open', 'close', 'destroy'];
      -
      -    $.fn.select2 = function (options) {
      -      options = options || {};
      -
      -      if (typeof options === 'object') {
      -        this.each(function () {
      -          var instanceOptions = $.extend(true, {}, options);
      -
      -          var instance = new Select2($(this), instanceOptions);
      -        });
      -
      -        return this;
      -      } else if (typeof options === 'string') {
      -        var ret;
      -        var args = Array.prototype.slice.call(arguments, 1);
      -
      -        this.each(function () {
      -          var instance = $(this).data('select2');
      -
      -          if (instance == null && window.console && console.error) {
      -            console.error(
      -              'The select2(\'' + options + '\') method was called on an ' +
      -              'element that is not using Select2.'
      -            );
      -          }
      -
      -          ret = instance[options].apply(instance, args);
      -        });
      -
      -        // Check if we should be returning `this`
      -        if ($.inArray(options, thisMethods) > -1) {
      -          return this;
      -        }
      -
      -        return ret;
      -      } else {
      -        throw new Error('Invalid arguments for Select2: ' + options);
      -      }
      -    };
      -  }
      -
      -  if ($.fn.select2.defaults == null) {
      -    $.fn.select2.defaults = Defaults;
      -  }
      -
      -  return Select2;
      -});
      diff --git a/bower_components/select2/src/js/jquery.shim.js b/bower_components/select2/src/js/jquery.shim.js
      deleted file mode 100644
      index 880993af1a..0000000000
      --- a/bower_components/select2/src/js/jquery.shim.js
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -/* global jQuery:false, $:false */
      -define(function () {
      -  var _$ = jQuery || $;
      -
      -  if (_$ == null && console && console.error) {
      -    console.error(
      -      'Select2: An instance of jQuery or a jQuery-compatible library was not ' +
      -      'found. Make sure that you are including jQuery before Select2 on your ' +
      -      'web page.'
      -    );
      -  }
      -
      -  return _$;
      -});
      diff --git a/bower_components/select2/src/js/select2/compat/containerCss.js b/bower_components/select2/src/js/select2/compat/containerCss.js
      deleted file mode 100644
      index 45703ac8d0..0000000000
      --- a/bower_components/select2/src/js/select2/compat/containerCss.js
      +++ /dev/null
      @@ -1,56 +0,0 @@
      -define([
      -  'jquery',
      -  './utils'
      -], function ($, CompatUtils) {
      -  // No-op CSS adapter that discards all classes by default
      -  function _containerAdapter (clazz) {
      -    return null;
      -  }
      -
      -  function ContainerCSS () { }
      -
      -  ContainerCSS.prototype.render = function (decorated) {
      -    var $container = decorated.call(this);
      -
      -    var containerCssClass = this.options.get('containerCssClass') || '';
      -
      -    if ($.isFunction(containerCssClass)) {
      -      containerCssClass = containerCssClass(this.$element);
      -    }
      -
      -    var containerCssAdapter = this.options.get('adaptContainerCssClass');
      -    containerCssAdapter = containerCssAdapter || _containerAdapter;
      -
      -    if (containerCssClass.indexOf(':all:') !== -1) {
      -      containerCssClass = containerCssClass.replace(':all:', '');
      -
      -      var _cssAdapter = containerCssAdapter;
      -
      -      containerCssAdapter = function (clazz) {
      -        var adapted = _cssAdapter(clazz);
      -
      -        if (adapted != null) {
      -          // Append the old one along with the adapted one
      -          return adapted + ' ' + clazz;
      -        }
      -
      -        return clazz;
      -      };
      -    }
      -
      -    var containerCss = this.options.get('containerCss') || {};
      -
      -    if ($.isFunction(containerCss)) {
      -      containerCss = containerCss(this.$element);
      -    }
      -
      -    CompatUtils.syncCssClasses($container, this.$element, containerCssAdapter);
      -
      -    $container.css(containerCss);
      -    $container.addClass(containerCssClass);
      -
      -    return $container;
      -  };
      -
      -  return ContainerCSS;
      -});
      diff --git a/bower_components/select2/src/js/select2/compat/dropdownCss.js b/bower_components/select2/src/js/select2/compat/dropdownCss.js
      deleted file mode 100644
      index 02f558200e..0000000000
      --- a/bower_components/select2/src/js/select2/compat/dropdownCss.js
      +++ /dev/null
      @@ -1,56 +0,0 @@
      -define([
      -  'jquery',
      -  './utils'
      -], function ($, CompatUtils) {
      -  // No-op CSS adapter that discards all classes by default
      -  function _dropdownAdapter (clazz) {
      -    return null;
      -  }
      -
      -  function DropdownCSS () { }
      -
      -  DropdownCSS.prototype.render = function (decorated) {
      -    var $dropdown = decorated.call(this);
      -
      -    var dropdownCssClass = this.options.get('dropdownCssClass') || '';
      -
      -    if ($.isFunction(dropdownCssClass)) {
      -      dropdownCssClass = dropdownCssClass(this.$element);
      -    }
      -
      -    var dropdownCssAdapter = this.options.get('adaptDropdownCssClass');
      -    dropdownCssAdapter = dropdownCssAdapter || _dropdownAdapter;
      -
      -    if (dropdownCssClass.indexOf(':all:') !== -1) {
      -      dropdownCssClass = dropdownCssClass.replace(':all:', '');
      -
      -      var _cssAdapter = dropdownCssAdapter;
      -
      -      dropdownCssAdapter = function (clazz) {
      -        var adapted = _cssAdapter(clazz);
      -
      -        if (adapted != null) {
      -          // Append the old one along with the adapted one
      -          return adapted + ' ' + clazz;
      -        }
      -
      -        return clazz;
      -      };
      -    }
      -
      -    var dropdownCss = this.options.get('dropdownCss') || {};
      -
      -    if ($.isFunction(dropdownCss)) {
      -      dropdownCss = dropdownCss(this.$element);
      -    }
      -
      -    CompatUtils.syncCssClasses($dropdown, this.$element, dropdownCssAdapter);
      -
      -    $dropdown.css(dropdownCss);
      -    $dropdown.addClass(dropdownCssClass);
      -
      -    return $dropdown;
      -  };
      -
      -  return DropdownCSS;
      -});
      diff --git a/bower_components/select2/src/js/select2/compat/initSelection.js b/bower_components/select2/src/js/select2/compat/initSelection.js
      deleted file mode 100644
      index 71ee29d1ec..0000000000
      --- a/bower_components/select2/src/js/select2/compat/initSelection.js
      +++ /dev/null
      @@ -1,42 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function InitSelection (decorated, $element, options) {
      -    if (options.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 = options.get('initSelection');
      -    this._isInitialized = false;
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  InitSelection.prototype.current = function (decorated, callback) {
      -    var self = this;
      -
      -    if (this._isInitialized) {
      -      decorated.call(this, callback);
      -
      -      return;
      -    }
      -
      -    this.initSelection.call(null, this.$element, function (data) {
      -      self._isInitialized = true;
      -
      -      if (!$.isArray(data)) {
      -        data = [data];
      -      }
      -
      -      callback(data);
      -    });
      -  };
      -
      -  return InitSelection;
      -});
      diff --git a/bower_components/select2/src/js/select2/compat/inputData.js b/bower_components/select2/src/js/select2/compat/inputData.js
      deleted file mode 100644
      index a338bf1eea..0000000000
      --- a/bower_components/select2/src/js/select2/compat/inputData.js
      +++ /dev/null
      @@ -1,127 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function InputData (decorated, $element, options) {
      -    this._currentData = [];
      -    this._valueSeparator = options.get('valueSeparator') || ',';
      -
      -    if ($element.prop('type') === 'hidden') {
      -      if (options.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 `<select>` element instead.'
      -        );
      -      }
      -    }
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  InputData.prototype.current = function (_, callback) {
      -    function getSelected (data, selectedIds) {
      -      var selected = [];
      -
      -      if (data.selected || $.inArray(data.id, selectedIds) !== -1) {
      -        data.selected = true;
      -        selected.push(data);
      -      } else {
      -        data.selected = false;
      -      }
      -
      -      if (data.children) {
      -        selected.push.apply(selected, getSelected(data.children, selectedIds));
      -      }
      -
      -      return selected;
      -    }
      -
      -    var selected = [];
      -
      -    for (var d = 0; d < this._currentData.length; d++) {
      -      var data = this._currentData[d];
      -
      -      selected.push.apply(
      -        selected,
      -        getSelected(
      -          data,
      -          this.$element.val().split(
      -            this._valueSeparator
      -          )
      -        )
      -      );
      -    }
      -
      -    callback(selected);
      -  };
      -
      -  InputData.prototype.select = function (_, data) {
      -    if (!this.options.get('multiple')) {
      -      this.current(function (allData) {
      -        $.map(allData, function (data) {
      -          data.selected = false;
      -        });
      -      });
      -
      -      this.$element.val(data.id);
      -      this.$element.trigger('change');
      -    } else {
      -      var value = this.$element.val();
      -      value += this._valueSeparator + data.id;
      -
      -      this.$element.val(value);
      -      this.$element.trigger('change');
      -    }
      -  };
      -
      -  InputData.prototype.unselect = function (_, data) {
      -    var self = this;
      -
      -    data.selected = false;
      -
      -    this.current(function (allData) {
      -      var values = [];
      -
      -      for (var d = 0; d < allData.length; d++) {
      -        var item = allData[d];
      -
      -        if (data.id == item.id) {
      -          continue;
      -        }
      -
      -        values.push(item.id);
      -      }
      -
      -      self.$element.val(values.join(self._valueSeparator));
      -      self.$element.trigger('change');
      -    });
      -  };
      -
      -  InputData.prototype.query = function (_, params, callback) {
      -    var results = [];
      -
      -    for (var d = 0; d < this._currentData.length; d++) {
      -      var data = this._currentData[d];
      -
      -      var matches = this.matches(params, data);
      -
      -      if (matches !== null) {
      -        results.push(matches);
      -      }
      -    }
      -
      -    callback({
      -      results: results
      -    });
      -  };
      -
      -  InputData.prototype.addOptions = function (_, $options) {
      -    var options = $.map($options, function ($option) {
      -      return $.data($option[0], 'data');
      -    });
      -
      -    this._currentData.push.apply(this._currentData, options);
      -  };
      -
      -  return InputData;
      -});
      diff --git a/bower_components/select2/src/js/select2/compat/matcher.js b/bower_components/select2/src/js/select2/compat/matcher.js
      deleted file mode 100644
      index a975fdddad..0000000000
      --- a/bower_components/select2/src/js/select2/compat/matcher.js
      +++ /dev/null
      @@ -1,42 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function oldMatcher (matcher) {
      -    function wrappedMatcher (params, data) {
      -      var match = $.extend(true, {}, data);
      -
      -      if (params.term == null || $.trim(params.term) === '') {
      -        return match;
      -      }
      -
      -      if (data.children) {
      -        for (var c = data.children.length - 1; c >= 0; c--) {
      -          var child = data.children[c];
      -
      -          // Check if the child object matches
      -          // The old matcher returned a boolean true or false
      -          var doesMatch = matcher(params.term, child.text, child);
      -
      -          // If the child didn't match, pop it off
      -          if (!doesMatch) {
      -            match.children.splice(c, 1);
      -          }
      -        }
      -
      -        if (match.children.length > 0) {
      -          return match;
      -        }
      -      }
      -
      -      if (matcher(params.term, data.text, data)) {
      -        return match;
      -      }
      -
      -      return null;
      -    }
      -
      -    return wrappedMatcher;
      -  }
      -
      -  return oldMatcher;
      -});
      diff --git a/bower_components/select2/src/js/select2/compat/query.js b/bower_components/select2/src/js/select2/compat/query.js
      deleted file mode 100644
      index f2884a7aa2..0000000000
      --- a/bower_components/select2/src/js/select2/compat/query.js
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -define([
      -
      -], function () {
      -  function Query (decorated, $element, options) {
      -    if (options.get('debug') && window.console && console.warn) {
      -      console.warn(
      -        'Select2: The `query` option has been deprecated in favor of a ' +
      -        'custom data adapter that overrides the `query` method. Support ' +
      -        'will be removed for the `query` option in future versions of ' +
      -        'Select2.'
      -      );
      -    }
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Query.prototype.query = function (_, params, callback) {
      -    params.callback = callback;
      -
      -    var query = this.options.get('query');
      -
      -    query.call(null, params);
      -  };
      -
      -  return Query;
      -});
      diff --git a/bower_components/select2/src/js/select2/compat/utils.js b/bower_components/select2/src/js/select2/compat/utils.js
      deleted file mode 100644
      index 5a3ea1c6e7..0000000000
      --- a/bower_components/select2/src/js/select2/compat/utils.js
      +++ /dev/null
      @@ -1,43 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function syncCssClasses ($dest, $src, adapter) {
      -    var classes, replacements = [], adapted;
      -
      -    classes = $.trim($dest.attr('class'));
      -
      -    if (classes) {
      -      classes = '' + classes; // for IE which returns object
      -
      -      $(classes.split(/\s+/)).each(function () {
      -        // Save all Select2 classes
      -        if (this.indexOf('select2-') === 0) {
      -          replacements.push(this);
      -        }
      -      });
      -    }
      -
      -    classes = $.trim($src.attr('class'));
      -
      -    if (classes) {
      -      classes = '' + classes; // for IE which returns object
      -
      -      $(classes.split(/\s+/)).each(function () {
      -        // Only adapt non-Select2 classes
      -        if (this.indexOf('select2-') !== 0) {
      -          adapted = adapter(this);
      -
      -          if (adapted != null) {
      -            replacements.push(adapted);
      -          }
      -        }
      -      });
      -    }
      -
      -    $dest.attr('class', replacements.join(' '));
      -  }
      -
      -  return {
      -    syncCssClasses: syncCssClasses
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/core.js b/bower_components/select2/src/js/select2/core.js
      deleted file mode 100644
      index 4ba06edb3e..0000000000
      --- a/bower_components/select2/src/js/select2/core.js
      +++ /dev/null
      @@ -1,612 +0,0 @@
      -define([
      -  'jquery',
      -  './options',
      -  './utils',
      -  './keys'
      -], function ($, Options, Utils, KEYS) {
      -  var Select2 = function ($element, options) {
      -    if ($element.data('select2') != null) {
      -      $element.data('select2').destroy();
      -    }
      -
      -    this.$element = $element;
      -
      -    this.id = this._generateId($element);
      -
      -    options = options || {};
      -
      -    this.options = new Options(options, $element);
      -
      -    Select2.__super__.constructor.call(this);
      -
      -    // Set up the tabindex
      -
      -    var tabindex = $element.attr('tabindex') || 0;
      -    $element.data('old-tabindex', tabindex);
      -    $element.attr('tabindex', '-1');
      -
      -    // Set up containers and adapters
      -
      -    var DataAdapter = this.options.get('dataAdapter');
      -    this.dataAdapter = new DataAdapter($element, this.options);
      -
      -    var $container = this.render();
      -
      -    this._placeContainer($container);
      -
      -    var SelectionAdapter = this.options.get('selectionAdapter');
      -    this.selection = new SelectionAdapter($element, this.options);
      -    this.$selection = this.selection.render();
      -
      -    this.selection.position(this.$selection, $container);
      -
      -    var DropdownAdapter = this.options.get('dropdownAdapter');
      -    this.dropdown = new DropdownAdapter($element, this.options);
      -    this.$dropdown = this.dropdown.render();
      -
      -    this.dropdown.position(this.$dropdown, $container);
      -
      -    var ResultsAdapter = this.options.get('resultsAdapter');
      -    this.results = new ResultsAdapter($element, this.options, this.dataAdapter);
      -    this.$results = this.results.render();
      -
      -    this.results.position(this.$results, this.$dropdown);
      -
      -    // Bind events
      -
      -    var self = this;
      -
      -    // Bind the container to all of the adapters
      -    this._bindAdapters();
      -
      -    // Register any DOM event handlers
      -    this._registerDomEvents();
      -
      -    // Register any internal event handlers
      -    this._registerDataEvents();
      -    this._registerSelectionEvents();
      -    this._registerDropdownEvents();
      -    this._registerResultsEvents();
      -    this._registerEvents();
      -
      -    // Set the initial state
      -    this.dataAdapter.current(function (initialData) {
      -      self.trigger('selection:update', {
      -        data: initialData
      -      });
      -    });
      -
      -    // Hide the original select
      -    $element.addClass('select2-hidden-accessible');
      -    $element.attr('aria-hidden', 'true');
      -
      -    // Synchronize any monitored attributes
      -    this._syncAttributes();
      -
      -    $element.data('select2', this);
      -  };
      -
      -  Utils.Extend(Select2, Utils.Observable);
      -
      -  Select2.prototype._generateId = function ($element) {
      -    var id = '';
      -
      -    if ($element.attr('id') != null) {
      -      id = $element.attr('id');
      -    } else if ($element.attr('name') != null) {
      -      id = $element.attr('name') + '-' + Utils.generateChars(2);
      -    } else {
      -      id = Utils.generateChars(4);
      -    }
      -
      -    id = id.replace(/(:|\.|\[|\]|,)/g, '');
      -    id = 'select2-' + id;
      -
      -    return id;
      -  };
      -
      -  Select2.prototype._placeContainer = function ($container) {
      -    $container.insertAfter(this.$element);
      -
      -    var width = this._resolveWidth(this.$element, this.options.get('width'));
      -
      -    if (width != null) {
      -      $container.css('width', width);
      -    }
      -  };
      -
      -  Select2.prototype._resolveWidth = function ($element, method) {
      -    var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;
      -
      -    if (method == 'resolve') {
      -      var styleWidth = this._resolveWidth($element, 'style');
      -
      -      if (styleWidth != null) {
      -        return styleWidth;
      -      }
      -
      -      return this._resolveWidth($element, 'element');
      -    }
      -
      -    if (method == 'element') {
      -      var elementWidth = $element.outerWidth(false);
      -
      -      if (elementWidth <= 0) {
      -        return 'auto';
      -      }
      -
      -      return elementWidth + 'px';
      -    }
      -
      -    if (method == 'style') {
      -      var style = $element.attr('style');
      -
      -      if (typeof(style) !== 'string') {
      -        return null;
      -      }
      -
      -      var attrs = style.split(';');
      -
      -      for (var i = 0, l = attrs.length; i < l; i = i + 1) {
      -        var attr = attrs[i].replace(/\s/g, '');
      -        var matches = attr.match(WIDTH);
      -
      -        if (matches !== null && matches.length >= 1) {
      -          return matches[1];
      -        }
      -      }
      -
      -      return null;
      -    }
      -
      -    return method;
      -  };
      -
      -  Select2.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);
      -  };
      -
      -  Select2.prototype._registerDomEvents = function () {
      -    var self = this;
      -
      -    this.$element.on('change.select2', function () {
      -      self.dataAdapter.current(function (data) {
      -        self.trigger('selection:update', {
      -          data: data
      -        });
      -      });
      -    });
      -
      -    this.$element.on('focus.select2', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this._syncA = Utils.bind(this._syncAttributes, this);
      -    this._syncS = Utils.bind(this._syncSubtree, this);
      -
      -    if (this.$element[0].attachEvent) {
      -      this.$element[0].attachEvent('onpropertychange', this._syncA);
      -    }
      -
      -    var observer = window.MutationObserver ||
      -      window.WebKitMutationObserver ||
      -      window.MozMutationObserver
      -    ;
      -
      -    if (observer != null) {
      -      this._observer = new observer(function (mutations) {
      -        $.each(mutations, self._syncA);
      -        $.each(mutations, self._syncS);
      -      });
      -      this._observer.observe(this.$element[0], {
      -        attributes: true,
      -        childList: true,
      -        subtree: false
      -      });
      -    } else if (this.$element[0].addEventListener) {
      -      this.$element[0].addEventListener(
      -        'DOMAttrModified',
      -        self._syncA,
      -        false
      -      );
      -      this.$element[0].addEventListener(
      -        'DOMNodeInserted',
      -        self._syncS,
      -        false
      -      );
      -      this.$element[0].addEventListener(
      -        'DOMNodeRemoved',
      -        self._syncS,
      -        false
      -      );
      -    }
      -  };
      -
      -  Select2.prototype._registerDataEvents = function () {
      -    var self = this;
      -
      -    this.dataAdapter.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerSelectionEvents = function () {
      -    var self = this;
      -    var nonRelayEvents = ['toggle', 'focus'];
      -
      -    this.selection.on('toggle', function () {
      -      self.toggleDropdown();
      -    });
      -
      -    this.selection.on('focus', function (params) {
      -      self.focus(params);
      -    });
      -
      -    this.selection.on('*', function (name, params) {
      -      if ($.inArray(name, nonRelayEvents) !== -1) {
      -        return;
      -      }
      -
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerDropdownEvents = function () {
      -    var self = this;
      -
      -    this.dropdown.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerResultsEvents = function () {
      -    var self = this;
      -
      -    this.results.on('*', function (name, params) {
      -      self.trigger(name, params);
      -    });
      -  };
      -
      -  Select2.prototype._registerEvents = function () {
      -    var self = this;
      -
      -    this.on('open', function () {
      -      self.$container.addClass('select2-container--open');
      -    });
      -
      -    this.on('close', function () {
      -      self.$container.removeClass('select2-container--open');
      -    });
      -
      -    this.on('enable', function () {
      -      self.$container.removeClass('select2-container--disabled');
      -    });
      -
      -    this.on('disable', function () {
      -      self.$container.addClass('select2-container--disabled');
      -    });
      -
      -    this.on('blur', function () {
      -      self.$container.removeClass('select2-container--focus');
      -    });
      -
      -    this.on('query', function (params) {
      -      if (!self.isOpen()) {
      -        self.trigger('open', {});
      -      }
      -
      -      this.dataAdapter.query(params, function (data) {
      -        self.trigger('results:all', {
      -          data: data,
      -          query: params
      -        });
      -      });
      -    });
      -
      -    this.on('query:append', function (params) {
      -      this.dataAdapter.query(params, function (data) {
      -        self.trigger('results:append', {
      -          data: data,
      -          query: params
      -        });
      -      });
      -    });
      -
      -    this.on('keypress', function (evt) {
      -      var key = evt.which;
      -
      -      if (self.isOpen()) {
      -        if (key === KEYS.ESC || key === KEYS.TAB ||
      -            (key === KEYS.UP && evt.altKey)) {
      -          self.close();
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.ENTER) {
      -          self.trigger('results:select', {});
      -
      -          evt.preventDefault();
      -        } else if ((key === KEYS.SPACE && evt.ctrlKey)) {
      -          self.trigger('results:toggle', {});
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.UP) {
      -          self.trigger('results:previous', {});
      -
      -          evt.preventDefault();
      -        } else if (key === KEYS.DOWN) {
      -          self.trigger('results:next', {});
      -
      -          evt.preventDefault();
      -        }
      -      } else {
      -        if (key === KEYS.ENTER || key === KEYS.SPACE ||
      -            (key === KEYS.DOWN && evt.altKey)) {
      -          self.open();
      -
      -          evt.preventDefault();
      -        }
      -      }
      -    });
      -  };
      -
      -  Select2.prototype._syncAttributes = function () {
      -    this.options.set('disabled', this.$element.prop('disabled'));
      -
      -    if (this.options.get('disabled')) {
      -      if (this.isOpen()) {
      -        this.close();
      -      }
      -
      -      this.trigger('disable', {});
      -    } else {
      -      this.trigger('enable', {});
      -    }
      -  };
      -
      -  Select2.prototype._syncSubtree = function (evt, mutations) {
      -    var changed = false;
      -    var self = this;
      -
      -    // Ignore any mutation events raised for elements that aren't options or
      -    // optgroups. This handles the case when the select element is destroyed
      -    if (
      -      evt && evt.target && (
      -        evt.target.nodeName !== 'OPTION' && evt.target.nodeName !== 'OPTGROUP'
      -      )
      -    ) {
      -      return;
      -    }
      -
      -    if (!mutations) {
      -      // If mutation events aren't supported, then we can only assume that the
      -      // change affected the selections
      -      changed = true;
      -    } else if (mutations.addedNodes && mutations.addedNodes.length > 0) {
      -      for (var n = 0; n < mutations.addedNodes.length; n++) {
      -        var node = mutations.addedNodes[n];
      -
      -        if (node.selected) {
      -          changed = true;
      -        }
      -      }
      -    } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {
      -      changed = true;
      -    }
      -
      -    // Only re-pull the data if we think there is a change
      -    if (changed) {
      -      this.dataAdapter.current(function (currentData) {
      -        self.trigger('selection:update', {
      -          data: currentData
      -        });
      -      });
      -    }
      -  };
      -
      -  /**
      -   * Override the trigger method to automatically trigger pre-events when
      -   * there are events that can be prevented.
      -   */
      -  Select2.prototype.trigger = function (name, args) {
      -    var actualTrigger = Select2.__super__.trigger;
      -    var preTriggerMap = {
      -      'open': 'opening',
      -      'close': 'closing',
      -      'select': 'selecting',
      -      'unselect': 'unselecting'
      -    };
      -
      -    if (args === undefined) {
      -      args = {};
      -    }
      -
      -    if (name in preTriggerMap) {
      -      var preTriggerName = preTriggerMap[name];
      -      var preTriggerArgs = {
      -        prevented: false,
      -        name: name,
      -        args: args
      -      };
      -
      -      actualTrigger.call(this, preTriggerName, preTriggerArgs);
      -
      -      if (preTriggerArgs.prevented) {
      -        args.prevented = true;
      -
      -        return;
      -      }
      -    }
      -
      -    actualTrigger.call(this, name, args);
      -  };
      -
      -  Select2.prototype.toggleDropdown = function () {
      -    if (this.options.get('disabled')) {
      -      return;
      -    }
      -
      -    if (this.isOpen()) {
      -      this.close();
      -    } else {
      -      this.open();
      -    }
      -  };
      -
      -  Select2.prototype.open = function () {
      -    if (this.isOpen()) {
      -      return;
      -    }
      -
      -    this.trigger('query', {});
      -  };
      -
      -  Select2.prototype.close = function () {
      -    if (!this.isOpen()) {
      -      return;
      -    }
      -
      -    this.trigger('close', {});
      -  };
      -
      -  Select2.prototype.isOpen = function () {
      -    return this.$container.hasClass('select2-container--open');
      -  };
      -
      -  Select2.prototype.hasFocus = function () {
      -    return this.$container.hasClass('select2-container--focus');
      -  };
      -
      -  Select2.prototype.focus = function (data) {
      -    // No need to re-trigger focus events if we are already focused
      -    if (this.hasFocus()) {
      -      return;
      -    }
      -
      -    this.$container.addClass('select2-container--focus');
      -    this.trigger('focus', {});
      -  };
      -
      -  Select2.prototype.enable = function (args) {
      -    if (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.'
      -      );
      -    }
      -
      -    if (args == null || args.length === 0) {
      -      args = [true];
      -    }
      -
      -    var disabled = !args[0];
      -
      -    this.$element.prop('disabled', disabled);
      -  };
      -
      -  Select2.prototype.data = function () {
      -    if (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 data = [];
      -
      -    this.dataAdapter.current(function (currentData) {
      -      data = currentData;
      -    });
      -
      -    return data;
      -  };
      -
      -  Select2.prototype.val = function (args) {
      -    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.'
      -      );
      -    }
      -
      -    if (args == null || args.length === 0) {
      -      return this.$element.val();
      -    }
      -
      -    var newVal = args[0];
      -
      -    if ($.isArray(newVal)) {
      -      newVal = $.map(newVal, function (obj) {
      -        return obj.toString();
      -      });
      -    }
      -
      -    this.$element.val(newVal).trigger('change');
      -  };
      -
      -  Select2.prototype.destroy = function () {
      -    this.$container.remove();
      -
      -    if (this.$element[0].detachEvent) {
      -      this.$element[0].detachEvent('onpropertychange', this._syncA);
      -    }
      -
      -    if (this._observer != null) {
      -      this._observer.disconnect();
      -      this._observer = null;
      -    } else if (this.$element[0].removeEventListener) {
      -      this.$element[0]
      -        .removeEventListener('DOMAttrModified', this._syncA, false);
      -      this.$element[0]
      -        .removeEventListener('DOMNodeInserted', this._syncS, false);
      -      this.$element[0]
      -        .removeEventListener('DOMNodeRemoved', this._syncS, false);
      -    }
      -
      -    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;
      -  };
      -
      -  Select2.prototype.render = function () {
      -    var $container = $(
      -      '<span class="select2 select2-container">' +
      -        '<span class="selection"></span>' +
      -        '<span class="dropdown-wrapper" aria-hidden="true"></span>' +
      -      '</span>'
      -    );
      -
      -    $container.attr('dir', this.options.get('dir'));
      -
      -    this.$container = $container;
      -
      -    this.$container.addClass('select2-container--' + this.options.get('theme'));
      -
      -    $container.data('element', this.$element);
      -
      -    return $container;
      -  };
      -
      -  return Select2;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/ajax.js b/bower_components/select2/src/js/select2/data/ajax.js
      deleted file mode 100644
      index 97d3416020..0000000000
      --- a/bower_components/select2/src/js/select2/data/ajax.js
      +++ /dev/null
      @@ -1,109 +0,0 @@
      -define([
      -  './array',
      -  '../utils',
      -  'jquery'
      -], function (ArrayAdapter, Utils, $) {
      -  function AjaxAdapter ($element, options) {
      -    this.ajaxOptions = this._applyDefaults(options.get('ajax'));
      -
      -    if (this.ajaxOptions.processResults != null) {
      -      this.processResults = this.ajaxOptions.processResults;
      -    }
      -
      -    AjaxAdapter.__super__.constructor.call(this, $element, options);
      -  }
      -
      -  Utils.Extend(AjaxAdapter, ArrayAdapter);
      -
      -  AjaxAdapter.prototype._applyDefaults = function (options) {
      -    var defaults = {
      -      data: function (params) {
      -        return $.extend({}, params, {
      -          q: params.term
      -        });
      -      },
      -      transport: function (params, success, failure) {
      -        var $request = $.ajax(params);
      -
      -        $request.then(success);
      -        $request.fail(failure);
      -
      -        return $request;
      -      }
      -    };
      -
      -    return $.extend({}, defaults, options, true);
      -  };
      -
      -  AjaxAdapter.prototype.processResults = function (results) {
      -    return results;
      -  };
      -
      -  AjaxAdapter.prototype.query = function (params, callback) {
      -    var matches = [];
      -    var self = this;
      -
      -    if (this._request != null) {
      -      // JSONP requests cannot always be aborted
      -      if ($.isFunction(this._request.abort)) {
      -        this._request.abort();
      -      }
      -
      -      this._request = null;
      -    }
      -
      -    var options = $.extend({
      -      type: 'GET'
      -    }, this.ajaxOptions);
      -
      -    if (typeof options.url === 'function') {
      -      options.url = options.url.call(this.$element, params);
      -    }
      -
      -    if (typeof options.data === 'function') {
      -      options.data = options.data.call(this.$element, params);
      -    }
      -
      -    function request () {
      -      var $request = options.transport(options, function (data) {
      -        var results = self.processResults(data, params);
      -
      -        if (self.options.get('debug') && window.console && console.error) {
      -          // Check to make sure that the response included a `results` key.
      -          if (!results || !results.results || !$.isArray(results.results)) {
      -            console.error(
      -              'Select2: The AJAX results did not return an array in the ' +
      -              '`results` key of the response.'
      -            );
      -          }
      -        }
      -
      -        callback(results);
      -      }, function () {
      -        // Attempt to detect if a request was aborted
      -        // Only works if the transport exposes a status property
      -        if ($request.status && $request.status === '0') {
      -          return;
      -        }
      -
      -        self.trigger('results:message', {
      -          message: 'errorLoading'
      -        });
      -      });
      -
      -      self._request = $request;
      -    }
      -
      -    if (this.ajaxOptions.delay && params.term != null) {
      -      if (this._queryTimeout) {
      -        window.clearTimeout(this._queryTimeout);
      -      }
      -
      -      this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);
      -    } else {
      -      request();
      -    }
      -  };
      -
      -  return AjaxAdapter;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/array.js b/bower_components/select2/src/js/select2/data/array.js
      deleted file mode 100644
      index b88996625f..0000000000
      --- a/bower_components/select2/src/js/select2/data/array.js
      +++ /dev/null
      @@ -1,79 +0,0 @@
      -define([
      -  './select',
      -  '../utils',
      -  'jquery'
      -], function (SelectAdapter, Utils, $) {
      -  function ArrayAdapter ($element, options) {
      -    var data = options.get('data') || [];
      -
      -    ArrayAdapter.__super__.constructor.call(this, $element, options);
      -
      -    this.addOptions(this.convertToOptions(data));
      -  }
      -
      -  Utils.Extend(ArrayAdapter, SelectAdapter);
      -
      -  ArrayAdapter.prototype.select = function (data) {
      -    var $option = this.$element.find('option').filter(function (i, elm) {
      -      return elm.value == data.id.toString();
      -    });
      -
      -    if ($option.length === 0) {
      -      $option = this.option(data);
      -
      -      this.addOptions($option);
      -    }
      -
      -    ArrayAdapter.__super__.select.call(this, data);
      -  };
      -
      -  ArrayAdapter.prototype.convertToOptions = function (data) {
      -    var self = this;
      -
      -    var $existing = this.$element.find('option');
      -    var existingIds = $existing.map(function () {
      -      return self.item($(this)).id;
      -    }).get();
      -
      -    var $options = [];
      -
      -    // Filter out all items except for the one passed in the argument
      -    function onlyItem (item) {
      -      return function () {
      -        return $(this).val() == item.id;
      -      };
      -    }
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var item = this._normalizeItem(data[d]);
      -
      -      // Skip items which were pre-loaded, only merge the data
      -      if ($.inArray(item.id, existingIds) >= 0) {
      -        var $existingOption = $existing.filter(onlyItem(item));
      -
      -        var existingData = this.item($existingOption);
      -        var newData = $.extend(true, {}, item, existingData);
      -
      -        var $newOption = this.option(newData);
      -
      -        $existingOption.replaceWith($newOption);
      -
      -        continue;
      -      }
      -
      -      var $option = this.option(item);
      -
      -      if (item.children) {
      -        var $children = this.convertToOptions(item.children);
      -
      -        Utils.appendMany($option, $children);
      -      }
      -
      -      $options.push($option);
      -    }
      -
      -    return $options;
      -  };
      -
      -  return ArrayAdapter;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/base.js b/bower_components/select2/src/js/select2/data/base.js
      deleted file mode 100644
      index e35054d9f2..0000000000
      --- a/bower_components/select2/src/js/select2/data/base.js
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -define([
      -  '../utils'
      -], function (Utils) {
      -  function BaseAdapter ($element, options) {
      -    BaseAdapter.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(BaseAdapter, Utils.Observable);
      -
      -  BaseAdapter.prototype.current = function (callback) {
      -    throw new Error('The `current` method must be defined in child classes.');
      -  };
      -
      -  BaseAdapter.prototype.query = function (params, callback) {
      -    throw new Error('The `query` method must be defined in child classes.');
      -  };
      -
      -  BaseAdapter.prototype.bind = function (container, $container) {
      -    // Can be implemented in subclasses
      -  };
      -
      -  BaseAdapter.prototype.destroy = function () {
      -    // Can be implemented in subclasses
      -  };
      -
      -  BaseAdapter.prototype.generateResultId = function (container, data) {
      -    var id = container.id + '-result-';
      -
      -    id += Utils.generateChars(4);
      -
      -    if (data.id != null) {
      -      id += '-' + data.id.toString();
      -    } else {
      -      id += '-' + Utils.generateChars(4);
      -    }
      -    return id;
      -  };
      -
      -  return BaseAdapter;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/maximumInputLength.js b/bower_components/select2/src/js/select2/data/maximumInputLength.js
      deleted file mode 100644
      index f303ba8813..0000000000
      --- a/bower_components/select2/src/js/select2/data/maximumInputLength.js
      +++ /dev/null
      @@ -1,31 +0,0 @@
      -define([
      -
      -], function () {
      -  function MaximumInputLength (decorated, $e, options) {
      -    this.maximumInputLength = options.get('maximumInputLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MaximumInputLength.prototype.query = function (decorated, params, callback) {
      -    params.term = params.term || '';
      -
      -    if (this.maximumInputLength > 0 &&
      -        params.term.length > this.maximumInputLength) {
      -      this.trigger('results:message', {
      -        message: 'inputTooLong',
      -        args: {
      -          maximum: this.maximumInputLength,
      -          input: params.term,
      -          params: params
      -        }
      -      });
      -
      -      return;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  return MaximumInputLength;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/maximumSelectionLength.js b/bower_components/select2/src/js/select2/data/maximumSelectionLength.js
      deleted file mode 100644
      index ae727529c1..0000000000
      --- a/bower_components/select2/src/js/select2/data/maximumSelectionLength.js
      +++ /dev/null
      @@ -1,31 +0,0 @@
      -define([
      -
      -], function (){
      -  function MaximumSelectionLength (decorated, $e, options) {
      -    this.maximumSelectionLength = options.get('maximumSelectionLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MaximumSelectionLength.prototype.query =
      -    function (decorated, params, callback) {
      -      var self = this;
      -
      -      this.current(function (currentData) {
      -        var count = currentData != null ? currentData.length : 0;
      -        if (self.maximumSelectionLength > 0 &&
      -          count >= self.maximumSelectionLength) {
      -          self.trigger('results:message', {
      -            message: 'maximumSelected',
      -            args: {
      -              maximum: self.maximumSelectionLength
      -            }
      -          });
      -          return;
      -        }
      -        decorated.call(self, params, callback);
      -      });
      -  };
      -
      -  return MaximumSelectionLength;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/minimumInputLength.js b/bower_components/select2/src/js/select2/data/minimumInputLength.js
      deleted file mode 100644
      index c19f71c2e6..0000000000
      --- a/bower_components/select2/src/js/select2/data/minimumInputLength.js
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -define([
      -
      -], function () {
      -  function MinimumInputLength (decorated, $e, options) {
      -    this.minimumInputLength = options.get('minimumInputLength');
      -
      -    decorated.call(this, $e, options);
      -  }
      -
      -  MinimumInputLength.prototype.query = function (decorated, params, callback) {
      -    params.term = params.term || '';
      -
      -    if (params.term.length < this.minimumInputLength) {
      -      this.trigger('results:message', {
      -        message: 'inputTooShort',
      -        args: {
      -          minimum: this.minimumInputLength,
      -          input: params.term,
      -          params: params
      -        }
      -      });
      -
      -      return;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  return MinimumInputLength;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/select.js b/bower_components/select2/src/js/select2/data/select.js
      deleted file mode 100644
      index ab50410755..0000000000
      --- a/bower_components/select2/src/js/select2/data/select.js
      +++ /dev/null
      @@ -1,285 +0,0 @@
      -define([
      -  './base',
      -  '../utils',
      -  'jquery'
      -], function (BaseAdapter, Utils, $) {
      -  function SelectAdapter ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    SelectAdapter.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(SelectAdapter, BaseAdapter);
      -
      -  SelectAdapter.prototype.current = function (callback) {
      -    var data = [];
      -    var self = this;
      -
      -    this.$element.find(':selected').each(function () {
      -      var $option = $(this);
      -
      -      var option = self.item($option);
      -
      -      data.push(option);
      -    });
      -
      -    callback(data);
      -  };
      -
      -  SelectAdapter.prototype.select = function (data) {
      -    var self = this;
      -
      -    data.selected = true;
      -
      -    // If data.element is a DOM node, use it instead
      -    if ($(data.element).is('option')) {
      -      data.element.selected = true;
      -
      -      this.$element.trigger('change');
      -
      -      return;
      -    }
      -
      -    if (this.$element.prop('multiple')) {
      -      this.current(function (currentData) {
      -        var val = [];
      -
      -        data = [data];
      -        data.push.apply(data, currentData);
      -
      -        for (var d = 0; d < data.length; d++) {
      -          var id = data[d].id;
      -
      -          if ($.inArray(id, val) === -1) {
      -            val.push(id);
      -          }
      -        }
      -
      -        self.$element.val(val);
      -        self.$element.trigger('change');
      -      });
      -    } else {
      -      var val = data.id;
      -
      -      this.$element.val(val);
      -      this.$element.trigger('change');
      -    }
      -  };
      -
      -  SelectAdapter.prototype.unselect = function (data) {
      -    var self = this;
      -
      -    if (!this.$element.prop('multiple')) {
      -      return;
      -    }
      -
      -    data.selected = false;
      -
      -    if ($(data.element).is('option')) {
      -      data.element.selected = false;
      -
      -      this.$element.trigger('change');
      -
      -      return;
      -    }
      -
      -    this.current(function (currentData) {
      -      var val = [];
      -
      -      for (var d = 0; d < currentData.length; d++) {
      -        var id = currentData[d].id;
      -
      -        if (id !== data.id && $.inArray(id, val) === -1) {
      -          val.push(id);
      -        }
      -      }
      -
      -      self.$element.val(val);
      -
      -      self.$element.trigger('change');
      -    });
      -  };
      -
      -  SelectAdapter.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    this.container = container;
      -
      -    container.on('select', function (params) {
      -      self.select(params.data);
      -    });
      -
      -    container.on('unselect', function (params) {
      -      self.unselect(params.data);
      -    });
      -  };
      -
      -  SelectAdapter.prototype.destroy = function () {
      -    // Remove anything added to child elements
      -    this.$element.find('*').each(function () {
      -      // Remove any custom data set by Select2
      -      $.removeData(this, 'data');
      -    });
      -  };
      -
      -  SelectAdapter.prototype.query = function (params, callback) {
      -    var data = [];
      -    var self = this;
      -
      -    var $options = this.$element.children();
      -
      -    $options.each(function () {
      -      var $option = $(this);
      -
      -      if (!$option.is('option') && !$option.is('optgroup')) {
      -        return;
      -      }
      -
      -      var option = self.item($option);
      -
      -      var matches = self.matches(params, option);
      -
      -      if (matches !== null) {
      -        data.push(matches);
      -      }
      -    });
      -
      -    callback({
      -      results: data
      -    });
      -  };
      -
      -  SelectAdapter.prototype.addOptions = function ($options) {
      -    Utils.appendMany(this.$element, $options);
      -  };
      -
      -  SelectAdapter.prototype.option = function (data) {
      -    var option;
      -
      -    if (data.children) {
      -      option = document.createElement('optgroup');
      -      option.label = data.text;
      -    } else {
      -      option = document.createElement('option');
      -
      -      if (option.textContent !== undefined) {
      -        option.textContent = data.text;
      -      } else {
      -        option.innerText = data.text;
      -      }
      -    }
      -
      -    if (data.id) {
      -      option.value = data.id;
      -    }
      -
      -    if (data.disabled) {
      -      option.disabled = true;
      -    }
      -
      -    if (data.selected) {
      -      option.selected = true;
      -    }
      -
      -    if (data.title) {
      -      option.title = data.title;
      -    }
      -
      -    var $option = $(option);
      -
      -    var normalizedData = this._normalizeItem(data);
      -    normalizedData.element = option;
      -
      -    // Override the option's data with the combined data
      -    $.data(option, 'data', normalizedData);
      -
      -    return $option;
      -  };
      -
      -  SelectAdapter.prototype.item = function ($option) {
      -    var data = {};
      -
      -    data = $.data($option[0], 'data');
      -
      -    if (data != null) {
      -      return data;
      -    }
      -
      -    if ($option.is('option')) {
      -      data = {
      -        id: $option.val(),
      -        text: $option.text(),
      -        disabled: $option.prop('disabled'),
      -        selected: $option.prop('selected'),
      -        title: $option.prop('title')
      -      };
      -    } else if ($option.is('optgroup')) {
      -      data = {
      -        text: $option.prop('label'),
      -        children: [],
      -        title: $option.prop('title')
      -      };
      -
      -      var $children = $option.children('option');
      -      var children = [];
      -
      -      for (var c = 0; c < $children.length; c++) {
      -        var $child = $($children[c]);
      -
      -        var child = this.item($child);
      -
      -        children.push(child);
      -      }
      -
      -      data.children = children;
      -    }
      -
      -    data = this._normalizeItem(data);
      -    data.element = $option[0];
      -
      -    $.data($option[0], 'data', data);
      -
      -    return data;
      -  };
      -
      -  SelectAdapter.prototype._normalizeItem = function (item) {
      -    if (!$.isPlainObject(item)) {
      -      item = {
      -        id: item,
      -        text: item
      -      };
      -    }
      -
      -    item = $.extend({}, {
      -      text: ''
      -    }, item);
      -
      -    var defaults = {
      -      selected: false,
      -      disabled: false
      -    };
      -
      -    if (item.id != null) {
      -      item.id = item.id.toString();
      -    }
      -
      -    if (item.text != null) {
      -      item.text = item.text.toString();
      -    }
      -
      -    if (item._resultId == null && item.id && this.container != null) {
      -      item._resultId = this.generateResultId(this.container, item);
      -    }
      -
      -    return $.extend({}, defaults, item);
      -  };
      -
      -  SelectAdapter.prototype.matches = function (params, data) {
      -    var matcher = this.options.get('matcher');
      -
      -    return matcher(params, data);
      -  };
      -
      -  return SelectAdapter;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/tags.js b/bower_components/select2/src/js/select2/data/tags.js
      deleted file mode 100644
      index db42faabed..0000000000
      --- a/bower_components/select2/src/js/select2/data/tags.js
      +++ /dev/null
      @@ -1,125 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function Tags (decorated, $element, options) {
      -    var tags = options.get('tags');
      -
      -    var createTag = options.get('createTag');
      -
      -    if (createTag !== undefined) {
      -      this.createTag = createTag;
      -    }
      -
      -    var insertTag = options.get('insertTag');
      -
      -    if (insertTag !== undefined) {
      -        this.insertTag = insertTag;
      -    }
      -
      -    decorated.call(this, $element, options);
      -
      -    if ($.isArray(tags)) {
      -      for (var t = 0; t < tags.length; t++) {
      -        var tag = tags[t];
      -        var item = this._normalizeItem(tag);
      -
      -        var $option = this.option(item);
      -
      -        this.$element.append($option);
      -      }
      -    }
      -  }
      -
      -  Tags.prototype.query = function (decorated, params, callback) {
      -    var self = this;
      -
      -    this._removeOldTags();
      -
      -    if (params.term == null || params.page != null) {
      -      decorated.call(this, params, callback);
      -      return;
      -    }
      -
      -    function wrapper (obj, child) {
      -      var data = obj.results;
      -
      -      for (var i = 0; i < data.length; i++) {
      -        var option = data[i];
      -
      -        var checkChildren = (
      -          option.children != null &&
      -          !wrapper({
      -            results: option.children
      -          }, true)
      -        );
      -
      -        var checkText = option.text === params.term;
      -
      -        if (checkText || checkChildren) {
      -          if (child) {
      -            return false;
      -          }
      -
      -          obj.data = data;
      -          callback(obj);
      -
      -          return;
      -        }
      -      }
      -
      -      if (child) {
      -        return true;
      -      }
      -
      -      var tag = self.createTag(params);
      -
      -      if (tag != null) {
      -        var $option = self.option(tag);
      -        $option.attr('data-select2-tag', true);
      -
      -        self.addOptions([$option]);
      -
      -        self.insertTag(data, tag);
      -      }
      -
      -      obj.results = data;
      -
      -      callback(obj);
      -    }
      -
      -    decorated.call(this, params, wrapper);
      -  };
      -
      -  Tags.prototype.createTag = function (decorated, params) {
      -    var term = $.trim(params.term);
      -
      -    if (term === '') {
      -      return null;
      -    }
      -
      -    return {
      -      id: term,
      -      text: term
      -    };
      -  };
      -
      -  Tags.prototype.insertTag = function (_, data, tag) {
      -    data.unshift(tag);
      -  };
      -
      -  Tags.prototype._removeOldTags = function (_) {
      -    var tag = this._lastTag;
      -
      -    var $options = this.$element.find('option[data-select2-tag]');
      -
      -    $options.each(function () {
      -      if (this.selected) {
      -        return;
      -      }
      -
      -      $(this).remove();
      -    });
      -  };
      -
      -  return Tags;
      -});
      diff --git a/bower_components/select2/src/js/select2/data/tokenizer.js b/bower_components/select2/src/js/select2/data/tokenizer.js
      deleted file mode 100644
      index 77576556a3..0000000000
      --- a/bower_components/select2/src/js/select2/data/tokenizer.js
      +++ /dev/null
      @@ -1,116 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function Tokenizer (decorated, $element, options) {
      -    var tokenizer = options.get('tokenizer');
      -
      -    if (tokenizer !== undefined) {
      -      this.tokenizer = tokenizer;
      -    }
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Tokenizer.prototype.bind = function (decorated, container, $container) {
      -    decorated.call(this, container, $container);
      -
      -    this.$search =  container.dropdown.$search || container.selection.$search ||
      -      $container.find('.select2-search__field');
      -  };
      -
      -  Tokenizer.prototype.query = function (decorated, params, callback) {
      -    var self = this;
      -
      -    function createAndSelect (data) {
      -      // Normalize the data object so we can use it for checks
      -      var item = self._normalizeItem(data);
      -
      -      // Check if the data object already exists as a tag
      -      // Select it if it doesn't
      -      var $existingOptions = self.$element.find('option').filter(function () {
      -        return $(this).val() === item.id;
      -      });
      -
      -      // If an existing option wasn't found for it, create the option
      -      if (!$existingOptions.length) {
      -        var $option = self.option(item);
      -        $option.attr('data-select2-tag', true);
      -
      -        self._removeOldTags();
      -        self.addOptions([$option]);
      -      }
      -
      -      // Select the item, now that we know there is an option for it
      -      select(item);
      -    }
      -
      -    function select (data) {
      -      self.trigger('select', {
      -        data: data
      -      });
      -    }
      -
      -    params.term = params.term || '';
      -
      -    var tokenData = this.tokenizer(params, this.options, createAndSelect);
      -
      -    if (tokenData.term !== params.term) {
      -      // Replace the search term if we have the search box
      -      if (this.$search.length) {
      -        this.$search.val(tokenData.term);
      -        this.$search.focus();
      -      }
      -
      -      params.term = tokenData.term;
      -    }
      -
      -    decorated.call(this, params, callback);
      -  };
      -
      -  Tokenizer.prototype.tokenizer = function (_, params, options, callback) {
      -    var separators = options.get('tokenSeparators') || [];
      -    var term = params.term;
      -    var i = 0;
      -
      -    var createTag = this.createTag || function (params) {
      -      return {
      -        id: params.term,
      -        text: params.term
      -      };
      -    };
      -
      -    while (i < term.length) {
      -      var termChar = term[i];
      -
      -      if ($.inArray(termChar, separators) === -1) {
      -        i++;
      -
      -        continue;
      -      }
      -
      -      var part = term.substr(0, i);
      -      var partParams = $.extend({}, params, {
      -        term: part
      -      });
      -
      -      var data = createTag(partParams);
      -
      -      if (data == null) {
      -        i++;
      -        continue;
      -      }
      -
      -      callback(data);
      -
      -      // Reset the term to not include the tokenized portion
      -      term = term.substr(i + 1) || '';
      -      i = 0;
      -    }
      -
      -    return {
      -      term: term
      -    };
      -  };
      -
      -  return Tokenizer;
      -});
      diff --git a/bower_components/select2/src/js/select2/defaults.js b/bower_components/select2/src/js/select2/defaults.js
      deleted file mode 100644
      index ad4d224f84..0000000000
      --- a/bower_components/select2/src/js/select2/defaults.js
      +++ /dev/null
      @@ -1,396 +0,0 @@
      -define([
      -  'jquery',
      -  'require',
      -
      -  './results',
      -
      -  './selection/single',
      -  './selection/multiple',
      -  './selection/placeholder',
      -  './selection/allowClear',
      -  './selection/search',
      -  './selection/eventRelay',
      -
      -  './utils',
      -  './translation',
      -  './diacritics',
      -
      -  './data/select',
      -  './data/array',
      -  './data/ajax',
      -  './data/tags',
      -  './data/tokenizer',
      -  './data/minimumInputLength',
      -  './data/maximumInputLength',
      -  './data/maximumSelectionLength',
      -
      -  './dropdown',
      -  './dropdown/search',
      -  './dropdown/hidePlaceholder',
      -  './dropdown/infiniteScroll',
      -  './dropdown/attachBody',
      -  './dropdown/minimumResultsForSearch',
      -  './dropdown/selectOnClose',
      -  './dropdown/closeOnSelect',
      -
      -  './i18n/en'
      -], function ($, require,
      -
      -             ResultsList,
      -
      -             SingleSelection, MultipleSelection, Placeholder, AllowClear,
      -             SelectionSearch, EventRelay,
      -
      -             Utils, Translation, DIACRITICS,
      -
      -             SelectData, ArrayData, AjaxData, Tags, Tokenizer,
      -             MinimumInputLength, MaximumInputLength, MaximumSelectionLength,
      -
      -             Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,
      -             AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,
      -
      -             EnglishTranslation) {
      -  function Defaults () {
      -    this.reset();
      -  }
      -
      -  Defaults.prototype.apply = function (options) {
      -    options = $.extend(true, {}, this.defaults, options);
      -
      -    if (options.dataAdapter == null) {
      -      if (options.ajax != null) {
      -        options.dataAdapter = AjaxData;
      -      } else if (options.data != null) {
      -        options.dataAdapter = ArrayData;
      -      } else {
      -        options.dataAdapter = SelectData;
      -      }
      -
      -      if (options.minimumInputLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MinimumInputLength
      -        );
      -      }
      -
      -      if (options.maximumInputLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MaximumInputLength
      -        );
      -      }
      -
      -      if (options.maximumSelectionLength > 0) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          MaximumSelectionLength
      -        );
      -      }
      -
      -      if (options.tags) {
      -        options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);
      -      }
      -
      -      if (options.tokenSeparators != null || options.tokenizer != null) {
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          Tokenizer
      -        );
      -      }
      -
      -      if (options.query != null) {
      -        var Query = require(options.amdBase + 'compat/query');
      -
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          Query
      -        );
      -      }
      -
      -      if (options.initSelection != null) {
      -        var InitSelection = require(options.amdBase + 'compat/initSelection');
      -
      -        options.dataAdapter = Utils.Decorate(
      -          options.dataAdapter,
      -          InitSelection
      -        );
      -      }
      -    }
      -
      -    if (options.resultsAdapter == null) {
      -      options.resultsAdapter = ResultsList;
      -
      -      if (options.ajax != null) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          InfiniteScroll
      -        );
      -      }
      -
      -      if (options.placeholder != null) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          HidePlaceholder
      -        );
      -      }
      -
      -      if (options.selectOnClose) {
      -        options.resultsAdapter = Utils.Decorate(
      -          options.resultsAdapter,
      -          SelectOnClose
      -        );
      -      }
      -    }
      -
      -    if (options.dropdownAdapter == null) {
      -      if (options.multiple) {
      -        options.dropdownAdapter = Dropdown;
      -      } else {
      -        var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);
      -
      -        options.dropdownAdapter = SearchableDropdown;
      -      }
      -
      -      if (options.minimumResultsForSearch !== 0) {
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          MinimumResultsForSearch
      -        );
      -      }
      -
      -      if (options.closeOnSelect) {
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          CloseOnSelect
      -        );
      -      }
      -
      -      if (
      -        options.dropdownCssClass != null ||
      -        options.dropdownCss != null ||
      -        options.adaptDropdownCssClass != null
      -      ) {
      -        var DropdownCSS = require(options.amdBase + 'compat/dropdownCss');
      -
      -        options.dropdownAdapter = Utils.Decorate(
      -          options.dropdownAdapter,
      -          DropdownCSS
      -        );
      -      }
      -
      -      options.dropdownAdapter = Utils.Decorate(
      -        options.dropdownAdapter,
      -        AttachBody
      -      );
      -    }
      -
      -    if (options.selectionAdapter == null) {
      -      if (options.multiple) {
      -        options.selectionAdapter = MultipleSelection;
      -      } else {
      -        options.selectionAdapter = SingleSelection;
      -      }
      -
      -      // Add the placeholder mixin if a placeholder was specified
      -      if (options.placeholder != null) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          Placeholder
      -        );
      -      }
      -
      -      if (options.allowClear) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          AllowClear
      -        );
      -      }
      -
      -      if (options.multiple) {
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          SelectionSearch
      -        );
      -      }
      -
      -      if (
      -        options.containerCssClass != null ||
      -        options.containerCss != null ||
      -        options.adaptContainerCssClass != null
      -      ) {
      -        var ContainerCSS = require(options.amdBase + 'compat/containerCss');
      -
      -        options.selectionAdapter = Utils.Decorate(
      -          options.selectionAdapter,
      -          ContainerCSS
      -        );
      -      }
      -
      -      options.selectionAdapter = Utils.Decorate(
      -        options.selectionAdapter,
      -        EventRelay
      -      );
      -    }
      -
      -    if (typeof options.language === 'string') {
      -      // Check if the language is specified with a region
      -      if (options.language.indexOf('-') > 0) {
      -        // Extract the region information if it is included
      -        var languageParts = options.language.split('-');
      -        var baseLanguage = languageParts[0];
      -
      -        options.language = [options.language, baseLanguage];
      -      } else {
      -        options.language = [options.language];
      -      }
      -    }
      -
      -    if ($.isArray(options.language)) {
      -      var languages = new Translation();
      -      options.language.push('en');
      -
      -      var languageNames = options.language;
      -
      -      for (var l = 0; l < languageNames.length; l++) {
      -        var name = languageNames[l];
      -        var language = {};
      -
      -        try {
      -          // Try to load it with the original name
      -          language = Translation.loadPath(name);
      -        } catch (e) {
      -          try {
      -            // If we couldn't load it, check if it wasn't the full path
      -            name = this.defaults.amdLanguageBase + name;
      -            language = Translation.loadPath(name);
      -          } catch (ex) {
      -            // The translation could not be loaded at all. Sometimes this is
      -            // because of a configuration problem, other times this can be
      -            // because of how Select2 helps load all possible translation files.
      -            if (options.debug && window.console && console.warn) {
      -              console.warn(
      -                'Select2: The language file for "' + name + '" could not be ' +
      -                'automatically loaded. A fallback will be used instead.'
      -              );
      -            }
      -
      -            continue;
      -          }
      -        }
      -
      -        languages.extend(language);
      -      }
      -
      -      options.translations = languages;
      -    } else {
      -      var baseTranslation = Translation.loadPath(
      -        this.defaults.amdLanguageBase + 'en'
      -      );
      -      var customTranslation = new Translation(options.language);
      -
      -      customTranslation.extend(baseTranslation);
      -
      -      options.translations = customTranslation;
      -    }
      -
      -    return options;
      -  };
      -
      -  Defaults.prototype.reset = function () {
      -    function stripDiacritics (text) {
      -      // Used 'uni range + named function' from http://jsperf.com/diacritics/18
      -      function match(a) {
      -        return DIACRITICS[a] || a;
      -      }
      -
      -      return text.replace(/[^\u0000-\u007E]/g, match);
      -    }
      -
      -    function matcher (params, data) {
      -      // Always return the object if there is nothing to compare
      -      if ($.trim(params.term) === '') {
      -        return data;
      -      }
      -
      -      // Do a recursive check for options with children
      -      if (data.children && data.children.length > 0) {
      -        // Clone the data object if there are children
      -        // This is required as we modify the object to remove any non-matches
      -        var match = $.extend(true, {}, data);
      -
      -        // Check each child of the option
      -        for (var c = data.children.length - 1; c >= 0; c--) {
      -          var child = data.children[c];
      -
      -          var matches = matcher(params, child);
      -
      -          // If there wasn't a match, remove the object in the array
      -          if (matches == null) {
      -            match.children.splice(c, 1);
      -          }
      -        }
      -
      -        // If any children matched, return the new object
      -        if (match.children.length > 0) {
      -          return match;
      -        }
      -
      -        // If there were no matching children, check just the plain object
      -        return matcher(params, match);
      -      }
      -
      -      var original = stripDiacritics(data.text).toUpperCase();
      -      var term = stripDiacritics(params.term).toUpperCase();
      -
      -      // Check if the text contains the term
      -      if (original.indexOf(term) > -1) {
      -        return data;
      -      }
      -
      -      // If it doesn't contain the term, don't return anything
      -      return null;
      -    }
      -
      -    this.defaults = {
      -      amdBase: './',
      -      amdLanguageBase: './i18n/',
      -      closeOnSelect: true,
      -      debug: false,
      -      dropdownAutoWidth: false,
      -      escapeMarkup: Utils.escapeMarkup,
      -      language: EnglishTranslation,
      -      matcher: matcher,
      -      minimumInputLength: 0,
      -      maximumInputLength: 0,
      -      maximumSelectionLength: 0,
      -      minimumResultsForSearch: 0,
      -      selectOnClose: false,
      -      sorter: function (data) {
      -        return data;
      -      },
      -      templateResult: function (result) {
      -        return result.text;
      -      },
      -      templateSelection: function (selection) {
      -        return selection.text;
      -      },
      -      theme: 'default',
      -      width: 'resolve'
      -    };
      -  };
      -
      -  Defaults.prototype.set = function (key, value) {
      -    var camelKey = $.camelCase(key);
      -
      -    var data = {};
      -    data[camelKey] = value;
      -
      -    var convertedData = Utils._convertData(data);
      -
      -    $.extend(this.defaults, convertedData);
      -  };
      -
      -  var defaults = new Defaults();
      -
      -  return defaults;
      -});
      diff --git a/bower_components/select2/src/js/select2/diacritics.js b/bower_components/select2/src/js/select2/diacritics.js
      deleted file mode 100644
      index c99ae6162c..0000000000
      --- a/bower_components/select2/src/js/select2/diacritics.js
      +++ /dev/null
      @@ -1,847 +0,0 @@
      -define([
      -
      -], function () {
      -  var diacritics = {
      -    '\u24B6': 'A',
      -    '\uFF21': 'A',
      -    '\u00C0': 'A',
      -    '\u00C1': 'A',
      -    '\u00C2': 'A',
      -    '\u1EA6': 'A',
      -    '\u1EA4': 'A',
      -    '\u1EAA': 'A',
      -    '\u1EA8': 'A',
      -    '\u00C3': 'A',
      -    '\u0100': 'A',
      -    '\u0102': 'A',
      -    '\u1EB0': 'A',
      -    '\u1EAE': 'A',
      -    '\u1EB4': 'A',
      -    '\u1EB2': 'A',
      -    '\u0226': 'A',
      -    '\u01E0': 'A',
      -    '\u00C4': 'A',
      -    '\u01DE': 'A',
      -    '\u1EA2': 'A',
      -    '\u00C5': 'A',
      -    '\u01FA': 'A',
      -    '\u01CD': 'A',
      -    '\u0200': 'A',
      -    '\u0202': 'A',
      -    '\u1EA0': 'A',
      -    '\u1EAC': 'A',
      -    '\u1EB6': 'A',
      -    '\u1E00': 'A',
      -    '\u0104': 'A',
      -    '\u023A': 'A',
      -    '\u2C6F': 'A',
      -    '\uA732': 'AA',
      -    '\u00C6': 'AE',
      -    '\u01FC': 'AE',
      -    '\u01E2': 'AE',
      -    '\uA734': 'AO',
      -    '\uA736': 'AU',
      -    '\uA738': 'AV',
      -    '\uA73A': 'AV',
      -    '\uA73C': 'AY',
      -    '\u24B7': 'B',
      -    '\uFF22': 'B',
      -    '\u1E02': 'B',
      -    '\u1E04': 'B',
      -    '\u1E06': 'B',
      -    '\u0243': 'B',
      -    '\u0182': 'B',
      -    '\u0181': 'B',
      -    '\u24B8': 'C',
      -    '\uFF23': 'C',
      -    '\u0106': 'C',
      -    '\u0108': 'C',
      -    '\u010A': 'C',
      -    '\u010C': 'C',
      -    '\u00C7': 'C',
      -    '\u1E08': 'C',
      -    '\u0187': 'C',
      -    '\u023B': 'C',
      -    '\uA73E': 'C',
      -    '\u24B9': 'D',
      -    '\uFF24': 'D',
      -    '\u1E0A': 'D',
      -    '\u010E': 'D',
      -    '\u1E0C': 'D',
      -    '\u1E10': 'D',
      -    '\u1E12': 'D',
      -    '\u1E0E': 'D',
      -    '\u0110': 'D',
      -    '\u018B': 'D',
      -    '\u018A': 'D',
      -    '\u0189': 'D',
      -    '\uA779': 'D',
      -    '\u01F1': 'DZ',
      -    '\u01C4': 'DZ',
      -    '\u01F2': 'Dz',
      -    '\u01C5': 'Dz',
      -    '\u24BA': 'E',
      -    '\uFF25': 'E',
      -    '\u00C8': 'E',
      -    '\u00C9': 'E',
      -    '\u00CA': 'E',
      -    '\u1EC0': 'E',
      -    '\u1EBE': 'E',
      -    '\u1EC4': 'E',
      -    '\u1EC2': 'E',
      -    '\u1EBC': 'E',
      -    '\u0112': 'E',
      -    '\u1E14': 'E',
      -    '\u1E16': 'E',
      -    '\u0114': 'E',
      -    '\u0116': 'E',
      -    '\u00CB': 'E',
      -    '\u1EBA': 'E',
      -    '\u011A': 'E',
      -    '\u0204': 'E',
      -    '\u0206': 'E',
      -    '\u1EB8': 'E',
      -    '\u1EC6': 'E',
      -    '\u0228': 'E',
      -    '\u1E1C': 'E',
      -    '\u0118': 'E',
      -    '\u1E18': 'E',
      -    '\u1E1A': 'E',
      -    '\u0190': 'E',
      -    '\u018E': 'E',
      -    '\u24BB': 'F',
      -    '\uFF26': 'F',
      -    '\u1E1E': 'F',
      -    '\u0191': 'F',
      -    '\uA77B': 'F',
      -    '\u24BC': 'G',
      -    '\uFF27': 'G',
      -    '\u01F4': 'G',
      -    '\u011C': 'G',
      -    '\u1E20': 'G',
      -    '\u011E': 'G',
      -    '\u0120': 'G',
      -    '\u01E6': 'G',
      -    '\u0122': 'G',
      -    '\u01E4': 'G',
      -    '\u0193': 'G',
      -    '\uA7A0': 'G',
      -    '\uA77D': 'G',
      -    '\uA77E': 'G',
      -    '\u24BD': 'H',
      -    '\uFF28': 'H',
      -    '\u0124': 'H',
      -    '\u1E22': 'H',
      -    '\u1E26': 'H',
      -    '\u021E': 'H',
      -    '\u1E24': 'H',
      -    '\u1E28': 'H',
      -    '\u1E2A': 'H',
      -    '\u0126': 'H',
      -    '\u2C67': 'H',
      -    '\u2C75': 'H',
      -    '\uA78D': 'H',
      -    '\u24BE': 'I',
      -    '\uFF29': 'I',
      -    '\u00CC': 'I',
      -    '\u00CD': 'I',
      -    '\u00CE': 'I',
      -    '\u0128': 'I',
      -    '\u012A': 'I',
      -    '\u012C': 'I',
      -    '\u0130': 'I',
      -    '\u00CF': 'I',
      -    '\u1E2E': 'I',
      -    '\u1EC8': 'I',
      -    '\u01CF': 'I',
      -    '\u0208': 'I',
      -    '\u020A': 'I',
      -    '\u1ECA': 'I',
      -    '\u012E': 'I',
      -    '\u1E2C': 'I',
      -    '\u0197': 'I',
      -    '\u24BF': 'J',
      -    '\uFF2A': 'J',
      -    '\u0134': 'J',
      -    '\u0248': 'J',
      -    '\u24C0': 'K',
      -    '\uFF2B': 'K',
      -    '\u1E30': 'K',
      -    '\u01E8': 'K',
      -    '\u1E32': 'K',
      -    '\u0136': 'K',
      -    '\u1E34': 'K',
      -    '\u0198': 'K',
      -    '\u2C69': 'K',
      -    '\uA740': 'K',
      -    '\uA742': 'K',
      -    '\uA744': 'K',
      -    '\uA7A2': 'K',
      -    '\u24C1': 'L',
      -    '\uFF2C': 'L',
      -    '\u013F': 'L',
      -    '\u0139': 'L',
      -    '\u013D': 'L',
      -    '\u1E36': 'L',
      -    '\u1E38': 'L',
      -    '\u013B': 'L',
      -    '\u1E3C': 'L',
      -    '\u1E3A': 'L',
      -    '\u0141': 'L',
      -    '\u023D': 'L',
      -    '\u2C62': 'L',
      -    '\u2C60': 'L',
      -    '\uA748': 'L',
      -    '\uA746': 'L',
      -    '\uA780': 'L',
      -    '\u01C7': 'LJ',
      -    '\u01C8': 'Lj',
      -    '\u24C2': 'M',
      -    '\uFF2D': 'M',
      -    '\u1E3E': 'M',
      -    '\u1E40': 'M',
      -    '\u1E42': 'M',
      -    '\u2C6E': 'M',
      -    '\u019C': 'M',
      -    '\u24C3': 'N',
      -    '\uFF2E': 'N',
      -    '\u01F8': 'N',
      -    '\u0143': 'N',
      -    '\u00D1': 'N',
      -    '\u1E44': 'N',
      -    '\u0147': 'N',
      -    '\u1E46': 'N',
      -    '\u0145': 'N',
      -    '\u1E4A': 'N',
      -    '\u1E48': 'N',
      -    '\u0220': 'N',
      -    '\u019D': 'N',
      -    '\uA790': 'N',
      -    '\uA7A4': 'N',
      -    '\u01CA': 'NJ',
      -    '\u01CB': 'Nj',
      -    '\u24C4': 'O',
      -    '\uFF2F': 'O',
      -    '\u00D2': 'O',
      -    '\u00D3': 'O',
      -    '\u00D4': 'O',
      -    '\u1ED2': 'O',
      -    '\u1ED0': 'O',
      -    '\u1ED6': 'O',
      -    '\u1ED4': 'O',
      -    '\u00D5': 'O',
      -    '\u1E4C': 'O',
      -    '\u022C': 'O',
      -    '\u1E4E': 'O',
      -    '\u014C': 'O',
      -    '\u1E50': 'O',
      -    '\u1E52': 'O',
      -    '\u014E': 'O',
      -    '\u022E': 'O',
      -    '\u0230': 'O',
      -    '\u00D6': 'O',
      -    '\u022A': 'O',
      -    '\u1ECE': 'O',
      -    '\u0150': 'O',
      -    '\u01D1': 'O',
      -    '\u020C': 'O',
      -    '\u020E': 'O',
      -    '\u01A0': 'O',
      -    '\u1EDC': 'O',
      -    '\u1EDA': 'O',
      -    '\u1EE0': 'O',
      -    '\u1EDE': 'O',
      -    '\u1EE2': 'O',
      -    '\u1ECC': 'O',
      -    '\u1ED8': 'O',
      -    '\u01EA': 'O',
      -    '\u01EC': 'O',
      -    '\u00D8': 'O',
      -    '\u01FE': 'O',
      -    '\u0186': 'O',
      -    '\u019F': 'O',
      -    '\uA74A': 'O',
      -    '\uA74C': 'O',
      -    '\u01A2': 'OI',
      -    '\uA74E': 'OO',
      -    '\u0222': 'OU',
      -    '\u24C5': 'P',
      -    '\uFF30': 'P',
      -    '\u1E54': 'P',
      -    '\u1E56': 'P',
      -    '\u01A4': 'P',
      -    '\u2C63': 'P',
      -    '\uA750': 'P',
      -    '\uA752': 'P',
      -    '\uA754': 'P',
      -    '\u24C6': 'Q',
      -    '\uFF31': 'Q',
      -    '\uA756': 'Q',
      -    '\uA758': 'Q',
      -    '\u024A': 'Q',
      -    '\u24C7': 'R',
      -    '\uFF32': 'R',
      -    '\u0154': 'R',
      -    '\u1E58': 'R',
      -    '\u0158': 'R',
      -    '\u0210': 'R',
      -    '\u0212': 'R',
      -    '\u1E5A': 'R',
      -    '\u1E5C': 'R',
      -    '\u0156': 'R',
      -    '\u1E5E': 'R',
      -    '\u024C': 'R',
      -    '\u2C64': 'R',
      -    '\uA75A': 'R',
      -    '\uA7A6': 'R',
      -    '\uA782': 'R',
      -    '\u24C8': 'S',
      -    '\uFF33': 'S',
      -    '\u1E9E': 'S',
      -    '\u015A': 'S',
      -    '\u1E64': 'S',
      -    '\u015C': 'S',
      -    '\u1E60': 'S',
      -    '\u0160': 'S',
      -    '\u1E66': 'S',
      -    '\u1E62': 'S',
      -    '\u1E68': 'S',
      -    '\u0218': 'S',
      -    '\u015E': 'S',
      -    '\u2C7E': 'S',
      -    '\uA7A8': 'S',
      -    '\uA784': 'S',
      -    '\u24C9': 'T',
      -    '\uFF34': 'T',
      -    '\u1E6A': 'T',
      -    '\u0164': 'T',
      -    '\u1E6C': 'T',
      -    '\u021A': 'T',
      -    '\u0162': 'T',
      -    '\u1E70': 'T',
      -    '\u1E6E': 'T',
      -    '\u0166': 'T',
      -    '\u01AC': 'T',
      -    '\u01AE': 'T',
      -    '\u023E': 'T',
      -    '\uA786': 'T',
      -    '\uA728': 'TZ',
      -    '\u24CA': 'U',
      -    '\uFF35': 'U',
      -    '\u00D9': 'U',
      -    '\u00DA': 'U',
      -    '\u00DB': 'U',
      -    '\u0168': 'U',
      -    '\u1E78': 'U',
      -    '\u016A': 'U',
      -    '\u1E7A': 'U',
      -    '\u016C': 'U',
      -    '\u00DC': 'U',
      -    '\u01DB': 'U',
      -    '\u01D7': 'U',
      -    '\u01D5': 'U',
      -    '\u01D9': 'U',
      -    '\u1EE6': 'U',
      -    '\u016E': 'U',
      -    '\u0170': 'U',
      -    '\u01D3': 'U',
      -    '\u0214': 'U',
      -    '\u0216': 'U',
      -    '\u01AF': 'U',
      -    '\u1EEA': 'U',
      -    '\u1EE8': 'U',
      -    '\u1EEE': 'U',
      -    '\u1EEC': 'U',
      -    '\u1EF0': 'U',
      -    '\u1EE4': 'U',
      -    '\u1E72': 'U',
      -    '\u0172': 'U',
      -    '\u1E76': 'U',
      -    '\u1E74': 'U',
      -    '\u0244': 'U',
      -    '\u24CB': 'V',
      -    '\uFF36': 'V',
      -    '\u1E7C': 'V',
      -    '\u1E7E': 'V',
      -    '\u01B2': 'V',
      -    '\uA75E': 'V',
      -    '\u0245': 'V',
      -    '\uA760': 'VY',
      -    '\u24CC': 'W',
      -    '\uFF37': 'W',
      -    '\u1E80': 'W',
      -    '\u1E82': 'W',
      -    '\u0174': 'W',
      -    '\u1E86': 'W',
      -    '\u1E84': 'W',
      -    '\u1E88': 'W',
      -    '\u2C72': 'W',
      -    '\u24CD': 'X',
      -    '\uFF38': 'X',
      -    '\u1E8A': 'X',
      -    '\u1E8C': 'X',
      -    '\u24CE': 'Y',
      -    '\uFF39': 'Y',
      -    '\u1EF2': 'Y',
      -    '\u00DD': 'Y',
      -    '\u0176': 'Y',
      -    '\u1EF8': 'Y',
      -    '\u0232': 'Y',
      -    '\u1E8E': 'Y',
      -    '\u0178': 'Y',
      -    '\u1EF6': 'Y',
      -    '\u1EF4': 'Y',
      -    '\u01B3': 'Y',
      -    '\u024E': 'Y',
      -    '\u1EFE': 'Y',
      -    '\u24CF': 'Z',
      -    '\uFF3A': 'Z',
      -    '\u0179': 'Z',
      -    '\u1E90': 'Z',
      -    '\u017B': 'Z',
      -    '\u017D': 'Z',
      -    '\u1E92': 'Z',
      -    '\u1E94': 'Z',
      -    '\u01B5': 'Z',
      -    '\u0224': 'Z',
      -    '\u2C7F': 'Z',
      -    '\u2C6B': 'Z',
      -    '\uA762': 'Z',
      -    '\u24D0': 'a',
      -    '\uFF41': 'a',
      -    '\u1E9A': 'a',
      -    '\u00E0': 'a',
      -    '\u00E1': 'a',
      -    '\u00E2': 'a',
      -    '\u1EA7': 'a',
      -    '\u1EA5': 'a',
      -    '\u1EAB': 'a',
      -    '\u1EA9': 'a',
      -    '\u00E3': 'a',
      -    '\u0101': 'a',
      -    '\u0103': 'a',
      -    '\u1EB1': 'a',
      -    '\u1EAF': 'a',
      -    '\u1EB5': 'a',
      -    '\u1EB3': 'a',
      -    '\u0227': 'a',
      -    '\u01E1': 'a',
      -    '\u00E4': 'a',
      -    '\u01DF': 'a',
      -    '\u1EA3': 'a',
      -    '\u00E5': 'a',
      -    '\u01FB': 'a',
      -    '\u01CE': 'a',
      -    '\u0201': 'a',
      -    '\u0203': 'a',
      -    '\u1EA1': 'a',
      -    '\u1EAD': 'a',
      -    '\u1EB7': 'a',
      -    '\u1E01': 'a',
      -    '\u0105': 'a',
      -    '\u2C65': 'a',
      -    '\u0250': 'a',
      -    '\uA733': 'aa',
      -    '\u00E6': 'ae',
      -    '\u01FD': 'ae',
      -    '\u01E3': 'ae',
      -    '\uA735': 'ao',
      -    '\uA737': 'au',
      -    '\uA739': 'av',
      -    '\uA73B': 'av',
      -    '\uA73D': 'ay',
      -    '\u24D1': 'b',
      -    '\uFF42': 'b',
      -    '\u1E03': 'b',
      -    '\u1E05': 'b',
      -    '\u1E07': 'b',
      -    '\u0180': 'b',
      -    '\u0183': 'b',
      -    '\u0253': 'b',
      -    '\u24D2': 'c',
      -    '\uFF43': 'c',
      -    '\u0107': 'c',
      -    '\u0109': 'c',
      -    '\u010B': 'c',
      -    '\u010D': 'c',
      -    '\u00E7': 'c',
      -    '\u1E09': 'c',
      -    '\u0188': 'c',
      -    '\u023C': 'c',
      -    '\uA73F': 'c',
      -    '\u2184': 'c',
      -    '\u24D3': 'd',
      -    '\uFF44': 'd',
      -    '\u1E0B': 'd',
      -    '\u010F': 'd',
      -    '\u1E0D': 'd',
      -    '\u1E11': 'd',
      -    '\u1E13': 'd',
      -    '\u1E0F': 'd',
      -    '\u0111': 'd',
      -    '\u018C': 'd',
      -    '\u0256': 'd',
      -    '\u0257': 'd',
      -    '\uA77A': 'd',
      -    '\u01F3': 'dz',
      -    '\u01C6': 'dz',
      -    '\u24D4': 'e',
      -    '\uFF45': 'e',
      -    '\u00E8': 'e',
      -    '\u00E9': 'e',
      -    '\u00EA': 'e',
      -    '\u1EC1': 'e',
      -    '\u1EBF': 'e',
      -    '\u1EC5': 'e',
      -    '\u1EC3': 'e',
      -    '\u1EBD': 'e',
      -    '\u0113': 'e',
      -    '\u1E15': 'e',
      -    '\u1E17': 'e',
      -    '\u0115': 'e',
      -    '\u0117': 'e',
      -    '\u00EB': 'e',
      -    '\u1EBB': 'e',
      -    '\u011B': 'e',
      -    '\u0205': 'e',
      -    '\u0207': 'e',
      -    '\u1EB9': 'e',
      -    '\u1EC7': 'e',
      -    '\u0229': 'e',
      -    '\u1E1D': 'e',
      -    '\u0119': 'e',
      -    '\u1E19': 'e',
      -    '\u1E1B': 'e',
      -    '\u0247': 'e',
      -    '\u025B': 'e',
      -    '\u01DD': 'e',
      -    '\u24D5': 'f',
      -    '\uFF46': 'f',
      -    '\u1E1F': 'f',
      -    '\u0192': 'f',
      -    '\uA77C': 'f',
      -    '\u24D6': 'g',
      -    '\uFF47': 'g',
      -    '\u01F5': 'g',
      -    '\u011D': 'g',
      -    '\u1E21': 'g',
      -    '\u011F': 'g',
      -    '\u0121': 'g',
      -    '\u01E7': 'g',
      -    '\u0123': 'g',
      -    '\u01E5': 'g',
      -    '\u0260': 'g',
      -    '\uA7A1': 'g',
      -    '\u1D79': 'g',
      -    '\uA77F': 'g',
      -    '\u24D7': 'h',
      -    '\uFF48': 'h',
      -    '\u0125': 'h',
      -    '\u1E23': 'h',
      -    '\u1E27': 'h',
      -    '\u021F': 'h',
      -    '\u1E25': 'h',
      -    '\u1E29': 'h',
      -    '\u1E2B': 'h',
      -    '\u1E96': 'h',
      -    '\u0127': 'h',
      -    '\u2C68': 'h',
      -    '\u2C76': 'h',
      -    '\u0265': 'h',
      -    '\u0195': 'hv',
      -    '\u24D8': 'i',
      -    '\uFF49': 'i',
      -    '\u00EC': 'i',
      -    '\u00ED': 'i',
      -    '\u00EE': 'i',
      -    '\u0129': 'i',
      -    '\u012B': 'i',
      -    '\u012D': 'i',
      -    '\u00EF': 'i',
      -    '\u1E2F': 'i',
      -    '\u1EC9': 'i',
      -    '\u01D0': 'i',
      -    '\u0209': 'i',
      -    '\u020B': 'i',
      -    '\u1ECB': 'i',
      -    '\u012F': 'i',
      -    '\u1E2D': 'i',
      -    '\u0268': 'i',
      -    '\u0131': 'i',
      -    '\u24D9': 'j',
      -    '\uFF4A': 'j',
      -    '\u0135': 'j',
      -    '\u01F0': 'j',
      -    '\u0249': 'j',
      -    '\u24DA': 'k',
      -    '\uFF4B': 'k',
      -    '\u1E31': 'k',
      -    '\u01E9': 'k',
      -    '\u1E33': 'k',
      -    '\u0137': 'k',
      -    '\u1E35': 'k',
      -    '\u0199': 'k',
      -    '\u2C6A': 'k',
      -    '\uA741': 'k',
      -    '\uA743': 'k',
      -    '\uA745': 'k',
      -    '\uA7A3': 'k',
      -    '\u24DB': 'l',
      -    '\uFF4C': 'l',
      -    '\u0140': 'l',
      -    '\u013A': 'l',
      -    '\u013E': 'l',
      -    '\u1E37': 'l',
      -    '\u1E39': 'l',
      -    '\u013C': 'l',
      -    '\u1E3D': 'l',
      -    '\u1E3B': 'l',
      -    '\u017F': 'l',
      -    '\u0142': 'l',
      -    '\u019A': 'l',
      -    '\u026B': 'l',
      -    '\u2C61': 'l',
      -    '\uA749': 'l',
      -    '\uA781': 'l',
      -    '\uA747': 'l',
      -    '\u01C9': 'lj',
      -    '\u24DC': 'm',
      -    '\uFF4D': 'm',
      -    '\u1E3F': 'm',
      -    '\u1E41': 'm',
      -    '\u1E43': 'm',
      -    '\u0271': 'm',
      -    '\u026F': 'm',
      -    '\u24DD': 'n',
      -    '\uFF4E': 'n',
      -    '\u01F9': 'n',
      -    '\u0144': 'n',
      -    '\u00F1': 'n',
      -    '\u1E45': 'n',
      -    '\u0148': 'n',
      -    '\u1E47': 'n',
      -    '\u0146': 'n',
      -    '\u1E4B': 'n',
      -    '\u1E49': 'n',
      -    '\u019E': 'n',
      -    '\u0272': 'n',
      -    '\u0149': 'n',
      -    '\uA791': 'n',
      -    '\uA7A5': 'n',
      -    '\u01CC': 'nj',
      -    '\u24DE': 'o',
      -    '\uFF4F': 'o',
      -    '\u00F2': 'o',
      -    '\u00F3': 'o',
      -    '\u00F4': 'o',
      -    '\u1ED3': 'o',
      -    '\u1ED1': 'o',
      -    '\u1ED7': 'o',
      -    '\u1ED5': 'o',
      -    '\u00F5': 'o',
      -    '\u1E4D': 'o',
      -    '\u022D': 'o',
      -    '\u1E4F': 'o',
      -    '\u014D': 'o',
      -    '\u1E51': 'o',
      -    '\u1E53': 'o',
      -    '\u014F': 'o',
      -    '\u022F': 'o',
      -    '\u0231': 'o',
      -    '\u00F6': 'o',
      -    '\u022B': 'o',
      -    '\u1ECF': 'o',
      -    '\u0151': 'o',
      -    '\u01D2': 'o',
      -    '\u020D': 'o',
      -    '\u020F': 'o',
      -    '\u01A1': 'o',
      -    '\u1EDD': 'o',
      -    '\u1EDB': 'o',
      -    '\u1EE1': 'o',
      -    '\u1EDF': 'o',
      -    '\u1EE3': 'o',
      -    '\u1ECD': 'o',
      -    '\u1ED9': 'o',
      -    '\u01EB': 'o',
      -    '\u01ED': 'o',
      -    '\u00F8': 'o',
      -    '\u01FF': 'o',
      -    '\u0254': 'o',
      -    '\uA74B': 'o',
      -    '\uA74D': 'o',
      -    '\u0275': 'o',
      -    '\u01A3': 'oi',
      -    '\u0223': 'ou',
      -    '\uA74F': 'oo',
      -    '\u24DF': 'p',
      -    '\uFF50': 'p',
      -    '\u1E55': 'p',
      -    '\u1E57': 'p',
      -    '\u01A5': 'p',
      -    '\u1D7D': 'p',
      -    '\uA751': 'p',
      -    '\uA753': 'p',
      -    '\uA755': 'p',
      -    '\u24E0': 'q',
      -    '\uFF51': 'q',
      -    '\u024B': 'q',
      -    '\uA757': 'q',
      -    '\uA759': 'q',
      -    '\u24E1': 'r',
      -    '\uFF52': 'r',
      -    '\u0155': 'r',
      -    '\u1E59': 'r',
      -    '\u0159': 'r',
      -    '\u0211': 'r',
      -    '\u0213': 'r',
      -    '\u1E5B': 'r',
      -    '\u1E5D': 'r',
      -    '\u0157': 'r',
      -    '\u1E5F': 'r',
      -    '\u024D': 'r',
      -    '\u027D': 'r',
      -    '\uA75B': 'r',
      -    '\uA7A7': 'r',
      -    '\uA783': 'r',
      -    '\u24E2': 's',
      -    '\uFF53': 's',
      -    '\u00DF': 's',
      -    '\u015B': 's',
      -    '\u1E65': 's',
      -    '\u015D': 's',
      -    '\u1E61': 's',
      -    '\u0161': 's',
      -    '\u1E67': 's',
      -    '\u1E63': 's',
      -    '\u1E69': 's',
      -    '\u0219': 's',
      -    '\u015F': 's',
      -    '\u023F': 's',
      -    '\uA7A9': 's',
      -    '\uA785': 's',
      -    '\u1E9B': 's',
      -    '\u24E3': 't',
      -    '\uFF54': 't',
      -    '\u1E6B': 't',
      -    '\u1E97': 't',
      -    '\u0165': 't',
      -    '\u1E6D': 't',
      -    '\u021B': 't',
      -    '\u0163': 't',
      -    '\u1E71': 't',
      -    '\u1E6F': 't',
      -    '\u0167': 't',
      -    '\u01AD': 't',
      -    '\u0288': 't',
      -    '\u2C66': 't',
      -    '\uA787': 't',
      -    '\uA729': 'tz',
      -    '\u24E4': 'u',
      -    '\uFF55': 'u',
      -    '\u00F9': 'u',
      -    '\u00FA': 'u',
      -    '\u00FB': 'u',
      -    '\u0169': 'u',
      -    '\u1E79': 'u',
      -    '\u016B': 'u',
      -    '\u1E7B': 'u',
      -    '\u016D': 'u',
      -    '\u00FC': 'u',
      -    '\u01DC': 'u',
      -    '\u01D8': 'u',
      -    '\u01D6': 'u',
      -    '\u01DA': 'u',
      -    '\u1EE7': 'u',
      -    '\u016F': 'u',
      -    '\u0171': 'u',
      -    '\u01D4': 'u',
      -    '\u0215': 'u',
      -    '\u0217': 'u',
      -    '\u01B0': 'u',
      -    '\u1EEB': 'u',
      -    '\u1EE9': 'u',
      -    '\u1EEF': 'u',
      -    '\u1EED': 'u',
      -    '\u1EF1': 'u',
      -    '\u1EE5': 'u',
      -    '\u1E73': 'u',
      -    '\u0173': 'u',
      -    '\u1E77': 'u',
      -    '\u1E75': 'u',
      -    '\u0289': 'u',
      -    '\u24E5': 'v',
      -    '\uFF56': 'v',
      -    '\u1E7D': 'v',
      -    '\u1E7F': 'v',
      -    '\u028B': 'v',
      -    '\uA75F': 'v',
      -    '\u028C': 'v',
      -    '\uA761': 'vy',
      -    '\u24E6': 'w',
      -    '\uFF57': 'w',
      -    '\u1E81': 'w',
      -    '\u1E83': 'w',
      -    '\u0175': 'w',
      -    '\u1E87': 'w',
      -    '\u1E85': 'w',
      -    '\u1E98': 'w',
      -    '\u1E89': 'w',
      -    '\u2C73': 'w',
      -    '\u24E7': 'x',
      -    '\uFF58': 'x',
      -    '\u1E8B': 'x',
      -    '\u1E8D': 'x',
      -    '\u24E8': 'y',
      -    '\uFF59': 'y',
      -    '\u1EF3': 'y',
      -    '\u00FD': 'y',
      -    '\u0177': 'y',
      -    '\u1EF9': 'y',
      -    '\u0233': 'y',
      -    '\u1E8F': 'y',
      -    '\u00FF': 'y',
      -    '\u1EF7': 'y',
      -    '\u1E99': 'y',
      -    '\u1EF5': 'y',
      -    '\u01B4': 'y',
      -    '\u024F': 'y',
      -    '\u1EFF': 'y',
      -    '\u24E9': 'z',
      -    '\uFF5A': 'z',
      -    '\u017A': 'z',
      -    '\u1E91': 'z',
      -    '\u017C': 'z',
      -    '\u017E': 'z',
      -    '\u1E93': 'z',
      -    '\u1E95': 'z',
      -    '\u01B6': 'z',
      -    '\u0225': 'z',
      -    '\u0240': 'z',
      -    '\u2C6C': 'z',
      -    '\uA763': 'z',
      -    '\u0386': '\u0391',
      -    '\u0388': '\u0395',
      -    '\u0389': '\u0397',
      -    '\u038A': '\u0399',
      -    '\u03AA': '\u0399',
      -    '\u038C': '\u039F',
      -    '\u038E': '\u03A5',
      -    '\u03AB': '\u03A5',
      -    '\u038F': '\u03A9',
      -    '\u03AC': '\u03B1',
      -    '\u03AD': '\u03B5',
      -    '\u03AE': '\u03B7',
      -    '\u03AF': '\u03B9',
      -    '\u03CA': '\u03B9',
      -    '\u0390': '\u03B9',
      -    '\u03CC': '\u03BF',
      -    '\u03CD': '\u03C5',
      -    '\u03CB': '\u03C5',
      -    '\u03B0': '\u03C5',
      -    '\u03C9': '\u03C9',
      -    '\u03C2': '\u03C3'
      -  };
      -
      -  return diacritics;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown.js b/bower_components/select2/src/js/select2/dropdown.js
      deleted file mode 100644
      index a6fc40bce7..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown.js
      +++ /dev/null
      @@ -1,42 +0,0 @@
      -define([
      -  'jquery',
      -  './utils'
      -], function ($, Utils) {
      -  function Dropdown ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    Dropdown.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(Dropdown, Utils.Observable);
      -
      -  Dropdown.prototype.render = function () {
      -    var $dropdown = $(
      -      '<span class="select2-dropdown">' +
      -        '<span class="select2-results"></span>' +
      -      '</span>'
      -    );
      -
      -    $dropdown.attr('dir', this.options.get('dir'));
      -
      -    this.$dropdown = $dropdown;
      -
      -    return $dropdown;
      -  };
      -
      -  Dropdown.prototype.bind = function () {
      -    // Should be implemented in subclasses
      -  };
      -
      -  Dropdown.prototype.position = function ($dropdown, $container) {
      -    // Should be implmented in subclasses
      -  };
      -
      -  Dropdown.prototype.destroy = function () {
      -    // Remove the dropdown from the DOM
      -    this.$dropdown.remove();
      -  };
      -
      -  return Dropdown;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/attachBody.js b/bower_components/select2/src/js/select2/dropdown/attachBody.js
      deleted file mode 100644
      index 70a10d40d0..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/attachBody.js
      +++ /dev/null
      @@ -1,222 +0,0 @@
      -define([
      -  'jquery',
      -  '../utils'
      -], function ($, Utils) {
      -  function AttachBody (decorated, $element, options) {
      -    this.$dropdownParent = options.get('dropdownParent') || $(document.body);
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  AttachBody.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    var setupResultsEvents = false;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('open', function () {
      -      self._showDropdown();
      -      self._attachPositioningHandler(container);
      -
      -      if (!setupResultsEvents) {
      -        setupResultsEvents = true;
      -
      -        container.on('results:all', function () {
      -          self._positionDropdown();
      -          self._resizeDropdown();
      -        });
      -
      -        container.on('results:append', function () {
      -          self._positionDropdown();
      -          self._resizeDropdown();
      -        });
      -      }
      -    });
      -
      -    container.on('close', function () {
      -      self._hideDropdown();
      -      self._detachPositioningHandler(container);
      -    });
      -
      -    this.$dropdownContainer.on('mousedown', function (evt) {
      -      evt.stopPropagation();
      -    });
      -  };
      -
      -  AttachBody.prototype.destroy = function (decorated) {
      -    decorated.call(this);
      -
      -    this.$dropdownContainer.remove();
      -  };
      -
      -  AttachBody.prototype.position = function (decorated, $dropdown, $container) {
      -    // Clone all of the container classes
      -    $dropdown.attr('class', $container.attr('class'));
      -
      -    $dropdown.removeClass('select2');
      -    $dropdown.addClass('select2-container--open');
      -
      -    $dropdown.css({
      -      position: 'absolute',
      -      top: -999999
      -    });
      -
      -    this.$container = $container;
      -  };
      -
      -  AttachBody.prototype.render = function (decorated) {
      -    var $container = $('<span></span>');
      -
      -    var $dropdown = decorated.call(this);
      -    $container.append($dropdown);
      -
      -    this.$dropdownContainer = $container;
      -
      -    return $container;
      -  };
      -
      -  AttachBody.prototype._hideDropdown = function (decorated) {
      -    this.$dropdownContainer.detach();
      -  };
      -
      -  AttachBody.prototype._attachPositioningHandler =
      -      function (decorated, container) {
      -    var self = this;
      -
      -    var scrollEvent = 'scroll.select2.' + container.id;
      -    var resizeEvent = 'resize.select2.' + container.id;
      -    var orientationEvent = 'orientationchange.select2.' + container.id;
      -
      -    var $watchers = this.$container.parents().filter(Utils.hasScroll);
      -    $watchers.each(function () {
      -      $(this).data('select2-scroll-position', {
      -        x: $(this).scrollLeft(),
      -        y: $(this).scrollTop()
      -      });
      -    });
      -
      -    $watchers.on(scrollEvent, function (ev) {
      -      var position = $(this).data('select2-scroll-position');
      -      $(this).scrollTop(position.y);
      -    });
      -
      -    $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,
      -      function (e) {
      -      self._positionDropdown();
      -      self._resizeDropdown();
      -    });
      -  };
      -
      -  AttachBody.prototype._detachPositioningHandler =
      -      function (decorated, container) {
      -    var scrollEvent = 'scroll.select2.' + container.id;
      -    var resizeEvent = 'resize.select2.' + container.id;
      -    var orientationEvent = 'orientationchange.select2.' + container.id;
      -
      -    var $watchers = this.$container.parents().filter(Utils.hasScroll);
      -    $watchers.off(scrollEvent);
      -
      -    $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);
      -  };
      -
      -  AttachBody.prototype._positionDropdown = function () {
      -    var $window = $(window);
      -
      -    var isCurrentlyAbove = this.$dropdown.hasClass('select2-dropdown--above');
      -    var isCurrentlyBelow = this.$dropdown.hasClass('select2-dropdown--below');
      -
      -    var newDirection = null;
      -
      -    var offset = this.$container.offset();
      -
      -    offset.bottom = offset.top + this.$container.outerHeight(false);
      -
      -    var container = {
      -      height: this.$container.outerHeight(false)
      -    };
      -
      -    container.top = offset.top;
      -    container.bottom = offset.top + container.height;
      -
      -    var dropdown = {
      -      height: this.$dropdown.outerHeight(false)
      -    };
      -
      -    var viewport = {
      -      top: $window.scrollTop(),
      -      bottom: $window.scrollTop() + $window.height()
      -    };
      -
      -    var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);
      -    var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);
      -
      -    var css = {
      -      left: offset.left,
      -      top: container.bottom
      -    };
      -
      -    // Determine what the parent element is to use for calciulating the offset
      -    var $offsetParent = this.$dropdownParent;
      -
      -    // For statically positoned elements, we need to get the element
      -    // that is determining the offset
      -    if ($offsetParent.css('position') === 'static') {
      -      $offsetParent = $offsetParent.offsetParent();
      -    }
      -
      -    var parentOffset = $offsetParent.offset();
      -
      -    css.top -= parentOffset.top;
      -    css.left -= parentOffset.left;
      -
      -    if (!isCurrentlyAbove && !isCurrentlyBelow) {
      -      newDirection = 'below';
      -    }
      -
      -    if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {
      -      newDirection = 'above';
      -    } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {
      -      newDirection = 'below';
      -    }
      -
      -    if (newDirection == 'above' ||
      -      (isCurrentlyAbove && newDirection !== 'below')) {
      -      css.top = container.top - parentOffset.top - dropdown.height;
      -    }
      -
      -    if (newDirection != null) {
      -      this.$dropdown
      -        .removeClass('select2-dropdown--below select2-dropdown--above')
      -        .addClass('select2-dropdown--' + newDirection);
      -      this.$container
      -        .removeClass('select2-container--below select2-container--above')
      -        .addClass('select2-container--' + newDirection);
      -    }
      -
      -    this.$dropdownContainer.css(css);
      -  };
      -
      -  AttachBody.prototype._resizeDropdown = function () {
      -    var css = {
      -      width: this.$container.outerWidth(false) + 'px'
      -    };
      -
      -    if (this.options.get('dropdownAutoWidth')) {
      -      css.minWidth = css.width;
      -      css.position = 'relative';
      -      css.width = 'auto';
      -    }
      -
      -    this.$dropdown.css(css);
      -  };
      -
      -  AttachBody.prototype._showDropdown = function (decorated) {
      -    this.$dropdownContainer.appendTo(this.$dropdownParent);
      -
      -    this._positionDropdown();
      -    this._resizeDropdown();
      -  };
      -
      -  return AttachBody;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/attachContainer.js b/bower_components/select2/src/js/select2/dropdown/attachContainer.js
      deleted file mode 100644
      index 4995df46a2..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/attachContainer.js
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -define([
      -
      -], function () {
      -  function AttachContainer (decorated, $element, options) {
      -    decorated.call(this, $element, options);
      -  }
      -
      -  AttachContainer.prototype.position =
      -    function (decorated, $dropdown, $container) {
      -    var $dropdownContainer = $container.find('.dropdown-wrapper');
      -    $dropdownContainer.append($dropdown);
      -
      -    $dropdown.addClass('select2-dropdown--below');
      -    $container.addClass('select2-container--below');
      -  };
      -
      -  return AttachContainer;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/closeOnSelect.js b/bower_components/select2/src/js/select2/dropdown/closeOnSelect.js
      deleted file mode 100644
      index fa6a82c43c..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/closeOnSelect.js
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -define([
      -
      -], function () {
      -  function CloseOnSelect () { }
      -
      -  CloseOnSelect.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('select', function (evt) {
      -      self._selectTriggered(evt);
      -    });
      -
      -    container.on('unselect', function (evt) {
      -      self._selectTriggered(evt);
      -    });
      -  };
      -
      -  CloseOnSelect.prototype._selectTriggered = function (_, evt) {
      -    var originalEvent = evt.originalEvent;
      -
      -    // Don't close if the control key is being held
      -    if (originalEvent && originalEvent.ctrlKey) {
      -      return;
      -    }
      -
      -    this.trigger('close', {
      -      originalEvent: originalEvent,
      -      originalSelect2Event: evt
      -    });
      -  };
      -
      -  return CloseOnSelect;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/hidePlaceholder.js b/bower_components/select2/src/js/select2/dropdown/hidePlaceholder.js
      deleted file mode 100644
      index 2901f68886..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/hidePlaceholder.js
      +++ /dev/null
      @@ -1,42 +0,0 @@
      -define([
      -
      -], function () {
      -  function HidePlaceholder (decorated, $element, options, dataAdapter) {
      -    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -  }
      -
      -  HidePlaceholder.prototype.append = function (decorated, data) {
      -    data.results = this.removePlaceholder(data.results);
      -
      -    decorated.call(this, data);
      -  };
      -
      -  HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {
      -    if (typeof placeholder === 'string') {
      -      placeholder = {
      -        id: '',
      -        text: placeholder
      -      };
      -    }
      -
      -    return placeholder;
      -  };
      -
      -  HidePlaceholder.prototype.removePlaceholder = function (_, data) {
      -    var modifiedData = data.slice(0);
      -
      -    for (var d = data.length - 1; d >= 0; d--) {
      -      var item = data[d];
      -
      -      if (this.placeholder.id === item.id) {
      -        modifiedData.splice(d, 1);
      -      }
      -    }
      -
      -    return modifiedData;
      -  };
      -
      -  return HidePlaceholder;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/infiniteScroll.js b/bower_components/select2/src/js/select2/dropdown/infiniteScroll.js
      deleted file mode 100644
      index 41d85de0b3..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/infiniteScroll.js
      +++ /dev/null
      @@ -1,89 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function InfiniteScroll (decorated, $element, options, dataAdapter) {
      -    this.lastParams = {};
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -
      -    this.$loadingMore = this.createLoadingMore();
      -    this.loading = false;
      -  }
      -
      -  InfiniteScroll.prototype.append = function (decorated, data) {
      -    this.$loadingMore.remove();
      -    this.loading = false;
      -
      -    decorated.call(this, data);
      -
      -    if (this.showLoadingMore(data)) {
      -      this.$results.append(this.$loadingMore);
      -    }
      -  };
      -
      -  InfiniteScroll.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('query', function (params) {
      -      self.lastParams = params;
      -      self.loading = true;
      -    });
      -
      -    container.on('query:append', function (params) {
      -      self.lastParams = params;
      -      self.loading = true;
      -    });
      -
      -    this.$results.on('scroll', function () {
      -      var isLoadMoreVisible = $.contains(
      -        document.documentElement,
      -        self.$loadingMore[0]
      -      );
      -
      -      if (self.loading || !isLoadMoreVisible) {
      -        return;
      -      }
      -
      -      var currentOffset = self.$results.offset().top +
      -        self.$results.outerHeight(false);
      -      var loadingMoreOffset = self.$loadingMore.offset().top +
      -        self.$loadingMore.outerHeight(false);
      -
      -      if (currentOffset + 50 >= loadingMoreOffset) {
      -        self.loadMore();
      -      }
      -    });
      -  };
      -
      -  InfiniteScroll.prototype.loadMore = function () {
      -    this.loading = true;
      -
      -    var params = $.extend({}, {page: 1}, this.lastParams);
      -
      -    params.page++;
      -
      -    this.trigger('query:append', params);
      -  };
      -
      -  InfiniteScroll.prototype.showLoadingMore = function (_, data) {
      -    return data.pagination && data.pagination.more;
      -  };
      -
      -  InfiniteScroll.prototype.createLoadingMore = function () {
      -    var $option = $(
      -      '<li ' +
      -      'class="select2-results__option select2-results__option--load-more"' +
      -      'role="treeitem" aria-disabled="true"></li>'
      -    );
      -
      -    var message = this.options.get('translations').get('loadingMore');
      -
      -    $option.html(message(this.lastParams));
      -
      -    return $option;
      -  };
      -
      -  return InfiniteScroll;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/minimumResultsForSearch.js b/bower_components/select2/src/js/select2/dropdown/minimumResultsForSearch.js
      deleted file mode 100644
      index b3625d48bc..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/minimumResultsForSearch.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -define([
      -
      -], function () {
      -  function countResults (data) {
      -    var count = 0;
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var item = data[d];
      -
      -      if (item.children) {
      -        count += countResults(item.children);
      -      } else {
      -        count++;
      -      }
      -    }
      -
      -    return count;
      -  }
      -
      -  function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {
      -    this.minimumResultsForSearch = options.get('minimumResultsForSearch');
      -
      -    if (this.minimumResultsForSearch < 0) {
      -      this.minimumResultsForSearch = Infinity;
      -    }
      -
      -    decorated.call(this, $element, options, dataAdapter);
      -  }
      -
      -  MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {
      -    if (countResults(params.data.results) < this.minimumResultsForSearch) {
      -      return false;
      -    }
      -
      -    return decorated.call(this, params);
      -  };
      -
      -  return MinimumResultsForSearch;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/search.js b/bower_components/select2/src/js/select2/dropdown/search.js
      deleted file mode 100644
      index 3e9df401df..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/search.js
      +++ /dev/null
      @@ -1,101 +0,0 @@
      -define([
      -  'jquery',
      -  '../utils'
      -], function ($, Utils) {
      -  function Search () { }
      -
      -  Search.prototype.render = function (decorated) {
      -    var $rendered = decorated.call(this);
      -
      -    var $search = $(
      -      '<span class="select2-search select2-search--dropdown">' +
      -        '<input class="select2-search__field" type="search" tabindex="-1"' +
      -        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
      -        ' spellcheck="false" role="textbox" />' +
      -      '</span>'
      -    );
      -
      -    this.$searchContainer = $search;
      -    this.$search = $search.find('input');
      -
      -    $rendered.prepend($search);
      -
      -    return $rendered;
      -  };
      -
      -  Search.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    this.$search.on('keydown', function (evt) {
      -      self.trigger('keypress', evt);
      -
      -      self._keyUpPrevented = evt.isDefaultPrevented();
      -    });
      -
      -    // Workaround for browsers which do not support the `input` event
      -    // This will prevent double-triggering of events for browsers which support
      -    // both the `keyup` and `input` events.
      -    this.$search.on('input', function (evt) {
      -      // Unbind the duplicated `keyup` event
      -      $(this).off('keyup');
      -    });
      -
      -    this.$search.on('keyup input', function (evt) {
      -      self.handleSearch(evt);
      -    });
      -
      -    container.on('open', function () {
      -      self.$search.attr('tabindex', 0);
      -
      -      self.$search.focus();
      -
      -      window.setTimeout(function () {
      -        self.$search.focus();
      -      }, 0);
      -    });
      -
      -    container.on('close', function () {
      -      self.$search.attr('tabindex', -1);
      -
      -      self.$search.val('');
      -    });
      -
      -    container.on('focus', function () {
      -      if (container.isOpen()) {
      -        self.$search.focus();
      -      }
      -    });
      -
      -    container.on('results:all', function (params) {
      -      if (params.query.term == null || params.query.term === '') {
      -        var showSearch = self.showSearch(params);
      -
      -        if (showSearch) {
      -          self.$searchContainer.removeClass('select2-search--hide');
      -        } else {
      -          self.$searchContainer.addClass('select2-search--hide');
      -        }
      -      }
      -    });
      -  };
      -
      -  Search.prototype.handleSearch = function (evt) {
      -    if (!this._keyUpPrevented) {
      -      var input = this.$search.val();
      -
      -      this.trigger('query', {
      -        term: input
      -      });
      -    }
      -
      -    this._keyUpPrevented = false;
      -  };
      -
      -  Search.prototype.showSearch = function (_, params) {
      -    return true;
      -  };
      -
      -  return Search;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/selectOnClose.js b/bower_components/select2/src/js/select2/dropdown/selectOnClose.js
      deleted file mode 100644
      index 430c0329b5..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/selectOnClose.js
      +++ /dev/null
      @@ -1,50 +0,0 @@
      -define([
      -
      -], function () {
      -  function SelectOnClose () { }
      -
      -  SelectOnClose.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('close', function (params) {
      -      self._handleSelectOnClose(params);
      -    });
      -  };
      -
      -  SelectOnClose.prototype._handleSelectOnClose = function (_, params) {
      -    if (params && params.originalSelect2Event != null) {
      -      var event = params.originalSelect2Event;
      -
      -      // Don't select an item if the close event was triggered from a select or
      -      // unselect event
      -      if (event._type === 'select' || event._type === 'unselect') {
      -        return;
      -      }
      -    }
      -
      -    var $highlightedResults = this.getHighlightedResults();
      -
      -    // Only select highlighted results
      -    if ($highlightedResults.length < 1) {
      -      return;
      -    }
      -
      -    var data = $highlightedResults.data('data');
      -
      -    // Don't re-select already selected resulte
      -    if (
      -      (data.element != null && data.element.selected) ||
      -      (data.element == null && data.selected)
      -    ) {
      -      return;
      -    }
      -
      -    this.trigger('select', {
      -        data: data
      -    });
      -  };
      -
      -  return SelectOnClose;
      -});
      diff --git a/bower_components/select2/src/js/select2/dropdown/stopPropagation.js b/bower_components/select2/src/js/select2/dropdown/stopPropagation.js
      deleted file mode 100644
      index 4f641827fb..0000000000
      --- a/bower_components/select2/src/js/select2/dropdown/stopPropagation.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -define([
      -
      -], function () {
      -  function StopPropagation () { }
      -
      -  StopPropagation.prototype.bind = function (decorated, container, $container) {
      -    decorated.call(this, container, $container);
      -
      -    var stoppedEvents = [
      -    'blur',
      -    'change',
      -    'click',
      -    'dblclick',
      -    'focus',
      -    'focusin',
      -    'focusout',
      -    'input',
      -    'keydown',
      -    'keyup',
      -    'keypress',
      -    'mousedown',
      -    'mouseenter',
      -    'mouseleave',
      -    'mousemove',
      -    'mouseover',
      -    'mouseup',
      -    'search',
      -    'touchend',
      -    'touchstart'
      -    ];
      -
      -    this.$dropdown.on(stoppedEvents.join(' '), function (evt) {
      -      evt.stopPropagation();
      -    });
      -  };
      -
      -  return StopPropagation;
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/ar.js b/bower_components/select2/src/js/select2/i18n/ar.js
      deleted file mode 100644
      index b7d44f4785..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/ar.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -define(function () {
      -  // Arabic
      -  return {
      -    errorLoading: function () {
      -      return 'لا يمكن تحميل النتائج';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'الرجاء حذف ' + overChars + ' عناصر';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'الرجاء إضافة ' + remainingChars + ' عناصر';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'جاري تحميل نتائج إضافية...';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'تستطيع إختيار ' + args.maximum + ' بنود فقط';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'لم يتم العثور على أي نتائج';
      -    },
      -    searching: function () {
      -      return 'جاري البحث…';
      -    }
      -  };
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/src/js/select2/i18n/az.js b/bower_components/select2/src/js/select2/i18n/az.js
      deleted file mode 100644
      index 0d9bda4357..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/az.js
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -define(function () {
      -  // Azerbaijani
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return overChars + ' simvol silin';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      return remainingChars + ' simvol daxil edin';
      -    },
      -    loadingMore: function () {
      -      return 'Daha çox nəticə yüklənir…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Sadəcə ' + args.maximum + ' element seçə bilərsiniz';
      -    },
      -    noResults: function () {
      -      return 'Nəticə tapılmadı';
      -    },
      -    searching: function () {
      -      return 'Axtarılır…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/bg.js b/bower_components/select2/src/js/select2/i18n/bg.js
      deleted file mode 100644
      index 909b4e55d0..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/bg.js
      +++ /dev/null
      @@ -1,47 +0,0 @@
      -define(function () {
      -  // Bulgarian
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Моля въведете с ' + overChars + ' по-малко символ';
      -
      -      if (overChars > 1) {
      -        message += 'a';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Моля въведете още ' + remainingChars + ' символ';
      -
      -      if (remainingChars > 1) {
      -        message += 'a';
      -      }
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Зареждат се още…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Можете да направите до ' + args.maximum + ' ';
      -
      -      if (args.maximum > 1) {
      -        message += 'избора';
      -      } else {
      -        message += 'избор';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Няма намерени съвпадения';
      -    },
      -    searching: function () {
      -      return 'Търсене…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/ca.js b/bower_components/select2/src/js/select2/i18n/ca.js
      deleted file mode 100644
      index 7aa8cc6a46..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/ca.js
      +++ /dev/null
      @@ -1,52 +0,0 @@
      -define(function () {
      -  // Catalan
      -  return {
      -    errorLoading: function () {
      -      return 'La càrrega ha fallat';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Si us plau, elimina ' + overChars + ' car';
      -
      -      if (overChars == 1) {
      -        message += 'àcter';
      -      } else {
      -        message += 'àcters';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Si us plau, introdueix ' + remainingChars + ' car';
      -
      -      if (remainingChars == 1) {
      -        message += 'àcter';
      -      } else {
      -        message += 'àcters';
      -      }
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Carregant més resultats…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Només es pot seleccionar ' + args.maximum + ' element';
      -
      -      if (args.maximum != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'No s\'han trobat resultats';
      -    },
      -    searching: function () {
      -      return 'Cercant…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/cs.js b/bower_components/select2/src/js/select2/i18n/cs.js
      deleted file mode 100644
      index 3769e2a40c..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/cs.js
      +++ /dev/null
      @@ -1,61 +0,0 @@
      -define(function () {
      -  // Czech
      -  function small (count, masc) {
      -    switch(count) {
      -      case 2:
      -        return masc ? 'dva' : 'dvě';
      -      case 3:
      -        return 'tři';
      -      case 4:
      -        return 'čtyři';
      -    }
      -    return '';
      -  }
      -  return {
      -    errorLoading: function () {
      -      return 'Výsledky nemohly být načteny.';
      -    },
      -    inputTooLong: function (args) {
      -      var n = args.input.length - args.maximum;
      -
      -      if (n == 1) {
      -        return 'Prosím zadejte o jeden znak méně';
      -      } else if (n <= 4) {
      -        return 'Prosím zadejte o ' + small(n, true) + ' znaky méně';
      -      } else {
      -        return 'Prosím zadejte o ' + n + ' znaků méně';
      -      }
      -    },
      -    inputTooShort: function (args) {
      -      var n = args.minimum - args.input.length;
      -
      -      if (n == 1) {
      -        return 'Prosím zadejte ještě jeden znak';
      -      } else if (n <= 4) {
      -        return 'Prosím zadejte ještě další ' + small(n, true) + ' znaky';
      -      } else {
      -        return 'Prosím zadejte ještě dalších ' + n + ' znaků';
      -      }
      -    },
      -    loadingMore: function () {
      -      return 'Načítají se další výsledky…';
      -    },
      -    maximumSelected: function (args) {
      -      var n = args.maximum;
      -
      -      if (n == 1) {
      -        return 'Můžete zvolit jen jednu položku';
      -      } else if (n <= 4) {
      -        return 'Můžete zvolit maximálně ' + small(n, false) + ' položky';
      -      } else {
      -        return 'Můžete zvolit maximálně ' + n + ' položek';
      -      }
      -    },
      -    noResults: function () {
      -      return 'Nenalezeny žádné položky';
      -    },
      -    searching: function () {
      -      return 'Vyhledávání…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/da.js b/bower_components/select2/src/js/select2/i18n/da.js
      deleted file mode 100644
      index 896d6591d0..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/da.js
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -define(function () {
      -  // Danish
      -  return {
      -    errorLoading: function () {
      -      return 'Resultaterne kunne ikke indlæses.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Angiv venligst ' + overChars + ' tegn mindre';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Angiv venligst ' + remainingChars + ' tegn mere';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Indlæser flere resultater…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Du kan kun vælge ' + args.maximum + ' emne';
      -
      -      if (args.maximum != 1) {
      -        message += 'r';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Ingen resultater fundet';
      -    },
      -    searching: function () {
      -      return 'Søger…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/de.js b/bower_components/select2/src/js/select2/i18n/de.js
      deleted file mode 100644
      index 482a2e76d5..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/de.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -define(function () {
      -  // German
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Bitte ' + overChars + ' Zeichen weniger eingeben';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      return 'Bitte ' + remainingChars + ' Zeichen mehr eingeben';
      -    },
      -    loadingMore: function () {
      -      return 'Lade mehr Ergebnisse…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Sie können nur ' + args.maximum + ' Eintr';
      -
      -      if (args.maximum === 1) {
      -        message += 'ag';
      -      } else {
      -        message += 'äge';
      -      }
      -
      -      message += ' auswählen';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Keine Übereinstimmungen gefunden';
      -    },
      -    searching: function () {
      -      return 'Suche…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/el.js b/bower_components/select2/src/js/select2/i18n/el.js
      deleted file mode 100644
      index 9cf8ee4888..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/el.js
      +++ /dev/null
      @@ -1,52 +0,0 @@
      -define(function () {
      -  // Greek (el)
      -  return {
      -    errorLoading: function () {
      -      return 'Τα αποτελέσματα δεν μπόρεσαν να φορτώσουν.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Παρακαλώ διαγράψτε ' + overChars + ' χαρακτήρ';
      -
      -      if (overChars == 1) {
      -        message += 'α';
      -      }
      -      if (overChars != 1) {
      -        message += 'ες';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Παρακαλώ συμπληρώστε ' + remainingChars +
      -        ' ή περισσότερους χαρακτήρες';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Φόρτωση περισσότερων αποτελεσμάτων…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Μπορείτε να επιλέξετε μόνο ' + args.maximum + ' επιλογ';
      -
      -      if (args.maximum == 1) {
      -        message += 'ή';
      -      }
      -
      -      if (args.maximum != 1) {
      -        message += 'ές';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Δεν βρέθηκαν αποτελέσματα';
      -    },
      -    searching: function () {
      -      return 'Αναζήτηση…';
      -    }
      -  };
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/src/js/select2/i18n/en.js b/bower_components/select2/src/js/select2/i18n/en.js
      deleted file mode 100644
      index f226f2c6d9..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/en.js
      +++ /dev/null
      @@ -1,44 +0,0 @@
      -define(function () {
      -  // English
      -  return {
      -    errorLoading: function () {
      -      return 'The results could not be loaded.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Please delete ' + overChars + ' character';
      -
      -      if (overChars != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Please enter ' + remainingChars + ' or more characters';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Loading more results…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'You can only select ' + args.maximum + ' item';
      -
      -      if (args.maximum != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'No results found';
      -    },
      -    searching: function () {
      -      return 'Searching…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/es.js b/bower_components/select2/src/js/select2/i18n/es.js
      deleted file mode 100644
      index f17826d0b4..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/es.js
      +++ /dev/null
      @@ -1,52 +0,0 @@
      -define(function () {
      -  // Spanish
      -  return {
      -    errorLoading: function () {
      -      return 'La carga falló';
      -    },
      -    inputTooLong: function (args) {
      -      var remainingChars = args.input.length - args.maximum;
      -
      -      var message = 'Por favor, elimine ' + remainingChars + ' car';
      -
      -      if (remainingChars == 1) {
      -        message += 'ácter';
      -      } else {
      -        message += 'acteres';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Por favor, introduzca ' + remainingChars + ' car';
      -
      -      if (remainingChars == 1) {
      -        message += 'ácter';
      -      } else {
      -        message += 'acteres';
      -      }
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Cargando más resultados…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Sólo puede seleccionar ' + args.maximum + ' elemento';
      -
      -      if (args.maximum != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'No se encontraron resultados';
      -    },
      -    searching: function () {
      -      return 'Buscando…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/et.js b/bower_components/select2/src/js/select2/i18n/et.js
      deleted file mode 100644
      index d546ade2b1..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/et.js
      +++ /dev/null
      @@ -1,53 +0,0 @@
      -define(function () {
      -  // Estonian
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Sisesta ' + overChars + ' täht';
      -
      -      if (overChars != 1) {
      -        message += 'e';
      -      }
      -
      -      message += ' vähem';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Sisesta ' + remainingChars + ' täht';
      -
      -      if (remainingChars != 1) {
      -        message += 'e';
      -      }
      -
      -      message += ' rohkem';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Laen tulemusi…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Saad vaid ' + args.maximum + ' tulemus';
      -
      -      if (args.maximum == 1) {
      -        message += 'e';
      -      } else {
      -        message += 't';
      -      }
      -
      -      message += ' valida';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Tulemused puuduvad';
      -    },
      -    searching: function () {
      -      return 'Otsin…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/eu.js b/bower_components/select2/src/js/select2/i18n/eu.js
      deleted file mode 100644
      index 4a1f894884..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/eu.js
      +++ /dev/null
      @@ -1,51 +0,0 @@
      -define(function () {
      -  // Basque
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Idatzi ';
      -
      -      if (overChars == 1) {
      -        message += 'karaktere bat';
      -      } else {
      -        message += overChars + ' karaktere';
      -      }
      -
      -      message += ' gutxiago';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Idatzi ';
      -
      -      if (remainingChars == 1) {
      -        message += 'karaktere bat';
      -      } else {
      -        message += remainingChars + ' karaktere';
      -      }
      -
      -      message += ' gehiago';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Emaitza gehiago kargatzen…';
      -    },
      -    maximumSelected: function (args) {
      -      if (args.maximum === 1) {
      -        return 'Elementu bakarra hauta dezakezu';
      -      } else {
      -        return args.maximum + ' elementu hauta ditzakezu soilik';
      -      }
      -    },
      -    noResults: function () {
      -      return 'Ez da bat datorrenik aurkitu';
      -    },
      -    searching: function () {
      -      return 'Bilatzen…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/fa.js b/bower_components/select2/src/js/select2/i18n/fa.js
      deleted file mode 100644
      index 64ce1a5f8f..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/fa.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -/* jshint -W100 */
      -/* jslint maxlen: 86 */
      -define(function () {
      -  // Farsi (Persian)
      -  return {
      -    errorLoading: function () {
      -      return 'امکان بارگذاری نتایج وجود ندارد.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'لطفاً ' + overChars + ' کاراکتر را حذف نمایید';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'لطفاً تعداد ' + remainingChars + ' کاراکتر یا بیشتر وارد نمایید';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'در حال بارگذاری نتایج بیشتر...';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'شما تنها می‌توانید ' + args.maximum + ' آیتم را انتخاب نمایید';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'هیچ نتیجه‌ای یافت نشد';
      -    },
      -    searching: function () {
      -      return 'در حال جستجو...';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/fi.js b/bower_components/select2/src/js/select2/i18n/fi.js
      deleted file mode 100644
      index 94605afd39..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/fi.js
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -define(function () {
      -  // Finnish
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Ole hyvä ja anna ' + overChars + ' merkkiä vähemmän';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      return 'Ole hyvä ja anna ' + remainingChars + ' merkkiä lisää';
      -    },
      -    loadingMore: function () {
      -      return 'Ladataan lisää tuloksia…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Voit valita ainoastaan ' + args.maximum + ' kpl';
      -    },
      -    noResults: function () {
      -      return 'Ei tuloksia';
      -    },
      -    searching: function () {
      -
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/fr.js b/bower_components/select2/src/js/select2/i18n/fr.js
      deleted file mode 100644
      index 0f4fbdc2fb..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/fr.js
      +++ /dev/null
      @@ -1,49 +0,0 @@
      -define(function () {
      -  // French
      -  return {
      -    errorLoading: function () {
      -      return 'Les résultats ne peuvent pas être chargés.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Supprimez ' + overChars + ' caractère';
      -
      -      if (overChars !== 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Saisissez ' + remainingChars + ' caractère';
      -
      -      if (remainingChars !== 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Chargement de résultats supplémentaires…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Vous pouvez seulement sélectionner ' +
      -        args.maximum + ' élément';
      -
      -      if (args.maximum !== 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Aucun résultat trouvé';
      -    },
      -    searching: function () {
      -      return 'Recherche en cours…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/gl.js b/bower_components/select2/src/js/select2/i18n/gl.js
      deleted file mode 100644
      index 1d89f0a022..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/gl.js
      +++ /dev/null
      @@ -1,51 +0,0 @@
      -define(function () {
      -  // Galician
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Elimine ';
      -
      -      if (overChars === 1) {
      -        message += 'un carácter';
      -      } else {
      -        message += overChars + ' caracteres';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Engada ';
      -
      -      if (remainingChars === 1) {
      -        message += 'un carácter';
      -      } else {
      -        message += remainingChars + ' caracteres';
      -      }
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Cargando máis resultados…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Só pode ';
      -
      -      if (args.maximum === 1) {
      -        message += 'un elemento';
      -      } else {
      -        message += args.maximum + ' elementos';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Non se atoparon resultados';
      -    },
      -    searching: function () {
      -      return 'Buscando…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/he.js b/bower_components/select2/src/js/select2/i18n/he.js
      deleted file mode 100644
      index 5a27f8199f..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/he.js
      +++ /dev/null
      @@ -1,56 +0,0 @@
      -define(function () {
      -  // Hebrew
      -  return {
      -    errorLoading: function () {
      -      return 'שגיאה בטעינת התוצאות';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'נא למחוק ';
      -
      -      if (overChars === 1) {
      -        message += 'תו אחד';
      -      } else {
      -        message += overChars + ' תווים';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'נא להכניס ';
      -
      -      if (remainingChars === 1) {
      -        message += 'תו אחד';
      -      } else {
      -        message += remainingChars + ' תווים';
      -      }
      -
      -      message += ' או יותר';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'טוען תוצאות נוספות…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'באפשרותך לבחור עד ';
      -
      -      if (args.maximum === 1) {
      -        message += 'פריט אחד';
      -      } else {
      -        message += args.maximum + ' פריטים';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'לא נמצאו תוצאות';
      -    },
      -    searching: function () {
      -      return 'מחפש…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/hi.js b/bower_components/select2/src/js/select2/i18n/hi.js
      deleted file mode 100644
      index e8ee153322..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/hi.js
      +++ /dev/null
      @@ -1,39 +0,0 @@
      -define(function () {
      -  // Hindi
      -  return {
      -    errorLoading: function () {
      -      return 'परिणामों को लोड नहीं किया जा सका।';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message =  overChars + ' अक्षर को हटा दें';
      -
      -      if (overChars > 1) {
      -        message = overChars + ' अक्षरों को हटा दें ';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'कृपया ' + remainingChars + ' या अधिक अक्षर दर्ज करें';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'अधिक परिणाम लोड हो रहे है...';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'आप केवल ' + args.maximum + ' आइटम का चयन कर सकते हैं';
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'कोई परिणाम नहीं मिला';
      -    },
      -    searching: function () {
      -      return 'खोज रहा है...';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/hr.js b/bower_components/select2/src/js/select2/i18n/hr.js
      deleted file mode 100644
      index 81462a5ca5..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/hr.js
      +++ /dev/null
      @@ -1,44 +0,0 @@
      -define(function () {
      -  // Croatian
      -  function character (n) {
      -    var message = ' ' + n + ' znak';
      -
      -    if (n % 10 < 5 && n % 10 > 0 && (n % 100 < 5 || n % 100 > 19)) {
      -      if (n % 10 > 1) {
      -        message += 'a';
      -      }
      -    } else {
      -      message += 'ova';
      -    }
      -
      -    return message;
      -  }
      -
      -  return {
      -    errorLoading: function () {
      -      return 'Preuzimanje nije uspjelo.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Unesite ' + character(overChars);
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      return 'Unesite još ' + character(remainingChars);
      -    },
      -    loadingMore: function () {
      -      return 'Učitavanje rezultata…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Maksimalan broj odabranih stavki je ' + args.maximum;
      -    },
      -    noResults: function () {
      -      return 'Nema rezultata';
      -    },
      -    searching: function () {
      -      return 'Pretraga…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/hu.js b/bower_components/select2/src/js/select2/i18n/hu.js
      deleted file mode 100644
      index 3fd8ada4be..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/hu.js
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -define(function () {
      -  // Hungarian
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Túl hosszú. ' + overChars + ' karakterrel több, mint kellene.';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      return 'Túl rövid. Még ' + remainingChars + ' karakter hiányzik.';
      -    },
      -    loadingMore: function () {
      -      return 'Töltés…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Csak ' + args.maximum + ' elemet lehet kiválasztani.';
      -    },
      -    noResults: function () {
      -      return 'Nincs találat.';
      -    },
      -    searching: function () {
      -      return 'Keresés…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/id.js b/bower_components/select2/src/js/select2/i18n/id.js
      deleted file mode 100644
      index 43b632e5bf..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/id.js
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -define(function () {
      -  // Indonesian
      -  return {
      -    errorLoading: function () {
      -      return 'Data tidak boleh diambil.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Hapuskan ' + overChars + ' huruf';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      return 'Masukkan ' + remainingChars + ' huruf lagi';
      -    },
      -    loadingMore: function () {
      -      return 'Mengambil data…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Anda hanya dapat memilih ' + args.maximum + ' pilihan';
      -    },
      -    noResults: function () {
      -      return 'Tidak ada data yang sesuai';
      -    },
      -    searching: function () {
      -      return 'Mencari…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/is.js b/bower_components/select2/src/js/select2/i18n/is.js
      deleted file mode 100644
      index 7a835f5aeb..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/is.js
      +++ /dev/null
      @@ -1,41 +0,0 @@
      -define(function () {
      -  // Icelandic
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Vinsamlegast styttið texta um ' + overChars + ' staf';
      -
      -      if (overChars <= 1) {
      -        return message;
      -      }
      -
      -      return message + 'i';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Vinsamlegast skrifið ' + remainingChars + ' staf';
      -
      -      if (remainingChars > 1) {
      -        message += 'i';
      -      }
      -
      -      message += ' í viðbót';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Sæki fleiri niðurstöður…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Þú getur aðeins valið ' + args.maximum + ' atriði';
      -    },
      -    noResults: function () {
      -      return 'Ekkert fannst';
      -    },
      -    searching: function () {
      -      return 'Leita…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/it.js b/bower_components/select2/src/js/select2/i18n/it.js
      deleted file mode 100644
      index 76c2e4bc11..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/it.js
      +++ /dev/null
      @@ -1,48 +0,0 @@
      -define(function () {
      -  // Italian
      -  return {
      -    errorLoading: function () {
      -      return 'I risultati non possono essere caricati.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Per favore cancella ' + overChars + ' caratter';
      -
      -      if (overChars !== 1) {
      -        message += 'i';
      -      } else {
      -        message += 'e';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Per favore inserisci ' +remainingChars+ ' o più caratteri';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Caricando più risultati…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Puoi selezionare solo ' + args.maximum + ' element';
      -
      -      if (args.maximum !== 1) {
      -        message += 'i';
      -      } else {
      -        message += 'o';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Nessun risultato trovato';
      -    },
      -    searching: function () {
      -      return 'Sto cercando…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/ja.js b/bower_components/select2/src/js/select2/i18n/ja.js
      deleted file mode 100644
      index c954c4f49e..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/ja.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -define(function () {
      -  // Japanese
      -  return {
      -    errorLoading: function () {
      -      return '結果が読み込まれませんでした';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = overChars + ' 文字を削除してください';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = '少なくとも ' + remainingChars + ' 文字を入力してください';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return '読み込み中…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = args.maximum + ' 件しか選択できません';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return '対象が見つかりません';
      -    },
      -    searching: function () {
      -      return '検索しています…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/km.js b/bower_components/select2/src/js/select2/i18n/km.js
      deleted file mode 100644
      index 10e3d7e13f..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/km.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -define(function () {
      -  // Khmer
      -  return {
      -    errorLoading: function () {
      -      return 'មិនអាចទាញយកទិន្នន័យ';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'សូមលុបចេញ  ' + overChars + ' អក្សរ';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'សូមបញ្ចូល' + remainingChars + ' អក្សរ រឺ ច្រើនជាងនេះ';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'កំពុងទាញយកទិន្នន័យបន្ថែម...';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'អ្នកអាចជ្រើសរើសបានតែ ' + args.maximum + ' ជម្រើសប៉ុណ្ណោះ';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'មិនមានលទ្ធផល';
      -    },
      -    searching: function () {
      -      return 'កំពុងស្វែងរក...';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/ko.js b/bower_components/select2/src/js/select2/i18n/ko.js
      deleted file mode 100644
      index 9a2de10904..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/ko.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -define(function () {
      -  // Korean
      -  return {
      -    errorLoading: function () {
      -      return '결과를 불러올 수 없습니다.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = '너무 깁니다. ' + overChars + ' 글자 지워주세요.';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = '너무 짧습니다. ' + remainingChars + ' 글자 더 입력해주세요.';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return '불러오는 중…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = '최대 ' + args.maximum + '개까지만 선택 가능합니다.';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return '결과가 없습니다.';
      -    },
      -    searching: function () {
      -      return '검색 중…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/lt.js b/bower_components/select2/src/js/select2/i18n/lt.js
      deleted file mode 100644
      index 500a519ab2..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/lt.js
      +++ /dev/null
      @@ -1,52 +0,0 @@
      -define(function () {
      -  // rules from
      -  // http://www.unicode.org/cldr/charts/latest/supplemental/language_plural_rules.html#lt
      -  function ending(count, one, few, other) {
      -    if (count % 10 === 1 && (count % 100 < 11 || count % 100 > 19)) {
      -      return one;
      -    } else if (
      -      (count % 10 >= 2 && count % 10 <= 9) &&
      -      (count % 100 < 11 || count % 100 > 19)) {
      -      return few;
      -    } else {
      -      return other;
      -    }
      -  }
      -
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Pašalinkite ' + overChars + ' simbol';
      -
      -      message += ending(overChars, 'į', 'ius', 'ių');
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Įrašykite dar ' + remainingChars + ' simbol';
      -
      -      message += ending(remainingChars, 'į', 'ius', 'ių');
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Kraunama daugiau rezultatų…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Jūs galite pasirinkti tik ' + args.maximum + ' element';
      -
      -      message += ending(args.maximum, 'ą', 'us', 'ų');
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Atitikmenų nerasta';
      -    },
      -    searching: function () {
      -      return 'Ieškoma…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/lv.js b/bower_components/select2/src/js/select2/i18n/lv.js
      deleted file mode 100644
      index 560cab0fc3..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/lv.js
      +++ /dev/null
      @@ -1,51 +0,0 @@
      -define(function () {
      -  // Latvian
      -  function ending (count, eleven, singular, other) {
      -    if (count === 11) {
      -      return eleven;
      -    }
      -
      -    if (count % 10 === 1) {
      -      return singular;
      -    }
      -
      -    return other;
      -  }
      -
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Lūdzu ievadiet par  ' + overChars;
      -
      -      message += ' simbol' + ending(overChars, 'iem', 'u', 'iem');
      -
      -      return message + ' mazāk';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Lūdzu ievadiet vēl ' + remainingChars;
      -
      -      message += ' simbol' + ending(remainingChars, 'us', 'u', 'us');
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Datu ielāde…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Jūs varat izvēlēties ne vairāk kā ' + args.maximum;
      -
      -      message += ' element' + ending(args.maximum, 'us', 'u', 'us');
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Sakritību nav';
      -    },
      -    searching: function () {
      -      return 'Meklēšana…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/mk.js b/bower_components/select2/src/js/select2/i18n/mk.js
      deleted file mode 100644
      index a27f0e8144..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/mk.js
      +++ /dev/null
      @@ -1,47 +0,0 @@
      -define(function () {
      -  // Macedonian
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Ве молиме внесете ' + args.maximum + ' помалку карактер';
      -
      -      if (args.maximum !== 1) {
      -        message += 'и';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Ве молиме внесете уште ' + args.maximum + ' карактер';
      -
      -      if (args.maximum !== 1) {
      -        message += 'и';
      -      }
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Вчитување резултати…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Можете да изберете само ' + args.maximum + ' ставк';
      -
      -      if (args.maximum === 1) {
      -        message += 'а';
      -      } else {
      -        message += 'и';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Нема пронајдено совпаѓања';
      -    },
      -    searching: function () {
      -      return 'Пребарување…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/ms.js b/bower_components/select2/src/js/select2/i18n/ms.js
      deleted file mode 100644
      index 3c115621e3..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/ms.js
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -define(function () {
      -  // Malay
      -  return {
      -    errorLoading: function () {
      -      return 'Keputusan tidak berjaya dimuatkan.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Sila hapuskan ' + overChars + ' aksara';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      return 'Sila masukkan ' + remainingChars + ' atau lebih aksara';
      -    },
      -    loadingMore: function () {
      -      return 'Sedang memuatkan keputusan…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Anda hanya boleh memilih ' + args.maximum + ' pilihan';
      -    },
      -    noResults: function () {
      -      return 'Tiada padanan yang ditemui';
      -    },
      -    searching: function () {
      -      return 'Mencari…';
      -    }
      -  };
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/src/js/select2/i18n/nb.js b/bower_components/select2/src/js/select2/i18n/nb.js
      deleted file mode 100644
      index 2b7fe16f86..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/nb.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -define(function () {
      -  // Norwegian (Bokmål)
      -  return {
      -    errorLoading: function () {
      -      return 'Kunne ikke hente resultater.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Vennligst fjern ' + overChars + ' tegn';
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Vennligst skriv inn ';
      -
      -      if (remainingChars > 1) {
      -        message += ' flere tegn';
      -      } else {
      -        message += ' tegn til';
      -      }
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Laster flere resultater…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Du kan velge maks ' + args.maximum + ' elementer';
      -    },
      -    noResults: function () {
      -      return 'Ingen treff';
      -    },
      -    searching: function () {
      -      return 'Søker…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/nl.js b/bower_components/select2/src/js/select2/i18n/nl.js
      deleted file mode 100644
      index e8c016ad08..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/nl.js
      +++ /dev/null
      @@ -1,43 +0,0 @@
      -define(function () {
      -  // Dutch
      -  return {
      -    errorLoading: function () {
      -      return 'De resultaten konden niet worden geladen.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Gelieve ' + overChars + ' karakters te verwijderen';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Gelieve ' + remainingChars +
      -        ' of meer karakters in te voeren';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Meer resultaten laden…';
      -    },
      -    maximumSelected: function (args) {
      -      var verb = args.maximum == 1 ? 'kan' : 'kunnen';
      -      var message = 'Er ' + verb + ' maar ' + args.maximum + ' item';
      -
      -      if (args.maximum != 1) {
      -        message += 's';
      -      }
      -      message += ' worden geselecteerd';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Geen resultaten gevonden…';
      -    },
      -    searching: function () {
      -      return 'Zoeken…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/pl.js b/bower_components/select2/src/js/select2/i18n/pl.js
      deleted file mode 100644
      index 030a4ddc3d..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/pl.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -define(function () {
      -  // Polish
      -  var charsWords = ['znak', 'znaki', 'znaków'];
      -  var itemsWords = ['element', 'elementy', 'elementów'];
      -
      -  var pluralWord = function pluralWord(numberOfChars, words) {
      -    if (numberOfChars === 1) {
      -        return words[0];
      -    } else if (numberOfChars > 1 && numberOfChars <= 4) {
      -      return words[1];
      -    } else if (numberOfChars >= 5) {
      -      return words[2];
      -    }
      -  };
      -  
      -  return {
      -    errorLoading: function () {
      -      return 'Nie można załadować wyników.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      return 'Usuń ' + overChars + ' ' + pluralWord(overChars, charsWords);
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -      
      -      return 'Podaj przynajmniej ' + remainingChars + ' ' +
      -        pluralWord(remainingChars, charsWords);
      -    },
      -    loadingMore: function () {
      -      return 'Trwa ładowanie…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Możesz zaznaczyć tylko ' + args.maximum + ' ' +
      -        pluralWord(args.maximum, itemsWords);
      -    },
      -    noResults: function () {
      -      return 'Brak wyników';
      -    },
      -    searching: function () {
      -      return 'Trwa wyszukiwanie…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/pt-BR.js b/bower_components/select2/src/js/select2/i18n/pt-BR.js
      deleted file mode 100644
      index 7f769b6922..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/pt-BR.js
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -define(function () {
      -  // Brazilian Portuguese
      -  return {
      -    errorLoading: function () {
      -      return 'Os resultados não puderam ser carregados.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Apague ' + overChars + ' caracter';
      -
      -      if (overChars != 1) {
      -        message += 'es';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Digite ' + remainingChars + ' ou mais caracteres';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Carregando mais resultados…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Você só pode selecionar ' + args.maximum + ' ite';
      -
      -      if (args.maximum == 1) {
      -        message += 'm';
      -      } else {
      -        message += 'ns';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Nenhum resultado encontrado';
      -    },
      -    searching: function () {
      -      return 'Buscando…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/pt.js b/bower_components/select2/src/js/select2/i18n/pt.js
      deleted file mode 100644
      index 4919f696b0..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/pt.js
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -define(function () {
      -  // European Portuguese
      -  return {
      -    errorLoading: function () {
      -      return 'Os resultados não puderam ser carregados.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Por favor apague ' + overChars + ' ';
      -
      -      message += overChars != 1 ? 'caracteres' : 'carácter';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Introduza ' + remainingChars + ' ou mais caracteres';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'A carregar mais resultados…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Apenas pode seleccionar ' + args.maximum + ' ';
      -
      -      message += args.maximum != 1 ? 'itens' : 'item';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Sem resultados';
      -    },
      -    searching: function () {
      -      return 'A procurar…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/ro.js b/bower_components/select2/src/js/select2/i18n/ro.js
      deleted file mode 100644
      index d62133a0f2..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/ro.js
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -define(function () {
      -  // Romanian
      -  return {
      -    errorLoading: function () {
      -      return 'Rezultatele nu au putut fi incărcate.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Vă rugăm să ștergeți' + overChars + ' caracter';
      -
      -      if (overChars !== 1) {
      -        message += 'e';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Vă rugăm să introduceți ' + remainingChars +
      -        'sau mai multe caractere';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Se încarcă mai multe rezultate…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Aveți voie să selectați cel mult ' + args.maximum;
      -      message += ' element';
      -
      -      if (args.maximum !== 1) {
      -        message += 'e';
      -      }
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Nu au fost găsite rezultate';
      -    },
      -    searching: function () {
      -      return 'Căutare…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/ru.js b/bower_components/select2/src/js/select2/i18n/ru.js
      deleted file mode 100644
      index 2ac11ec750..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/ru.js
      +++ /dev/null
      @@ -1,58 +0,0 @@
      -define(function () {
      -  // Russian
      -  function ending (count, one, couple, more) {
      -    if (count % 10 < 5 && count % 10 > 0 &&
      -        count % 100 < 5 || count % 100 > 20) {
      -      if (count % 10 > 1) {
      -        return couple;
      -      }
      -    } else {
      -      return more;
      -    }
      -
      -    return one;
      -  }
      -
      -  return {
      -    errorLoading: function () {
      -      return 'Невозможно загрузить результаты';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Пожалуйста, введите на ' + overChars + ' символ';
      -
      -      message += ending(overChars, '', 'a', 'ов');
      -
      -      message += ' меньше';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Пожалуйста, введите еще хотя бы ' + remainingChars +
      -        ' символ';
      -
      -      message += ending(remainingChars, '', 'a', 'ов');
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Загрузка данных…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Вы можете выбрать не более ' + args.maximum + ' элемент';
      -
      -      message += ending(args.maximum, '', 'a', 'ов');
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Совпадений не найдено';
      -    },
      -    searching: function () {
      -      return 'Поиск…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/sk.js b/bower_components/select2/src/js/select2/i18n/sk.js
      deleted file mode 100644
      index 449754e3ec..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/sk.js
      +++ /dev/null
      @@ -1,56 +0,0 @@
      -define(function () {
      -  // Slovak
      -
      -  // use text for the numbers 2 through 4
      -  var smallNumbers = {
      -    2: function (masc) { return (masc ? 'dva' : 'dve'); },
      -    3: function () { return 'tri'; },
      -    4: function () { return 'štyri'; }
      -  };
      -
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      if (overChars == 1) {
      -        return 'Prosím, zadajte o jeden znak menej';
      -      } else if (overChars >= 2 && overChars <= 4) {
      -        return 'Prosím, zadajte o ' + smallNumbers[overChars](true) +
      -          ' znaky menej';
      -      } else {
      -        return 'Prosím, zadajte o ' + overChars + ' znakov menej';
      -      }
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      if (remainingChars == 1) {
      -        return 'Prosím, zadajte ešte jeden znak';
      -      } else if (remainingChars <= 4) {
      -        return 'Prosím, zadajte ešte ďalšie ' +
      -          smallNumbers[remainingChars](true) + ' znaky';
      -      } else {
      -        return 'Prosím, zadajte ešte ďalších ' + remainingChars + ' znakov';
      -      }
      -    },
      -    loadingMore: function () {
      -      return 'Loading more results…';
      -    },
      -    maximumSelected: function (args) {
      -      if (args.maximum == 1) {
      -        return 'Môžete zvoliť len jednu položku';
      -      } else if (args.maximum >= 2 && args.maximum <= 4) {
      -        return 'Môžete zvoliť najviac ' + smallNumbers[args.maximum](false) +
      -          ' položky';
      -      } else {
      -        return 'Môžete zvoliť najviac ' + args.maximum + ' položiek';
      -      }
      -    },
      -    noResults: function () {
      -      return 'Nenašli sa žiadne položky';
      -    },
      -    searching: function () {
      -      return 'Vyhľadávanie…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/sr-Cyrl.js b/bower_components/select2/src/js/select2/i18n/sr-Cyrl.js
      deleted file mode 100644
      index c61184e3b3..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/sr-Cyrl.js
      +++ /dev/null
      @@ -1,55 +0,0 @@
      -define(function () {
      -  // Serbian Cyrilic
      -  function ending (count, one, some, many) {
      -    if (count % 10 == 1 && count % 100 != 11) {
      -      return one;
      -    }
      -
      -    if (count % 10 >= 2 && count % 10 <= 4 &&
      -      (count % 100 < 12 || count % 100 > 14)) {
      -        return some;
      -    }
      -
      -    return many;
      -  }
      -
      -  return {
      -    errorLoading: function () {
      -      return 'Преузимање није успело.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Обришите ' + overChars + ' симбол';
      -
      -      message += ending(overChars, '', 'а', 'а');
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Укуцајте бар још ' + remainingChars + ' симбол';
      -
      -      message += ending(remainingChars, '', 'а', 'а');
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Преузимање још резултата…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Можете изабрати само ' + args.maximum + ' ставк';
      -
      -      message += ending(args.maximum, 'у', 'е', 'и');
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Ништа није пронађено';
      -    },
      -    searching: function () {
      -      return 'Претрага…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/sr.js b/bower_components/select2/src/js/select2/i18n/sr.js
      deleted file mode 100644
      index 7821b2b8e5..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/sr.js
      +++ /dev/null
      @@ -1,55 +0,0 @@
      -define(function () {
      -  // Serbian
      -  function ending (count, one, some, many) {
      -    if (count % 10 == 1 && count % 100 != 11) {
      -      return one;
      -    }
      -
      -    if (count % 10 >= 2 && count % 10 <= 4 &&
      -      (count % 100 < 12 || count % 100 > 14)) {
      -        return some;
      -    }
      -
      -    return many;
      -  }
      -
      -  return {
      -    errorLoading: function () {
      -      return 'Preuzimanje nije uspelo.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Obrišite ' + overChars + ' simbol';
      -
      -      message += ending(overChars, '', 'a', 'a');
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Ukucajte bar još ' + remainingChars + ' simbol';
      -
      -      message += ending(remainingChars, '', 'a', 'a');
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Preuzimanje još rezultata…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Možete izabrati samo ' + args.maximum + ' stavk';
      -
      -      message += ending(args.maximum, 'u', 'e', 'i');
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Ništa nije pronađeno';
      -    },
      -    searching: function () {
      -      return 'Pretraga…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/sv.js b/bower_components/select2/src/js/select2/i18n/sv.js
      deleted file mode 100644
      index 42bed7e52d..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/sv.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -define(function () {
      -  // Swedish
      -  return {
      -    errorLoading: function () {
      -      return 'Resultat kunde inte laddas.';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Vänligen sudda ut ' + overChars + ' tecken';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Vänligen skriv in ' + remainingChars +
      -                    ' eller fler tecken';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Laddar fler resultat…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Du kan max välja ' + args.maximum + ' element';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Inga träffar';
      -    },
      -    searching: function () {
      -      return 'Söker…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/th.js b/bower_components/select2/src/js/select2/i18n/th.js
      deleted file mode 100644
      index 3f6efb7f59..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/th.js
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -define(function () {
      -  // Thai
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'โปรดลบออก ' + overChars + ' ตัวอักษร';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'โปรดพิมพ์เพิ่มอีก ' + remainingChars + ' ตัวอักษร';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'กำลังค้นข้อมูลเพิ่ม…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'คุณสามารถเลือกได้ไม่เกิน ' + args.maximum + ' รายการ';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'ไม่พบข้อมูล';
      -    },
      -    searching: function () {
      -      return 'กำลังค้นข้อมูล…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/tr.js b/bower_components/select2/src/js/select2/i18n/tr.js
      deleted file mode 100644
      index 636132f9b4..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/tr.js
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -define(function () {
      -  // Turkish
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = overChars + ' karakter daha girmelisiniz';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'En az ' + remainingChars + ' karakter daha girmelisiniz';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Daha fazla…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Sadece ' + args.maximum + ' seçim yapabilirsiniz';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Sonuç bulunamadı';
      -    },
      -    searching: function () {
      -      return 'Aranıyor…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/uk.js b/bower_components/select2/src/js/select2/i18n/uk.js
      deleted file mode 100644
      index 72067c9c7f..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/uk.js
      +++ /dev/null
      @@ -1,43 +0,0 @@
      -define(function () {
      -  // Ukranian
      -  function ending (count, one, couple, more) {
      -    if (count % 100 > 10 && count % 100 < 15) {
      -      return more;
      -    }
      -    if (count % 10 === 1) {
      -      return one;
      -    }
      -    if (count % 10 > 1 && count % 10 < 5) {
      -      return couple;
      -    }
      -    return more;
      -  }
      -
      -  return {
      -    errorLoading: function () {
      -      return 'Неможливо завантажити результати';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -      return 'Будь ласка, видаліть ' + overChars + ' ' +
      -        ending(args.maximum, 'літеру', 'літери', 'літер');
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -      return 'Будь ласка, введіть ' + remainingChars + ' або більше літер';
      -    },
      -    loadingMore: function () {
      -      return 'Завантаження інших результатів…';
      -    },
      -    maximumSelected: function (args) {
      -      return 'Ви можете вибрати лише ' + args.maximum + ' ' +
      -        ending(args.maximum, 'пункт', 'пункти', 'пунктів');
      -    },
      -    noResults: function () {
      -      return 'Нічого не знайдено';
      -    },
      -    searching: function () {
      -      return 'Пошук…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/vi.js b/bower_components/select2/src/js/select2/i18n/vi.js
      deleted file mode 100644
      index f50ff75b5f..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/vi.js
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -define(function () {
      -  // Vietnamese
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = 'Vui lòng nhập ít hơn ' + overChars + ' ký tự';
      -
      -      if (overChars != 1) {
      -        message += 's';
      -      }
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = 'Vui lòng nhập nhiều hơn ' + remainingChars + ' ký tự"';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return 'Đang lấy thêm kết quả…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = 'Chỉ có thể chọn được ' + args.maximum + ' lựa chọn';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return 'Không tìm thấy kết quả';
      -    },
      -    searching: function () {
      -      return 'Đang tìm…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/zh-CN.js b/bower_components/select2/src/js/select2/i18n/zh-CN.js
      deleted file mode 100644
      index 4aaec39efd..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/zh-CN.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -define(function () {
      -  // Chinese (Simplified)
      -  return {
      -    errorLoading: function () {
      -      return '无法载入结果。';
      -    },
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = '请删除' + overChars + '个字符';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = '请再输入至少' + remainingChars + '个字符';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return '载入更多结果…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = '最多只能选择' + args.maximum + '个项目';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return '未找到结果';
      -    },
      -    searching: function () {
      -      return '搜索中…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/i18n/zh-TW.js b/bower_components/select2/src/js/select2/i18n/zh-TW.js
      deleted file mode 100644
      index 80624f1607..0000000000
      --- a/bower_components/select2/src/js/select2/i18n/zh-TW.js
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -define(function () {
      -  // Chinese (Traditional)
      -  return {
      -    inputTooLong: function (args) {
      -      var overChars = args.input.length - args.maximum;
      -
      -      var message = '請刪掉' + overChars + '個字元';
      -
      -      return message;
      -    },
      -    inputTooShort: function (args) {
      -      var remainingChars = args.minimum - args.input.length;
      -
      -      var message = '請再輸入' + remainingChars + '個字元';
      -
      -      return message;
      -    },
      -    loadingMore: function () {
      -      return '載入中…';
      -    },
      -    maximumSelected: function (args) {
      -      var message = '你只能選擇最多' + args.maximum + '項';
      -
      -      return message;
      -    },
      -    noResults: function () {
      -      return '沒有找到相符的項目';
      -    },
      -    searching: function () {
      -      return '搜尋中…';
      -    }
      -  };
      -});
      diff --git a/bower_components/select2/src/js/select2/keys.js b/bower_components/select2/src/js/select2/keys.js
      deleted file mode 100644
      index f449ba4358..0000000000
      --- a/bower_components/select2/src/js/select2/keys.js
      +++ /dev/null
      @@ -1,25 +0,0 @@
      -define([
      -
      -], function () {
      -  var KEYS = {
      -    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 KEYS;
      -});
      diff --git a/bower_components/select2/src/js/select2/options.js b/bower_components/select2/src/js/select2/options.js
      deleted file mode 100644
      index 3e48deea50..0000000000
      --- a/bower_components/select2/src/js/select2/options.js
      +++ /dev/null
      @@ -1,122 +0,0 @@
      -define([
      -  'require',
      -  'jquery',
      -  './defaults',
      -  './utils'
      -], function (require, $, Defaults, Utils) {
      -  function Options (options, $element) {
      -    this.options = options;
      -
      -    if ($element != null) {
      -      this.fromElement($element);
      -    }
      -
      -    this.options = Defaults.apply(this.options);
      -
      -    if ($element && $element.is('input')) {
      -      var InputCompat = require(this.get('amdBase') + 'compat/inputData');
      -
      -      this.options.dataAdapter = Utils.Decorate(
      -        this.options.dataAdapter,
      -        InputCompat
      -      );
      -    }
      -  }
      -
      -  Options.prototype.fromElement = function ($e) {
      -    var excludedData = ['select2'];
      -
      -    if (this.options.multiple == null) {
      -      this.options.multiple = $e.prop('multiple');
      -    }
      -
      -    if (this.options.disabled == null) {
      -      this.options.disabled = $e.prop('disabled');
      -    }
      -
      -    if (this.options.language == null) {
      -      if ($e.prop('lang')) {
      -        this.options.language = $e.prop('lang').toLowerCase();
      -      } else if ($e.closest('[lang]').prop('lang')) {
      -        this.options.language = $e.closest('[lang]').prop('lang');
      -      }
      -    }
      -
      -    if (this.options.dir == null) {
      -      if ($e.prop('dir')) {
      -        this.options.dir = $e.prop('dir');
      -      } else if ($e.closest('[dir]').prop('dir')) {
      -        this.options.dir = $e.closest('[dir]').prop('dir');
      -      } else {
      -        this.options.dir = 'ltr';
      -      }
      -    }
      -
      -    $e.prop('disabled', this.options.disabled);
      -    $e.prop('multiple', this.options.multiple);
      -
      -    if ($e.data('select2Tags')) {
      -      if (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.'
      -        );
      -      }
      -
      -      $e.data('data', $e.data('select2Tags'));
      -      $e.data('tags', true);
      -    }
      -
      -    if ($e.data('ajaxUrl')) {
      -      if (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.'
      -        );
      -      }
      -
      -      $e.attr('ajax--url', $e.data('ajaxUrl'));
      -      $e.data('ajax--url', $e.data('ajaxUrl'));
      -    }
      -
      -    var dataset = {};
      -
      -    // Prefer the element's `dataset` attribute if it exists
      -    // jQuery 1.x does not correctly handle data attributes with multiple dashes
      -    if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {
      -      dataset = $.extend(true, {}, $e[0].dataset, $e.data());
      -    } else {
      -      dataset = $e.data();
      -    }
      -
      -    var data = $.extend(true, {}, dataset);
      -
      -    data = Utils._convertData(data);
      -
      -    for (var key in data) {
      -      if ($.inArray(key, excludedData) > -1) {
      -        continue;
      -      }
      -
      -      if ($.isPlainObject(this.options[key])) {
      -        $.extend(this.options[key], data[key]);
      -      } else {
      -        this.options[key] = data[key];
      -      }
      -    }
      -
      -    return this;
      -  };
      -
      -  Options.prototype.get = function (key) {
      -    return this.options[key];
      -  };
      -
      -  Options.prototype.set = function (key, val) {
      -    this.options[key] = val;
      -  };
      -
      -  return Options;
      -});
      diff --git a/bower_components/select2/src/js/select2/results.js b/bower_components/select2/src/js/select2/results.js
      deleted file mode 100644
      index a16b65fd0f..0000000000
      --- a/bower_components/select2/src/js/select2/results.js
      +++ /dev/null
      @@ -1,523 +0,0 @@
      -define([
      -  'jquery',
      -  './utils'
      -], function ($, Utils) {
      -  function Results ($element, options, dataAdapter) {
      -    this.$element = $element;
      -    this.data = dataAdapter;
      -    this.options = options;
      -
      -    Results.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(Results, Utils.Observable);
      -
      -  Results.prototype.render = function () {
      -    var $results = $(
      -      '<ul class="select2-results__options" role="tree"></ul>'
      -    );
      -
      -    if (this.options.get('multiple')) {
      -      $results.attr('aria-multiselectable', 'true');
      -    }
      -
      -    this.$results = $results;
      -
      -    return $results;
      -  };
      -
      -  Results.prototype.clear = function () {
      -    this.$results.empty();
      -  };
      -
      -  Results.prototype.displayMessage = function (params) {
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    this.clear();
      -    this.hideLoading();
      -
      -    var $message = $(
      -      '<li role="treeitem" aria-live="assertive"' +
      -      ' class="select2-results__option"></li>'
      -    );
      -
      -    var message = this.options.get('translations').get(params.message);
      -
      -    $message.append(
      -      escapeMarkup(
      -        message(params.args)
      -      )
      -    );
      -
      -    $message[0].className += ' select2-results__message';
      -
      -    this.$results.append($message);
      -  };
      -
      -  Results.prototype.hideMessages = function () {
      -    this.$results.find('.select2-results__message').remove();
      -  };
      -
      -  Results.prototype.append = function (data) {
      -    this.hideLoading();
      -
      -    var $options = [];
      -
      -    if (data.results == null || data.results.length === 0) {
      -      if (this.$results.children().length === 0) {
      -        this.trigger('results:message', {
      -          message: 'noResults'
      -        });
      -      }
      -
      -      return;
      -    }
      -
      -    data.results = this.sort(data.results);
      -
      -    for (var d = 0; d < data.results.length; d++) {
      -      var item = data.results[d];
      -
      -      var $option = this.option(item);
      -
      -      $options.push($option);
      -    }
      -
      -    this.$results.append($options);
      -  };
      -
      -  Results.prototype.position = function ($results, $dropdown) {
      -    var $resultsContainer = $dropdown.find('.select2-results');
      -    $resultsContainer.append($results);
      -  };
      -
      -  Results.prototype.sort = function (data) {
      -    var sorter = this.options.get('sorter');
      -
      -    return sorter(data);
      -  };
      -
      -  Results.prototype.highlightFirstItem = function () {
      -    var $options = this.$results
      -      .find('.select2-results__option[aria-selected]');
      -
      -    var $selected = $options.filter('[aria-selected=true]');
      -
      -    // Check if there are any selected options
      -    if ($selected.length > 0) {
      -      // If there are selected options, highlight the first
      -      $selected.first().trigger('mouseenter');
      -    } else {
      -      // If there are no selected options, highlight the first option
      -      // in the dropdown
      -      $options.first().trigger('mouseenter');
      -    }
      -
      -    this.ensureHighlightVisible();
      -  };
      -
      -  Results.prototype.setClasses = function () {
      -    var self = this;
      -
      -    this.data.current(function (selected) {
      -      var selectedIds = $.map(selected, function (s) {
      -        return s.id.toString();
      -      });
      -
      -      var $options = self.$results
      -        .find('.select2-results__option[aria-selected]');
      -
      -      $options.each(function () {
      -        var $option = $(this);
      -
      -        var item = $.data(this, 'data');
      -
      -        // id needs to be converted to a string when comparing
      -        var id = '' + item.id;
      -
      -        if ((item.element != null && item.element.selected) ||
      -            (item.element == null && $.inArray(id, selectedIds) > -1)) {
      -          $option.attr('aria-selected', 'true');
      -        } else {
      -          $option.attr('aria-selected', 'false');
      -        }
      -      });
      -
      -    });
      -  };
      -
      -  Results.prototype.showLoading = function (params) {
      -    this.hideLoading();
      -
      -    var loadingMore = this.options.get('translations').get('searching');
      -
      -    var loading = {
      -      disabled: true,
      -      loading: true,
      -      text: loadingMore(params)
      -    };
      -    var $loading = this.option(loading);
      -    $loading.className += ' loading-results';
      -
      -    this.$results.prepend($loading);
      -  };
      -
      -  Results.prototype.hideLoading = function () {
      -    this.$results.find('.loading-results').remove();
      -  };
      -
      -  Results.prototype.option = function (data) {
      -    var option = document.createElement('li');
      -    option.className = 'select2-results__option';
      -
      -    var attrs = {
      -      'role': 'treeitem',
      -      'aria-selected': 'false'
      -    };
      -
      -    if (data.disabled) {
      -      delete attrs['aria-selected'];
      -      attrs['aria-disabled'] = 'true';
      -    }
      -
      -    if (data.id == null) {
      -      delete attrs['aria-selected'];
      -    }
      -
      -    if (data._resultId != null) {
      -      option.id = data._resultId;
      -    }
      -
      -    if (data.title) {
      -      option.title = data.title;
      -    }
      -
      -    if (data.children) {
      -      attrs.role = 'group';
      -      attrs['aria-label'] = data.text;
      -      delete attrs['aria-selected'];
      -    }
      -
      -    for (var attr in attrs) {
      -      var val = attrs[attr];
      -
      -      option.setAttribute(attr, val);
      -    }
      -
      -    if (data.children) {
      -      var $option = $(option);
      -
      -      var label = document.createElement('strong');
      -      label.className = 'select2-results__group';
      -
      -      var $label = $(label);
      -      this.template(data, label);
      -
      -      var $children = [];
      -
      -      for (var c = 0; c < data.children.length; c++) {
      -        var child = data.children[c];
      -
      -        var $child = this.option(child);
      -
      -        $children.push($child);
      -      }
      -
      -      var $childrenContainer = $('<ul></ul>', {
      -        'class': 'select2-results__options select2-results__options--nested'
      -      });
      -
      -      $childrenContainer.append($children);
      -
      -      $option.append(label);
      -      $option.append($childrenContainer);
      -    } else {
      -      this.template(data, option);
      -    }
      -
      -    $.data(option, 'data', data);
      -
      -    return option;
      -  };
      -
      -  Results.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    var id = container.id + '-results';
      -
      -    this.$results.attr('id', id);
      -
      -    container.on('results:all', function (params) {
      -      self.clear();
      -      self.append(params.data);
      -
      -      if (container.isOpen()) {
      -        self.setClasses();
      -        self.highlightFirstItem();
      -      }
      -    });
      -
      -    container.on('results:append', function (params) {
      -      self.append(params.data);
      -
      -      if (container.isOpen()) {
      -        self.setClasses();
      -      }
      -    });
      -
      -    container.on('query', function (params) {
      -      self.hideMessages();
      -      self.showLoading(params);
      -    });
      -
      -    container.on('select', function () {
      -      if (!container.isOpen()) {
      -        return;
      -      }
      -
      -      self.setClasses();
      -      self.highlightFirstItem();
      -    });
      -
      -    container.on('unselect', function () {
      -      if (!container.isOpen()) {
      -        return;
      -      }
      -
      -      self.setClasses();
      -      self.highlightFirstItem();
      -    });
      -
      -    container.on('open', function () {
      -      // When the dropdown is open, aria-expended="true"
      -      self.$results.attr('aria-expanded', 'true');
      -      self.$results.attr('aria-hidden', 'false');
      -
      -      self.setClasses();
      -      self.ensureHighlightVisible();
      -    });
      -
      -    container.on('close', function () {
      -      // When the dropdown is closed, aria-expended="false"
      -      self.$results.attr('aria-expanded', 'false');
      -      self.$results.attr('aria-hidden', 'true');
      -      self.$results.removeAttr('aria-activedescendant');
      -    });
      -
      -    container.on('results:toggle', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      if ($highlighted.length === 0) {
      -        return;
      -      }
      -
      -      $highlighted.trigger('mouseup');
      -    });
      -
      -    container.on('results:select', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      if ($highlighted.length === 0) {
      -        return;
      -      }
      -
      -      var data = $highlighted.data('data');
      -
      -      if ($highlighted.attr('aria-selected') == 'true') {
      -        self.trigger('close', {});
      -      } else {
      -        self.trigger('select', {
      -          data: data
      -        });
      -      }
      -    });
      -
      -    container.on('results:previous', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      var $options = self.$results.find('[aria-selected]');
      -
      -      var currentIndex = $options.index($highlighted);
      -
      -      // If we are already at te top, don't move further
      -      if (currentIndex === 0) {
      -        return;
      -      }
      -
      -      var nextIndex = currentIndex - 1;
      -
      -      // If none are highlighted, highlight the first
      -      if ($highlighted.length === 0) {
      -        nextIndex = 0;
      -      }
      -
      -      var $next = $options.eq(nextIndex);
      -
      -      $next.trigger('mouseenter');
      -
      -      var currentOffset = self.$results.offset().top;
      -      var nextTop = $next.offset().top;
      -      var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);
      -
      -      if (nextIndex === 0) {
      -        self.$results.scrollTop(0);
      -      } else if (nextTop - currentOffset < 0) {
      -        self.$results.scrollTop(nextOffset);
      -      }
      -    });
      -
      -    container.on('results:next', function () {
      -      var $highlighted = self.getHighlightedResults();
      -
      -      var $options = self.$results.find('[aria-selected]');
      -
      -      var currentIndex = $options.index($highlighted);
      -
      -      var nextIndex = currentIndex + 1;
      -
      -      // If we are at the last option, stay there
      -      if (nextIndex >= $options.length) {
      -        return;
      -      }
      -
      -      var $next = $options.eq(nextIndex);
      -
      -      $next.trigger('mouseenter');
      -
      -      var currentOffset = self.$results.offset().top +
      -        self.$results.outerHeight(false);
      -      var nextBottom = $next.offset().top + $next.outerHeight(false);
      -      var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;
      -
      -      if (nextIndex === 0) {
      -        self.$results.scrollTop(0);
      -      } else if (nextBottom > currentOffset) {
      -        self.$results.scrollTop(nextOffset);
      -      }
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      params.element.addClass('select2-results__option--highlighted');
      -    });
      -
      -    container.on('results:message', function (params) {
      -      self.displayMessage(params);
      -    });
      -
      -    if ($.fn.mousewheel) {
      -      this.$results.on('mousewheel', function (e) {
      -        var top = self.$results.scrollTop();
      -
      -        var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;
      -
      -        var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;
      -        var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();
      -
      -        if (isAtTop) {
      -          self.$results.scrollTop(0);
      -
      -          e.preventDefault();
      -          e.stopPropagation();
      -        } else if (isAtBottom) {
      -          self.$results.scrollTop(
      -            self.$results.get(0).scrollHeight - self.$results.height()
      -          );
      -
      -          e.preventDefault();
      -          e.stopPropagation();
      -        }
      -      });
      -    }
      -
      -    this.$results.on('mouseup', '.select2-results__option[aria-selected]',
      -      function (evt) {
      -      var $this = $(this);
      -
      -      var data = $this.data('data');
      -
      -      if ($this.attr('aria-selected') === 'true') {
      -        if (self.options.get('multiple')) {
      -          self.trigger('unselect', {
      -            originalEvent: evt,
      -            data: data
      -          });
      -        } else {
      -          self.trigger('close', {});
      -        }
      -
      -        return;
      -      }
      -
      -      self.trigger('select', {
      -        originalEvent: evt,
      -        data: data
      -      });
      -    });
      -
      -    this.$results.on('mouseenter', '.select2-results__option[aria-selected]',
      -      function (evt) {
      -      var data = $(this).data('data');
      -
      -      self.getHighlightedResults()
      -          .removeClass('select2-results__option--highlighted');
      -
      -      self.trigger('results:focus', {
      -        data: data,
      -        element: $(this)
      -      });
      -    });
      -  };
      -
      -  Results.prototype.getHighlightedResults = function () {
      -    var $highlighted = this.$results
      -    .find('.select2-results__option--highlighted');
      -
      -    return $highlighted;
      -  };
      -
      -  Results.prototype.destroy = function () {
      -    this.$results.remove();
      -  };
      -
      -  Results.prototype.ensureHighlightVisible = function () {
      -    var $highlighted = this.getHighlightedResults();
      -
      -    if ($highlighted.length === 0) {
      -      return;
      -    }
      -
      -    var $options = this.$results.find('[aria-selected]');
      -
      -    var currentIndex = $options.index($highlighted);
      -
      -    var currentOffset = this.$results.offset().top;
      -    var nextTop = $highlighted.offset().top;
      -    var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);
      -
      -    var offsetDelta = nextTop - currentOffset;
      -    nextOffset -= $highlighted.outerHeight(false) * 2;
      -
      -    if (currentIndex <= 2) {
      -      this.$results.scrollTop(0);
      -    } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {
      -      this.$results.scrollTop(nextOffset);
      -    }
      -  };
      -
      -  Results.prototype.template = function (result, container) {
      -    var template = this.options.get('templateResult');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    var content = template(result, container);
      -
      -    if (content == null) {
      -      container.style.display = 'none';
      -    } else if (typeof content === 'string') {
      -      container.innerHTML = escapeMarkup(content);
      -    } else {
      -      $(container).append(content);
      -    }
      -  };
      -
      -  return Results;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/allowClear.js b/bower_components/select2/src/js/select2/selection/allowClear.js
      deleted file mode 100644
      index d3502069f5..0000000000
      --- a/bower_components/select2/src/js/select2/selection/allowClear.js
      +++ /dev/null
      @@ -1,97 +0,0 @@
      -define([
      -  'jquery',
      -  '../keys'
      -], function ($, KEYS) {
      -  function AllowClear () { }
      -
      -  AllowClear.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    if (this.placeholder == null) {
      -      if (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 (evt) {
      -        self._handleClear(evt);
      -    });
      -
      -    container.on('keypress', function (evt) {
      -      self._handleKeyboardClear(evt, container);
      -    });
      -  };
      -
      -  AllowClear.prototype._handleClear = function (_, evt) {
      -    // Ignore the event if it is disabled
      -    if (this.options.get('disabled')) {
      -      return;
      -    }
      -
      -    var $clear = this.$selection.find('.select2-selection__clear');
      -
      -    // Ignore the event if nothing has been selected
      -    if ($clear.length === 0) {
      -      return;
      -    }
      -
      -    evt.stopPropagation();
      -
      -    var data = $clear.data('data');
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var unselectData = {
      -        data: data[d]
      -      };
      -
      -      // Trigger the `unselect` event, so people can prevent it from being
      -      // cleared.
      -      this.trigger('unselect', unselectData);
      -
      -      // If the event was prevented, don't clear it out.
      -      if (unselectData.prevented) {
      -        return;
      -      }
      -    }
      -
      -    this.$element.val(this.placeholder.id).trigger('change');
      -
      -    this.trigger('toggle', {});
      -  };
      -
      -  AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {
      -    if (container.isOpen()) {
      -      return;
      -    }
      -
      -    if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {
      -      this._handleClear(evt);
      -    }
      -  };
      -
      -  AllowClear.prototype.update = function (decorated, data) {
      -    decorated.call(this, data);
      -
      -    if (this.$selection.find('.select2-selection__placeholder').length > 0 ||
      -        data.length === 0) {
      -      return;
      -    }
      -
      -    var $remove = $(
      -      '<span class="select2-selection__clear">' +
      -        '&times;' +
      -      '</span>'
      -    );
      -    $remove.data('data', data);
      -
      -    this.$selection.find('.select2-selection__rendered').prepend($remove);
      -  };
      -
      -  return AllowClear;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/base.js b/bower_components/select2/src/js/select2/selection/base.js
      deleted file mode 100644
      index cd3aafdab7..0000000000
      --- a/bower_components/select2/src/js/select2/selection/base.js
      +++ /dev/null
      @@ -1,158 +0,0 @@
      -define([
      -  'jquery',
      -  '../utils',
      -  '../keys'
      -], function ($, Utils, KEYS) {
      -  function BaseSelection ($element, options) {
      -    this.$element = $element;
      -    this.options = options;
      -
      -    BaseSelection.__super__.constructor.call(this);
      -  }
      -
      -  Utils.Extend(BaseSelection, Utils.Observable);
      -
      -  BaseSelection.prototype.render = function () {
      -    var $selection = $(
      -      '<span class="select2-selection" role="combobox" ' +
      -      ' aria-haspopup="true" aria-expanded="false">' +
      -      '</span>'
      -    );
      -
      -    this._tabindex = 0;
      -
      -    if (this.$element.data('old-tabindex') != null) {
      -      this._tabindex = this.$element.data('old-tabindex');
      -    } else if (this.$element.attr('tabindex') != null) {
      -      this._tabindex = this.$element.attr('tabindex');
      -    }
      -
      -    $selection.attr('title', this.$element.attr('title'));
      -    $selection.attr('tabindex', this._tabindex);
      -
      -    this.$selection = $selection;
      -
      -    return $selection;
      -  };
      -
      -  BaseSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    var id = container.id + '-container';
      -    var resultsId = container.id + '-results';
      -
      -    this.container = container;
      -
      -    this.$selection.on('focus', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this.$selection.on('blur', function (evt) {
      -      self._handleBlur(evt);
      -    });
      -
      -    this.$selection.on('keydown', function (evt) {
      -      self.trigger('keypress', evt);
      -
      -      if (evt.which === KEYS.SPACE) {
      -        evt.preventDefault();
      -      }
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      self.$selection.attr('aria-activedescendant', params.data._resultId);
      -    });
      -
      -    container.on('selection:update', function (params) {
      -      self.update(params.data);
      -    });
      -
      -    container.on('open', function () {
      -      // When the dropdown is open, aria-expanded="true"
      -      self.$selection.attr('aria-expanded', 'true');
      -      self.$selection.attr('aria-owns', resultsId);
      -
      -      self._attachCloseHandler(container);
      -    });
      -
      -    container.on('close', function () {
      -      // When the dropdown is closed, aria-expanded="false"
      -      self.$selection.attr('aria-expanded', 'false');
      -      self.$selection.removeAttr('aria-activedescendant');
      -      self.$selection.removeAttr('aria-owns');
      -
      -      self.$selection.focus();
      -
      -      self._detachCloseHandler(container);
      -    });
      -
      -    container.on('enable', function () {
      -      self.$selection.attr('tabindex', self._tabindex);
      -    });
      -
      -    container.on('disable', function () {
      -      self.$selection.attr('tabindex', '-1');
      -    });
      -  };
      -
      -  BaseSelection.prototype._handleBlur = function (evt) {
      -    var self = this;
      -
      -    // This needs to be delayed as the active element is the body when the tab
      -    // key is pressed, possibly along with others.
      -    window.setTimeout(function () {
      -      // Don't trigger `blur` if the focus is still in the selection
      -      if (
      -        (document.activeElement == self.$selection[0]) ||
      -        ($.contains(self.$selection[0], document.activeElement))
      -      ) {
      -        return;
      -      }
      -
      -      self.trigger('blur', evt);
      -    }, 1);
      -  };
      -
      -  BaseSelection.prototype._attachCloseHandler = function (container) {
      -    var self = this;
      -
      -    $(document.body).on('mousedown.select2.' + container.id, function (e) {
      -      var $target = $(e.target);
      -
      -      var $select = $target.closest('.select2');
      -
      -      var $all = $('.select2.select2-container--open');
      -
      -      $all.each(function () {
      -        var $this = $(this);
      -
      -        if (this == $select[0]) {
      -          return;
      -        }
      -
      -        var $element = $this.data('element');
      -
      -        $element.select2('close');
      -      });
      -    });
      -  };
      -
      -  BaseSelection.prototype._detachCloseHandler = function (container) {
      -    $(document.body).off('mousedown.select2.' + container.id);
      -  };
      -
      -  BaseSelection.prototype.position = function ($selection, $container) {
      -    var $selectionContainer = $container.find('.selection');
      -    $selectionContainer.append($selection);
      -  };
      -
      -  BaseSelection.prototype.destroy = function () {
      -    this._detachCloseHandler(this.container);
      -  };
      -
      -  BaseSelection.prototype.update = function (data) {
      -    throw new Error('The `update` method must be defined in child classes.');
      -  };
      -
      -  return BaseSelection;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/clickMask.js b/bower_components/select2/src/js/select2/selection/clickMask.js
      deleted file mode 100644
      index 2b4ac3076e..0000000000
      --- a/bower_components/select2/src/js/select2/selection/clickMask.js
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function ClickMask () { }
      -
      -  ClickMask.prototype.bind = function (decorate, $container, container) {
      -    var self = this;
      -
      -    decorate.call(this, $container, container);
      -
      -    this.$mask = $(
      -      '<div class="select2-close-mask"></div>'
      -    );
      -
      -    this.$mask.on('mousedown touchstart click', function () {
      -      self.trigger('close', {});
      -    });
      -  };
      -
      -  ClickMask.prototype._attachCloseHandler = function (decorate, container) {
      -    $(document.body).append(this.$mask);
      -  };
      -
      -  ClickMask.prototype._detachCloseHandler = function (deocrate, container) {
      -    this.$mask.detach();
      -  };
      -
      -  return ClickMask;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/eventRelay.js b/bower_components/select2/src/js/select2/selection/eventRelay.js
      deleted file mode 100644
      index a91e9c5776..0000000000
      --- a/bower_components/select2/src/js/select2/selection/eventRelay.js
      +++ /dev/null
      @@ -1,45 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  function EventRelay () { }
      -
      -  EventRelay.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -    var relayEvents = [
      -      'open', 'opening',
      -      'close', 'closing',
      -      'select', 'selecting',
      -      'unselect', 'unselecting'
      -    ];
      -
      -    var preventableEvents = ['opening', 'closing', 'selecting', 'unselecting'];
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('*', function (name, params) {
      -      // Ignore events that should not be relayed
      -      if ($.inArray(name, relayEvents) === -1) {
      -        return;
      -      }
      -
      -      // The parameters should always be an object
      -      params = params || {};
      -
      -      // Generate the jQuery event for the Select2 event
      -      var evt = $.Event('select2:' + name, {
      -        params: params
      -      });
      -
      -      self.$element.trigger(evt);
      -
      -      // Only handle preventable events if it was one
      -      if ($.inArray(name, preventableEvents) === -1) {
      -        return;
      -      }
      -
      -      params.prevented = evt.isDefaultPrevented();
      -    });
      -  };
      -
      -  return EventRelay;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/multiple.js b/bower_components/select2/src/js/select2/selection/multiple.js
      deleted file mode 100644
      index ae0f7cce7e..0000000000
      --- a/bower_components/select2/src/js/select2/selection/multiple.js
      +++ /dev/null
      @@ -1,109 +0,0 @@
      -define([
      -  'jquery',
      -  './base',
      -  '../utils'
      -], function ($, BaseSelection, Utils) {
      -  function MultipleSelection ($element, options) {
      -    MultipleSelection.__super__.constructor.apply(this, arguments);
      -  }
      -
      -  Utils.Extend(MultipleSelection, BaseSelection);
      -
      -  MultipleSelection.prototype.render = function () {
      -    var $selection = MultipleSelection.__super__.render.call(this);
      -
      -    $selection.addClass('select2-selection--multiple');
      -
      -    $selection.html(
      -      '<ul class="select2-selection__rendered"></ul>'
      -    );
      -
      -    return $selection;
      -  };
      -
      -  MultipleSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    MultipleSelection.__super__.bind.apply(this, arguments);
      -
      -    this.$selection.on('click', function (evt) {
      -      self.trigger('toggle', {
      -        originalEvent: evt
      -      });
      -    });
      -
      -    this.$selection.on(
      -      'click',
      -      '.select2-selection__choice__remove',
      -      function (evt) {
      -        // Ignore the event if it is disabled
      -        if (self.options.get('disabled')) {
      -          return;
      -        }
      -
      -        var $remove = $(this);
      -        var $selection = $remove.parent();
      -
      -        var data = $selection.data('data');
      -
      -        self.trigger('unselect', {
      -          originalEvent: evt,
      -          data: data
      -        });
      -      }
      -    );
      -  };
      -
      -  MultipleSelection.prototype.clear = function () {
      -    this.$selection.find('.select2-selection__rendered').empty();
      -  };
      -
      -  MultipleSelection.prototype.display = function (data, container) {
      -    var template = this.options.get('templateSelection');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    return escapeMarkup(template(data, container));
      -  };
      -
      -  MultipleSelection.prototype.selectionContainer = function () {
      -    var $container = $(
      -      '<li class="select2-selection__choice">' +
      -        '<span class="select2-selection__choice__remove" role="presentation">' +
      -          '&times;' +
      -        '</span>' +
      -      '</li>'
      -    );
      -
      -    return $container;
      -  };
      -
      -  MultipleSelection.prototype.update = function (data) {
      -    this.clear();
      -
      -    if (data.length === 0) {
      -      return;
      -    }
      -
      -    var $selections = [];
      -
      -    for (var d = 0; d < data.length; d++) {
      -      var selection = data[d];
      -
      -      var $selection = this.selectionContainer();
      -      var formatted = this.display(selection, $selection);
      -
      -      $selection.append(formatted);
      -      $selection.prop('title', selection.title || selection.text);
      -
      -      $selection.data('data', selection);
      -
      -      $selections.push($selection);
      -    }
      -
      -    var $rendered = this.$selection.find('.select2-selection__rendered');
      -
      -    Utils.appendMany($rendered, $selections);
      -  };
      -
      -  return MultipleSelection;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/placeholder.js b/bower_components/select2/src/js/select2/selection/placeholder.js
      deleted file mode 100644
      index 87fbedac96..0000000000
      --- a/bower_components/select2/src/js/select2/selection/placeholder.js
      +++ /dev/null
      @@ -1,49 +0,0 @@
      -define([
      -  '../utils'
      -], function (Utils) {
      -  function Placeholder (decorated, $element, options) {
      -    this.placeholder = this.normalizePlaceholder(options.get('placeholder'));
      -
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {
      -    if (typeof placeholder === 'string') {
      -      placeholder = {
      -        id: '',
      -        text: placeholder
      -      };
      -    }
      -
      -    return placeholder;
      -  };
      -
      -  Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {
      -    var $placeholder = this.selectionContainer();
      -
      -    $placeholder.html(this.display(placeholder));
      -    $placeholder.addClass('select2-selection__placeholder')
      -                .removeClass('select2-selection__choice');
      -
      -    return $placeholder;
      -  };
      -
      -  Placeholder.prototype.update = function (decorated, data) {
      -    var singlePlaceholder = (
      -      data.length == 1 && data[0].id != this.placeholder.id
      -    );
      -    var multipleSelections = data.length > 1;
      -
      -    if (multipleSelections || singlePlaceholder) {
      -      return decorated.call(this, data);
      -    }
      -
      -    this.clear();
      -
      -    var $placeholder = this.createPlaceholder(this.placeholder);
      -
      -    this.$selection.find('.select2-selection__rendered').append($placeholder);
      -  };
      -
      -  return Placeholder;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/search.js b/bower_components/select2/src/js/select2/selection/search.js
      deleted file mode 100644
      index 77c4edca7b..0000000000
      --- a/bower_components/select2/src/js/select2/selection/search.js
      +++ /dev/null
      @@ -1,222 +0,0 @@
      -define([
      -  'jquery',
      -  '../utils',
      -  '../keys'
      -], function ($, Utils, KEYS) {
      -  function Search (decorated, $element, options) {
      -    decorated.call(this, $element, options);
      -  }
      -
      -  Search.prototype.render = function (decorated) {
      -    var $search = $(
      -      '<li class="select2-search select2-search--inline">' +
      -        '<input class="select2-search__field" type="search" tabindex="-1"' +
      -        ' autocomplete="off" autocorrect="off" autocapitalize="off"' +
      -        ' spellcheck="false" role="textbox" aria-autocomplete="list" />' +
      -      '</li>'
      -    );
      -
      -    this.$searchContainer = $search;
      -    this.$search = $search.find('input');
      -
      -    var $rendered = decorated.call(this);
      -
      -    this._transferTabIndex();
      -
      -    return $rendered;
      -  };
      -
      -  Search.prototype.bind = function (decorated, container, $container) {
      -    var self = this;
      -
      -    decorated.call(this, container, $container);
      -
      -    container.on('open', function () {
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('close', function () {
      -      self.$search.val('');
      -      self.$search.removeAttr('aria-activedescendant');
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('enable', function () {
      -      self.$search.prop('disabled', false);
      -
      -      self._transferTabIndex();
      -    });
      -
      -    container.on('disable', function () {
      -      self.$search.prop('disabled', true);
      -    });
      -
      -    container.on('focus', function (evt) {
      -      self.$search.trigger('focus');
      -    });
      -
      -    container.on('results:focus', function (params) {
      -      self.$search.attr('aria-activedescendant', params.id);
      -    });
      -
      -    this.$selection.on('focusin', '.select2-search--inline', function (evt) {
      -      self.trigger('focus', evt);
      -    });
      -
      -    this.$selection.on('focusout', '.select2-search--inline', function (evt) {
      -      self._handleBlur(evt);
      -    });
      -
      -    this.$selection.on('keydown', '.select2-search--inline', function (evt) {
      -      evt.stopPropagation();
      -
      -      self.trigger('keypress', evt);
      -
      -      self._keyUpPrevented = evt.isDefaultPrevented();
      -
      -      var key = evt.which;
      -
      -      if (key === KEYS.BACKSPACE && self.$search.val() === '') {
      -        var $previousChoice = self.$searchContainer
      -          .prev('.select2-selection__choice');
      -
      -        if ($previousChoice.length > 0) {
      -          var item = $previousChoice.data('data');
      -
      -          self.searchRemoveChoice(item);
      -
      -          evt.preventDefault();
      -        }
      -      }
      -    });
      -
      -    // Try to detect the IE version should the `documentMode` property that
      -    // is stored on the document. This is only implemented in IE and is
      -    // slightly cleaner than doing a user agent check.
      -    // This property is not available in Edge, but Edge also doesn't have
      -    // this bug.
      -    var msie = document.documentMode;
      -    var disableInputEvents = msie && msie <= 11;
      -
      -    // Workaround for browsers which do not support the `input` event
      -    // This will prevent double-triggering of events for browsers which support
      -    // both the `keyup` and `input` events.
      -    this.$selection.on(
      -      'input.searchcheck',
      -      '.select2-search--inline',
      -      function (evt) {
      -        // IE will trigger the `input` event when a placeholder is used on a
      -        // search box. To get around this issue, we are forced to ignore all
      -        // `input` events in IE and keep using `keyup`.
      -        if (disableInputEvents) {
      -          self.$selection.off('input.search input.searchcheck');
      -          return;
      -        }
      -
      -        // Unbind the duplicated `keyup` event
      -        self.$selection.off('keyup.search');
      -      }
      -    );
      -
      -    this.$selection.on(
      -      'keyup.search input.search',
      -      '.select2-search--inline',
      -      function (evt) {
      -        // IE will trigger the `input` event when a placeholder is used on a
      -        // search box. To get around this issue, we are forced to ignore all
      -        // `input` events in IE and keep using `keyup`.
      -        if (disableInputEvents && evt.type === 'input') {
      -          self.$selection.off('input.search input.searchcheck');
      -          return;
      -        }
      -
      -        var key = evt.which;
      -
      -        // We can freely ignore events from modifier keys
      -        if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {
      -          return;
      -        }
      -
      -        // Tabbing will be handled during the `keydown` phase
      -        if (key == KEYS.TAB) {
      -          return;
      -        }
      -
      -        self.handleSearch(evt);
      -      }
      -    );
      -  };
      -
      -  /**
      -   * This method will transfer the tabindex attribute from the rendered
      -   * selection to the search box. This allows for the search box to be used as
      -   * the primary focus instead of the selection container.
      -   *
      -   * @private
      -   */
      -  Search.prototype._transferTabIndex = function (decorated) {
      -    this.$search.attr('tabindex', this.$selection.attr('tabindex'));
      -    this.$selection.attr('tabindex', '-1');
      -  };
      -
      -  Search.prototype.createPlaceholder = function (decorated, placeholder) {
      -    this.$search.attr('placeholder', placeholder.text);
      -  };
      -
      -  Search.prototype.update = function (decorated, data) {
      -    var searchHadFocus = this.$search[0] == document.activeElement;
      -
      -    this.$search.attr('placeholder', '');
      -
      -    decorated.call(this, data);
      -
      -    this.$selection.find('.select2-selection__rendered')
      -                   .append(this.$searchContainer);
      -
      -    this.resizeSearch();
      -    if (searchHadFocus) {
      -      this.$search.focus();
      -    }
      -  };
      -
      -  Search.prototype.handleSearch = function () {
      -    this.resizeSearch();
      -
      -    if (!this._keyUpPrevented) {
      -      var input = this.$search.val();
      -
      -      this.trigger('query', {
      -        term: input
      -      });
      -    }
      -
      -    this._keyUpPrevented = false;
      -  };
      -
      -  Search.prototype.searchRemoveChoice = function (decorated, item) {
      -    this.trigger('unselect', {
      -      data: item
      -    });
      -
      -    this.$search.val(item.text);
      -    this.handleSearch();
      -  };
      -
      -  Search.prototype.resizeSearch = function () {
      -    this.$search.css('width', '25px');
      -
      -    var width = '';
      -
      -    if (this.$search.attr('placeholder') !== '') {
      -      width = this.$selection.find('.select2-selection__rendered').innerWidth();
      -    } else {
      -      var minimumWidth = this.$search.val().length + 1;
      -
      -      width = (minimumWidth * 0.75) + 'em';
      -    }
      -
      -    this.$search.css('width', width);
      -  };
      -
      -  return Search;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/single.js b/bower_components/select2/src/js/select2/selection/single.js
      deleted file mode 100644
      index 89c21dbbf0..0000000000
      --- a/bower_components/select2/src/js/select2/selection/single.js
      +++ /dev/null
      @@ -1,99 +0,0 @@
      -define([
      -  'jquery',
      -  './base',
      -  '../utils',
      -  '../keys'
      -], function ($, BaseSelection, Utils, KEYS) {
      -  function SingleSelection () {
      -    SingleSelection.__super__.constructor.apply(this, arguments);
      -  }
      -
      -  Utils.Extend(SingleSelection, BaseSelection);
      -
      -  SingleSelection.prototype.render = function () {
      -    var $selection = SingleSelection.__super__.render.call(this);
      -
      -    $selection.addClass('select2-selection--single');
      -
      -    $selection.html(
      -      '<span class="select2-selection__rendered"></span>' +
      -      '<span class="select2-selection__arrow" role="presentation">' +
      -        '<b role="presentation"></b>' +
      -      '</span>'
      -    );
      -
      -    return $selection;
      -  };
      -
      -  SingleSelection.prototype.bind = function (container, $container) {
      -    var self = this;
      -
      -    SingleSelection.__super__.bind.apply(this, arguments);
      -
      -    var id = container.id + '-container';
      -
      -    this.$selection.find('.select2-selection__rendered').attr('id', id);
      -    this.$selection.attr('aria-labelledby', id);
      -
      -    this.$selection.on('mousedown', function (evt) {
      -      // Only respond to left clicks
      -      if (evt.which !== 1) {
      -        return;
      -      }
      -
      -      self.trigger('toggle', {
      -        originalEvent: evt
      -      });
      -    });
      -
      -    this.$selection.on('focus', function (evt) {
      -      // User focuses on the container
      -    });
      -
      -    this.$selection.on('blur', function (evt) {
      -      // User exits the container
      -    });
      -
      -    container.on('focus', function (evt) {
      -      if (!container.isOpen()) {
      -        self.$selection.focus();
      -      }
      -    });
      -
      -    container.on('selection:update', function (params) {
      -      self.update(params.data);
      -    });
      -  };
      -
      -  SingleSelection.prototype.clear = function () {
      -    this.$selection.find('.select2-selection__rendered').empty();
      -  };
      -
      -  SingleSelection.prototype.display = function (data, container) {
      -    var template = this.options.get('templateSelection');
      -    var escapeMarkup = this.options.get('escapeMarkup');
      -
      -    return escapeMarkup(template(data, container));
      -  };
      -
      -  SingleSelection.prototype.selectionContainer = function () {
      -    return $('<span></span>');
      -  };
      -
      -  SingleSelection.prototype.update = function (data) {
      -    if (data.length === 0) {
      -      this.clear();
      -      return;
      -    }
      -
      -    var selection = data[0];
      -
      -    var $rendered = this.$selection.find('.select2-selection__rendered');
      -    var formatted = this.display(selection, $rendered);
      -
      -    $rendered.empty().append(formatted);
      -    $rendered.prop('title', selection.title || selection.text);
      -  };
      -
      -  return SingleSelection;
      -});
      diff --git a/bower_components/select2/src/js/select2/selection/stopPropagation.js b/bower_components/select2/src/js/select2/selection/stopPropagation.js
      deleted file mode 100644
      index 382f1e726a..0000000000
      --- a/bower_components/select2/src/js/select2/selection/stopPropagation.js
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -define([
      -
      -], function () {
      -  function StopPropagation () { }
      -
      -  StopPropagation.prototype.bind = function (decorated, container, $container) {
      -    decorated.call(this, container, $container);
      -
      -    var stoppedEvents = [
      -      'blur',
      -      'change',
      -      'click',
      -      'dblclick',
      -      'focus',
      -      'focusin',
      -      'focusout',
      -      'input',
      -      'keydown',
      -      'keyup',
      -      'keypress',
      -      'mousedown',
      -      'mouseenter',
      -      'mouseleave',
      -      'mousemove',
      -      'mouseover',
      -      'mouseup',
      -      'search',
      -      'touchend',
      -      'touchstart'
      -    ];
      -
      -    this.$selection.on(stoppedEvents.join(' '), function (evt) {
      -      evt.stopPropagation();
      -    });
      -  };
      -
      -  return StopPropagation;
      -});
      diff --git a/bower_components/select2/src/js/select2/translation.js b/bower_components/select2/src/js/select2/translation.js
      deleted file mode 100644
      index 5394c18b66..0000000000
      --- a/bower_components/select2/src/js/select2/translation.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -define([
      -  'jquery',
      -  'require'
      -], function ($, require) {
      -  function Translation (dict) {
      -    this.dict = dict || {};
      -  }
      -
      -  Translation.prototype.all = function () {
      -    return this.dict;
      -  };
      -
      -  Translation.prototype.get = function (key) {
      -    return this.dict[key];
      -  };
      -
      -  Translation.prototype.extend = function (translation) {
      -    this.dict = $.extend({}, translation.all(), this.dict);
      -  };
      -
      -  // Static functions
      -
      -  Translation._cache = {};
      -
      -  Translation.loadPath = function (path) {
      -    if (!(path in Translation._cache)) {
      -      var translations = require(path);
      -
      -      Translation._cache[path] = translations;
      -    }
      -
      -    return new Translation(Translation._cache[path]);
      -  };
      -
      -  return Translation;
      -});
      diff --git a/bower_components/select2/src/js/select2/utils.js b/bower_components/select2/src/js/select2/utils.js
      deleted file mode 100644
      index d1a23d293e..0000000000
      --- a/bower_components/select2/src/js/select2/utils.js
      +++ /dev/null
      @@ -1,276 +0,0 @@
      -define([
      -  'jquery'
      -], function ($) {
      -  var Utils = {};
      -
      -  Utils.Extend = function (ChildClass, SuperClass) {
      -    var __hasProp = {}.hasOwnProperty;
      -
      -    function BaseConstructor () {
      -      this.constructor = ChildClass;
      -    }
      -
      -    for (var key in SuperClass) {
      -      if (__hasProp.call(SuperClass, key)) {
      -        ChildClass[key] = SuperClass[key];
      -      }
      -    }
      -
      -    BaseConstructor.prototype = SuperClass.prototype;
      -    ChildClass.prototype = new BaseConstructor();
      -    ChildClass.__super__ = SuperClass.prototype;
      -
      -    return ChildClass;
      -  };
      -
      -  function getMethods (theClass) {
      -    var proto = theClass.prototype;
      -
      -    var methods = [];
      -
      -    for (var methodName in proto) {
      -      var m = proto[methodName];
      -
      -      if (typeof m !== 'function') {
      -        continue;
      -      }
      -
      -      if (methodName === 'constructor') {
      -        continue;
      -      }
      -
      -      methods.push(methodName);
      -    }
      -
      -    return methods;
      -  }
      -
      -  Utils.Decorate = function (SuperClass, DecoratorClass) {
      -    var decoratedMethods = getMethods(DecoratorClass);
      -    var superMethods = getMethods(SuperClass);
      -
      -    function DecoratedClass () {
      -      var unshift = Array.prototype.unshift;
      -
      -      var argCount = DecoratorClass.prototype.constructor.length;
      -
      -      var calledConstructor = SuperClass.prototype.constructor;
      -
      -      if (argCount > 0) {
      -        unshift.call(arguments, SuperClass.prototype.constructor);
      -
      -        calledConstructor = DecoratorClass.prototype.constructor;
      -      }
      -
      -      calledConstructor.apply(this, arguments);
      -    }
      -
      -    DecoratorClass.displayName = SuperClass.displayName;
      -
      -    function ctr () {
      -      this.constructor = DecoratedClass;
      -    }
      -
      -    DecoratedClass.prototype = new ctr();
      -
      -    for (var m = 0; m < superMethods.length; m++) {
      -        var superMethod = superMethods[m];
      -
      -        DecoratedClass.prototype[superMethod] =
      -          SuperClass.prototype[superMethod];
      -    }
      -
      -    var calledMethod = function (methodName) {
      -      // Stub out the original method if it's not decorating an actual method
      -      var originalMethod = function () {};
      -
      -      if (methodName in DecoratedClass.prototype) {
      -        originalMethod = DecoratedClass.prototype[methodName];
      -      }
      -
      -      var decoratedMethod = DecoratorClass.prototype[methodName];
      -
      -      return function () {
      -        var unshift = Array.prototype.unshift;
      -
      -        unshift.call(arguments, originalMethod);
      -
      -        return decoratedMethod.apply(this, arguments);
      -      };
      -    };
      -
      -    for (var d = 0; d < decoratedMethods.length; d++) {
      -      var decoratedMethod = decoratedMethods[d];
      -
      -      DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);
      -    }
      -
      -    return DecoratedClass;
      -  };
      -
      -  var Observable = function () {
      -    this.listeners = {};
      -  };
      -
      -  Observable.prototype.on = function (event, callback) {
      -    this.listeners = this.listeners || {};
      -
      -    if (event in this.listeners) {
      -      this.listeners[event].push(callback);
      -    } else {
      -      this.listeners[event] = [callback];
      -    }
      -  };
      -
      -  Observable.prototype.trigger = function (event) {
      -    var slice = Array.prototype.slice;
      -    var params = slice.call(arguments, 1);
      -
      -    this.listeners = this.listeners || {};
      -
      -    // Params should always come in as an array
      -    if (params == null) {
      -      params = [];
      -    }
      -
      -    // If there are no arguments to the event, use a temporary object
      -    if (params.length === 0) {
      -      params.push({});
      -    }
      -
      -    // Set the `_type` of the first object to the event
      -    params[0]._type = event;
      -
      -    if (event in this.listeners) {
      -      this.invoke(this.listeners[event], slice.call(arguments, 1));
      -    }
      -
      -    if ('*' in this.listeners) {
      -      this.invoke(this.listeners['*'], arguments);
      -    }
      -  };
      -
      -  Observable.prototype.invoke = function (listeners, params) {
      -    for (var i = 0, len = listeners.length; i < len; i++) {
      -      listeners[i].apply(this, params);
      -    }
      -  };
      -
      -  Utils.Observable = Observable;
      -
      -  Utils.generateChars = function (length) {
      -    var chars = '';
      -
      -    for (var i = 0; i < length; i++) {
      -      var randomChar = Math.floor(Math.random() * 36);
      -      chars += randomChar.toString(36);
      -    }
      -
      -    return chars;
      -  };
      -
      -  Utils.bind = function (func, context) {
      -    return function () {
      -      func.apply(context, arguments);
      -    };
      -  };
      -
      -  Utils._convertData = function (data) {
      -    for (var originalKey in data) {
      -      var keys = originalKey.split('-');
      -
      -      var dataLevel = data;
      -
      -      if (keys.length === 1) {
      -        continue;
      -      }
      -
      -      for (var k = 0; k < keys.length; k++) {
      -        var key = keys[k];
      -
      -        // Lowercase the first letter
      -        // By default, dash-separated becomes camelCase
      -        key = key.substring(0, 1).toLowerCase() + key.substring(1);
      -
      -        if (!(key in dataLevel)) {
      -          dataLevel[key] = {};
      -        }
      -
      -        if (k == keys.length - 1) {
      -          dataLevel[key] = data[originalKey];
      -        }
      -
      -        dataLevel = dataLevel[key];
      -      }
      -
      -      delete data[originalKey];
      -    }
      -
      -    return data;
      -  };
      -
      -  Utils.hasScroll = function (index, el) {
      -    // Adapted from the function created by @ShadowScripter
      -    // and adapted by @BillBarry on the Stack Exchange Code Review website.
      -    // The original code can be found at
      -    // http://codereview.stackexchange.com/q/13338
      -    // and was designed to be used with the Sizzle selector engine.
      -
      -    var $el = $(el);
      -    var overflowX = el.style.overflowX;
      -    var overflowY = el.style.overflowY;
      -
      -    //Check both x and y declarations
      -    if (overflowX === overflowY &&
      -        (overflowY === 'hidden' || overflowY === 'visible')) {
      -      return false;
      -    }
      -
      -    if (overflowX === 'scroll' || overflowY === 'scroll') {
      -      return true;
      -    }
      -
      -    return ($el.innerHeight() < el.scrollHeight ||
      -      $el.innerWidth() < el.scrollWidth);
      -  };
      -
      -  Utils.escapeMarkup = function (markup) {
      -    var replaceMap = {
      -      '\\': '&#92;',
      -      '&': '&amp;',
      -      '<': '&lt;',
      -      '>': '&gt;',
      -      '"': '&quot;',
      -      '\'': '&#39;',
      -      '/': '&#47;'
      -    };
      -
      -    // Do not try to escape the markup if it's not a string
      -    if (typeof markup !== 'string') {
      -      return markup;
      -    }
      -
      -    return String(markup).replace(/[&<>"'\/\\]/g, function (match) {
      -      return replaceMap[match];
      -    });
      -  };
      -
      -  // Append an array of jQuery nodes to a given element.
      -  Utils.appendMany = function ($element, $nodes) {
      -    // jQuery 1.7.x does not support $.fn.append() with an array
      -    // Fall back to a jQuery object collection using $.fn.add()
      -    if ($.fn.jquery.substr(0, 3) === '1.7') {
      -      var $jqNodes = $();
      -
      -      $.map($nodes, function (node) {
      -        $jqNodes = $jqNodes.add(node);
      -      });
      -
      -      $nodes = $jqNodes;
      -    }
      -
      -    $element.append($nodes);
      -  };
      -
      -  return Utils;
      -});
      diff --git a/bower_components/select2/src/js/wrapper.end.js b/bower_components/select2/src/js/wrapper.end.js
      deleted file mode 100644
      index 43678296f4..0000000000
      --- a/bower_components/select2/src/js/wrapper.end.js
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -  // Autoload the jQuery bindings
      -  // We know that all of the modules exist above this, so we're safe
      -  var select2 = S2.require('jquery.select2');
      -
      -  // Hold the AMD module references on the jQuery function that was just loaded
      -  // This allows Select2 to use the internal loader outside of this file, such
      -  // as in the language files.
      -  jQuery.fn.select2.amd = S2;
      -
      -  // Return the Select2 instance for anyone who is importing it.
      -  return select2;
      -}));
      diff --git a/bower_components/select2/src/js/wrapper.start.js b/bower_components/select2/src/js/wrapper.start.js
      deleted file mode 100644
      index 76caabafb5..0000000000
      --- a/bower_components/select2/src/js/wrapper.start.js
      +++ /dev/null
      @@ -1,23 +0,0 @@
      -/*!
      - * Select2 <%= package.version %>
      - * https://select2.github.io
      - *
      - * Released under the MIT license
      - * https://github.com/select2/select2/blob/master/LICENSE.md
      - */
      -(function (factory) {
      -  if (typeof define === 'function' && define.amd) {
      -    // AMD. Register as an anonymous module.
      -    define(['jquery'], factory);
      -  } else if (typeof exports === 'object') {
      -    // Node/CommonJS
      -    factory(require('jquery'));
      -  } else {
      -    // Browser globals
      -    factory(jQuery);
      -  }
      -}(function (jQuery) {
      -  // This is needed so we can catch the AMD loader configuration and use it
      -  // The inner file should be wrapped (by `banner.start.js`) in a function that
      -  // returns the AMD loader references.
      -  var S2 =
      diff --git a/bower_components/select2/src/scss/_dropdown.scss b/bower_components/select2/src/scss/_dropdown.scss
      deleted file mode 100644
      index fb891d31a8..0000000000
      --- a/bower_components/select2/src/scss/_dropdown.scss
      +++ /dev/null
      @@ -1,73 +0,0 @@
      -.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;
      -
      -  &[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__field {
      -    padding: 4px;
      -    width: 100%;
      -    box-sizing: border-box;
      -
      -    &::-webkit-search-cancel-button {
      -      -webkit-appearance: none;
      -    }
      -  }
      -
      -  &.select2-search--hide {
      -    display: none;
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/_multiple.scss b/bower_components/select2/src/scss/_multiple.scss
      deleted file mode 100644
      index 981d20833f..0000000000
      --- a/bower_components/select2/src/scss/_multiple.scss
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -.select2-selection--multiple {
      -  box-sizing: border-box;
      -
      -  cursor: pointer;
      -  display: block;
      -
      -  min-height: 32px;
      -
      -  user-select: none;
      -  -webkit-user-select: none;
      -
      -  .select2-selection__rendered {
      -    display: inline-block;
      -    overflow: hidden;
      -    padding-left: 8px;
      -    text-overflow: ellipsis;
      -    white-space: nowrap;
      -  }
      -}
      -
      -.select2-search--inline {
      -  float: left;
      -
      -  .select2-search__field {
      -    box-sizing: border-box;
      -    border: none;
      -    font-size: 100%;
      -    margin-top: 5px;
      -    padding: 0;
      -
      -    &::-webkit-search-cancel-button {
      -      -webkit-appearance: none;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/_single.scss b/bower_components/select2/src/scss/_single.scss
      deleted file mode 100644
      index 6c3418e631..0000000000
      --- a/bower_components/select2/src/scss/_single.scss
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -.select2-selection--single {
      -  box-sizing: border-box;
      -
      -  cursor: pointer;
      -  display: block;
      -
      -  height: 28px;
      -
      -  user-select: none;
      -  -webkit-user-select: none;
      -
      -  .select2-selection__rendered {
      -    display: block;
      -    padding-left: 8px;
      -    padding-right: 20px;
      -
      -    overflow: hidden;
      -    text-overflow: ellipsis;
      -    white-space: nowrap;
      -  }
      -
      -  .select2-selection__clear {
      -    position: relative;
      -  }
      -}
      -
      -&[dir="rtl"] {
      -  .select2-selection--single {
      -    .select2-selection__rendered {
      -      padding-right: 8px;
      -      padding-left: 20px;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/core.scss b/bower_components/select2/src/scss/core.scss
      deleted file mode 100644
      index 3d695386bb..0000000000
      --- a/bower_components/select2/src/scss/core.scss
      +++ /dev/null
      @@ -1,48 +0,0 @@
      -.select2-container {
      -  box-sizing: border-box;
      -
      -  display: inline-block;
      -  margin: 0;
      -  position: relative;
      -  vertical-align: middle;
      -
      -  @import "single";
      -  @import "multiple";
      -}
      -
      -@import "dropdown";
      -
      -.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;
      -
      -  // styles required for IE to work
      -
      -  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;
      -}
      -
      -@import "theme/default/layout";
      -@import "theme/classic/layout";
      diff --git a/bower_components/select2/src/scss/mixins/_gradients.scss b/bower_components/select2/src/scss/mixins/_gradients.scss
      deleted file mode 100644
      index 05a6195c24..0000000000
      --- a/bower_components/select2/src/scss/mixins/_gradients.scss
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -// https://github.com/twbs/bootstrap-sass/blob/3.3-stable/assets/stylesheets/bootstrap/mixins/_gradients.scss#L17-L27
      -
      -// Vertical gradient, from top to bottom
      -//
      -// Creates two color stops, start and end, by specifying a color and position for each color stop.
      -// Color stops are not available in IE9 and below.
      -@mixin gradient-vertical($start-color: #555, $end-color: #333, $start-percent: 0%, $end-percent: 100%) {
      -  background-image: -webkit-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Safari 5.1-6, Chrome 10+
      -  background-image: -o-linear-gradient(top, $start-color $start-percent, $end-color $end-percent);  // Opera 12
      -  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+
      -  background-repeat: repeat-x;
      -  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($start-color)}', endColorstr='#{ie-hex-str($end-color)}', GradientType=0); // IE9 and down
      -}
      diff --git a/bower_components/select2/src/scss/theme/classic/_defaults.scss b/bower_components/select2/src/scss/theme/classic/_defaults.scss
      deleted file mode 100644
      index aa204563db..0000000000
      --- a/bower_components/select2/src/scss/theme/classic/_defaults.scss
      +++ /dev/null
      @@ -1,34 +0,0 @@
      -$remove-color: #888 !default;
      -$remove-hover-color: #555 !default;
      -$remove-width: 20px !default;
      -
      -$selection-color: #444 !default;
      -
      -$border-color: #aaa !default;
      -$border-radius: 4px !default;
      -
      -$focus-border-color: #5897fb !default;
      -
      -$container-height: 28px !default;
      -
      -$selection-bg-top-color: white !default;
      -$selection-bg-bottom-color: #eeeeee !default;
      -
      -$container-placeholder-color: #999 !default;
      -
      -$container-focus-border-color: blue !default;
      -
      -$selection-opened-bg-top-color: $selection-bg-bottom-color !default;
      -$selection-opened-bg-bottom-color: $selection-bg-top-color !default;
      -
      -$dropdown-z-index: 1 !default;
      -
      -$dropdown-bg-color: $selection-bg-top-color !default;
      -
      -$results-max-height: 200px !default;
      -$results-nested-padding: 20px !default;
      -
      -$results-choice-bg-hover-color: #3875d7 !default;
      -$results-choice-fg-hover-color: white !default;
      -
      -$results-choice-fg-unselectable-color: grey !default;
      diff --git a/bower_components/select2/src/scss/theme/classic/_multiple.scss b/bower_components/select2/src/scss/theme/classic/_multiple.scss
      deleted file mode 100644
      index e472418b76..0000000000
      --- a/bower_components/select2/src/scss/theme/classic/_multiple.scss
      +++ /dev/null
      @@ -1,93 +0,0 @@
      -.select2-selection--multiple {
      -  background-color: white;
      -
      -  border: 1px solid $border-color;
      -  border-radius: $border-radius;
      -
      -  cursor: text;
      -
      -  outline: 0;
      -
      -  &:focus {
      -    border: 1px solid $focus-border-color;
      -  }
      -
      -  .select2-selection__rendered {
      -    list-style: none;
      -    margin: 0;
      -    padding: 0 5px;
      -  }
      -
      -  .select2-selection__clear {
      -    display: none;
      -  }
      -
      -  .select2-selection__choice {
      -    background-color: #e4e4e4;
      -
      -    border: 1px solid $border-color;
      -    border-radius: $border-radius;
      -
      -    cursor: default;
      -
      -    float: left;
      -
      -    margin-right: 5px;
      -    margin-top: 5px;
      -    padding: 0 5px;
      -  }
      -
      -  .select2-selection__choice__remove {
      -    color: $remove-color;
      -    cursor: pointer;
      -
      -    display: inline-block;
      -    font-weight: bold;
      -
      -    margin-right: 2px;
      -
      -    &:hover {
      -      color: $remove-hover-color;
      -    }
      -  }
      -}
      -
      -&[dir="rtl"] {
      -  .select2-selection--multiple {
      -    .select2-selection__choice {
      -      float: right;
      -    }
      -
      -    .select2-selection__choice {
      -      margin-left: 5px;
      -      margin-right: auto;
      -    }
      -
      -    .select2-selection__choice__remove {
      -      margin-left: 2px;
      -      margin-right: auto;
      -    }
      -  }
      -}
      -
      -&.select2-container--open {
      -  .select2-selection--multiple {
      -    border: 1px solid $focus-border-color;
      -  }
      -
      -  &.select2-container--above {
      -    .select2-selection--multiple {
      -      border-top: none;
      -      border-top-left-radius: 0;
      -      border-top-right-radius: 0;
      -    }
      -  }
      -
      -  &.select2-container--below {
      -    .select2-selection--multiple {
      -      border-bottom: none;
      -      border-bottom-left-radius: 0;
      -      border-bottom-right-radius: 0;
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/theme/classic/_single.scss b/bower_components/select2/src/scss/theme/classic/_single.scss
      deleted file mode 100644
      index e21de9a0fa..0000000000
      --- a/bower_components/select2/src/scss/theme/classic/_single.scss
      +++ /dev/null
      @@ -1,124 +0,0 @@
      -.select2-selection--single {
      -  background-color: mix($selection-bg-top-color, $selection-bg-bottom-color);
      -
      -  border: 1px solid $border-color;
      -  border-radius: $border-radius;
      -
      -  outline: 0;
      -
      -  @include gradient-vertical($selection-bg-top-color, $selection-bg-bottom-color, 50%, 100%);
      -
      -  &:focus {
      -    border: 1px solid $focus-border-color;
      -  }
      -
      -  .select2-selection__rendered {
      -    color: #444;
      -    line-height: 28px;
      -  }
      -
      -  .select2-selection__clear {
      -    cursor: pointer;
      -    float: right;
      -    font-weight: bold;
      -    margin-right: 10px;
      -  }
      -
      -  .select2-selection__placeholder {
      -    color: #999;
      -  }
      -
      -  .select2-selection__arrow {
      -    background-color: #ddd;
      -
      -    border: none;
      -    border-left: 1px solid $border-color;
      -    border-top-right-radius: $border-radius;
      -    border-bottom-right-radius: $border-radius;
      -
      -    height: 26px;
      -
      -    position: absolute;
      -
      -    top: 1px;
      -    right: 1px;
      -
      -    width: 20px;
      -
      -    @include gradient-vertical(#eeeeee, #cccccc, 50%, 100%);
      -
      -    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;
      -    }
      -  }
      -}
      -
      -&[dir="rtl"] {
      -  .select2-selection--single {
      -    .select2-selection__clear {
      -      float: left;
      -    }
      -
      -    .select2-selection__arrow {
      -      border: none;
      -      border-right: 1px solid $border-color;
      -
      -      border-radius: 0;
      -      border-top-left-radius: $border-radius;
      -      border-bottom-left-radius: $border-radius;
      -
      -      left: 1px;
      -      right: auto;
      -    }
      -  }
      -}
      -
      -&.select2-container--open {
      -  .select2-selection--single {
      -    border: 1px solid $focus-border-color;
      -
      -    .select2-selection__arrow {
      -      background: transparent;
      -
      -      border: none;
      -
      -      b {
      -        border-color: transparent transparent #888 transparent;
      -        border-width: 0 4px 5px 4px;
      -      }
      -    }
      -  }
      -
      -  &.select2-container--above {
      -    .select2-selection--single {
      -      border-top: none;
      -      border-top-left-radius: 0;
      -      border-top-right-radius: 0;
      -
      -      @include gradient-vertical($selection-opened-bg-bottom-color, $selection-opened-bg-top-color, 0%, 50%);
      -    }
      -  }
      -
      -  &.select2-container--below {
      -    .select2-selection--single {
      -      border-bottom: none;
      -      border-bottom-left-radius: 0;
      -      border-bottom-right-radius: 0;
      -
      -      @include gradient-vertical($selection-opened-bg-top-color, $selection-opened-bg-bottom-color, 50%, 100%);
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/theme/classic/layout.scss b/bower_components/select2/src/scss/theme/classic/layout.scss
      deleted file mode 100644
      index d63e1d2128..0000000000
      --- a/bower_components/select2/src/scss/theme/classic/layout.scss
      +++ /dev/null
      @@ -1,64 +0,0 @@
      -@import "defaults";
      -@import "../../mixins/gradients";
      -
      -.select2-container--classic {
      -  @import "single";
      -  @import "multiple";
      -
      -  .select2-search--dropdown {
      -    .select2-search__field {
      -      border: 1px solid $border-color;
      -      outline: 0;
      -    }
      -  }
      -
      -  .select2-search--inline {
      -    .select2-search__field {
      -      outline: 0;
      -      box-shadow: none;
      -    }
      -  }
      -
      -  .select2-dropdown {
      -    background-color: $dropdown-bg-color;
      -    border: 1px solid transparent;
      -  }
      -
      -  .select2-dropdown--above {
      -    border-bottom: none;
      -  }
      -
      -  .select2-dropdown--below {
      -    border-top: none;
      -  }
      -
      -  .select2-results > .select2-results__options {
      -    max-height: $results-max-height;
      -    overflow-y: auto;
      -  }
      -
      -  .select2-results__option {
      -    &[role=group] {
      -      padding: 0;
      -    }
      -
      -    &[aria-disabled=true] {
      -      color: $results-choice-fg-unselectable-color;
      -    }
      -  }
      -
      -  .select2-results__option--highlighted[aria-selected] {
      -    background-color: $results-choice-bg-hover-color;
      -    color: $results-choice-fg-hover-color;
      -  }
      -
      -  .select2-results__group {
      -    cursor: default;
      -    display: block;
      -    padding: 6px;
      -  }
      -
      -  &.select2-container--open .select2-dropdown {
      -    border-color: $focus-border-color;
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/theme/default/_multiple.scss b/bower_components/select2/src/scss/theme/default/_multiple.scss
      deleted file mode 100644
      index 9e204f3b21..0000000000
      --- a/bower_components/select2/src/scss/theme/default/_multiple.scss
      +++ /dev/null
      @@ -1,98 +0,0 @@
      -.select2-selection--multiple {
      -  background-color: white;
      -  border: 1px solid #aaa;
      -  border-radius: 4px;
      -  cursor: text;
      -
      -  .select2-selection__rendered {
      -    box-sizing: border-box;
      -    list-style: none;
      -    margin: 0;
      -    padding: 0 5px;
      -    width: 100%;
      -
      -    li {
      -      list-style: none;
      -    }
      -  }
      -
      -  .select2-selection__placeholder {
      -    color: #999;
      -
      -    margin-top: 5px;
      -
      -    float: left;
      -  }
      -
      -  .select2-selection__clear {
      -    cursor: pointer;
      -    float: right;
      -    font-weight: bold;
      -    margin-top: 5px;
      -    margin-right: 10px;
      -  }
      -
      -  .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-selection__choice__remove {
      -    color: #999;
      -    cursor: pointer;
      -
      -    display: inline-block;
      -    font-weight: bold;
      -
      -    margin-right: 2px;
      -
      -    &:hover {
      -      color: #333;
      -    }
      -  }
      -}
      -
      -&[dir="rtl"] {
      -  .select2-selection--multiple {
      -    .select2-selection__choice, .select2-selection__placeholder, .select2-search--inline {
      -      float: right;
      -    }
      -
      -    .select2-selection__choice {
      -      margin-left: 5px;
      -      margin-right: auto;
      -    }
      -
      -    .select2-selection__choice__remove {
      -      margin-left: 2px;
      -      margin-right: auto;
      -    }
      -  }
      -}
      -
      -&.select2-container--focus {
      -  .select2-selection--multiple {
      -    border: solid black 1px;
      -    outline: 0;
      -  }
      -}
      -
      -&.select2-container--disabled {
      -  .select2-selection--multiple {
      -    background-color: #eee;
      -    cursor: default;
      -  }
      -
      -  .select2-selection__choice__remove {
      -    display: none;
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/theme/default/_single.scss b/bower_components/select2/src/scss/theme/default/_single.scss
      deleted file mode 100644
      index 1387af000f..0000000000
      --- a/bower_components/select2/src/scss/theme/default/_single.scss
      +++ /dev/null
      @@ -1,83 +0,0 @@
      -.select2-selection--single {
      -  background-color: #fff;
      -  border: 1px solid #aaa;
      -  border-radius: 4px;
      -
      -  .select2-selection__rendered {
      -    color: #444;
      -    line-height: 28px;
      -  }
      -
      -  .select2-selection__clear {
      -    cursor: pointer;
      -    float: right;
      -    font-weight: bold;
      -  }
      -
      -  .select2-selection__placeholder {
      -    color: #999;
      -  }
      -
      -  .select2-selection__arrow {
      -    height: 26px;
      -
      -    position: absolute;
      -
      -    top: 1px;
      -    right: 1px;
      -
      -    width: 20px;
      -
      -    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;
      -    }
      -  }
      -}
      -
      -&[dir="rtl"] {
      -  .select2-selection--single {
      -    .select2-selection__clear {
      -      float: left;
      -    }
      -
      -    .select2-selection__arrow {
      -      left: 1px;
      -      right: auto;
      -    }
      -  }
      -}
      -
      -&.select2-container--disabled {
      -  .select2-selection--single {
      -    background-color: #eee;
      -    cursor: default;
      -
      -    .select2-selection__clear {
      -      display: none;
      -    }
      -  }
      -}
      -
      -&.select2-container--open {
      -  .select2-selection--single {
      -    .select2-selection__arrow {
      -      b {
      -        border-color: transparent transparent #888 transparent;
      -        border-width: 0 4px 5px 4px;
      -      }
      -    }
      -  }
      -}
      diff --git a/bower_components/select2/src/scss/theme/default/layout.scss b/bower_components/select2/src/scss/theme/default/layout.scss
      deleted file mode 100644
      index ea3d939972..0000000000
      --- a/bower_components/select2/src/scss/theme/default/layout.scss
      +++ /dev/null
      @@ -1,97 +0,0 @@
      -.select2-container--default {
      -  @import "single";
      -  @import "multiple";
      -
      -  &.select2-container--open.select2-container--above {
      -    .select2-selection--single, .select2-selection--multiple {
      -      border-top-left-radius: 0;
      -      border-top-right-radius: 0;
      -    }
      -  }
      -
      -  &.select2-container--open.select2-container--below {
      -    .select2-selection--single, .select2-selection--multiple {
      -      border-bottom-left-radius: 0;
      -      border-bottom-right-radius: 0;
      -    }
      -  }
      -
      -  .select2-search--dropdown {
      -    .select2-search__field {
      -      border: 1px solid #aaa;
      -    }
      -  }
      -
      -  .select2-search--inline {
      -    .select2-search__field {
      -      background: transparent;
      -      border: none;
      -      outline: 0;
      -      box-shadow: none;
      -      -webkit-appearance: textfield;
      -    }
      -  }
      -
      -  .select2-results > .select2-results__options {
      -    max-height: 200px;
      -    overflow-y: auto;
      -  }
      -
      -  .select2-results__option {
      -    &[role=group] {
      -      padding: 0;
      -    }
      -
      -    &[aria-disabled=true] {
      -      color: #999;
      -    }
      -
      -    &[aria-selected=true] {
      -      background-color: #ddd;
      -    }
      -
      -    .select2-results__option {
      -      padding-left: 1em;
      -
      -      .select2-results__group {
      -        padding-left: 0;
      -      }
      -
      -      .select2-results__option {
      -        margin-left: -1em;
      -        padding-left: 2em;
      -
      -        .select2-results__option {
      -          margin-left: -2em;
      -          padding-left: 3em;
      -
      -          .select2-results__option {
      -            margin-left: -3em;
      -            padding-left: 4em;
      -
      -            .select2-results__option {
      -              margin-left: -4em;
      -              padding-left: 5em;
      -
      -              .select2-results__option {
      -                margin-left: -5em;
      -                padding-left: 6em;
      -              }
      -            }
      -          }
      -        }
      -      }
      -    }
      -  }
      -
      -  .select2-results__option--highlighted[aria-selected] {
      -    background-color: #5897fb;
      -    color: white;
      -  }
      -
      -  .select2-results__group {
      -    cursor: default;
      -    display: block;
      -    padding: 6px;
      -  }
      -}
      diff --git a/bower_components/select2/tests/a11y/search-tests.js b/bower_components/select2/tests/a11y/search-tests.js
      deleted file mode 100644
      index 58e56492f5..0000000000
      --- a/bower_components/select2/tests/a11y/search-tests.js
      +++ /dev/null
      @@ -1,51 +0,0 @@
      -module('Accessibility - Search');
      -
      -var MultipleSelection = require('select2/selection/multiple');
      -var InlineSearch = require('select2/selection/search');
      -
      -var $ = require('jquery');
      -
      -var Utils = require('select2/utils');
      -var Options = require('select2/options');
      -var options = new Options({});
      -
      -test('aria-autocomplete attribute is present', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
      -  var selection = new CustomSelection($select, options);
      -  var $selection = selection.render();
      -
      -  // Update the selection so the search is rendered
      -  selection.update([]);
      -
      -  assert.equal(
      -    $selection.find('input').attr('aria-autocomplete'),
      -    'list',
      -    'The search box is marked as autocomplete'
      -  );
      -});
      -
      -test('aria-activedescendant should be removed when closed', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
      -  var selection = new CustomSelection($select, options);
      -  var $selection = selection.render();
      -
      -  var container = new MockContainer();
      -  selection.bind(container, $('<span></span>'));
      -
      -  // Update the selection so the search is rendered
      -  selection.update([]);
      -
      -  var $search = $selection.find('input');
      -  $search.attr('aria-activedescendant', 'something');
      -
      -  container.trigger('close');
      -
      -  assert.ok(
      -    !$search.attr('aria-activedescendant'),
      -    'There is no active descendant when the dropdown is closed'
      -  );
      -});
      diff --git a/bower_components/select2/tests/a11y/selection-tests.js b/bower_components/select2/tests/a11y/selection-tests.js
      deleted file mode 100644
      index e2c1460274..0000000000
      --- a/bower_components/select2/tests/a11y/selection-tests.js
      +++ /dev/null
      @@ -1,154 +0,0 @@
      -module('Accessibility - All');
      -
      -var BaseSelection = require('select2/selection/base');
      -var SingleSelection = require('select2/selection/single');
      -var MultipleSelection = require('select2/selection/multiple');
      -
      -var $ = require('jquery');
      -
      -var Options = require('select2/options');
      -var options = new Options({});
      -
      -test('title is carried over from original element', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var selection = new BaseSelection($select, options);
      -  var $selection = selection.render();
      -
      -  assert.equal(
      -    $selection.attr('title'),
      -    $select.attr('title'),
      -    'The title should have been copied over from the original element'
      -  );
      -});
      -
      -test('aria-expanded reflects the state of the container', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var selection = new BaseSelection($select, options);
      -  var $selection = selection.render();
      -
      -  var container = new MockContainer();
      -
      -  selection.bind(container, $('<span></span>'));
      -
      -  assert.equal(
      -    $selection.attr('aria-expanded'),
      -    'false',
      -    'The container should not be expanded when it is closed'
      -  );
      -
      -  container.trigger('open');
      -
      -  assert.equal(
      -    $selection.attr('aria-expanded'),
      -    'true',
      -    'The container should be expanded when it is opened'
      -  );
      -});
      -
      -test('static aria attributes are present', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var selection = new BaseSelection($select, options);
      -  var $selection = selection.render();
      -
      -  assert.equal(
      -    $selection.attr('role'),
      -    'combobox',
      -    'The container should identify as a combobox'
      -  );
      -
      -  assert.equal(
      -    $selection.attr('aria-haspopup'),
      -    'true',
      -    'The dropdown is considered a popup of the container'
      -  );
      -});
      -
      -test('the container should be in the tab order', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var selection = new BaseSelection($select, options);
      -  var $selection = selection.render();
      -
      -  var container = new MockContainer();
      -  selection.bind(container, $('<span></span>'));
      -
      -  assert.equal(
      -    $selection.attr('tabindex'),
      -    '0',
      -    'The tab index should allow it to fit in the natural tab order'
      -  );
      -
      -  container.trigger('disable');
      -
      -  assert.equal(
      -    $selection.attr('tabindex'),
      -    '-1',
      -    'The selection should be dropped out of the tab order when disabled'
      -  );
      -
      -  container.trigger('enable');
      -
      -  assert.equal(
      -    $selection.attr('tabindex'),
      -    '0',
      -    'The tab index should be restored when re-enabled'
      -  );
      -});
      -
      -test('a custom tabindex is copied', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -  $select.attr('tabindex', '999');
      -
      -  var selection = new BaseSelection($select, options);
      -  var $selection = selection.render();
      -
      -  var container = new MockContainer();
      -  selection.bind(container, $('<span></span>'));
      -
      -  assert.equal(
      -    $selection.attr('tabindex'),
      -    '999',
      -    'The tab index should match the original tab index'
      -  );
      -
      -  container.trigger('disable');
      -
      -  assert.equal(
      -    $selection.attr('tabindex'),
      -    '-1',
      -    'The selection should be dropped out of the tab order when disabled'
      -  );
      -
      -  container.trigger('enable');
      -
      -  assert.equal(
      -    $selection.attr('tabindex'),
      -    '999',
      -    'The tab index should be restored when re-enabled'
      -  );
      -});
      -
      -module('Accessibility - Single');
      -
      -test('aria-labelledby should match the rendered container', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var selection = new SingleSelection($select, options);
      -  var $selection = selection.render();
      -
      -  var container = new MockContainer();
      -  selection.bind(container, $('<span></span>'));
      -
      -  var $rendered = $selection.find('.select2-selection__rendered');
      -
      -  assert.equal(
      -    $selection.attr('aria-labelledby'),
      -    $rendered.attr('id'),
      -    'The rendered selection should label the container'
      -  );
      -});
      -
      -module('Accessibility - Multiple');
      diff --git a/bower_components/select2/tests/data/array-tests.js b/bower_components/select2/tests/data/array-tests.js
      deleted file mode 100644
      index 65a6e32c3d..0000000000
      --- a/bower_components/select2/tests/data/array-tests.js
      +++ /dev/null
      @@ -1,318 +0,0 @@
      -module('Data adapters - Array');
      -
      -var ArrayData = require('select2/data/array');
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -
      -var arrayOptions = new Options({
      -  data: [
      -    {
      -      id: 'default',
      -      text: 'Default'
      -    },
      -    {
      -      id: '1',
      -      text: 'One'
      -    },
      -    {
      -      id: '2',
      -      text: '2'
      -    }
      -  ]
      -});
      -
      -var extraOptions = new Options ({
      -  data: [
      -    {
      -      id: 'default',
      -      text: 'Default',
      -      extra: true
      -    },
      -    {
      -      id: 'One',
      -      text: 'One',
      -      extra: true
      -    }
      -  ]
      -});
      -
      -var nestedOptions = new Options({
      -  data: [
      -    {
      -      text: 'Default',
      -      children: [
      -        {
      -          text: 'Next',
      -          children: [
      -            {
      -              id: 'a',
      -              text: 'Option'
      -            }
      -          ]
      -        }
      -      ]
      -    }
      -  ]
      -});
      -
      -test('current gets default for single', function (assert) {
      -  var $select = $('#qunit-fixture .single-empty');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  data.current(function (val) {
      -    assert.equal(
      -      val.length,
      -      1,
      -      'There should always be a selected item for array data.'
      -    );
      -
      -    var item = val[0];
      -
      -    assert.equal(
      -      item.id,
      -      'default',
      -      'The first item should be selected'
      -    );
      -  });
      -});
      -
      -test('current gets default for multiple', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  data.current(function (val) {
      -    assert.equal(
      -      val.length,
      -      0,
      -      'There should be no default selection.'
      -    );
      -  });
      -});
      -
      -test('current works with existing selections', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  $select.val(['One']);
      -
      -  data.current(function (val) {
      -    assert.equal(
      -      val.length,
      -      1,
      -      'There should only be one existing selection.'
      -    );
      -
      -    var option = val[0];
      -
      -    assert.equal(
      -      option.id,
      -      'One',
      -      'The id should be equal to the value of the option tag.'
      -    );
      -
      -    assert.equal(
      -      option.text,
      -      'One',
      -      'The text should be equal to the text of the option tag.'
      -    );
      -  });
      -});
      -
      -test('current works with selected data', function (assert) {
      -  var $select = $('#qunit-fixture .single-empty');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  data.select({
      -    id: '2',
      -    text: '2'
      -  });
      -
      -  data.current(function (val) {
      -    assert.equal(
      -      val.length,
      -      1,
      -      'There should only be one option selected.'
      -    );
      -
      -    var option = val[0];
      -
      -    assert.equal(
      -      option.id,
      -      '2',
      -      'The id should match the original id from the array.'
      -    );
      -
      -    assert.equal(
      -      option.text,
      -      '2',
      -      'The text should match the original text from the array.'
      -    );
      -  });
      -});
      -
      -test('select works for single', function (assert) {
      -  var $select = $('#qunit-fixture .single-empty');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  assert.equal(
      -    $select.val(),
      -    'default',
      -    'There should already be a selection'
      -  );
      -
      -  data.select({
      -    id: '1',
      -    text: 'One'
      -  });
      -
      -  assert.equal(
      -    $select.val(),
      -    '1',
      -    'The selected value should be the same as the selected id'
      -  );
      -});
      -
      -test('multiple sets the value', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  assert.equal($select.val(), null);
      -
      -  data.select({
      -    id: 'default',
      -    text: 'Default'
      -  });
      -
      -  assert.deepEqual($select.val(), ['default']);
      -});
      -
      -test('multiple adds to the old value', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  $select.val(['One']);
      -
      -  assert.deepEqual($select.val(), ['One']);
      -
      -  data.select({
      -    id: 'default',
      -    text: 'Default'
      -  });
      -
      -  assert.deepEqual($select.val(), ['One', 'default']);
      -});
      -
      -test('option tags are automatically generated', function (assert) {
      -  var $select = $('#qunit-fixture .single-empty');
      -
      -  var data = new ArrayData($select, arrayOptions);
      -
      -  assert.equal(
      -    $select.find('option').length,
      -    3,
      -    'An <option> element should be created for each object'
      -  );
      -});
      -
      -test('option tags can receive new data', function(assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var data = new ArrayData($select, extraOptions);
      -
      -  assert.equal(
      -    $select.find('option').length,
      -    2,
      -    'Only one more <option> element should be created'
      -  );
      -
      -  data.select({
      -    id: 'default'
      -  });
      -
      -  assert.ok(
      -    $select.find(':selected').data('data').extra,
      -    '<option> default should have new data'
      -  );
      -
      -  data.select({
      -    id: 'One'
      -  });
      -
      -  assert.ok(
      -    $select.find(':selected').data('data').extra,
      -    '<option> One should have new data'
      -  );
      -});
      -
      -test('optgroup tags can also be generated', function (assert) {
      -  var $select = $('#qunit-fixture .single-empty');
      -
      -  var data = new ArrayData($select, nestedOptions);
      -
      -  assert.equal(
      -    $select.find('option').length,
      -    1,
      -    'An <option> element should be created for the one selectable object'
      -  );
      -
      -  assert.equal(
      -    $select.find('optgroup').length,
      -    2,
      -    'An <optgroup> element should be created for the two with children'
      -  );
      -});
      -
      -test('optgroup tags have the right properties', function (assert) {
      -  var $select = $('#qunit-fixture .single-empty');
      -
      -  var data = new ArrayData($select, nestedOptions);
      -
      -  var $group = $select.children('optgroup');
      -
      -  assert.equal(
      -    $group.prop('label'),
      -    'Default',
      -    'An `<optgroup>` label should match the text property'
      -  );
      -
      -  assert.equal(
      -    $group.children().length,
      -    1,
      -    'The <optgroup> should have one child under it'
      -  );
      -});
      -
      -test('existing selections are respected on initialization', function (assert) {
      -   var $select = $(
      -     '<select>' +
      -        '<option>First</option>' +
      -        '<option selected>Second</option>' +
      -      '</select>'
      -    );
      -
      -    var options = new Options({
      -      data: [
      -        {
      -          id: 'Second',
      -          text: 'Second'
      -        },
      -        {
      -          id: 'Third',
      -          text: 'Third'
      -        }
      -      ]
      -    });
      -
      -    assert.equal($select.val(), 'Second');
      -
      -    var data = new ArrayData($select, options);
      -
      -    assert.equal($select.val(), 'Second');
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/data/base-tests.js b/bower_components/select2/tests/data/base-tests.js
      deleted file mode 100644
      index b90158f371..0000000000
      --- a/bower_components/select2/tests/data/base-tests.js
      +++ /dev/null
      @@ -1,29 +0,0 @@
      -module('Data adapters - Base');
      -
      -var BaseData = require('select2/data/base');
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -
      -var options = new Options({});
      -
      -test('current is required', function (assert) {
      -  var data = new BaseData($('#qunit-fixture select'), options);
      -
      -  assert.throws(
      -    function () {
      -      data.current(function () {});
      -    },
      -    'current has no default implementation'
      -  );
      -});
      -
      -test('query is required', function (assert) {
      -  var data = new BaseData($('#qunit-fixture select'), options);
      -
      -  assert.throws(
      -    function () {
      -      data.query({}, function () {});
      -    },
      -    'query has no default implementation'
      -  );
      -});
      diff --git a/bower_components/select2/tests/data/inputData-tests.js b/bower_components/select2/tests/data/inputData-tests.js
      deleted file mode 100644
      index f2124efba7..0000000000
      --- a/bower_components/select2/tests/data/inputData-tests.js
      +++ /dev/null
      @@ -1,158 +0,0 @@
      -module('Data adapters - <input> compatibility');
      -
      -var $ = require('jquery');
      -
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var ArrayData = require('select2/data/array');
      -var InputData = require('select2/compat/inputData');
      -
      -var InputAdapter = Utils.Decorate(ArrayData, InputData);
      -
      -test('test that options can be selected', function (assert) {
      -  var options = new Options({
      -    data: [
      -      {
      -        id: 'test',
      -        text: 'Test'
      -      }
      -    ]
      -  });
      -  var $element = $('<input />');
      -
      -  var adapter = new InputAdapter($element, options);
      -
      -  adapter.select({
      -    id: 'test'
      -  });
      -
      -  assert.equal(
      -    $element.val(),
      -    'test',
      -    'The id of the item should be the value'
      -  );
      -});
      -
      -test('unselect the single selected option clears the value', function (assert) {
      -  var options = new Options({
      -    data: [
      -      {
      -        id: 'test',
      -        text: 'Test',
      -        selected: true
      -      }
      -    ]
      -  });
      -  var $element = $('<input />');
      -
      -  var adapter = new InputAdapter($element, options);
      -
      -  adapter.unselect({
      -    id: 'test'
      -  });
      -
      -  assert.equal(
      -    $element.val(),
      -    '',
      -    'The id should no longer be in the value'
      -  );
      -});
      -
      -test('options can be unselected individually', function (assert) {
      -  var options = new Options({
      -    data: [
      -      {
      -        id: 'test',
      -        text: 'Test'
      -      },
      -      {
      -        id: 'test2',
      -        text: 'Test2'
      -      },
      -      {
      -        id: 'test3',
      -        text: 'Test3'
      -      }
      -    ]
      -  });
      -  var $element = $('<input />');
      -  $element.val('test,test2,test3');
      -
      -  var adapter = new InputAdapter($element, options);
      -
      -  adapter.unselect({
      -    id: 'test2'
      -  });
      -
      -  assert.equal(
      -    $element.val(),
      -    'test,test3',
      -    'The value should contain all the still selected options'
      -  );
      -});
      -
      -test('default values can be set', function (assert) {
      -  assert.expect(4);
      -
      -  var options = new Options({
      -    data: [
      -      {
      -        id: 'test',
      -        text: 'Test'
      -      }
      -    ]
      -  });
      -  var $element = $('<input value="test" />');
      -
      -  var adapter = new InputAdapter($element, options);
      -
      -  adapter.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      1,
      -      'There should only be a single selected option'
      -    );
      -
      -    var item = data[0];
      -
      -    assert.equal(item.id, 'test');
      -    assert.equal(item.text, 'Test');
      -  });
      -
      -  assert.equal(
      -    $element.val(),
      -    'test',
      -    'The value should not have been altered'
      -  );
      -});
      -
      -test('no default value', function (assert) {
      -  assert.expect(2);
      -
      -  var options = new Options({
      -    data: [
      -      {
      -        id: 'test',
      -        text: 'Test'
      -      }
      -    ]
      -  });
      -  var $element = $('<input />');
      -
      -  var adapter = new InputAdapter($element, options);
      -
      -  adapter.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      0,
      -      'There should be no selected options'
      -    );
      -  });
      -
      -  assert.equal(
      -    $element.val(),
      -    '',
      -    'The value should not have been altered'
      -  );
      -});
      diff --git a/bower_components/select2/tests/data/maximumInputLength-tests.js b/bower_components/select2/tests/data/maximumInputLength-tests.js
      deleted file mode 100644
      index e8557139ae..0000000000
      --- a/bower_components/select2/tests/data/maximumInputLength-tests.js
      +++ /dev/null
      @@ -1,138 +0,0 @@
      -module('Data adapters - Maximum input length');
      -
      -var MaximumInputLength = require('select2/data/maximumInputLength');
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -function MaximumInputStub () {
      -  this.called = false;
      -}
      -
      -MaximumInputStub.prototype.query = function (params, callback) {
      -  this.called = true;
      -};
      -
      -var MaximumInputData = Utils.Decorate(MaximumInputStub, MaximumInputLength);
      -
      -test('0 never displays the notice', function (assert) {
      -  var zeroOptions = new Options({
      -    maximumInputLength: 0
      -  });
      -
      -  var data = new MaximumInputData(null, zeroOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumInputData(null, zeroOptions);
      -
      -  data.query({
      -    term: 'test'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('< 0 never displays the notice', function (assert) {
      -  var negativeOptions = new Options({
      -    maximumInputLength: -1
      -  });
      -
      -  var data = new MaximumInputData(null, negativeOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumInputData(null, negativeOptions);
      -
      -  data.query({
      -    term: 'test'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('triggers when input is too long', function (assert) {
      -  var options = new Options({
      -    maximumInputLength: 1
      -  });
      -
      -  var data = new MaximumInputData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(true, 'The event should be triggered.');
      -  };
      -
      -  data.query({
      -    term: 'no'
      -  });
      -
      -  assert.ok(!data.called, 'The adapter should not be called');
      -});
      -
      -test('does not trigger when equal', function (assert) {
      -  var options = new Options({
      -    maximumInputLength: 10
      -  });
      -
      -  var data = new MaximumInputData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'The event should not be triggered.');
      -  };
      -
      -  data.query({
      -    term: '1234567890'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('does not trigger when less', function (assert) {
      -  var options = new Options({
      -    maximumInputLength: 10
      -  });
      -
      -  var data = new MaximumInputData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'The event should not be triggered.');
      -  };
      -
      -  data.query({
      -    term: '123'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('works with null term', function (assert) {
      -  var options = new Options({
      -    maximumInputLength: 1
      -  });
      -
      -  var data = new MaximumInputData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'The event should not be triggered');
      -  };
      -
      -  data.query({});
      -
      -  assert.ok(data.called);
      -});
      diff --git a/bower_components/select2/tests/data/maximumSelectionLength-tests.js b/bower_components/select2/tests/data/maximumSelectionLength-tests.js
      deleted file mode 100644
      index 89943b383a..0000000000
      --- a/bower_components/select2/tests/data/maximumSelectionLength-tests.js
      +++ /dev/null
      @@ -1,202 +0,0 @@
      -module('Data adapters - Maximum selection length');
      -
      -var MaximumSelectionLength = require('select2/data/maximumSelectionLength');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -function MaximumSelectionStub () {
      -  this.called = false;
      -  this.currentData = [];
      -}
      -
      -MaximumSelectionStub.prototype.current = function (callback) {
      -  callback(this.currentData);
      -};
      -
      -MaximumSelectionStub.prototype.val = function (val) {
      -  this.currentData.push(val);
      -};
      -
      -MaximumSelectionStub.prototype.query = function (params, callback) {
      -  this.called = true;
      -};
      -
      -var MaximumSelectionData = Utils.Decorate(
      -  MaximumSelectionStub,
      -  MaximumSelectionLength
      -);
      -
      -test('0 never displays the notice', function (assert) {
      -  var zeroOptions = new Options({
      -    maximumSelectionLength: 0
      -  });
      -
      -  var data = new MaximumSelectionData(null, zeroOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumSelectionData(null, zeroOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.val('1');
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumSelectionData(null, zeroOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.val('1');
      -  data.val('2');
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('< 0 never displays the notice', function (assert) {
      -  var negativeOptions = new Options({
      -    maximumSelectionLength: -1
      -  });
      -
      -  var data = new MaximumSelectionData(null, negativeOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumSelectionData(null, negativeOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.val('1');
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumSelectionData(null, negativeOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.val('1');
      -  data.val('2');
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('triggers when >= 1 selection' , function (assert) {
      -  var maxOfOneOptions = new Options({
      -    maximumSelectionLength: 1
      -  });
      -  var data = new MaximumSelectionData(null, maxOfOneOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumSelectionData(null, maxOfOneOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(true, 'The event should be triggered.');
      -  };
      -
      -  data.val('1');
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(!data.called);
      -
      -});
      -
      -test('triggers when >= 2 selections' , function (assert) {
      -  var maxOfTwoOptions = new Options({
      -    maximumSelectionLength: 2
      -  });
      -  var data = new MaximumSelectionData(null, maxOfTwoOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumSelectionData(null, maxOfTwoOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.val('1');
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MaximumSelectionData(null, maxOfTwoOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(true, 'The event should be triggered.');
      -  };
      -
      -  data.val('1');
      -  data.val('2');
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(!data.called);
      -
      -});
      diff --git a/bower_components/select2/tests/data/minimumInputLength-tests.js b/bower_components/select2/tests/data/minimumInputLength-tests.js
      deleted file mode 100644
      index a67db08d88..0000000000
      --- a/bower_components/select2/tests/data/minimumInputLength-tests.js
      +++ /dev/null
      @@ -1,138 +0,0 @@
      -module('Data adapters - Minimum input length');
      -
      -var MinimumInputLength = require('select2/data/minimumInputLength');
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -function StubData () {
      -  this.called = false;
      -}
      -
      -StubData.prototype.query = function (params, callback) {
      -  this.called = true;
      -};
      -
      -var MinimumData = Utils.Decorate(StubData, MinimumInputLength);
      -
      -test('0 never displays the notice', function (assert) {
      -  var zeroOptions = new Options({
      -    minimumInputLength: 0
      -  });
      -
      -  var data = new MinimumData(null, zeroOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MinimumData(null, zeroOptions);
      -
      -  data.query({
      -    term: 'test'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('< 0 never displays the notice', function (assert) {
      -  var negativeOptions = new Options({
      -    minimumInputLength: -1
      -  });
      -
      -  var data = new MinimumData(null, negativeOptions);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'No events should be triggered');
      -  };
      -
      -  data.query({
      -    term: ''
      -  });
      -
      -  assert.ok(data.called);
      -
      -  data = new MinimumData(null, negativeOptions);
      -
      -  data.query({
      -    term: 'test'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('triggers when input is not long enough', function (assert) {
      -  var options = new Options({
      -    minimumInputLength: 10
      -  });
      -
      -  var data = new MinimumData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(true, 'The event should be triggered.');
      -  };
      -
      -  data.query({
      -    term: 'no'
      -  });
      -
      -  assert.ok(!data.called);
      -});
      -
      -test('does not trigger when equal', function (assert) {
      -  var options = new Options({
      -    minimumInputLength: 10
      -  });
      -
      -  var data = new MinimumData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'The event should not be triggered.');
      -  };
      -
      -  data.query({
      -    term: '1234567890'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('does not trigger when greater', function (assert) {
      -  var options = new Options({
      -    minimumInputLength: 10
      -  });
      -
      -  var data = new MinimumData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(false, 'The event should not be triggered.');
      -  };
      -
      -  data.query({
      -    term: '12345678901'
      -  });
      -
      -  assert.ok(data.called);
      -});
      -
      -test('works with null term', function (assert) {
      -  var options = new Options({
      -    minimumInputLength: 1
      -  });
      -
      -  var data = new MinimumData(null, options);
      -
      -  data.trigger = function () {
      -    assert.ok(true, 'The event should be triggered');
      -  };
      -
      -  data.query({});
      -
      -  assert.ok(!data.called);
      -});
      diff --git a/bower_components/select2/tests/data/select-tests.js b/bower_components/select2/tests/data/select-tests.js
      deleted file mode 100644
      index 90d9609089..0000000000
      --- a/bower_components/select2/tests/data/select-tests.js
      +++ /dev/null
      @@ -1,457 +0,0 @@
      -module('Data adapters - Select - current');
      -
      -var SelectData = require('select2/data/select');
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var selectOptions = new Options({});
      -
      -test('current gets default for single', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      1,
      -      'There should only be one selected option'
      -    );
      -
      -    var option = data[0];
      -
      -    assert.equal(
      -      option.id,
      -      'One',
      -      'The value of the option tag should be the id'
      -    );
      -
      -    assert.equal(
      -      option.text,
      -      'One',
      -      'The text within the option tag should be the text'
      -    );
      -  });
      -});
      -
      -test('current gets default for multiple', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      0,
      -      'Multiple selects have no default selection.'
      -    );
      -  });
      -});
      -
      -test('current gets options with explicit value', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var $option = $('<option value="1">One</option>');
      -  $select.append($option);
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  $select.val('1');
      -
      -  data.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      1,
      -      'There should be one selected option'
      -    );
      -
      -    var option = data[0];
      -
      -    assert.equal(
      -      option.id,
      -      '1',
      -      'The option value should be the selected id'
      -    );
      -
      -    assert.equal(
      -      option.text,
      -      'One',
      -      'The text should match the text for the option tag'
      -    );
      -  });
      -});
      -
      -test('current gets options with implicit value', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  $select.val('One');
      -
      -  data.current(function (val) {
      -    assert.equal(
      -      val.length,
      -      1,
      -      'There should only be one selected value'
      -    );
      -
      -    var option = val[0];
      -
      -    assert.equal(
      -      option.id,
      -      'One',
      -      'The id should be the same as the option text'
      -    );
      -
      -    assert.equal(
      -      option.text,
      -      'One',
      -      'The text should be the same as the option text'
      -    );
      -  });
      -});
      -
      -test('select works for single', function (assert) {
      -  var $select = $('#qunit-fixture .single-with-placeholder');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  assert.equal($select.val(), 'placeholder');
      -
      -  data.select({
      -    id: 'One',
      -    text: 'One'
      -  });
      -
      -  assert.equal($select.val(), 'One');
      -});
      -
      -test('multiple sets the value', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  assert.equal($select.val(), null);
      -
      -  data.select({
      -    id: 'Two',
      -    text: 'Two'
      -  });
      -
      -  assert.deepEqual($select.val(), ['Two']);
      -});
      -
      -test('multiple adds to the old value', function (assert) {
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  $select.val(['Two']);
      -
      -  assert.deepEqual($select.val(), ['Two']);
      -
      -  data.select({
      -    id: 'One',
      -    text: 'One'
      -  });
      -
      -  assert.deepEqual($select.val(), ['One', 'Two']);
      -});
      -
      -test('duplicates - single - same id on select triggers change',
      -  function (assert) {
      -  var $select = $('#qunit-fixture .duplicates');
      -
      -  var data = new SelectData($select, data);
      -  var second = $('#qunit-fixture .duplicates option')[2];
      -
      -  var changeTriggered = false;
      -
      -  assert.equal($select.val(), 'one');
      -
      -  $select.on('change', function () {
      -    changeTriggered = true;
      -  });
      -
      -  data.select({
      -    id: 'one',
      -    text: 'Uno',
      -    element: second
      -  });
      -
      -  assert.equal(
      -    $select.val(),
      -    'one',
      -    'The value never changed'
      -  );
      -
      -  assert.ok(
      -    changeTriggered,
      -    'The change event should be triggered'
      -  );
      -
      -  assert.ok(
      -    second.selected,
      -    'The second duplicate is selected, not the first'
      -  );
      -});
      -
      -test('duplicates - single - different id on select triggers change',
      -  function (assert) {
      -  var $select = $('#qunit-fixture .duplicates');
      -
      -  var data = new SelectData($select, data);
      -  var second = $('#qunit-fixture .duplicates option')[2];
      -
      -  var changeTriggered = false;
      -
      -  $select.val('two');
      -
      -  $select.on('change', function () {
      -    changeTriggered = true;
      -  });
      -
      -  data.select({
      -    id: 'one',
      -    text: 'Uno',
      -    element: second
      -  });
      -
      -  assert.equal(
      -    $select.val(),
      -    'one',
      -    'The value changed to the duplicate id'
      -  );
      -
      -  assert.ok(
      -    changeTriggered,
      -    'The change event should be triggered'
      -  );
      -
      -  assert.ok(
      -    second.selected,
      -    'The second duplicate is selected, not the first'
      -  );
      -});
      -
      -test('duplicates - multiple - same id on select triggers change',
      -function (assert) {
      -  var $select = $('#qunit-fixture .duplicates-multi');
      -
      -  var data = new SelectData($select, data);
      -  var second = $('#qunit-fixture .duplicates-multi option')[2];
      -
      -  var changeTriggered = false;
      -
      -  $select.val(['one']);
      -
      -  $select.on('change', function () {
      -    changeTriggered = true;
      -  });
      -
      -  data.select({
      -    id: 'one',
      -    text: 'Uno',
      -    element: second
      -  });
      -
      -  assert.deepEqual(
      -    $select.val(),
      -    ['one', 'one'],
      -    'The value now has duplicates'
      -  );
      -
      -  assert.ok(
      -    changeTriggered,
      -    'The change event should be triggered'
      -  );
      -
      -  assert.ok(
      -    second.selected,
      -    'The second duplicate is selected, not the first'
      -  );
      -});
      -
      -test('duplicates - multiple - different id on select triggers change',
      -function (assert) {
      -  var $select = $('#qunit-fixture .duplicates-multi');
      -
      -  var data = new SelectData($select, data);
      -  var second = $('#qunit-fixture .duplicates-multi option')[2];
      -
      -  var changeTriggered = false;
      -
      -  $select.val(['two']);
      -
      -  $select.on('change', function () {
      -    changeTriggered = true;
      -  });
      -
      -  data.select({
      -    id: 'one',
      -    text: 'Uno',
      -    element: second
      -  });
      -
      -  assert.deepEqual(
      -    $select.val(),
      -    ['two', 'one'],
      -    'The value has the new id'
      -  );
      -
      -  assert.ok(
      -    changeTriggered,
      -    'The change event should be triggered'
      -  );
      -
      -  assert.ok(
      -    second.selected,
      -    'The second duplicate is selected, not the first'
      -  );
      -});
      -
      -module('Data adapter - Select - query');
      -
      -test('all options are returned with no term', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.query({}, function (data) {
      -    assert.equal(
      -      data.results.length,
      -      1,
      -      'The number of items returned should be equal to the number of options'
      -    );
      -  });
      -});
      -
      -test('the matcher checks the text', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.query({
      -    term: 'One'
      -  }, function (data) {
      -    assert.equal(
      -      data.results.length,
      -      1,
      -      'Only the "One" option should be found'
      -    );
      -  });
      -});
      -
      -test('the matcher ignores case', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.query({
      -    term: 'one'
      -  }, function (data) {
      -    assert.equal(
      -      data.results.length,
      -      1,
      -      'The "One" option should still be found'
      -    );
      -  });
      -});
      -
      -test('no options may be returned with no matches', function (assert) {
      -  var $select = $('#qunit-fixture .single');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.query({
      -    term: 'qwerty'
      -  }, function (data) {
      -    assert.equal(
      -      data.results.length,
      -      0,
      -      'Only matching items should be returned'
      -    );
      -  });
      -});
      -
      -test('optgroup tags are marked with children', function (assert) {
      -  var $select = $('#qunit-fixture .groups');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.query({}, function (data) {
      -    assert.ok(
      -      'children' in data.results[0],
      -      'The optgroup element should have children when queried'
      -    );
      -  });
      -});
      -
      -test('empty optgroups are still shown when queried', function (assert) {
      -  var $select = $('#qunit-fixture .groups');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.query({}, function (data) {
      -    assert.equal(
      -      data.results.length,
      -      2,
      -      'The empty optgroup element should still be returned when queried'
      -    );
      -
      -    var item = data.results[1];
      -
      -    assert.equal(
      -      item.text,
      -      'Empty',
      -      'The text of the empty optgroup should match the label'
      -    );
      -
      -    assert.equal(
      -      item.children.length,
      -      0,
      -      'There should be no children in the empty opgroup'
      -    );
      -  });
      -});
      -
      -test('multiple options with the same value are returned', function (assert) {
      -  var $select = $('#qunit-fixture .duplicates');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  data.query({}, function (data) {
      -    assert.equal(
      -      data.results.length,
      -      3,
      -      'The duplicate option should still be returned when queried'
      -    );
      -
      -    var first = data.results[0];
      -    var duplicate = data.results[2];
      -
      -    assert.equal(
      -      first.id,
      -      duplicate.id,
      -      'The duplicates should have the same id'
      -    );
      -
      -    assert.notEqual(
      -      first.text,
      -      duplicate.text,
      -      'The duplicates do not have the same text'
      -    );
      -  });
      -});
      -
      -test('data objects use the text of the option', function (assert) {
      -  var $select = $('#qunit-fixture .duplicates');
      -
      -  var data = new SelectData($select, selectOptions);
      -
      -  var $option = $('<option>&amp;</option>');
      -
      -  var item = data.item($option);
      -
      -  assert.equal(item.id, '&');
      -  assert.equal(item.text, '&');
      -});
      diff --git a/bower_components/select2/tests/data/tags-tests.js b/bower_components/select2/tests/data/tags-tests.js
      deleted file mode 100644
      index 95b3fdeb7b..0000000000
      --- a/bower_components/select2/tests/data/tags-tests.js
      +++ /dev/null
      @@ -1,261 +0,0 @@
      -module('Data adapters - Tags');
      -
      -var SelectData = require('select2/data/select');
      -var Tags = require('select2/data/tags');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var SelectTags = Utils.Decorate(SelectData, Tags);
      -var options = new Options({
      -  tags: true
      -});
      -
      -test('does not trigger on blank or null terms', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    term: ''
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 'One');
      -    assert.equal(item.text, 'One');
      -  });
      -
      -  data.query({
      -    term: null
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 'One');
      -    assert.equal(item.text, 'One');
      -  });
      -});
      -
      -test('white space is trimmed by default', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    term: '  '
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 'One');
      -    assert.equal(item.text, 'One');
      -  });
      -
      -  data.query({
      -    term: ' One '
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 'One');
      -    assert.equal(item.text, 'One');
      -  });
      -});
      -
      -test('does not trigger for additional pages', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    page: 2
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 'One');
      -    assert.equal(item.text, 'One');
      -  });
      -});
      -
      -test('creates tag at beginning', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    term: 'o'
      -  }, function (data) {
      -    assert.equal(data.results.length, 2);
      -
      -    var first = data.results[0];
      -
      -    assert.equal(first.id, 'o');
      -    assert.equal(first.text, 'o');
      -  });
      -});
      -
      -test('tags can be the only result', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    term: 'test'
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 'test');
      -    assert.equal(item.text, 'test');
      -  });
      -});
      -
      -test('tags are injected as options', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    term: 'test'
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var $children = $('#qunit-fixture .single option');
      -
      -    assert.equal($children.length, 2);
      -
      -    var $tag = $children.last();
      -
      -    assert.equal($tag.val(), 'test');
      -    assert.equal($tag.text(), 'test');
      -  });
      -});
      -
      -test('old tags are removed automatically', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    term: 'first'
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var $children = $('#qunit-fixture .single option');
      -
      -    assert.equal($children.length, 2);
      -  });
      -
      -  data.query({
      -    term: 'second'
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var $children = $('#qunit-fixture .single option');
      -
      -    assert.equal($children.length, 2);
      -
      -    var $tag = $children.last();
      -
      -    assert.equal($tag.val(), 'second');
      -    assert.equal($tag.text(), 'second');
      -  });
      -});
      -
      -test('insertTag controls the tag location', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.insertTag = function (data, tag) {
      -    data.push(tag);
      -  };
      -
      -  data.query({
      -    term: 'o'
      -  }, function (data) {
      -    assert.equal(data.results.length, 2);
      -
      -    var item = data.results[1];
      -
      -    assert.equal(item.id, 'o');
      -    assert.equal(item.text, 'o');
      -  });
      -});
      -
      -test('insertTag can be controlled through the options', function (assert) {
      -  var options = new Options({
      -    insertTag: function (data, tag) {
      -      data.push(tag);
      -    }
      -  });
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.query({
      -    term: 'o'
      -  }, function (data) {
      -    assert.equal(data.results.length, 2);
      -
      -    var item = data.results[1];
      -
      -    assert.equal(item.id, 'o');
      -    assert.equal(item.text, 'o');
      -  });
      -});
      -
      -test('createTag controls the tag object', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.createTag = function (params) {
      -    return {
      -      id: 0,
      -      text: params.term
      -    };
      -  };
      -
      -  data.query({
      -    term: 'test'
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 0);
      -    assert.equal(item.text, 'test');
      -  });
      -});
      -
      -test('createTag returns null for no tag', function (assert) {
      -  var data = new SelectTags($('#qunit-fixture .single'), options);
      -
      -  data.createTag = function (params) {
      -    return null;
      -  };
      -
      -  data.query({
      -    term: 'o'
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -  });
      -});
      -
      -test('the createTag options customizes the function', function (assert) {
      -  var data = new SelectTags(
      -    $('#qunit-fixture .single'),
      -    new Options({
      -      tags: true,
      -      createTag: function (params) {
      -        return {
      -          id: params.term,
      -          text: params.term,
      -          tag: true
      -        };
      -      }
      -    })
      -  );
      -
      -  data.query({
      -    term: 'test'
      -  }, function (data) {
      -    assert.equal(data.results.length, 1);
      -
      -    var item = data.results[0];
      -
      -    assert.equal(item.id, 'test');
      -    assert.equal(item.text, 'test');
      -    assert.equal(item.tag, true);
      -  });
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/data/tokenizer-tests.js b/bower_components/select2/tests/data/tokenizer-tests.js
      deleted file mode 100644
      index 2fa0121104..0000000000
      --- a/bower_components/select2/tests/data/tokenizer-tests.js
      +++ /dev/null
      @@ -1,219 +0,0 @@
      -module('Data adaptor - Tokenizer');
      -
      -test('triggers the select event', function (assert) {
      -  assert.expect(2);
      -
      -  var SelectData = require('select2/data/select');
      -  var Tokenizer = require('select2/data/tokenizer');
      -  var Tags = require('select2/data/tags');
      -
      -  var Options = require('select2/options');
      -  var Utils = require('select2/utils');
      -
      -  var $ = require('jquery');
      -
      -  var TokenizedSelect = Utils.Decorate(
      -    Utils.Decorate(SelectData, Tags),
      -    Tokenizer
      -  );
      -  var $select = $('#qunit-fixture .single');
      -
      -  var options = new Options({
      -    tags: true,
      -    tokenSeparators: [',']
      -  });
      -
      -  var container = new MockContainer();
      -  container.dropdown = container.selection = {};
      -
      -  var $container = $('<div></div>');
      -
      -  var data = new TokenizedSelect($select, options);
      -  data.bind(container, $container);
      -
      -  data.on('select', function () {
      -    assert.ok(true, 'The select event should be triggered');
      -  });
      -
      -  data.query({
      -    term: 'first,second'
      -  }, function () {
      -    assert.ok(true, 'The callback should have succeeded');
      -  });
      -});
      -
      -test('createTag can return null', function (assert) {
      -  assert.expect(3);
      -
      -  var SelectData = require('select2/data/select');
      -  var Tokenizer = require('select2/data/tokenizer');
      -  var Tags = require('select2/data/tags');
      -
      -  var Options = require('select2/options');
      -  var Utils = require('select2/utils');
      -
      -  var $ = require('jquery');
      -
      -  var TokenizedSelect = Utils.Decorate(
      -    Utils.Decorate(SelectData, Tags),
      -    Tokenizer
      -  );
      -  var $select = $('#qunit-fixture .single');
      -
      -  var options = new Options({
      -    tags: true,
      -    tokenSeparators: [','],
      -    createTag: function () {
      -      assert.ok(true, 'createTag should have been called');
      -
      -      return null;
      -    }
      -  });
      -
      -  var container = new MockContainer();
      -  container.dropdown = container.selection = {};
      -
      -  var $container = $('<div></div>');
      -
      -  var data = new TokenizedSelect($select, options);
      -  data.bind(container, $container);
      -
      -  data.on('select', function (params) {
      -    if (params.data == null) {
      -      assert.ok(false, 'Null data should never be selected');
      -    }
      -  });
      -
      -  data.query({
      -    term: 'first,second'
      -  }, function () {
      -    assert.ok(true, 'The callback should have succeeded');
      -  });
      -});
      -
      -test('createTag returning null does not cut the term', function (assert) {
      -  assert.expect(4);
      -
      -  var SelectData = require('select2/data/select');
      -  var Tokenizer = require('select2/data/tokenizer');
      -  var Tags = require('select2/data/tags');
      -
      -  var Options = require('select2/options');
      -  var Utils = require('select2/utils');
      -
      -  var $ = require('jquery');
      -
      -  var TokenizedSelect = Utils.Decorate(
      -    Utils.Decorate(SelectData, Tags),
      -    Tokenizer
      -  );
      -  var $select = $('#qunit-fixture .single');
      -
      -  var options = new Options({
      -    tags: true,
      -    tokenSeparators: [',', '"'],
      -    createTag: function (params) {
      -      var term = params.term;
      -
      -      // Ignore blanks
      -      if (term.length === 0) {
      -        return null;
      -      }
      -
      -      // Ignore the leading quote
      -      if (term === '"') {
      -        return null;
      -      }
      -
      -      // If there is a leading quote, check for a second one
      -      if (term[0] === '"' && term[term.length - 1] !== '"') {
      -        return null;
      -      }
      -
      -      var text = term.substr(1, term.length - 2);
      -
      -      return {
      -        id: term,
      -        text: text
      -      };
      -    }
      -  });
      -
      -  var container = new MockContainer();
      -  container.dropdown = container.selection = {};
      -
      -  var $container = $('<div></div>');
      -
      -  var data = new TokenizedSelect($select, options);
      -  data.bind(container, $container);
      -
      -  data.on('select', function (params) {
      -    assert.ok(params.data, 'Data should not be null');
      -
      -    assert.equal(
      -      params.data.id,
      -      '"first, second"',
      -      'The id should have the quotes'
      -    );
      -
      -    assert.equal(
      -      params.data.text,
      -      'first, second',
      -      'The text should not have the quotes'
      -    );
      -  });
      -
      -  data.query({
      -    term: '"first, second",abc'
      -  }, function () {
      -    assert.ok(true, 'The callback should have succeeded');
      -  });
      -});
      -
      -test('works with multiple tokens given', function (assert) {
      -  assert.expect(4);
      -
      -  var SelectData = require('select2/data/select');
      -  var Tokenizer = require('select2/data/tokenizer');
      -  var Tags = require('select2/data/tags');
      -
      -  var Options = require('select2/options');
      -  var Utils = require('select2/utils');
      -
      -  var $ = require('jquery');
      -
      -  var TokenizedSelect = Utils.Decorate(
      -    Utils.Decorate(SelectData, Tags),
      -    Tokenizer
      -  );
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var options = new Options({
      -    tags: true,
      -    tokenSeparators: [',']
      -  });
      -
      -  var container = new MockContainer();
      -  container.dropdown = container.selection = {};
      -
      -  var $container = $('<div></div>');
      -
      -  var data = new TokenizedSelect($select, options);
      -  data.bind(container, $container);
      -
      -  data.on('select', function () {
      -    assert.ok(true, 'The select event should be triggered');
      -  });
      -
      -  data.query({
      -    term: 'first,second,third'
      -  }, function () {
      -    assert.ok(true, 'The callback should have succeeded');
      -  });
      -
      -  assert.equal(
      -    $select.children('option').length,
      -    3,
      -    'The two new tags should have been created'
      -  );
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/dropdown/dropdownCss-tests.js b/bower_components/select2/tests/dropdown/dropdownCss-tests.js
      deleted file mode 100644
      index 9969335e1f..0000000000
      --- a/bower_components/select2/tests/dropdown/dropdownCss-tests.js
      +++ /dev/null
      @@ -1,104 +0,0 @@
      -module('Dropdown - dropdownCssClass compatibility');
      -
      -var $ = require('jquery');
      -var Utils = require('select2/utils');
      -var Options = require('select2/options');
      -
      -var Dropdown = require('select2/dropdown');
      -var DropdownCSS = Utils.Decorate(
      -  Dropdown,
      -  require('select2/compat/dropdownCss')
      -);
      -
      -test('all classes will be copied if :all: is used', function (assert) {
      -  var $element = $('<select class="test copy works"></select>');
      -  var options = new Options({
      -    dropdownCssClass: ':all:'
      -  });
      -
      -  var select = new DropdownCSS($element, options);
      -  var $dropdown = select.render();
      -
      -  assert.ok($dropdown.hasClass('test'));
      -  assert.ok($dropdown.hasClass('copy'));
      -  assert.ok($dropdown.hasClass('works'));
      -  assert.ok(!$dropdown.hasClass(':all:'));
      -});
      -
      -test(':all: can be used with other classes', function (assert) {
      -  var $element = $('<select class="test copy works"></select>');
      -  var options = new Options({
      -    dropdownCssClass: ':all: other'
      -  });
      -
      -  var select = new DropdownCSS($element, options);
      -  var $dropdown = select.render();
      -
      -  assert.ok($dropdown.hasClass('test'));
      -  assert.ok($dropdown.hasClass('copy'));
      -  assert.ok($dropdown.hasClass('works'));
      -  assert.ok($dropdown.hasClass('other'));
      -  assert.ok(!$dropdown.hasClass(':all:'));
      -});
      -
      -test('classes can be passed in as a string', function (assert) {
      -  var $element = $('<select class="test copy works"></select>');
      -  var options = new Options({
      -    dropdownCssClass: 'other'
      -  });
      -
      -  var select = new DropdownCSS($element, options);
      -  var $dropdown = select.render();
      -
      -  assert.ok($dropdown.hasClass('other'));
      -});
      -
      -test('a function can be used based on the element', function (assert){
      -  var $element = $('<select class="test"></select>');
      -  var options = new Options({
      -    dropdownCssClass: function ($element) {
      -      return 'function';
      -    }
      -  });
      -
      -  var select = new DropdownCSS($element, options);
      -  var $dropdown = select.render();
      -
      -  assert.ok($dropdown.hasClass('function'));
      -  assert.ok(!$dropdown.hasClass('test'));
      -});
      -
      -test(':all: works around custom adapters', function (assert) {
      -  var $element = $('<select class="test"></select>');
      -  var options = new Options({
      -    dropdownCssClass: ':all: something',
      -    adaptDropdownCssClass: function (clazz) {
      -      return clazz + '-modified';
      -    }
      -  });
      -
      -  var select = new DropdownCSS($element, options);
      -  var $dropdown = select.render();
      -
      -  assert.ok($dropdown.hasClass('something'));
      -
      -  assert.ok($dropdown.hasClass('test'));
      -  assert.ok($dropdown.hasClass('test-modified'));
      -});
      -
      -module('Dropdown - adaptDropdownCss compatibility');
      -
      -test('only return when adapted', function (assert) {
      -  var $element = $('<select class="original"></select>');
      -  var options = new Options({
      -    adaptDropdownCssClass: function (clazz) {
      -      return 'modified';
      -    }
      -  });
      -
      -  var select = new DropdownCSS($element, options);
      -  var $dropdown = select.render();
      -
      -  assert.ok(!$dropdown.hasClass('original'));
      -  assert.ok($dropdown.hasClass('modified'));
      -});
      diff --git a/bower_components/select2/tests/dropdown/positioning-tests.js b/bower_components/select2/tests/dropdown/positioning-tests.js
      deleted file mode 100644
      index 37c2b064a1..0000000000
      --- a/bower_components/select2/tests/dropdown/positioning-tests.js
      +++ /dev/null
      @@ -1,177 +0,0 @@
      -module('Dropdown - attachBody - positioning');
      -
      -test('appends to the dropdown parent', function (assert) {
      -    assert.expect(4);
      -
      -    var $ = require('jquery');
      -
      -    var $select = $('<select></select>');
      -    var $parent = $('<div></div>');
      -
      -    var $container = $('<span></span>');
      -    var container = new MockContainer();
      -
      -    $parent.appendTo($('#qunit-fixture'));
      -    $select.appendTo($parent);
      -
      -    var Utils = require('select2/utils');
      -    var Options = require('select2/options');
      -
      -    var Dropdown = require('select2/dropdown');
      -    var AttachBody = require('select2/dropdown/attachBody');
      -
      -    var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
      -
      -    var dropdown = new DropdownAdapter($select, new Options({
      -        dropdownParent: $parent
      -    }));
      -
      -    assert.equal(
      -        $parent.children().length,
      -        1,
      -        'Only the select should be in the container'
      -    );
      -
      -    var $dropdown = dropdown.render();
      -
      -    dropdown.bind(container, $container);
      -
      -    dropdown.position($dropdown, $container);
      -
      -    assert.equal(
      -        $parent.children().length,
      -        1,
      -        'The dropdown should not be placed until after it is opened'
      -    );
      -
      -    dropdown._showDropdown();
      -
      -    assert.equal(
      -        $parent.children().length,
      -        2,
      -        'The dropdown should now be in the container as well'
      -    );
      -
      -    assert.ok(
      -        $.contains($parent[0], $dropdown[0]),
      -        'The dropdown should be contained within the parent container'
      -    );
      -});
      -
      -test('dropdown is positioned down with static margins', function (assert) {
      -    var $ = require('jquery');
      -    var $select = $('<select></select>');
      -    var $parent = $('<div></div>');
      -    $parent.css({
      -        position: 'static',
      -        marginTop: '5px',
      -        marginLeft: '10px'
      -    });
      -
      -    var $container = $('<span>test</span>');
      -    var container = new MockContainer();
      -
      -    $('#qunit-fixture').empty();
      -
      -    $parent.appendTo($('#qunit-fixture'));
      -    $container.appendTo($parent);
      -
      -    var Utils = require('select2/utils');
      -    var Options = require('select2/options');
      -
      -    var Dropdown = require('select2/dropdown');
      -    var AttachBody = require('select2/dropdown/attachBody');
      -
      -    var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
      -
      -    var dropdown = new DropdownAdapter($select, new Options({
      -        dropdownParent: $parent
      -    }));
      -
      -    var $dropdown = dropdown.render();
      -
      -    assert.equal(
      -        $dropdown[0].style.top,
      -        0,
      -        'The drodpown should not have any offset before it is displayed'
      -    );
      -
      -    dropdown.bind(container, $container);
      -    dropdown.position($dropdown, $container);
      -    dropdown._showDropdown();
      -
      -    assert.ok(
      -        dropdown.$dropdown.hasClass('select2-dropdown--below'),
      -        'The dropdown should be forced down'
      -    );
      -
      -    assert.equal(
      -        $dropdown.css('top').substring(0, 2),
      -        $container.outerHeight() + 5,
      -        'The offset should be 5px at the top'
      -    );
      -
      -    assert.equal(
      -        $dropdown.css('left'),
      -        '10px',
      -        'The offset should be 10px on the left'
      -    );
      -});
      -
      -test('dropdown is positioned down with absolute offsets', function (assert) {
      -    var $ = require('jquery');
      -    var $select = $('<select></select>');
      -    var $parent = $('<div></div>');
      -    $parent.css({
      -        position: 'absolute',
      -        top: '10px',
      -        left: '5px'
      -    });
      -
      -    var $container = $('<span>test</span>');
      -    var container = new MockContainer();
      -
      -    $parent.appendTo($('#qunit-fixture'));
      -    $container.appendTo($parent);
      -
      -    var Utils = require('select2/utils');
      -    var Options = require('select2/options');
      -
      -    var Dropdown = require('select2/dropdown');
      -    var AttachBody = require('select2/dropdown/attachBody');
      -
      -    var DropdownAdapter = Utils.Decorate(Dropdown, AttachBody);
      -
      -    var dropdown = new DropdownAdapter($select, new Options({
      -        dropdownParent: $parent
      -    }));
      -
      -    var $dropdown = dropdown.render();
      -
      -    assert.equal(
      -        $dropdown[0].style.top,
      -        0,
      -        'The drodpown should not have any offset before it is displayed'
      -    );
      -
      -    dropdown.bind(container, $container);
      -    dropdown.position($dropdown, $container);
      -    dropdown._showDropdown();
      -
      -    assert.ok(
      -        dropdown.$dropdown.hasClass('select2-dropdown--below'),
      -        'The dropdown should be forced down'
      -    );
      -
      -    assert.equal(
      -        $dropdown.css('top').substring(0, 2),
      -        $container.outerHeight(),
      -        'There should not be an extra top offset'
      -    );
      -
      -    assert.equal(
      -        $dropdown.css('left'),
      -        '0px',
      -        'There should not be an extra left offset'
      -    );
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/dropdown/selectOnClose-tests.js b/bower_components/select2/tests/dropdown/selectOnClose-tests.js
      deleted file mode 100644
      index 3f1d1d41a1..0000000000
      --- a/bower_components/select2/tests/dropdown/selectOnClose-tests.js
      +++ /dev/null
      @@ -1,137 +0,0 @@
      -module('Dropdown - selectOnClose');
      -
      -var $ = require('jquery');
      -
      -var Utils = require('select2/utils');
      -var Options = require('select2/options');
      -
      -var SelectData = require('select2/data/select');
      -
      -var Results = require('select2/results');
      -var SelectOnClose = require('select2/dropdown/selectOnClose');
      -
      -var ModifiedResults = Utils.Decorate(Results, SelectOnClose);
      -
      -var options = new Options({
      -  selectOnClose: true
      -});
      -
      -test('will not trigger if no results were given', function (assert) {
      -  assert.expect(0);
      -
      -  var $element = $('<select></select>');
      -  var select = new ModifiedResults($element, options, new SelectData($element));
      -
      -  var $dropdown = select.render();
      -
      -  var container = new MockContainer();
      -  select.bind(container, $('<div></div>'));
      -
      -  select.on('select', function () {
      -    assert.ok(false, 'The select event should not have been triggered');
      -  });
      -
      -  container.trigger('close');
      -});
      -
      -test('will not trigger if the results list is empty', function (assert) {
      -  assert.expect(1);
      -
      -  var $element = $('<select></select>');
      -  var select = new ModifiedResults($element, options, new SelectData($element));
      -
      -  var $dropdown = select.render();
      -
      -  var container = new MockContainer();
      -  select.bind(container, $('<div></div>'));
      -
      -  select.on('select', function () {
      -    assert.ok(false, 'The select event should not have been triggered');
      -  });
      -
      -  select.append({
      -    results: []
      -  });
      -
      -  assert.equal(
      -    $dropdown.find('li').length,
      -    0,
      -    'There should not be any results in the dropdown'
      -  );
      -
      -  container.trigger('close');
      -});
      -
      -test('will not trigger if no results here highlighted', function (assert) {
      -  assert.expect(2);
      -
      -  var $element = $('<select></select>');
      -  var select = new ModifiedResults($element, options, new SelectData($element));
      -
      -  var $dropdown = select.render();
      -
      -  var container = new MockContainer();
      -  select.bind(container, $('<div></div>'));
      -
      -  select.on('select', function () {
      -    assert.ok(false, 'The select event should not have been triggered');
      -  });
      -
      -  select.append({
      -    results: [
      -      {
      -        id: '1',
      -        text: 'Test'
      -      }
      -    ]
      -  });
      -
      -  assert.equal(
      -    $dropdown.find('li').length,
      -    1,
      -    'There should be one result in the dropdown'
      -  );
      -
      -  assert.equal(
      -    $.trim($dropdown.find('li').text()),
      -    'Test',
      -    'The result should be the same as the one we appended'
      -  );
      -
      -  container.trigger('close');
      -});
      -
      -test('will trigger if there is a highlighted result', function (assert) {
      -  assert.expect(2);
      -
      -  var $element = $('<select></select>');
      -  var select = new ModifiedResults($element, options, new SelectData($element));
      -
      -  var $dropdown = select.render();
      -
      -  var container = new MockContainer();
      -  select.bind(container, $('<div></div>'));
      -
      -  select.on('select', function () {
      -    assert.ok(true, 'The select event should have been triggered');
      -  });
      -
      -  select.append({
      -    results: [
      -      {
      -        id: '1',
      -        text: 'Test'
      -      }
      -    ]
      -  });
      -
      -  assert.equal(
      -    $dropdown.find('li').length,
      -    1,
      -    'There should be one result in the dropdown'
      -  );
      -
      -  $dropdown.find('li').addClass('select2-results__option--highlighted');
      -
      -  container.trigger('close');
      -});
      diff --git a/bower_components/select2/tests/dropdown/stopPropagation-tests.js b/bower_components/select2/tests/dropdown/stopPropagation-tests.js
      deleted file mode 100644
      index 240a3e6684..0000000000
      --- a/bower_components/select2/tests/dropdown/stopPropagation-tests.js
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -module('Dropdown - Stoping event propagation');
      -
      -var Dropdown = require('select2/dropdown');
      -var StopPropagation = require('select2/dropdown/stopPropagation');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var CustomDropdown = Utils.Decorate(Dropdown, StopPropagation);
      -
      -var options = new Options();
      -
      -test('click event does not propagate', function (assert) {
      -  assert.expect(1);
      -
      -  var $container = $('#qunit-fixture .event-container');
      -  var container = new MockContainer();
      -
      -  var dropdown = new CustomDropdown($('#qunit-fixture select'), options);
      -
      -  var $dropdown = dropdown.render();
      -  dropdown.bind(container, $container);
      -
      -  $container.append($dropdown);
      -  $container.on('click', function () {
      -    assert.ok(false, 'The click event should have been stopped');
      -  });
      -
      -  $dropdown.trigger('click');
      -
      -  assert.ok(true, 'Something went wrong if this failed');
      -});
      diff --git a/bower_components/select2/tests/helpers.js b/bower_components/select2/tests/helpers.js
      deleted file mode 100644
      index e0c9fa22df..0000000000
      --- a/bower_components/select2/tests/helpers.js
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -// Restore the require/define
      -var require = $.fn.select2.amd.require;
      -var define = $.fn.select2.amd.define;
      -
      -// Disable jQuery's binding to $
      -jQuery.noConflict();
      -
      -var Utils = require('select2/utils');
      -
      -function MockContainer () {
      -  MockContainer.__super__.constructor.call(this);
      -}
      -
      -Utils.Extend(MockContainer, Utils.Observable);
      -
      -MockContainer.prototype.isOpen = function () {
      -  return this.isOpen;
      -};
      -
      -var log = [];
      -var testName;
      -
      -QUnit.done(function (test_results) {
      -  var tests = [];
      -  for(var i = 0, len = log.length; i < len; i++) {
      -    var details = log[i];
      -    tests.push({
      -      name: details.name,
      -      result: details.result,
      -      expected: details.expected,
      -      actual: details.actual,
      -      source: details.source
      -    });
      -  }
      -  test_results.tests = tests;
      -
      -  window.global_test_results = test_results;
      -});
      -QUnit.testStart(function(testDetails){
      -  QUnit.log(function(details){
      -    if (!details.result) {
      -      details.name = testDetails.name;
      -      log.push(details);
      -    }
      -  });
      -});
      diff --git a/bower_components/select2/tests/integration.html b/bower_components/select2/tests/integration.html
      deleted file mode 100644
      index d8d0ef556d..0000000000
      --- a/bower_components/select2/tests/integration.html
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -<!doctype html>
      -<html>
      -  <head>
      -    <link rel="stylesheet" href="vendor/qunit-1.23.1.css" type="text/css" />
      -    <link rel="stylesheet" href="../../dist/css/select2.css" type="text/css" />
      -  </head>
      -  <body>
      -    <div id="qunit"></div>
      -    <div id="qunit-fixture"></div>
      -
      -    <script src="vendor/qunit-1.23.1.js" type="text/javascript"></script>
      -    <script src="vendor/jquery-1.7.2.js" type="text/javascript"></script>
      -    <script src="../dist/js/select2.full.js" type="text/javascript"></script>
      -
      -    <script src="helpers.js" type="text/javascript"></script>
      -
      -    <script src="integration/dom-changes.js" type="text/javascript"></script>
      -    <script src="integration/jquery-calls.js" type="text/javascript"></script>
      -    <script src="integration/select2-methods.js" type="text/javascript"></script>
      -  </body>
      -</html>
      diff --git a/bower_components/select2/tests/integration/dom-changes.js b/bower_components/select2/tests/integration/dom-changes.js
      deleted file mode 100644
      index 2d89ae2acf..0000000000
      --- a/bower_components/select2/tests/integration/dom-changes.js
      +++ /dev/null
      @@ -1,257 +0,0 @@
      -module('DOM integration');
      -
      -test('adding a new unselected option changes nothing', function (assert) {
      -  // Any browsers which support mutation observers will not trigger the event
      -  var expected = 4;
      -  if (window.MutationObserver) {
      -    expected = 2;
      -  } else if (!window.addEventListener) {
      -    expected = 2;
      -  }
      -
      -  assert.expect(expected);
      -
      -  var asyncDone = null;
      -  var syncDone = assert.async();
      -
      -  if (expected != 2) {
      -    asyncDone = assert.async();
      -  }
      -
      -  var $ = require('jquery');
      -  var Options = require('select2/options');
      -  var Select2 = require('select2/core');
      -
      -  var $select = $(
      -    '<select>' +
      -      '<option>One</option>' +
      -      '<option>Two</option>' +
      -    '</select>'
      -  );
      -
      -  $('#qunit-fixture').append($select);
      -
      -  var select = new Select2($select);
      -
      -  select.on('selection:update', function (args) {
      -    assert.equal(
      -      args.data.length,
      -      1,
      -      'There was more than one selection'
      -    );
      -
      -    assert.equal(
      -      args.data[0].id,
      -      'One',
      -      'The selection changed to something other than One'
      -    );
      -
      -    if (expected != 2) {
      -      asyncDone();
      -    }
      -  });
      -
      -  assert.equal(
      -    $select.val(),
      -    'One'
      -  );
      -
      -  var $option = $('<option>Three</option>');
      -
      -  $select.append($option);
      -
      -  assert.equal(
      -    $select.val(),
      -    'One'
      -  );
      -
      -  syncDone();
      -});
      -
      -test('adding a new selected option changes the value', function (assert) {
      -  // handle IE 8 not being supported
      -  var expected = 4;
      -  if (!window.MutationObserver && !window.addEventListener) {
      -    expected = 2;
      -  }
      -
      -  assert.expect(expected);
      -
      -  var asyncDone = null;
      -  var syncDone = assert.async();
      -
      -  if (expected != 2) {
      -    asyncDone = assert.async();
      -  }
      -
      -  var $ = require('jquery');
      -  var Options = require('select2/options');
      -  var Select2 = require('select2/core');
      -
      -  var $select = $(
      -    '<select>' +
      -      '<option>One</option>' +
      -      '<option>Two</option>' +
      -    '</select>'
      -  );
      -
      -  $('#qunit-fixture').append($select);
      -
      -  var select = new Select2($select);
      -
      -  select.on('selection:update', function (args) {
      -    assert.equal(
      -      args.data.length,
      -      1,
      -      'There was more than one selection'
      -    );
      -
      -    assert.equal(
      -      args.data[0].id,
      -      'Three',
      -      'The selection did not change to Three'
      -    );
      -
      -    if (expected != 2) {
      -      asyncDone();
      -    }
      -  });
      -
      -  assert.equal(
      -    $select.val(),
      -    'One'
      -  );
      -
      -  var $option = $('<option selected>Three</option>');
      -
      -  $select.append($option);
      -
      -  assert.equal(
      -    $select.val(),
      -    'Three'
      -  );
      -
      -  syncDone();
      -});
      -
      -test('removing an unselected option changes nothing', function (assert) {
      -  // Any browsers which support mutation observers will not trigger the event
      -  var expected = 4;
      -  if (!window.MutationObserver && !window.addEventListener) {
      -    expected = 2;
      -  }
      -
      -  assert.expect(expected);
      -
      -  var asyncDone = null;
      -  var syncDone = assert.async();
      -
      -  if (expected != 2) {
      -    asyncDone = assert.async();
      -  }
      -
      -  var $ = require('jquery');
      -  var Options = require('select2/options');
      -  var Select2 = require('select2/core');
      -
      -  var $select = $(
      -    '<select>' +
      -      '<option>One</option>' +
      -      '<option>Two</option>' +
      -    '</select>'
      -  );
      -
      -  $('#qunit-fixture').append($select);
      -
      -  var select = new Select2($select);
      -
      -  select.on('selection:update', function (args) {
      -    assert.equal(
      -      args.data.length,
      -      1,
      -      'There was more than one selection'
      -    );
      -
      -    assert.equal(
      -      args.data[0].id,
      -      'One',
      -      'The selection changed to something other than One'
      -    );
      -
      -    if (expected != 2) {
      -      asyncDone();
      -    }
      -  });
      -
      -  assert.equal(
      -    $select.val(),
      -    'One'
      -  );
      -
      -  $select.children().eq(1).remove();
      -
      -  assert.equal(
      -    $select.val(),
      -    'One'
      -  );
      -
      -  syncDone();
      -});
      -
      -test('removing a selected option changes the value', function (assert) {
      -  // handle IE 8 not being supported
      -  var expected = 3;
      -  if (!window.MutationObserver && !window.addEventListener) {
      -    expected = 2;
      -  }
      -
      -  assert.expect(expected);
      -
      -  var asyncDone = null;
      -  var syncDone = assert.async();
      -
      -  if (expected != 2) {
      -    asyncDone = assert.async();
      -  }
      -
      -  var $ = require('jquery');
      -  var Options = require('select2/options');
      -  var Select2 = require('select2/core');
      -
      -  var $select = $(
      -    '<select>' +
      -      '<option>One</option>' +
      -      '<option>Two</option>' +
      -    '</select>'
      -  );
      -
      -  $('#qunit-fixture').append($select);
      -
      -  var select = new Select2($select);
      -
      -  select.on('selection:update', function (args) {
      -    assert.equal(
      -      args.data.length,
      -      1,
      -      'There was more than one selection'
      -    );
      -
      -    if (expected != 2) {
      -      asyncDone();
      -    }
      -  });
      -
      -  assert.equal(
      -    $select.val(),
      -    'One'
      -  );
      -
      -  $select.children().eq(0).remove();
      -
      -  assert.equal(
      -    $select.val(),
      -    'Two'
      -  );
      -
      -  syncDone();
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/integration/jquery-calls.js b/bower_components/select2/tests/integration/jquery-calls.js
      deleted file mode 100644
      index 6a30137edf..0000000000
      --- a/bower_components/select2/tests/integration/jquery-calls.js
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -module('select2(val)');
      -
      -test('multiple elements with arguments works', function (assert) {
      -  var $ = require('jquery');
      -  require('jquery.select2');
      -
      -  var $first = $(
      -    '<select>' +
      -      '<option>1</option>' +
      -      '<option>2</option>' +
      -    '</select>'
      -  );
      -  var $second = $first.clone();
      -
      -  var $both = $first.add($second);
      -  $both.select2();
      -
      -  $both.select2('val', '2');
      -
      -  assert.equal(
      -    $first.val(),
      -    '2',
      -    'The call should change the value on the first element'
      -  );
      -  assert.equal(
      -    $second.val(),
      -    '2',
      -    'The call should also change the value on the second element'
      -  );
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/integration/select2-methods.js b/bower_components/select2/tests/integration/select2-methods.js
      deleted file mode 100644
      index b1e344a567..0000000000
      --- a/bower_components/select2/tests/integration/select2-methods.js
      +++ /dev/null
      @@ -1,139 +0,0 @@
      -module('select2(data)');
      -
      -var $ = require('jquery');
      -var Select2 = require('select2/core');
      -var Options = require('select2/options');
      -
      -test('single default selection returned', function (assert) {
      -  var $select = $(
      -    '<select>' +
      -      '<option>One</option>' +
      -      '<option>Two</option>' +
      -      '<option value="3" selected>Three</option>' +
      -    '</select>'
      -  );
      -  var options = new Options({});
      -
      -  var select = new Select2($select, options);
      -
      -  var items = select.data();
      -
      -  assert.equal(
      -    items.length,
      -    1,
      -    'The one selected item should be returned'
      -  );
      -
      -  var first = items[0];
      -
      -  assert.equal(
      -    first.id,
      -    '3',
      -    'The first option was correct'
      -  );
      -
      -  assert.equal(
      -    first.text,
      -    'Three',
      -    'The first option was correct'
      -  );
      -});
      -
      -test('multiple default selections returned', function (assert) {
      -  var $select = $(
      -    '<select multiple>' +
      -      '<option selected>One</option>' +
      -      '<option>Two</option>' +
      -      '<option value="3" selected>Three</option>' +
      -    '</select>'
      -  );
      -  var options = new Options({});
      -
      -  var select = new Select2($select, options);
      -
      -  var items = select.data();
      -
      -  assert.equal(
      -    items.length,
      -    2,
      -    'The two selected items should be returned'
      -  );
      -
      -  var first = items[0];
      -
      -  assert.equal(
      -    first.id,
      -    'One',
      -    'The first option was correct'
      -  );
      -
      -  var second = items[1];
      -
      -  assert.equal(
      -    second.id,
      -    '3',
      -    'The option value should be pulled correctly'
      -  );
      -});
      -
      -module('select2(val)');
      -
      -test('single value matches jquery value', function (assert) {
      -  var $select = $(
      -    '<select>' +
      -      '<option>One</option>' +
      -      '<option>Two</option>' +
      -      '<option value="3" selected>Three</option>' +
      -    '</select>'
      -  );
      -  var options = new Options({});
      -
      -  var select = new Select2($select, options);
      -
      -  var value = select.val();
      -
      -  assert.equal(
      -    value,
      -    '3',
      -    'The value should match the option tag attribute'
      -  );
      -
      -  assert.equal(
      -    value,
      -    $select.val(),
      -    'The value should match the jquery value'
      -  );
      -});
      -
      -test('multiple value matches the jquery value', function (assert) {
      -  var $select = $(
      -    '<select multiple>' +
      -      '<option selected>One</option>' +
      -      '<option>Two</option>' +
      -      '<option value="3" selected>Three</option>' +
      -    '</select>'
      -  );
      -  var options = new Options({});
      -
      -  var select = new Select2($select, options);
      -
      -  var value = select.val();
      -
      -  assert.equal(
      -    value.length,
      -    2,
      -    'Two options should be selected'
      -  );
      -
      -  assert.deepEqual(
      -    value,
      -    ['One', '3'],
      -    'The values should match the option tag attribute'
      -  );
      -
      -  assert.deepEqual(
      -    value,
      -    $select.val(),
      -    'The values should match the jquery values'
      -  );
      -});
      diff --git a/bower_components/select2/tests/options/ajax-tests.js b/bower_components/select2/tests/options/ajax-tests.js
      deleted file mode 100644
      index 7d8537ae21..0000000000
      --- a/bower_components/select2/tests/options/ajax-tests.js
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -module('Defaults - Ajax');
      -
      -test('options are merged recursively with default options', function (assert) {
      -  var defaults = require('select2/defaults');
      -
      -  var ajaxDelay = 250;
      -  var ajaxUrl = 'http://www.test.com';
      -
      -  var mergedOptions;
      -
      -  defaults.set('ajax--delay', ajaxDelay);
      -
      -  mergedOptions = defaults.apply({
      -    ajax: {
      -      url: ajaxUrl
      -    }
      -  });
      -
      -  assert.equal(
      -    mergedOptions.ajax.delay,
      -    ajaxDelay,
      -    'Ajax default options are present on the merged options'
      -  );
      -
      -  assert.equal(
      -    mergedOptions.ajax.url,
      -    ajaxUrl,
      -    'Ajax provided options are present on the merged options'
      -  );
      -
      -  defaults.reset();
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/options/data-tests.js b/bower_components/select2/tests/options/data-tests.js
      deleted file mode 100644
      index 107a2f0c96..0000000000
      --- a/bower_components/select2/tests/options/data-tests.js
      +++ /dev/null
      @@ -1,44 +0,0 @@
      -module('Options - Attributes');
      -
      -var $ = require('jquery');
      -
      -var Options = require('select2/options');
      -
      -test('no nesting', function (assert) {
      -  var $test = $('<select data-test="test"></select>');
      -
      -  var options = new Options({}, $test);
      -
      -  assert.equal(options.get('test'), 'test');
      -});
      -
      -test('with nesting', function (assert) {
      -  var $test = $('<select data-first--second="test"></select>');
      -
      -  if ($test[0].dataset == null) {
      -    assert.ok(
      -      true,
      -      'We can not run this test with jQuery 1.x if dataset is not implemented'
      -    );
      -
      -    return;
      -  }
      -
      -  var options = new Options({}, $test);
      -
      -  assert.ok(!(options.get('first-Second')));
      -  assert.equal(options.get('first').second, 'test');
      -});
      -
      -test('overrides initialized data', function (assert) {
      -  var $test = $('<select data-override="yes" data-data="yes"></select>');
      -
      -  var options = new Options({
      -    options: 'yes',
      -    override: 'no'
      -  }, $test);
      -
      -  assert.equal(options.get('options'), 'yes');
      -  assert.equal(options.get('override'), 'yes');
      -  assert.equal(options.get('data'), 'yes');
      -});
      diff --git a/bower_components/select2/tests/options/deprecated-tests.js b/bower_components/select2/tests/options/deprecated-tests.js
      deleted file mode 100644
      index a51bba317a..0000000000
      --- a/bower_components/select2/tests/options/deprecated-tests.js
      +++ /dev/null
      @@ -1,250 +0,0 @@
      -module('Options - Deprecated - initSelection');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -
      -test('converted into dataAdapter.current', function (assert) {
      -  assert.expect(5);
      -
      -  var $test = $('<select></select>');
      -  var called = false;
      -
      -  var options = new Options({
      -    initSelection: function ($element, callback) {
      -      called = true;
      -
      -      callback([{
      -        id: '1',
      -        text: '2'
      -      }]);
      -    }
      -  }, $test);
      -
      -  assert.ok(!called, 'initSelection should not have been called');
      -
      -  var DataAdapter = options.get('dataAdapter');
      -  var data = new DataAdapter($test, options);
      -
      -  data.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      1,
      -      'There should have only been one object selected'
      -    );
      -
      -    var item = data[0];
      -
      -    assert.equal(
      -      item.id,
      -      '1',
      -      'The id should have been set by initSelection'
      -    );
      -
      -    assert.equal(
      -      item.text,
      -      '2',
      -      'The text should have been set by initSelection'
      -    );
      -  });
      -
      -  assert.ok(called, 'initSelection should have been called');
      -});
      -
      -test('single option converted to array automatically', function (assert) {
      -  assert.expect(2);
      -
      -  var $test = $('<select></select>');
      -  var called = false;
      -
      -  var options = new Options({
      -    initSelection: function ($element, callback) {
      -      called = true;
      -
      -      callback({
      -        id: '1',
      -        text: '2'
      -      });
      -    }
      -  }, $test);
      -
      -  var DataAdapter = options.get('dataAdapter');
      -  var data = new DataAdapter($test, options);
      -
      -  data.current(function (data) {
      -    assert.ok(
      -      $.isArray(data),
      -      'The data should have been converted to an array'
      -    );
      -  });
      -
      -  assert.ok(called, 'initSelection should have been called');
      -});
      -
      -test('only called once', function (assert) {
      -  assert.expect(8);
      -
      -  var $test = $('<select><option value="3" selected>4</option></select>');
      -  var called = 0;
      -
      -  var options = new Options({
      -    initSelection: function ($element, callback) {
      -      called++;
      -
      -      callback([{
      -        id: '1',
      -        text: '2'
      -      }]);
      -    }
      -  }, $test);
      -
      -  var DataAdapter = options.get('dataAdapter');
      -  var data = new DataAdapter($test, options);
      -
      -  data.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      1,
      -      'There should have only been a single option'
      -    );
      -
      -    var item = data[0];
      -
      -    assert.equal(
      -      item.id,
      -      '1',
      -      'The id should match the one given by initSelection'
      -    );
      -
      -    assert.equal(
      -      item.text,
      -      '2',
      -      'The text should match the one given by initSelection'
      -    );
      -  });
      -
      -  assert.equal(
      -    called,
      -    1,
      -    'initSelection should have been called'
      -  );
      -
      -  data.current(function (data) {
      -    assert.equal(
      -      data.length,
      -      1,
      -      'There should have only been a single option'
      -    );
      -
      -    var item = data[0];
      -
      -    assert.equal(
      -      item.id,
      -      '3',
      -      'The id should match the value given in the DOM'
      -    );
      -
      -    assert.equal(
      -      item.text,
      -      '4',
      -      'The text should match the text given in the DOM'
      -    );
      -  });
      -
      -  assert.equal(
      -    called,
      -    1,
      -    'initSelection should have only been called once'
      -  );
      -});
      -
      -module('Options - Deprecated - query');
      -
      -test('converted into dataAdapter.query automatically', function (assert) {
      -  assert.expect(6);
      -
      -  var $test = $('<select></select>');
      -  var called = false;
      -
      -  var options = new Options({
      -    query: function (params) {
      -      called = true;
      -
      -      params.callback({
      -        results: [
      -          {
      -            id: 'test',
      -            text: params.term
      -          }
      -        ]
      -      });
      -    }
      -  }, $test);
      -
      -  assert.ok(!called, 'The query option should not have been called');
      -
      -  var DataAdapter = options.get('dataAdapter');
      -  var data = new DataAdapter($test, options);
      -
      -  data.query({
      -    term: 'term'
      -  }, function (data) {
      -    assert.ok(
      -      'results' in data,
      -      'It should have included the results key'
      -    );
      -
      -    assert.equal(
      -      data.results.length,
      -      1,
      -      'There should have only been a single result returned'
      -    );
      -
      -    var item = data.results[0];
      -
      -    assert.equal(
      -      item.id,
      -      'test',
      -      'The id should have been returned from the query function'
      -    );
      -
      -    assert.equal(
      -      item.text,
      -      'term',
      -      'The text should have matched the term that was passed in'
      -    );
      -  });
      -
      -  assert.ok(called, 'The query function should have been called');
      -});
      -
      -module('Options - deprecated - data-ajax-url');
      -
      -test('converted ajax-url to ajax--url automatically', function (assert) {
      -  var $test = $('<select data-ajax-url="test://url"></select>');
      -  var options = new Options({}, $test);
      -
      -  assert.ok(
      -    options.get('ajax'),
      -    'The `ajax` key was automatically created'
      -  );
      -  assert.equal(
      -    options.get('ajax').url,
      -    'test://url',
      -    'The `url` property for the `ajax` option was filled in correctly'
      -  );
      -});
      -
      -test('converted select2-tags to data/tags automatically', function (assert) {
      -  var $test = $('<select data-select2-tags="original data"></select>');
      -  var options = new Options({}, $test);
      -
      -  assert.ok(
      -    options.get('tags'),
      -    'The `tags` key is automatically set to true'
      -  );
      -  assert.equal(
      -    options.get('data'),
      -    'original data',
      -    'The `data` key is created with the original data'
      -  );
      -});
      diff --git a/bower_components/select2/tests/options/translation-tests.js b/bower_components/select2/tests/options/translation-tests.js
      deleted file mode 100644
      index ab433b6157..0000000000
      --- a/bower_components/select2/tests/options/translation-tests.js
      +++ /dev/null
      @@ -1,28 +0,0 @@
      -module('Options - Translations');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -
      -test('partial dictionaries can be passed', function (assert) {
      -  var options = new Options({
      -    language: {
      -      searching: function () {
      -        return 'Something';
      -      }
      -    }
      -  });
      -
      -  var translations = options.get('translations');
      -
      -  assert.equal(
      -    translations.get('searching')(),
      -    'Something',
      -    'The partial dictionary still overrides translations'
      -  );
      -
      -  assert.equal(
      -    translations.get('noResults')(),
      -    'No results found',
      -    'You can still get English translations for keys not passed in'
      -  );
      -});
      diff --git a/bower_components/select2/tests/options/width-tests.js b/bower_components/select2/tests/options/width-tests.js
      deleted file mode 100644
      index e724034904..0000000000
      --- a/bower_components/select2/tests/options/width-tests.js
      +++ /dev/null
      @@ -1,66 +0,0 @@
      -module('Options - Width');
      -
      -var $ = require('jquery');
      -
      -var Select2 = require('select2/core');
      -var select = new Select2($('<select></select>'));
      -
      -test('string passed as width', function (assert) {
      -  var $test = $('<select></select>');
      -
      -  var width = select._resolveWidth($test, '80%');
      -
      -  assert.equal(width, '80%');
      -});
      -
      -test('width from style attribute', function (assert) {
      -  var $test = $('<select style="width: 50%;"></selct>');
      -
      -  var width = select._resolveWidth($test, 'style');
      -
      -  assert.equal(width, '50%');
      -});
      -
      -test('width from style returns null if nothing is found', function (assert) {
      -  var $test = $('<select></selct>');
      -
      -  var width = select._resolveWidth($test, 'style');
      -
      -  assert.equal(width, null);
      -});
      -
      -test('width from computed element width', function (assert) {
      -  var $style = $(
      -    '<style type="text/css">.css-set-width { width: 500px; }</style>'
      -  );
      -  var $test = $('<select class="css-set-width"></select>');
      -
      -  $('#qunit-fixture').append($style);
      -  $('#qunit-fixture').append($test);
      -
      -  var width = select._resolveWidth($test, 'element');
      -
      -  assert.equal(width, '500px');
      -});
      -
      -test('resolve gets the style if it is there', function (assert) {
      -  var $test = $('<select style="width: 20%;"></selct>');
      -
      -  var width = select._resolveWidth($test, 'resolve');
      -
      -  assert.equal(width, '20%');
      -});
      -
      -test('resolve falls back to element if there is no style', function (assert) {
      -  var $style = $(
      -    '<style type="text/css">.css-set-width { width: 500px; }</style>'
      -  );
      -  var $test = $('<select class="css-set-width"></select>');
      -
      -  $('#qunit-fixture').append($style);
      -  $('#qunit-fixture').append($test);
      -
      -  var width = select._resolveWidth($test, 'resolve');
      -
      -  assert.equal(width, '500px');
      -});
      diff --git a/bower_components/select2/tests/results/focusing-tests.js b/bower_components/select2/tests/results/focusing-tests.js
      deleted file mode 100644
      index 135d0016d1..0000000000
      --- a/bower_components/select2/tests/results/focusing-tests.js
      +++ /dev/null
      @@ -1,138 +0,0 @@
      -module('Results - highlighting results');
      -
      -test('results:all with no data skips results:focus', function (assert) {
      -  assert.expect(0);
      -
      -  var $ = require('jquery');
      -
      -  var $select = $('<select></select>');
      -  var $parent = $('<div></div>');
      -
      -  var $container = $('<span></span>');
      -  var container = new MockContainer();
      -
      -  $parent.appendTo($('#qunit-fixture'));
      -  $select.appendTo($parent);
      -
      -  var Utils = require('select2/utils');
      -  var Options = require('select2/options');
      -
      -  var Results = require('select2/results');
      -
      -  var results = new Results($select, new Options({}));
      -
      -  // Fake the data adapter for the `setClasses` method
      -  results.data = {};
      -  results.data.current = function (callback) {
      -    callback([{ id: 'test' }]);
      -  };
      -
      -  results.render();
      -
      -  results.bind(container, $container);
      -
      -  results.on('results:focus', function (params) {
      -    assert.ok(false, 'The results:focus event was triggered');
      -  });
      -
      -  container.trigger('results:all', {
      -    data: {
      -      results: []
      -    }
      -  });
      -});
      -
      -test('results:all triggers results:focus on the first item', function (assert) {
      -  assert.expect(2);
      -
      -  var $ = require('jquery');
      -
      -  var $select = $('<select></select>');
      -  var $parent = $('<div></div>');
      -
      -  var $container = $('<span></span>');
      -  var container = new MockContainer();
      -
      -  $parent.appendTo($('#qunit-fixture'));
      -  $select.appendTo($parent);
      -
      -  var Utils = require('select2/utils');
      -  var Options = require('select2/options');
      -
      -  var Results = require('select2/results');
      -
      -  var results = new Results($select, new Options({}));
      -
      -  // Fake the data adapter for the `setClasses` method
      -  results.data = {};
      -  results.data.current = function (callback) {
      -    callback([{ id: 'test' }]);
      -  };
      -
      -  results.render();
      -
      -  results.bind(container, $container);
      -
      -  results.on('results:focus', function (params) {
      -    assert.equal(params.data.id, 'test');
      -    assert.equal(params.data.text, 'Test');
      -  });
      -
      -  container.trigger('results:all', {
      -    data: {
      -      results: [
      -        {
      -          id: 'test',
      -          text: 'Test'
      -        }
      -      ]
      -    }
      -  });
      -});
      -
      -test('results:append does not trigger results:focus', function (assert) {
      -  assert.expect(0);
      -
      -  var $ = require('jquery');
      -
      -  var $select = $('<select></select>');
      -  var $parent = $('<div></div>');
      -
      -  var $container = $('<span></span>');
      -  var container = new MockContainer();
      -
      -  $parent.appendTo($('#qunit-fixture'));
      -  $select.appendTo($parent);
      -
      -  var Utils = require('select2/utils');
      -  var Options = require('select2/options');
      -
      -  var Results = require('select2/results');
      -
      -  var results = new Results($select, new Options({}));
      -
      -  // Fake the data adapter for the `setClasses` method
      -  results.data = {};
      -  results.data.current = function (callback) {
      -    callback([{ id: 'test' }]);
      -  };
      -
      -  results.render();
      -
      -  results.bind(container, $container);
      -
      -  results.on('results:focus', function () {
      -    assert.ok(false, 'The results:focus event was triggered');
      -  });
      -
      -  container.trigger('results:append', {
      -    data: {
      -      results: [
      -        {
      -          id: 'test',
      -          text: 'Test'
      -        }
      -      ]
      -    }
      -  });
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/selection/allowClear-tests.js b/bower_components/select2/tests/selection/allowClear-tests.js
      deleted file mode 100644
      index efa132aae3..0000000000
      --- a/bower_components/select2/tests/selection/allowClear-tests.js
      +++ /dev/null
      @@ -1,218 +0,0 @@
      -module('Selection containers - Placeholders - Allow clear');
      -
      -var Placeholder = require('select2/selection/placeholder');
      -var AllowClear = require('select2/selection/allowClear');
      -
      -var SingleSelection = require('select2/selection/single');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var AllowClearPlaceholder = Utils.Decorate(
      -  Utils.Decorate(SingleSelection, Placeholder),
      -  AllowClear
      -);
      -
      -var allowClearOptions = new Options({
      -  placeholder: {
      -    id: 'placeholder',
      -    text: 'This is the placeholder'
      -  },
      -  allowClear: true
      -});
      -
      -test('clear is not displayed for single placeholder', function (assert) {
      -  var selection = new AllowClearPlaceholder(
      -    $('#qunit-fixture .single-with-placeholder'),
      -    allowClearOptions
      -  );
      -
      -  var $selection = selection.render();
      -
      -  selection.update([{
      -    id: 'placeholder'
      -  }]);
      -
      -  assert.equal(
      -    $selection.find('.select2-selection__clear').length,
      -    0,
      -    'The clear icon should not be displayed'
      -  );
      -});
      -
      -test('clear is not displayed for multiple placeholder', function (assert) {
      -  var selection = new AllowClearPlaceholder(
      -    $('#qunit-fixture .single-with-placeholder'),
      -    allowClearOptions
      -  );
      -
      -  var $selection = selection.render();
      -
      -  selection.update([]);
      -
      -  assert.equal(
      -    $selection.find('.select2-selection__clear').length,
      -    0,
      -    'The clear icon should not be displayed'
      -  );
      -});
      -
      -
      -test('clear is displayed for placeholder', function (assert) {
      -  var selection = new AllowClearPlaceholder(
      -    $('#qunit-fixture .single-with-placeholder'),
      -    allowClearOptions
      -  );
      -
      -  var $selection = selection.render();
      -
      -  selection.update([{
      -    id: 'one',
      -    test: 'one'
      -  }]);
      -
      -  assert.equal(
      -    $selection.find('.select2-selection__clear').length,
      -    1,
      -    'The clear icon should be displayed'
      -  );
      -});
      -
      -test('clicking clear will set the placeholder value', function (assert) {
      -  var $element = $('#qunit-fixture .single-with-placeholder');
      -
      -  var selection = new AllowClearPlaceholder(
      -    $element,
      -    allowClearOptions
      -  );
      -  var container = new MockContainer();
      -
      -  var $selection = selection.render();
      -
      -  selection.bind(container, $('<div></div'));
      -
      -  $element.val('One');
      -  selection.update([{
      -    id: 'One',
      -    text: 'One'
      -  }]);
      -
      -  var $remove = $selection.find('.select2-selection__clear');
      -  $remove.trigger('mousedown');
      -
      -  assert.equal(
      -    $element.val(),
      -    'placeholder',
      -    'The value should have been reset to the placeholder'
      -  );
      -});
      -
      -test('clicking clear will trigger the unselect event', function (assert) {
      -  assert.expect(3);
      -
      -  var $element = $('#qunit-fixture .single-with-placeholder');
      -
      -  var selection = new AllowClearPlaceholder(
      -    $element,
      -    allowClearOptions
      -  );
      -  var container = new MockContainer();
      -
      -  var $selection = selection.render();
      -
      -  selection.bind(container, $('<div></div'));
      -
      -  $element.val('One');
      -  selection.update([{
      -    id: 'One',
      -    text: 'One'
      -  }]);
      -
      -  selection.on('unselect', function (ev) {
      -    assert.ok(
      -      'data' in ev && ev.data,
      -      'The event should have been triggered with the data property'
      -    );
      -
      -    assert.ok(
      -      $.isPlainObject(ev.data),
      -      'The data should be an object'
      -    );
      -
      -    assert.equal(
      -      ev.data.id,
      -      'One',
      -      'The previous object should be unselected'
      -    );
      -  });
      -
      -  var $remove = $selection.find('.select2-selection__clear');
      -  $remove.trigger('mousedown');
      -});
      -
      -
      -
      -test('preventing the unselect event cancels the clearing', function (assert) {
      -  var $element = $('#qunit-fixture .single-with-placeholder');
      -
      -  var selection = new AllowClearPlaceholder(
      -    $element,
      -    allowClearOptions
      -  );
      -  var container = new MockContainer();
      -
      -  var $selection = selection.render();
      -
      -  selection.bind(container, $('<div></div'));
      -
      -  $element.val('One');
      -  selection.update([{
      -    id: 'One',
      -    text: 'One'
      -  }]);
      -
      -  selection.on('unselect', function (ev) {
      -    ev.prevented = true;
      -  });
      -
      -  var $remove = $selection.find('.select2-selection__clear');
      -  $remove.trigger('mousedown');
      -
      -  assert.equal(
      -    $element.val(),
      -    'One',
      -    'The placeholder should not have been set'
      -  );
      -});
      -
      -test('clear does not work when disabled', function (assert) {
      -  var $element = $('#qunit-fixture .single-with-placeholder');
      -
      -  var selection = new AllowClearPlaceholder(
      -    $element,
      -    allowClearOptions
      -  );
      -  var container = new MockContainer();
      -
      -  var $selection = selection.render();
      -
      -  selection.bind(container, $('<div></div'));
      -
      -  selection.update([{
      -    id: 'One',
      -    text: 'One'
      -  }]);
      -
      -  $element.val('One');
      -  selection.options.set('disabled', true);
      -
      -  var $remove = $selection.find('.select2-selection__clear');
      -  $remove.trigger('mousedown');
      -
      -  assert.equal(
      -    $element.val(),
      -    'One',
      -    'The placeholder should not have been set'
      -  );
      -});
      diff --git a/bower_components/select2/tests/selection/containerCss-tests.js b/bower_components/select2/tests/selection/containerCss-tests.js
      deleted file mode 100644
      index 522703a238..0000000000
      --- a/bower_components/select2/tests/selection/containerCss-tests.js
      +++ /dev/null
      @@ -1,104 +0,0 @@
      -module('Dropdown - containerCssClass compatibility');
      -
      -var $ = require('jquery');
      -var Utils = require('select2/utils');
      -var Options = require('select2/options');
      -
      -var SingleSelection = require('select2/selection/single');
      -var ContainerCSS = Utils.Decorate(
      -  SingleSelection,
      -  require('select2/compat/containerCss')
      -);
      -
      -test('all classes will be copied if :all: is used', function (assert) {
      -  var $element = $('<select class="test copy works"></select>');
      -  var options = new Options({
      -    containerCssClass: ':all:'
      -  });
      -
      -  var select = new ContainerCSS($element, options);
      -  var $container = select.render();
      -
      -  assert.ok($container.hasClass('test'));
      -  assert.ok($container.hasClass('copy'));
      -  assert.ok($container.hasClass('works'));
      -  assert.ok(!$container.hasClass(':all:'));
      -});
      -
      -test(':all: can be used with other classes', function (assert) {
      -  var $element = $('<select class="test copy works"></select>');
      -  var options = new Options({
      -    containerCssClass: ':all: other'
      -  });
      -
      -  var select = new ContainerCSS($element, options);
      -  var $container = select.render();
      -
      -  assert.ok($container.hasClass('test'));
      -  assert.ok($container.hasClass('copy'));
      -  assert.ok($container.hasClass('works'));
      -  assert.ok($container.hasClass('other'));
      -  assert.ok(!$container.hasClass(':all:'));
      -});
      -
      -test('classes can be passed in as a string', function (assert) {
      -  var $element = $('<select class="test copy works"></select>');
      -  var options = new Options({
      -    containerCssClass: 'other'
      -  });
      -
      -  var select = new ContainerCSS($element, options);
      -  var $container = select.render();
      -
      -  assert.ok($container.hasClass('other'));
      -});
      -
      -test('a function can be used based on the element', function (assert){
      -  var $element = $('<select class="test"></select>');
      -  var options = new Options({
      -    containerCssClass: function ($element) {
      -      return 'function';
      -    }
      -  });
      -
      -  var select = new ContainerCSS($element, options);
      -  var $container = select.render();
      -
      -  assert.ok($container.hasClass('function'));
      -  assert.ok(!$container.hasClass('test'));
      -});
      -
      -test(':all: works around custom adapters', function (assert) {
      -  var $element = $('<select class="test"></select>');
      -  var options = new Options({
      -    containerCssClass: ':all: something',
      -    adaptContainerCssClass: function (clazz) {
      -      return clazz + '-modified';
      -    }
      -  });
      -
      -  var select = new ContainerCSS($element, options);
      -  var $container = select.render();
      -
      -  assert.ok($container.hasClass('something'));
      -
      -  assert.ok($container.hasClass('test'));
      -  assert.ok($container.hasClass('test-modified'));
      -});
      -
      -module('Selection - adaptContainerCss compatibility');
      -
      -test('only return when adapted', function (assert) {
      -  var $element = $('<select class="original"></select>');
      -  var options = new Options({
      -    adaptContainerCssClass: function (clazz) {
      -      return 'modified';
      -    }
      -  });
      -
      -  var select = new ContainerCSS($element, options);
      -  var $container = select.render();
      -
      -  assert.ok(!$container.hasClass('original'));
      -  assert.ok($container.hasClass('modified'));
      -});
      diff --git a/bower_components/select2/tests/selection/multiple-tests.js b/bower_components/select2/tests/selection/multiple-tests.js
      deleted file mode 100644
      index 0d0f9c2e63..0000000000
      --- a/bower_components/select2/tests/selection/multiple-tests.js
      +++ /dev/null
      @@ -1,149 +0,0 @@
      -module('Selection containers - Multiple');
      -
      -var MultipleSelection = require('select2/selection/multiple');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var options = new Options({});
      -
      -test('display uses templateSelection', function (assert) {
      -  var called = false;
      -
      -  var templateOptions = new Options({
      -    templateSelection: function (data) {
      -      called = true;
      -
      -      return data.text;
      -    }
      -  });
      -
      -  var selection = new MultipleSelection(
      -    $('#qunit-fixture .multiple'),
      -    templateOptions
      -  );
      -
      -  var out = selection.display({
      -    text: 'test'
      -  });
      -
      -  assert.ok(called);
      -
      -  assert.equal(out, 'test');
      -});
      -
      -test('templateSelection can addClass', function (assert) {
      -  var called = false;
      -
      -  var templateOptions = new Options({
      -    templateSelection: function (data, container) {
      -      called = true;
      -      container.addClass('testclass');
      -      return data.text;
      -    }
      -  });
      -
      -  var selection = new MultipleSelection(
      -    $('#qunit-fixture .multiple'),
      -    templateOptions
      -  );
      -
      -  var $container = selection.selectionContainer();
      -
      -  var out = selection.display({
      -    text: 'test'
      -  }, $container);
      -
      -  assert.ok(called);
      -
      -  assert.equal(out, 'test');
      -
      -  assert.ok($container.hasClass('testclass'));
      -});
      -
      -test('empty update clears the selection', function (assert) {
      -  var selection = new MultipleSelection(
      -    $('#qunit-fixture .multiple'),
      -    options
      -  );
      -
      -  var $selection = selection.render();
      -  var $rendered = $selection.find('.select2-selection__rendered');
      -
      -  $rendered.text('testing');
      -
      -  selection.update([]);
      -
      -  assert.equal($rendered.text(), '');
      -});
      -
      -test('escapeMarkup is being used', function (assert) {
      -  var selection = new MultipleSelection(
      -    $('#qunit-fixture .multiple'),
      -    options
      -  );
      -
      -  var $selection = selection.render();
      -  var $rendered = $selection.find('.select2-selection__rendered');
      -
      -  var unescapedText = '<script>bad("stuff");</script>';
      -
      -  selection.update([{
      -    text: unescapedText
      -  }]);
      -
      -  assert.equal(
      -    $rendered.text().substr(1),
      -    unescapedText,
      -    'The text should be escaped by default to prevent injection'
      -  );
      -});
      -
      -test('clear button respects the disabled state', function (assert) {
      -  var options = new Options({
      -    disabled: true
      -  });
      -
      -  var $select = $('#qunit-fixture .multiple');
      -
      -  var container = new MockContainer();
      -  var $container = $('<div></div>');
      -
      -  var selection = new MultipleSelection(
      -    $select,
      -    options
      -  );
      -
      -  var $selection = selection.render();
      -  $container.append($selection);
      -
      -  selection.bind(container, $container);
      -
      -  // Select an option
      -  selection.update([{
      -    text: 'Test'
      -  }]);
      -
      -  var $rendered = $selection.find('.select2-selection__rendered');
      -
      -  var $pill = $rendered.find('.select2-selection__choice');
      -
      -  assert.equal($pill.length, 1, 'There should only be one selection');
      -
      -  var $remove = $pill.find('.select2-selection__choice__remove');
      -
      -  assert.equal(
      -    $remove.length,
      -    1,
      -    'The remove icon is displayed for the selection'
      -  );
      -
      -  // Set up the unselect handler
      -  selection.on('unselect', function (params) {
      -    assert.ok(false, 'The unselect handler should not be triggered');
      -  });
      -
      -  // Trigger the handler for the remove icon
      -  $remove.trigger('click');
      -});
      diff --git a/bower_components/select2/tests/selection/placeholder-tests.js b/bower_components/select2/tests/selection/placeholder-tests.js
      deleted file mode 100644
      index 8a436ff338..0000000000
      --- a/bower_components/select2/tests/selection/placeholder-tests.js
      +++ /dev/null
      @@ -1,74 +0,0 @@
      -module('Selection containers - Placeholders');
      -
      -var Placeholder = require('select2/selection/placeholder');
      -var SingleSelection = require('select2/selection/single');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var SinglePlaceholder = Utils.Decorate(SingleSelection, Placeholder);
      -
      -var placeholderOptions = new Options({
      -  placeholder: {
      -    id: 'placeholder',
      -    text: 'This is the placeholder'
      -  }
      -});
      -
      -test('normalizing placeholder ignores objects', function (assert) {
      -  var selection = new SinglePlaceholder(
      -    $('#qunit-fixture .single'),
      -    placeholderOptions
      -  );
      -
      -  var original = {
      -    id: 'test',
      -    text: 'testing'
      -  };
      -
      -  var normalized = selection.normalizePlaceholder(original);
      -
      -  assert.equal(original, normalized);
      -});
      -
      -test('normalizing placeholder gives object for string', function (assert) {
      -  var selection = new SinglePlaceholder(
      -    $('#qunit-fixture .single'),
      -    placeholderOptions
      -  );
      -
      -  var normalized = selection.normalizePlaceholder('placeholder');
      -
      -  assert.equal(normalized.id, '');
      -  assert.equal(normalized.text, 'placeholder');
      -});
      -
      -
      -test('text is shown for placeholder option on single', function (assert) {
      -  var selection = new SinglePlaceholder(
      -    $('#qunit-fixture .single'),
      -    placeholderOptions
      -  );
      -
      -  var $selection = selection.render();
      -
      -  selection.update([{
      -    id: 'placeholder'
      -  }]);
      -
      -  assert.equal($selection.text(), 'This is the placeholder');
      -});
      -
      -test('placeholder is shown when no options are selected', function (assert) {
      -  var selection = new SinglePlaceholder(
      -    $('#qunit-fixture .multiple'),
      -    placeholderOptions
      -  );
      -
      -  var $selection = selection.render();
      -
      -  selection.update([]);
      -
      -  assert.equal($selection.text(), 'This is the placeholder');
      -});
      diff --git a/bower_components/select2/tests/selection/search-tests.js b/bower_components/select2/tests/selection/search-tests.js
      deleted file mode 100644
      index 43345d72f0..0000000000
      --- a/bower_components/select2/tests/selection/search-tests.js
      +++ /dev/null
      @@ -1,191 +0,0 @@
      -module('Selection containers - Inline search');
      -
      -var MultipleSelection = require('select2/selection/multiple');
      -var InlineSearch = require('select2/selection/search');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var options = new Options({});
      -
      -test('backspace will remove a choice', function (assert) {
      -  assert.expect(3);
      -
      -  var KEYS = require('select2/keys');
      -
      -  var $container = $('#qunit-fixture .event-container');
      -  var container = new MockContainer();
      -
      -  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
      -
      -  var $element = $('#qunit-fixture .multiple');
      -  var selection = new CustomSelection($element, options);
      -
      -  var $selection = selection.render();
      -  selection.bind(container, $container);
      -
      -  // The unselect event should be triggered at some point
      -  selection.on('unselect', function () {
      -    assert.ok(true, 'A choice was unselected');
      -  });
      -
      -  // Add some selections and render the search
      -  selection.update([
      -    {
      -      id: '1',
      -      text: 'One'
      -    }
      -  ]);
      -
      -  var $search = $selection.find('input');
      -  var $choices = $selection.find('.select2-selection__choice');
      -
      -  assert.equal($search.length, 1, 'The search was visible');
      -  assert.equal($choices.length, 1, 'The choice was rendered');
      -
      -  // Trigger the backspace on the search
      -  var backspace = $.Event('keydown', {
      -    which: KEYS.BACKSPACE
      -  });
      -  $search.trigger(backspace);
      -});
      -
      -test('backspace will set the search text', function (assert) {
      -  assert.expect(3);
      -
      -  var KEYS = require('select2/keys');
      -
      -  var $container = $('#qunit-fixture .event-container');
      -  var container = new MockContainer();
      -
      -  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
      -
      -  var $element = $('#qunit-fixture .multiple');
      -  var selection = new CustomSelection($element, options);
      -
      -  var $selection = selection.render();
      -  selection.bind(container, $container);
      -
      -  // Add some selections and render the search
      -  selection.update([
      -    {
      -      id: '1',
      -      text: 'One'
      -    }
      -  ]);
      -
      -  var $search = $selection.find('input');
      -  var $choices = $selection.find('.select2-selection__choice');
      -
      -  assert.equal($search.length, 1, 'The search was visible');
      -  assert.equal($choices.length, 1, 'The choice was rendered');
      -
      -  // Trigger the backspace on the search
      -  var backspace = $.Event('keydown', {
      -    which: KEYS.BACKSPACE
      -  });
      -  $search.trigger(backspace);
      -
      -  assert.equal($search.val(), 'One', 'The search text was set');
      -});
      -
      -test('updating selection does not shift the focus', function (assert) {
      -  // Check for IE 8, which triggers a false negative during testing
      -  if (window.attachEvent && !window.addEventListener) {
      -    // We must expect 0 assertions or the test will fail
      -    assert.expect(0);
      -    return;
      -  }
      -
      -  var $container = $('#qunit-fixture .event-container');
      -  var container = new MockContainer();
      -
      -  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
      -
      -  var $element = $('#qunit-fixture .multiple');
      -  var selection = new CustomSelection($element, options);
      -
      -  var $selection = selection.render();
      -  selection.bind(container, $container);
      -
      -  // Update the selection so the search is rendered
      -  selection.update([]);
      -
      -  // Make it visible so the browser can place focus on the search
      -  $container.append($selection);
      -
      -  var $search = $selection.find('input');
      -  $search.trigger('focus');
      -
      -  assert.equal($search.length, 1, 'The search was not visible');
      -
      -  assert.equal(
      -    document.activeElement,
      -    $search[0],
      -    'The search did not have focus originally'
      -  );
      -
      -  // Trigger an update, this should redraw the search box
      -  selection.update([]);
      -
      -  assert.equal($search.length, 1, 'The search box disappeared');
      -
      -  assert.equal(
      -    document.activeElement,
      -    $search[0],
      -    'The search did not have focus after the selection was updated'
      -  );
      -});
      -
      -test('the focus event shifts the focus', function (assert) {
      -  // Check for IE 8, which triggers a false negative during testing
      -  if (window.attachEvent && !window.addEventListener) {
      -    // We must expect 0 assertions or the test will fail
      -    assert.expect(0);
      -    return;
      -  }
      -
      -  var $container = $('#qunit-fixture .event-container');
      -  var container = new MockContainer();
      -
      -  var CustomSelection = Utils.Decorate(MultipleSelection, InlineSearch);
      -
      -  var $element = $('#qunit-fixture .multiple');
      -  var selection = new CustomSelection($element, options);
      -
      -  var $selection = selection.render();
      -  selection.bind(container, $container);
      -
      -  // Update the selection so the search is rendered
      -  selection.update([]);
      -
      -  // Make it visible so the browser can place focus on the search
      -  $container.append($selection);
      -
      -  // The search should not be automatically focused
      -
      -  var $search = $selection.find('input');
      -
      -  assert.notEqual(
      -    document.activeElement,
      -    $search[0],
      -    'The search had focus originally'
      -  );
      -
      -  assert.equal($search.length, 1, 'The search was not visible');
      -
      -  // Focus the container
      -
      -  container.trigger('focus');
      -
      -  // Make sure it focuses the search
      -
      -  assert.equal($search.length, 1, 'The search box disappeared');
      -
      -  assert.equal(
      -    document.activeElement,
      -    $search[0],
      -    'The search did not have focus originally'
      -  );
      -});
      \ No newline at end of file
      diff --git a/bower_components/select2/tests/selection/single-tests.js b/bower_components/select2/tests/selection/single-tests.js
      deleted file mode 100644
      index 2731b2a5a1..0000000000
      --- a/bower_components/select2/tests/selection/single-tests.js
      +++ /dev/null
      @@ -1,117 +0,0 @@
      -module('Selection containers - Single');
      -
      -var SingleSelection = require('select2/selection/single');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var options = new Options({});
      -
      -test('display uses templateSelection', function (assert) {
      -  var called = false;
      -
      -  var templateOptions = new Options({
      -    templateSelection: function (data) {
      -      called = true;
      -
      -      return data.text;
      -    }
      -  });
      -
      -  var selection = new SingleSelection(
      -    $('#qunit-fixture .single'),
      -    templateOptions
      -  );
      -
      -  var out = selection.display({
      -    text: 'test'
      -  });
      -
      -  assert.ok(called);
      -
      -  assert.equal(out, 'test');
      -});
      -
      -test('templateSelection can addClass', function (assert) {
      -  var called = false;
      -
      -  var templateOptions = new Options({
      -    templateSelection: function (data, container) {
      -      called = true;
      -      container.addClass('testclass');
      -      return data.text;
      -    }
      -  });
      -
      -  var selection = new SingleSelection(
      -    $('#qunit-fixture .single'),
      -    templateOptions
      -  );
      -
      -  var $container = selection.selectionContainer();
      -  
      -  var out = selection.display({
      -    text: 'test'
      -  }, $container);
      -
      -  assert.ok(called);
      -
      -  assert.equal(out, 'test');
      -  
      -  assert.ok($container.hasClass('testclass'));
      -});
      -
      -test('empty update clears the selection', function (assert) {
      -  var selection = new SingleSelection(
      -    $('#qunit-fixture .single'),
      -    options
      -  );
      -
      -  var $selection = selection.render();
      -  var $rendered = $selection.find('.select2-selection__rendered');
      -
      -  $rendered.text('testing');
      -
      -  selection.update([]);
      -
      -  assert.equal($rendered.text(), '');
      -});
      -
      -test('update renders the data text', function (assert) {
      -  var selection = new SingleSelection(
      -    $('#qunit-fixture .single'),
      -    options
      -  );
      -
      -  var $selection = selection.render();
      -  var $rendered = $selection.find('.select2-selection__rendered');
      -
      -  selection.update([{
      -    text: 'test'
      -  }]);
      -
      -  assert.equal($rendered.text(), 'test');
      -});
      -
      -test('escapeMarkup is being used', function (assert) {
      -  var selection = new SingleSelection(
      -    $('#qunit-fixture .single'),
      -    options
      -  );
      -
      -  var $selection = selection.render();
      -  var $rendered = $selection.find('.select2-selection__rendered');
      -
      -  var unescapedText = '<script>bad("stuff");</script>';
      -
      -  selection.update([{
      -    text: unescapedText
      -  }]);
      -
      -  assert.equal(
      -    $rendered.text(),
      -    unescapedText,
      -    'The text should be escaped by default to prevent injection'
      -  );
      -});
      diff --git a/bower_components/select2/tests/selection/stopPropagation-tests.js b/bower_components/select2/tests/selection/stopPropagation-tests.js
      deleted file mode 100644
      index d8d8897b3c..0000000000
      --- a/bower_components/select2/tests/selection/stopPropagation-tests.js
      +++ /dev/null
      @@ -1,33 +0,0 @@
      -module('Selection containers - Stoping event propagation');
      -
      -var SingleSelection = require('select2/selection/single');
      -var StopPropagation = require('select2/selection/stopPropagation');
      -
      -var $ = require('jquery');
      -var Options = require('select2/options');
      -var Utils = require('select2/utils');
      -
      -var CutomSelection = Utils.Decorate(SingleSelection, StopPropagation);
      -
      -var options = new Options();
      -
      -test('click event does not propagate', function (assert) {
      -  assert.expect(1);
      -
      -  var $container = $('#qunit-fixture .event-container');
      -  var container = new MockContainer();
      -
      -  var selection = new CutomSelection($('#qunit-fixture select'), options);
      -
      -  var $selection = selection.render();
      -  selection.bind(container, $container);
      -
      -  $container.append($selection);
      -  $container.on('click', function () {
      -    assert.ok(false, 'The click event should have been stopped');
      -  });
      -
      -  $selection.trigger('click');
      -
      -  assert.ok(true, 'Something went wrong if this failed');
      -});
      diff --git a/bower_components/select2/tests/unit.html b/bower_components/select2/tests/unit.html
      deleted file mode 100644
      index 384deb2316..0000000000
      --- a/bower_components/select2/tests/unit.html
      +++ /dev/null
      @@ -1,95 +0,0 @@
      -<!doctype html>
      -<html>
      -  <head>
      -    <link rel="stylesheet" href="vendor/qunit-1.23.1.css" type="text/css" />
      -    <link rel="stylesheet" href="../../dist/css/select2.css" type="text/css" />
      -  </head>
      -  <body>
      -    <div id="qunit"></div>
      -    <div id="qunit-fixture">
      -      <div class="event-container">
      -        <select></select>
      -      </div>
      -
      -      <select class="single">
      -        <option>One</option>
      -      </select>
      -
      -      <select class="single-empty"></select>
      -
      -      <select class="single-with-placeholder">
      -        <option>placeholder</option>
      -        <option>One</option>
      -      </select>
      -
      -      <select class="multiple" multiple="multiple">
      -        <option>One</option>
      -        <option>Two</option>
      -      </select>
      -
      -      <select class="groups">
      -        <optgroup label="Test">
      -          <option value="one">One</option>
      -          <option value="two">Two</option>
      -        </optgroup>
      -        <optgroup label="Empty"></optgroup>
      -      </select>
      -
      -      <select class="duplicates">
      -        <option value="one">One</option>
      -        <option value="two">Two</option>
      -        <option value="one">Uno</option>
      -      </select>
      -
      -      <select class="duplicates-multi" multiple="multiple">
      -        <option value="one">One</option>
      -        <option value="two">Two</option>
      -        <option value="one">Uno</option>
      -      </select>
      -    </div>
      -
      -    <script src="vendor/qunit-1.23.1.js" type="text/javascript"></script>
      -    <script src="vendor/jquery-1.7.2.js" type="text/javascript"></script>
      -    <script src="../dist/js/select2.full.js" type="text/javascript"></script>
      -
      -    <script src="helpers.js" type="text/javascript"></script>
      -
      -    <script src="a11y/selection-tests.js" type="text/javascript"></script>
      -    <script src="a11y/search-tests.js" type="text/javascript"></script>
      -
      -    <script src="data/array-tests.js" type="text/javascript"></script>
      -    <script src="data/base-tests.js" type="text/javascript"></script>
      -    <script src="data/inputData-tests.js" type="text/javascript"></script>
      -    <script src="data/select-tests.js" type="text/javascript"></script>
      -    <script src="data/tags-tests.js" type="text/javascript"></script>
      -    <script src="data/tokenizer-tests.js" type="text/javascript"></script>
      -
      -    <script src="data/maximumInputLength-tests.js" type="text/javascript"></script>
      -    <script src="data/maximumSelectionLength-tests.js" type="text/javascript"></script>
      -    <script src="data/minimumInputLength-tests.js" type="text/javascript"></script>
      -
      -    <script src="dropdown/dropdownCss-tests.js" type="text/javascript"></script>
      -    <script src="dropdown/positioning-tests.js" type="text/javascript"></script>
      -    <script src="dropdown/selectOnClose-tests.js" type="text/javascript"></script>
      -    <script src="dropdown/stopPropagation-tests.js" type="text/javascript"></script>
      -
      -    <script src="options/ajax-tests.js" type="text/javascript"></script>
      -    <script src="options/data-tests.js" type="text/javascript"></script>
      -    <script src="options/deprecated-tests.js" type="text/javascript"></script>
      -    <script src="options/translation-tests.js" type="text/javascript"></script>
      -    <script src="options/width-tests.js" type="text/javascript"></script>
      -
      -    <script src="results/focusing-tests.js" type="text/javascript"></script>
      -
      -    <script src="selection/allowClear-tests.js" type="text/javascript"></script>
      -    <script src="selection/containerCss-tests.js" type="text/javascript"></script>
      -    <script src="selection/multiple-tests.js" type="text/javascript"></script>
      -    <script src="selection/placeholder-tests.js" type="text/javascript"></script>
      -    <script src="selection/search-tests.js" type="text/javascript"></script>
      -    <script src="selection/single-tests.js" type="text/javascript"></script>
      -    <script src="selection/stopPropagation-tests.js" type="text/javascript"></script>
      -
      -    <script src="utils/decorator-tests.js" type="text/javascript"></script>
      -    <script src="utils/escapeMarkup-tests.js" type="text/javascript"></script>
      -  </body>
      -</html>
      diff --git a/bower_components/select2/tests/utils/decorator-tests.js b/bower_components/select2/tests/utils/decorator-tests.js
      deleted file mode 100644
      index 4888991f62..0000000000
      --- a/bower_components/select2/tests/utils/decorator-tests.js
      +++ /dev/null
      @@ -1,189 +0,0 @@
      -module('Decorators');
      -
      -var Utils = require('select2/utils');
      -
      -test('overridden - method', function (assert) {
      -  function BaseClass () {}
      -
      -  BaseClass.prototype.hello = function () {
      -    return 'A';
      -  };
      -
      -  function DecoratorClass () {}
      -
      -  DecoratorClass.prototype.hello = function () {
      -    return 'B';
      -  };
      -
      -  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
      -
      -  var inst = new DecoratedClass();
      -
      -  assert.strictEqual(inst.hello(), 'B');
      -});
      -
      -test('overridden - constructor', function (assert) {
      -  function BaseClass () {
      -    this.inherited = true;
      -  }
      -
      -  BaseClass.prototype.hello = function () {
      -    return 'A';
      -  };
      -
      -  function DecoratorClass (decorated) {
      -    this.called = true;
      -  }
      -
      -  DecoratorClass.prototype.other = function () {
      -    return 'B';
      -  };
      -
      -  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
      -
      -  var inst = new DecoratedClass();
      -
      -  assert.ok(inst.called);
      -  assert.ok(!inst.inherited);
      -});
      -
      -test('not overridden - method', function (assert) {
      -  function BaseClass () {}
      -
      -  BaseClass.prototype.hello = function () {
      -    return 'A';
      -  };
      -
      -  function DecoratorClass () {}
      -
      -  DecoratorClass.prototype.other = function () {
      -    return 'B';
      -  };
      -
      -  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
      -
      -  var inst = new DecoratedClass();
      -
      -  assert.strictEqual(inst.hello(), 'A');
      -});
      -
      -test('not overridden - constructor', function (assert) {
      -  function BaseClass () {
      -    this.called = true;
      -  }
      -
      -  BaseClass.prototype.hello = function () {
      -    return 'A';
      -  };
      -
      -  function DecoratorClass () {}
      -
      -  DecoratorClass.prototype.other = function () {
      -    return 'B';
      -  };
      -
      -  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
      -
      -  var inst = new DecoratedClass();
      -
      -  assert.ok(inst.called);
      -});
      -
      -test('inherited - method', function (assert) {
      -  function BaseClass () {}
      -
      -  BaseClass.prototype.hello = function () {
      -    return 'A';
      -  };
      -
      -  function DecoratorClass (decorated) {}
      -
      -  DecoratorClass.prototype.hello = function (decorated) {
      -    return 'B' + decorated.call(this) + 'C';
      -  };
      -
      -  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
      -
      -  var inst = new DecoratedClass();
      -
      -  assert.strictEqual(inst.hello(), 'BAC');
      -});
      -
      -test('inherited - constructor', function (assert) {
      -  function BaseClass () {
      -    this.inherited = true;
      -  }
      -
      -  BaseClass.prototype.hello = function () {
      -    return 'A';
      -  };
      -
      -  function DecoratorClass (decorated) {
      -    this.called = true;
      -
      -    decorated.call(this);
      -  }
      -
      -  DecoratorClass.prototype.other = function () {
      -    return 'B';
      -  };
      -
      -  var DecoratedClass = Utils.Decorate(BaseClass, DecoratorClass);
      -
      -  var inst = new DecoratedClass();
      -
      -  assert.ok(inst.called);
      -  assert.ok(inst.inherited);
      -});
      -
      -test('inherited - three levels', function (assert) {
      -  function BaseClass (testArgument) {
      -    this.baseCalled = true;
      -    this.baseTestArgument = testArgument;
      -  }
      -
      -  BaseClass.prototype.test = function (a) {
      -    return a + 'c';
      -  };
      -
      -  function MiddleClass (decorated, testArgument) {
      -    this.middleCalled = true;
      -    this.middleTestArgument = testArgument;
      -
      -    decorated.call(this, testArgument);
      -  }
      -
      -  MiddleClass.prototype.test = function (decorated, a) {
      -    return decorated.call(this, a + 'b');
      -  };
      -
      -  function DecoratorClass (decorated, testArgument) {
      -    this.decoratorCalled = true;
      -    this.decoratorTestArgument = testArgument;
      -
      -    decorated.call(this, testArgument);
      -  }
      -
      -  DecoratorClass.prototype.test = function (decorated, a) {
      -    return decorated.call(this, a + 'a');
      -  };
      -
      -  var DecoratedClass = Utils.Decorate(
      -    Utils.Decorate(BaseClass, MiddleClass),
      -    DecoratorClass
      -  );
      -
      -  var inst = new DecoratedClass('test');
      -
      -  assert.ok(inst.baseCalled, 'The base class contructor was called');
      -  assert.ok(inst.middleCalled, 'The middle class constructor was called');
      -  assert.ok(inst.decoratorCalled, 'The decorator constructor was called');
      -
      -  assert.strictEqual(inst.baseTestArgument, 'test');
      -  assert.strictEqual(inst.middleTestArgument, 'test');
      -  assert.strictEqual(inst.decoratorTestArgument, 'test');
      -
      -  var out = inst.test('test');
      -
      -  assert.strictEqual(out, 'testabc');
      -});
      diff --git a/bower_components/select2/tests/utils/escapeMarkup-tests.js b/bower_components/select2/tests/utils/escapeMarkup-tests.js
      deleted file mode 100644
      index 726f09dee0..0000000000
      --- a/bower_components/select2/tests/utils/escapeMarkup-tests.js
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -module('Utils - escapeMarkup');
      -
      -var Utils = require('select2/utils');
      -
      -test('text passes through', function (assert) {
      -  var text = 'testing this';
      -  var escaped = Utils.escapeMarkup(text);
      -
      -  assert.equal(text, escaped);
      -});
      -
      -test('html tags are escaped', function (assert) {
      -  var text = '<script>alert("bad");</script>';
      -  var escaped = Utils.escapeMarkup(text);
      -
      -  assert.notEqual(text, escaped);
      -  assert.equal(escaped.indexOf('<script>'), -1);
      -});
      -
      -test('quotes are killed as well', function (assert) {
      -  var text = 'testin\' these "quotes"';
      -  var escaped = Utils.escapeMarkup(text);
      -
      -  assert.notEqual(text, escaped);
      -  assert.equal(escaped.indexOf('\''), -1);
      -  assert.equal(escaped.indexOf('"'), -1);
      -});
      -
      -test('DocumentFragment options pass through', function (assert) {
      -  var frag = document.createDocumentFragment();
      -  frag.innerHTML = '<strong>test</strong>';
      -
      -  var escaped = Utils.escapeMarkup(frag);
      -
      -  assert.equal(frag, escaped);
      -});
      diff --git a/bower_components/select2/tests/vendor/jquery-1.7.2.js b/bower_components/select2/tests/vendor/jquery-1.7.2.js
      deleted file mode 100644
      index ceb681ff9f..0000000000
      --- a/bower_components/select2/tests/vendor/jquery-1.7.2.js
      +++ /dev/null
      @@ -1,9404 +0,0 @@
      -/*!
      - * jQuery JavaScript Library v1.7.2
      - * http://jquery.com/
      - *
      - * Copyright 2011, John Resig
      - * Dual licensed under the MIT or GPL Version 2 licenses.
      - * http://jquery.org/license
      - *
      - * Includes Sizzle.js
      - * http://sizzlejs.com/
      - * Copyright 2011, The Dojo Foundation
      - * Released under the MIT, BSD, and GPL Licenses.
      - *
      - * Date: Wed Mar 21 12:46:34 2012 -0700
      - */
      -(function( window, undefined ) {
      -
      -// Use the correct document accordingly with window argument (sandbox)
      -var document = window.document,
      -	navigator = window.navigator,
      -	location = window.location;
      -var jQuery = (function() {
      -
      -// Define a local copy of jQuery
      -var jQuery = function( selector, context ) {
      -		// The jQuery object is actually just the init constructor 'enhanced'
      -		return new jQuery.fn.init( selector, context, rootjQuery );
      -	},
      -
      -	// Map over jQuery in case of overwrite
      -	_jQuery = window.jQuery,
      -
      -	// Map over the $ in case of overwrite
      -	_$ = window.$,
      -
      -	// A central reference to the root jQuery(document)
      -	rootjQuery,
      -
      -	// A simple way to check for HTML strings or ID strings
      -	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
      -	quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
      -
      -	// Check if a string has a non-whitespace character in it
      -	rnotwhite = /\S/,
      -
      -	// Used for trimming whitespace
      -	trimLeft = /^\s+/,
      -	trimRight = /\s+$/,
      -
      -	// Match a standalone tag
      -	rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
      -
      -	// JSON RegExp
      -	rvalidchars = /^[\],:{}\s]*$/,
      -	rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
      -	rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
      -	rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
      -
      -	// Useragent RegExp
      -	rwebkit = /(webkit)[ \/]([\w.]+)/,
      -	ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
      -	rmsie = /(msie) ([\w.]+)/,
      -	rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
      -
      -	// Matches dashed string for camelizing
      -	rdashAlpha = /-([a-z]|[0-9])/ig,
      -	rmsPrefix = /^-ms-/,
      -
      -	// Used by jQuery.camelCase as callback to replace()
      -	fcamelCase = function( all, letter ) {
      -		return ( letter + "" ).toUpperCase();
      -	},
      -
      -	// Keep a UserAgent string for use with jQuery.browser
      -	userAgent = navigator.userAgent,
      -
      -	// For matching the engine and version of the browser
      -	browserMatch,
      -
      -	// The deferred used on DOM ready
      -	readyList,
      -
      -	// The ready event handler
      -	DOMContentLoaded,
      -
      -	// Save a reference to some core methods
      -	toString = Object.prototype.toString,
      -	hasOwn = Object.prototype.hasOwnProperty,
      -	push = Array.prototype.push,
      -	slice = Array.prototype.slice,
      -	trim = String.prototype.trim,
      -	indexOf = Array.prototype.indexOf,
      -
      -	// [[Class]] -> type pairs
      -	class2type = {};
      -
      -jQuery.fn = jQuery.prototype = {
      -	constructor: jQuery,
      -	init: function( selector, context, rootjQuery ) {
      -		var match, elem, ret, doc;
      -
      -		// Handle $(""), $(null), or $(undefined)
      -		if ( !selector ) {
      -			return this;
      -		}
      -
      -		// Handle $(DOMElement)
      -		if ( selector.nodeType ) {
      -			this.context = this[0] = selector;
      -			this.length = 1;
      -			return this;
      -		}
      -
      -		// The body element only exists once, optimize finding it
      -		if ( selector === "body" && !context && document.body ) {
      -			this.context = document;
      -			this[0] = document.body;
      -			this.selector = selector;
      -			this.length = 1;
      -			return this;
      -		}
      -
      -		// Handle HTML strings
      -		if ( typeof selector === "string" ) {
      -			// Are we dealing with HTML string or an ID?
      -			if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
      -				// Assume that strings that start and end with <> are HTML and skip the regex check
      -				match = [ null, selector, null ];
      -
      -			} else {
      -				match = quickExpr.exec( selector );
      -			}
      -
      -			// Verify a match, and that no context was specified for #id
      -			if ( match && (match[1] || !context) ) {
      -
      -				// HANDLE: $(html) -> $(array)
      -				if ( match[1] ) {
      -					context = context instanceof jQuery ? context[0] : context;
      -					doc = ( context ? context.ownerDocument || context : document );
      -
      -					// If a single string is passed in and it's a single tag
      -					// just do a createElement and skip the rest
      -					ret = rsingleTag.exec( selector );
      -
      -					if ( ret ) {
      -						if ( jQuery.isPlainObject( context ) ) {
      -							selector = [ document.createElement( ret[1] ) ];
      -							jQuery.fn.attr.call( selector, context, true );
      -
      -						} else {
      -							selector = [ doc.createElement( ret[1] ) ];
      -						}
      -
      -					} else {
      -						ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
      -						selector = ( ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment ).childNodes;
      -					}
      -
      -					return jQuery.merge( this, selector );
      -
      -				// HANDLE: $("#id")
      -				} else {
      -					elem = document.getElementById( match[2] );
      -
      -					// Check parentNode to catch when Blackberry 4.6 returns
      -					// nodes that are no longer in the document #6963
      -					if ( elem && elem.parentNode ) {
      -						// Handle the case where IE and Opera return items
      -						// by name instead of ID
      -						if ( elem.id !== match[2] ) {
      -							return rootjQuery.find( selector );
      -						}
      -
      -						// Otherwise, we inject the element directly into the jQuery object
      -						this.length = 1;
      -						this[0] = elem;
      -					}
      -
      -					this.context = document;
      -					this.selector = selector;
      -					return this;
      -				}
      -
      -			// HANDLE: $(expr, $(...))
      -			} else if ( !context || context.jquery ) {
      -				return ( context || rootjQuery ).find( selector );
      -
      -			// HANDLE: $(expr, context)
      -			// (which is just equivalent to: $(context).find(expr)
      -			} else {
      -				return this.constructor( context ).find( selector );
      -			}
      -
      -		// HANDLE: $(function)
      -		// Shortcut for document ready
      -		} else if ( jQuery.isFunction( selector ) ) {
      -			return rootjQuery.ready( selector );
      -		}
      -
      -		if ( selector.selector !== undefined ) {
      -			this.selector = selector.selector;
      -			this.context = selector.context;
      -		}
      -
      -		return jQuery.makeArray( selector, this );
      -	},
      -
      -	// Start with an empty selector
      -	selector: "",
      -
      -	// The current version of jQuery being used
      -	jquery: "1.7.2",
      -
      -	// The default length of a jQuery object is 0
      -	length: 0,
      -
      -	// The number of elements contained in the matched element set
      -	size: function() {
      -		return this.length;
      -	},
      -
      -	toArray: function() {
      -		return slice.call( this, 0 );
      -	},
      -
      -	// Get the Nth element in the matched element set OR
      -	// Get the whole matched element set as a clean array
      -	get: function( num ) {
      -		return num == null ?
      -
      -			// Return a 'clean' array
      -			this.toArray() :
      -
      -			// Return just the object
      -			( num < 0 ? this[ this.length + num ] : this[ num ] );
      -	},
      -
      -	// Take an array of elements and push it onto the stack
      -	// (returning the new matched element set)
      -	pushStack: function( elems, name, selector ) {
      -		// Build a new jQuery matched element set
      -		var ret = this.constructor();
      -
      -		if ( jQuery.isArray( elems ) ) {
      -			push.apply( ret, elems );
      -
      -		} else {
      -			jQuery.merge( ret, elems );
      -		}
      -
      -		// Add the old object onto the stack (as a reference)
      -		ret.prevObject = this;
      -
      -		ret.context = this.context;
      -
      -		if ( name === "find" ) {
      -			ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;
      -		} else if ( name ) {
      -			ret.selector = this.selector + "." + name + "(" + selector + ")";
      -		}
      -
      -		// Return the newly-formed element set
      -		return ret;
      -	},
      -
      -	// Execute a callback for every element in the matched set.
      -	// (You can seed the arguments with an array of args, but this is
      -	// only used internally.)
      -	each: function( callback, args ) {
      -		return jQuery.each( this, callback, args );
      -	},
      -
      -	ready: function( fn ) {
      -		// Attach the listeners
      -		jQuery.bindReady();
      -
      -		// Add the callback
      -		readyList.add( fn );
      -
      -		return this;
      -	},
      -
      -	eq: function( i ) {
      -		i = +i;
      -		return i === -1 ?
      -			this.slice( i ) :
      -			this.slice( i, i + 1 );
      -	},
      -
      -	first: function() {
      -		return this.eq( 0 );
      -	},
      -
      -	last: function() {
      -		return this.eq( -1 );
      -	},
      -
      -	slice: function() {
      -		return this.pushStack( slice.apply( this, arguments ),
      -			"slice", slice.call(arguments).join(",") );
      -	},
      -
      -	map: function( callback ) {
      -		return this.pushStack( jQuery.map(this, function( elem, i ) {
      -			return callback.call( elem, i, elem );
      -		}));
      -	},
      -
      -	end: function() {
      -		return this.prevObject || this.constructor(null);
      -	},
      -
      -	// For internal use only.
      -	// Behaves like an Array's method, not like a jQuery method.
      -	push: push,
      -	sort: [].sort,
      -	splice: [].splice
      -};
      -
      -// Give the init function the jQuery prototype for later instantiation
      -jQuery.fn.init.prototype = jQuery.fn;
      -
      -jQuery.extend = jQuery.fn.extend = function() {
      -	var options, name, src, copy, copyIsArray, clone,
      -		target = arguments[0] || {},
      -		i = 1,
      -		length = arguments.length,
      -		deep = false;
      -
      -	// Handle a deep copy situation
      -	if ( typeof target === "boolean" ) {
      -		deep = target;
      -		target = arguments[1] || {};
      -		// skip the boolean and the target
      -		i = 2;
      -	}
      -
      -	// Handle case when target is a string or something (possible in deep copy)
      -	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
      -		target = {};
      -	}
      -
      -	// extend jQuery itself if only one argument is passed
      -	if ( length === i ) {
      -		target = this;
      -		--i;
      -	}
      -
      -	for ( ; i < length; i++ ) {
      -		// Only deal with non-null/undefined values
      -		if ( (options = arguments[ i ]) != null ) {
      -			// Extend the base object
      -			for ( name in options ) {
      -				src = target[ name ];
      -				copy = options[ name ];
      -
      -				// Prevent never-ending loop
      -				if ( target === copy ) {
      -					continue;
      -				}
      -
      -				// Recurse if we're merging plain objects or arrays
      -				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
      -					if ( copyIsArray ) {
      -						copyIsArray = false;
      -						clone = src && jQuery.isArray(src) ? src : [];
      -
      -					} else {
      -						clone = src && jQuery.isPlainObject(src) ? src : {};
      -					}
      -
      -					// Never move original objects, clone them
      -					target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -				// Don't bring in undefined values
      -				} else if ( copy !== undefined ) {
      -					target[ name ] = copy;
      -				}
      -			}
      -		}
      -	}
      -
      -	// Return the modified object
      -	return target;
      -};
      -
      -jQuery.extend({
      -	noConflict: function( deep ) {
      -		if ( window.$ === jQuery ) {
      -			window.$ = _$;
      -		}
      -
      -		if ( deep && window.jQuery === jQuery ) {
      -			window.jQuery = _jQuery;
      -		}
      -
      -		return jQuery;
      -	},
      -
      -	// Is the DOM ready to be used? Set to true once it occurs.
      -	isReady: false,
      -
      -	// A counter to track how many items to wait for before
      -	// the ready event fires. See #6781
      -	readyWait: 1,
      -
      -	// Hold (or release) the ready event
      -	holdReady: function( hold ) {
      -		if ( hold ) {
      -			jQuery.readyWait++;
      -		} else {
      -			jQuery.ready( true );
      -		}
      -	},
      -
      -	// Handle when the DOM is ready
      -	ready: function( wait ) {
      -		// Either a released hold or an DOMready/load event and not yet ready
      -		if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
      -			// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
      -			if ( !document.body ) {
      -				return setTimeout( jQuery.ready, 1 );
      -			}
      -
      -			// Remember that the DOM is ready
      -			jQuery.isReady = true;
      -
      -			// If a normal DOM Ready event fired, decrement, and wait if need be
      -			if ( wait !== true && --jQuery.readyWait > 0 ) {
      -				return;
      -			}
      -
      -			// If there are functions bound, to execute
      -			readyList.fireWith( document, [ jQuery ] );
      -
      -			// Trigger any bound ready events
      -			if ( jQuery.fn.trigger ) {
      -				jQuery( document ).trigger( "ready" ).off( "ready" );
      -			}
      -		}
      -	},
      -
      -	bindReady: function() {
      -		if ( readyList ) {
      -			return;
      -		}
      -
      -		readyList = jQuery.Callbacks( "once memory" );
      -
      -		// Catch cases where $(document).ready() is called after the
      -		// browser event has already occurred.
      -		if ( document.readyState === "complete" ) {
      -			// Handle it asynchronously to allow scripts the opportunity to delay ready
      -			return setTimeout( jQuery.ready, 1 );
      -		}
      -
      -		// Mozilla, Opera and webkit nightlies currently support this event
      -		if ( document.addEventListener ) {
      -			// Use the handy event callback
      -			document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
      -
      -			// A fallback to window.onload, that will always work
      -			window.addEventListener( "load", jQuery.ready, false );
      -
      -		// If IE event model is used
      -		} else if ( document.attachEvent ) {
      -			// ensure firing before onload,
      -			// maybe late but safe also for iframes
      -			document.attachEvent( "onreadystatechange", DOMContentLoaded );
      -
      -			// A fallback to window.onload, that will always work
      -			window.attachEvent( "onload", jQuery.ready );
      -
      -			// If IE and not a frame
      -			// continually check to see if the document is ready
      -			var toplevel = false;
      -
      -			try {
      -				toplevel = window.frameElement == null;
      -			} catch(e) {}
      -
      -			if ( document.documentElement.doScroll && toplevel ) {
      -				doScrollCheck();
      -			}
      -		}
      -	},
      -
      -	// See test/unit/core.js for details concerning isFunction.
      -	// Since version 1.3, DOM methods and functions like alert
      -	// aren't supported. They return false on IE (#2968).
      -	isFunction: function( obj ) {
      -		return jQuery.type(obj) === "function";
      -	},
      -
      -	isArray: Array.isArray || function( obj ) {
      -		return jQuery.type(obj) === "array";
      -	},
      -
      -	isWindow: function( obj ) {
      -		return obj != null && obj == obj.window;
      -	},
      -
      -	isNumeric: function( obj ) {
      -		return !isNaN( parseFloat(obj) ) && isFinite( obj );
      -	},
      -
      -	type: function( obj ) {
      -		return obj == null ?
      -			String( obj ) :
      -			class2type[ toString.call(obj) ] || "object";
      -	},
      -
      -	isPlainObject: function( obj ) {
      -		// Must be an Object.
      -		// Because of IE, we also have to check the presence of the constructor property.
      -		// Make sure that DOM nodes and window objects don't pass through, as well
      -		if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
      -			return false;
      -		}
      -
      -		try {
      -			// Not own constructor property must be Object
      -			if ( obj.constructor &&
      -				!hasOwn.call(obj, "constructor") &&
      -				!hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
      -				return false;
      -			}
      -		} catch ( e ) {
      -			// IE8,9 Will throw exceptions on certain host objects #9897
      -			return false;
      -		}
      -
      -		// Own properties are enumerated firstly, so to speed up,
      -		// if last one is own, then all properties are own.
      -
      -		var key;
      -		for ( key in obj ) {}
      -
      -		return key === undefined || hasOwn.call( obj, key );
      -	},
      -
      -	isEmptyObject: function( obj ) {
      -		for ( var name in obj ) {
      -			return false;
      -		}
      -		return true;
      -	},
      -
      -	error: function( msg ) {
      -		throw new Error( msg );
      -	},
      -
      -	parseJSON: function( data ) {
      -		if ( typeof data !== "string" || !data ) {
      -			return null;
      -		}
      -
      -		// Make sure leading/trailing whitespace is removed (IE can't handle it)
      -		data = jQuery.trim( data );
      -
      -		// Attempt to parse using the native JSON parser first
      -		if ( window.JSON && window.JSON.parse ) {
      -			return window.JSON.parse( data );
      -		}
      -
      -		// Make sure the incoming data is actual JSON
      -		// Logic borrowed from http://json.org/json2.js
      -		if ( rvalidchars.test( data.replace( rvalidescape, "@" )
      -			.replace( rvalidtokens, "]" )
      -			.replace( rvalidbraces, "")) ) {
      -
      -			return ( new Function( "return " + data ) )();
      -
      -		}
      -		jQuery.error( "Invalid JSON: " + data );
      -	},
      -
      -	// Cross-browser xml parsing
      -	parseXML: function( data ) {
      -		if ( typeof data !== "string" || !data ) {
      -			return null;
      -		}
      -		var xml, tmp;
      -		try {
      -			if ( window.DOMParser ) { // Standard
      -				tmp = new DOMParser();
      -				xml = tmp.parseFromString( data , "text/xml" );
      -			} else { // IE
      -				xml = new ActiveXObject( "Microsoft.XMLDOM" );
      -				xml.async = "false";
      -				xml.loadXML( data );
      -			}
      -		} catch( e ) {
      -			xml = undefined;
      -		}
      -		if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
      -			jQuery.error( "Invalid XML: " + data );
      -		}
      -		return xml;
      -	},
      -
      -	noop: function() {},
      -
      -	// Evaluates a script in a global context
      -	// Workarounds based on findings by Jim Driscoll
      -	// http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
      -	globalEval: function( data ) {
      -		if ( data && rnotwhite.test( data ) ) {
      -			// We use execScript on Internet Explorer
      -			// We use an anonymous function so that context is window
      -			// rather than jQuery in Firefox
      -			( window.execScript || function( data ) {
      -				window[ "eval" ].call( window, data );
      -			} )( data );
      -		}
      -	},
      -
      -	// Convert dashed to camelCase; used by the css and data modules
      -	// Microsoft forgot to hump their vendor prefix (#9572)
      -	camelCase: function( string ) {
      -		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -	},
      -
      -	nodeName: function( elem, name ) {
      -		return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
      -	},
      -
      -	// args is for internal usage only
      -	each: function( object, callback, args ) {
      -		var name, i = 0,
      -			length = object.length,
      -			isObj = length === undefined || jQuery.isFunction( object );
      -
      -		if ( args ) {
      -			if ( isObj ) {
      -				for ( name in object ) {
      -					if ( callback.apply( object[ name ], args ) === false ) {
      -						break;
      -					}
      -				}
      -			} else {
      -				for ( ; i < length; ) {
      -					if ( callback.apply( object[ i++ ], args ) === false ) {
      -						break;
      -					}
      -				}
      -			}
      -
      -		// A special, fast, case for the most common use of each
      -		} else {
      -			if ( isObj ) {
      -				for ( name in object ) {
      -					if ( callback.call( object[ name ], name, object[ name ] ) === false ) {
      -						break;
      -					}
      -				}
      -			} else {
      -				for ( ; i < length; ) {
      -					if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
      -						break;
      -					}
      -				}
      -			}
      -		}
      -
      -		return object;
      -	},
      -
      -	// Use native String.trim function wherever possible
      -	trim: trim ?
      -		function( text ) {
      -			return text == null ?
      -				"" :
      -				trim.call( text );
      -		} :
      -
      -		// Otherwise use our own trimming functionality
      -		function( text ) {
      -			return text == null ?
      -				"" :
      -				text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
      -		},
      -
      -	// results is for internal usage only
      -	makeArray: function( array, results ) {
      -		var ret = results || [];
      -
      -		if ( array != null ) {
      -			// The window, strings (and functions) also have 'length'
      -			// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
      -			var type = jQuery.type( array );
      -
      -			if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
      -				push.call( ret, array );
      -			} else {
      -				jQuery.merge( ret, array );
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	inArray: function( elem, array, i ) {
      -		var len;
      -
      -		if ( array ) {
      -			if ( indexOf ) {
      -				return indexOf.call( array, elem, i );
      -			}
      -
      -			len = array.length;
      -			i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
      -
      -			for ( ; i < len; i++ ) {
      -				// Skip accessing in sparse arrays
      -				if ( i in array && array[ i ] === elem ) {
      -					return i;
      -				}
      -			}
      -		}
      -
      -		return -1;
      -	},
      -
      -	merge: function( first, second ) {
      -		var i = first.length,
      -			j = 0;
      -
      -		if ( typeof second.length === "number" ) {
      -			for ( var l = second.length; j < l; j++ ) {
      -				first[ i++ ] = second[ j ];
      -			}
      -
      -		} else {
      -			while ( second[j] !== undefined ) {
      -				first[ i++ ] = second[ j++ ];
      -			}
      -		}
      -
      -		first.length = i;
      -
      -		return first;
      -	},
      -
      -	grep: function( elems, callback, inv ) {
      -		var ret = [], retVal;
      -		inv = !!inv;
      -
      -		// Go through the array, only saving the items
      -		// that pass the validator function
      -		for ( var i = 0, length = elems.length; i < length; i++ ) {
      -			retVal = !!callback( elems[ i ], i );
      -			if ( inv !== retVal ) {
      -				ret.push( elems[ i ] );
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	// arg is for internal usage only
      -	map: function( elems, callback, arg ) {
      -		var value, key, ret = [],
      -			i = 0,
      -			length = elems.length,
      -			// jquery objects are treated as arrays
      -			isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
      -
      -		// Go through the array, translating each of the items to their
      -		if ( isArray ) {
      -			for ( ; i < length; i++ ) {
      -				value = callback( elems[ i ], i, arg );
      -
      -				if ( value != null ) {
      -					ret[ ret.length ] = value;
      -				}
      -			}
      -
      -		// Go through every key on the object,
      -		} else {
      -			for ( key in elems ) {
      -				value = callback( elems[ key ], key, arg );
      -
      -				if ( value != null ) {
      -					ret[ ret.length ] = value;
      -				}
      -			}
      -		}
      -
      -		// Flatten any nested arrays
      -		return ret.concat.apply( [], ret );
      -	},
      -
      -	// A global GUID counter for objects
      -	guid: 1,
      -
      -	// Bind a function to a context, optionally partially applying any
      -	// arguments.
      -	proxy: function( fn, context ) {
      -		if ( typeof context === "string" ) {
      -			var tmp = fn[ context ];
      -			context = fn;
      -			fn = tmp;
      -		}
      -
      -		// Quick check to determine if target is callable, in the spec
      -		// this throws a TypeError, but we will just return undefined.
      -		if ( !jQuery.isFunction( fn ) ) {
      -			return undefined;
      -		}
      -
      -		// Simulated bind
      -		var args = slice.call( arguments, 2 ),
      -			proxy = function() {
      -				return fn.apply( context, args.concat( slice.call( arguments ) ) );
      -			};
      -
      -		// Set the guid of unique handler to the same of original handler, so it can be removed
      -		proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
      -
      -		return proxy;
      -	},
      -
      -	// Mutifunctional method to get and set values to a collection
      -	// The value/s can optionally be executed if it's a function
      -	access: function( elems, fn, key, value, chainable, emptyGet, pass ) {
      -		var exec,
      -			bulk = key == null,
      -			i = 0,
      -			length = elems.length;
      -
      -		// Sets many values
      -		if ( key && typeof key === "object" ) {
      -			for ( i in key ) {
      -				jQuery.access( elems, fn, i, key[i], 1, emptyGet, value );
      -			}
      -			chainable = 1;
      -
      -		// Sets one value
      -		} else if ( value !== undefined ) {
      -			// Optionally, function values get executed if exec is true
      -			exec = pass === undefined && jQuery.isFunction( value );
      -
      -			if ( bulk ) {
      -				// Bulk operations only iterate when executing function values
      -				if ( exec ) {
      -					exec = fn;
      -					fn = function( elem, key, value ) {
      -						return exec.call( jQuery( elem ), value );
      -					};
      -
      -				// Otherwise they run against the entire set
      -				} else {
      -					fn.call( elems, value );
      -					fn = null;
      -				}
      -			}
      -
      -			if ( fn ) {
      -				for (; i < length; i++ ) {
      -					fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
      -				}
      -			}
      -
      -			chainable = 1;
      -		}
      -
      -		return chainable ?
      -			elems :
      -
      -			// Gets
      -			bulk ?
      -				fn.call( elems ) :
      -				length ? fn( elems[0], key ) : emptyGet;
      -	},
      -
      -	now: function() {
      -		return ( new Date() ).getTime();
      -	},
      -
      -	// Use of jQuery.browser is frowned upon.
      -	// More details: http://docs.jquery.com/Utilities/jQuery.browser
      -	uaMatch: function( ua ) {
      -		ua = ua.toLowerCase();
      -
      -		var match = rwebkit.exec( ua ) ||
      -			ropera.exec( ua ) ||
      -			rmsie.exec( ua ) ||
      -			ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
      -			[];
      -
      -		return { browser: match[1] || "", version: match[2] || "0" };
      -	},
      -
      -	sub: function() {
      -		function jQuerySub( selector, context ) {
      -			return new jQuerySub.fn.init( selector, context );
      -		}
      -		jQuery.extend( true, jQuerySub, this );
      -		jQuerySub.superclass = this;
      -		jQuerySub.fn = jQuerySub.prototype = this();
      -		jQuerySub.fn.constructor = jQuerySub;
      -		jQuerySub.sub = this.sub;
      -		jQuerySub.fn.init = function init( selector, context ) {
      -			if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
      -				context = jQuerySub( context );
      -			}
      -
      -			return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
      -		};
      -		jQuerySub.fn.init.prototype = jQuerySub.fn;
      -		var rootjQuerySub = jQuerySub(document);
      -		return jQuerySub;
      -	},
      -
      -	browser: {}
      -});
      -
      -// Populate the class2type map
      -jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
      -	class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -});
      -
      -browserMatch = jQuery.uaMatch( userAgent );
      -if ( browserMatch.browser ) {
      -	jQuery.browser[ browserMatch.browser ] = true;
      -	jQuery.browser.version = browserMatch.version;
      -}
      -
      -// Deprecated, use jQuery.browser.webkit instead
      -if ( jQuery.browser.webkit ) {
      -	jQuery.browser.safari = true;
      -}
      -
      -// IE doesn't match non-breaking spaces with \s
      -if ( rnotwhite.test( "\xA0" ) ) {
      -	trimLeft = /^[\s\xA0]+/;
      -	trimRight = /[\s\xA0]+$/;
      -}
      -
      -// All jQuery objects should point back to these
      -rootjQuery = jQuery(document);
      -
      -// Cleanup functions for the document ready method
      -if ( document.addEventListener ) {
      -	DOMContentLoaded = function() {
      -		document.removeEventListener( "DOMContentLoaded", DOMContentLoaded, false );
      -		jQuery.ready();
      -	};
      -
      -} else if ( document.attachEvent ) {
      -	DOMContentLoaded = function() {
      -		// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
      -		if ( document.readyState === "complete" ) {
      -			document.detachEvent( "onreadystatechange", DOMContentLoaded );
      -			jQuery.ready();
      -		}
      -	};
      -}
      -
      -// The DOM ready check for Internet Explorer
      -function doScrollCheck() {
      -	if ( jQuery.isReady ) {
      -		return;
      -	}
      -
      -	try {
      -		// If IE is used, use the trick by Diego Perini
      -		// http://javascript.nwbox.com/IEContentLoaded/
      -		document.documentElement.doScroll("left");
      -	} catch(e) {
      -		setTimeout( doScrollCheck, 1 );
      -		return;
      -	}
      -
      -	// and execute any waiting functions
      -	jQuery.ready();
      -}
      -
      -return jQuery;
      -
      -})();
      -
      -
      -// String to Object flags format cache
      -var flagsCache = {};
      -
      -// Convert String-formatted flags into Object-formatted ones and store in cache
      -function createFlags( flags ) {
      -	var object = flagsCache[ flags ] = {},
      -		i, length;
      -	flags = flags.split( /\s+/ );
      -	for ( i = 0, length = flags.length; i < length; i++ ) {
      -		object[ flags[i] ] = true;
      -	}
      -	return object;
      -}
      -
      -/*
      - * Create a callback list using the following parameters:
      - *
      - *	flags:	an optional list of space-separated flags that will change how
      - *			the callback list behaves
      - *
      - * By default a callback list will act like an event callback list and can be
      - * "fired" multiple times.
      - *
      - * Possible flags:
      - *
      - *	once:			will ensure the callback list can only be fired once (like a Deferred)
      - *
      - *	memory:			will keep track of previous values and will call any callback added
      - *					after the list has been fired right away with the latest "memorized"
      - *					values (like a Deferred)
      - *
      - *	unique:			will ensure a callback can only be added once (no duplicate in the list)
      - *
      - *	stopOnFalse:	interrupt callings when a callback returns false
      - *
      - */
      -jQuery.Callbacks = function( flags ) {
      -
      -	// Convert flags from String-formatted to Object-formatted
      -	// (we check in cache first)
      -	flags = flags ? ( flagsCache[ flags ] || createFlags( flags ) ) : {};
      -
      -	var // Actual callback list
      -		list = [],
      -		// Stack of fire calls for repeatable lists
      -		stack = [],
      -		// Last fire value (for non-forgettable lists)
      -		memory,
      -		// Flag to know if list was already fired
      -		fired,
      -		// Flag to know if list is currently firing
      -		firing,
      -		// First callback to fire (used internally by add and fireWith)
      -		firingStart,
      -		// End of the loop when firing
      -		firingLength,
      -		// Index of currently firing callback (modified by remove if needed)
      -		firingIndex,
      -		// Add one or several callbacks to the list
      -		add = function( args ) {
      -			var i,
      -				length,
      -				elem,
      -				type,
      -				actual;
      -			for ( i = 0, length = args.length; i < length; i++ ) {
      -				elem = args[ i ];
      -				type = jQuery.type( elem );
      -				if ( type === "array" ) {
      -					// Inspect recursively
      -					add( elem );
      -				} else if ( type === "function" ) {
      -					// Add if not in unique mode and callback is not in
      -					if ( !flags.unique || !self.has( elem ) ) {
      -						list.push( elem );
      -					}
      -				}
      -			}
      -		},
      -		// Fire callbacks
      -		fire = function( context, args ) {
      -			args = args || [];
      -			memory = !flags.memory || [ context, args ];
      -			fired = true;
      -			firing = true;
      -			firingIndex = firingStart || 0;
      -			firingStart = 0;
      -			firingLength = list.length;
      -			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
      -				if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) {
      -					memory = true; // Mark as halted
      -					break;
      -				}
      -			}
      -			firing = false;
      -			if ( list ) {
      -				if ( !flags.once ) {
      -					if ( stack && stack.length ) {
      -						memory = stack.shift();
      -						self.fireWith( memory[ 0 ], memory[ 1 ] );
      -					}
      -				} else if ( memory === true ) {
      -					self.disable();
      -				} else {
      -					list = [];
      -				}
      -			}
      -		},
      -		// Actual Callbacks object
      -		self = {
      -			// Add a callback or a collection of callbacks to the list
      -			add: function() {
      -				if ( list ) {
      -					var length = list.length;
      -					add( arguments );
      -					// Do we need to add the callbacks to the
      -					// current firing batch?
      -					if ( firing ) {
      -						firingLength = list.length;
      -					// With memory, if we're not firing then
      -					// we should call right away, unless previous
      -					// firing was halted (stopOnFalse)
      -					} else if ( memory && memory !== true ) {
      -						firingStart = length;
      -						fire( memory[ 0 ], memory[ 1 ] );
      -					}
      -				}
      -				return this;
      -			},
      -			// Remove a callback from the list
      -			remove: function() {
      -				if ( list ) {
      -					var args = arguments,
      -						argIndex = 0,
      -						argLength = args.length;
      -					for ( ; argIndex < argLength ; argIndex++ ) {
      -						for ( var i = 0; i < list.length; i++ ) {
      -							if ( args[ argIndex ] === list[ i ] ) {
      -								// Handle firingIndex and firingLength
      -								if ( firing ) {
      -									if ( i <= firingLength ) {
      -										firingLength--;
      -										if ( i <= firingIndex ) {
      -											firingIndex--;
      -										}
      -									}
      -								}
      -								// Remove the element
      -								list.splice( i--, 1 );
      -								// If we have some unicity property then
      -								// we only need to do this once
      -								if ( flags.unique ) {
      -									break;
      -								}
      -							}
      -						}
      -					}
      -				}
      -				return this;
      -			},
      -			// Control if a given callback is in the list
      -			has: function( fn ) {
      -				if ( list ) {
      -					var i = 0,
      -						length = list.length;
      -					for ( ; i < length; i++ ) {
      -						if ( fn === list[ i ] ) {
      -							return true;
      -						}
      -					}
      -				}
      -				return false;
      -			},
      -			// Remove all callbacks from the list
      -			empty: function() {
      -				list = [];
      -				return this;
      -			},
      -			// Have the list do nothing anymore
      -			disable: function() {
      -				list = stack = memory = undefined;
      -				return this;
      -			},
      -			// Is it disabled?
      -			disabled: function() {
      -				return !list;
      -			},
      -			// Lock the list in its current state
      -			lock: function() {
      -				stack = undefined;
      -				if ( !memory || memory === true ) {
      -					self.disable();
      -				}
      -				return this;
      -			},
      -			// Is it locked?
      -			locked: function() {
      -				return !stack;
      -			},
      -			// Call all callbacks with the given context and arguments
      -			fireWith: function( context, args ) {
      -				if ( stack ) {
      -					if ( firing ) {
      -						if ( !flags.once ) {
      -							stack.push( [ context, args ] );
      -						}
      -					} else if ( !( flags.once && memory ) ) {
      -						fire( context, args );
      -					}
      -				}
      -				return this;
      -			},
      -			// Call all the callbacks with the given arguments
      -			fire: function() {
      -				self.fireWith( this, arguments );
      -				return this;
      -			},
      -			// To know if the callbacks have already been called at least once
      -			fired: function() {
      -				return !!fired;
      -			}
      -		};
      -
      -	return self;
      -};
      -
      -
      -
      -
      -var // Static reference to slice
      -	sliceDeferred = [].slice;
      -
      -jQuery.extend({
      -
      -	Deferred: function( func ) {
      -		var doneList = jQuery.Callbacks( "once memory" ),
      -			failList = jQuery.Callbacks( "once memory" ),
      -			progressList = jQuery.Callbacks( "memory" ),
      -			state = "pending",
      -			lists = {
      -				resolve: doneList,
      -				reject: failList,
      -				notify: progressList
      -			},
      -			promise = {
      -				done: doneList.add,
      -				fail: failList.add,
      -				progress: progressList.add,
      -
      -				state: function() {
      -					return state;
      -				},
      -
      -				// Deprecated
      -				isResolved: doneList.fired,
      -				isRejected: failList.fired,
      -
      -				then: function( doneCallbacks, failCallbacks, progressCallbacks ) {
      -					deferred.done( doneCallbacks ).fail( failCallbacks ).progress( progressCallbacks );
      -					return this;
      -				},
      -				always: function() {
      -					deferred.done.apply( deferred, arguments ).fail.apply( deferred, arguments );
      -					return this;
      -				},
      -				pipe: function( fnDone, fnFail, fnProgress ) {
      -					return jQuery.Deferred(function( newDefer ) {
      -						jQuery.each( {
      -							done: [ fnDone, "resolve" ],
      -							fail: [ fnFail, "reject" ],
      -							progress: [ fnProgress, "notify" ]
      -						}, function( handler, data ) {
      -							var fn = data[ 0 ],
      -								action = data[ 1 ],
      -								returned;
      -							if ( jQuery.isFunction( fn ) ) {
      -								deferred[ handler ](function() {
      -									returned = fn.apply( this, arguments );
      -									if ( returned && jQuery.isFunction( returned.promise ) ) {
      -										returned.promise().then( newDefer.resolve, newDefer.reject, newDefer.notify );
      -									} else {
      -										newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
      -									}
      -								});
      -							} else {
      -								deferred[ handler ]( newDefer[ action ] );
      -							}
      -						});
      -					}).promise();
      -				},
      -				// Get a promise for this deferred
      -				// If obj is provided, the promise aspect is added to the object
      -				promise: function( obj ) {
      -					if ( obj == null ) {
      -						obj = promise;
      -					} else {
      -						for ( var key in promise ) {
      -							obj[ key ] = promise[ key ];
      -						}
      -					}
      -					return obj;
      -				}
      -			},
      -			deferred = promise.promise({}),
      -			key;
      -
      -		for ( key in lists ) {
      -			deferred[ key ] = lists[ key ].fire;
      -			deferred[ key + "With" ] = lists[ key ].fireWith;
      -		}
      -
      -		// Handle state
      -		deferred.done( function() {
      -			state = "resolved";
      -		}, failList.disable, progressList.lock ).fail( function() {
      -			state = "rejected";
      -		}, doneList.disable, progressList.lock );
      -
      -		// Call given func if any
      -		if ( func ) {
      -			func.call( deferred, deferred );
      -		}
      -
      -		// All done!
      -		return deferred;
      -	},
      -
      -	// Deferred helper
      -	when: function( firstParam ) {
      -		var args = sliceDeferred.call( arguments, 0 ),
      -			i = 0,
      -			length = args.length,
      -			pValues = new Array( length ),
      -			count = length,
      -			pCount = length,
      -			deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
      -				firstParam :
      -				jQuery.Deferred(),
      -			promise = deferred.promise();
      -		function resolveFunc( i ) {
      -			return function( value ) {
      -				args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
      -				if ( !( --count ) ) {
      -					deferred.resolveWith( deferred, args );
      -				}
      -			};
      -		}
      -		function progressFunc( i ) {
      -			return function( value ) {
      -				pValues[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
      -				deferred.notifyWith( promise, pValues );
      -			};
      -		}
      -		if ( length > 1 ) {
      -			for ( ; i < length; i++ ) {
      -				if ( args[ i ] && args[ i ].promise && jQuery.isFunction( args[ i ].promise ) ) {
      -					args[ i ].promise().then( resolveFunc(i), deferred.reject, progressFunc(i) );
      -				} else {
      -					--count;
      -				}
      -			}
      -			if ( !count ) {
      -				deferred.resolveWith( deferred, args );
      -			}
      -		} else if ( deferred !== firstParam ) {
      -			deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
      -		}
      -		return promise;
      -	}
      -});
      -
      -
      -
      -
      -jQuery.support = (function() {
      -
      -	var support,
      -		all,
      -		a,
      -		select,
      -		opt,
      -		input,
      -		fragment,
      -		tds,
      -		events,
      -		eventName,
      -		i,
      -		isSupported,
      -		div = document.createElement( "div" ),
      -		documentElement = document.documentElement;
      -
      -	// Preliminary tests
      -	div.setAttribute("className", "t");
      -	div.innerHTML = "   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
      -
      -	all = div.getElementsByTagName( "*" );
      -	a = div.getElementsByTagName( "a" )[ 0 ];
      -
      -	// Can't get basic test support
      -	if ( !all || !all.length || !a ) {
      -		return {};
      -	}
      -
      -	// First batch of supports tests
      -	select = document.createElement( "select" );
      -	opt = select.appendChild( document.createElement("option") );
      -	input = div.getElementsByTagName( "input" )[ 0 ];
      -
      -	support = {
      -		// IE strips leading whitespace when .innerHTML is used
      -		leadingWhitespace: ( div.firstChild.nodeType === 3 ),
      -
      -		// Make sure that tbody elements aren't automatically inserted
      -		// IE will insert them into empty tables
      -		tbody: !div.getElementsByTagName("tbody").length,
      -
      -		// Make sure that link elements get serialized correctly by innerHTML
      -		// This requires a wrapper element in IE
      -		htmlSerialize: !!div.getElementsByTagName("link").length,
      -
      -		// Get the style information from getAttribute
      -		// (IE uses .cssText instead)
      -		style: /top/.test( a.getAttribute("style") ),
      -
      -		// Make sure that URLs aren't manipulated
      -		// (IE normalizes it by default)
      -		hrefNormalized: ( a.getAttribute("href") === "/a" ),
      -
      -		// Make sure that element opacity exists
      -		// (IE uses filter instead)
      -		// Use a regex to work around a WebKit issue. See #5145
      -		opacity: /^0.55/.test( a.style.opacity ),
      -
      -		// Verify style float existence
      -		// (IE uses styleFloat instead of cssFloat)
      -		cssFloat: !!a.style.cssFloat,
      -
      -		// Make sure that if no value is specified for a checkbox
      -		// that it defaults to "on".
      -		// (WebKit defaults to "" instead)
      -		checkOn: ( input.value === "on" ),
      -
      -		// Make sure that a selected-by-default option has a working selected property.
      -		// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
      -		optSelected: opt.selected,
      -
      -		// Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
      -		getSetAttribute: div.className !== "t",
      -
      -		// Tests for enctype support on a form(#6743)
      -		enctype: !!document.createElement("form").enctype,
      -
      -		// Makes sure cloning an html5 element does not cause problems
      -		// Where outerHTML is undefined, this still works
      -		html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
      -
      -		// Will be defined later
      -		submitBubbles: true,
      -		changeBubbles: true,
      -		focusinBubbles: false,
      -		deleteExpando: true,
      -		noCloneEvent: true,
      -		inlineBlockNeedsLayout: false,
      -		shrinkWrapBlocks: false,
      -		reliableMarginRight: true,
      -		pixelMargin: true
      -	};
      -
      -	// jQuery.boxModel DEPRECATED in 1.3, use jQuery.support.boxModel instead
      -	jQuery.boxModel = support.boxModel = (document.compatMode === "CSS1Compat");
      -
      -	// Make sure checked status is properly cloned
      -	input.checked = true;
      -	support.noCloneChecked = input.cloneNode( true ).checked;
      -
      -	// Make sure that the options inside disabled selects aren't marked as disabled
      -	// (WebKit marks them as disabled)
      -	select.disabled = true;
      -	support.optDisabled = !opt.disabled;
      -
      -	// Test to see if it's possible to delete an expando from an element
      -	// Fails in Internet Explorer
      -	try {
      -		delete div.test;
      -	} catch( e ) {
      -		support.deleteExpando = false;
      -	}
      -
      -	if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
      -		div.attachEvent( "onclick", function() {
      -			// Cloning a node shouldn't copy over any
      -			// bound event handlers (IE does this)
      -			support.noCloneEvent = false;
      -		});
      -		div.cloneNode( true ).fireEvent( "onclick" );
      -	}
      -
      -	// Check if a radio maintains its value
      -	// after being appended to the DOM
      -	input = document.createElement("input");
      -	input.value = "t";
      -	input.setAttribute("type", "radio");
      -	support.radioValue = input.value === "t";
      -
      -	input.setAttribute("checked", "checked");
      -
      -	// #11217 - WebKit loses check when the name is after the checked attribute
      -	input.setAttribute( "name", "t" );
      -
      -	div.appendChild( input );
      -	fragment = document.createDocumentFragment();
      -	fragment.appendChild( div.lastChild );
      -
      -	// WebKit doesn't clone checked state correctly in fragments
      -	support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
      -
      -	// Check if a disconnected checkbox will retain its checked
      -	// value of true after appended to the DOM (IE6/7)
      -	support.appendChecked = input.checked;
      -
      -	fragment.removeChild( input );
      -	fragment.appendChild( div );
      -
      -	// Technique from Juriy Zaytsev
      -	// http://perfectionkills.com/detecting-event-support-without-browser-sniffing/
      -	// We only care about the case where non-standard event systems
      -	// are used, namely in IE. Short-circuiting here helps us to
      -	// avoid an eval call (in setAttribute) which can cause CSP
      -	// to go haywire. See: https://developer.mozilla.org/en/Security/CSP
      -	if ( div.attachEvent ) {
      -		for ( i in {
      -			submit: 1,
      -			change: 1,
      -			focusin: 1
      -		}) {
      -			eventName = "on" + i;
      -			isSupported = ( eventName in div );
      -			if ( !isSupported ) {
      -				div.setAttribute( eventName, "return;" );
      -				isSupported = ( typeof div[ eventName ] === "function" );
      -			}
      -			support[ i + "Bubbles" ] = isSupported;
      -		}
      -	}
      -
      -	fragment.removeChild( div );
      -
      -	// Null elements to avoid leaks in IE
      -	fragment = select = opt = div = input = null;
      -
      -	// Run tests that need a body at doc ready
      -	jQuery(function() {
      -		var container, outer, inner, table, td, offsetSupport,
      -			marginDiv, conMarginTop, style, html, positionTopLeftWidthHeight,
      -			paddingMarginBorderVisibility, paddingMarginBorder,
      -			body = document.getElementsByTagName("body")[0];
      -
      -		if ( !body ) {
      -			// Return for frameset docs that don't have a body
      -			return;
      -		}
      -
      -		conMarginTop = 1;
      -		paddingMarginBorder = "padding:0;margin:0;border:";
      -		positionTopLeftWidthHeight = "position:absolute;top:0;left:0;width:1px;height:1px;";
      -		paddingMarginBorderVisibility = paddingMarginBorder + "0;visibility:hidden;";
      -		style = "style='" + positionTopLeftWidthHeight + paddingMarginBorder + "5px solid #000;";
      -		html = "<div " + style + "display:block;'><div style='" + paddingMarginBorder + "0;display:block;overflow:hidden;'></div></div>" +
      -			"<table " + style + "' cellpadding='0' cellspacing='0'>" +
      -			"<tr><td></td></tr></table>";
      -
      -		container = document.createElement("div");
      -		container.style.cssText = paddingMarginBorderVisibility + "width:0;height:0;position:static;top:0;margin-top:" + conMarginTop + "px";
      -		body.insertBefore( container, body.firstChild );
      -
      -		// Construct the test element
      -		div = document.createElement("div");
      -		container.appendChild( div );
      -
      -		// Check if table cells still have offsetWidth/Height when they are set
      -		// to display:none and there are still other visible table cells in a
      -		// table row; if so, offsetWidth/Height are not reliable for use when
      -		// determining if an element has been hidden directly using
      -		// display:none (it is still safe to use offsets if a parent element is
      -		// hidden; don safety goggles and see bug #4512 for more information).
      -		// (only IE 8 fails this test)
      -		div.innerHTML = "<table><tr><td style='" + paddingMarginBorder + "0;display:none'></td><td>t</td></tr></table>";
      -		tds = div.getElementsByTagName( "td" );
      -		isSupported = ( tds[ 0 ].offsetHeight === 0 );
      -
      -		tds[ 0 ].style.display = "";
      -		tds[ 1 ].style.display = "none";
      -
      -		// Check if empty table cells still have offsetWidth/Height
      -		// (IE <= 8 fail this test)
      -		support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
      -
      -		// Check if div with explicit width and no margin-right incorrectly
      -		// gets computed margin-right based on width of container. For more
      -		// info see bug #3333
      -		// Fails in WebKit before Feb 2011 nightlies
      -		// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -		if ( window.getComputedStyle ) {
      -			div.innerHTML = "";
      -			marginDiv = document.createElement( "div" );
      -			marginDiv.style.width = "0";
      -			marginDiv.style.marginRight = "0";
      -			div.style.width = "2px";
      -			div.appendChild( marginDiv );
      -			support.reliableMarginRight =
      -				( parseInt( ( window.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
      -		}
      -
      -		if ( typeof div.style.zoom !== "undefined" ) {
      -			// Check if natively block-level elements act like inline-block
      -			// elements when setting their display to 'inline' and giving
      -			// them layout
      -			// (IE < 8 does this)
      -			div.innerHTML = "";
      -			div.style.width = div.style.padding = "1px";
      -			div.style.border = 0;
      -			div.style.overflow = "hidden";
      -			div.style.display = "inline";
      -			div.style.zoom = 1;
      -			support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
      -
      -			// Check if elements with layout shrink-wrap their children
      -			// (IE 6 does this)
      -			div.style.display = "block";
      -			div.style.overflow = "visible";
      -			div.innerHTML = "<div style='width:5px;'></div>";
      -			support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
      -		}
      -
      -		div.style.cssText = positionTopLeftWidthHeight + paddingMarginBorderVisibility;
      -		div.innerHTML = html;
      -
      -		outer = div.firstChild;
      -		inner = outer.firstChild;
      -		td = outer.nextSibling.firstChild.firstChild;
      -
      -		offsetSupport = {
      -			doesNotAddBorder: ( inner.offsetTop !== 5 ),
      -			doesAddBorderForTableAndCells: ( td.offsetTop === 5 )
      -		};
      -
      -		inner.style.position = "fixed";
      -		inner.style.top = "20px";
      -
      -		// safari subtracts parent border width here which is 5px
      -		offsetSupport.fixedPosition = ( inner.offsetTop === 20 || inner.offsetTop === 15 );
      -		inner.style.position = inner.style.top = "";
      -
      -		outer.style.overflow = "hidden";
      -		outer.style.position = "relative";
      -
      -		offsetSupport.subtractsBorderForOverflowNotVisible = ( inner.offsetTop === -5 );
      -		offsetSupport.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== conMarginTop );
      -
      -		if ( window.getComputedStyle ) {
      -			div.style.marginTop = "1%";
      -			support.pixelMargin = ( window.getComputedStyle( div, null ) || { marginTop: 0 } ).marginTop !== "1%";
      -		}
      -
      -		if ( typeof container.style.zoom !== "undefined" ) {
      -			container.style.zoom = 1;
      -		}
      -
      -		body.removeChild( container );
      -		marginDiv = div = container = null;
      -
      -		jQuery.extend( support, offsetSupport );
      -	});
      -
      -	return support;
      -})();
      -
      -
      -
      -
      -var rbrace = /^(?:\{.*\}|\[.*\])$/,
      -	rmultiDash = /([A-Z])/g;
      -
      -jQuery.extend({
      -	cache: {},
      -
      -	// Please use with caution
      -	uuid: 0,
      -
      -	// Unique for each copy of jQuery on the page
      -	// Non-digits removed to match rinlinejQuery
      -	expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
      -
      -	// The following elements throw uncatchable exceptions if you
      -	// attempt to add expando properties to them.
      -	noData: {
      -		"embed": true,
      -		// Ban all objects except for Flash (which handle expandos)
      -		"object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
      -		"applet": true
      -	},
      -
      -	hasData: function( elem ) {
      -		elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
      -		return !!elem && !isEmptyDataObject( elem );
      -	},
      -
      -	data: function( elem, name, data, pvt /* Internal Use Only */ ) {
      -		if ( !jQuery.acceptData( elem ) ) {
      -			return;
      -		}
      -
      -		var privateCache, thisCache, ret,
      -			internalKey = jQuery.expando,
      -			getByName = typeof name === "string",
      -
      -			// We have to handle DOM nodes and JS objects differently because IE6-7
      -			// can't GC object references properly across the DOM-JS boundary
      -			isNode = elem.nodeType,
      -
      -			// Only DOM nodes need the global jQuery cache; JS object data is
      -			// attached directly to the object so GC can occur automatically
      -			cache = isNode ? jQuery.cache : elem,
      -
      -			// Only defining an ID for JS objects if its cache already exists allows
      -			// the code to shortcut on the same path as a DOM node with no cache
      -			id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey,
      -			isEvents = name === "events";
      -
      -		// Avoid doing any more work than we need to when trying to get data on an
      -		// object that has no data at all
      -		if ( (!id || !cache[id] || (!isEvents && !pvt && !cache[id].data)) && getByName && data === undefined ) {
      -			return;
      -		}
      -
      -		if ( !id ) {
      -			// Only DOM nodes need a new unique ID for each element since their data
      -			// ends up in the global cache
      -			if ( isNode ) {
      -				elem[ internalKey ] = id = ++jQuery.uuid;
      -			} else {
      -				id = internalKey;
      -			}
      -		}
      -
      -		if ( !cache[ id ] ) {
      -			cache[ id ] = {};
      -
      -			// Avoids exposing jQuery metadata on plain JS objects when the object
      -			// is serialized using JSON.stringify
      -			if ( !isNode ) {
      -				cache[ id ].toJSON = jQuery.noop;
      -			}
      -		}
      -
      -		// An object can be passed to jQuery.data instead of a key/value pair; this gets
      -		// shallow copied over onto the existing cache
      -		if ( typeof name === "object" || typeof name === "function" ) {
      -			if ( pvt ) {
      -				cache[ id ] = jQuery.extend( cache[ id ], name );
      -			} else {
      -				cache[ id ].data = jQuery.extend( cache[ id ].data, name );
      -			}
      -		}
      -
      -		privateCache = thisCache = cache[ id ];
      -
      -		// jQuery data() is stored in a separate object inside the object's internal data
      -		// cache in order to avoid key collisions between internal data and user-defined
      -		// data.
      -		if ( !pvt ) {
      -			if ( !thisCache.data ) {
      -				thisCache.data = {};
      -			}
      -
      -			thisCache = thisCache.data;
      -		}
      -
      -		if ( data !== undefined ) {
      -			thisCache[ jQuery.camelCase( name ) ] = data;
      -		}
      -
      -		// Users should not attempt to inspect the internal events object using jQuery.data,
      -		// it is undocumented and subject to change. But does anyone listen? No.
      -		if ( isEvents && !thisCache[ name ] ) {
      -			return privateCache.events;
      -		}
      -
      -		// Check for both converted-to-camel and non-converted data property names
      -		// If a data property was specified
      -		if ( getByName ) {
      -
      -			// First Try to find as-is property data
      -			ret = thisCache[ name ];
      -
      -			// Test for null|undefined property data
      -			if ( ret == null ) {
      -
      -				// Try to find the camelCased property
      -				ret = thisCache[ jQuery.camelCase( name ) ];
      -			}
      -		} else {
      -			ret = thisCache;
      -		}
      -
      -		return ret;
      -	},
      -
      -	removeData: function( elem, name, pvt /* Internal Use Only */ ) {
      -		if ( !jQuery.acceptData( elem ) ) {
      -			return;
      -		}
      -
      -		var thisCache, i, l,
      -
      -			// Reference to internal data cache key
      -			internalKey = jQuery.expando,
      -
      -			isNode = elem.nodeType,
      -
      -			// See jQuery.data for more information
      -			cache = isNode ? jQuery.cache : elem,
      -
      -			// See jQuery.data for more information
      -			id = isNode ? elem[ internalKey ] : internalKey;
      -
      -		// If there is already no cache entry for this object, there is no
      -		// purpose in continuing
      -		if ( !cache[ id ] ) {
      -			return;
      -		}
      -
      -		if ( name ) {
      -
      -			thisCache = pvt ? cache[ id ] : cache[ id ].data;
      -
      -			if ( thisCache ) {
      -
      -				// Support array or space separated string names for data keys
      -				if ( !jQuery.isArray( name ) ) {
      -
      -					// try the string as a key before any manipulation
      -					if ( name in thisCache ) {
      -						name = [ name ];
      -					} else {
      -
      -						// split the camel cased version by spaces unless a key with the spaces exists
      -						name = jQuery.camelCase( name );
      -						if ( name in thisCache ) {
      -							name = [ name ];
      -						} else {
      -							name = name.split( " " );
      -						}
      -					}
      -				}
      -
      -				for ( i = 0, l = name.length; i < l; i++ ) {
      -					delete thisCache[ name[i] ];
      -				}
      -
      -				// If there is no data left in the cache, we want to continue
      -				// and let the cache object itself get destroyed
      -				if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
      -					return;
      -				}
      -			}
      -		}
      -
      -		// See jQuery.data for more information
      -		if ( !pvt ) {
      -			delete cache[ id ].data;
      -
      -			// Don't destroy the parent cache unless the internal data object
      -			// had been the only thing left in it
      -			if ( !isEmptyDataObject(cache[ id ]) ) {
      -				return;
      -			}
      -		}
      -
      -		// Browsers that fail expando deletion also refuse to delete expandos on
      -		// the window, but it will allow it on all other JS objects; other browsers
      -		// don't care
      -		// Ensure that `cache` is not a window object #10080
      -		if ( jQuery.support.deleteExpando || !cache.setInterval ) {
      -			delete cache[ id ];
      -		} else {
      -			cache[ id ] = null;
      -		}
      -
      -		// We destroyed the cache and need to eliminate the expando on the node to avoid
      -		// false lookups in the cache for entries that no longer exist
      -		if ( isNode ) {
      -			// IE does not allow us to delete expando properties from nodes,
      -			// nor does it have a removeAttribute function on Document nodes;
      -			// we must handle all of these cases
      -			if ( jQuery.support.deleteExpando ) {
      -				delete elem[ internalKey ];
      -			} else if ( elem.removeAttribute ) {
      -				elem.removeAttribute( internalKey );
      -			} else {
      -				elem[ internalKey ] = null;
      -			}
      -		}
      -	},
      -
      -	// For internal use only.
      -	_data: function( elem, name, data ) {
      -		return jQuery.data( elem, name, data, true );
      -	},
      -
      -	// A method for determining if a DOM node can handle the data expando
      -	acceptData: function( elem ) {
      -		if ( elem.nodeName ) {
      -			var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
      -
      -			if ( match ) {
      -				return !(match === true || elem.getAttribute("classid") !== match);
      -			}
      -		}
      -
      -		return true;
      -	}
      -});
      -
      -jQuery.fn.extend({
      -	data: function( key, value ) {
      -		var parts, part, attr, name, l,
      -			elem = this[0],
      -			i = 0,
      -			data = null;
      -
      -		// Gets all values
      -		if ( key === undefined ) {
      -			if ( this.length ) {
      -				data = jQuery.data( elem );
      -
      -				if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
      -					attr = elem.attributes;
      -					for ( l = attr.length; i < l; i++ ) {
      -						name = attr[i].name;
      -
      -						if ( name.indexOf( "data-" ) === 0 ) {
      -							name = jQuery.camelCase( name.substring(5) );
      -
      -							dataAttr( elem, name, data[ name ] );
      -						}
      -					}
      -					jQuery._data( elem, "parsedAttrs", true );
      -				}
      -			}
      -
      -			return data;
      -		}
      -
      -		// Sets multiple values
      -		if ( typeof key === "object" ) {
      -			return this.each(function() {
      -				jQuery.data( this, key );
      -			});
      -		}
      -
      -		parts = key.split( ".", 2 );
      -		parts[1] = parts[1] ? "." + parts[1] : "";
      -		part = parts[1] + "!";
      -
      -		return jQuery.access( this, function( value ) {
      -
      -			if ( value === undefined ) {
      -				data = this.triggerHandler( "getData" + part, [ parts[0] ] );
      -
      -				// Try to fetch any internally stored data first
      -				if ( data === undefined && elem ) {
      -					data = jQuery.data( elem, key );
      -					data = dataAttr( elem, key, data );
      -				}
      -
      -				return data === undefined && parts[1] ?
      -					this.data( parts[0] ) :
      -					data;
      -			}
      -
      -			parts[1] = value;
      -			this.each(function() {
      -				var self = jQuery( this );
      -
      -				self.triggerHandler( "setData" + part, parts );
      -				jQuery.data( this, key, value );
      -				self.triggerHandler( "changeData" + part, parts );
      -			});
      -		}, null, value, arguments.length > 1, null, false );
      -	},
      -
      -	removeData: function( key ) {
      -		return this.each(function() {
      -			jQuery.removeData( this, key );
      -		});
      -	}
      -});
      -
      -function dataAttr( elem, key, data ) {
      -	// If nothing was found internally, try to fetch any
      -	// data from the HTML5 data-* attribute
      -	if ( data === undefined && elem.nodeType === 1 ) {
      -
      -		var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
      -
      -		data = elem.getAttribute( name );
      -
      -		if ( typeof data === "string" ) {
      -			try {
      -				data = data === "true" ? true :
      -				data === "false" ? false :
      -				data === "null" ? null :
      -				jQuery.isNumeric( data ) ? +data :
      -					rbrace.test( data ) ? jQuery.parseJSON( data ) :
      -					data;
      -			} catch( e ) {}
      -
      -			// Make sure we set the data so it isn't changed later
      -			jQuery.data( elem, key, data );
      -
      -		} else {
      -			data = undefined;
      -		}
      -	}
      -
      -	return data;
      -}
      -
      -// checks a cache object for emptiness
      -function isEmptyDataObject( obj ) {
      -	for ( var name in obj ) {
      -
      -		// if the public data object is empty, the private is still empty
      -		if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
      -			continue;
      -		}
      -		if ( name !== "toJSON" ) {
      -			return false;
      -		}
      -	}
      -
      -	return true;
      -}
      -
      -
      -
      -
      -function handleQueueMarkDefer( elem, type, src ) {
      -	var deferDataKey = type + "defer",
      -		queueDataKey = type + "queue",
      -		markDataKey = type + "mark",
      -		defer = jQuery._data( elem, deferDataKey );
      -	if ( defer &&
      -		( src === "queue" || !jQuery._data(elem, queueDataKey) ) &&
      -		( src === "mark" || !jQuery._data(elem, markDataKey) ) ) {
      -		// Give room for hard-coded callbacks to fire first
      -		// and eventually mark/queue something else on the element
      -		setTimeout( function() {
      -			if ( !jQuery._data( elem, queueDataKey ) &&
      -				!jQuery._data( elem, markDataKey ) ) {
      -				jQuery.removeData( elem, deferDataKey, true );
      -				defer.fire();
      -			}
      -		}, 0 );
      -	}
      -}
      -
      -jQuery.extend({
      -
      -	_mark: function( elem, type ) {
      -		if ( elem ) {
      -			type = ( type || "fx" ) + "mark";
      -			jQuery._data( elem, type, (jQuery._data( elem, type ) || 0) + 1 );
      -		}
      -	},
      -
      -	_unmark: function( force, elem, type ) {
      -		if ( force !== true ) {
      -			type = elem;
      -			elem = force;
      -			force = false;
      -		}
      -		if ( elem ) {
      -			type = type || "fx";
      -			var key = type + "mark",
      -				count = force ? 0 : ( (jQuery._data( elem, key ) || 1) - 1 );
      -			if ( count ) {
      -				jQuery._data( elem, key, count );
      -			} else {
      -				jQuery.removeData( elem, key, true );
      -				handleQueueMarkDefer( elem, type, "mark" );
      -			}
      -		}
      -	},
      -
      -	queue: function( elem, type, data ) {
      -		var q;
      -		if ( elem ) {
      -			type = ( type || "fx" ) + "queue";
      -			q = jQuery._data( elem, type );
      -
      -			// Speed up dequeue by getting out quickly if this is just a lookup
      -			if ( data ) {
      -				if ( !q || jQuery.isArray(data) ) {
      -					q = jQuery._data( elem, type, jQuery.makeArray(data) );
      -				} else {
      -					q.push( data );
      -				}
      -			}
      -			return q || [];
      -		}
      -	},
      -
      -	dequeue: function( elem, type ) {
      -		type = type || "fx";
      -
      -		var queue = jQuery.queue( elem, type ),
      -			fn = queue.shift(),
      -			hooks = {};
      -
      -		// If the fx queue is dequeued, always remove the progress sentinel
      -		if ( fn === "inprogress" ) {
      -			fn = queue.shift();
      -		}
      -
      -		if ( fn ) {
      -			// Add a progress sentinel to prevent the fx queue from being
      -			// automatically dequeued
      -			if ( type === "fx" ) {
      -				queue.unshift( "inprogress" );
      -			}
      -
      -			jQuery._data( elem, type + ".run", hooks );
      -			fn.call( elem, function() {
      -				jQuery.dequeue( elem, type );
      -			}, hooks );
      -		}
      -
      -		if ( !queue.length ) {
      -			jQuery.removeData( elem, type + "queue " + type + ".run", true );
      -			handleQueueMarkDefer( elem, type, "queue" );
      -		}
      -	}
      -});
      -
      -jQuery.fn.extend({
      -	queue: function( type, data ) {
      -		var setter = 2;
      -
      -		if ( typeof type !== "string" ) {
      -			data = type;
      -			type = "fx";
      -			setter--;
      -		}
      -
      -		if ( arguments.length < setter ) {
      -			return jQuery.queue( this[0], type );
      -		}
      -
      -		return data === undefined ?
      -			this :
      -			this.each(function() {
      -				var queue = jQuery.queue( this, type, data );
      -
      -				if ( type === "fx" && queue[0] !== "inprogress" ) {
      -					jQuery.dequeue( this, type );
      -				}
      -			});
      -	},
      -	dequeue: function( type ) {
      -		return this.each(function() {
      -			jQuery.dequeue( this, type );
      -		});
      -	},
      -	// Based off of the plugin by Clint Helfers, with permission.
      -	// http://blindsignals.com/index.php/2009/07/jquery-delay/
      -	delay: function( time, type ) {
      -		time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
      -		type = type || "fx";
      -
      -		return this.queue( type, function( next, hooks ) {
      -			var timeout = setTimeout( next, time );
      -			hooks.stop = function() {
      -				clearTimeout( timeout );
      -			};
      -		});
      -	},
      -	clearQueue: function( type ) {
      -		return this.queue( type || "fx", [] );
      -	},
      -	// Get a promise resolved when queues of a certain type
      -	// are emptied (fx is the type by default)
      -	promise: function( type, object ) {
      -		if ( typeof type !== "string" ) {
      -			object = type;
      -			type = undefined;
      -		}
      -		type = type || "fx";
      -		var defer = jQuery.Deferred(),
      -			elements = this,
      -			i = elements.length,
      -			count = 1,
      -			deferDataKey = type + "defer",
      -			queueDataKey = type + "queue",
      -			markDataKey = type + "mark",
      -			tmp;
      -		function resolve() {
      -			if ( !( --count ) ) {
      -				defer.resolveWith( elements, [ elements ] );
      -			}
      -		}
      -		while( i-- ) {
      -			if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
      -					( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
      -						jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
      -					jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) {
      -				count++;
      -				tmp.add( resolve );
      -			}
      -		}
      -		resolve();
      -		return defer.promise( object );
      -	}
      -});
      -
      -
      -
      -
      -var rclass = /[\n\t\r]/g,
      -	rspace = /\s+/,
      -	rreturn = /\r/g,
      -	rtype = /^(?:button|input)$/i,
      -	rfocusable = /^(?:button|input|object|select|textarea)$/i,
      -	rclickable = /^a(?:rea)?$/i,
      -	rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
      -	getSetAttribute = jQuery.support.getSetAttribute,
      -	nodeHook, boolHook, fixSpecified;
      -
      -jQuery.fn.extend({
      -	attr: function( name, value ) {
      -		return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
      -	},
      -
      -	removeAttr: function( name ) {
      -		return this.each(function() {
      -			jQuery.removeAttr( this, name );
      -		});
      -	},
      -
      -	prop: function( name, value ) {
      -		return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
      -	},
      -
      -	removeProp: function( name ) {
      -		name = jQuery.propFix[ name ] || name;
      -		return this.each(function() {
      -			// try/catch handles cases where IE balks (such as removing a property on window)
      -			try {
      -				this[ name ] = undefined;
      -				delete this[ name ];
      -			} catch( e ) {}
      -		});
      -	},
      -
      -	addClass: function( value ) {
      -		var classNames, i, l, elem,
      -			setClass, c, cl;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each(function( j ) {
      -				jQuery( this ).addClass( value.call(this, j, this.className) );
      -			});
      -		}
      -
      -		if ( value && typeof value === "string" ) {
      -			classNames = value.split( rspace );
      -
      -			for ( i = 0, l = this.length; i < l; i++ ) {
      -				elem = this[ i ];
      -
      -				if ( elem.nodeType === 1 ) {
      -					if ( !elem.className && classNames.length === 1 ) {
      -						elem.className = value;
      -
      -					} else {
      -						setClass = " " + elem.className + " ";
      -
      -						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
      -							if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
      -								setClass += classNames[ c ] + " ";
      -							}
      -						}
      -						elem.className = jQuery.trim( setClass );
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	removeClass: function( value ) {
      -		var classNames, i, l, elem, className, c, cl;
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each(function( j ) {
      -				jQuery( this ).removeClass( value.call(this, j, this.className) );
      -			});
      -		}
      -
      -		if ( (value && typeof value === "string") || value === undefined ) {
      -			classNames = ( value || "" ).split( rspace );
      -
      -			for ( i = 0, l = this.length; i < l; i++ ) {
      -				elem = this[ i ];
      -
      -				if ( elem.nodeType === 1 && elem.className ) {
      -					if ( value ) {
      -						className = (" " + elem.className + " ").replace( rclass, " " );
      -						for ( c = 0, cl = classNames.length; c < cl; c++ ) {
      -							className = className.replace(" " + classNames[ c ] + " ", " ");
      -						}
      -						elem.className = jQuery.trim( className );
      -
      -					} else {
      -						elem.className = "";
      -					}
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	toggleClass: function( value, stateVal ) {
      -		var type = typeof value,
      -			isBool = typeof stateVal === "boolean";
      -
      -		if ( jQuery.isFunction( value ) ) {
      -			return this.each(function( i ) {
      -				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
      -			});
      -		}
      -
      -		return this.each(function() {
      -			if ( type === "string" ) {
      -				// toggle individual class names
      -				var className,
      -					i = 0,
      -					self = jQuery( this ),
      -					state = stateVal,
      -					classNames = value.split( rspace );
      -
      -				while ( (className = classNames[ i++ ]) ) {
      -					// check each className given, space seperated list
      -					state = isBool ? state : !self.hasClass( className );
      -					self[ state ? "addClass" : "removeClass" ]( className );
      -				}
      -
      -			} else if ( type === "undefined" || type === "boolean" ) {
      -				if ( this.className ) {
      -					// store className if set
      -					jQuery._data( this, "__className__", this.className );
      -				}
      -
      -				// toggle whole className
      -				this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
      -			}
      -		});
      -	},
      -
      -	hasClass: function( selector ) {
      -		var className = " " + selector + " ",
      -			i = 0,
      -			l = this.length;
      -		for ( ; i < l; i++ ) {
      -			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
      -				return true;
      -			}
      -		}
      -
      -		return false;
      -	},
      -
      -	val: function( value ) {
      -		var hooks, ret, isFunction,
      -			elem = this[0];
      -
      -		if ( !arguments.length ) {
      -			if ( elem ) {
      -				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
      -
      -				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
      -					return ret;
      -				}
      -
      -				ret = elem.value;
      -
      -				return typeof ret === "string" ?
      -					// handle most common string cases
      -					ret.replace(rreturn, "") :
      -					// handle cases where value is null/undef or number
      -					ret == null ? "" : ret;
      -			}
      -
      -			return;
      -		}
      -
      -		isFunction = jQuery.isFunction( value );
      -
      -		return this.each(function( i ) {
      -			var self = jQuery(this), val;
      -
      -			if ( this.nodeType !== 1 ) {
      -				return;
      -			}
      -
      -			if ( isFunction ) {
      -				val = value.call( this, i, self.val() );
      -			} else {
      -				val = value;
      -			}
      -
      -			// Treat null/undefined as ""; convert numbers to string
      -			if ( val == null ) {
      -				val = "";
      -			} else if ( typeof val === "number" ) {
      -				val += "";
      -			} else if ( jQuery.isArray( val ) ) {
      -				val = jQuery.map(val, function ( value ) {
      -					return value == null ? "" : value + "";
      -				});
      -			}
      -
      -			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
      -
      -			// If set returns undefined, fall back to normal setting
      -			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
      -				this.value = val;
      -			}
      -		});
      -	}
      -});
      -
      -jQuery.extend({
      -	valHooks: {
      -		option: {
      -			get: function( elem ) {
      -				// attributes.value is undefined in Blackberry 4.7 but
      -				// uses .value. See #6932
      -				var val = elem.attributes.value;
      -				return !val || val.specified ? elem.value : elem.text;
      -			}
      -		},
      -		select: {
      -			get: function( elem ) {
      -				var value, i, max, option,
      -					index = elem.selectedIndex,
      -					values = [],
      -					options = elem.options,
      -					one = elem.type === "select-one";
      -
      -				// Nothing was selected
      -				if ( index < 0 ) {
      -					return null;
      -				}
      -
      -				// Loop through all the selected options
      -				i = one ? index : 0;
      -				max = one ? index + 1 : options.length;
      -				for ( ; i < max; i++ ) {
      -					option = options[ i ];
      -
      -					// Don't return options that are disabled or in a disabled optgroup
      -					if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
      -							(!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
      -
      -						// Get the specific value for the option
      -						value = jQuery( option ).val();
      -
      -						// We don't need an array for one selects
      -						if ( one ) {
      -							return value;
      -						}
      -
      -						// Multi-Selects return an array
      -						values.push( value );
      -					}
      -				}
      -
      -				// Fixes Bug #2551 -- select.val() broken in IE after form.reset()
      -				if ( one && !values.length && options.length ) {
      -					return jQuery( options[ index ] ).val();
      -				}
      -
      -				return values;
      -			},
      -
      -			set: function( elem, value ) {
      -				var values = jQuery.makeArray( value );
      -
      -				jQuery(elem).find("option").each(function() {
      -					this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
      -				});
      -
      -				if ( !values.length ) {
      -					elem.selectedIndex = -1;
      -				}
      -				return values;
      -			}
      -		}
      -	},
      -
      -	attrFn: {
      -		val: true,
      -		css: true,
      -		html: true,
      -		text: true,
      -		data: true,
      -		width: true,
      -		height: true,
      -		offset: true
      -	},
      -
      -	attr: function( elem, name, value, pass ) {
      -		var ret, hooks, notxml,
      -			nType = elem.nodeType;
      -
      -		// don't get/set attributes on text, comment and attribute nodes
      -		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		if ( pass && name in jQuery.attrFn ) {
      -			return jQuery( elem )[ name ]( value );
      -		}
      -
      -		// Fallback to prop when attributes are not supported
      -		if ( typeof elem.getAttribute === "undefined" ) {
      -			return jQuery.prop( elem, name, value );
      -		}
      -
      -		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
      -
      -		// All attributes are lowercase
      -		// Grab necessary hook if one is defined
      -		if ( notxml ) {
      -			name = name.toLowerCase();
      -			hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
      -		}
      -
      -		if ( value !== undefined ) {
      -
      -			if ( value === null ) {
      -				jQuery.removeAttr( elem, name );
      -				return;
      -
      -			} else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
      -				return ret;
      -
      -			} else {
      -				elem.setAttribute( name, "" + value );
      -				return value;
      -			}
      -
      -		} else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
      -			return ret;
      -
      -		} else {
      -
      -			ret = elem.getAttribute( name );
      -
      -			// Non-existent attributes return null, we normalize to undefined
      -			return ret === null ?
      -				undefined :
      -				ret;
      -		}
      -	},
      -
      -	removeAttr: function( elem, value ) {
      -		var propName, attrNames, name, l, isBool,
      -			i = 0;
      -
      -		if ( value && elem.nodeType === 1 ) {
      -			attrNames = value.toLowerCase().split( rspace );
      -			l = attrNames.length;
      -
      -			for ( ; i < l; i++ ) {
      -				name = attrNames[ i ];
      -
      -				if ( name ) {
      -					propName = jQuery.propFix[ name ] || name;
      -					isBool = rboolean.test( name );
      -
      -					// See #9699 for explanation of this approach (setting first, then removal)
      -					// Do not do this for boolean attributes (see #10870)
      -					if ( !isBool ) {
      -						jQuery.attr( elem, name, "" );
      -					}
      -					elem.removeAttribute( getSetAttribute ? name : propName );
      -
      -					// Set corresponding property to false for boolean attributes
      -					if ( isBool && propName in elem ) {
      -						elem[ propName ] = false;
      -					}
      -				}
      -			}
      -		}
      -	},
      -
      -	attrHooks: {
      -		type: {
      -			set: function( elem, value ) {
      -				// We can't allow the type property to be changed (since it causes problems in IE)
      -				if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
      -					jQuery.error( "type property can't be changed" );
      -				} else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
      -					// Setting the type on a radio button after the value resets the value in IE6-9
      -					// Reset value to it's default in case type is set after value
      -					// This is for element creation
      -					var val = elem.value;
      -					elem.setAttribute( "type", value );
      -					if ( val ) {
      -						elem.value = val;
      -					}
      -					return value;
      -				}
      -			}
      -		},
      -		// Use the value property for back compat
      -		// Use the nodeHook for button elements in IE6/7 (#1954)
      -		value: {
      -			get: function( elem, name ) {
      -				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
      -					return nodeHook.get( elem, name );
      -				}
      -				return name in elem ?
      -					elem.value :
      -					null;
      -			},
      -			set: function( elem, value, name ) {
      -				if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
      -					return nodeHook.set( elem, value, name );
      -				}
      -				// Does not return so that setAttribute is also used
      -				elem.value = value;
      -			}
      -		}
      -	},
      -
      -	propFix: {
      -		tabindex: "tabIndex",
      -		readonly: "readOnly",
      -		"for": "htmlFor",
      -		"class": "className",
      -		maxlength: "maxLength",
      -		cellspacing: "cellSpacing",
      -		cellpadding: "cellPadding",
      -		rowspan: "rowSpan",
      -		colspan: "colSpan",
      -		usemap: "useMap",
      -		frameborder: "frameBorder",
      -		contenteditable: "contentEditable"
      -	},
      -
      -	prop: function( elem, name, value ) {
      -		var ret, hooks, notxml,
      -			nType = elem.nodeType;
      -
      -		// don't get/set properties on text, comment and attribute nodes
      -		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -			return;
      -		}
      -
      -		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
      -
      -		if ( notxml ) {
      -			// Fix name and attach hooks
      -			name = jQuery.propFix[ name ] || name;
      -			hooks = jQuery.propHooks[ name ];
      -		}
      -
      -		if ( value !== undefined ) {
      -			if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
      -				return ret;
      -
      -			} else {
      -				return ( elem[ name ] = value );
      -			}
      -
      -		} else {
      -			if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
      -				return ret;
      -
      -			} else {
      -				return elem[ name ];
      -			}
      -		}
      -	},
      -
      -	propHooks: {
      -		tabIndex: {
      -			get: function( elem ) {
      -				// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
      -				// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
      -				var attributeNode = elem.getAttributeNode("tabindex");
      -
      -				return attributeNode && attributeNode.specified ?
      -					parseInt( attributeNode.value, 10 ) :
      -					rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
      -						0 :
      -						undefined;
      -			}
      -		}
      -	}
      -});
      -
      -// Add the tabIndex propHook to attrHooks for back-compat (different case is intentional)
      -jQuery.attrHooks.tabindex = jQuery.propHooks.tabIndex;
      -
      -// Hook for boolean attributes
      -boolHook = {
      -	get: function( elem, name ) {
      -		// Align boolean attributes with corresponding properties
      -		// Fall back to attribute presence where some booleans are not supported
      -		var attrNode,
      -			property = jQuery.prop( elem, name );
      -		return property === true || typeof property !== "boolean" && ( attrNode = elem.getAttributeNode(name) ) && attrNode.nodeValue !== false ?
      -			name.toLowerCase() :
      -			undefined;
      -	},
      -	set: function( elem, value, name ) {
      -		var propName;
      -		if ( value === false ) {
      -			// Remove boolean attributes when set to false
      -			jQuery.removeAttr( elem, name );
      -		} else {
      -			// value is true since we know at this point it's type boolean and not false
      -			// Set boolean attributes to the same name and set the DOM property
      -			propName = jQuery.propFix[ name ] || name;
      -			if ( propName in elem ) {
      -				// Only set the IDL specifically if it already exists on the element
      -				elem[ propName ] = true;
      -			}
      -
      -			elem.setAttribute( name, name.toLowerCase() );
      -		}
      -		return name;
      -	}
      -};
      -
      -// IE6/7 do not support getting/setting some attributes with get/setAttribute
      -if ( !getSetAttribute ) {
      -
      -	fixSpecified = {
      -		name: true,
      -		id: true,
      -		coords: true
      -	};
      -
      -	// Use this for any attribute in IE6/7
      -	// This fixes almost every IE6/7 issue
      -	nodeHook = jQuery.valHooks.button = {
      -		get: function( elem, name ) {
      -			var ret;
      -			ret = elem.getAttributeNode( name );
      -			return ret && ( fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified ) ?
      -				ret.nodeValue :
      -				undefined;
      -		},
      -		set: function( elem, value, name ) {
      -			// Set the existing or create a new attribute node
      -			var ret = elem.getAttributeNode( name );
      -			if ( !ret ) {
      -				ret = document.createAttribute( name );
      -				elem.setAttributeNode( ret );
      -			}
      -			return ( ret.nodeValue = value + "" );
      -		}
      -	};
      -
      -	// Apply the nodeHook to tabindex
      -	jQuery.attrHooks.tabindex.set = nodeHook.set;
      -
      -	// Set width and height to auto instead of 0 on empty string( Bug #8150 )
      -	// This is for removals
      -	jQuery.each([ "width", "height" ], function( i, name ) {
      -		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
      -			set: function( elem, value ) {
      -				if ( value === "" ) {
      -					elem.setAttribute( name, "auto" );
      -					return value;
      -				}
      -			}
      -		});
      -	});
      -
      -	// Set contenteditable to false on removals(#10429)
      -	// Setting to empty string throws an error as an invalid value
      -	jQuery.attrHooks.contenteditable = {
      -		get: nodeHook.get,
      -		set: function( elem, value, name ) {
      -			if ( value === "" ) {
      -				value = "false";
      -			}
      -			nodeHook.set( elem, value, name );
      -		}
      -	};
      -}
      -
      -
      -// Some attributes require a special call on IE
      -if ( !jQuery.support.hrefNormalized ) {
      -	jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
      -		jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
      -			get: function( elem ) {
      -				var ret = elem.getAttribute( name, 2 );
      -				return ret === null ? undefined : ret;
      -			}
      -		});
      -	});
      -}
      -
      -if ( !jQuery.support.style ) {
      -	jQuery.attrHooks.style = {
      -		get: function( elem ) {
      -			// Return undefined in the case of empty string
      -			// Normalize to lowercase since IE uppercases css property names
      -			return elem.style.cssText.toLowerCase() || undefined;
      -		},
      -		set: function( elem, value ) {
      -			return ( elem.style.cssText = "" + value );
      -		}
      -	};
      -}
      -
      -// Safari mis-reports the default selected property of an option
      -// Accessing the parent's selectedIndex property fixes it
      -if ( !jQuery.support.optSelected ) {
      -	jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
      -		get: function( elem ) {
      -			var parent = elem.parentNode;
      -
      -			if ( parent ) {
      -				parent.selectedIndex;
      -
      -				// Make sure that it also works with optgroups, see #5701
      -				if ( parent.parentNode ) {
      -					parent.parentNode.selectedIndex;
      -				}
      -			}
      -			return null;
      -		}
      -	});
      -}
      -
      -// IE6/7 call enctype encoding
      -if ( !jQuery.support.enctype ) {
      -	jQuery.propFix.enctype = "encoding";
      -}
      -
      -// Radios and checkboxes getter/setter
      -if ( !jQuery.support.checkOn ) {
      -	jQuery.each([ "radio", "checkbox" ], function() {
      -		jQuery.valHooks[ this ] = {
      -			get: function( elem ) {
      -				// Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
      -				return elem.getAttribute("value") === null ? "on" : elem.value;
      -			}
      -		};
      -	});
      -}
      -jQuery.each([ "radio", "checkbox" ], function() {
      -	jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
      -		set: function( elem, value ) {
      -			if ( jQuery.isArray( value ) ) {
      -				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
      -			}
      -		}
      -	});
      -});
      -
      -
      -
      -
      -var rformElems = /^(?:textarea|input|select)$/i,
      -	rtypenamespace = /^([^\.]*)?(?:\.(.+))?$/,
      -	rhoverHack = /(?:^|\s)hover(\.\S+)?\b/,
      -	rkeyEvent = /^key/,
      -	rmouseEvent = /^(?:mouse|contextmenu)|click/,
      -	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
      -	rquickIs = /^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,
      -	quickParse = function( selector ) {
      -		var quick = rquickIs.exec( selector );
      -		if ( quick ) {
      -			//   0  1    2   3
      -			// [ _, tag, id, class ]
      -			quick[1] = ( quick[1] || "" ).toLowerCase();
      -			quick[3] = quick[3] && new RegExp( "(?:^|\\s)" + quick[3] + "(?:\\s|$)" );
      -		}
      -		return quick;
      -	},
      -	quickIs = function( elem, m ) {
      -		var attrs = elem.attributes || {};
      -		return (
      -			(!m[1] || elem.nodeName.toLowerCase() === m[1]) &&
      -			(!m[2] || (attrs.id || {}).value === m[2]) &&
      -			(!m[3] || m[3].test( (attrs[ "class" ] || {}).value ))
      -		);
      -	},
      -	hoverHack = function( events ) {
      -		return jQuery.event.special.hover ? events : events.replace( rhoverHack, "mouseenter$1 mouseleave$1" );
      -	};
      -
      -/*
      - * Helper functions for managing events -- not part of the public interface.
      - * Props to Dean Edwards' addEvent library for many of the ideas.
      - */
      -jQuery.event = {
      -
      -	add: function( elem, types, handler, data, selector ) {
      -
      -		var elemData, eventHandle, events,
      -			t, tns, type, namespaces, handleObj,
      -			handleObjIn, quick, handlers, special;
      -
      -		// Don't attach events to noData or text/comment nodes (allow plain objects tho)
      -		if ( elem.nodeType === 3 || elem.nodeType === 8 || !types || !handler || !(elemData = jQuery._data( elem )) ) {
      -			return;
      -		}
      -
      -		// Caller can pass in an object of custom data in lieu of the handler
      -		if ( handler.handler ) {
      -			handleObjIn = handler;
      -			handler = handleObjIn.handler;
      -			selector = handleObjIn.selector;
      -		}
      -
      -		// Make sure that the handler has a unique ID, used to find/remove it later
      -		if ( !handler.guid ) {
      -			handler.guid = jQuery.guid++;
      -		}
      -
      -		// Init the element's event structure and main handler, if this is the first
      -		events = elemData.events;
      -		if ( !events ) {
      -			elemData.events = events = {};
      -		}
      -		eventHandle = elemData.handle;
      -		if ( !eventHandle ) {
      -			elemData.handle = eventHandle = function( e ) {
      -				// Discard the second event of a jQuery.event.trigger() and
      -				// when an event is called after a page has unloaded
      -				return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
      -					jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
      -					undefined;
      -			};
      -			// Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
      -			eventHandle.elem = elem;
      -		}
      -
      -		// Handle multiple events separated by a space
      -		// jQuery(...).bind("mouseover mouseout", fn);
      -		types = jQuery.trim( hoverHack(types) ).split( " " );
      -		for ( t = 0; t < types.length; t++ ) {
      -
      -			tns = rtypenamespace.exec( types[t] ) || [];
      -			type = tns[1];
      -			namespaces = ( tns[2] || "" ).split( "." ).sort();
      -
      -			// If event changes its type, use the special event handlers for the changed type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// If selector defined, determine special event api type, otherwise given type
      -			type = ( selector ? special.delegateType : special.bindType ) || type;
      -
      -			// Update special based on newly reset type
      -			special = jQuery.event.special[ type ] || {};
      -
      -			// handleObj is passed to all event handlers
      -			handleObj = jQuery.extend({
      -				type: type,
      -				origType: tns[1],
      -				data: data,
      -				handler: handler,
      -				guid: handler.guid,
      -				selector: selector,
      -				quick: selector && quickParse( selector ),
      -				namespace: namespaces.join(".")
      -			}, handleObjIn );
      -
      -			// Init the event handler queue if we're the first
      -			handlers = events[ type ];
      -			if ( !handlers ) {
      -				handlers = events[ type ] = [];
      -				handlers.delegateCount = 0;
      -
      -				// Only use addEventListener/attachEvent if the special events handler returns false
      -				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
      -					// Bind the global event handler to the element
      -					if ( elem.addEventListener ) {
      -						elem.addEventListener( type, eventHandle, false );
      -
      -					} else if ( elem.attachEvent ) {
      -						elem.attachEvent( "on" + type, eventHandle );
      -					}
      -				}
      -			}
      -
      -			if ( special.add ) {
      -				special.add.call( elem, handleObj );
      -
      -				if ( !handleObj.handler.guid ) {
      -					handleObj.handler.guid = handler.guid;
      -				}
      -			}
      -
      -			// Add to the element's handler list, delegates in front
      -			if ( selector ) {
      -				handlers.splice( handlers.delegateCount++, 0, handleObj );
      -			} else {
      -				handlers.push( handleObj );
      -			}
      -
      -			// Keep track of which events have ever been used, for event optimization
      -			jQuery.event.global[ type ] = true;
      -		}
      -
      -		// Nullify elem to prevent memory leaks in IE
      -		elem = null;
      -	},
      -
      -	global: {},
      -
      -	// Detach an event or set of events from an element
      -	remove: function( elem, types, handler, selector, mappedTypes ) {
      -
      -		var elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
      -			t, tns, type, origType, namespaces, origCount,
      -			j, events, special, handle, eventType, handleObj;
      -
      -		if ( !elemData || !(events = elemData.events) ) {
      -			return;
      -		}
      -
      -		// Once for each type.namespace in types; type may be omitted
      -		types = jQuery.trim( hoverHack( types || "" ) ).split(" ");
      -		for ( t = 0; t < types.length; t++ ) {
      -			tns = rtypenamespace.exec( types[t] ) || [];
      -			type = origType = tns[1];
      -			namespaces = tns[2];
      -
      -			// Unbind all events (on this namespace, if provided) for the element
      -			if ( !type ) {
      -				for ( type in events ) {
      -					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
      -				}
      -				continue;
      -			}
      -
      -			special = jQuery.event.special[ type ] || {};
      -			type = ( selector? special.delegateType : special.bindType ) || type;
      -			eventType = events[ type ] || [];
      -			origCount = eventType.length;
      -			namespaces = namespaces ? new RegExp("(^|\\.)" + namespaces.split(".").sort().join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
      -
      -			// Remove matching events
      -			for ( j = 0; j < eventType.length; j++ ) {
      -				handleObj = eventType[ j ];
      -
      -				if ( ( mappedTypes || origType === handleObj.origType ) &&
      -					 ( !handler || handler.guid === handleObj.guid ) &&
      -					 ( !namespaces || namespaces.test( handleObj.namespace ) ) &&
      -					 ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
      -					eventType.splice( j--, 1 );
      -
      -					if ( handleObj.selector ) {
      -						eventType.delegateCount--;
      -					}
      -					if ( special.remove ) {
      -						special.remove.call( elem, handleObj );
      -					}
      -				}
      -			}
      -
      -			// Remove generic event handler if we removed something and no more handlers exist
      -			// (avoids potential for endless recursion during removal of special event handlers)
      -			if ( eventType.length === 0 && origCount !== eventType.length ) {
      -				if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
      -					jQuery.removeEvent( elem, type, elemData.handle );
      -				}
      -
      -				delete events[ type ];
      -			}
      -		}
      -
      -		// Remove the expando if it's no longer used
      -		if ( jQuery.isEmptyObject( events ) ) {
      -			handle = elemData.handle;
      -			if ( handle ) {
      -				handle.elem = null;
      -			}
      -
      -			// removeData also checks for emptiness and clears the expando if empty
      -			// so use it instead of delete
      -			jQuery.removeData( elem, [ "events", "handle" ], true );
      -		}
      -	},
      -
      -	// Events that are safe to short-circuit if no handlers are attached.
      -	// Native DOM events should not be added, they may have inline handlers.
      -	customEvent: {
      -		"getData": true,
      -		"setData": true,
      -		"changeData": true
      -	},
      -
      -	trigger: function( event, data, elem, onlyHandlers ) {
      -		// Don't do events on text and comment nodes
      -		if ( elem && (elem.nodeType === 3 || elem.nodeType === 8) ) {
      -			return;
      -		}
      -
      -		// Event object or event type
      -		var type = event.type || event,
      -			namespaces = [],
      -			cache, exclusive, i, cur, old, ontype, special, handle, eventPath, bubbleType;
      -
      -		// focus/blur morphs to focusin/out; ensure we're not firing them right now
      -		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
      -			return;
      -		}
      -
      -		if ( type.indexOf( "!" ) >= 0 ) {
      -			// Exclusive events trigger only for the exact event (no namespaces)
      -			type = type.slice(0, -1);
      -			exclusive = true;
      -		}
      -
      -		if ( type.indexOf( "." ) >= 0 ) {
      -			// Namespaced trigger; create a regexp to match event type in handle()
      -			namespaces = type.split(".");
      -			type = namespaces.shift();
      -			namespaces.sort();
      -		}
      -
      -		if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
      -			// No jQuery handlers for this event type, and it can't have inline handlers
      -			return;
      -		}
      -
      -		// Caller can pass in an Event, Object, or just an event type string
      -		event = typeof event === "object" ?
      -			// jQuery.Event object
      -			event[ jQuery.expando ] ? event :
      -			// Object literal
      -			new jQuery.Event( type, event ) :
      -			// Just the event type (string)
      -			new jQuery.Event( type );
      -
      -		event.type = type;
      -		event.isTrigger = true;
      -		event.exclusive = exclusive;
      -		event.namespace = namespaces.join( "." );
      -		event.namespace_re = event.namespace? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)") : null;
      -		ontype = type.indexOf( ":" ) < 0 ? "on" + type : "";
      -
      -		// Handle a global trigger
      -		if ( !elem ) {
      -
      -			// TODO: Stop taunting the data cache; remove global events and always attach to document
      -			cache = jQuery.cache;
      -			for ( i in cache ) {
      -				if ( cache[ i ].events && cache[ i ].events[ type ] ) {
      -					jQuery.event.trigger( event, data, cache[ i ].handle.elem, true );
      -				}
      -			}
      -			return;
      -		}
      -
      -		// Clean up the event in case it is being reused
      -		event.result = undefined;
      -		if ( !event.target ) {
      -			event.target = elem;
      -		}
      -
      -		// Clone any incoming data and prepend the event, creating the handler arg list
      -		data = data != null ? jQuery.makeArray( data ) : [];
      -		data.unshift( event );
      -
      -		// Allow special events to draw outside the lines
      -		special = jQuery.event.special[ type ] || {};
      -		if ( special.trigger && special.trigger.apply( elem, data ) === false ) {
      -			return;
      -		}
      -
      -		// Determine event propagation path in advance, per W3C events spec (#9951)
      -		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
      -		eventPath = [[ elem, special.bindType || type ]];
      -		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
      -
      -			bubbleType = special.delegateType || type;
      -			cur = rfocusMorph.test( bubbleType + type ) ? elem : elem.parentNode;
      -			old = null;
      -			for ( ; cur; cur = cur.parentNode ) {
      -				eventPath.push([ cur, bubbleType ]);
      -				old = cur;
      -			}
      -
      -			// Only add window if we got to document (e.g., not plain obj or detached DOM)
      -			if ( old && old === elem.ownerDocument ) {
      -				eventPath.push([ old.defaultView || old.parentWindow || window, bubbleType ]);
      -			}
      -		}
      -
      -		// Fire handlers on the event path
      -		for ( i = 0; i < eventPath.length && !event.isPropagationStopped(); i++ ) {
      -
      -			cur = eventPath[i][0];
      -			event.type = eventPath[i][1];
      -
      -			handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
      -			if ( handle ) {
      -				handle.apply( cur, data );
      -			}
      -			// Note that this is a bare JS function and not a jQuery handler
      -			handle = ontype && cur[ ontype ];
      -			if ( handle && jQuery.acceptData( cur ) && handle.apply( cur, data ) === false ) {
      -				event.preventDefault();
      -			}
      -		}
      -		event.type = type;
      -
      -		// If nobody prevented the default action, do it now
      -		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
      -
      -			if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
      -				!(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
      -
      -				// Call a native DOM method on the target with the same name name as the event.
      -				// Can't use an .isFunction() check here because IE6/7 fails that test.
      -				// Don't do default actions on window, that's where global variables be (#6170)
      -				// IE<9 dies on focus/blur to hidden element (#1486)
      -				if ( ontype && elem[ type ] && ((type !== "focus" && type !== "blur") || event.target.offsetWidth !== 0) && !jQuery.isWindow( elem ) ) {
      -
      -					// Don't re-trigger an onFOO event when we call its FOO() method
      -					old = elem[ ontype ];
      -
      -					if ( old ) {
      -						elem[ ontype ] = null;
      -					}
      -
      -					// Prevent re-triggering of the same event, since we already bubbled it above
      -					jQuery.event.triggered = type;
      -					elem[ type ]();
      -					jQuery.event.triggered = undefined;
      -
      -					if ( old ) {
      -						elem[ ontype ] = old;
      -					}
      -				}
      -			}
      -		}
      -
      -		return event.result;
      -	},
      -
      -	dispatch: function( event ) {
      -
      -		// Make a writable jQuery.Event from the native event object
      -		event = jQuery.event.fix( event || window.event );
      -
      -		var handlers = ( (jQuery._data( this, "events" ) || {} )[ event.type ] || []),
      -			delegateCount = handlers.delegateCount,
      -			args = [].slice.call( arguments, 0 ),
      -			run_all = !event.exclusive && !event.namespace,
      -			special = jQuery.event.special[ event.type ] || {},
      -			handlerQueue = [],
      -			i, j, cur, jqcur, ret, selMatch, matched, matches, handleObj, sel, related;
      -
      -		// Use the fix-ed jQuery.Event rather than the (read-only) native event
      -		args[0] = event;
      -		event.delegateTarget = this;
      -
      -		// Call the preDispatch hook for the mapped type, and let it bail if desired
      -		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
      -			return;
      -		}
      -
      -		// Determine handlers that should run if there are delegated events
      -		// Avoid non-left-click bubbling in Firefox (#3861)
      -		if ( delegateCount && !(event.button && event.type === "click") ) {
      -
      -			// Pregenerate a single jQuery object for reuse with .is()
      -			jqcur = jQuery(this);
      -			jqcur.context = this.ownerDocument || this;
      -
      -			for ( cur = event.target; cur != this; cur = cur.parentNode || this ) {
      -
      -				// Don't process events on disabled elements (#6911, #8165)
      -				if ( cur.disabled !== true ) {
      -					selMatch = {};
      -					matches = [];
      -					jqcur[0] = cur;
      -					for ( i = 0; i < delegateCount; i++ ) {
      -						handleObj = handlers[ i ];
      -						sel = handleObj.selector;
      -
      -						if ( selMatch[ sel ] === undefined ) {
      -							selMatch[ sel ] = (
      -								handleObj.quick ? quickIs( cur, handleObj.quick ) : jqcur.is( sel )
      -							);
      -						}
      -						if ( selMatch[ sel ] ) {
      -							matches.push( handleObj );
      -						}
      -					}
      -					if ( matches.length ) {
      -						handlerQueue.push({ elem: cur, matches: matches });
      -					}
      -				}
      -			}
      -		}
      -
      -		// Add the remaining (directly-bound) handlers
      -		if ( handlers.length > delegateCount ) {
      -			handlerQueue.push({ elem: this, matches: handlers.slice( delegateCount ) });
      -		}
      -
      -		// Run delegates first; they may want to stop propagation beneath us
      -		for ( i = 0; i < handlerQueue.length && !event.isPropagationStopped(); i++ ) {
      -			matched = handlerQueue[ i ];
      -			event.currentTarget = matched.elem;
      -
      -			for ( j = 0; j < matched.matches.length && !event.isImmediatePropagationStopped(); j++ ) {
      -				handleObj = matched.matches[ j ];
      -
      -				// Triggered event must either 1) be non-exclusive and have no namespace, or
      -				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
      -				if ( run_all || (!event.namespace && !handleObj.namespace) || event.namespace_re && event.namespace_re.test( handleObj.namespace ) ) {
      -
      -					event.data = handleObj.data;
      -					event.handleObj = handleObj;
      -
      -					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
      -							.apply( matched.elem, args );
      -
      -					if ( ret !== undefined ) {
      -						event.result = ret;
      -						if ( ret === false ) {
      -							event.preventDefault();
      -							event.stopPropagation();
      -						}
      -					}
      -				}
      -			}
      -		}
      -
      -		// Call the postDispatch hook for the mapped type
      -		if ( special.postDispatch ) {
      -			special.postDispatch.call( this, event );
      -		}
      -
      -		return event.result;
      -	},
      -
      -	// Includes some event props shared by KeyEvent and MouseEvent
      -	// *** attrChange attrName relatedNode srcElement  are not normalized, non-W3C, deprecated, will be removed in 1.8 ***
      -	props: "attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
      -
      -	fixHooks: {},
      -
      -	keyHooks: {
      -		props: "char charCode key keyCode".split(" "),
      -		filter: function( event, original ) {
      -
      -			// Add which for key events
      -			if ( event.which == null ) {
      -				event.which = original.charCode != null ? original.charCode : original.keyCode;
      -			}
      -
      -			return event;
      -		}
      -	},
      -
      -	mouseHooks: {
      -		props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
      -		filter: function( event, original ) {
      -			var eventDoc, doc, body,
      -				button = original.button,
      -				fromElement = original.fromElement;
      -
      -			// Calculate pageX/Y if missing and clientX/Y available
      -			if ( event.pageX == null && original.clientX != null ) {
      -				eventDoc = event.target.ownerDocument || document;
      -				doc = eventDoc.documentElement;
      -				body = eventDoc.body;
      -
      -				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
      -				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
      -			}
      -
      -			// Add relatedTarget, if necessary
      -			if ( !event.relatedTarget && fromElement ) {
      -				event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
      -			}
      -
      -			// Add which for click: 1 === left; 2 === middle; 3 === right
      -			// Note: button is not normalized, so don't use it
      -			if ( !event.which && button !== undefined ) {
      -				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
      -			}
      -
      -			return event;
      -		}
      -	},
      -
      -	fix: function( event ) {
      -		if ( event[ jQuery.expando ] ) {
      -			return event;
      -		}
      -
      -		// Create a writable copy of the event object and normalize some properties
      -		var i, prop,
      -			originalEvent = event,
      -			fixHook = jQuery.event.fixHooks[ event.type ] || {},
      -			copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
      -
      -		event = jQuery.Event( originalEvent );
      -
      -		for ( i = copy.length; i; ) {
      -			prop = copy[ --i ];
      -			event[ prop ] = originalEvent[ prop ];
      -		}
      -
      -		// Fix target property, if necessary (#1925, IE 6/7/8 & Safari2)
      -		if ( !event.target ) {
      -			event.target = originalEvent.srcElement || document;
      -		}
      -
      -		// Target should not be a text node (#504, Safari)
      -		if ( event.target.nodeType === 3 ) {
      -			event.target = event.target.parentNode;
      -		}
      -
      -		// For mouse/key events; add metaKey if it's not there (#3368, IE6/7/8)
      -		if ( event.metaKey === undefined ) {
      -			event.metaKey = event.ctrlKey;
      -		}
      -
      -		return fixHook.filter? fixHook.filter( event, originalEvent ) : event;
      -	},
      -
      -	special: {
      -		ready: {
      -			// Make sure the ready event is setup
      -			setup: jQuery.bindReady
      -		},
      -
      -		load: {
      -			// Prevent triggered image.load events from bubbling to window.load
      -			noBubble: true
      -		},
      -
      -		focus: {
      -			delegateType: "focusin"
      -		},
      -		blur: {
      -			delegateType: "focusout"
      -		},
      -
      -		beforeunload: {
      -			setup: function( data, namespaces, eventHandle ) {
      -				// We only want to do this special case on windows
      -				if ( jQuery.isWindow( this ) ) {
      -					this.onbeforeunload = eventHandle;
      -				}
      -			},
      -
      -			teardown: function( namespaces, eventHandle ) {
      -				if ( this.onbeforeunload === eventHandle ) {
      -					this.onbeforeunload = null;
      -				}
      -			}
      -		}
      -	},
      -
      -	simulate: function( type, elem, event, bubble ) {
      -		// Piggyback on a donor event to simulate a different one.
      -		// Fake originalEvent to avoid donor's stopPropagation, but if the
      -		// simulated event prevents default then we do the same on the donor.
      -		var e = jQuery.extend(
      -			new jQuery.Event(),
      -			event,
      -			{ type: type,
      -				isSimulated: true,
      -				originalEvent: {}
      -			}
      -		);
      -		if ( bubble ) {
      -			jQuery.event.trigger( e, null, elem );
      -		} else {
      -			jQuery.event.dispatch.call( elem, e );
      -		}
      -		if ( e.isDefaultPrevented() ) {
      -			event.preventDefault();
      -		}
      -	}
      -};
      -
      -// Some plugins are using, but it's undocumented/deprecated and will be removed.
      -// The 1.7 special event interface should provide all the hooks needed now.
      -jQuery.event.handle = jQuery.event.dispatch;
      -
      -jQuery.removeEvent = document.removeEventListener ?
      -	function( elem, type, handle ) {
      -		if ( elem.removeEventListener ) {
      -			elem.removeEventListener( type, handle, false );
      -		}
      -	} :
      -	function( elem, type, handle ) {
      -		if ( elem.detachEvent ) {
      -			elem.detachEvent( "on" + type, handle );
      -		}
      -	};
      -
      -jQuery.Event = function( src, props ) {
      -	// Allow instantiation without the 'new' keyword
      -	if ( !(this instanceof jQuery.Event) ) {
      -		return new jQuery.Event( src, props );
      -	}
      -
      -	// Event object
      -	if ( src && src.type ) {
      -		this.originalEvent = src;
      -		this.type = src.type;
      -
      -		// Events bubbling up the document may have been marked as prevented
      -		// by a handler lower down the tree; reflect the correct value.
      -		this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
      -			src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
      -
      -	// Event type
      -	} else {
      -		this.type = src;
      -	}
      -
      -	// Put explicitly provided properties onto the event object
      -	if ( props ) {
      -		jQuery.extend( this, props );
      -	}
      -
      -	// Create a timestamp if incoming event doesn't have one
      -	this.timeStamp = src && src.timeStamp || jQuery.now();
      -
      -	// Mark it as fixed
      -	this[ jQuery.expando ] = true;
      -};
      -
      -function returnFalse() {
      -	return false;
      -}
      -function returnTrue() {
      -	return true;
      -}
      -
      -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
      -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      -jQuery.Event.prototype = {
      -	preventDefault: function() {
      -		this.isDefaultPrevented = returnTrue;
      -
      -		var e = this.originalEvent;
      -		if ( !e ) {
      -			return;
      -		}
      -
      -		// if preventDefault exists run it on the original event
      -		if ( e.preventDefault ) {
      -			e.preventDefault();
      -
      -		// otherwise set the returnValue property of the original event to false (IE)
      -		} else {
      -			e.returnValue = false;
      -		}
      -	},
      -	stopPropagation: function() {
      -		this.isPropagationStopped = returnTrue;
      -
      -		var e = this.originalEvent;
      -		if ( !e ) {
      -			return;
      -		}
      -		// if stopPropagation exists run it on the original event
      -		if ( e.stopPropagation ) {
      -			e.stopPropagation();
      -		}
      -		// otherwise set the cancelBubble property of the original event to true (IE)
      -		e.cancelBubble = true;
      -	},
      -	stopImmediatePropagation: function() {
      -		this.isImmediatePropagationStopped = returnTrue;
      -		this.stopPropagation();
      -	},
      -	isDefaultPrevented: returnFalse,
      -	isPropagationStopped: returnFalse,
      -	isImmediatePropagationStopped: returnFalse
      -};
      -
      -// Create mouseenter/leave events using mouseover/out and event-time checks
      -jQuery.each({
      -	mouseenter: "mouseover",
      -	mouseleave: "mouseout"
      -}, function( orig, fix ) {
      -	jQuery.event.special[ orig ] = {
      -		delegateType: fix,
      -		bindType: fix,
      -
      -		handle: function( event ) {
      -			var target = this,
      -				related = event.relatedTarget,
      -				handleObj = event.handleObj,
      -				selector = handleObj.selector,
      -				ret;
      -
      -			// For mousenter/leave call the handler if related is outside the target.
      -			// NB: No relatedTarget if the mouse left/entered the browser window
      -			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
      -				event.type = handleObj.origType;
      -				ret = handleObj.handler.apply( this, arguments );
      -				event.type = fix;
      -			}
      -			return ret;
      -		}
      -	};
      -});
      -
      -// IE submit delegation
      -if ( !jQuery.support.submitBubbles ) {
      -
      -	jQuery.event.special.submit = {
      -		setup: function() {
      -			// Only need this for delegated form submit events
      -			if ( jQuery.nodeName( this, "form" ) ) {
      -				return false;
      -			}
      -
      -			// Lazy-add a submit handler when a descendant form may potentially be submitted
      -			jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
      -				// Node name check avoids a VML-related crash in IE (#9807)
      -				var elem = e.target,
      -					form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
      -				if ( form && !form._submit_attached ) {
      -					jQuery.event.add( form, "submit._submit", function( event ) {
      -						event._submit_bubble = true;
      -					});
      -					form._submit_attached = true;
      -				}
      -			});
      -			// return undefined since we don't need an event listener
      -		},
      -
      -		postDispatch: function( event ) {
      -			// If form was submitted by the user, bubble the event up the tree
      -			if ( event._submit_bubble ) {
      -				delete event._submit_bubble;
      -				if ( this.parentNode && !event.isTrigger ) {
      -					jQuery.event.simulate( "submit", this.parentNode, event, true );
      -				}
      -			}
      -		},
      -
      -		teardown: function() {
      -			// Only need this for delegated form submit events
      -			if ( jQuery.nodeName( this, "form" ) ) {
      -				return false;
      -			}
      -
      -			// Remove delegated handlers; cleanData eventually reaps submit handlers attached above
      -			jQuery.event.remove( this, "._submit" );
      -		}
      -	};
      -}
      -
      -// IE change delegation and checkbox/radio fix
      -if ( !jQuery.support.changeBubbles ) {
      -
      -	jQuery.event.special.change = {
      -
      -		setup: function() {
      -
      -			if ( rformElems.test( this.nodeName ) ) {
      -				// IE doesn't fire change on a check/radio until blur; trigger it on click
      -				// after a propertychange. Eat the blur-change in special.change.handle.
      -				// This still fires onchange a second time for check/radio after blur.
      -				if ( this.type === "checkbox" || this.type === "radio" ) {
      -					jQuery.event.add( this, "propertychange._change", function( event ) {
      -						if ( event.originalEvent.propertyName === "checked" ) {
      -							this._just_changed = true;
      -						}
      -					});
      -					jQuery.event.add( this, "click._change", function( event ) {
      -						if ( this._just_changed && !event.isTrigger ) {
      -							this._just_changed = false;
      -							jQuery.event.simulate( "change", this, event, true );
      -						}
      -					});
      -				}
      -				return false;
      -			}
      -			// Delegated event; lazy-add a change handler on descendant inputs
      -			jQuery.event.add( this, "beforeactivate._change", function( e ) {
      -				var elem = e.target;
      -
      -				if ( rformElems.test( elem.nodeName ) && !elem._change_attached ) {
      -					jQuery.event.add( elem, "change._change", function( event ) {
      -						if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
      -							jQuery.event.simulate( "change", this.parentNode, event, true );
      -						}
      -					});
      -					elem._change_attached = true;
      -				}
      -			});
      -		},
      -
      -		handle: function( event ) {
      -			var elem = event.target;
      -
      -			// Swallow native change events from checkbox/radio, we already triggered them above
      -			if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
      -				return event.handleObj.handler.apply( this, arguments );
      -			}
      -		},
      -
      -		teardown: function() {
      -			jQuery.event.remove( this, "._change" );
      -
      -			return rformElems.test( this.nodeName );
      -		}
      -	};
      -}
      -
      -// Create "bubbling" focus and blur events
      -if ( !jQuery.support.focusinBubbles ) {
      -	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
      -
      -		// Attach a single capturing handler while someone wants focusin/focusout
      -		var attaches = 0,
      -			handler = function( event ) {
      -				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
      -			};
      -
      -		jQuery.event.special[ fix ] = {
      -			setup: function() {
      -				if ( attaches++ === 0 ) {
      -					document.addEventListener( orig, handler, true );
      -				}
      -			},
      -			teardown: function() {
      -				if ( --attaches === 0 ) {
      -					document.removeEventListener( orig, handler, true );
      -				}
      -			}
      -		};
      -	});
      -}
      -
      -jQuery.fn.extend({
      -
      -	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
      -		var origFn, type;
      -
      -		// Types can be a map of types/handlers
      -		if ( typeof types === "object" ) {
      -			// ( types-Object, selector, data )
      -			if ( typeof selector !== "string" ) { // && selector != null
      -				// ( types-Object, data )
      -				data = data || selector;
      -				selector = undefined;
      -			}
      -			for ( type in types ) {
      -				this.on( type, selector, data, types[ type ], one );
      -			}
      -			return this;
      -		}
      -
      -		if ( data == null && fn == null ) {
      -			// ( types, fn )
      -			fn = selector;
      -			data = selector = undefined;
      -		} else if ( fn == null ) {
      -			if ( typeof selector === "string" ) {
      -				// ( types, selector, fn )
      -				fn = data;
      -				data = undefined;
      -			} else {
      -				// ( types, data, fn )
      -				fn = data;
      -				data = selector;
      -				selector = undefined;
      -			}
      -		}
      -		if ( fn === false ) {
      -			fn = returnFalse;
      -		} else if ( !fn ) {
      -			return this;
      -		}
      -
      -		if ( one === 1 ) {
      -			origFn = fn;
      -			fn = function( event ) {
      -				// Can use an empty set, since event contains the info
      -				jQuery().off( event );
      -				return origFn.apply( this, arguments );
      -			};
      -			// Use same guid so caller can remove using origFn
      -			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
      -		}
      -		return this.each( function() {
      -			jQuery.event.add( this, types, fn, data, selector );
      -		});
      -	},
      -	one: function( types, selector, data, fn ) {
      -		return this.on( types, selector, data, fn, 1 );
      -	},
      -	off: function( types, selector, fn ) {
      -		if ( types && types.preventDefault && types.handleObj ) {
      -			// ( event )  dispatched jQuery.Event
      -			var handleObj = types.handleObj;
      -			jQuery( types.delegateTarget ).off(
      -				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
      -				handleObj.selector,
      -				handleObj.handler
      -			);
      -			return this;
      -		}
      -		if ( typeof types === "object" ) {
      -			// ( types-object [, selector] )
      -			for ( var type in types ) {
      -				this.off( type, selector, types[ type ] );
      -			}
      -			return this;
      -		}
      -		if ( selector === false || typeof selector === "function" ) {
      -			// ( types [, fn] )
      -			fn = selector;
      -			selector = undefined;
      -		}
      -		if ( fn === false ) {
      -			fn = returnFalse;
      -		}
      -		return this.each(function() {
      -			jQuery.event.remove( this, types, fn, selector );
      -		});
      -	},
      -
      -	bind: function( types, data, fn ) {
      -		return this.on( types, null, data, fn );
      -	},
      -	unbind: function( types, fn ) {
      -		return this.off( types, null, fn );
      -	},
      -
      -	live: function( types, data, fn ) {
      -		jQuery( this.context ).on( types, this.selector, data, fn );
      -		return this;
      -	},
      -	die: function( types, fn ) {
      -		jQuery( this.context ).off( types, this.selector || "**", fn );
      -		return this;
      -	},
      -
      -	delegate: function( selector, types, data, fn ) {
      -		return this.on( types, selector, data, fn );
      -	},
      -	undelegate: function( selector, types, fn ) {
      -		// ( namespace ) or ( selector, types [, fn] )
      -		return arguments.length == 1? this.off( selector, "**" ) : this.off( types, selector, fn );
      -	},
      -
      -	trigger: function( type, data ) {
      -		return this.each(function() {
      -			jQuery.event.trigger( type, data, this );
      -		});
      -	},
      -	triggerHandler: function( type, data ) {
      -		if ( this[0] ) {
      -			return jQuery.event.trigger( type, data, this[0], true );
      -		}
      -	},
      -
      -	toggle: function( fn ) {
      -		// Save reference to arguments for access in closure
      -		var args = arguments,
      -			guid = fn.guid || jQuery.guid++,
      -			i = 0,
      -			toggler = function( event ) {
      -				// Figure out which function to execute
      -				var lastToggle = ( jQuery._data( this, "lastToggle" + fn.guid ) || 0 ) % i;
      -				jQuery._data( this, "lastToggle" + fn.guid, lastToggle + 1 );
      -
      -				// Make sure that clicks stop
      -				event.preventDefault();
      -
      -				// and execute the function
      -				return args[ lastToggle ].apply( this, arguments ) || false;
      -			};
      -
      -		// link all the functions, so any of them can unbind this click handler
      -		toggler.guid = guid;
      -		while ( i < args.length ) {
      -			args[ i++ ].guid = guid;
      -		}
      -
      -		return this.click( toggler );
      -	},
      -
      -	hover: function( fnOver, fnOut ) {
      -		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
      -	}
      -});
      -
      -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
      -	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
      -	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
      -
      -	// Handle event binding
      -	jQuery.fn[ name ] = function( data, fn ) {
      -		if ( fn == null ) {
      -			fn = data;
      -			data = null;
      -		}
      -
      -		return arguments.length > 0 ?
      -			this.on( name, null, data, fn ) :
      -			this.trigger( name );
      -	};
      -
      -	if ( jQuery.attrFn ) {
      -		jQuery.attrFn[ name ] = true;
      -	}
      -
      -	if ( rkeyEvent.test( name ) ) {
      -		jQuery.event.fixHooks[ name ] = jQuery.event.keyHooks;
      -	}
      -
      -	if ( rmouseEvent.test( name ) ) {
      -		jQuery.event.fixHooks[ name ] = jQuery.event.mouseHooks;
      -	}
      -});
      -
      -
      -
      -/*!
      - * Sizzle CSS Selector Engine
      - *  Copyright 2011, The Dojo Foundation
      - *  Released under the MIT, BSD, and GPL Licenses.
      - *  More information: http://sizzlejs.com/
      - */
      -(function(){
      -
      -var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
      -	expando = "sizcache" + (Math.random() + '').replace('.', ''),
      -	done = 0,
      -	toString = Object.prototype.toString,
      -	hasDuplicate = false,
      -	baseHasDuplicate = true,
      -	rBackslash = /\\/g,
      -	rReturn = /\r\n/g,
      -	rNonWord = /\W/;
      -
      -// Here we check if the JavaScript engine is using some sort of
      -// optimization where it does not always call our comparision
      -// function. If that is the case, discard the hasDuplicate value.
      -//   Thus far that includes Google Chrome.
      -[0, 0].sort(function() {
      -	baseHasDuplicate = false;
      -	return 0;
      -});
      -
      -var Sizzle = function( selector, context, results, seed ) {
      -	results = results || [];
      -	context = context || document;
      -
      -	var origContext = context;
      -
      -	if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
      -		return [];
      -	}
      -
      -	if ( !selector || typeof selector !== "string" ) {
      -		return results;
      -	}
      -
      -	var m, set, checkSet, extra, ret, cur, pop, i,
      -		prune = true,
      -		contextXML = Sizzle.isXML( context ),
      -		parts = [],
      -		soFar = selector;
      -
      -	// Reset the position of the chunker regexp (start from head)
      -	do {
      -		chunker.exec( "" );
      -		m = chunker.exec( soFar );
      -
      -		if ( m ) {
      -			soFar = m[3];
      -
      -			parts.push( m[1] );
      -
      -			if ( m[2] ) {
      -				extra = m[3];
      -				break;
      -			}
      -		}
      -	} while ( m );
      -
      -	if ( parts.length > 1 && origPOS.exec( selector ) ) {
      -
      -		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
      -			set = posProcess( parts[0] + parts[1], context, seed );
      -
      -		} else {
      -			set = Expr.relative[ parts[0] ] ?
      -				[ context ] :
      -				Sizzle( parts.shift(), context );
      -
      -			while ( parts.length ) {
      -				selector = parts.shift();
      -
      -				if ( Expr.relative[ selector ] ) {
      -					selector += parts.shift();
      -				}
      -
      -				set = posProcess( selector, set, seed );
      -			}
      -		}
      -
      -	} else {
      -		// Take a shortcut and set the context if the root selector is an ID
      -		// (but not if it'll be faster if the inner selector is an ID)
      -		if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
      -				Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
      -
      -			ret = Sizzle.find( parts.shift(), context, contextXML );
      -			context = ret.expr ?
      -				Sizzle.filter( ret.expr, ret.set )[0] :
      -				ret.set[0];
      -		}
      -
      -		if ( context ) {
      -			ret = seed ?
      -				{ expr: parts.pop(), set: makeArray(seed) } :
      -				Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
      -
      -			set = ret.expr ?
      -				Sizzle.filter( ret.expr, ret.set ) :
      -				ret.set;
      -
      -			if ( parts.length > 0 ) {
      -				checkSet = makeArray( set );
      -
      -			} else {
      -				prune = false;
      -			}
      -
      -			while ( parts.length ) {
      -				cur = parts.pop();
      -				pop = cur;
      -
      -				if ( !Expr.relative[ cur ] ) {
      -					cur = "";
      -				} else {
      -					pop = parts.pop();
      -				}
      -
      -				if ( pop == null ) {
      -					pop = context;
      -				}
      -
      -				Expr.relative[ cur ]( checkSet, pop, contextXML );
      -			}
      -
      -		} else {
      -			checkSet = parts = [];
      -		}
      -	}
      -
      -	if ( !checkSet ) {
      -		checkSet = set;
      -	}
      -
      -	if ( !checkSet ) {
      -		Sizzle.error( cur || selector );
      -	}
      -
      -	if ( toString.call(checkSet) === "[object Array]" ) {
      -		if ( !prune ) {
      -			results.push.apply( results, checkSet );
      -
      -		} else if ( context && context.nodeType === 1 ) {
      -			for ( i = 0; checkSet[i] != null; i++ ) {
      -				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
      -					results.push( set[i] );
      -				}
      -			}
      -
      -		} else {
      -			for ( i = 0; checkSet[i] != null; i++ ) {
      -				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
      -					results.push( set[i] );
      -				}
      -			}
      -		}
      -
      -	} else {
      -		makeArray( checkSet, results );
      -	}
      -
      -	if ( extra ) {
      -		Sizzle( extra, origContext, results, seed );
      -		Sizzle.uniqueSort( results );
      -	}
      -
      -	return results;
      -};
      -
      -Sizzle.uniqueSort = function( results ) {
      -	if ( sortOrder ) {
      -		hasDuplicate = baseHasDuplicate;
      -		results.sort( sortOrder );
      -
      -		if ( hasDuplicate ) {
      -			for ( var i = 1; i < results.length; i++ ) {
      -				if ( results[i] === results[ i - 1 ] ) {
      -					results.splice( i--, 1 );
      -				}
      -			}
      -		}
      -	}
      -
      -	return results;
      -};
      -
      -Sizzle.matches = function( expr, set ) {
      -	return Sizzle( expr, null, null, set );
      -};
      -
      -Sizzle.matchesSelector = function( node, expr ) {
      -	return Sizzle( expr, null, null, [node] ).length > 0;
      -};
      -
      -Sizzle.find = function( expr, context, isXML ) {
      -	var set, i, len, match, type, left;
      -
      -	if ( !expr ) {
      -		return [];
      -	}
      -
      -	for ( i = 0, len = Expr.order.length; i < len; i++ ) {
      -		type = Expr.order[i];
      -
      -		if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
      -			left = match[1];
      -			match.splice( 1, 1 );
      -
      -			if ( left.substr( left.length - 1 ) !== "\\" ) {
      -				match[1] = (match[1] || "").replace( rBackslash, "" );
      -				set = Expr.find[ type ]( match, context, isXML );
      -
      -				if ( set != null ) {
      -					expr = expr.replace( Expr.match[ type ], "" );
      -					break;
      -				}
      -			}
      -		}
      -	}
      -
      -	if ( !set ) {
      -		set = typeof context.getElementsByTagName !== "undefined" ?
      -			context.getElementsByTagName( "*" ) :
      -			[];
      -	}
      -
      -	return { set: set, expr: expr };
      -};
      -
      -Sizzle.filter = function( expr, set, inplace, not ) {
      -	var match, anyFound,
      -		type, found, item, filter, left,
      -		i, pass,
      -		old = expr,
      -		result = [],
      -		curLoop = set,
      -		isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
      -
      -	while ( expr && set.length ) {
      -		for ( type in Expr.filter ) {
      -			if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
      -				filter = Expr.filter[ type ];
      -				left = match[1];
      -
      -				anyFound = false;
      -
      -				match.splice(1,1);
      -
      -				if ( left.substr( left.length - 1 ) === "\\" ) {
      -					continue;
      -				}
      -
      -				if ( curLoop === result ) {
      -					result = [];
      -				}
      -
      -				if ( Expr.preFilter[ type ] ) {
      -					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );
      -
      -					if ( !match ) {
      -						anyFound = found = true;
      -
      -					} else if ( match === true ) {
      -						continue;
      -					}
      -				}
      -
      -				if ( match ) {
      -					for ( i = 0; (item = curLoop[i]) != null; i++ ) {
      -						if ( item ) {
      -							found = filter( item, match, i, curLoop );
      -							pass = not ^ found;
      -
      -							if ( inplace && found != null ) {
      -								if ( pass ) {
      -									anyFound = true;
      -
      -								} else {
      -									curLoop[i] = false;
      -								}
      -
      -							} else if ( pass ) {
      -								result.push( item );
      -								anyFound = true;
      -							}
      -						}
      -					}
      -				}
      -
      -				if ( found !== undefined ) {
      -					if ( !inplace ) {
      -						curLoop = result;
      -					}
      -
      -					expr = expr.replace( Expr.match[ type ], "" );
      -
      -					if ( !anyFound ) {
      -						return [];
      -					}
      -
      -					break;
      -				}
      -			}
      -		}
      -
      -		// Improper expression
      -		if ( expr === old ) {
      -			if ( anyFound == null ) {
      -				Sizzle.error( expr );
      -
      -			} else {
      -				break;
      -			}
      -		}
      -
      -		old = expr;
      -	}
      -
      -	return curLoop;
      -};
      -
      -Sizzle.error = function( msg ) {
      -	throw new Error( "Syntax error, unrecognized expression: " + msg );
      -};
      -
      -/**
      - * Utility function for retreiving the text value of an array of DOM nodes
      - * @param {Array|Element} elem
      - */
      -var getText = Sizzle.getText = function( elem ) {
      -    var i, node,
      -		nodeType = elem.nodeType,
      -		ret = "";
      -
      -	if ( nodeType ) {
      -		if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -			// Use textContent || innerText for elements
      -			if ( typeof elem.textContent === 'string' ) {
      -				return elem.textContent;
      -			} else if ( typeof elem.innerText === 'string' ) {
      -				// Replace IE's carriage returns
      -				return elem.innerText.replace( rReturn, '' );
      -			} else {
      -				// Traverse it's children
      -				for ( elem = elem.firstChild; elem; elem = elem.nextSibling) {
      -					ret += getText( elem );
      -				}
      -			}
      -		} else if ( nodeType === 3 || nodeType === 4 ) {
      -			return elem.nodeValue;
      -		}
      -	} else {
      -
      -		// If no nodeType, this is expected to be an array
      -		for ( i = 0; (node = elem[i]); i++ ) {
      -			// Do not traverse comment nodes
      -			if ( node.nodeType !== 8 ) {
      -				ret += getText( node );
      -			}
      -		}
      -	}
      -	return ret;
      -};
      -
      -var Expr = Sizzle.selectors = {
      -	order: [ "ID", "NAME", "TAG" ],
      -
      -	match: {
      -		ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
      -		CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
      -		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
      -		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
      -		TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
      -		CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
      -		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
      -		PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
      -	},
      -
      -	leftMatch: {},
      -
      -	attrMap: {
      -		"class": "className",
      -		"for": "htmlFor"
      -	},
      -
      -	attrHandle: {
      -		href: function( elem ) {
      -			return elem.getAttribute( "href" );
      -		},
      -		type: function( elem ) {
      -			return elem.getAttribute( "type" );
      -		}
      -	},
      -
      -	relative: {
      -		"+": function(checkSet, part){
      -			var isPartStr = typeof part === "string",
      -				isTag = isPartStr && !rNonWord.test( part ),
      -				isPartStrNotTag = isPartStr && !isTag;
      -
      -			if ( isTag ) {
      -				part = part.toLowerCase();
      -			}
      -
      -			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {
      -				if ( (elem = checkSet[i]) ) {
      -					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}
      -
      -					checkSet[i] = isPartStrNotTag || elem && elem.nodeName.toLowerCase() === part ?
      -						elem || false :
      -						elem === part;
      -				}
      -			}
      -
      -			if ( isPartStrNotTag ) {
      -				Sizzle.filter( part, checkSet, true );
      -			}
      -		},
      -
      -		">": function( checkSet, part ) {
      -			var elem,
      -				isPartStr = typeof part === "string",
      -				i = 0,
      -				l = checkSet.length;
      -
      -			if ( isPartStr && !rNonWord.test( part ) ) {
      -				part = part.toLowerCase();
      -
      -				for ( ; i < l; i++ ) {
      -					elem = checkSet[i];
      -
      -					if ( elem ) {
      -						var parent = elem.parentNode;
      -						checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
      -					}
      -				}
      -
      -			} else {
      -				for ( ; i < l; i++ ) {
      -					elem = checkSet[i];
      -
      -					if ( elem ) {
      -						checkSet[i] = isPartStr ?
      -							elem.parentNode :
      -							elem.parentNode === part;
      -					}
      -				}
      -
      -				if ( isPartStr ) {
      -					Sizzle.filter( part, checkSet, true );
      -				}
      -			}
      -		},
      -
      -		"": function(checkSet, part, isXML){
      -			var nodeCheck,
      -				doneName = done++,
      -				checkFn = dirCheck;
      -
      -			if ( typeof part === "string" && !rNonWord.test( part ) ) {
      -				part = part.toLowerCase();
      -				nodeCheck = part;
      -				checkFn = dirNodeCheck;
      -			}
      -
      -			checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
      -		},
      -
      -		"~": function( checkSet, part, isXML ) {
      -			var nodeCheck,
      -				doneName = done++,
      -				checkFn = dirCheck;
      -
      -			if ( typeof part === "string" && !rNonWord.test( part ) ) {
      -				part = part.toLowerCase();
      -				nodeCheck = part;
      -				checkFn = dirNodeCheck;
      -			}
      -
      -			checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
      -		}
      -	},
      -
      -	find: {
      -		ID: function( match, context, isXML ) {
      -			if ( typeof context.getElementById !== "undefined" && !isXML ) {
      -				var m = context.getElementById(match[1]);
      -				// Check parentNode to catch when Blackberry 4.6 returns
      -				// nodes that are no longer in the document #6963
      -				return m && m.parentNode ? [m] : [];
      -			}
      -		},
      -
      -		NAME: function( match, context ) {
      -			if ( typeof context.getElementsByName !== "undefined" ) {
      -				var ret = [],
      -					results = context.getElementsByName( match[1] );
      -
      -				for ( var i = 0, l = results.length; i < l; i++ ) {
      -					if ( results[i].getAttribute("name") === match[1] ) {
      -						ret.push( results[i] );
      -					}
      -				}
      -
      -				return ret.length === 0 ? null : ret;
      -			}
      -		},
      -
      -		TAG: function( match, context ) {
      -			if ( typeof context.getElementsByTagName !== "undefined" ) {
      -				return context.getElementsByTagName( match[1] );
      -			}
      -		}
      -	},
      -	preFilter: {
      -		CLASS: function( match, curLoop, inplace, result, not, isXML ) {
      -			match = " " + match[1].replace( rBackslash, "" ) + " ";
      -
      -			if ( isXML ) {
      -				return match;
      -			}
      -
      -			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
      -				if ( elem ) {
      -					if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
      -						if ( !inplace ) {
      -							result.push( elem );
      -						}
      -
      -					} else if ( inplace ) {
      -						curLoop[i] = false;
      -					}
      -				}
      -			}
      -
      -			return false;
      -		},
      -
      -		ID: function( match ) {
      -			return match[1].replace( rBackslash, "" );
      -		},
      -
      -		TAG: function( match, curLoop ) {
      -			return match[1].replace( rBackslash, "" ).toLowerCase();
      -		},
      -
      -		CHILD: function( match ) {
      -			if ( match[1] === "nth" ) {
      -				if ( !match[2] ) {
      -					Sizzle.error( match[0] );
      -				}
      -
      -				match[2] = match[2].replace(/^\+|\s*/g, '');
      -
      -				// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
      -				var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
      -					match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
      -					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
      -
      -				// calculate the numbers (first)n+(last) including if they are negative
      -				match[2] = (test[1] + (test[2] || 1)) - 0;
      -				match[3] = test[3] - 0;
      -			}
      -			else if ( match[2] ) {
      -				Sizzle.error( match[0] );
      -			}
      -
      -			// TODO: Move to normal caching system
      -			match[0] = done++;
      -
      -			return match;
      -		},
      -
      -		ATTR: function( match, curLoop, inplace, result, not, isXML ) {
      -			var name = match[1] = match[1].replace( rBackslash, "" );
      -
      -			if ( !isXML && Expr.attrMap[name] ) {
      -				match[1] = Expr.attrMap[name];
      -			}
      -
      -			// Handle if an un-quoted value was used
      -			match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
      -
      -			if ( match[2] === "~=" ) {
      -				match[4] = " " + match[4] + " ";
      -			}
      -
      -			return match;
      -		},
      -
      -		PSEUDO: function( match, curLoop, inplace, result, not ) {
      -			if ( match[1] === "not" ) {
      -				// If we're dealing with a complex expression, or a simple one
      -				if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
      -					match[3] = Sizzle(match[3], null, null, curLoop);
      -
      -				} else {
      -					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
      -
      -					if ( !inplace ) {
      -						result.push.apply( result, ret );
      -					}
      -
      -					return false;
      -				}
      -
      -			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
      -				return true;
      -			}
      -
      -			return match;
      -		},
      -
      -		POS: function( match ) {
      -			match.unshift( true );
      -
      -			return match;
      -		}
      -	},
      -
      -	filters: {
      -		enabled: function( elem ) {
      -			return elem.disabled === false && elem.type !== "hidden";
      -		},
      -
      -		disabled: function( elem ) {
      -			return elem.disabled === true;
      -		},
      -
      -		checked: function( elem ) {
      -			return elem.checked === true;
      -		},
      -
      -		selected: function( elem ) {
      -			// Accessing this property makes selected-by-default
      -			// options in Safari work properly
      -			if ( elem.parentNode ) {
      -				elem.parentNode.selectedIndex;
      -			}
      -
      -			return elem.selected === true;
      -		},
      -
      -		parent: function( elem ) {
      -			return !!elem.firstChild;
      -		},
      -
      -		empty: function( elem ) {
      -			return !elem.firstChild;
      -		},
      -
      -		has: function( elem, i, match ) {
      -			return !!Sizzle( match[3], elem ).length;
      -		},
      -
      -		header: function( elem ) {
      -			return (/h\d/i).test( elem.nodeName );
      -		},
      -
      -		text: function( elem ) {
      -			var attr = elem.getAttribute( "type" ), type = elem.type;
      -			// IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
      -			// use getAttribute instead to test this case
      -			return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
      -		},
      -
      -		radio: function( elem ) {
      -			return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
      -		},
      -
      -		checkbox: function( elem ) {
      -			return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
      -		},
      -
      -		file: function( elem ) {
      -			return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
      -		},
      -
      -		password: function( elem ) {
      -			return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
      -		},
      -
      -		submit: function( elem ) {
      -			var name = elem.nodeName.toLowerCase();
      -			return (name === "input" || name === "button") && "submit" === elem.type;
      -		},
      -
      -		image: function( elem ) {
      -			return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
      -		},
      -
      -		reset: function( elem ) {
      -			var name = elem.nodeName.toLowerCase();
      -			return (name === "input" || name === "button") && "reset" === elem.type;
      -		},
      -
      -		button: function( elem ) {
      -			var name = elem.nodeName.toLowerCase();
      -			return name === "input" && "button" === elem.type || name === "button";
      -		},
      -
      -		input: function( elem ) {
      -			return (/input|select|textarea|button/i).test( elem.nodeName );
      -		},
      -
      -		focus: function( elem ) {
      -			return elem === elem.ownerDocument.activeElement;
      -		}
      -	},
      -	setFilters: {
      -		first: function( elem, i ) {
      -			return i === 0;
      -		},
      -
      -		last: function( elem, i, match, array ) {
      -			return i === array.length - 1;
      -		},
      -
      -		even: function( elem, i ) {
      -			return i % 2 === 0;
      -		},
      -
      -		odd: function( elem, i ) {
      -			return i % 2 === 1;
      -		},
      -
      -		lt: function( elem, i, match ) {
      -			return i < match[3] - 0;
      -		},
      -
      -		gt: function( elem, i, match ) {
      -			return i > match[3] - 0;
      -		},
      -
      -		nth: function( elem, i, match ) {
      -			return match[3] - 0 === i;
      -		},
      -
      -		eq: function( elem, i, match ) {
      -			return match[3] - 0 === i;
      -		}
      -	},
      -	filter: {
      -		PSEUDO: function( elem, match, i, array ) {
      -			var name = match[1],
      -				filter = Expr.filters[ name ];
      -
      -			if ( filter ) {
      -				return filter( elem, i, match, array );
      -
      -			} else if ( name === "contains" ) {
      -				return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
      -
      -			} else if ( name === "not" ) {
      -				var not = match[3];
      -
      -				for ( var j = 0, l = not.length; j < l; j++ ) {
      -					if ( not[j] === elem ) {
      -						return false;
      -					}
      -				}
      -
      -				return true;
      -
      -			} else {
      -				Sizzle.error( name );
      -			}
      -		},
      -
      -		CHILD: function( elem, match ) {
      -			var first, last,
      -				doneName, parent, cache,
      -				count, diff,
      -				type = match[1],
      -				node = elem;
      -
      -			switch ( type ) {
      -				case "only":
      -				case "first":
      -					while ( (node = node.previousSibling) ) {
      -						if ( node.nodeType === 1 ) {
      -							return false;
      -						}
      -					}
      -
      -					if ( type === "first" ) {
      -						return true;
      -					}
      -
      -					node = elem;
      -
      -					/* falls through */
      -				case "last":
      -					while ( (node = node.nextSibling) ) {
      -						if ( node.nodeType === 1 ) {
      -							return false;
      -						}
      -					}
      -
      -					return true;
      -
      -				case "nth":
      -					first = match[2];
      -					last = match[3];
      -
      -					if ( first === 1 && last === 0 ) {
      -						return true;
      -					}
      -
      -					doneName = match[0];
      -					parent = elem.parentNode;
      -
      -					if ( parent && (parent[ expando ] !== doneName || !elem.nodeIndex) ) {
      -						count = 0;
      -
      -						for ( node = parent.firstChild; node; node = node.nextSibling ) {
      -							if ( node.nodeType === 1 ) {
      -								node.nodeIndex = ++count;
      -							}
      -						}
      -
      -						parent[ expando ] = doneName;
      -					}
      -
      -					diff = elem.nodeIndex - last;
      -
      -					if ( first === 0 ) {
      -						return diff === 0;
      -
      -					} else {
      -						return ( diff % first === 0 && diff / first >= 0 );
      -					}
      -			}
      -		},
      -
      -		ID: function( elem, match ) {
      -			return elem.nodeType === 1 && elem.getAttribute("id") === match;
      -		},
      -
      -		TAG: function( elem, match ) {
      -			return (match === "*" && elem.nodeType === 1) || !!elem.nodeName && elem.nodeName.toLowerCase() === match;
      -		},
      -
      -		CLASS: function( elem, match ) {
      -			return (" " + (elem.className || elem.getAttribute("class")) + " ")
      -				.indexOf( match ) > -1;
      -		},
      -
      -		ATTR: function( elem, match ) {
      -			var name = match[1],
      -				result = Sizzle.attr ?
      -					Sizzle.attr( elem, name ) :
      -					Expr.attrHandle[ name ] ?
      -					Expr.attrHandle[ name ]( elem ) :
      -					elem[ name ] != null ?
      -						elem[ name ] :
      -						elem.getAttribute( name ),
      -				value = result + "",
      -				type = match[2],
      -				check = match[4];
      -
      -			return result == null ?
      -				type === "!=" :
      -				!type && Sizzle.attr ?
      -				result != null :
      -				type === "=" ?
      -				value === check :
      -				type === "*=" ?
      -				value.indexOf(check) >= 0 :
      -				type === "~=" ?
      -				(" " + value + " ").indexOf(check) >= 0 :
      -				!check ?
      -				value && result !== false :
      -				type === "!=" ?
      -				value !== check :
      -				type === "^=" ?
      -				value.indexOf(check) === 0 :
      -				type === "$=" ?
      -				value.substr(value.length - check.length) === check :
      -				type === "|=" ?
      -				value === check || value.substr(0, check.length + 1) === check + "-" :
      -				false;
      -		},
      -
      -		POS: function( elem, match, i, array ) {
      -			var name = match[2],
      -				filter = Expr.setFilters[ name ];
      -
      -			if ( filter ) {
      -				return filter( elem, i, match, array );
      -			}
      -		}
      -	}
      -};
      -
      -var origPOS = Expr.match.POS,
      -	fescape = function(all, num){
      -		return "\\" + (num - 0 + 1);
      -	};
      -
      -for ( var type in Expr.match ) {
      -	Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
      -	Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
      -}
      -// Expose origPOS
      -// "global" as in regardless of relation to brackets/parens
      -Expr.match.globalPOS = origPOS;
      -
      -var makeArray = function( array, results ) {
      -	array = Array.prototype.slice.call( array, 0 );
      -
      -	if ( results ) {
      -		results.push.apply( results, array );
      -		return results;
      -	}
      -
      -	return array;
      -};
      -
      -// Perform a simple check to determine if the browser is capable of
      -// converting a NodeList to an array using builtin methods.
      -// Also verifies that the returned array holds DOM nodes
      -// (which is not the case in the Blackberry browser)
      -try {
      -	Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
      -
      -// Provide a fallback method if it does not work
      -} catch( e ) {
      -	makeArray = function( array, results ) {
      -		var i = 0,
      -			ret = results || [];
      -
      -		if ( toString.call(array) === "[object Array]" ) {
      -			Array.prototype.push.apply( ret, array );
      -
      -		} else {
      -			if ( typeof array.length === "number" ) {
      -				for ( var l = array.length; i < l; i++ ) {
      -					ret.push( array[i] );
      -				}
      -
      -			} else {
      -				for ( ; array[i]; i++ ) {
      -					ret.push( array[i] );
      -				}
      -			}
      -		}
      -
      -		return ret;
      -	};
      -}
      -
      -var sortOrder, siblingCheck;
      -
      -if ( document.documentElement.compareDocumentPosition ) {
      -	sortOrder = function( a, b ) {
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -		}
      -
      -		if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
      -			return a.compareDocumentPosition ? -1 : 1;
      -		}
      -
      -		return a.compareDocumentPosition(b) & 4 ? -1 : 1;
      -	};
      -
      -} else {
      -	sortOrder = function( a, b ) {
      -		// The nodes are identical, we can exit early
      -		if ( a === b ) {
      -			hasDuplicate = true;
      -			return 0;
      -
      -		// Fallback to using sourceIndex (in IE) if it's available on both nodes
      -		} else if ( a.sourceIndex && b.sourceIndex ) {
      -			return a.sourceIndex - b.sourceIndex;
      -		}
      -
      -		var al, bl,
      -			ap = [],
      -			bp = [],
      -			aup = a.parentNode,
      -			bup = b.parentNode,
      -			cur = aup;
      -
      -		// If the nodes are siblings (or identical) we can do a quick check
      -		if ( aup === bup ) {
      -			return siblingCheck( a, b );
      -
      -		// If no parents were found then the nodes are disconnected
      -		} else if ( !aup ) {
      -			return -1;
      -
      -		} else if ( !bup ) {
      -			return 1;
      -		}
      -
      -		// Otherwise they're somewhere else in the tree so we need
      -		// to build up a full list of the parentNodes for comparison
      -		while ( cur ) {
      -			ap.unshift( cur );
      -			cur = cur.parentNode;
      -		}
      -
      -		cur = bup;
      -
      -		while ( cur ) {
      -			bp.unshift( cur );
      -			cur = cur.parentNode;
      -		}
      -
      -		al = ap.length;
      -		bl = bp.length;
      -
      -		// Start walking down the tree looking for a discrepancy
      -		for ( var i = 0; i < al && i < bl; i++ ) {
      -			if ( ap[i] !== bp[i] ) {
      -				return siblingCheck( ap[i], bp[i] );
      -			}
      -		}
      -
      -		// We ended someplace up the tree so do a sibling check
      -		return i === al ?
      -			siblingCheck( a, bp[i], -1 ) :
      -			siblingCheck( ap[i], b, 1 );
      -	};
      -
      -	siblingCheck = function( a, b, ret ) {
      -		if ( a === b ) {
      -			return ret;
      -		}
      -
      -		var cur = a.nextSibling;
      -
      -		while ( cur ) {
      -			if ( cur === b ) {
      -				return -1;
      -			}
      -
      -			cur = cur.nextSibling;
      -		}
      -
      -		return 1;
      -	};
      -}
      -
      -// Check to see if the browser returns elements by name when
      -// querying by getElementById (and provide a workaround)
      -(function(){
      -	// We're going to inject a fake input element with a specified name
      -	var form = document.createElement("div"),
      -		id = "script" + (new Date()).getTime(),
      -		root = document.documentElement;
      -
      -	form.innerHTML = "<a name='" + id + "'/>";
      -
      -	// Inject it into the root element, check its status, and remove it quickly
      -	root.insertBefore( form, root.firstChild );
      -
      -	// The workaround has to do additional checks after a getElementById
      -	// Which slows things down for other browsers (hence the branching)
      -	if ( document.getElementById( id ) ) {
      -		Expr.find.ID = function( match, context, isXML ) {
      -			if ( typeof context.getElementById !== "undefined" && !isXML ) {
      -				var m = context.getElementById(match[1]);
      -
      -				return m ?
      -					m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
      -						[m] :
      -						undefined :
      -					[];
      -			}
      -		};
      -
      -		Expr.filter.ID = function( elem, match ) {
      -			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
      -
      -			return elem.nodeType === 1 && node && node.nodeValue === match;
      -		};
      -	}
      -
      -	root.removeChild( form );
      -
      -	// release memory in IE
      -	root = form = null;
      -})();
      -
      -(function(){
      -	// Check to see if the browser returns only elements
      -	// when doing getElementsByTagName("*")
      -
      -	// Create a fake element
      -	var div = document.createElement("div");
      -	div.appendChild( document.createComment("") );
      -
      -	// Make sure no comments are found
      -	if ( div.getElementsByTagName("*").length > 0 ) {
      -		Expr.find.TAG = function( match, context ) {
      -			var results = context.getElementsByTagName( match[1] );
      -
      -			// Filter out possible comments
      -			if ( match[1] === "*" ) {
      -				var tmp = [];
      -
      -				for ( var i = 0; results[i]; i++ ) {
      -					if ( results[i].nodeType === 1 ) {
      -						tmp.push( results[i] );
      -					}
      -				}
      -
      -				results = tmp;
      -			}
      -
      -			return results;
      -		};
      -	}
      -
      -	// Check to see if an attribute returns normalized href attributes
      -	div.innerHTML = "<a href='#'></a>";
      -
      -	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
      -			div.firstChild.getAttribute("href") !== "#" ) {
      -
      -		Expr.attrHandle.href = function( elem ) {
      -			return elem.getAttribute( "href", 2 );
      -		};
      -	}
      -
      -	// release memory in IE
      -	div = null;
      -})();
      -
      -if ( document.querySelectorAll ) {
      -	(function(){
      -		var oldSizzle = Sizzle,
      -			div = document.createElement("div"),
      -			id = "__sizzle__";
      -
      -		div.innerHTML = "<p class='TEST'></p>";
      -
      -		// Safari can't handle uppercase or unicode characters when
      -		// in quirks mode.
      -		if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {
      -			return;
      -		}
      -
      -		Sizzle = function( query, context, extra, seed ) {
      -			context = context || document;
      -
      -			// Only use querySelectorAll on non-XML documents
      -			// (ID selectors don't work in non-HTML documents)
      -			if ( !seed && !Sizzle.isXML(context) ) {
      -				// See if we find a selector to speed up
      -				var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
      -
      -				if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
      -					// Speed-up: Sizzle("TAG")
      -					if ( match[1] ) {
      -						return makeArray( context.getElementsByTagName( query ), extra );
      -
      -					// Speed-up: Sizzle(".CLASS")
      -					} else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
      -						return makeArray( context.getElementsByClassName( match[2] ), extra );
      -					}
      -				}
      -
      -				if ( context.nodeType === 9 ) {
      -					// Speed-up: Sizzle("body")
      -					// The body element only exists once, optimize finding it
      -					if ( query === "body" && context.body ) {
      -						return makeArray( [ context.body ], extra );
      -
      -					// Speed-up: Sizzle("#ID")
      -					} else if ( match && match[3] ) {
      -						var elem = context.getElementById( match[3] );
      -
      -						// Check parentNode to catch when Blackberry 4.6 returns
      -						// nodes that are no longer in the document #6963
      -						if ( elem && elem.parentNode ) {
      -							// Handle the case where IE and Opera return items
      -							// by name instead of ID
      -							if ( elem.id === match[3] ) {
      -								return makeArray( [ elem ], extra );
      -							}
      -
      -						} else {
      -							return makeArray( [], extra );
      -						}
      -					}
      -
      -					try {
      -						return makeArray( context.querySelectorAll(query), extra );
      -					} catch(qsaError) {}
      -
      -				// qSA works strangely on Element-rooted queries
      -				// We can work around this by specifying an extra ID on the root
      -				// and working up from there (Thanks to Andrew Dupont for the technique)
      -				// IE 8 doesn't work on object elements
      -				} else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
      -					var oldContext = context,
      -						old = context.getAttribute( "id" ),
      -						nid = old || id,
      -						hasParent = context.parentNode,
      -						relativeHierarchySelector = /^\s*[+~]/.test( query );
      -
      -					if ( !old ) {
      -						context.setAttribute( "id", nid );
      -					} else {
      -						nid = nid.replace( /'/g, "\\$&" );
      -					}
      -					if ( relativeHierarchySelector && hasParent ) {
      -						context = context.parentNode;
      -					}
      -
      -					try {
      -						if ( !relativeHierarchySelector || hasParent ) {
      -							return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
      -						}
      -
      -					} catch(pseudoError) {
      -					} finally {
      -						if ( !old ) {
      -							oldContext.removeAttribute( "id" );
      -						}
      -					}
      -				}
      -			}
      -
      -			return oldSizzle(query, context, extra, seed);
      -		};
      -
      -		for ( var prop in oldSizzle ) {
      -			Sizzle[ prop ] = oldSizzle[ prop ];
      -		}
      -
      -		// release memory in IE
      -		div = null;
      -	})();
      -}
      -
      -(function(){
      -	var html = document.documentElement,
      -		matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
      -
      -	if ( matches ) {
      -		// Check to see if it's possible to do matchesSelector
      -		// on a disconnected node (IE 9 fails this)
      -		var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
      -			pseudoWorks = false;
      -
      -		try {
      -			// This should fail with an exception
      -			// Gecko does not error, returns false instead
      -			matches.call( document.documentElement, "[test!='']:sizzle" );
      -
      -		} catch( pseudoError ) {
      -			pseudoWorks = true;
      -		}
      -
      -		Sizzle.matchesSelector = function( node, expr ) {
      -			// Make sure that attribute selectors are quoted
      -			expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
      -
      -			if ( !Sizzle.isXML( node ) ) {
      -				try {
      -					if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
      -						var ret = matches.call( node, expr );
      -
      -						// IE 9's matchesSelector returns false on disconnected nodes
      -						if ( ret || !disconnectedMatch ||
      -								// As well, disconnected nodes are said to be in a document
      -								// fragment in IE 9, so check for that
      -								node.document && node.document.nodeType !== 11 ) {
      -							return ret;
      -						}
      -					}
      -				} catch(e) {}
      -			}
      -
      -			return Sizzle(expr, null, null, [node]).length > 0;
      -		};
      -	}
      -})();
      -
      -(function(){
      -	var div = document.createElement("div");
      -
      -	div.innerHTML = "<div class='test e'></div><div class='test'></div>";
      -
      -	// Opera can't find a second classname (in 9.6)
      -	// Also, make sure that getElementsByClassName actually exists
      -	if ( !div.getElementsByClassName || div.getElementsByClassName("e").length === 0 ) {
      -		return;
      -	}
      -
      -	// Safari caches class attributes, doesn't catch changes (in 3.2)
      -	div.lastChild.className = "e";
      -
      -	if ( div.getElementsByClassName("e").length === 1 ) {
      -		return;
      -	}
      -
      -	Expr.order.splice(1, 0, "CLASS");
      -	Expr.find.CLASS = function( match, context, isXML ) {
      -		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
      -			return context.getElementsByClassName(match[1]);
      -		}
      -	};
      -
      -	// release memory in IE
      -	div = null;
      -})();
      -
      -function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
      -	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
      -		var elem = checkSet[i];
      -
      -		if ( elem ) {
      -			var match = false;
      -
      -			elem = elem[dir];
      -
      -			while ( elem ) {
      -				if ( elem[ expando ] === doneName ) {
      -					match = checkSet[elem.sizset];
      -					break;
      -				}
      -
      -				if ( elem.nodeType === 1 && !isXML ){
      -					elem[ expando ] = doneName;
      -					elem.sizset = i;
      -				}
      -
      -				if ( elem.nodeName.toLowerCase() === cur ) {
      -					match = elem;
      -					break;
      -				}
      -
      -				elem = elem[dir];
      -			}
      -
      -			checkSet[i] = match;
      -		}
      -	}
      -}
      -
      -function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
      -	for ( var i = 0, l = checkSet.length; i < l; i++ ) {
      -		var elem = checkSet[i];
      -
      -		if ( elem ) {
      -			var match = false;
      -
      -			elem = elem[dir];
      -
      -			while ( elem ) {
      -				if ( elem[ expando ] === doneName ) {
      -					match = checkSet[elem.sizset];
      -					break;
      -				}
      -
      -				if ( elem.nodeType === 1 ) {
      -					if ( !isXML ) {
      -						elem[ expando ] = doneName;
      -						elem.sizset = i;
      -					}
      -
      -					if ( typeof cur !== "string" ) {
      -						if ( elem === cur ) {
      -							match = true;
      -							break;
      -						}
      -
      -					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {
      -						match = elem;
      -						break;
      -					}
      -				}
      -
      -				elem = elem[dir];
      -			}
      -
      -			checkSet[i] = match;
      -		}
      -	}
      -}
      -
      -if ( document.documentElement.contains ) {
      -	Sizzle.contains = function( a, b ) {
      -		return a !== b && (a.contains ? a.contains(b) : true);
      -	};
      -
      -} else if ( document.documentElement.compareDocumentPosition ) {
      -	Sizzle.contains = function( a, b ) {
      -		return !!(a.compareDocumentPosition(b) & 16);
      -	};
      -
      -} else {
      -	Sizzle.contains = function() {
      -		return false;
      -	};
      -}
      -
      -Sizzle.isXML = function( elem ) {
      -	// documentElement is verified for cases where it doesn't yet exist
      -	// (such as loading iframes in IE - #4833)
      -	var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
      -
      -	return documentElement ? documentElement.nodeName !== "HTML" : false;
      -};
      -
      -var posProcess = function( selector, context, seed ) {
      -	var match,
      -		tmpSet = [],
      -		later = "",
      -		root = context.nodeType ? [context] : context;
      -
      -	// Position selectors must be done after the filter
      -	// And so must :not(positional) so we move all PSEUDOs to the end
      -	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {
      -		later += match[0];
      -		selector = selector.replace( Expr.match.PSEUDO, "" );
      -	}
      -
      -	selector = Expr.relative[selector] ? selector + "*" : selector;
      -
      -	for ( var i = 0, l = root.length; i < l; i++ ) {
      -		Sizzle( selector, root[i], tmpSet, seed );
      -	}
      -
      -	return Sizzle.filter( later, tmpSet );
      -};
      -
      -// EXPOSE
      -// Override sizzle attribute retrieval
      -Sizzle.attr = jQuery.attr;
      -Sizzle.selectors.attrMap = {};
      -jQuery.find = Sizzle;
      -jQuery.expr = Sizzle.selectors;
      -jQuery.expr[":"] = jQuery.expr.filters;
      -jQuery.unique = Sizzle.uniqueSort;
      -jQuery.text = Sizzle.getText;
      -jQuery.isXMLDoc = Sizzle.isXML;
      -jQuery.contains = Sizzle.contains;
      -
      -
      -})();
      -
      -
      -var runtil = /Until$/,
      -	rparentsprev = /^(?:parents|prevUntil|prevAll)/,
      -	// Note: This RegExp should be improved, or likely pulled from Sizzle
      -	rmultiselector = /,/,
      -	isSimple = /^.[^:#\[\.,]*$/,
      -	slice = Array.prototype.slice,
      -	POS = jQuery.expr.match.globalPOS,
      -	// methods guaranteed to produce a unique set when starting from a unique set
      -	guaranteedUnique = {
      -		children: true,
      -		contents: true,
      -		next: true,
      -		prev: true
      -	};
      -
      -jQuery.fn.extend({
      -	find: function( selector ) {
      -		var self = this,
      -			i, l;
      -
      -		if ( typeof selector !== "string" ) {
      -			return jQuery( selector ).filter(function() {
      -				for ( i = 0, l = self.length; i < l; i++ ) {
      -					if ( jQuery.contains( self[ i ], this ) ) {
      -						return true;
      -					}
      -				}
      -			});
      -		}
      -
      -		var ret = this.pushStack( "", "find", selector ),
      -			length, n, r;
      -
      -		for ( i = 0, l = this.length; i < l; i++ ) {
      -			length = ret.length;
      -			jQuery.find( selector, this[i], ret );
      -
      -			if ( i > 0 ) {
      -				// Make sure that the results are unique
      -				for ( n = length; n < ret.length; n++ ) {
      -					for ( r = 0; r < length; r++ ) {
      -						if ( ret[r] === ret[n] ) {
      -							ret.splice(n--, 1);
      -							break;
      -						}
      -					}
      -				}
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	has: function( target ) {
      -		var targets = jQuery( target );
      -		return this.filter(function() {
      -			for ( var i = 0, l = targets.length; i < l; i++ ) {
      -				if ( jQuery.contains( this, targets[i] ) ) {
      -					return true;
      -				}
      -			}
      -		});
      -	},
      -
      -	not: function( selector ) {
      -		return this.pushStack( winnow(this, selector, false), "not", selector);
      -	},
      -
      -	filter: function( selector ) {
      -		return this.pushStack( winnow(this, selector, true), "filter", selector );
      -	},
      -
      -	is: function( selector ) {
      -		return !!selector && (
      -			typeof selector === "string" ?
      -				// If this is a positional selector, check membership in the returned set
      -				// so $("p:first").is("p:last") won't return true for a doc with two "p".
      -				POS.test( selector ) ?
      -					jQuery( selector, this.context ).index( this[0] ) >= 0 :
      -					jQuery.filter( selector, this ).length > 0 :
      -				this.filter( selector ).length > 0 );
      -	},
      -
      -	closest: function( selectors, context ) {
      -		var ret = [], i, l, cur = this[0];
      -
      -		// Array (deprecated as of jQuery 1.7)
      -		if ( jQuery.isArray( selectors ) ) {
      -			var level = 1;
      -
      -			while ( cur && cur.ownerDocument && cur !== context ) {
      -				for ( i = 0; i < selectors.length; i++ ) {
      -
      -					if ( jQuery( cur ).is( selectors[ i ] ) ) {
      -						ret.push({ selector: selectors[ i ], elem: cur, level: level });
      -					}
      -				}
      -
      -				cur = cur.parentNode;
      -				level++;
      -			}
      -
      -			return ret;
      -		}
      -
      -		// String
      -		var pos = POS.test( selectors ) || typeof selectors !== "string" ?
      -				jQuery( selectors, context || this.context ) :
      -				0;
      -
      -		for ( i = 0, l = this.length; i < l; i++ ) {
      -			cur = this[i];
      -
      -			while ( cur ) {
      -				if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
      -					ret.push( cur );
      -					break;
      -
      -				} else {
      -					cur = cur.parentNode;
      -					if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
      -						break;
      -					}
      -				}
      -			}
      -		}
      -
      -		ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
      -
      -		return this.pushStack( ret, "closest", selectors );
      -	},
      -
      -	// Determine the position of an element within
      -	// the matched set of elements
      -	index: function( elem ) {
      -
      -		// No argument, return index in parent
      -		if ( !elem ) {
      -			return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
      -		}
      -
      -		// index in selector
      -		if ( typeof elem === "string" ) {
      -			return jQuery.inArray( this[0], jQuery( elem ) );
      -		}
      -
      -		// Locate the position of the desired element
      -		return jQuery.inArray(
      -			// If it receives a jQuery object, the first element is used
      -			elem.jquery ? elem[0] : elem, this );
      -	},
      -
      -	add: function( selector, context ) {
      -		var set = typeof selector === "string" ?
      -				jQuery( selector, context ) :
      -				jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
      -			all = jQuery.merge( this.get(), set );
      -
      -		return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
      -			all :
      -			jQuery.unique( all ) );
      -	},
      -
      -	andSelf: function() {
      -		return this.add( this.prevObject );
      -	}
      -});
      -
      -// A painfully simple check to see if an element is disconnected
      -// from a document (should be improved, where feasible).
      -function isDisconnected( node ) {
      -	return !node || !node.parentNode || node.parentNode.nodeType === 11;
      -}
      -
      -jQuery.each({
      -	parent: function( elem ) {
      -		var parent = elem.parentNode;
      -		return parent && parent.nodeType !== 11 ? parent : null;
      -	},
      -	parents: function( elem ) {
      -		return jQuery.dir( elem, "parentNode" );
      -	},
      -	parentsUntil: function( elem, i, until ) {
      -		return jQuery.dir( elem, "parentNode", until );
      -	},
      -	next: function( elem ) {
      -		return jQuery.nth( elem, 2, "nextSibling" );
      -	},
      -	prev: function( elem ) {
      -		return jQuery.nth( elem, 2, "previousSibling" );
      -	},
      -	nextAll: function( elem ) {
      -		return jQuery.dir( elem, "nextSibling" );
      -	},
      -	prevAll: function( elem ) {
      -		return jQuery.dir( elem, "previousSibling" );
      -	},
      -	nextUntil: function( elem, i, until ) {
      -		return jQuery.dir( elem, "nextSibling", until );
      -	},
      -	prevUntil: function( elem, i, until ) {
      -		return jQuery.dir( elem, "previousSibling", until );
      -	},
      -	siblings: function( elem ) {
      -		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
      -	},
      -	children: function( elem ) {
      -		return jQuery.sibling( elem.firstChild );
      -	},
      -	contents: function( elem ) {
      -		return jQuery.nodeName( elem, "iframe" ) ?
      -			elem.contentDocument || elem.contentWindow.document :
      -			jQuery.makeArray( elem.childNodes );
      -	}
      -}, function( name, fn ) {
      -	jQuery.fn[ name ] = function( until, selector ) {
      -		var ret = jQuery.map( this, fn, until );
      -
      -		if ( !runtil.test( name ) ) {
      -			selector = until;
      -		}
      -
      -		if ( selector && typeof selector === "string" ) {
      -			ret = jQuery.filter( selector, ret );
      -		}
      -
      -		ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
      -
      -		if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
      -			ret = ret.reverse();
      -		}
      -
      -		return this.pushStack( ret, name, slice.call( arguments ).join(",") );
      -	};
      -});
      -
      -jQuery.extend({
      -	filter: function( expr, elems, not ) {
      -		if ( not ) {
      -			expr = ":not(" + expr + ")";
      -		}
      -
      -		return elems.length === 1 ?
      -			jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
      -			jQuery.find.matches(expr, elems);
      -	},
      -
      -	dir: function( elem, dir, until ) {
      -		var matched = [],
      -			cur = elem[ dir ];
      -
      -		while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
      -			if ( cur.nodeType === 1 ) {
      -				matched.push( cur );
      -			}
      -			cur = cur[dir];
      -		}
      -		return matched;
      -	},
      -
      -	nth: function( cur, result, dir, elem ) {
      -		result = result || 1;
      -		var num = 0;
      -
      -		for ( ; cur; cur = cur[dir] ) {
      -			if ( cur.nodeType === 1 && ++num === result ) {
      -				break;
      -			}
      -		}
      -
      -		return cur;
      -	},
      -
      -	sibling: function( n, elem ) {
      -		var r = [];
      -
      -		for ( ; n; n = n.nextSibling ) {
      -			if ( n.nodeType === 1 && n !== elem ) {
      -				r.push( n );
      -			}
      -		}
      -
      -		return r;
      -	}
      -});
      -
      -// Implement the identical functionality for filter and not
      -function winnow( elements, qualifier, keep ) {
      -
      -	// Can't pass null or undefined to indexOf in Firefox 4
      -	// Set to 0 to skip string check
      -	qualifier = qualifier || 0;
      -
      -	if ( jQuery.isFunction( qualifier ) ) {
      -		return jQuery.grep(elements, function( elem, i ) {
      -			var retVal = !!qualifier.call( elem, i, elem );
      -			return retVal === keep;
      -		});
      -
      -	} else if ( qualifier.nodeType ) {
      -		return jQuery.grep(elements, function( elem, i ) {
      -			return ( elem === qualifier ) === keep;
      -		});
      -
      -	} else if ( typeof qualifier === "string" ) {
      -		var filtered = jQuery.grep(elements, function( elem ) {
      -			return elem.nodeType === 1;
      -		});
      -
      -		if ( isSimple.test( qualifier ) ) {
      -			return jQuery.filter(qualifier, filtered, !keep);
      -		} else {
      -			qualifier = jQuery.filter( qualifier, filtered );
      -		}
      -	}
      -
      -	return jQuery.grep(elements, function( elem, i ) {
      -		return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
      -	});
      -}
      -
      -
      -
      -
      -function createSafeFragment( document ) {
      -	var list = nodeNames.split( "|" ),
      -	safeFrag = document.createDocumentFragment();
      -
      -	if ( safeFrag.createElement ) {
      -		while ( list.length ) {
      -			safeFrag.createElement(
      -				list.pop()
      -			);
      -		}
      -	}
      -	return safeFrag;
      -}
      -
      -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
      -		"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
      -	rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
      -	rleadingWhitespace = /^\s+/,
      -	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
      -	rtagName = /<([\w:]+)/,
      -	rtbody = /<tbody/i,
      -	rhtml = /<|&#?\w+;/,
      -	rnoInnerhtml = /<(?:script|style)/i,
      -	rnocache = /<(?:script|object|embed|option|style)/i,
      -	rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
      -	// checked="checked" or checked
      -	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
      -	rscriptType = /\/(java|ecma)script/i,
      -	rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
      -	wrapMap = {
      -		option: [ 1, "<select multiple='multiple'>", "</select>" ],
      -		legend: [ 1, "<fieldset>", "</fieldset>" ],
      -		thead: [ 1, "<table>", "</table>" ],
      -		tr: [ 2, "<table><tbody>", "</tbody></table>" ],
      -		td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
      -		col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
      -		area: [ 1, "<map>", "</map>" ],
      -		_default: [ 0, "", "" ]
      -	},
      -	safeFragment = createSafeFragment( document );
      -
      -wrapMap.optgroup = wrapMap.option;
      -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
      -wrapMap.th = wrapMap.td;
      -
      -// IE can't serialize <link> and <script> tags normally
      -if ( !jQuery.support.htmlSerialize ) {
      -	wrapMap._default = [ 1, "div<div>", "</div>" ];
      -}
      -
      -jQuery.fn.extend({
      -	text: function( value ) {
      -		return jQuery.access( this, function( value ) {
      -			return value === undefined ?
      -				jQuery.text( this ) :
      -				this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
      -		}, null, value, arguments.length );
      -	},
      -
      -	wrapAll: function( html ) {
      -		if ( jQuery.isFunction( html ) ) {
      -			return this.each(function(i) {
      -				jQuery(this).wrapAll( html.call(this, i) );
      -			});
      -		}
      -
      -		if ( this[0] ) {
      -			// The elements to wrap the target around
      -			var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
      -
      -			if ( this[0].parentNode ) {
      -				wrap.insertBefore( this[0] );
      -			}
      -
      -			wrap.map(function() {
      -				var elem = this;
      -
      -				while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
      -					elem = elem.firstChild;
      -				}
      -
      -				return elem;
      -			}).append( this );
      -		}
      -
      -		return this;
      -	},
      -
      -	wrapInner: function( html ) {
      -		if ( jQuery.isFunction( html ) ) {
      -			return this.each(function(i) {
      -				jQuery(this).wrapInner( html.call(this, i) );
      -			});
      -		}
      -
      -		return this.each(function() {
      -			var self = jQuery( this ),
      -				contents = self.contents();
      -
      -			if ( contents.length ) {
      -				contents.wrapAll( html );
      -
      -			} else {
      -				self.append( html );
      -			}
      -		});
      -	},
      -
      -	wrap: function( html ) {
      -		var isFunction = jQuery.isFunction( html );
      -
      -		return this.each(function(i) {
      -			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
      -		});
      -	},
      -
      -	unwrap: function() {
      -		return this.parent().each(function() {
      -			if ( !jQuery.nodeName( this, "body" ) ) {
      -				jQuery( this ).replaceWith( this.childNodes );
      -			}
      -		}).end();
      -	},
      -
      -	append: function() {
      -		return this.domManip(arguments, true, function( elem ) {
      -			if ( this.nodeType === 1 ) {
      -				this.appendChild( elem );
      -			}
      -		});
      -	},
      -
      -	prepend: function() {
      -		return this.domManip(arguments, true, function( elem ) {
      -			if ( this.nodeType === 1 ) {
      -				this.insertBefore( elem, this.firstChild );
      -			}
      -		});
      -	},
      -
      -	before: function() {
      -		if ( this[0] && this[0].parentNode ) {
      -			return this.domManip(arguments, false, function( elem ) {
      -				this.parentNode.insertBefore( elem, this );
      -			});
      -		} else if ( arguments.length ) {
      -			var set = jQuery.clean( arguments );
      -			set.push.apply( set, this.toArray() );
      -			return this.pushStack( set, "before", arguments );
      -		}
      -	},
      -
      -	after: function() {
      -		if ( this[0] && this[0].parentNode ) {
      -			return this.domManip(arguments, false, function( elem ) {
      -				this.parentNode.insertBefore( elem, this.nextSibling );
      -			});
      -		} else if ( arguments.length ) {
      -			var set = this.pushStack( this, "after", arguments );
      -			set.push.apply( set, jQuery.clean(arguments) );
      -			return set;
      -		}
      -	},
      -
      -	// keepData is for internal use only--do not document
      -	remove: function( selector, keepData ) {
      -		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
      -			if ( !selector || jQuery.filter( selector, [ elem ] ).length ) {
      -				if ( !keepData && elem.nodeType === 1 ) {
      -					jQuery.cleanData( elem.getElementsByTagName("*") );
      -					jQuery.cleanData( [ elem ] );
      -				}
      -
      -				if ( elem.parentNode ) {
      -					elem.parentNode.removeChild( elem );
      -				}
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	empty: function() {
      -		for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
      -			// Remove element nodes and prevent memory leaks
      -			if ( elem.nodeType === 1 ) {
      -				jQuery.cleanData( elem.getElementsByTagName("*") );
      -			}
      -
      -			// Remove any remaining nodes
      -			while ( elem.firstChild ) {
      -				elem.removeChild( elem.firstChild );
      -			}
      -		}
      -
      -		return this;
      -	},
      -
      -	clone: function( dataAndEvents, deepDataAndEvents ) {
      -		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
      -		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
      -
      -		return this.map( function () {
      -			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
      -		});
      -	},
      -
      -	html: function( value ) {
      -		return jQuery.access( this, function( value ) {
      -			var elem = this[0] || {},
      -				i = 0,
      -				l = this.length;
      -
      -			if ( value === undefined ) {
      -				return elem.nodeType === 1 ?
      -					elem.innerHTML.replace( rinlinejQuery, "" ) :
      -					null;
      -			}
      -
      -
      -			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
      -				( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
      -				!wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
      -
      -				value = value.replace( rxhtmlTag, "<$1></$2>" );
      -
      -				try {
      -					for (; i < l; i++ ) {
      -						// Remove element nodes and prevent memory leaks
      -						elem = this[i] || {};
      -						if ( elem.nodeType === 1 ) {
      -							jQuery.cleanData( elem.getElementsByTagName( "*" ) );
      -							elem.innerHTML = value;
      -						}
      -					}
      -
      -					elem = 0;
      -
      -				// If using innerHTML throws an exception, use the fallback method
      -				} catch(e) {}
      -			}
      -
      -			if ( elem ) {
      -				this.empty().append( value );
      -			}
      -		}, null, value, arguments.length );
      -	},
      -
      -	replaceWith: function( value ) {
      -		if ( this[0] && this[0].parentNode ) {
      -			// Make sure that the elements are removed from the DOM before they are inserted
      -			// this can help fix replacing a parent with child elements
      -			if ( jQuery.isFunction( value ) ) {
      -				return this.each(function(i) {
      -					var self = jQuery(this), old = self.html();
      -					self.replaceWith( value.call( this, i, old ) );
      -				});
      -			}
      -
      -			if ( typeof value !== "string" ) {
      -				value = jQuery( value ).detach();
      -			}
      -
      -			return this.each(function() {
      -				var next = this.nextSibling,
      -					parent = this.parentNode;
      -
      -				jQuery( this ).remove();
      -
      -				if ( next ) {
      -					jQuery(next).before( value );
      -				} else {
      -					jQuery(parent).append( value );
      -				}
      -			});
      -		} else {
      -			return this.length ?
      -				this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
      -				this;
      -		}
      -	},
      -
      -	detach: function( selector ) {
      -		return this.remove( selector, true );
      -	},
      -
      -	domManip: function( args, table, callback ) {
      -		var results, first, fragment, parent,
      -			value = args[0],
      -			scripts = [];
      -
      -		// We can't cloneNode fragments that contain checked, in WebKit
      -		if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
      -			return this.each(function() {
      -				jQuery(this).domManip( args, table, callback, true );
      -			});
      -		}
      -
      -		if ( jQuery.isFunction(value) ) {
      -			return this.each(function(i) {
      -				var self = jQuery(this);
      -				args[0] = value.call(this, i, table ? self.html() : undefined);
      -				self.domManip( args, table, callback );
      -			});
      -		}
      -
      -		if ( this[0] ) {
      -			parent = value && value.parentNode;
      -
      -			// If we're in a fragment, just use that instead of building a new one
      -			if ( jQuery.support.parentNode && parent && parent.nodeType === 11 && parent.childNodes.length === this.length ) {
      -				results = { fragment: parent };
      -
      -			} else {
      -				results = jQuery.buildFragment( args, this, scripts );
      -			}
      -
      -			fragment = results.fragment;
      -
      -			if ( fragment.childNodes.length === 1 ) {
      -				first = fragment = fragment.firstChild;
      -			} else {
      -				first = fragment.firstChild;
      -			}
      -
      -			if ( first ) {
      -				table = table && jQuery.nodeName( first, "tr" );
      -
      -				for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
      -					callback.call(
      -						table ?
      -							root(this[i], first) :
      -							this[i],
      -						// Make sure that we do not leak memory by inadvertently discarding
      -						// the original fragment (which might have attached data) instead of
      -						// using it; in addition, use the original fragment object for the last
      -						// item instead of first because it can end up being emptied incorrectly
      -						// in certain situations (Bug #8070).
      -						// Fragments from the fragment cache must always be cloned and never used
      -						// in place.
      -						results.cacheable || ( l > 1 && i < lastIndex ) ?
      -							jQuery.clone( fragment, true, true ) :
      -							fragment
      -					);
      -				}
      -			}
      -
      -			if ( scripts.length ) {
      -				jQuery.each( scripts, function( i, elem ) {
      -					if ( elem.src ) {
      -						jQuery.ajax({
      -							type: "GET",
      -							global: false,
      -							url: elem.src,
      -							async: false,
      -							dataType: "script"
      -						});
      -					} else {
      -						jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
      -					}
      -
      -					if ( elem.parentNode ) {
      -						elem.parentNode.removeChild( elem );
      -					}
      -				});
      -			}
      -		}
      -
      -		return this;
      -	}
      -});
      -
      -function root( elem, cur ) {
      -	return jQuery.nodeName(elem, "table") ?
      -		(elem.getElementsByTagName("tbody")[0] ||
      -		elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
      -		elem;
      -}
      -
      -function cloneCopyEvent( src, dest ) {
      -
      -	if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
      -		return;
      -	}
      -
      -	var type, i, l,
      -		oldData = jQuery._data( src ),
      -		curData = jQuery._data( dest, oldData ),
      -		events = oldData.events;
      -
      -	if ( events ) {
      -		delete curData.handle;
      -		curData.events = {};
      -
      -		for ( type in events ) {
      -			for ( i = 0, l = events[ type ].length; i < l; i++ ) {
      -				jQuery.event.add( dest, type, events[ type ][ i ] );
      -			}
      -		}
      -	}
      -
      -	// make the cloned public data object a copy from the original
      -	if ( curData.data ) {
      -		curData.data = jQuery.extend( {}, curData.data );
      -	}
      -}
      -
      -function cloneFixAttributes( src, dest ) {
      -	var nodeName;
      -
      -	// We do not need to do anything for non-Elements
      -	if ( dest.nodeType !== 1 ) {
      -		return;
      -	}
      -
      -	// clearAttributes removes the attributes, which we don't want,
      -	// but also removes the attachEvent events, which we *do* want
      -	if ( dest.clearAttributes ) {
      -		dest.clearAttributes();
      -	}
      -
      -	// mergeAttributes, in contrast, only merges back on the
      -	// original attributes, not the events
      -	if ( dest.mergeAttributes ) {
      -		dest.mergeAttributes( src );
      -	}
      -
      -	nodeName = dest.nodeName.toLowerCase();
      -
      -	// IE6-8 fail to clone children inside object elements that use
      -	// the proprietary classid attribute value (rather than the type
      -	// attribute) to identify the type of content to display
      -	if ( nodeName === "object" ) {
      -		dest.outerHTML = src.outerHTML;
      -
      -	} else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
      -		// IE6-8 fails to persist the checked state of a cloned checkbox
      -		// or radio button. Worse, IE6-7 fail to give the cloned element
      -		// a checked appearance if the defaultChecked value isn't also set
      -		if ( src.checked ) {
      -			dest.defaultChecked = dest.checked = src.checked;
      -		}
      -
      -		// IE6-7 get confused and end up setting the value of a cloned
      -		// checkbox/radio button to an empty string instead of "on"
      -		if ( dest.value !== src.value ) {
      -			dest.value = src.value;
      -		}
      -
      -	// IE6-8 fails to return the selected option to the default selected
      -	// state when cloning options
      -	} else if ( nodeName === "option" ) {
      -		dest.selected = src.defaultSelected;
      -
      -	// IE6-8 fails to set the defaultValue to the correct value when
      -	// cloning other types of input fields
      -	} else if ( nodeName === "input" || nodeName === "textarea" ) {
      -		dest.defaultValue = src.defaultValue;
      -
      -	// IE blanks contents when cloning scripts
      -	} else if ( nodeName === "script" && dest.text !== src.text ) {
      -		dest.text = src.text;
      -	}
      -
      -	// Event data gets referenced instead of copied if the expando
      -	// gets copied too
      -	dest.removeAttribute( jQuery.expando );
      -
      -	// Clear flags for bubbling special change/submit events, they must
      -	// be reattached when the newly cloned events are first activated
      -	dest.removeAttribute( "_submit_attached" );
      -	dest.removeAttribute( "_change_attached" );
      -}
      -
      -jQuery.buildFragment = function( args, nodes, scripts ) {
      -	var fragment, cacheable, cacheresults, doc,
      -	first = args[ 0 ];
      -
      -	// nodes may contain either an explicit document object,
      -	// a jQuery collection or context object.
      -	// If nodes[0] contains a valid object to assign to doc
      -	if ( nodes && nodes[0] ) {
      -		doc = nodes[0].ownerDocument || nodes[0];
      -	}
      -
      -	// Ensure that an attr object doesn't incorrectly stand in as a document object
      -	// Chrome and Firefox seem to allow this to occur and will throw exception
      -	// Fixes #8950
      -	if ( !doc.createDocumentFragment ) {
      -		doc = document;
      -	}
      -
      -	// Only cache "small" (1/2 KB) HTML strings that are associated with the main document
      -	// Cloning options loses the selected state, so don't cache them
      -	// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
      -	// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
      -	// Lastly, IE6,7,8 will not correctly reuse cached fragments that were created from unknown elems #10501
      -	if ( args.length === 1 && typeof first === "string" && first.length < 512 && doc === document &&
      -		first.charAt(0) === "<" && !rnocache.test( first ) &&
      -		(jQuery.support.checkClone || !rchecked.test( first )) &&
      -		(jQuery.support.html5Clone || !rnoshimcache.test( first )) ) {
      -
      -		cacheable = true;
      -
      -		cacheresults = jQuery.fragments[ first ];
      -		if ( cacheresults && cacheresults !== 1 ) {
      -			fragment = cacheresults;
      -		}
      -	}
      -
      -	if ( !fragment ) {
      -		fragment = doc.createDocumentFragment();
      -		jQuery.clean( args, doc, fragment, scripts );
      -	}
      -
      -	if ( cacheable ) {
      -		jQuery.fragments[ first ] = cacheresults ? fragment : 1;
      -	}
      -
      -	return { fragment: fragment, cacheable: cacheable };
      -};
      -
      -jQuery.fragments = {};
      -
      -jQuery.each({
      -	appendTo: "append",
      -	prependTo: "prepend",
      -	insertBefore: "before",
      -	insertAfter: "after",
      -	replaceAll: "replaceWith"
      -}, function( name, original ) {
      -	jQuery.fn[ name ] = function( selector ) {
      -		var ret = [],
      -			insert = jQuery( selector ),
      -			parent = this.length === 1 && this[0].parentNode;
      -
      -		if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
      -			insert[ original ]( this[0] );
      -			return this;
      -
      -		} else {
      -			for ( var i = 0, l = insert.length; i < l; i++ ) {
      -				var elems = ( i > 0 ? this.clone(true) : this ).get();
      -				jQuery( insert[i] )[ original ]( elems );
      -				ret = ret.concat( elems );
      -			}
      -
      -			return this.pushStack( ret, name, insert.selector );
      -		}
      -	};
      -});
      -
      -function getAll( elem ) {
      -	if ( typeof elem.getElementsByTagName !== "undefined" ) {
      -		return elem.getElementsByTagName( "*" );
      -
      -	} else if ( typeof elem.querySelectorAll !== "undefined" ) {
      -		return elem.querySelectorAll( "*" );
      -
      -	} else {
      -		return [];
      -	}
      -}
      -
      -// Used in clean, fixes the defaultChecked property
      -function fixDefaultChecked( elem ) {
      -	if ( elem.type === "checkbox" || elem.type === "radio" ) {
      -		elem.defaultChecked = elem.checked;
      -	}
      -}
      -// Finds all inputs and passes them to fixDefaultChecked
      -function findInputs( elem ) {
      -	var nodeName = ( elem.nodeName || "" ).toLowerCase();
      -	if ( nodeName === "input" ) {
      -		fixDefaultChecked( elem );
      -	// Skip scripts, get other children
      -	} else if ( nodeName !== "script" && typeof elem.getElementsByTagName !== "undefined" ) {
      -		jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
      -	}
      -}
      -
      -// Derived From: http://www.iecss.com/shimprove/javascript/shimprove.1-0-1.js
      -function shimCloneNode( elem ) {
      -	var div = document.createElement( "div" );
      -	safeFragment.appendChild( div );
      -
      -	div.innerHTML = elem.outerHTML;
      -	return div.firstChild;
      -}
      -
      -jQuery.extend({
      -	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
      -		var srcElements,
      -			destElements,
      -			i,
      -			// IE<=8 does not properly clone detached, unknown element nodes
      -			clone = jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ?
      -				elem.cloneNode( true ) :
      -				shimCloneNode( elem );
      -
      -		if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
      -				(elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
      -			// IE copies events bound via attachEvent when using cloneNode.
      -			// Calling detachEvent on the clone will also remove the events
      -			// from the original. In order to get around this, we use some
      -			// proprietary methods to clear the events. Thanks to MooTools
      -			// guys for this hotness.
      -
      -			cloneFixAttributes( elem, clone );
      -
      -			// Using Sizzle here is crazy slow, so we use getElementsByTagName instead
      -			srcElements = getAll( elem );
      -			destElements = getAll( clone );
      -
      -			// Weird iteration because IE will replace the length property
      -			// with an element if you are cloning the body and one of the
      -			// elements on the page has a name or id of "length"
      -			for ( i = 0; srcElements[i]; ++i ) {
      -				// Ensure that the destination node is not null; Fixes #9587
      -				if ( destElements[i] ) {
      -					cloneFixAttributes( srcElements[i], destElements[i] );
      -				}
      -			}
      -		}
      -
      -		// Copy the events from the original to the clone
      -		if ( dataAndEvents ) {
      -			cloneCopyEvent( elem, clone );
      -
      -			if ( deepDataAndEvents ) {
      -				srcElements = getAll( elem );
      -				destElements = getAll( clone );
      -
      -				for ( i = 0; srcElements[i]; ++i ) {
      -					cloneCopyEvent( srcElements[i], destElements[i] );
      -				}
      -			}
      -		}
      -
      -		srcElements = destElements = null;
      -
      -		// Return the cloned set
      -		return clone;
      -	},
      -
      -	clean: function( elems, context, fragment, scripts ) {
      -		var checkScriptType, script, j,
      -				ret = [];
      -
      -		context = context || document;
      -
      -		// !context.createElement fails in IE with an error but returns typeof 'object'
      -		if ( typeof context.createElement === "undefined" ) {
      -			context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
      -		}
      -
      -		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
      -			if ( typeof elem === "number" ) {
      -				elem += "";
      -			}
      -
      -			if ( !elem ) {
      -				continue;
      -			}
      -
      -			// Convert html string into DOM nodes
      -			if ( typeof elem === "string" ) {
      -				if ( !rhtml.test( elem ) ) {
      -					elem = context.createTextNode( elem );
      -				} else {
      -					// Fix "XHTML"-style tags in all browsers
      -					elem = elem.replace(rxhtmlTag, "<$1></$2>");
      -
      -					// Trim whitespace, otherwise indexOf won't work as expected
      -					var tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase(),
      -						wrap = wrapMap[ tag ] || wrapMap._default,
      -						depth = wrap[0],
      -						div = context.createElement("div"),
      -						safeChildNodes = safeFragment.childNodes,
      -						remove;
      -
      -					// Append wrapper element to unknown element safe doc fragment
      -					if ( context === document ) {
      -						// Use the fragment we've already created for this document
      -						safeFragment.appendChild( div );
      -					} else {
      -						// Use a fragment created with the owner document
      -						createSafeFragment( context ).appendChild( div );
      -					}
      -
      -					// Go to html and back, then peel off extra wrappers
      -					div.innerHTML = wrap[1] + elem + wrap[2];
      -
      -					// Move to the right depth
      -					while ( depth-- ) {
      -						div = div.lastChild;
      -					}
      -
      -					// Remove IE's autoinserted <tbody> from table fragments
      -					if ( !jQuery.support.tbody ) {
      -
      -						// String was a <table>, *may* have spurious <tbody>
      -						var hasBody = rtbody.test(elem),
      -							tbody = tag === "table" && !hasBody ?
      -								div.firstChild && div.firstChild.childNodes :
      -
      -								// String was a bare <thead> or <tfoot>
      -								wrap[1] === "<table>" && !hasBody ?
      -									div.childNodes :
      -									[];
      -
      -						for ( j = tbody.length - 1; j >= 0 ; --j ) {
      -							if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
      -								tbody[ j ].parentNode.removeChild( tbody[ j ] );
      -							}
      -						}
      -					}
      -
      -					// IE completely kills leading whitespace when innerHTML is used
      -					if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
      -						div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
      -					}
      -
      -					elem = div.childNodes;
      -
      -					// Clear elements from DocumentFragment (safeFragment or otherwise)
      -					// to avoid hoarding elements. Fixes #11356
      -					if ( div ) {
      -						div.parentNode.removeChild( div );
      -
      -						// Guard against -1 index exceptions in FF3.6
      -						if ( safeChildNodes.length > 0 ) {
      -							remove = safeChildNodes[ safeChildNodes.length - 1 ];
      -
      -							if ( remove && remove.parentNode ) {
      -								remove.parentNode.removeChild( remove );
      -							}
      -						}
      -					}
      -				}
      -			}
      -
      -			// Resets defaultChecked for any radios and checkboxes
      -			// about to be appended to the DOM in IE 6/7 (#8060)
      -			var len;
      -			if ( !jQuery.support.appendChecked ) {
      -				if ( elem[0] && typeof (len = elem.length) === "number" ) {
      -					for ( j = 0; j < len; j++ ) {
      -						findInputs( elem[j] );
      -					}
      -				} else {
      -					findInputs( elem );
      -				}
      -			}
      -
      -			if ( elem.nodeType ) {
      -				ret.push( elem );
      -			} else {
      -				ret = jQuery.merge( ret, elem );
      -			}
      -		}
      -
      -		if ( fragment ) {
      -			checkScriptType = function( elem ) {
      -				return !elem.type || rscriptType.test( elem.type );
      -			};
      -			for ( i = 0; ret[i]; i++ ) {
      -				script = ret[i];
      -				if ( scripts && jQuery.nodeName( script, "script" ) && (!script.type || rscriptType.test( script.type )) ) {
      -					scripts.push( script.parentNode ? script.parentNode.removeChild( script ) : script );
      -
      -				} else {
      -					if ( script.nodeType === 1 ) {
      -						var jsTags = jQuery.grep( script.getElementsByTagName( "script" ), checkScriptType );
      -
      -						ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
      -					}
      -					fragment.appendChild( script );
      -				}
      -			}
      -		}
      -
      -		return ret;
      -	},
      -
      -	cleanData: function( elems ) {
      -		var data, id,
      -			cache = jQuery.cache,
      -			special = jQuery.event.special,
      -			deleteExpando = jQuery.support.deleteExpando;
      -
      -		for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
      -			if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
      -				continue;
      -			}
      -
      -			id = elem[ jQuery.expando ];
      -
      -			if ( id ) {
      -				data = cache[ id ];
      -
      -				if ( data && data.events ) {
      -					for ( var type in data.events ) {
      -						if ( special[ type ] ) {
      -							jQuery.event.remove( elem, type );
      -
      -						// This is a shortcut to avoid jQuery.event.remove's overhead
      -						} else {
      -							jQuery.removeEvent( elem, type, data.handle );
      -						}
      -					}
      -
      -					// Null the DOM reference to avoid IE6/7/8 leak (#7054)
      -					if ( data.handle ) {
      -						data.handle.elem = null;
      -					}
      -				}
      -
      -				if ( deleteExpando ) {
      -					delete elem[ jQuery.expando ];
      -
      -				} else if ( elem.removeAttribute ) {
      -					elem.removeAttribute( jQuery.expando );
      -				}
      -
      -				delete cache[ id ];
      -			}
      -		}
      -	}
      -});
      -
      -
      -
      -
      -var ralpha = /alpha\([^)]*\)/i,
      -	ropacity = /opacity=([^)]*)/,
      -	// fixed for IE9, see #8346
      -	rupper = /([A-Z]|^ms)/g,
      -	rnum = /^[\-+]?(?:\d*\.)?\d+$/i,
      -	rnumnonpx = /^-?(?:\d*\.)?\d+(?!px)[^\d\s]+$/i,
      -	rrelNum = /^([\-+])=([\-+.\de]+)/,
      -	rmargin = /^margin/,
      -
      -	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
      -
      -	// order is important!
      -	cssExpand = [ "Top", "Right", "Bottom", "Left" ],
      -
      -	curCSS,
      -
      -	getComputedStyle,
      -	currentStyle;
      -
      -jQuery.fn.css = function( name, value ) {
      -	return jQuery.access( this, function( elem, name, value ) {
      -		return value !== undefined ?
      -			jQuery.style( elem, name, value ) :
      -			jQuery.css( elem, name );
      -	}, name, value, arguments.length > 1 );
      -};
      -
      -jQuery.extend({
      -	// Add in style property hooks for overriding the default
      -	// behavior of getting and setting a style property
      -	cssHooks: {
      -		opacity: {
      -			get: function( elem, computed ) {
      -				if ( computed ) {
      -					// We should always get a number back from opacity
      -					var ret = curCSS( elem, "opacity" );
      -					return ret === "" ? "1" : ret;
      -
      -				} else {
      -					return elem.style.opacity;
      -				}
      -			}
      -		}
      -	},
      -
      -	// Exclude the following css properties to add px
      -	cssNumber: {
      -		"fillOpacity": true,
      -		"fontWeight": true,
      -		"lineHeight": true,
      -		"opacity": true,
      -		"orphans": true,
      -		"widows": true,
      -		"zIndex": true,
      -		"zoom": true
      -	},
      -
      -	// Add in properties whose names you wish to fix before
      -	// setting or getting the value
      -	cssProps: {
      -		// normalize float css property
      -		"float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
      -	},
      -
      -	// Get and set the style property on a DOM Node
      -	style: function( elem, name, value, extra ) {
      -		// Don't set styles on text and comment nodes
      -		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
      -			return;
      -		}
      -
      -		// Make sure that we're working with the right name
      -		var ret, type, origName = jQuery.camelCase( name ),
      -			style = elem.style, hooks = jQuery.cssHooks[ origName ];
      -
      -		name = jQuery.cssProps[ origName ] || origName;
      -
      -		// Check if we're setting a value
      -		if ( value !== undefined ) {
      -			type = typeof value;
      -
      -			// convert relative number strings (+= or -=) to relative numbers. #7345
      -			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
      -				value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
      -				// Fixes bug #9237
      -				type = "number";
      -			}
      -
      -			// Make sure that NaN and null values aren't set. See: #7116
      -			if ( value == null || type === "number" && isNaN( value ) ) {
      -				return;
      -			}
      -
      -			// If a number was passed in, add 'px' to the (except for certain CSS properties)
      -			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
      -				value += "px";
      -			}
      -
      -			// If a hook was provided, use that value, otherwise just set the specified value
      -			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
      -				// Wrapped to prevent IE from throwing errors when 'invalid' values are provided
      -				// Fixes bug #5509
      -				try {
      -					style[ name ] = value;
      -				} catch(e) {}
      -			}
      -
      -		} else {
      -			// If a hook was provided get the non-computed value from there
      -			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
      -				return ret;
      -			}
      -
      -			// Otherwise just get the value from the style object
      -			return style[ name ];
      -		}
      -	},
      -
      -	css: function( elem, name, extra ) {
      -		var ret, hooks;
      -
      -		// Make sure that we're working with the right name
      -		name = jQuery.camelCase( name );
      -		hooks = jQuery.cssHooks[ name ];
      -		name = jQuery.cssProps[ name ] || name;
      -
      -		// cssFloat needs a special treatment
      -		if ( name === "cssFloat" ) {
      -			name = "float";
      -		}
      -
      -		// If a hook was provided get the computed value from there
      -		if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
      -			return ret;
      -
      -		// Otherwise, if a way to get the computed value exists, use that
      -		} else if ( curCSS ) {
      -			return curCSS( elem, name );
      -		}
      -	},
      -
      -	// A method for quickly swapping in/out CSS properties to get correct calculations
      -	swap: function( elem, options, callback ) {
      -		var old = {},
      -			ret, name;
      -
      -		// Remember the old values, and insert the new ones
      -		for ( name in options ) {
      -			old[ name ] = elem.style[ name ];
      -			elem.style[ name ] = options[ name ];
      -		}
      -
      -		ret = callback.call( elem );
      -
      -		// Revert the old values
      -		for ( name in options ) {
      -			elem.style[ name ] = old[ name ];
      -		}
      -
      -		return ret;
      -	}
      -});
      -
      -// DEPRECATED in 1.3, Use jQuery.css() instead
      -jQuery.curCSS = jQuery.css;
      -
      -if ( document.defaultView && document.defaultView.getComputedStyle ) {
      -	getComputedStyle = function( elem, name ) {
      -		var ret, defaultView, computedStyle, width,
      -			style = elem.style;
      -
      -		name = name.replace( rupper, "-$1" ).toLowerCase();
      -
      -		if ( (defaultView = elem.ownerDocument.defaultView) &&
      -				(computedStyle = defaultView.getComputedStyle( elem, null )) ) {
      -
      -			ret = computedStyle.getPropertyValue( name );
      -			if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
      -				ret = jQuery.style( elem, name );
      -			}
      -		}
      -
      -		// A tribute to the "awesome hack by Dean Edwards"
      -		// WebKit uses "computed value (percentage if specified)" instead of "used value" for margins
      -		// which is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
      -		if ( !jQuery.support.pixelMargin && computedStyle && rmargin.test( name ) && rnumnonpx.test( ret ) ) {
      -			width = style.width;
      -			style.width = ret;
      -			ret = computedStyle.width;
      -			style.width = width;
      -		}
      -
      -		return ret;
      -	};
      -}
      -
      -if ( document.documentElement.currentStyle ) {
      -	currentStyle = function( elem, name ) {
      -		var left, rsLeft, uncomputed,
      -			ret = elem.currentStyle && elem.currentStyle[ name ],
      -			style = elem.style;
      -
      -		// Avoid setting ret to empty string here
      -		// so we don't default to auto
      -		if ( ret == null && style && (uncomputed = style[ name ]) ) {
      -			ret = uncomputed;
      -		}
      -
      -		// From the awesome hack by Dean Edwards
      -		// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
      -
      -		// If we're not dealing with a regular pixel number
      -		// but a number that has a weird ending, we need to convert it to pixels
      -		if ( rnumnonpx.test( ret ) ) {
      -
      -			// Remember the original values
      -			left = style.left;
      -			rsLeft = elem.runtimeStyle && elem.runtimeStyle.left;
      -
      -			// Put in the new values to get a computed value out
      -			if ( rsLeft ) {
      -				elem.runtimeStyle.left = elem.currentStyle.left;
      -			}
      -			style.left = name === "fontSize" ? "1em" : ret;
      -			ret = style.pixelLeft + "px";
      -
      -			// Revert the changed values
      -			style.left = left;
      -			if ( rsLeft ) {
      -				elem.runtimeStyle.left = rsLeft;
      -			}
      -		}
      -
      -		return ret === "" ? "auto" : ret;
      -	};
      -}
      -
      -curCSS = getComputedStyle || currentStyle;
      -
      -function getWidthOrHeight( elem, name, extra ) {
      -
      -	// Start with offset property
      -	var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
      -		i = name === "width" ? 1 : 0,
      -		len = 4;
      -
      -	if ( val > 0 ) {
      -		if ( extra !== "border" ) {
      -			for ( ; i < len; i += 2 ) {
      -				if ( !extra ) {
      -					val -= parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
      -				}
      -				if ( extra === "margin" ) {
      -					val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ] ) ) || 0;
      -				} else {
      -					val -= parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
      -				}
      -			}
      -		}
      -
      -		return val + "px";
      -	}
      -
      -	// Fall back to computed then uncomputed css if necessary
      -	val = curCSS( elem, name );
      -	if ( val < 0 || val == null ) {
      -		val = elem.style[ name ];
      -	}
      -
      -	// Computed unit is not pixels. Stop here and return.
      -	if ( rnumnonpx.test(val) ) {
      -		return val;
      -	}
      -
      -	// Normalize "", auto, and prepare for extra
      -	val = parseFloat( val ) || 0;
      -
      -	// Add padding, border, margin
      -	if ( extra ) {
      -		for ( ; i < len; i += 2 ) {
      -			val += parseFloat( jQuery.css( elem, "padding" + cssExpand[ i ] ) ) || 0;
      -			if ( extra !== "padding" ) {
      -				val += parseFloat( jQuery.css( elem, "border" + cssExpand[ i ] + "Width" ) ) || 0;
      -			}
      -			if ( extra === "margin" ) {
      -				val += parseFloat( jQuery.css( elem, extra + cssExpand[ i ]) ) || 0;
      -			}
      -		}
      -	}
      -
      -	return val + "px";
      -}
      -
      -jQuery.each([ "height", "width" ], function( i, name ) {
      -	jQuery.cssHooks[ name ] = {
      -		get: function( elem, computed, extra ) {
      -			if ( computed ) {
      -				if ( elem.offsetWidth !== 0 ) {
      -					return getWidthOrHeight( elem, name, extra );
      -				} else {
      -					return jQuery.swap( elem, cssShow, function() {
      -						return getWidthOrHeight( elem, name, extra );
      -					});
      -				}
      -			}
      -		},
      -
      -		set: function( elem, value ) {
      -			return rnum.test( value ) ?
      -				value + "px" :
      -				value;
      -		}
      -	};
      -});
      -
      -if ( !jQuery.support.opacity ) {
      -	jQuery.cssHooks.opacity = {
      -		get: function( elem, computed ) {
      -			// IE uses filters for opacity
      -			return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
      -				( parseFloat( RegExp.$1 ) / 100 ) + "" :
      -				computed ? "1" : "";
      -		},
      -
      -		set: function( elem, value ) {
      -			var style = elem.style,
      -				currentStyle = elem.currentStyle,
      -				opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
      -				filter = currentStyle && currentStyle.filter || style.filter || "";
      -
      -			// IE has trouble with opacity if it does not have layout
      -			// Force it by setting the zoom level
      -			style.zoom = 1;
      -
      -			// if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
      -			if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
      -
      -				// Setting style.filter to null, "" & " " still leave "filter:" in the cssText
      -				// if "filter:" is present at all, clearType is disabled, we want to avoid this
      -				// style.removeAttribute is IE Only, but so apparently is this code path...
      -				style.removeAttribute( "filter" );
      -
      -				// if there there is no filter style applied in a css rule, we are done
      -				if ( currentStyle && !currentStyle.filter ) {
      -					return;
      -				}
      -			}
      -
      -			// otherwise, set new filter values
      -			style.filter = ralpha.test( filter ) ?
      -				filter.replace( ralpha, opacity ) :
      -				filter + " " + opacity;
      -		}
      -	};
      -}
      -
      -jQuery(function() {
      -	// This hook cannot be added until DOM ready because the support test
      -	// for it is not run until after DOM ready
      -	if ( !jQuery.support.reliableMarginRight ) {
      -		jQuery.cssHooks.marginRight = {
      -			get: function( elem, computed ) {
      -				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -				// Work around by temporarily setting element display to inline-block
      -				return jQuery.swap( elem, { "display": "inline-block" }, function() {
      -					if ( computed ) {
      -						return curCSS( elem, "margin-right" );
      -					} else {
      -						return elem.style.marginRight;
      -					}
      -				});
      -			}
      -		};
      -	}
      -});
      -
      -if ( jQuery.expr && jQuery.expr.filters ) {
      -	jQuery.expr.filters.hidden = function( elem ) {
      -		var width = elem.offsetWidth,
      -			height = elem.offsetHeight;
      -
      -		return ( width === 0 && height === 0 ) || (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
      -	};
      -
      -	jQuery.expr.filters.visible = function( elem ) {
      -		return !jQuery.expr.filters.hidden( elem );
      -	};
      -}
      -
      -// These hooks are used by animate to expand properties
      -jQuery.each({
      -	margin: "",
      -	padding: "",
      -	border: "Width"
      -}, function( prefix, suffix ) {
      -
      -	jQuery.cssHooks[ prefix + suffix ] = {
      -		expand: function( value ) {
      -			var i,
      -
      -				// assumes a single number if not a string
      -				parts = typeof value === "string" ? value.split(" ") : [ value ],
      -				expanded = {};
      -
      -			for ( i = 0; i < 4; i++ ) {
      -				expanded[ prefix + cssExpand[ i ] + suffix ] =
      -					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
      -			}
      -
      -			return expanded;
      -		}
      -	};
      -});
      -
      -
      -
      -
      -var r20 = /%20/g,
      -	rbracket = /\[\]$/,
      -	rCRLF = /\r?\n/g,
      -	rhash = /#.*$/,
      -	rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
      -	rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
      -	// #7653, #8125, #8152: local protocol detection
      -	rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
      -	rnoContent = /^(?:GET|HEAD)$/,
      -	rprotocol = /^\/\//,
      -	rquery = /\?/,
      -	rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
      -	rselectTextarea = /^(?:select|textarea)/i,
      -	rspacesAjax = /\s+/,
      -	rts = /([?&])_=[^&]*/,
      -	rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
      -
      -	// Keep a copy of the old load method
      -	_load = jQuery.fn.load,
      -
      -	/* Prefilters
      -	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
      -	 * 2) These are called:
      -	 *    - BEFORE asking for a transport
      -	 *    - AFTER param serialization (s.data is a string if s.processData is true)
      -	 * 3) key is the dataType
      -	 * 4) the catchall symbol "*" can be used
      -	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
      -	 */
      -	prefilters = {},
      -
      -	/* Transports bindings
      -	 * 1) key is the dataType
      -	 * 2) the catchall symbol "*" can be used
      -	 * 3) selection will start with transport dataType and THEN go to "*" if needed
      -	 */
      -	transports = {},
      -
      -	// Document location
      -	ajaxLocation,
      -
      -	// Document location segments
      -	ajaxLocParts,
      -
      -	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
      -	allTypes = ["*/"] + ["*"];
      -
      -// #8138, IE may throw an exception when accessing
      -// a field from window.location if document.domain has been set
      -try {
      -	ajaxLocation = location.href;
      -} catch( e ) {
      -	// Use the href attribute of an A element
      -	// since IE will modify it given document.location
      -	ajaxLocation = document.createElement( "a" );
      -	ajaxLocation.href = "";
      -	ajaxLocation = ajaxLocation.href;
      -}
      -
      -// Segment location into parts
      -ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
      -
      -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
      -function addToPrefiltersOrTransports( structure ) {
      -
      -	// dataTypeExpression is optional and defaults to "*"
      -	return function( dataTypeExpression, func ) {
      -
      -		if ( typeof dataTypeExpression !== "string" ) {
      -			func = dataTypeExpression;
      -			dataTypeExpression = "*";
      -		}
      -
      -		if ( jQuery.isFunction( func ) ) {
      -			var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
      -				i = 0,
      -				length = dataTypes.length,
      -				dataType,
      -				list,
      -				placeBefore;
      -
      -			// For each dataType in the dataTypeExpression
      -			for ( ; i < length; i++ ) {
      -				dataType = dataTypes[ i ];
      -				// We control if we're asked to add before
      -				// any existing element
      -				placeBefore = /^\+/.test( dataType );
      -				if ( placeBefore ) {
      -					dataType = dataType.substr( 1 ) || "*";
      -				}
      -				list = structure[ dataType ] = structure[ dataType ] || [];
      -				// then we add to the structure accordingly
      -				list[ placeBefore ? "unshift" : "push" ]( func );
      -			}
      -		}
      -	};
      -}
      -
      -// Base inspection function for prefilters and transports
      -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
      -		dataType /* internal */, inspected /* internal */ ) {
      -
      -	dataType = dataType || options.dataTypes[ 0 ];
      -	inspected = inspected || {};
      -
      -	inspected[ dataType ] = true;
      -
      -	var list = structure[ dataType ],
      -		i = 0,
      -		length = list ? list.length : 0,
      -		executeOnly = ( structure === prefilters ),
      -		selection;
      -
      -	for ( ; i < length && ( executeOnly || !selection ); i++ ) {
      -		selection = list[ i ]( options, originalOptions, jqXHR );
      -		// If we got redirected to another dataType
      -		// we try there if executing only and not done already
      -		if ( typeof selection === "string" ) {
      -			if ( !executeOnly || inspected[ selection ] ) {
      -				selection = undefined;
      -			} else {
      -				options.dataTypes.unshift( selection );
      -				selection = inspectPrefiltersOrTransports(
      -						structure, options, originalOptions, jqXHR, selection, inspected );
      -			}
      -		}
      -	}
      -	// If we're only executing or nothing was selected
      -	// we try the catchall dataType if not done already
      -	if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
      -		selection = inspectPrefiltersOrTransports(
      -				structure, options, originalOptions, jqXHR, "*", inspected );
      -	}
      -	// unnecessary when only executing (prefilters)
      -	// but it'll be ignored by the caller in that case
      -	return selection;
      -}
      -
      -// A special extend for ajax options
      -// that takes "flat" options (not to be deep extended)
      -// Fixes #9887
      -function ajaxExtend( target, src ) {
      -	var key, deep,
      -		flatOptions = jQuery.ajaxSettings.flatOptions || {};
      -	for ( key in src ) {
      -		if ( src[ key ] !== undefined ) {
      -			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
      -		}
      -	}
      -	if ( deep ) {
      -		jQuery.extend( true, target, deep );
      -	}
      -}
      -
      -jQuery.fn.extend({
      -	load: function( url, params, callback ) {
      -		if ( typeof url !== "string" && _load ) {
      -			return _load.apply( this, arguments );
      -
      -		// Don't do a request if no elements are being requested
      -		} else if ( !this.length ) {
      -			return this;
      -		}
      -
      -		var off = url.indexOf( " " );
      -		if ( off >= 0 ) {
      -			var selector = url.slice( off, url.length );
      -			url = url.slice( 0, off );
      -		}
      -
      -		// Default to a GET request
      -		var type = "GET";
      -
      -		// If the second parameter was provided
      -		if ( params ) {
      -			// If it's a function
      -			if ( jQuery.isFunction( params ) ) {
      -				// We assume that it's the callback
      -				callback = params;
      -				params = undefined;
      -
      -			// Otherwise, build a param string
      -			} else if ( typeof params === "object" ) {
      -				params = jQuery.param( params, jQuery.ajaxSettings.traditional );
      -				type = "POST";
      -			}
      -		}
      -
      -		var self = this;
      -
      -		// Request the remote document
      -		jQuery.ajax({
      -			url: url,
      -			type: type,
      -			dataType: "html",
      -			data: params,
      -			// Complete callback (responseText is used internally)
      -			complete: function( jqXHR, status, responseText ) {
      -				// Store the response as specified by the jqXHR object
      -				responseText = jqXHR.responseText;
      -				// If successful, inject the HTML into all the matched elements
      -				if ( jqXHR.isResolved() ) {
      -					// #4825: Get the actual response in case
      -					// a dataFilter is present in ajaxSettings
      -					jqXHR.done(function( r ) {
      -						responseText = r;
      -					});
      -					// See if a selector was specified
      -					self.html( selector ?
      -						// Create a dummy div to hold the results
      -						jQuery("<div>")
      -							// inject the contents of the document in, removing the scripts
      -							// to avoid any 'Permission Denied' errors in IE
      -							.append(responseText.replace(rscript, ""))
      -
      -							// Locate the specified elements
      -							.find(selector) :
      -
      -						// If not, just inject the full result
      -						responseText );
      -				}
      -
      -				if ( callback ) {
      -					self.each( callback, [ responseText, status, jqXHR ] );
      -				}
      -			}
      -		});
      -
      -		return this;
      -	},
      -
      -	serialize: function() {
      -		return jQuery.param( this.serializeArray() );
      -	},
      -
      -	serializeArray: function() {
      -		return this.map(function(){
      -			return this.elements ? jQuery.makeArray( this.elements ) : this;
      -		})
      -		.filter(function(){
      -			return this.name && !this.disabled &&
      -				( this.checked || rselectTextarea.test( this.nodeName ) ||
      -					rinput.test( this.type ) );
      -		})
      -		.map(function( i, elem ){
      -			var val = jQuery( this ).val();
      -
      -			return val == null ?
      -				null :
      -				jQuery.isArray( val ) ?
      -					jQuery.map( val, function( val, i ){
      -						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -					}) :
      -					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -		}).get();
      -	}
      -});
      -
      -// Attach a bunch of functions for handling common AJAX events
      -jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
      -	jQuery.fn[ o ] = function( f ){
      -		return this.on( o, f );
      -	};
      -});
      -
      -jQuery.each( [ "get", "post" ], function( i, method ) {
      -	jQuery[ method ] = function( url, data, callback, type ) {
      -		// shift arguments if data argument was omitted
      -		if ( jQuery.isFunction( data ) ) {
      -			type = type || callback;
      -			callback = data;
      -			data = undefined;
      -		}
      -
      -		return jQuery.ajax({
      -			type: method,
      -			url: url,
      -			data: data,
      -			success: callback,
      -			dataType: type
      -		});
      -	};
      -});
      -
      -jQuery.extend({
      -
      -	getScript: function( url, callback ) {
      -		return jQuery.get( url, undefined, callback, "script" );
      -	},
      -
      -	getJSON: function( url, data, callback ) {
      -		return jQuery.get( url, data, callback, "json" );
      -	},
      -
      -	// Creates a full fledged settings object into target
      -	// with both ajaxSettings and settings fields.
      -	// If target is omitted, writes into ajaxSettings.
      -	ajaxSetup: function( target, settings ) {
      -		if ( settings ) {
      -			// Building a settings object
      -			ajaxExtend( target, jQuery.ajaxSettings );
      -		} else {
      -			// Extending ajaxSettings
      -			settings = target;
      -			target = jQuery.ajaxSettings;
      -		}
      -		ajaxExtend( target, settings );
      -		return target;
      -	},
      -
      -	ajaxSettings: {
      -		url: ajaxLocation,
      -		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
      -		global: true,
      -		type: "GET",
      -		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      -		processData: true,
      -		async: true,
      -		/*
      -		timeout: 0,
      -		data: null,
      -		dataType: null,
      -		username: null,
      -		password: null,
      -		cache: null,
      -		traditional: false,
      -		headers: {},
      -		*/
      -
      -		accepts: {
      -			xml: "application/xml, text/xml",
      -			html: "text/html",
      -			text: "text/plain",
      -			json: "application/json, text/javascript",
      -			"*": allTypes
      -		},
      -
      -		contents: {
      -			xml: /xml/,
      -			html: /html/,
      -			json: /json/
      -		},
      -
      -		responseFields: {
      -			xml: "responseXML",
      -			text: "responseText"
      -		},
      -
      -		// List of data converters
      -		// 1) key format is "source_type destination_type" (a single space in-between)
      -		// 2) the catchall symbol "*" can be used for source_type
      -		converters: {
      -
      -			// Convert anything to text
      -			"* text": window.String,
      -
      -			// Text to html (true = no transformation)
      -			"text html": true,
      -
      -			// Evaluate text as a json expression
      -			"text json": jQuery.parseJSON,
      -
      -			// Parse text as xml
      -			"text xml": jQuery.parseXML
      -		},
      -
      -		// For options that shouldn't be deep extended:
      -		// you can add your own custom options here if
      -		// and when you create one that shouldn't be
      -		// deep extended (see ajaxExtend)
      -		flatOptions: {
      -			context: true,
      -			url: true
      -		}
      -	},
      -
      -	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
      -	ajaxTransport: addToPrefiltersOrTransports( transports ),
      -
      -	// Main method
      -	ajax: function( url, options ) {
      -
      -		// If url is an object, simulate pre-1.5 signature
      -		if ( typeof url === "object" ) {
      -			options = url;
      -			url = undefined;
      -		}
      -
      -		// Force options to be an object
      -		options = options || {};
      -
      -		var // Create the final options object
      -			s = jQuery.ajaxSetup( {}, options ),
      -			// Callbacks context
      -			callbackContext = s.context || s,
      -			// Context for global events
      -			// It's the callbackContext if one was provided in the options
      -			// and if it's a DOM node or a jQuery collection
      -			globalEventContext = callbackContext !== s &&
      -				( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
      -						jQuery( callbackContext ) : jQuery.event,
      -			// Deferreds
      -			deferred = jQuery.Deferred(),
      -			completeDeferred = jQuery.Callbacks( "once memory" ),
      -			// Status-dependent callbacks
      -			statusCode = s.statusCode || {},
      -			// ifModified key
      -			ifModifiedKey,
      -			// Headers (they are sent all at once)
      -			requestHeaders = {},
      -			requestHeadersNames = {},
      -			// Response headers
      -			responseHeadersString,
      -			responseHeaders,
      -			// transport
      -			transport,
      -			// timeout handle
      -			timeoutTimer,
      -			// Cross-domain detection vars
      -			parts,
      -			// The jqXHR state
      -			state = 0,
      -			// To know if global events are to be dispatched
      -			fireGlobals,
      -			// Loop variable
      -			i,
      -			// Fake xhr
      -			jqXHR = {
      -
      -				readyState: 0,
      -
      -				// Caches the header
      -				setRequestHeader: function( name, value ) {
      -					if ( !state ) {
      -						var lname = name.toLowerCase();
      -						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
      -						requestHeaders[ name ] = value;
      -					}
      -					return this;
      -				},
      -
      -				// Raw string
      -				getAllResponseHeaders: function() {
      -					return state === 2 ? responseHeadersString : null;
      -				},
      -
      -				// Builds headers hashtable if needed
      -				getResponseHeader: function( key ) {
      -					var match;
      -					if ( state === 2 ) {
      -						if ( !responseHeaders ) {
      -							responseHeaders = {};
      -							while( ( match = rheaders.exec( responseHeadersString ) ) ) {
      -								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
      -							}
      -						}
      -						match = responseHeaders[ key.toLowerCase() ];
      -					}
      -					return match === undefined ? null : match;
      -				},
      -
      -				// Overrides response content-type header
      -				overrideMimeType: function( type ) {
      -					if ( !state ) {
      -						s.mimeType = type;
      -					}
      -					return this;
      -				},
      -
      -				// Cancel the request
      -				abort: function( statusText ) {
      -					statusText = statusText || "abort";
      -					if ( transport ) {
      -						transport.abort( statusText );
      -					}
      -					done( 0, statusText );
      -					return this;
      -				}
      -			};
      -
      -		// Callback for when everything is done
      -		// It is defined here because jslint complains if it is declared
      -		// at the end of the function (which would be more logical and readable)
      -		function done( status, nativeStatusText, responses, headers ) {
      -
      -			// Called once
      -			if ( state === 2 ) {
      -				return;
      -			}
      -
      -			// State is "done" now
      -			state = 2;
      -
      -			// Clear timeout if it exists
      -			if ( timeoutTimer ) {
      -				clearTimeout( timeoutTimer );
      -			}
      -
      -			// Dereference transport for early garbage collection
      -			// (no matter how long the jqXHR object will be used)
      -			transport = undefined;
      -
      -			// Cache response headers
      -			responseHeadersString = headers || "";
      -
      -			// Set readyState
      -			jqXHR.readyState = status > 0 ? 4 : 0;
      -
      -			var isSuccess,
      -				success,
      -				error,
      -				statusText = nativeStatusText,
      -				response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
      -				lastModified,
      -				etag;
      -
      -			// If successful, handle type chaining
      -			if ( status >= 200 && status < 300 || status === 304 ) {
      -
      -				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -				if ( s.ifModified ) {
      -
      -					if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
      -						jQuery.lastModified[ ifModifiedKey ] = lastModified;
      -					}
      -					if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
      -						jQuery.etag[ ifModifiedKey ] = etag;
      -					}
      -				}
      -
      -				// If not modified
      -				if ( status === 304 ) {
      -
      -					statusText = "notmodified";
      -					isSuccess = true;
      -
      -				// If we have data
      -				} else {
      -
      -					try {
      -						success = ajaxConvert( s, response );
      -						statusText = "success";
      -						isSuccess = true;
      -					} catch(e) {
      -						// We have a parsererror
      -						statusText = "parsererror";
      -						error = e;
      -					}
      -				}
      -			} else {
      -				// We extract error from statusText
      -				// then normalize statusText and status for non-aborts
      -				error = statusText;
      -				if ( !statusText || status ) {
      -					statusText = "error";
      -					if ( status < 0 ) {
      -						status = 0;
      -					}
      -				}
      -			}
      -
      -			// Set data for the fake xhr object
      -			jqXHR.status = status;
      -			jqXHR.statusText = "" + ( nativeStatusText || statusText );
      -
      -			// Success/Error
      -			if ( isSuccess ) {
      -				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
      -			} else {
      -				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
      -			}
      -
      -			// Status-dependent callbacks
      -			jqXHR.statusCode( statusCode );
      -			statusCode = undefined;
      -
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
      -						[ jqXHR, s, isSuccess ? success : error ] );
      -			}
      -
      -			// Complete
      -			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
      -
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
      -				// Handle the global AJAX counter
      -				if ( !( --jQuery.active ) ) {
      -					jQuery.event.trigger( "ajaxStop" );
      -				}
      -			}
      -		}
      -
      -		// Attach deferreds
      -		deferred.promise( jqXHR );
      -		jqXHR.success = jqXHR.done;
      -		jqXHR.error = jqXHR.fail;
      -		jqXHR.complete = completeDeferred.add;
      -
      -		// Status-dependent callbacks
      -		jqXHR.statusCode = function( map ) {
      -			if ( map ) {
      -				var tmp;
      -				if ( state < 2 ) {
      -					for ( tmp in map ) {
      -						statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
      -					}
      -				} else {
      -					tmp = map[ jqXHR.status ];
      -					jqXHR.then( tmp, tmp );
      -				}
      -			}
      -			return this;
      -		};
      -
      -		// Remove hash character (#7531: and string promotion)
      -		// Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
      -		// We also use the url parameter if available
      -		s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
      -
      -		// Extract dataTypes list
      -		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
      -
      -		// Determine if a cross-domain request is in order
      -		if ( s.crossDomain == null ) {
      -			parts = rurl.exec( s.url.toLowerCase() );
      -			s.crossDomain = !!( parts &&
      -				( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
      -					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
      -						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
      -			);
      -		}
      -
      -		// Convert data if not already a string
      -		if ( s.data && s.processData && typeof s.data !== "string" ) {
      -			s.data = jQuery.param( s.data, s.traditional );
      -		}
      -
      -		// Apply prefilters
      -		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
      -
      -		// If request was aborted inside a prefilter, stop there
      -		if ( state === 2 ) {
      -			return false;
      -		}
      -
      -		// We can fire global events as of now if asked to
      -		fireGlobals = s.global;
      -
      -		// Uppercase the type
      -		s.type = s.type.toUpperCase();
      -
      -		// Determine if request has content
      -		s.hasContent = !rnoContent.test( s.type );
      -
      -		// Watch for a new set of requests
      -		if ( fireGlobals && jQuery.active++ === 0 ) {
      -			jQuery.event.trigger( "ajaxStart" );
      -		}
      -
      -		// More options handling for requests with no content
      -		if ( !s.hasContent ) {
      -
      -			// If data is available, append data to url
      -			if ( s.data ) {
      -				s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
      -				// #9682: remove data so that it's not used in an eventual retry
      -				delete s.data;
      -			}
      -
      -			// Get ifModifiedKey before adding the anti-cache parameter
      -			ifModifiedKey = s.url;
      -
      -			// Add anti-cache in url if needed
      -			if ( s.cache === false ) {
      -
      -				var ts = jQuery.now(),
      -					// try replacing _= if it is there
      -					ret = s.url.replace( rts, "$1_=" + ts );
      -
      -				// if nothing was replaced, add timestamp to the end
      -				s.url = ret + ( ( ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
      -			}
      -		}
      -
      -		// Set the correct header, if data is being sent
      -		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
      -			jqXHR.setRequestHeader( "Content-Type", s.contentType );
      -		}
      -
      -		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -		if ( s.ifModified ) {
      -			ifModifiedKey = ifModifiedKey || s.url;
      -			if ( jQuery.lastModified[ ifModifiedKey ] ) {
      -				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
      -			}
      -			if ( jQuery.etag[ ifModifiedKey ] ) {
      -				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
      -			}
      -		}
      -
      -		// Set the Accepts header for the server, depending on the dataType
      -		jqXHR.setRequestHeader(
      -			"Accept",
      -			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
      -				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
      -				s.accepts[ "*" ]
      -		);
      -
      -		// Check for headers option
      -		for ( i in s.headers ) {
      -			jqXHR.setRequestHeader( i, s.headers[ i ] );
      -		}
      -
      -		// Allow custom headers/mimetypes and early abort
      -		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
      -				// Abort if not done already
      -				jqXHR.abort();
      -				return false;
      -
      -		}
      -
      -		// Install callbacks on deferreds
      -		for ( i in { success: 1, error: 1, complete: 1 } ) {
      -			jqXHR[ i ]( s[ i ] );
      -		}
      -
      -		// Get transport
      -		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
      -
      -		// If no transport, we auto-abort
      -		if ( !transport ) {
      -			done( -1, "No Transport" );
      -		} else {
      -			jqXHR.readyState = 1;
      -			// Send global event
      -			if ( fireGlobals ) {
      -				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
      -			}
      -			// Timeout
      -			if ( s.async && s.timeout > 0 ) {
      -				timeoutTimer = setTimeout( function(){
      -					jqXHR.abort( "timeout" );
      -				}, s.timeout );
      -			}
      -
      -			try {
      -				state = 1;
      -				transport.send( requestHeaders, done );
      -			} catch (e) {
      -				// Propagate exception as error if not done
      -				if ( state < 2 ) {
      -					done( -1, e );
      -				// Simply rethrow otherwise
      -				} else {
      -					throw e;
      -				}
      -			}
      -		}
      -
      -		return jqXHR;
      -	},
      -
      -	// Serialize an array of form elements or a set of
      -	// key/values into a query string
      -	param: function( a, traditional ) {
      -		var s = [],
      -			add = function( key, value ) {
      -				// If value is a function, invoke it and return its value
      -				value = jQuery.isFunction( value ) ? value() : value;
      -				s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
      -			};
      -
      -		// Set traditional to true for jQuery <= 1.3.2 behavior.
      -		if ( traditional === undefined ) {
      -			traditional = jQuery.ajaxSettings.traditional;
      -		}
      -
      -		// If an array was passed in, assume that it is an array of form elements.
      -		if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
      -			// Serialize the form elements
      -			jQuery.each( a, function() {
      -				add( this.name, this.value );
      -			});
      -
      -		} else {
      -			// If traditional, encode the "old" way (the way 1.3.2 or older
      -			// did it), otherwise encode params recursively.
      -			for ( var prefix in a ) {
      -				buildParams( prefix, a[ prefix ], traditional, add );
      -			}
      -		}
      -
      -		// Return the resulting serialization
      -		return s.join( "&" ).replace( r20, "+" );
      -	}
      -});
      -
      -function buildParams( prefix, obj, traditional, add ) {
      -	if ( jQuery.isArray( obj ) ) {
      -		// Serialize array item.
      -		jQuery.each( obj, function( i, v ) {
      -			if ( traditional || rbracket.test( prefix ) ) {
      -				// Treat each array item as a scalar.
      -				add( prefix, v );
      -
      -			} else {
      -				// If array item is non-scalar (array or object), encode its
      -				// numeric index to resolve deserialization ambiguity issues.
      -				// Note that rack (as of 1.0.0) can't currently deserialize
      -				// nested arrays properly, and attempting to do so may cause
      -				// a server error. Possible fixes are to modify rack's
      -				// deserialization algorithm or to provide an option or flag
      -				// to force array serialization to be shallow.
      -				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
      -			}
      -		});
      -
      -	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
      -		// Serialize object item.
      -		for ( var name in obj ) {
      -			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
      -		}
      -
      -	} else {
      -		// Serialize scalar item.
      -		add( prefix, obj );
      -	}
      -}
      -
      -// This is still on the jQuery object... for now
      -// Want to move this to jQuery.ajax some day
      -jQuery.extend({
      -
      -	// Counter for holding the number of active queries
      -	active: 0,
      -
      -	// Last-Modified header cache for next request
      -	lastModified: {},
      -	etag: {}
      -
      -});
      -
      -/* Handles responses to an ajax request:
      - * - sets all responseXXX fields accordingly
      - * - finds the right dataType (mediates between content-type and expected dataType)
      - * - returns the corresponding response
      - */
      -function ajaxHandleResponses( s, jqXHR, responses ) {
      -
      -	var contents = s.contents,
      -		dataTypes = s.dataTypes,
      -		responseFields = s.responseFields,
      -		ct,
      -		type,
      -		finalDataType,
      -		firstDataType;
      -
      -	// Fill responseXXX fields
      -	for ( type in responseFields ) {
      -		if ( type in responses ) {
      -			jqXHR[ responseFields[type] ] = responses[ type ];
      -		}
      -	}
      -
      -	// Remove auto dataType and get content-type in the process
      -	while( dataTypes[ 0 ] === "*" ) {
      -		dataTypes.shift();
      -		if ( ct === undefined ) {
      -			ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
      -		}
      -	}
      -
      -	// Check if we're dealing with a known content-type
      -	if ( ct ) {
      -		for ( type in contents ) {
      -			if ( contents[ type ] && contents[ type ].test( ct ) ) {
      -				dataTypes.unshift( type );
      -				break;
      -			}
      -		}
      -	}
      -
      -	// Check to see if we have a response for the expected dataType
      -	if ( dataTypes[ 0 ] in responses ) {
      -		finalDataType = dataTypes[ 0 ];
      -	} else {
      -		// Try convertible dataTypes
      -		for ( type in responses ) {
      -			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
      -				finalDataType = type;
      -				break;
      -			}
      -			if ( !firstDataType ) {
      -				firstDataType = type;
      -			}
      -		}
      -		// Or just use first one
      -		finalDataType = finalDataType || firstDataType;
      -	}
      -
      -	// If we found a dataType
      -	// We add the dataType to the list if needed
      -	// and return the corresponding response
      -	if ( finalDataType ) {
      -		if ( finalDataType !== dataTypes[ 0 ] ) {
      -			dataTypes.unshift( finalDataType );
      -		}
      -		return responses[ finalDataType ];
      -	}
      -}
      -
      -// Chain conversions given the request and the original response
      -function ajaxConvert( s, response ) {
      -
      -	// Apply the dataFilter if provided
      -	if ( s.dataFilter ) {
      -		response = s.dataFilter( response, s.dataType );
      -	}
      -
      -	var dataTypes = s.dataTypes,
      -		converters = {},
      -		i,
      -		key,
      -		length = dataTypes.length,
      -		tmp,
      -		// Current and previous dataTypes
      -		current = dataTypes[ 0 ],
      -		prev,
      -		// Conversion expression
      -		conversion,
      -		// Conversion function
      -		conv,
      -		// Conversion functions (transitive conversion)
      -		conv1,
      -		conv2;
      -
      -	// For each dataType in the chain
      -	for ( i = 1; i < length; i++ ) {
      -
      -		// Create converters map
      -		// with lowercased keys
      -		if ( i === 1 ) {
      -			for ( key in s.converters ) {
      -				if ( typeof key === "string" ) {
      -					converters[ key.toLowerCase() ] = s.converters[ key ];
      -				}
      -			}
      -		}
      -
      -		// Get the dataTypes
      -		prev = current;
      -		current = dataTypes[ i ];
      -
      -		// If current is auto dataType, update it to prev
      -		if ( current === "*" ) {
      -			current = prev;
      -		// If no auto and dataTypes are actually different
      -		} else if ( prev !== "*" && prev !== current ) {
      -
      -			// Get the converter
      -			conversion = prev + " " + current;
      -			conv = converters[ conversion ] || converters[ "* " + current ];
      -
      -			// If there is no direct converter, search transitively
      -			if ( !conv ) {
      -				conv2 = undefined;
      -				for ( conv1 in converters ) {
      -					tmp = conv1.split( " " );
      -					if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
      -						conv2 = converters[ tmp[1] + " " + current ];
      -						if ( conv2 ) {
      -							conv1 = converters[ conv1 ];
      -							if ( conv1 === true ) {
      -								conv = conv2;
      -							} else if ( conv2 === true ) {
      -								conv = conv1;
      -							}
      -							break;
      -						}
      -					}
      -				}
      -			}
      -			// If we found no converter, dispatch an error
      -			if ( !( conv || conv2 ) ) {
      -				jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
      -			}
      -			// If found converter is not an equivalence
      -			if ( conv !== true ) {
      -				// Convert with 1 or 2 converters accordingly
      -				response = conv ? conv( response ) : conv2( conv1(response) );
      -			}
      -		}
      -	}
      -	return response;
      -}
      -
      -
      -
      -
      -var jsc = jQuery.now(),
      -	jsre = /(\=)\?(&|$)|\?\?/i;
      -
      -// Default jsonp settings
      -jQuery.ajaxSetup({
      -	jsonp: "callback",
      -	jsonpCallback: function() {
      -		return jQuery.expando + "_" + ( jsc++ );
      -	}
      -});
      -
      -// Detect, normalize options and install callbacks for jsonp requests
      -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
      -
      -	var inspectData = ( typeof s.data === "string" ) && /^application\/x\-www\-form\-urlencoded/.test( s.contentType );
      -
      -	if ( s.dataTypes[ 0 ] === "jsonp" ||
      -		s.jsonp !== false && ( jsre.test( s.url ) ||
      -				inspectData && jsre.test( s.data ) ) ) {
      -
      -		var responseContainer,
      -			jsonpCallback = s.jsonpCallback =
      -				jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
      -			previous = window[ jsonpCallback ],
      -			url = s.url,
      -			data = s.data,
      -			replace = "$1" + jsonpCallback + "$2";
      -
      -		if ( s.jsonp !== false ) {
      -			url = url.replace( jsre, replace );
      -			if ( s.url === url ) {
      -				if ( inspectData ) {
      -					data = data.replace( jsre, replace );
      -				}
      -				if ( s.data === data ) {
      -					// Add callback manually
      -					url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
      -				}
      -			}
      -		}
      -
      -		s.url = url;
      -		s.data = data;
      -
      -		// Install callback
      -		window[ jsonpCallback ] = function( response ) {
      -			responseContainer = [ response ];
      -		};
      -
      -		// Clean-up function
      -		jqXHR.always(function() {
      -			// Set callback back to previous value
      -			window[ jsonpCallback ] = previous;
      -			// Call if it was a function and we have a response
      -			if ( responseContainer && jQuery.isFunction( previous ) ) {
      -				window[ jsonpCallback ]( responseContainer[ 0 ] );
      -			}
      -		});
      -
      -		// Use data converter to retrieve json after script execution
      -		s.converters["script json"] = function() {
      -			if ( !responseContainer ) {
      -				jQuery.error( jsonpCallback + " was not called" );
      -			}
      -			return responseContainer[ 0 ];
      -		};
      -
      -		// force json dataType
      -		s.dataTypes[ 0 ] = "json";
      -
      -		// Delegate to script
      -		return "script";
      -	}
      -});
      -
      -
      -
      -
      -// Install script dataType
      -jQuery.ajaxSetup({
      -	accepts: {
      -		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
      -	},
      -	contents: {
      -		script: /javascript|ecmascript/
      -	},
      -	converters: {
      -		"text script": function( text ) {
      -			jQuery.globalEval( text );
      -			return text;
      -		}
      -	}
      -});
      -
      -// Handle cache's special case and global
      -jQuery.ajaxPrefilter( "script", function( s ) {
      -	if ( s.cache === undefined ) {
      -		s.cache = false;
      -	}
      -	if ( s.crossDomain ) {
      -		s.type = "GET";
      -		s.global = false;
      -	}
      -});
      -
      -// Bind script tag hack transport
      -jQuery.ajaxTransport( "script", function(s) {
      -
      -	// This transport only deals with cross domain requests
      -	if ( s.crossDomain ) {
      -
      -		var script,
      -			head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
      -
      -		return {
      -
      -			send: function( _, callback ) {
      -
      -				script = document.createElement( "script" );
      -
      -				script.async = "async";
      -
      -				if ( s.scriptCharset ) {
      -					script.charset = s.scriptCharset;
      -				}
      -
      -				script.src = s.url;
      -
      -				// Attach handlers for all browsers
      -				script.onload = script.onreadystatechange = function( _, isAbort ) {
      -
      -					if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
      -
      -						// Handle memory leak in IE
      -						script.onload = script.onreadystatechange = null;
      -
      -						// Remove the script
      -						if ( head && script.parentNode ) {
      -							head.removeChild( script );
      -						}
      -
      -						// Dereference the script
      -						script = undefined;
      -
      -						// Callback if not abort
      -						if ( !isAbort ) {
      -							callback( 200, "success" );
      -						}
      -					}
      -				};
      -				// Use insertBefore instead of appendChild  to circumvent an IE6 bug.
      -				// This arises when a base node is used (#2709 and #4378).
      -				head.insertBefore( script, head.firstChild );
      -			},
      -
      -			abort: function() {
      -				if ( script ) {
      -					script.onload( 0, 1 );
      -				}
      -			}
      -		};
      -	}
      -});
      -
      -
      -
      -
      -var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
      -	xhrOnUnloadAbort = window.ActiveXObject ? function() {
      -		// Abort all pending requests
      -		for ( var key in xhrCallbacks ) {
      -			xhrCallbacks[ key ]( 0, 1 );
      -		}
      -	} : false,
      -	xhrId = 0,
      -	xhrCallbacks;
      -
      -// Functions to create xhrs
      -function createStandardXHR() {
      -	try {
      -		return new window.XMLHttpRequest();
      -	} catch( e ) {}
      -}
      -
      -function createActiveXHR() {
      -	try {
      -		return new window.ActiveXObject( "Microsoft.XMLHTTP" );
      -	} catch( e ) {}
      -}
      -
      -// Create the request object
      -// (This is still attached to ajaxSettings for backward compatibility)
      -jQuery.ajaxSettings.xhr = window.ActiveXObject ?
      -	/* Microsoft failed to properly
      -	 * implement the XMLHttpRequest in IE7 (can't request local files),
      -	 * so we use the ActiveXObject when it is available
      -	 * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
      -	 * we need a fallback.
      -	 */
      -	function() {
      -		return !this.isLocal && createStandardXHR() || createActiveXHR();
      -	} :
      -	// For all other browsers, use the standard XMLHttpRequest object
      -	createStandardXHR;
      -
      -// Determine support properties
      -(function( xhr ) {
      -	jQuery.extend( jQuery.support, {
      -		ajax: !!xhr,
      -		cors: !!xhr && ( "withCredentials" in xhr )
      -	});
      -})( jQuery.ajaxSettings.xhr() );
      -
      -// Create transport if the browser can provide an xhr
      -if ( jQuery.support.ajax ) {
      -
      -	jQuery.ajaxTransport(function( s ) {
      -		// Cross domain only allowed if supported through XMLHttpRequest
      -		if ( !s.crossDomain || jQuery.support.cors ) {
      -
      -			var callback;
      -
      -			return {
      -				send: function( headers, complete ) {
      -
      -					// Get a new xhr
      -					var xhr = s.xhr(),
      -						handle,
      -						i;
      -
      -					// Open the socket
      -					// Passing null username, generates a login popup on Opera (#2865)
      -					if ( s.username ) {
      -						xhr.open( s.type, s.url, s.async, s.username, s.password );
      -					} else {
      -						xhr.open( s.type, s.url, s.async );
      -					}
      -
      -					// Apply custom fields if provided
      -					if ( s.xhrFields ) {
      -						for ( i in s.xhrFields ) {
      -							xhr[ i ] = s.xhrFields[ i ];
      -						}
      -					}
      -
      -					// Override mime type if needed
      -					if ( s.mimeType && xhr.overrideMimeType ) {
      -						xhr.overrideMimeType( s.mimeType );
      -					}
      -
      -					// X-Requested-With header
      -					// For cross-domain requests, seeing as conditions for a preflight are
      -					// akin to a jigsaw puzzle, we simply never set it to be sure.
      -					// (it can always be set on a per-request basis or even using ajaxSetup)
      -					// For same-domain requests, won't change header if already provided.
      -					if ( !s.crossDomain && !headers["X-Requested-With"] ) {
      -						headers[ "X-Requested-With" ] = "XMLHttpRequest";
      -					}
      -
      -					// Need an extra try/catch for cross domain requests in Firefox 3
      -					try {
      -						for ( i in headers ) {
      -							xhr.setRequestHeader( i, headers[ i ] );
      -						}
      -					} catch( _ ) {}
      -
      -					// Do send the request
      -					// This may raise an exception which is actually
      -					// handled in jQuery.ajax (so no try/catch here)
      -					xhr.send( ( s.hasContent && s.data ) || null );
      -
      -					// Listener
      -					callback = function( _, isAbort ) {
      -
      -						var status,
      -							statusText,
      -							responseHeaders,
      -							responses,
      -							xml;
      -
      -						// Firefox throws exceptions when accessing properties
      -						// of an xhr when a network error occured
      -						// http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
      -						try {
      -
      -							// Was never called and is aborted or complete
      -							if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
      -
      -								// Only called once
      -								callback = undefined;
      -
      -								// Do not keep as active anymore
      -								if ( handle ) {
      -									xhr.onreadystatechange = jQuery.noop;
      -									if ( xhrOnUnloadAbort ) {
      -										delete xhrCallbacks[ handle ];
      -									}
      -								}
      -
      -								// If it's an abort
      -								if ( isAbort ) {
      -									// Abort it manually if needed
      -									if ( xhr.readyState !== 4 ) {
      -										xhr.abort();
      -									}
      -								} else {
      -									status = xhr.status;
      -									responseHeaders = xhr.getAllResponseHeaders();
      -									responses = {};
      -									xml = xhr.responseXML;
      -
      -									// Construct response list
      -									if ( xml && xml.documentElement /* #4958 */ ) {
      -										responses.xml = xml;
      -									}
      -
      -									// When requesting binary data, IE6-9 will throw an exception
      -									// on any attempt to access responseText (#11426)
      -									try {
      -										responses.text = xhr.responseText;
      -									} catch( _ ) {
      -									}
      -
      -									// Firefox throws an exception when accessing
      -									// statusText for faulty cross-domain requests
      -									try {
      -										statusText = xhr.statusText;
      -									} catch( e ) {
      -										// We normalize with Webkit giving an empty statusText
      -										statusText = "";
      -									}
      -
      -									// Filter status for non standard behaviors
      -
      -									// If the request is local and we have data: assume a success
      -									// (success with no data won't get notified, that's the best we
      -									// can do given current implementations)
      -									if ( !status && s.isLocal && !s.crossDomain ) {
      -										status = responses.text ? 200 : 404;
      -									// IE - #1450: sometimes returns 1223 when it should be 204
      -									} else if ( status === 1223 ) {
      -										status = 204;
      -									}
      -								}
      -							}
      -						} catch( firefoxAccessException ) {
      -							if ( !isAbort ) {
      -								complete( -1, firefoxAccessException );
      -							}
      -						}
      -
      -						// Call complete if needed
      -						if ( responses ) {
      -							complete( status, statusText, responses, responseHeaders );
      -						}
      -					};
      -
      -					// if we're in sync mode or it's in cache
      -					// and has been retrieved directly (IE6 & IE7)
      -					// we need to manually fire the callback
      -					if ( !s.async || xhr.readyState === 4 ) {
      -						callback();
      -					} else {
      -						handle = ++xhrId;
      -						if ( xhrOnUnloadAbort ) {
      -							// Create the active xhrs callbacks list if needed
      -							// and attach the unload handler
      -							if ( !xhrCallbacks ) {
      -								xhrCallbacks = {};
      -								jQuery( window ).unload( xhrOnUnloadAbort );
      -							}
      -							// Add to list of active xhrs callbacks
      -							xhrCallbacks[ handle ] = callback;
      -						}
      -						xhr.onreadystatechange = callback;
      -					}
      -				},
      -
      -				abort: function() {
      -					if ( callback ) {
      -						callback(0,1);
      -					}
      -				}
      -			};
      -		}
      -	});
      -}
      -
      -
      -
      -
      -var elemdisplay = {},
      -	iframe, iframeDoc,
      -	rfxtypes = /^(?:toggle|show|hide)$/,
      -	rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
      -	timerId,
      -	fxAttrs = [
      -		// height animations
      -		[ "height", "marginTop", "marginBottom", "paddingTop", "paddingBottom" ],
      -		// width animations
      -		[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
      -		// opacity animations
      -		[ "opacity" ]
      -	],
      -	fxNow;
      -
      -jQuery.fn.extend({
      -	show: function( speed, easing, callback ) {
      -		var elem, display;
      -
      -		if ( speed || speed === 0 ) {
      -			return this.animate( genFx("show", 3), speed, easing, callback );
      -
      -		} else {
      -			for ( var i = 0, j = this.length; i < j; i++ ) {
      -				elem = this[ i ];
      -
      -				if ( elem.style ) {
      -					display = elem.style.display;
      -
      -					// Reset the inline display of this element to learn if it is
      -					// being hidden by cascaded rules or not
      -					if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
      -						display = elem.style.display = "";
      -					}
      -
      -					// Set elements which have been overridden with display: none
      -					// in a stylesheet to whatever the default browser style is
      -					// for such an element
      -					if ( (display === "" && jQuery.css(elem, "display") === "none") ||
      -						!jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
      -						jQuery._data( elem, "olddisplay", defaultDisplay(elem.nodeName) );
      -					}
      -				}
      -			}
      -
      -			// Set the display of most of the elements in a second loop
      -			// to avoid the constant reflow
      -			for ( i = 0; i < j; i++ ) {
      -				elem = this[ i ];
      -
      -				if ( elem.style ) {
      -					display = elem.style.display;
      -
      -					if ( display === "" || display === "none" ) {
      -						elem.style.display = jQuery._data( elem, "olddisplay" ) || "";
      -					}
      -				}
      -			}
      -
      -			return this;
      -		}
      -	},
      -
      -	hide: function( speed, easing, callback ) {
      -		if ( speed || speed === 0 ) {
      -			return this.animate( genFx("hide", 3), speed, easing, callback);
      -
      -		} else {
      -			var elem, display,
      -				i = 0,
      -				j = this.length;
      -
      -			for ( ; i < j; i++ ) {
      -				elem = this[i];
      -				if ( elem.style ) {
      -					display = jQuery.css( elem, "display" );
      -
      -					if ( display !== "none" && !jQuery._data( elem, "olddisplay" ) ) {
      -						jQuery._data( elem, "olddisplay", display );
      -					}
      -				}
      -			}
      -
      -			// Set the display of the elements in a second loop
      -			// to avoid the constant reflow
      -			for ( i = 0; i < j; i++ ) {
      -				if ( this[i].style ) {
      -					this[i].style.display = "none";
      -				}
      -			}
      -
      -			return this;
      -		}
      -	},
      -
      -	// Save the old toggle function
      -	_toggle: jQuery.fn.toggle,
      -
      -	toggle: function( fn, fn2, callback ) {
      -		var bool = typeof fn === "boolean";
      -
      -		if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
      -			this._toggle.apply( this, arguments );
      -
      -		} else if ( fn == null || bool ) {
      -			this.each(function() {
      -				var state = bool ? fn : jQuery(this).is(":hidden");
      -				jQuery(this)[ state ? "show" : "hide" ]();
      -			});
      -
      -		} else {
      -			this.animate(genFx("toggle", 3), fn, fn2, callback);
      -		}
      -
      -		return this;
      -	},
      -
      -	fadeTo: function( speed, to, easing, callback ) {
      -		return this.filter(":hidden").css("opacity", 0).show().end()
      -					.animate({opacity: to}, speed, easing, callback);
      -	},
      -
      -	animate: function( prop, speed, easing, callback ) {
      -		var optall = jQuery.speed( speed, easing, callback );
      -
      -		if ( jQuery.isEmptyObject( prop ) ) {
      -			return this.each( optall.complete, [ false ] );
      -		}
      -
      -		// Do not change referenced properties as per-property easing will be lost
      -		prop = jQuery.extend( {}, prop );
      -
      -		function doAnimation() {
      -			// XXX 'this' does not always have a nodeName when running the
      -			// test suite
      -
      -			if ( optall.queue === false ) {
      -				jQuery._mark( this );
      -			}
      -
      -			var opt = jQuery.extend( {}, optall ),
      -				isElement = this.nodeType === 1,
      -				hidden = isElement && jQuery(this).is(":hidden"),
      -				name, val, p, e, hooks, replace,
      -				parts, start, end, unit,
      -				method;
      -
      -			// will store per property easing and be used to determine when an animation is complete
      -			opt.animatedProperties = {};
      -
      -			// first pass over propertys to expand / normalize
      -			for ( p in prop ) {
      -				name = jQuery.camelCase( p );
      -				if ( p !== name ) {
      -					prop[ name ] = prop[ p ];
      -					delete prop[ p ];
      -				}
      -
      -				if ( ( hooks = jQuery.cssHooks[ name ] ) && "expand" in hooks ) {
      -					replace = hooks.expand( prop[ name ] );
      -					delete prop[ name ];
      -
      -					// not quite $.extend, this wont overwrite keys already present.
      -					// also - reusing 'p' from above because we have the correct "name"
      -					for ( p in replace ) {
      -						if ( ! ( p in prop ) ) {
      -							prop[ p ] = replace[ p ];
      -						}
      -					}
      -				}
      -			}
      -
      -			for ( name in prop ) {
      -				val = prop[ name ];
      -				// easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
      -				if ( jQuery.isArray( val ) ) {
      -					opt.animatedProperties[ name ] = val[ 1 ];
      -					val = prop[ name ] = val[ 0 ];
      -				} else {
      -					opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
      -				}
      -
      -				if ( val === "hide" && hidden || val === "show" && !hidden ) {
      -					return opt.complete.call( this );
      -				}
      -
      -				if ( isElement && ( name === "height" || name === "width" ) ) {
      -					// Make sure that nothing sneaks out
      -					// Record all 3 overflow attributes because IE does not
      -					// change the overflow attribute when overflowX and
      -					// overflowY are set to the same value
      -					opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
      -
      -					// Set display property to inline-block for height/width
      -					// animations on inline elements that are having width/height animated
      -					if ( jQuery.css( this, "display" ) === "inline" &&
      -							jQuery.css( this, "float" ) === "none" ) {
      -
      -						// inline-level elements accept inline-block;
      -						// block-level elements need to be inline with layout
      -						if ( !jQuery.support.inlineBlockNeedsLayout || defaultDisplay( this.nodeName ) === "inline" ) {
      -							this.style.display = "inline-block";
      -
      -						} else {
      -							this.style.zoom = 1;
      -						}
      -					}
      -				}
      -			}
      -
      -			if ( opt.overflow != null ) {
      -				this.style.overflow = "hidden";
      -			}
      -
      -			for ( p in prop ) {
      -				e = new jQuery.fx( this, opt, p );
      -				val = prop[ p ];
      -
      -				if ( rfxtypes.test( val ) ) {
      -
      -					// Tracks whether to show or hide based on private
      -					// data attached to the element
      -					method = jQuery._data( this, "toggle" + p ) || ( val === "toggle" ? hidden ? "show" : "hide" : 0 );
      -					if ( method ) {
      -						jQuery._data( this, "toggle" + p, method === "show" ? "hide" : "show" );
      -						e[ method ]();
      -					} else {
      -						e[ val ]();
      -					}
      -
      -				} else {
      -					parts = rfxnum.exec( val );
      -					start = e.cur();
      -
      -					if ( parts ) {
      -						end = parseFloat( parts[2] );
      -						unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
      -
      -						// We need to compute starting value
      -						if ( unit !== "px" ) {
      -							jQuery.style( this, p, (end || 1) + unit);
      -							start = ( (end || 1) / e.cur() ) * start;
      -							jQuery.style( this, p, start + unit);
      -						}
      -
      -						// If a +=/-= token was provided, we're doing a relative animation
      -						if ( parts[1] ) {
      -							end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
      -						}
      -
      -						e.custom( start, end, unit );
      -
      -					} else {
      -						e.custom( start, val, "" );
      -					}
      -				}
      -			}
      -
      -			// For JS strict compliance
      -			return true;
      -		}
      -
      -		return optall.queue === false ?
      -			this.each( doAnimation ) :
      -			this.queue( optall.queue, doAnimation );
      -	},
      -
      -	stop: function( type, clearQueue, gotoEnd ) {
      -		if ( typeof type !== "string" ) {
      -			gotoEnd = clearQueue;
      -			clearQueue = type;
      -			type = undefined;
      -		}
      -		if ( clearQueue && type !== false ) {
      -			this.queue( type || "fx", [] );
      -		}
      -
      -		return this.each(function() {
      -			var index,
      -				hadTimers = false,
      -				timers = jQuery.timers,
      -				data = jQuery._data( this );
      -
      -			// clear marker counters if we know they won't be
      -			if ( !gotoEnd ) {
      -				jQuery._unmark( true, this );
      -			}
      -
      -			function stopQueue( elem, data, index ) {
      -				var hooks = data[ index ];
      -				jQuery.removeData( elem, index, true );
      -				hooks.stop( gotoEnd );
      -			}
      -
      -			if ( type == null ) {
      -				for ( index in data ) {
      -					if ( data[ index ] && data[ index ].stop && index.indexOf(".run") === index.length - 4 ) {
      -						stopQueue( this, data, index );
      -					}
      -				}
      -			} else if ( data[ index = type + ".run" ] && data[ index ].stop ){
      -				stopQueue( this, data, index );
      -			}
      -
      -			for ( index = timers.length; index--; ) {
      -				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
      -					if ( gotoEnd ) {
      -
      -						// force the next step to be the last
      -						timers[ index ]( true );
      -					} else {
      -						timers[ index ].saveState();
      -					}
      -					hadTimers = true;
      -					timers.splice( index, 1 );
      -				}
      -			}
      -
      -			// start the next in the queue if the last step wasn't forced
      -			// timers currently will call their complete callbacks, which will dequeue
      -			// but only if they were gotoEnd
      -			if ( !( gotoEnd && hadTimers ) ) {
      -				jQuery.dequeue( this, type );
      -			}
      -		});
      -	}
      -
      -});
      -
      -// Animations created synchronously will run synchronously
      -function createFxNow() {
      -	setTimeout( clearFxNow, 0 );
      -	return ( fxNow = jQuery.now() );
      -}
      -
      -function clearFxNow() {
      -	fxNow = undefined;
      -}
      -
      -// Generate parameters to create a standard animation
      -function genFx( type, num ) {
      -	var obj = {};
      -
      -	jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice( 0, num )), function() {
      -		obj[ this ] = type;
      -	});
      -
      -	return obj;
      -}
      -
      -// Generate shortcuts for custom animations
      -jQuery.each({
      -	slideDown: genFx( "show", 1 ),
      -	slideUp: genFx( "hide", 1 ),
      -	slideToggle: genFx( "toggle", 1 ),
      -	fadeIn: { opacity: "show" },
      -	fadeOut: { opacity: "hide" },
      -	fadeToggle: { opacity: "toggle" }
      -}, function( name, props ) {
      -	jQuery.fn[ name ] = function( speed, easing, callback ) {
      -		return this.animate( props, speed, easing, callback );
      -	};
      -});
      -
      -jQuery.extend({
      -	speed: function( speed, easing, fn ) {
      -		var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
      -			complete: fn || !fn && easing ||
      -				jQuery.isFunction( speed ) && speed,
      -			duration: speed,
      -			easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
      -		};
      -
      -		opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
      -			opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
      -
      -		// normalize opt.queue - true/undefined/null -> "fx"
      -		if ( opt.queue == null || opt.queue === true ) {
      -			opt.queue = "fx";
      -		}
      -
      -		// Queueing
      -		opt.old = opt.complete;
      -
      -		opt.complete = function( noUnmark ) {
      -			if ( jQuery.isFunction( opt.old ) ) {
      -				opt.old.call( this );
      -			}
      -
      -			if ( opt.queue ) {
      -				jQuery.dequeue( this, opt.queue );
      -			} else if ( noUnmark !== false ) {
      -				jQuery._unmark( this );
      -			}
      -		};
      -
      -		return opt;
      -	},
      -
      -	easing: {
      -		linear: function( p ) {
      -			return p;
      -		},
      -		swing: function( p ) {
      -			return ( -Math.cos( p*Math.PI ) / 2 ) + 0.5;
      -		}
      -	},
      -
      -	timers: [],
      -
      -	fx: function( elem, options, prop ) {
      -		this.options = options;
      -		this.elem = elem;
      -		this.prop = prop;
      -
      -		options.orig = options.orig || {};
      -	}
      -
      -});
      -
      -jQuery.fx.prototype = {
      -	// Simple function for setting a style value
      -	update: function() {
      -		if ( this.options.step ) {
      -			this.options.step.call( this.elem, this.now, this );
      -		}
      -
      -		( jQuery.fx.step[ this.prop ] || jQuery.fx.step._default )( this );
      -	},
      -
      -	// Get the current size
      -	cur: function() {
      -		if ( this.elem[ this.prop ] != null && (!this.elem.style || this.elem.style[ this.prop ] == null) ) {
      -			return this.elem[ this.prop ];
      -		}
      -
      -		var parsed,
      -			r = jQuery.css( this.elem, this.prop );
      -		// Empty strings, null, undefined and "auto" are converted to 0,
      -		// complex values such as "rotate(1rad)" are returned as is,
      -		// simple values such as "10px" are parsed to Float.
      -		return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
      -	},
      -
      -	// Start an animation from one number to another
      -	custom: function( from, to, unit ) {
      -		var self = this,
      -			fx = jQuery.fx;
      -
      -		this.startTime = fxNow || createFxNow();
      -		this.end = to;
      -		this.now = this.start = from;
      -		this.pos = this.state = 0;
      -		this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
      -
      -		function t( gotoEnd ) {
      -			return self.step( gotoEnd );
      -		}
      -
      -		t.queue = this.options.queue;
      -		t.elem = this.elem;
      -		t.saveState = function() {
      -			if ( jQuery._data( self.elem, "fxshow" + self.prop ) === undefined ) {
      -				if ( self.options.hide ) {
      -					jQuery._data( self.elem, "fxshow" + self.prop, self.start );
      -				} else if ( self.options.show ) {
      -					jQuery._data( self.elem, "fxshow" + self.prop, self.end );
      -				}
      -			}
      -		};
      -
      -		if ( t() && jQuery.timers.push(t) && !timerId ) {
      -			timerId = setInterval( fx.tick, fx.interval );
      -		}
      -	},
      -
      -	// Simple 'show' function
      -	show: function() {
      -		var dataShow = jQuery._data( this.elem, "fxshow" + this.prop );
      -
      -		// Remember where we started, so that we can go back to it later
      -		this.options.orig[ this.prop ] = dataShow || jQuery.style( this.elem, this.prop );
      -		this.options.show = true;
      -
      -		// Begin the animation
      -		// Make sure that we start at a small width/height to avoid any flash of content
      -		if ( dataShow !== undefined ) {
      -			// This show is picking up where a previous hide or show left off
      -			this.custom( this.cur(), dataShow );
      -		} else {
      -			this.custom( this.prop === "width" || this.prop === "height" ? 1 : 0, this.cur() );
      -		}
      -
      -		// Start by showing the element
      -		jQuery( this.elem ).show();
      -	},
      -
      -	// Simple 'hide' function
      -	hide: function() {
      -		// Remember where we started, so that we can go back to it later
      -		this.options.orig[ this.prop ] = jQuery._data( this.elem, "fxshow" + this.prop ) || jQuery.style( this.elem, this.prop );
      -		this.options.hide = true;
      -
      -		// Begin the animation
      -		this.custom( this.cur(), 0 );
      -	},
      -
      -	// Each step of an animation
      -	step: function( gotoEnd ) {
      -		var p, n, complete,
      -			t = fxNow || createFxNow(),
      -			done = true,
      -			elem = this.elem,
      -			options = this.options;
      -
      -		if ( gotoEnd || t >= options.duration + this.startTime ) {
      -			this.now = this.end;
      -			this.pos = this.state = 1;
      -			this.update();
      -
      -			options.animatedProperties[ this.prop ] = true;
      -
      -			for ( p in options.animatedProperties ) {
      -				if ( options.animatedProperties[ p ] !== true ) {
      -					done = false;
      -				}
      -			}
      -
      -			if ( done ) {
      -				// Reset the overflow
      -				if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
      -
      -					jQuery.each( [ "", "X", "Y" ], function( index, value ) {
      -						elem.style[ "overflow" + value ] = options.overflow[ index ];
      -					});
      -				}
      -
      -				// Hide the element if the "hide" operation was done
      -				if ( options.hide ) {
      -					jQuery( elem ).hide();
      -				}
      -
      -				// Reset the properties, if the item has been hidden or shown
      -				if ( options.hide || options.show ) {
      -					for ( p in options.animatedProperties ) {
      -						jQuery.style( elem, p, options.orig[ p ] );
      -						jQuery.removeData( elem, "fxshow" + p, true );
      -						// Toggle data is no longer needed
      -						jQuery.removeData( elem, "toggle" + p, true );
      -					}
      -				}
      -
      -				// Execute the complete function
      -				// in the event that the complete function throws an exception
      -				// we must ensure it won't be called twice. #5684
      -
      -				complete = options.complete;
      -				if ( complete ) {
      -
      -					options.complete = false;
      -					complete.call( elem );
      -				}
      -			}
      -
      -			return false;
      -
      -		} else {
      -			// classical easing cannot be used with an Infinity duration
      -			if ( options.duration == Infinity ) {
      -				this.now = t;
      -			} else {
      -				n = t - this.startTime;
      -				this.state = n / options.duration;
      -
      -				// Perform the easing function, defaults to swing
      -				this.pos = jQuery.easing[ options.animatedProperties[this.prop] ]( this.state, n, 0, 1, options.duration );
      -				this.now = this.start + ( (this.end - this.start) * this.pos );
      -			}
      -			// Perform the next step of the animation
      -			this.update();
      -		}
      -
      -		return true;
      -	}
      -};
      -
      -jQuery.extend( jQuery.fx, {
      -	tick: function() {
      -		var timer,
      -			timers = jQuery.timers,
      -			i = 0;
      -
      -		for ( ; i < timers.length; i++ ) {
      -			timer = timers[ i ];
      -			// Checks the timer has not already been removed
      -			if ( !timer() && timers[ i ] === timer ) {
      -				timers.splice( i--, 1 );
      -			}
      -		}
      -
      -		if ( !timers.length ) {
      -			jQuery.fx.stop();
      -		}
      -	},
      -
      -	interval: 13,
      -
      -	stop: function() {
      -		clearInterval( timerId );
      -		timerId = null;
      -	},
      -
      -	speeds: {
      -		slow: 600,
      -		fast: 200,
      -		// Default speed
      -		_default: 400
      -	},
      -
      -	step: {
      -		opacity: function( fx ) {
      -			jQuery.style( fx.elem, "opacity", fx.now );
      -		},
      -
      -		_default: function( fx ) {
      -			if ( fx.elem.style && fx.elem.style[ fx.prop ] != null ) {
      -				fx.elem.style[ fx.prop ] = fx.now + fx.unit;
      -			} else {
      -				fx.elem[ fx.prop ] = fx.now;
      -			}
      -		}
      -	}
      -});
      -
      -// Ensure props that can't be negative don't go there on undershoot easing
      -jQuery.each( fxAttrs.concat.apply( [], fxAttrs ), function( i, prop ) {
      -	// exclude marginTop, marginLeft, marginBottom and marginRight from this list
      -	if ( prop.indexOf( "margin" ) ) {
      -		jQuery.fx.step[ prop ] = function( fx ) {
      -			jQuery.style( fx.elem, prop, Math.max(0, fx.now) + fx.unit );
      -		};
      -	}
      -});
      -
      -if ( jQuery.expr && jQuery.expr.filters ) {
      -	jQuery.expr.filters.animated = function( elem ) {
      -		return jQuery.grep(jQuery.timers, function( fn ) {
      -			return elem === fn.elem;
      -		}).length;
      -	};
      -}
      -
      -// Try to restore the default display value of an element
      -function defaultDisplay( nodeName ) {
      -
      -	if ( !elemdisplay[ nodeName ] ) {
      -
      -		var body = document.body,
      -			elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
      -			display = elem.css( "display" );
      -		elem.remove();
      -
      -		// If the simple way fails,
      -		// get element's real default display by attaching it to a temp iframe
      -		if ( display === "none" || display === "" ) {
      -			// No iframe to use yet, so create it
      -			if ( !iframe ) {
      -				iframe = document.createElement( "iframe" );
      -				iframe.frameBorder = iframe.width = iframe.height = 0;
      -			}
      -
      -			body.appendChild( iframe );
      -
      -			// Create a cacheable copy of the iframe document on first call.
      -			// IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
      -			// document to it; WebKit & Firefox won't allow reusing the iframe document.
      -			if ( !iframeDoc || !iframe.createElement ) {
      -				iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
      -				iframeDoc.write( ( jQuery.support.boxModel ? "<!doctype html>" : "" ) + "<html><body>" );
      -				iframeDoc.close();
      -			}
      -
      -			elem = iframeDoc.createElement( nodeName );
      -
      -			iframeDoc.body.appendChild( elem );
      -
      -			display = jQuery.css( elem, "display" );
      -			body.removeChild( iframe );
      -		}
      -
      -		// Store the correct default display
      -		elemdisplay[ nodeName ] = display;
      -	}
      -
      -	return elemdisplay[ nodeName ];
      -}
      -
      -
      -
      -
      -var getOffset,
      -	rtable = /^t(?:able|d|h)$/i,
      -	rroot = /^(?:body|html)$/i;
      -
      -if ( "getBoundingClientRect" in document.documentElement ) {
      -	getOffset = function( elem, doc, docElem, box ) {
      -		try {
      -			box = elem.getBoundingClientRect();
      -		} catch(e) {}
      -
      -		// Make sure we're not dealing with a disconnected DOM node
      -		if ( !box || !jQuery.contains( docElem, elem ) ) {
      -			return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
      -		}
      -
      -		var body = doc.body,
      -			win = getWindow( doc ),
      -			clientTop  = docElem.clientTop  || body.clientTop  || 0,
      -			clientLeft = docElem.clientLeft || body.clientLeft || 0,
      -			scrollTop  = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop  || body.scrollTop,
      -			scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
      -			top  = box.top  + scrollTop  - clientTop,
      -			left = box.left + scrollLeft - clientLeft;
      -
      -		return { top: top, left: left };
      -	};
      -
      -} else {
      -	getOffset = function( elem, doc, docElem ) {
      -		var computedStyle,
      -			offsetParent = elem.offsetParent,
      -			prevOffsetParent = elem,
      -			body = doc.body,
      -			defaultView = doc.defaultView,
      -			prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
      -			top = elem.offsetTop,
      -			left = elem.offsetLeft;
      -
      -		while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
      -			if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
      -				break;
      -			}
      -
      -			computedStyle = defaultView ? defaultView.getComputedStyle(elem, null) : elem.currentStyle;
      -			top  -= elem.scrollTop;
      -			left -= elem.scrollLeft;
      -
      -			if ( elem === offsetParent ) {
      -				top  += elem.offsetTop;
      -				left += elem.offsetLeft;
      -
      -				if ( jQuery.support.doesNotAddBorder && !(jQuery.support.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
      -					top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
      -					left += parseFloat( computedStyle.borderLeftWidth ) || 0;
      -				}
      -
      -				prevOffsetParent = offsetParent;
      -				offsetParent = elem.offsetParent;
      -			}
      -
      -			if ( jQuery.support.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
      -				top  += parseFloat( computedStyle.borderTopWidth  ) || 0;
      -				left += parseFloat( computedStyle.borderLeftWidth ) || 0;
      -			}
      -
      -			prevComputedStyle = computedStyle;
      -		}
      -
      -		if ( prevComputedStyle.position === "relative" || prevComputedStyle.position === "static" ) {
      -			top  += body.offsetTop;
      -			left += body.offsetLeft;
      -		}
      -
      -		if ( jQuery.support.fixedPosition && prevComputedStyle.position === "fixed" ) {
      -			top  += Math.max( docElem.scrollTop, body.scrollTop );
      -			left += Math.max( docElem.scrollLeft, body.scrollLeft );
      -		}
      -
      -		return { top: top, left: left };
      -	};
      -}
      -
      -jQuery.fn.offset = function( options ) {
      -	if ( arguments.length ) {
      -		return options === undefined ?
      -			this :
      -			this.each(function( i ) {
      -				jQuery.offset.setOffset( this, options, i );
      -			});
      -	}
      -
      -	var elem = this[0],
      -		doc = elem && elem.ownerDocument;
      -
      -	if ( !doc ) {
      -		return null;
      -	}
      -
      -	if ( elem === doc.body ) {
      -		return jQuery.offset.bodyOffset( elem );
      -	}
      -
      -	return getOffset( elem, doc, doc.documentElement );
      -};
      -
      -jQuery.offset = {
      -
      -	bodyOffset: function( body ) {
      -		var top = body.offsetTop,
      -			left = body.offsetLeft;
      -
      -		if ( jQuery.support.doesNotIncludeMarginInBodyOffset ) {
      -			top  += parseFloat( jQuery.css(body, "marginTop") ) || 0;
      -			left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
      -		}
      -
      -		return { top: top, left: left };
      -	},
      -
      -	setOffset: function( elem, options, i ) {
      -		var position = jQuery.css( elem, "position" );
      -
      -		// set position first, in-case top/left are set even on static elem
      -		if ( position === "static" ) {
      -			elem.style.position = "relative";
      -		}
      -
      -		var curElem = jQuery( elem ),
      -			curOffset = curElem.offset(),
      -			curCSSTop = jQuery.css( elem, "top" ),
      -			curCSSLeft = jQuery.css( elem, "left" ),
      -			calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
      -			props = {}, curPosition = {}, curTop, curLeft;
      -
      -		// need to be able to calculate position if either top or left is auto and position is either absolute or fixed
      -		if ( calculatePosition ) {
      -			curPosition = curElem.position();
      -			curTop = curPosition.top;
      -			curLeft = curPosition.left;
      -		} else {
      -			curTop = parseFloat( curCSSTop ) || 0;
      -			curLeft = parseFloat( curCSSLeft ) || 0;
      -		}
      -
      -		if ( jQuery.isFunction( options ) ) {
      -			options = options.call( elem, i, curOffset );
      -		}
      -
      -		if ( options.top != null ) {
      -			props.top = ( options.top - curOffset.top ) + curTop;
      -		}
      -		if ( options.left != null ) {
      -			props.left = ( options.left - curOffset.left ) + curLeft;
      -		}
      -
      -		if ( "using" in options ) {
      -			options.using.call( elem, props );
      -		} else {
      -			curElem.css( props );
      -		}
      -	}
      -};
      -
      -
      -jQuery.fn.extend({
      -
      -	position: function() {
      -		if ( !this[0] ) {
      -			return null;
      -		}
      -
      -		var elem = this[0],
      -
      -		// Get *real* offsetParent
      -		offsetParent = this.offsetParent(),
      -
      -		// Get correct offsets
      -		offset       = this.offset(),
      -		parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
      -
      -		// Subtract element margins
      -		// note: when an element has margin: auto the offsetLeft and marginLeft
      -		// are the same in Safari causing offset.left to incorrectly be 0
      -		offset.top  -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
      -		offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
      -
      -		// Add offsetParent borders
      -		parentOffset.top  += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
      -		parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
      -
      -		// Subtract the two offsets
      -		return {
      -			top:  offset.top  - parentOffset.top,
      -			left: offset.left - parentOffset.left
      -		};
      -	},
      -
      -	offsetParent: function() {
      -		return this.map(function() {
      -			var offsetParent = this.offsetParent || document.body;
      -			while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
      -				offsetParent = offsetParent.offsetParent;
      -			}
      -			return offsetParent;
      -		});
      -	}
      -});
      -
      -
      -// Create scrollLeft and scrollTop methods
      -jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
      -	var top = /Y/.test( prop );
      -
      -	jQuery.fn[ method ] = function( val ) {
      -		return jQuery.access( this, function( elem, method, val ) {
      -			var win = getWindow( elem );
      -
      -			if ( val === undefined ) {
      -				return win ? (prop in win) ? win[ prop ] :
      -					jQuery.support.boxModel && win.document.documentElement[ method ] ||
      -						win.document.body[ method ] :
      -					elem[ method ];
      -			}
      -
      -			if ( win ) {
      -				win.scrollTo(
      -					!top ? val : jQuery( win ).scrollLeft(),
      -					 top ? val : jQuery( win ).scrollTop()
      -				);
      -
      -			} else {
      -				elem[ method ] = val;
      -			}
      -		}, method, val, arguments.length, null );
      -	};
      -});
      -
      -function getWindow( elem ) {
      -	return jQuery.isWindow( elem ) ?
      -		elem :
      -		elem.nodeType === 9 ?
      -			elem.defaultView || elem.parentWindow :
      -			false;
      -}
      -
      -
      -
      -
      -// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
      -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
      -	var clientProp = "client" + name,
      -		scrollProp = "scroll" + name,
      -		offsetProp = "offset" + name;
      -
      -	// innerHeight and innerWidth
      -	jQuery.fn[ "inner" + name ] = function() {
      -		var elem = this[0];
      -		return elem ?
      -			elem.style ?
      -			parseFloat( jQuery.css( elem, type, "padding" ) ) :
      -			this[ type ]() :
      -			null;
      -	};
      -
      -	// outerHeight and outerWidth
      -	jQuery.fn[ "outer" + name ] = function( margin ) {
      -		var elem = this[0];
      -		return elem ?
      -			elem.style ?
      -			parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
      -			this[ type ]() :
      -			null;
      -	};
      -
      -	jQuery.fn[ type ] = function( value ) {
      -		return jQuery.access( this, function( elem, type, value ) {
      -			var doc, docElemProp, orig, ret;
      -
      -			if ( jQuery.isWindow( elem ) ) {
      -				// 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
      -				doc = elem.document;
      -				docElemProp = doc.documentElement[ clientProp ];
      -				return jQuery.support.boxModel && docElemProp ||
      -					doc.body && doc.body[ clientProp ] || docElemProp;
      -			}
      -
      -			// Get document width or height
      -			if ( elem.nodeType === 9 ) {
      -				// Either scroll[Width/Height] or offset[Width/Height], whichever is greater
      -				doc = elem.documentElement;
      -
      -				// when a window > document, IE6 reports a offset[Width/Height] > client[Width/Height]
      -				// so we can't use max, as it'll choose the incorrect offset[Width/Height]
      -				// instead we use the correct client[Width/Height]
      -				// support:IE6
      -				if ( doc[ clientProp ] >= doc[ scrollProp ] ) {
      -					return doc[ clientProp ];
      -				}
      -
      -				return Math.max(
      -					elem.body[ scrollProp ], doc[ scrollProp ],
      -					elem.body[ offsetProp ], doc[ offsetProp ]
      -				);
      -			}
      -
      -			// Get width or height on the element
      -			if ( value === undefined ) {
      -				orig = jQuery.css( elem, type );
      -				ret = parseFloat( orig );
      -				return jQuery.isNumeric( ret ) ? ret : orig;
      -			}
      -
      -			// Set the width or height on the element
      -			jQuery( elem ).css( type, value );
      -		}, type, value, arguments.length, null );
      -	};
      -});
      -
      -
      -
      -
      -// Expose jQuery to the global object
      -window.jQuery = window.$ = jQuery;
      -
      -// Expose jQuery as an AMD module, but only for AMD loaders that
      -// understand the issues with loading multiple versions of jQuery
      -// in a page that all might call define(). The loader will indicate
      -// they have special allowances for multiple jQuery versions by
      -// specifying define.amd.jQuery = true. Register as a named module,
      -// since jQuery can be concatenated with other files that may use define,
      -// but not use a proper concatenation script that understands anonymous
      -// AMD modules. A named AMD is safest and most robust way to register.
      -// Lowercase jquery is used because AMD module names are derived from
      -// file names, and jQuery is normally delivered in a lowercase file name.
      -// Do this after creating the global so that if an AMD module wants to call
      -// noConflict to hide this version of jQuery, it will work.
      -if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
      -	define( "jquery", [], function () { return jQuery; } );
      -}
      -
      -
      -
      -})( window );
      diff --git a/bower_components/select2/tests/vendor/qunit-1.23.1.css b/bower_components/select2/tests/vendor/qunit-1.23.1.css
      deleted file mode 100644
      index ae68fc412e..0000000000
      --- a/bower_components/select2/tests/vendor/qunit-1.23.1.css
      +++ /dev/null
      @@ -1,305 +0,0 @@
      -/*!
      - * QUnit 1.23.1
      - * https://qunitjs.com/
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * https://jquery.org/license
      - *
      - * Date: 2016-04-12T17:29Z
      - */
      -
      -/** Font Family and Sizes */
      -
      -#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult {
      -	font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
      -}
      -
      -#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
      -#qunit-tests { font-size: smaller; }
      -
      -
      -/** Resets */
      -
      -#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
      -	margin: 0;
      -	padding: 0;
      -}
      -
      -
      -/** Header */
      -
      -#qunit-header {
      -	padding: 0.5em 0 0.5em 1em;
      -
      -	color: #8699A4;
      -	background-color: #0D3349;
      -
      -	font-size: 1.5em;
      -	line-height: 1em;
      -	font-weight: 400;
      -
      -	border-radius: 5px 5px 0 0;
      -}
      -
      -#qunit-header a {
      -	text-decoration: none;
      -	color: #C2CCD1;
      -}
      -
      -#qunit-header a:hover,
      -#qunit-header a:focus {
      -	color: #FFF;
      -}
      -
      -#qunit-testrunner-toolbar label {
      -	display: inline-block;
      -	padding: 0 0.5em 0 0.1em;
      -}
      -
      -#qunit-banner {
      -	height: 5px;
      -}
      -
      -#qunit-testrunner-toolbar {
      -	padding: 0.5em 1em 0.5em 1em;
      -	color: #5E740B;
      -	background-color: #EEE;
      -	overflow: hidden;
      -}
      -
      -#qunit-filteredTest {
      -	padding: 0.5em 1em 0.5em 1em;
      -	background-color: #F4FF77;
      -	color: #366097;
      -}
      -
      -#qunit-userAgent {
      -	padding: 0.5em 1em 0.5em 1em;
      -	background-color: #2B81AF;
      -	color: #FFF;
      -	text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
      -}
      -
      -#qunit-modulefilter-container {
      -	float: right;
      -	padding: 0.2em;
      -}
      -
      -.qunit-url-config {
      -	display: inline-block;
      -	padding: 0.1em;
      -}
      -
      -.qunit-filter {
      -	display: block;
      -	float: right;
      -	margin-left: 1em;
      -}
      -
      -/** Tests: Pass/Fail */
      -
      -#qunit-tests {
      -	list-style-position: inside;
      -}
      -
      -#qunit-tests li {
      -	padding: 0.4em 1em 0.4em 1em;
      -	border-bottom: 1px solid #FFF;
      -	list-style-position: inside;
      -}
      -
      -#qunit-tests > li {
      -	display: none;
      -}
      -
      -#qunit-tests li.running,
      -#qunit-tests li.pass,
      -#qunit-tests li.fail,
      -#qunit-tests li.skipped {
      -	display: list-item;
      -}
      -
      -#qunit-tests.hidepass {
      -	position: relative;
      -}
      -
      -#qunit-tests.hidepass li.running,
      -#qunit-tests.hidepass li.pass {
      -	visibility: hidden;
      -	position: absolute;
      -	width:   0;
      -	height:  0;
      -	padding: 0;
      -	border:  0;
      -	margin:  0;
      -}
      -
      -#qunit-tests li strong {
      -	cursor: pointer;
      -}
      -
      -#qunit-tests li.skipped strong {
      -	cursor: default;
      -}
      -
      -#qunit-tests li a {
      -	padding: 0.5em;
      -	color: #C2CCD1;
      -	text-decoration: none;
      -}
      -
      -#qunit-tests li p a {
      -	padding: 0.25em;
      -	color: #6B6464;
      -}
      -#qunit-tests li a:hover,
      -#qunit-tests li a:focus {
      -	color: #000;
      -}
      -
      -#qunit-tests li .runtime {
      -	float: right;
      -	font-size: smaller;
      -}
      -
      -.qunit-assert-list {
      -	margin-top: 0.5em;
      -	padding: 0.5em;
      -
      -	background-color: #FFF;
      -
      -	border-radius: 5px;
      -}
      -
      -.qunit-source {
      -	margin: 0.6em 0 0.3em;
      -}
      -
      -.qunit-collapsed {
      -	display: none;
      -}
      -
      -#qunit-tests table {
      -	border-collapse: collapse;
      -	margin-top: 0.2em;
      -}
      -
      -#qunit-tests th {
      -	text-align: right;
      -	vertical-align: top;
      -	padding: 0 0.5em 0 0;
      -}
      -
      -#qunit-tests td {
      -	vertical-align: top;
      -}
      -
      -#qunit-tests pre {
      -	margin: 0;
      -	white-space: pre-wrap;
      -	word-wrap: break-word;
      -}
      -
      -#qunit-tests del {
      -	background-color: #E0F2BE;
      -	color: #374E0C;
      -	text-decoration: none;
      -}
      -
      -#qunit-tests ins {
      -	background-color: #FFCACA;
      -	color: #500;
      -	text-decoration: none;
      -}
      -
      -/*** Test Counts */
      -
      -#qunit-tests b.counts                       { color: #000; }
      -#qunit-tests b.passed                       { color: #5E740B; }
      -#qunit-tests b.failed                       { color: #710909; }
      -
      -#qunit-tests li li {
      -	padding: 5px;
      -	background-color: #FFF;
      -	border-bottom: none;
      -	list-style-position: inside;
      -}
      -
      -/*** Passing Styles */
      -
      -#qunit-tests li li.pass {
      -	color: #3C510C;
      -	background-color: #FFF;
      -	border-left: 10px solid #C6E746;
      -}
      -
      -#qunit-tests .pass                          { color: #528CE0; background-color: #D2E0E6; }
      -#qunit-tests .pass .test-name               { color: #366097; }
      -
      -#qunit-tests .pass .test-actual,
      -#qunit-tests .pass .test-expected           { color: #999; }
      -
      -#qunit-banner.qunit-pass                    { background-color: #C6E746; }
      -
      -/*** Failing Styles */
      -
      -#qunit-tests li li.fail {
      -	color: #710909;
      -	background-color: #FFF;
      -	border-left: 10px solid #EE5757;
      -	white-space: pre;
      -}
      -
      -#qunit-tests > li:last-child {
      -	border-radius: 0 0 5px 5px;
      -}
      -
      -#qunit-tests .fail                          { color: #000; background-color: #EE5757; }
      -#qunit-tests .fail .test-name,
      -#qunit-tests .fail .module-name             { color: #000; }
      -
      -#qunit-tests .fail .test-actual             { color: #EE5757; }
      -#qunit-tests .fail .test-expected           { color: #008000; }
      -
      -#qunit-banner.qunit-fail                    { background-color: #EE5757; }
      -
      -/*** Skipped tests */
      -
      -#qunit-tests .skipped {
      -	background-color: #EBECE9;
      -}
      -
      -#qunit-tests .qunit-skipped-label {
      -	background-color: #F4FF77;
      -	display: inline-block;
      -	font-style: normal;
      -	color: #366097;
      -	line-height: 1.8em;
      -	padding: 0 0.5em;
      -	margin: -0.4em 0.4em -0.4em 0;
      -}
      -
      -/** Result */
      -
      -#qunit-testresult {
      -	padding: 0.5em 1em 0.5em 1em;
      -
      -	color: #2B81AF;
      -	background-color: #D2E0E6;
      -
      -	border-bottom: 1px solid #FFF;
      -}
      -#qunit-testresult .module-name {
      -	font-weight: 700;
      -}
      -
      -/** Fixture */
      -
      -#qunit-fixture {
      -	position: absolute;
      -	top: -10000px;
      -	left: -10000px;
      -	width: 1000px;
      -	height: 1000px;
      -}
      diff --git a/bower_components/select2/tests/vendor/qunit-1.23.1.js b/bower_components/select2/tests/vendor/qunit-1.23.1.js
      deleted file mode 100644
      index 5df0822ea4..0000000000
      --- a/bower_components/select2/tests/vendor/qunit-1.23.1.js
      +++ /dev/null
      @@ -1,4334 +0,0 @@
      -/*!
      - * QUnit 1.23.1
      - * https://qunitjs.com/
      - *
      - * Copyright jQuery Foundation and other contributors
      - * Released under the MIT license
      - * https://jquery.org/license
      - *
      - * Date: 2016-04-12T17:29Z
      - */
      -
      -( function( global ) {
      -
      -var QUnit = {};
      -
      -var Date = global.Date;
      -var now = Date.now || function() {
      -	return new Date().getTime();
      -};
      -
      -var setTimeout = global.setTimeout;
      -var clearTimeout = global.clearTimeout;
      -
      -// Store a local window from the global to allow direct references.
      -var window = global.window;
      -
      -var defined = {
      -	document: window && window.document !== undefined,
      -	setTimeout: setTimeout !== undefined,
      -	sessionStorage: ( function() {
      -		var x = "qunit-test-string";
      -		try {
      -			sessionStorage.setItem( x, x );
      -			sessionStorage.removeItem( x );
      -			return true;
      -		} catch ( e ) {
      -			return false;
      -		}
      -	}() )
      -};
      -
      -var fileName = ( sourceFromStacktrace( 0 ) || "" ).replace( /(:\d+)+\)?/, "" ).replace( /.+\//, "" );
      -var globalStartCalled = false;
      -var runStarted = false;
      -
      -var toString = Object.prototype.toString,
      -	hasOwn = Object.prototype.hasOwnProperty;
      -
      -// Returns a new Array with the elements that are in a but not in b
      -function diff( a, b ) {
      -	var i, j,
      -		result = a.slice();
      -
      -	for ( i = 0; i < result.length; i++ ) {
      -		for ( j = 0; j < b.length; j++ ) {
      -			if ( result[ i ] === b[ j ] ) {
      -				result.splice( i, 1 );
      -				i--;
      -				break;
      -			}
      -		}
      -	}
      -	return result;
      -}
      -
      -// From jquery.js
      -function inArray( elem, array ) {
      -	if ( array.indexOf ) {
      -		return array.indexOf( elem );
      -	}
      -
      -	for ( var i = 0, length = array.length; i < length; i++ ) {
      -		if ( array[ i ] === elem ) {
      -			return i;
      -		}
      -	}
      -
      -	return -1;
      -}
      -
      -/**
      - * Makes a clone of an object using only Array or Object as base,
      - * and copies over the own enumerable properties.
      - *
      - * @param {Object} obj
      - * @return {Object} New object with only the own properties (recursively).
      - */
      -function objectValues ( obj ) {
      -	var key, val,
      -		vals = QUnit.is( "array", obj ) ? [] : {};
      -	for ( key in obj ) {
      -		if ( hasOwn.call( obj, key ) ) {
      -			val = obj[ key ];
      -			vals[ key ] = val === Object( val ) ? objectValues( val ) : val;
      -		}
      -	}
      -	return vals;
      -}
      -
      -function extend( a, b, undefOnly ) {
      -	for ( var prop in b ) {
      -		if ( hasOwn.call( b, prop ) ) {
      -
      -			// Avoid "Member not found" error in IE8 caused by messing with window.constructor
      -			// This block runs on every environment, so `global` is being used instead of `window`
      -			// to avoid errors on node.
      -			if ( prop !== "constructor" || a !== global ) {
      -				if ( b[ prop ] === undefined ) {
      -					delete a[ prop ];
      -				} else if ( !( undefOnly && typeof a[ prop ] !== "undefined" ) ) {
      -					a[ prop ] = b[ prop ];
      -				}
      -			}
      -		}
      -	}
      -
      -	return a;
      -}
      -
      -function objectType( obj ) {
      -	if ( typeof obj === "undefined" ) {
      -		return "undefined";
      -	}
      -
      -	// Consider: typeof null === object
      -	if ( obj === null ) {
      -		return "null";
      -	}
      -
      -	var match = toString.call( obj ).match( /^\[object\s(.*)\]$/ ),
      -		type = match && match[ 1 ];
      -
      -	switch ( type ) {
      -		case "Number":
      -			if ( isNaN( obj ) ) {
      -				return "nan";
      -			}
      -			return "number";
      -		case "String":
      -		case "Boolean":
      -		case "Array":
      -		case "Set":
      -		case "Map":
      -		case "Date":
      -		case "RegExp":
      -		case "Function":
      -		case "Symbol":
      -			return type.toLowerCase();
      -	}
      -	if ( typeof obj === "object" ) {
      -		return "object";
      -	}
      -}
      -
      -// Safe object type checking
      -function is( type, obj ) {
      -	return QUnit.objectType( obj ) === type;
      -}
      -
      -// Doesn't support IE6 to IE9, it will return undefined on these browsers
      -// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack
      -function extractStacktrace( e, offset ) {
      -	offset = offset === undefined ? 4 : offset;
      -
      -	var stack, include, i;
      -
      -	if ( e.stack ) {
      -		stack = e.stack.split( "\n" );
      -		if ( /^error$/i.test( stack[ 0 ] ) ) {
      -			stack.shift();
      -		}
      -		if ( fileName ) {
      -			include = [];
      -			for ( i = offset; i < stack.length; i++ ) {
      -				if ( stack[ i ].indexOf( fileName ) !== -1 ) {
      -					break;
      -				}
      -				include.push( stack[ i ] );
      -			}
      -			if ( include.length ) {
      -				return include.join( "\n" );
      -			}
      -		}
      -		return stack[ offset ];
      -
      -	// Support: Safari <=6 only
      -	} else if ( e.sourceURL ) {
      -
      -		// Exclude useless self-reference for generated Error objects
      -		if ( /qunit.js$/.test( e.sourceURL ) ) {
      -			return;
      -		}
      -
      -		// For actual exceptions, this is useful
      -		return e.sourceURL + ":" + e.line;
      -	}
      -}
      -
      -function sourceFromStacktrace( offset ) {
      -	var error = new Error();
      -
      -	// Support: Safari <=7 only, IE <=10 - 11 only
      -	// Not all browsers generate the `stack` property for `new Error()`, see also #636
      -	if ( !error.stack ) {
      -		try {
      -			throw error;
      -		} catch ( err ) {
      -			error = err;
      -		}
      -	}
      -
      -	return extractStacktrace( error, offset );
      -}
      -
      -/**
      - * Config object: Maintain internal state
      - * Later exposed as QUnit.config
      - * `config` initialized at top of scope
      - */
      -var config = {
      -
      -	// The queue of tests to run
      -	queue: [],
      -
      -	// Block until document ready
      -	blocking: true,
      -
      -	// By default, run previously failed tests first
      -	// very useful in combination with "Hide passed tests" checked
      -	reorder: true,
      -
      -	// By default, modify document.title when suite is done
      -	altertitle: true,
      -
      -	// HTML Reporter: collapse every test except the first failing test
      -	// If false, all failing tests will be expanded
      -	collapse: true,
      -
      -	// By default, scroll to top of the page when suite is done
      -	scrolltop: true,
      -
      -	// Depth up-to which object will be dumped
      -	maxDepth: 5,
      -
      -	// When enabled, all tests must call expect()
      -	requireExpects: false,
      -
      -	// Placeholder for user-configurable form-exposed URL parameters
      -	urlConfig: [],
      -
      -	// Set of all modules.
      -	modules: [],
      -
      -	// Stack of nested modules
      -	moduleStack: [],
      -
      -	// The first unnamed module
      -	currentModule: {
      -		name: "",
      -		tests: []
      -	},
      -
      -	callbacks: {}
      -};
      -
      -// Push a loose unnamed module to the modules collection
      -config.modules.push( config.currentModule );
      -
      -var loggingCallbacks = {};
      -
      -// Register logging callbacks
      -function registerLoggingCallbacks( obj ) {
      -	var i, l, key,
      -		callbackNames = [ "begin", "done", "log", "testStart", "testDone",
      -			"moduleStart", "moduleDone" ];
      -
      -	function registerLoggingCallback( key ) {
      -		var loggingCallback = function( callback ) {
      -			if ( objectType( callback ) !== "function" ) {
      -				throw new Error(
      -					"QUnit logging methods require a callback function as their first parameters."
      -				);
      -			}
      -
      -			config.callbacks[ key ].push( callback );
      -		};
      -
      -		// DEPRECATED: This will be removed on QUnit 2.0.0+
      -		// Stores the registered functions allowing restoring
      -		// at verifyLoggingCallbacks() if modified
      -		loggingCallbacks[ key ] = loggingCallback;
      -
      -		return loggingCallback;
      -	}
      -
      -	for ( i = 0, l = callbackNames.length; i < l; i++ ) {
      -		key = callbackNames[ i ];
      -
      -		// Initialize key collection of logging callback
      -		if ( objectType( config.callbacks[ key ] ) === "undefined" ) {
      -			config.callbacks[ key ] = [];
      -		}
      -
      -		obj[ key ] = registerLoggingCallback( key );
      -	}
      -}
      -
      -function runLoggingCallbacks( key, args ) {
      -	var i, l, callbacks;
      -
      -	callbacks = config.callbacks[ key ];
      -	for ( i = 0, l = callbacks.length; i < l; i++ ) {
      -		callbacks[ i ]( args );
      -	}
      -}
      -
      -// DEPRECATED: This will be removed on 2.0.0+
      -// This function verifies if the loggingCallbacks were modified by the user
      -// If so, it will restore it, assign the given callback and print a console warning
      -function verifyLoggingCallbacks() {
      -	var loggingCallback, userCallback;
      -
      -	for ( loggingCallback in loggingCallbacks ) {
      -		if ( QUnit[ loggingCallback ] !== loggingCallbacks[ loggingCallback ] ) {
      -
      -			userCallback = QUnit[ loggingCallback ];
      -
      -			// Restore the callback function
      -			QUnit[ loggingCallback ] = loggingCallbacks[ loggingCallback ];
      -
      -			// Assign the deprecated given callback
      -			QUnit[ loggingCallback ]( userCallback );
      -
      -			if ( global.console && global.console.warn ) {
      -				global.console.warn(
      -					"QUnit." + loggingCallback + " was replaced with a new value.\n" +
      -					"Please, check out the documentation on how to apply logging callbacks.\n" +
      -					"Reference: https://api.qunitjs.com/category/callbacks/"
      -				);
      -			}
      -		}
      -	}
      -}
      -
      -( function() {
      -	if ( !defined.document ) {
      -		return;
      -	}
      -
      -	// `onErrorFnPrev` initialized at top of scope
      -	// Preserve other handlers
      -	var onErrorFnPrev = window.onerror;
      -
      -	// Cover uncaught exceptions
      -	// Returning true will suppress the default browser handler,
      -	// returning false will let it run.
      -	window.onerror = function( error, filePath, linerNr ) {
      -		var ret = false;
      -		if ( onErrorFnPrev ) {
      -			ret = onErrorFnPrev( error, filePath, linerNr );
      -		}
      -
      -		// Treat return value as window.onerror itself does,
      -		// Only do our handling if not suppressed.
      -		if ( ret !== true ) {
      -			if ( QUnit.config.current ) {
      -				if ( QUnit.config.current.ignoreGlobalErrors ) {
      -					return true;
      -				}
      -				QUnit.pushFailure( error, filePath + ":" + linerNr );
      -			} else {
      -				QUnit.test( "global failure", extend( function() {
      -					QUnit.pushFailure( error, filePath + ":" + linerNr );
      -				}, { validTest: true } ) );
      -			}
      -			return false;
      -		}
      -
      -		return ret;
      -	};
      -}() );
      -
      -// Figure out if we're running the tests from a server or not
      -QUnit.isLocal = !( defined.document && window.location.protocol !== "file:" );
      -
      -// Expose the current QUnit version
      -QUnit.version = "1.23.1";
      -
      -extend( QUnit, {
      -
      -	// Call on start of module test to prepend name to all tests
      -	module: function( name, testEnvironment, executeNow ) {
      -		var module, moduleFns;
      -		var currentModule = config.currentModule;
      -
      -		if ( arguments.length === 2 ) {
      -			if ( objectType( testEnvironment ) === "function" ) {
      -				executeNow = testEnvironment;
      -				testEnvironment = undefined;
      -			}
      -		}
      -
      -		// DEPRECATED: handles setup/teardown functions,
      -		// beforeEach and afterEach should be used instead
      -		if ( testEnvironment && testEnvironment.setup ) {
      -			testEnvironment.beforeEach = testEnvironment.setup;
      -			delete testEnvironment.setup;
      -		}
      -		if ( testEnvironment && testEnvironment.teardown ) {
      -			testEnvironment.afterEach = testEnvironment.teardown;
      -			delete testEnvironment.teardown;
      -		}
      -
      -		module = createModule();
      -
      -		moduleFns = {
      -			beforeEach: setHook( module, "beforeEach" ),
      -			afterEach: setHook( module, "afterEach" )
      -		};
      -
      -		if ( objectType( executeNow ) === "function" ) {
      -			config.moduleStack.push( module );
      -			setCurrentModule( module );
      -			executeNow.call( module.testEnvironment, moduleFns );
      -			config.moduleStack.pop();
      -			module = module.parentModule || currentModule;
      -		}
      -
      -		setCurrentModule( module );
      -
      -		function createModule() {
      -			var parentModule = config.moduleStack.length ?
      -				config.moduleStack.slice( -1 )[ 0 ] : null;
      -			var moduleName = parentModule !== null ?
      -				[ parentModule.name, name ].join( " > " ) : name;
      -			var module = {
      -				name: moduleName,
      -				parentModule: parentModule,
      -				tests: [],
      -				moduleId: generateHash( moduleName )
      -			};
      -
      -			var env = {};
      -			if ( parentModule ) {
      -				extend( env, parentModule.testEnvironment );
      -				delete env.beforeEach;
      -				delete env.afterEach;
      -			}
      -			extend( env, testEnvironment );
      -			module.testEnvironment = env;
      -
      -			config.modules.push( module );
      -			return module;
      -		}
      -
      -		function setCurrentModule( module ) {
      -			config.currentModule = module;
      -		}
      -
      -	},
      -
      -	// DEPRECATED: QUnit.asyncTest() will be removed in QUnit 2.0.
      -	asyncTest: asyncTest,
      -
      -	test: test,
      -
      -	skip: skip,
      -
      -	only: only,
      -
      -	// DEPRECATED: The functionality of QUnit.start() will be altered in QUnit 2.0.
      -	// In QUnit 2.0, invoking it will ONLY affect the `QUnit.config.autostart` blocking behavior.
      -	start: function( count ) {
      -		var globalStartAlreadyCalled = globalStartCalled;
      -
      -		if ( !config.current ) {
      -			globalStartCalled = true;
      -
      -			if ( runStarted ) {
      -				throw new Error( "Called start() outside of a test context while already started" );
      -			} else if ( globalStartAlreadyCalled || count > 1 ) {
      -				throw new Error( "Called start() outside of a test context too many times" );
      -			} else if ( config.autostart ) {
      -				throw new Error( "Called start() outside of a test context when " +
      -					"QUnit.config.autostart was true" );
      -			} else if ( !config.pageLoaded ) {
      -
      -				// The page isn't completely loaded yet, so bail out and let `QUnit.load` handle it
      -				config.autostart = true;
      -				return;
      -			}
      -		} else {
      -
      -			// If a test is running, adjust its semaphore
      -			config.current.semaphore -= count || 1;
      -
      -			// If semaphore is non-numeric, throw error
      -			if ( isNaN( config.current.semaphore ) ) {
      -				config.current.semaphore = 0;
      -
      -				QUnit.pushFailure(
      -					"Called start() with a non-numeric decrement.",
      -					sourceFromStacktrace( 2 )
      -				);
      -				return;
      -			}
      -
      -			// Don't start until equal number of stop-calls
      -			if ( config.current.semaphore > 0 ) {
      -				return;
      -			}
      -
      -			// Throw an Error if start is called more often than stop
      -			if ( config.current.semaphore < 0 ) {
      -				config.current.semaphore = 0;
      -
      -				QUnit.pushFailure(
      -					"Called start() while already started (test's semaphore was 0 already)",
      -					sourceFromStacktrace( 2 )
      -				);
      -				return;
      -			}
      -		}
      -
      -		resumeProcessing();
      -	},
      -
      -	// DEPRECATED: QUnit.stop() will be removed in QUnit 2.0.
      -	stop: function( count ) {
      -
      -		// If there isn't a test running, don't allow QUnit.stop() to be called
      -		if ( !config.current ) {
      -			throw new Error( "Called stop() outside of a test context" );
      -		}
      -
      -		// If a test is running, adjust its semaphore
      -		config.current.semaphore += count || 1;
      -
      -		pauseProcessing();
      -	},
      -
      -	config: config,
      -
      -	is: is,
      -
      -	objectType: objectType,
      -
      -	extend: extend,
      -
      -	load: function() {
      -		config.pageLoaded = true;
      -
      -		// Initialize the configuration options
      -		extend( config, {
      -			stats: { all: 0, bad: 0 },
      -			moduleStats: { all: 0, bad: 0 },
      -			started: 0,
      -			updateRate: 1000,
      -			autostart: true,
      -			filter: ""
      -		}, true );
      -
      -		config.blocking = false;
      -
      -		if ( config.autostart ) {
      -			resumeProcessing();
      -		}
      -	},
      -
      -	stack: function( offset ) {
      -		offset = ( offset || 0 ) + 2;
      -		return sourceFromStacktrace( offset );
      -	}
      -} );
      -
      -registerLoggingCallbacks( QUnit );
      -
      -function begin() {
      -	var i, l,
      -		modulesLog = [];
      -
      -	// If the test run hasn't officially begun yet
      -	if ( !config.started ) {
      -
      -		// Record the time of the test run's beginning
      -		config.started = now();
      -
      -		verifyLoggingCallbacks();
      -
      -		// Delete the loose unnamed module if unused.
      -		if ( config.modules[ 0 ].name === "" && config.modules[ 0 ].tests.length === 0 ) {
      -			config.modules.shift();
      -		}
      -
      -		// Avoid unnecessary information by not logging modules' test environments
      -		for ( i = 0, l = config.modules.length; i < l; i++ ) {
      -			modulesLog.push( {
      -				name: config.modules[ i ].name,
      -				tests: config.modules[ i ].tests
      -			} );
      -		}
      -
      -		// The test run is officially beginning now
      -		runLoggingCallbacks( "begin", {
      -			totalTests: Test.count,
      -			modules: modulesLog
      -		} );
      -	}
      -
      -	config.blocking = false;
      -	process( true );
      -}
      -
      -function process( last ) {
      -	function next() {
      -		process( last );
      -	}
      -	var start = now();
      -	config.depth = ( config.depth || 0 ) + 1;
      -
      -	while ( config.queue.length && !config.blocking ) {
      -		if ( !defined.setTimeout || config.updateRate <= 0 ||
      -				( ( now() - start ) < config.updateRate ) ) {
      -			if ( config.current ) {
      -
      -				// Reset async tracking for each phase of the Test lifecycle
      -				config.current.usedAsync = false;
      -			}
      -			config.queue.shift()();
      -		} else {
      -			setTimeout( next, 13 );
      -			break;
      -		}
      -	}
      -	config.depth--;
      -	if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) {
      -		done();
      -	}
      -}
      -
      -function pauseProcessing() {
      -	config.blocking = true;
      -
      -	if ( config.testTimeout && defined.setTimeout ) {
      -		clearTimeout( config.timeout );
      -		config.timeout = setTimeout( function() {
      -			if ( config.current ) {
      -				config.current.semaphore = 0;
      -				QUnit.pushFailure( "Test timed out", sourceFromStacktrace( 2 ) );
      -			} else {
      -				throw new Error( "Test timed out" );
      -			}
      -			resumeProcessing();
      -		}, config.testTimeout );
      -	}
      -}
      -
      -function resumeProcessing() {
      -	runStarted = true;
      -
      -	// A slight delay to allow this iteration of the event loop to finish (more assertions, etc.)
      -	if ( defined.setTimeout ) {
      -		setTimeout( function() {
      -			if ( config.current && config.current.semaphore > 0 ) {
      -				return;
      -			}
      -			if ( config.timeout ) {
      -				clearTimeout( config.timeout );
      -			}
      -
      -			begin();
      -		}, 13 );
      -	} else {
      -		begin();
      -	}
      -}
      -
      -function done() {
      -	var runtime, passed;
      -
      -	config.autorun = true;
      -
      -	// Log the last module results
      -	if ( config.previousModule ) {
      -		runLoggingCallbacks( "moduleDone", {
      -			name: config.previousModule.name,
      -			tests: config.previousModule.tests,
      -			failed: config.moduleStats.bad,
      -			passed: config.moduleStats.all - config.moduleStats.bad,
      -			total: config.moduleStats.all,
      -			runtime: now() - config.moduleStats.started
      -		} );
      -	}
      -	delete config.previousModule;
      -
      -	runtime = now() - config.started;
      -	passed = config.stats.all - config.stats.bad;
      -
      -	runLoggingCallbacks( "done", {
      -		failed: config.stats.bad,
      -		passed: passed,
      -		total: config.stats.all,
      -		runtime: runtime
      -	} );
      -}
      -
      -function setHook( module, hookName ) {
      -	if ( module.testEnvironment === undefined ) {
      -		module.testEnvironment = {};
      -	}
      -
      -	return function( callback ) {
      -		module.testEnvironment[ hookName ] = callback;
      -	};
      -}
      -
      -var focused = false;
      -var priorityCount = 0;
      -var unitSampler;
      -
      -function Test( settings ) {
      -	var i, l;
      -
      -	++Test.count;
      -
      -	extend( this, settings );
      -	this.assertions = [];
      -	this.semaphore = 0;
      -	this.usedAsync = false;
      -	this.module = config.currentModule;
      -	this.stack = sourceFromStacktrace( 3 );
      -
      -	// Register unique strings
      -	for ( i = 0, l = this.module.tests; i < l.length; i++ ) {
      -		if ( this.module.tests[ i ].name === this.testName ) {
      -			this.testName += " ";
      -		}
      -	}
      -
      -	this.testId = generateHash( this.module.name, this.testName );
      -
      -	this.module.tests.push( {
      -		name: this.testName,
      -		testId: this.testId
      -	} );
      -
      -	if ( settings.skip ) {
      -
      -		// Skipped tests will fully ignore any sent callback
      -		this.callback = function() {};
      -		this.async = false;
      -		this.expected = 0;
      -	} else {
      -		this.assert = new Assert( this );
      -	}
      -}
      -
      -Test.count = 0;
      -
      -Test.prototype = {
      -	before: function() {
      -		if (
      -
      -			// Emit moduleStart when we're switching from one module to another
      -			this.module !== config.previousModule ||
      -
      -				// They could be equal (both undefined) but if the previousModule property doesn't
      -				// yet exist it means this is the first test in a suite that isn't wrapped in a
      -				// module, in which case we'll just emit a moduleStart event for 'undefined'.
      -				// Without this, reporters can get testStart before moduleStart  which is a problem.
      -				!hasOwn.call( config, "previousModule" )
      -		) {
      -			if ( hasOwn.call( config, "previousModule" ) ) {
      -				runLoggingCallbacks( "moduleDone", {
      -					name: config.previousModule.name,
      -					tests: config.previousModule.tests,
      -					failed: config.moduleStats.bad,
      -					passed: config.moduleStats.all - config.moduleStats.bad,
      -					total: config.moduleStats.all,
      -					runtime: now() - config.moduleStats.started
      -				} );
      -			}
      -			config.previousModule = this.module;
      -			config.moduleStats = { all: 0, bad: 0, started: now() };
      -			runLoggingCallbacks( "moduleStart", {
      -				name: this.module.name,
      -				tests: this.module.tests
      -			} );
      -		}
      -
      -		config.current = this;
      -
      -		if ( this.module.testEnvironment ) {
      -			delete this.module.testEnvironment.beforeEach;
      -			delete this.module.testEnvironment.afterEach;
      -		}
      -		this.testEnvironment = extend( {}, this.module.testEnvironment );
      -
      -		this.started = now();
      -		runLoggingCallbacks( "testStart", {
      -			name: this.testName,
      -			module: this.module.name,
      -			testId: this.testId
      -		} );
      -
      -		if ( !config.pollution ) {
      -			saveGlobal();
      -		}
      -	},
      -
      -	run: function() {
      -		var promise;
      -
      -		config.current = this;
      -
      -		if ( this.async ) {
      -			QUnit.stop();
      -		}
      -
      -		this.callbackStarted = now();
      -
      -		if ( config.notrycatch ) {
      -			runTest( this );
      -			return;
      -		}
      -
      -		try {
      -			runTest( this );
      -		} catch ( e ) {
      -			this.pushFailure( "Died on test #" + ( this.assertions.length + 1 ) + " " +
      -				this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) );
      -
      -			// Else next test will carry the responsibility
      -			saveGlobal();
      -
      -			// Restart the tests if they're blocking
      -			if ( config.blocking ) {
      -				QUnit.start();
      -			}
      -		}
      -
      -		function runTest( test ) {
      -			promise = test.callback.call( test.testEnvironment, test.assert );
      -			test.resolvePromise( promise );
      -		}
      -	},
      -
      -	after: function() {
      -		checkPollution();
      -	},
      -
      -	queueHook: function( hook, hookName ) {
      -		var promise,
      -			test = this;
      -		return function runHook() {
      -			config.current = test;
      -			if ( config.notrycatch ) {
      -				callHook();
      -				return;
      -			}
      -			try {
      -				callHook();
      -			} catch ( error ) {
      -				test.pushFailure( hookName + " failed on " + test.testName + ": " +
      -				( error.message || error ), extractStacktrace( error, 0 ) );
      -			}
      -
      -			function callHook() {
      -				promise = hook.call( test.testEnvironment, test.assert );
      -				test.resolvePromise( promise, hookName );
      -			}
      -		};
      -	},
      -
      -	// Currently only used for module level hooks, can be used to add global level ones
      -	hooks: function( handler ) {
      -		var hooks = [];
      -
      -		function processHooks( test, module ) {
      -			if ( module.parentModule ) {
      -				processHooks( test, module.parentModule );
      -			}
      -			if ( module.testEnvironment &&
      -				QUnit.objectType( module.testEnvironment[ handler ] ) === "function" ) {
      -				hooks.push( test.queueHook( module.testEnvironment[ handler ], handler ) );
      -			}
      -		}
      -
      -		// Hooks are ignored on skipped tests
      -		if ( !this.skip ) {
      -			processHooks( this, this.module );
      -		}
      -		return hooks;
      -	},
      -
      -	finish: function() {
      -		config.current = this;
      -		if ( config.requireExpects && this.expected === null ) {
      -			this.pushFailure( "Expected number of assertions to be defined, but expect() was " +
      -				"not called.", this.stack );
      -		} else if ( this.expected !== null && this.expected !== this.assertions.length ) {
      -			this.pushFailure( "Expected " + this.expected + " assertions, but " +
      -				this.assertions.length + " were run", this.stack );
      -		} else if ( this.expected === null && !this.assertions.length ) {
      -			this.pushFailure( "Expected at least one assertion, but none were run - call " +
      -				"expect(0) to accept zero assertions.", this.stack );
      -		}
      -
      -		var i,
      -			bad = 0;
      -
      -		this.runtime = now() - this.started;
      -		config.stats.all += this.assertions.length;
      -		config.moduleStats.all += this.assertions.length;
      -
      -		for ( i = 0; i < this.assertions.length; i++ ) {
      -			if ( !this.assertions[ i ].result ) {
      -				bad++;
      -				config.stats.bad++;
      -				config.moduleStats.bad++;
      -			}
      -		}
      -
      -		runLoggingCallbacks( "testDone", {
      -			name: this.testName,
      -			module: this.module.name,
      -			skipped: !!this.skip,
      -			failed: bad,
      -			passed: this.assertions.length - bad,
      -			total: this.assertions.length,
      -			runtime: this.runtime,
      -
      -			// HTML Reporter use
      -			assertions: this.assertions,
      -			testId: this.testId,
      -
      -			// Source of Test
      -			source: this.stack,
      -
      -			// DEPRECATED: this property will be removed in 2.0.0, use runtime instead
      -			duration: this.runtime
      -		} );
      -
      -		// QUnit.reset() is deprecated and will be replaced for a new
      -		// fixture reset function on QUnit 2.0/2.1.
      -		// It's still called here for backwards compatibility handling
      -		QUnit.reset();
      -
      -		config.current = undefined;
      -	},
      -
      -	queue: function() {
      -		var priority,
      -			test = this;
      -
      -		if ( !this.valid() ) {
      -			return;
      -		}
      -
      -		function run() {
      -
      -			// Each of these can by async
      -			synchronize( [
      -				function() {
      -					test.before();
      -				},
      -
      -				test.hooks( "beforeEach" ),
      -				function() {
      -					test.run();
      -				},
      -
      -				test.hooks( "afterEach" ).reverse(),
      -
      -				function() {
      -					test.after();
      -				},
      -				function() {
      -					test.finish();
      -				}
      -			] );
      -		}
      -
      -		// Prioritize previously failed tests, detected from sessionStorage
      -		priority = QUnit.config.reorder && defined.sessionStorage &&
      -				+sessionStorage.getItem( "qunit-test-" + this.module.name + "-" + this.testName );
      -
      -		return synchronize( run, priority, config.seed );
      -	},
      -
      -	pushResult: function( resultInfo ) {
      -
      -		// Destructure of resultInfo = { result, actual, expected, message, negative }
      -		var source,
      -			details = {
      -				module: this.module.name,
      -				name: this.testName,
      -				result: resultInfo.result,
      -				message: resultInfo.message,
      -				actual: resultInfo.actual,
      -				expected: resultInfo.expected,
      -				testId: this.testId,
      -				negative: resultInfo.negative || false,
      -				runtime: now() - this.started
      -			};
      -
      -		if ( !resultInfo.result ) {
      -			source = sourceFromStacktrace();
      -
      -			if ( source ) {
      -				details.source = source;
      -			}
      -		}
      -
      -		runLoggingCallbacks( "log", details );
      -
      -		this.assertions.push( {
      -			result: !!resultInfo.result,
      -			message: resultInfo.message
      -		} );
      -	},
      -
      -	pushFailure: function( message, source, actual ) {
      -		if ( !( this instanceof Test ) ) {
      -			throw new Error( "pushFailure() assertion outside test context, was " +
      -				sourceFromStacktrace( 2 ) );
      -		}
      -
      -		var details = {
      -				module: this.module.name,
      -				name: this.testName,
      -				result: false,
      -				message: message || "error",
      -				actual: actual || null,
      -				testId: this.testId,
      -				runtime: now() - this.started
      -			};
      -
      -		if ( source ) {
      -			details.source = source;
      -		}
      -
      -		runLoggingCallbacks( "log", details );
      -
      -		this.assertions.push( {
      -			result: false,
      -			message: message
      -		} );
      -	},
      -
      -	resolvePromise: function( promise, phase ) {
      -		var then, message,
      -			test = this;
      -		if ( promise != null ) {
      -			then = promise.then;
      -			if ( QUnit.objectType( then ) === "function" ) {
      -				QUnit.stop();
      -				then.call(
      -					promise,
      -					function() { QUnit.start(); },
      -					function( error ) {
      -						message = "Promise rejected " +
      -							( !phase ? "during" : phase.replace( /Each$/, "" ) ) +
      -							" " + test.testName + ": " + ( error.message || error );
      -						test.pushFailure( message, extractStacktrace( error, 0 ) );
      -
      -						// Else next test will carry the responsibility
      -						saveGlobal();
      -
      -						// Unblock
      -						QUnit.start();
      -					}
      -				);
      -			}
      -		}
      -	},
      -
      -	valid: function() {
      -		var filter = config.filter,
      -			regexFilter = /^(!?)\/([\w\W]*)\/(i?$)/.exec( filter ),
      -			module = config.module && config.module.toLowerCase(),
      -			fullName = ( this.module.name + ": " + this.testName );
      -
      -		function moduleChainNameMatch( testModule ) {
      -			var testModuleName = testModule.name ? testModule.name.toLowerCase() : null;
      -			if ( testModuleName === module ) {
      -				return true;
      -			} else if ( testModule.parentModule ) {
      -				return moduleChainNameMatch( testModule.parentModule );
      -			} else {
      -				return false;
      -			}
      -		}
      -
      -		function moduleChainIdMatch( testModule ) {
      -			return inArray( testModule.moduleId, config.moduleId ) > -1 ||
      -				testModule.parentModule && moduleChainIdMatch( testModule.parentModule );
      -		}
      -
      -		// Internally-generated tests are always valid
      -		if ( this.callback && this.callback.validTest ) {
      -			return true;
      -		}
      -
      -		if ( config.moduleId && config.moduleId.length > 0 &&
      -			!moduleChainIdMatch( this.module ) ) {
      -
      -			return false;
      -		}
      -
      -		if ( config.testId && config.testId.length > 0 &&
      -			inArray( this.testId, config.testId ) < 0 ) {
      -
      -			return false;
      -		}
      -
      -		if ( module && !moduleChainNameMatch( this.module ) ) {
      -			return false;
      -		}
      -
      -		if ( !filter ) {
      -			return true;
      -		}
      -
      -		return regexFilter ?
      -			this.regexFilter( !!regexFilter[ 1 ], regexFilter[ 2 ], regexFilter[ 3 ], fullName ) :
      -			this.stringFilter( filter, fullName );
      -	},
      -
      -	regexFilter: function( exclude, pattern, flags, fullName ) {
      -		var regex = new RegExp( pattern, flags );
      -		var match = regex.test( fullName );
      -
      -		return match !== exclude;
      -	},
      -
      -	stringFilter: function( filter, fullName ) {
      -		filter = filter.toLowerCase();
      -		fullName = fullName.toLowerCase();
      -
      -		var include = filter.charAt( 0 ) !== "!";
      -		if ( !include ) {
      -			filter = filter.slice( 1 );
      -		}
      -
      -		// If the filter matches, we need to honour include
      -		if ( fullName.indexOf( filter ) !== -1 ) {
      -			return include;
      -		}
      -
      -		// Otherwise, do the opposite
      -		return !include;
      -	}
      -};
      -
      -// Resets the test setup. Useful for tests that modify the DOM.
      -/*
      -DEPRECATED: Use multiple tests instead of resetting inside a test.
      -Use testStart or testDone for custom cleanup.
      -This method will throw an error in 2.0, and will be removed in 2.1
      -*/
      -QUnit.reset = function() {
      -
      -	// Return on non-browser environments
      -	// This is necessary to not break on node tests
      -	if ( !defined.document ) {
      -		return;
      -	}
      -
      -	var fixture = defined.document && document.getElementById &&
      -			document.getElementById( "qunit-fixture" );
      -
      -	if ( fixture ) {
      -		fixture.innerHTML = config.fixture;
      -	}
      -};
      -
      -QUnit.pushFailure = function() {
      -	if ( !QUnit.config.current ) {
      -		throw new Error( "pushFailure() assertion outside test context, in " +
      -			sourceFromStacktrace( 2 ) );
      -	}
      -
      -	// Gets current test obj
      -	var currentTest = QUnit.config.current;
      -
      -	return currentTest.pushFailure.apply( currentTest, arguments );
      -};
      -
      -// Based on Java's String.hashCode, a simple but not
      -// rigorously collision resistant hashing function
      -function generateHash( module, testName ) {
      -	var hex,
      -		i = 0,
      -		hash = 0,
      -		str = module + "\x1C" + testName,
      -		len = str.length;
      -
      -	for ( ; i < len; i++ ) {
      -		hash  = ( ( hash << 5 ) - hash ) + str.charCodeAt( i );
      -		hash |= 0;
      -	}
      -
      -	// Convert the possibly negative integer hash code into an 8 character hex string, which isn't
      -	// strictly necessary but increases user understanding that the id is a SHA-like hash
      -	hex = ( 0x100000000 + hash ).toString( 16 );
      -	if ( hex.length < 8 ) {
      -		hex = "0000000" + hex;
      -	}
      -
      -	return hex.slice( -8 );
      -}
      -
      -function synchronize( callback, priority, seed ) {
      -	var last = !priority,
      -		index;
      -
      -	if ( QUnit.objectType( callback ) === "array" ) {
      -		while ( callback.length ) {
      -			synchronize( callback.shift() );
      -		}
      -		return;
      -	}
      -
      -	if ( priority ) {
      -		config.queue.splice( priorityCount++, 0, callback );
      -	} else if ( seed ) {
      -		if ( !unitSampler ) {
      -			unitSampler = unitSamplerGenerator( seed );
      -		}
      -
      -		// Insert into a random position after all priority items
      -		index = Math.floor( unitSampler() * ( config.queue.length - priorityCount + 1 ) );
      -		config.queue.splice( priorityCount + index, 0, callback );
      -	} else {
      -		config.queue.push( callback );
      -	}
      -
      -	if ( config.autorun && !config.blocking ) {
      -		process( last );
      -	}
      -}
      -
      -function unitSamplerGenerator( seed ) {
      -
      -	// 32-bit xorshift, requires only a nonzero seed
      -	// http://excamera.com/sphinx/article-xorshift.html
      -	var sample = parseInt( generateHash( seed ), 16 ) || -1;
      -	return function() {
      -		sample ^= sample << 13;
      -		sample ^= sample >>> 17;
      -		sample ^= sample << 5;
      -
      -		// ECMAScript has no unsigned number type
      -		if ( sample < 0 ) {
      -			sample += 0x100000000;
      -		}
      -
      -		return sample / 0x100000000;
      -	};
      -}
      -
      -function saveGlobal() {
      -	config.pollution = [];
      -
      -	if ( config.noglobals ) {
      -		for ( var key in global ) {
      -			if ( hasOwn.call( global, key ) ) {
      -
      -				// In Opera sometimes DOM element ids show up here, ignore them
      -				if ( /^qunit-test-output/.test( key ) ) {
      -					continue;
      -				}
      -				config.pollution.push( key );
      -			}
      -		}
      -	}
      -}
      -
      -function checkPollution() {
      -	var newGlobals,
      -		deletedGlobals,
      -		old = config.pollution;
      -
      -	saveGlobal();
      -
      -	newGlobals = diff( config.pollution, old );
      -	if ( newGlobals.length > 0 ) {
      -		QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join( ", " ) );
      -	}
      -
      -	deletedGlobals = diff( old, config.pollution );
      -	if ( deletedGlobals.length > 0 ) {
      -		QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join( ", " ) );
      -	}
      -}
      -
      -// Will be exposed as QUnit.asyncTest
      -function asyncTest( testName, expected, callback ) {
      -	if ( arguments.length === 2 ) {
      -		callback = expected;
      -		expected = null;
      -	}
      -
      -	QUnit.test( testName, expected, callback, true );
      -}
      -
      -// Will be exposed as QUnit.test
      -function test( testName, expected, callback, async ) {
      -	if ( focused )  { return; }
      -
      -	var newTest;
      -
      -	if ( arguments.length === 2 ) {
      -		callback = expected;
      -		expected = null;
      -	}
      -
      -	newTest = new Test( {
      -		testName: testName,
      -		expected: expected,
      -		async: async,
      -		callback: callback
      -	} );
      -
      -	newTest.queue();
      -}
      -
      -// Will be exposed as QUnit.skip
      -function skip( testName ) {
      -	if ( focused )  { return; }
      -
      -	var test = new Test( {
      -		testName: testName,
      -		skip: true
      -	} );
      -
      -	test.queue();
      -}
      -
      -// Will be exposed as QUnit.only
      -function only( testName, expected, callback, async ) {
      -	var newTest;
      -
      -	if ( focused )  { return; }
      -
      -	QUnit.config.queue.length = 0;
      -	focused = true;
      -
      -	if ( arguments.length === 2 ) {
      -		callback = expected;
      -		expected = null;
      -	}
      -
      -	newTest = new Test( {
      -		testName: testName,
      -		expected: expected,
      -		async: async,
      -		callback: callback
      -	} );
      -
      -	newTest.queue();
      -}
      -
      -function Assert( testContext ) {
      -	this.test = testContext;
      -}
      -
      -// Assert helpers
      -QUnit.assert = Assert.prototype = {
      -
      -	// Specify the number of expected assertions to guarantee that failed test
      -	// (no assertions are run at all) don't slip through.
      -	expect: function( asserts ) {
      -		if ( arguments.length === 1 ) {
      -			this.test.expected = asserts;
      -		} else {
      -			return this.test.expected;
      -		}
      -	},
      -
      -	// Increment this Test's semaphore counter, then return a function that
      -	// decrements that counter a maximum of once.
      -	async: function( count ) {
      -		var test = this.test,
      -			popped = false,
      -			acceptCallCount = count;
      -
      -		if ( typeof acceptCallCount === "undefined" ) {
      -			acceptCallCount = 1;
      -		}
      -
      -		test.semaphore += 1;
      -		test.usedAsync = true;
      -		pauseProcessing();
      -
      -		return function done() {
      -
      -			if ( popped ) {
      -				test.pushFailure( "Too many calls to the `assert.async` callback",
      -					sourceFromStacktrace( 2 ) );
      -				return;
      -			}
      -			acceptCallCount -= 1;
      -			if ( acceptCallCount > 0 ) {
      -				return;
      -			}
      -
      -			test.semaphore -= 1;
      -			popped = true;
      -			resumeProcessing();
      -		};
      -	},
      -
      -	// Exports test.push() to the user API
      -	// Alias of pushResult.
      -	push: function( result, actual, expected, message, negative ) {
      -		var currentAssert = this instanceof Assert ? this : QUnit.config.current.assert;
      -		return currentAssert.pushResult( {
      -			result: result,
      -			actual: actual,
      -			expected: expected,
      -			message: message,
      -			negative: negative
      -		} );
      -	},
      -
      -	pushResult: function( resultInfo ) {
      -
      -		// Destructure of resultInfo = { result, actual, expected, message, negative }
      -		var assert = this,
      -			currentTest = ( assert instanceof Assert && assert.test ) || QUnit.config.current;
      -
      -		// Backwards compatibility fix.
      -		// Allows the direct use of global exported assertions and QUnit.assert.*
      -		// Although, it's use is not recommended as it can leak assertions
      -		// to other tests from async tests, because we only get a reference to the current test,
      -		// not exactly the test where assertion were intended to be called.
      -		if ( !currentTest ) {
      -			throw new Error( "assertion outside test context, in " + sourceFromStacktrace( 2 ) );
      -		}
      -
      -		if ( currentTest.usedAsync === true && currentTest.semaphore === 0 ) {
      -			currentTest.pushFailure( "Assertion after the final `assert.async` was resolved",
      -				sourceFromStacktrace( 2 ) );
      -
      -			// Allow this assertion to continue running anyway...
      -		}
      -
      -		if ( !( assert instanceof Assert ) ) {
      -			assert = currentTest.assert;
      -		}
      -
      -		return assert.test.pushResult( resultInfo );
      -	},
      -
      -	ok: function( result, message ) {
      -		message = message || ( result ? "okay" : "failed, expected argument to be truthy, was: " +
      -			QUnit.dump.parse( result ) );
      -		this.pushResult( {
      -			result: !!result,
      -			actual: result,
      -			expected: true,
      -			message: message
      -		} );
      -	},
      -
      -	notOk: function( result, message ) {
      -		message = message || ( !result ? "okay" : "failed, expected argument to be falsy, was: " +
      -			QUnit.dump.parse( result ) );
      -		this.pushResult( {
      -			result: !result,
      -			actual: result,
      -			expected: false,
      -			message: message
      -		} );
      -	},
      -
      -	equal: function( actual, expected, message ) {
      -		/*jshint eqeqeq:false */
      -		this.pushResult( {
      -			result: expected == actual,
      -			actual: actual,
      -			expected: expected,
      -			message: message
      -		} );
      -	},
      -
      -	notEqual: function( actual, expected, message ) {
      -		/*jshint eqeqeq:false */
      -		this.pushResult( {
      -			result: expected != actual,
      -			actual: actual,
      -			expected: expected,
      -			message: message,
      -			negative: true
      -		} );
      -	},
      -
      -	propEqual: function( actual, expected, message ) {
      -		actual = objectValues( actual );
      -		expected = objectValues( expected );
      -		this.pushResult( {
      -			result: QUnit.equiv( actual, expected ),
      -			actual: actual,
      -			expected: expected,
      -			message: message
      -		} );
      -	},
      -
      -	notPropEqual: function( actual, expected, message ) {
      -		actual = objectValues( actual );
      -		expected = objectValues( expected );
      -		this.pushResult( {
      -			result: !QUnit.equiv( actual, expected ),
      -			actual: actual,
      -			expected: expected,
      -			message: message,
      -			negative: true
      -		} );
      -	},
      -
      -	deepEqual: function( actual, expected, message ) {
      -		this.pushResult( {
      -			result: QUnit.equiv( actual, expected ),
      -			actual: actual,
      -			expected: expected,
      -			message: message
      -		} );
      -	},
      -
      -	notDeepEqual: function( actual, expected, message ) {
      -		this.pushResult( {
      -			result: !QUnit.equiv( actual, expected ),
      -			actual: actual,
      -			expected: expected,
      -			message: message,
      -			negative: true
      -		} );
      -	},
      -
      -	strictEqual: function( actual, expected, message ) {
      -		this.pushResult( {
      -			result: expected === actual,
      -			actual: actual,
      -			expected: expected,
      -			message: message
      -		} );
      -	},
      -
      -	notStrictEqual: function( actual, expected, message ) {
      -		this.pushResult( {
      -			result: expected !== actual,
      -			actual: actual,
      -			expected: expected,
      -			message: message,
      -			negative: true
      -		} );
      -	},
      -
      -	"throws": function( block, expected, message ) {
      -		var actual, expectedType,
      -			expectedOutput = expected,
      -			ok = false,
      -			currentTest = ( this instanceof Assert && this.test ) || QUnit.config.current;
      -
      -		// 'expected' is optional unless doing string comparison
      -		if ( message == null && typeof expected === "string" ) {
      -			message = expected;
      -			expected = null;
      -		}
      -
      -		currentTest.ignoreGlobalErrors = true;
      -		try {
      -			block.call( currentTest.testEnvironment );
      -		} catch ( e ) {
      -			actual = e;
      -		}
      -		currentTest.ignoreGlobalErrors = false;
      -
      -		if ( actual ) {
      -			expectedType = QUnit.objectType( expected );
      -
      -			// We don't want to validate thrown error
      -			if ( !expected ) {
      -				ok = true;
      -				expectedOutput = null;
      -
      -			// Expected is a regexp
      -			} else if ( expectedType === "regexp" ) {
      -				ok = expected.test( errorString( actual ) );
      -
      -			// Expected is a string
      -			} else if ( expectedType === "string" ) {
      -				ok = expected === errorString( actual );
      -
      -			// Expected is a constructor, maybe an Error constructor
      -			} else if ( expectedType === "function" && actual instanceof expected ) {
      -				ok = true;
      -
      -			// Expected is an Error object
      -			} else if ( expectedType === "object" ) {
      -				ok = actual instanceof expected.constructor &&
      -					actual.name === expected.name &&
      -					actual.message === expected.message;
      -
      -			// Expected is a validation function which returns true if validation passed
      -			} else if ( expectedType === "function" && expected.call( {}, actual ) === true ) {
      -				expectedOutput = null;
      -				ok = true;
      -			}
      -		}
      -
      -		currentTest.assert.pushResult( {
      -			result: ok,
      -			actual: actual,
      -			expected: expectedOutput,
      -			message: message
      -		} );
      -	}
      -};
      -
      -// Provide an alternative to assert.throws(), for environments that consider throws a reserved word
      -// Known to us are: Closure Compiler, Narwhal
      -( function() {
      -	/*jshint sub:true */
      -	Assert.prototype.raises = Assert.prototype [ "throws" ]; //jscs:ignore requireDotNotation
      -}() );
      -
      -function errorString( error ) {
      -	var name, message,
      -		resultErrorString = error.toString();
      -	if ( resultErrorString.substring( 0, 7 ) === "[object" ) {
      -		name = error.name ? error.name.toString() : "Error";
      -		message = error.message ? error.message.toString() : "";
      -		if ( name && message ) {
      -			return name + ": " + message;
      -		} else if ( name ) {
      -			return name;
      -		} else if ( message ) {
      -			return message;
      -		} else {
      -			return "Error";
      -		}
      -	} else {
      -		return resultErrorString;
      -	}
      -}
      -
      -// Test for equality any JavaScript type.
      -// Author: Philippe Rathé <prathe@gmail.com>
      -QUnit.equiv = ( function() {
      -
      -	// Stack to decide between skip/abort functions
      -	var callers = [];
      -
      -	// Stack to avoiding loops from circular referencing
      -	var parents = [];
      -	var parentsB = [];
      -
      -	var getProto = Object.getPrototypeOf || function( obj ) {
      -
      -		/*jshint proto: true */
      -		return obj.__proto__;
      -	};
      -
      -	function useStrictEquality( b, a ) {
      -
      -		// To catch short annotation VS 'new' annotation of a declaration. e.g.:
      -		// `var i = 1;`
      -		// `var j = new Number(1);`
      -		if ( typeof a === "object" ) {
      -			a = a.valueOf();
      -		}
      -		if ( typeof b === "object" ) {
      -			b = b.valueOf();
      -		}
      -
      -		return a === b;
      -	}
      -
      -	function compareConstructors( a, b ) {
      -		var protoA = getProto( a );
      -		var protoB = getProto( b );
      -
      -		// Comparing constructors is more strict than using `instanceof`
      -		if ( a.constructor === b.constructor ) {
      -			return true;
      -		}
      -
      -		// Ref #851
      -		// If the obj prototype descends from a null constructor, treat it
      -		// as a null prototype.
      -		if ( protoA && protoA.constructor === null ) {
      -			protoA = null;
      -		}
      -		if ( protoB && protoB.constructor === null ) {
      -			protoB = null;
      -		}
      -
      -		// Allow objects with no prototype to be equivalent to
      -		// objects with Object as their constructor.
      -		if ( ( protoA === null && protoB === Object.prototype ) ||
      -				( protoB === null && protoA === Object.prototype ) ) {
      -			return true;
      -		}
      -
      -		return false;
      -	}
      -
      -	function getRegExpFlags( regexp ) {
      -		return "flags" in regexp ? regexp.flags : regexp.toString().match( /[gimuy]*$/ )[ 0 ];
      -	}
      -
      -	var callbacks = {
      -		"string": useStrictEquality,
      -		"boolean": useStrictEquality,
      -		"number": useStrictEquality,
      -		"null": useStrictEquality,
      -		"undefined": useStrictEquality,
      -		"symbol": useStrictEquality,
      -		"date": useStrictEquality,
      -
      -		"nan": function() {
      -			return true;
      -		},
      -
      -		"regexp": function( b, a ) {
      -			return a.source === b.source &&
      -
      -				// Include flags in the comparison
      -				getRegExpFlags( a ) === getRegExpFlags( b );
      -		},
      -
      -		// - skip when the property is a method of an instance (OOP)
      -		// - abort otherwise,
      -		// initial === would have catch identical references anyway
      -		"function": function() {
      -			var caller = callers[ callers.length - 1 ];
      -			return caller !== Object && typeof caller !== "undefined";
      -		},
      -
      -		"array": function( b, a ) {
      -			var i, j, len, loop, aCircular, bCircular;
      -
      -			len = a.length;
      -			if ( len !== b.length ) {
      -
      -				// Safe and faster
      -				return false;
      -			}
      -
      -			// Track reference to avoid circular references
      -			parents.push( a );
      -			parentsB.push( b );
      -			for ( i = 0; i < len; i++ ) {
      -				loop = false;
      -				for ( j = 0; j < parents.length; j++ ) {
      -					aCircular = parents[ j ] === a[ i ];
      -					bCircular = parentsB[ j ] === b[ i ];
      -					if ( aCircular || bCircular ) {
      -						if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
      -							loop = true;
      -						} else {
      -							parents.pop();
      -							parentsB.pop();
      -							return false;
      -						}
      -					}
      -				}
      -				if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
      -					parents.pop();
      -					parentsB.pop();
      -					return false;
      -				}
      -			}
      -			parents.pop();
      -			parentsB.pop();
      -			return true;
      -		},
      -
      -		"set": function( b, a ) {
      -			var innerEq,
      -				outerEq = true;
      -
      -			if ( a.size !== b.size ) {
      -				return false;
      -			}
      -
      -			a.forEach( function( aVal ) {
      -				innerEq = false;
      -
      -				b.forEach( function( bVal ) {
      -					if ( innerEquiv( bVal, aVal ) ) {
      -						innerEq = true;
      -					}
      -				} );
      -
      -				if ( !innerEq ) {
      -					outerEq = false;
      -				}
      -			} );
      -
      -			return outerEq;
      -		},
      -
      -		"map": function( b, a ) {
      -			var innerEq,
      -				outerEq = true;
      -
      -			if ( a.size !== b.size ) {
      -				return false;
      -			}
      -
      -			a.forEach( function( aVal, aKey ) {
      -				innerEq = false;
      -
      -				b.forEach( function( bVal, bKey ) {
      -					if ( innerEquiv( [ bVal, bKey ], [ aVal, aKey ] ) ) {
      -						innerEq = true;
      -					}
      -				} );
      -
      -				if ( !innerEq ) {
      -					outerEq = false;
      -				}
      -			} );
      -
      -			return outerEq;
      -		},
      -
      -		"object": function( b, a ) {
      -			var i, j, loop, aCircular, bCircular;
      -
      -			// Default to true
      -			var eq = true;
      -			var aProperties = [];
      -			var bProperties = [];
      -
      -			if ( compareConstructors( a, b ) === false ) {
      -				return false;
      -			}
      -
      -			// Stack constructor before traversing properties
      -			callers.push( a.constructor );
      -
      -			// Track reference to avoid circular references
      -			parents.push( a );
      -			parentsB.push( b );
      -
      -			// Be strict: don't ensure hasOwnProperty and go deep
      -			for ( i in a ) {
      -				loop = false;
      -				for ( j = 0; j < parents.length; j++ ) {
      -					aCircular = parents[ j ] === a[ i ];
      -					bCircular = parentsB[ j ] === b[ i ];
      -					if ( aCircular || bCircular ) {
      -						if ( a[ i ] === b[ i ] || aCircular && bCircular ) {
      -							loop = true;
      -						} else {
      -							eq = false;
      -							break;
      -						}
      -					}
      -				}
      -				aProperties.push( i );
      -				if ( !loop && !innerEquiv( a[ i ], b[ i ] ) ) {
      -					eq = false;
      -					break;
      -				}
      -			}
      -
      -			parents.pop();
      -			parentsB.pop();
      -
      -			// Unstack, we are done
      -			callers.pop();
      -
      -			for ( i in b ) {
      -
      -				// Collect b's properties
      -				bProperties.push( i );
      -			}
      -
      -			// Ensures identical properties name
      -			return eq && innerEquiv( aProperties.sort(), bProperties.sort() );
      -		}
      -	};
      -
      -	function typeEquiv( a, b ) {
      -		var type = QUnit.objectType( a );
      -		return QUnit.objectType( b ) === type && callbacks[ type ]( b, a );
      -	}
      -
      -	// The real equiv function
      -	function innerEquiv( a, b ) {
      -
      -		// We're done when there's nothing more to compare
      -		if ( arguments.length < 2 ) {
      -			return true;
      -		}
      -
      -		// Require type-specific equality
      -		return ( a === b || typeEquiv( a, b ) ) &&
      -
      -			// ...across all consecutive argument pairs
      -			( arguments.length === 2 || innerEquiv.apply( this, [].slice.call( arguments, 1 ) ) );
      -	}
      -
      -	return innerEquiv;
      -}() );
      -
      -// Based on jsDump by Ariel Flesler
      -// http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html
      -QUnit.dump = ( function() {
      -	function quote( str ) {
      -		return "\"" + str.toString().replace( /\\/g, "\\\\" ).replace( /"/g, "\\\"" ) + "\"";
      -	}
      -	function literal( o ) {
      -		return o + "";
      -	}
      -	function join( pre, arr, post ) {
      -		var s = dump.separator(),
      -			base = dump.indent(),
      -			inner = dump.indent( 1 );
      -		if ( arr.join ) {
      -			arr = arr.join( "," + s + inner );
      -		}
      -		if ( !arr ) {
      -			return pre + post;
      -		}
      -		return [ pre, inner + arr, base + post ].join( s );
      -	}
      -	function array( arr, stack ) {
      -		var i = arr.length,
      -			ret = new Array( i );
      -
      -		if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
      -			return "[object Array]";
      -		}
      -
      -		this.up();
      -		while ( i-- ) {
      -			ret[ i ] = this.parse( arr[ i ], undefined, stack );
      -		}
      -		this.down();
      -		return join( "[", ret, "]" );
      -	}
      -
      -	var reName = /^function (\w+)/,
      -		dump = {
      -
      -			// The objType is used mostly internally, you can fix a (custom) type in advance
      -			parse: function( obj, objType, stack ) {
      -				stack = stack || [];
      -				var res, parser, parserType,
      -					inStack = inArray( obj, stack );
      -
      -				if ( inStack !== -1 ) {
      -					return "recursion(" + ( inStack - stack.length ) + ")";
      -				}
      -
      -				objType = objType || this.typeOf( obj  );
      -				parser = this.parsers[ objType ];
      -				parserType = typeof parser;
      -
      -				if ( parserType === "function" ) {
      -					stack.push( obj );
      -					res = parser.call( this, obj, stack );
      -					stack.pop();
      -					return res;
      -				}
      -				return ( parserType === "string" ) ? parser : this.parsers.error;
      -			},
      -			typeOf: function( obj ) {
      -				var type;
      -				if ( obj === null ) {
      -					type = "null";
      -				} else if ( typeof obj === "undefined" ) {
      -					type = "undefined";
      -				} else if ( QUnit.is( "regexp", obj ) ) {
      -					type = "regexp";
      -				} else if ( QUnit.is( "date", obj ) ) {
      -					type = "date";
      -				} else if ( QUnit.is( "function", obj ) ) {
      -					type = "function";
      -				} else if ( obj.setInterval !== undefined &&
      -						obj.document !== undefined &&
      -						obj.nodeType === undefined ) {
      -					type = "window";
      -				} else if ( obj.nodeType === 9 ) {
      -					type = "document";
      -				} else if ( obj.nodeType ) {
      -					type = "node";
      -				} else if (
      -
      -					// Native arrays
      -					toString.call( obj ) === "[object Array]" ||
      -
      -					// NodeList objects
      -					( typeof obj.length === "number" && obj.item !== undefined &&
      -					( obj.length ? obj.item( 0 ) === obj[ 0 ] : ( obj.item( 0 ) === null &&
      -					obj[ 0 ] === undefined ) ) )
      -				) {
      -					type = "array";
      -				} else if ( obj.constructor === Error.prototype.constructor ) {
      -					type = "error";
      -				} else {
      -					type = typeof obj;
      -				}
      -				return type;
      -			},
      -
      -			separator: function() {
      -				return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? "&#160;" : " ";
      -			},
      -
      -			// Extra can be a number, shortcut for increasing-calling-decreasing
      -			indent: function( extra ) {
      -				if ( !this.multiline ) {
      -					return "";
      -				}
      -				var chr = this.indentChar;
      -				if ( this.HTML ) {
      -					chr = chr.replace( /\t/g, "   " ).replace( / /g, "&#160;" );
      -				}
      -				return new Array( this.depth + ( extra || 0 ) ).join( chr );
      -			},
      -			up: function( a ) {
      -				this.depth += a || 1;
      -			},
      -			down: function( a ) {
      -				this.depth -= a || 1;
      -			},
      -			setParser: function( name, parser ) {
      -				this.parsers[ name ] = parser;
      -			},
      -
      -			// The next 3 are exposed so you can use them
      -			quote: quote,
      -			literal: literal,
      -			join: join,
      -			depth: 1,
      -			maxDepth: QUnit.config.maxDepth,
      -
      -			// This is the list of parsers, to modify them, use dump.setParser
      -			parsers: {
      -				window: "[Window]",
      -				document: "[Document]",
      -				error: function( error ) {
      -					return "Error(\"" + error.message + "\")";
      -				},
      -				unknown: "[Unknown]",
      -				"null": "null",
      -				"undefined": "undefined",
      -				"function": function( fn ) {
      -					var ret = "function",
      -
      -						// Functions never have name in IE
      -						name = "name" in fn ? fn.name : ( reName.exec( fn ) || [] )[ 1 ];
      -
      -					if ( name ) {
      -						ret += " " + name;
      -					}
      -					ret += "(";
      -
      -					ret = [ ret, dump.parse( fn, "functionArgs" ), "){" ].join( "" );
      -					return join( ret, dump.parse( fn, "functionCode" ), "}" );
      -				},
      -				array: array,
      -				nodelist: array,
      -				"arguments": array,
      -				object: function( map, stack ) {
      -					var keys, key, val, i, nonEnumerableProperties,
      -						ret = [];
      -
      -					if ( dump.maxDepth && dump.depth > dump.maxDepth ) {
      -						return "[object Object]";
      -					}
      -
      -					dump.up();
      -					keys = [];
      -					for ( key in map ) {
      -						keys.push( key );
      -					}
      -
      -					// Some properties are not always enumerable on Error objects.
      -					nonEnumerableProperties = [ "message", "name" ];
      -					for ( i in nonEnumerableProperties ) {
      -						key = nonEnumerableProperties[ i ];
      -						if ( key in map && inArray( key, keys ) < 0 ) {
      -							keys.push( key );
      -						}
      -					}
      -					keys.sort();
      -					for ( i = 0; i < keys.length; i++ ) {
      -						key = keys[ i ];
      -						val = map[ key ];
      -						ret.push( dump.parse( key, "key" ) + ": " +
      -							dump.parse( val, undefined, stack ) );
      -					}
      -					dump.down();
      -					return join( "{", ret, "}" );
      -				},
      -				node: function( node ) {
      -					var len, i, val,
      -						open = dump.HTML ? "&lt;" : "<",
      -						close = dump.HTML ? "&gt;" : ">",
      -						tag = node.nodeName.toLowerCase(),
      -						ret = open + tag,
      -						attrs = node.attributes;
      -
      -					if ( attrs ) {
      -						for ( i = 0, len = attrs.length; i < len; i++ ) {
      -							val = attrs[ i ].nodeValue;
      -
      -							// IE6 includes all attributes in .attributes, even ones not explicitly
      -							// set. Those have values like undefined, null, 0, false, "" or
      -							// "inherit".
      -							if ( val && val !== "inherit" ) {
      -								ret += " " + attrs[ i ].nodeName + "=" +
      -									dump.parse( val, "attribute" );
      -							}
      -						}
      -					}
      -					ret += close;
      -
      -					// Show content of TextNode or CDATASection
      -					if ( node.nodeType === 3 || node.nodeType === 4 ) {
      -						ret += node.nodeValue;
      -					}
      -
      -					return ret + open + "/" + tag + close;
      -				},
      -
      -				// Function calls it internally, it's the arguments part of the function
      -				functionArgs: function( fn ) {
      -					var args,
      -						l = fn.length;
      -
      -					if ( !l ) {
      -						return "";
      -					}
      -
      -					args = new Array( l );
      -					while ( l-- ) {
      -
      -						// 97 is 'a'
      -						args[ l ] = String.fromCharCode( 97 + l );
      -					}
      -					return " " + args.join( ", " ) + " ";
      -				},
      -
      -				// Object calls it internally, the key part of an item in a map
      -				key: quote,
      -
      -				// Function calls it internally, it's the content of the function
      -				functionCode: "[code]",
      -
      -				// Node calls it internally, it's a html attribute value
      -				attribute: quote,
      -				string: quote,
      -				date: quote,
      -				regexp: literal,
      -				number: literal,
      -				"boolean": literal
      -			},
      -
      -			// If true, entities are escaped ( <, >, \t, space and \n )
      -			HTML: false,
      -
      -			// Indentation unit
      -			indentChar: "  ",
      -
      -			// If true, items in a collection, are separated by a \n, else just a space.
      -			multiline: true
      -		};
      -
      -	return dump;
      -}() );
      -
      -// Back compat
      -QUnit.jsDump = QUnit.dump;
      -
      -// Deprecated
      -// Extend assert methods to QUnit for Backwards compatibility
      -( function() {
      -	var i,
      -		assertions = Assert.prototype;
      -
      -	function applyCurrent( current ) {
      -		return function() {
      -			var assert = new Assert( QUnit.config.current );
      -			current.apply( assert, arguments );
      -		};
      -	}
      -
      -	for ( i in assertions ) {
      -		QUnit[ i ] = applyCurrent( assertions[ i ] );
      -	}
      -}() );
      -
      -// For browser, export only select globals
      -if ( defined.document ) {
      -
      -	( function() {
      -		var i, l,
      -			keys = [
      -				"test",
      -				"module",
      -				"expect",
      -				"asyncTest",
      -				"start",
      -				"stop",
      -				"ok",
      -				"notOk",
      -				"equal",
      -				"notEqual",
      -				"propEqual",
      -				"notPropEqual",
      -				"deepEqual",
      -				"notDeepEqual",
      -				"strictEqual",
      -				"notStrictEqual",
      -				"throws",
      -				"raises"
      -			];
      -
      -		for ( i = 0, l = keys.length; i < l; i++ ) {
      -			window[ keys[ i ] ] = QUnit[ keys[ i ] ];
      -		}
      -	}() );
      -
      -	window.QUnit = QUnit;
      -}
      -
      -// For nodejs
      -if ( typeof module !== "undefined" && module && module.exports ) {
      -	module.exports = QUnit;
      -
      -	// For consistency with CommonJS environments' exports
      -	module.exports.QUnit = QUnit;
      -}
      -
      -// For CommonJS with exports, but without module.exports, like Rhino
      -if ( typeof exports !== "undefined" && exports ) {
      -	exports.QUnit = QUnit;
      -}
      -
      -if ( typeof define === "function" && define.amd ) {
      -	define( function() {
      -		return QUnit;
      -	} );
      -	QUnit.config.autostart = false;
      -}
      -
      -// Get a reference to the global object, like window in browsers
      -}( ( function() {
      -	return this;
      -}() ) ) );
      -
      -( function() {
      -
      -// Only interact with URLs via window.location
      -var location = typeof window !== "undefined" && window.location;
      -if ( !location ) {
      -	return;
      -}
      -
      -var urlParams = getUrlParams();
      -
      -QUnit.urlParams = urlParams;
      -
      -// Match module/test by inclusion in an array
      -QUnit.config.moduleId = [].concat( urlParams.moduleId || [] );
      -QUnit.config.testId = [].concat( urlParams.testId || [] );
      -
      -// Exact case-insensitive match of the module name
      -QUnit.config.module = urlParams.module;
      -
      -// Regular expression or case-insenstive substring match against "moduleName: testName"
      -QUnit.config.filter = urlParams.filter;
      -
      -// Test order randomization
      -if ( urlParams.seed === true ) {
      -
      -	// Generate a random seed if the option is specified without a value
      -	QUnit.config.seed = Math.random().toString( 36 ).slice( 2 );
      -} else if ( urlParams.seed ) {
      -	QUnit.config.seed = urlParams.seed;
      -}
      -
      -// Add URL-parameter-mapped config values with UI form rendering data
      -QUnit.config.urlConfig.push(
      -	{
      -		id: "hidepassed",
      -		label: "Hide passed tests",
      -		tooltip: "Only show tests and assertions that fail. Stored as query-strings."
      -	},
      -	{
      -		id: "noglobals",
      -		label: "Check for Globals",
      -		tooltip: "Enabling this will test if any test introduces new properties on the " +
      -			"global object (`window` in Browsers). Stored as query-strings."
      -	},
      -	{
      -		id: "notrycatch",
      -		label: "No try-catch",
      -		tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging " +
      -			"exceptions in IE reasonable. Stored as query-strings."
      -	}
      -);
      -
      -QUnit.begin( function() {
      -	var i, option,
      -		urlConfig = QUnit.config.urlConfig;
      -
      -	for ( i = 0; i < urlConfig.length; i++ ) {
      -
      -		// Options can be either strings or objects with nonempty "id" properties
      -		option = QUnit.config.urlConfig[ i ];
      -		if ( typeof option !== "string" ) {
      -			option = option.id;
      -		}
      -
      -		if ( QUnit.config[ option ] === undefined ) {
      -			QUnit.config[ option ] = urlParams[ option ];
      -		}
      -	}
      -} );
      -
      -function getUrlParams() {
      -	var i, param, name, value;
      -	var urlParams = {};
      -	var params = location.search.slice( 1 ).split( "&" );
      -	var length = params.length;
      -
      -	for ( i = 0; i < length; i++ ) {
      -		if ( params[ i ] ) {
      -			param = params[ i ].split( "=" );
      -			name = decodeURIComponent( param[ 0 ] );
      -
      -			// Allow just a key to turn on a flag, e.g., test.html?noglobals
      -			value = param.length === 1 ||
      -				decodeURIComponent( param.slice( 1 ).join( "=" ) ) ;
      -			if ( urlParams[ name ] ) {
      -				urlParams[ name ] = [].concat( urlParams[ name ], value );
      -			} else {
      -				urlParams[ name ] = value;
      -			}
      -		}
      -	}
      -
      -	return urlParams;
      -}
      -
      -// Don't load the HTML Reporter on non-browser environments
      -if ( typeof window === "undefined" || !window.document ) {
      -	return;
      -}
      -
      -// Deprecated QUnit.init - Ref #530
      -// Re-initialize the configuration options
      -QUnit.init = function() {
      -	var config = QUnit.config;
      -
      -	config.stats = { all: 0, bad: 0 };
      -	config.moduleStats = { all: 0, bad: 0 };
      -	config.started = 0;
      -	config.updateRate = 1000;
      -	config.blocking = false;
      -	config.autostart = true;
      -	config.autorun = false;
      -	config.filter = "";
      -	config.queue = [];
      -
      -	appendInterface();
      -};
      -
      -var config = QUnit.config,
      -	document = window.document,
      -	collapseNext = false,
      -	hasOwn = Object.prototype.hasOwnProperty,
      -	unfilteredUrl = setUrl( { filter: undefined, module: undefined,
      -		moduleId: undefined, testId: undefined } ),
      -	defined = {
      -		sessionStorage: ( function() {
      -			var x = "qunit-test-string";
      -			try {
      -				sessionStorage.setItem( x, x );
      -				sessionStorage.removeItem( x );
      -				return true;
      -			} catch ( e ) {
      -				return false;
      -			}
      -		}() )
      -	},
      -	modulesList = [];
      -
      -/**
      -* Escape text for attribute or text content.
      -*/
      -function escapeText( s ) {
      -	if ( !s ) {
      -		return "";
      -	}
      -	s = s + "";
      -
      -	// Both single quotes and double quotes (for attributes)
      -	return s.replace( /['"<>&]/g, function( s ) {
      -		switch ( s ) {
      -		case "'":
      -			return "&#039;";
      -		case "\"":
      -			return "&quot;";
      -		case "<":
      -			return "&lt;";
      -		case ">":
      -			return "&gt;";
      -		case "&":
      -			return "&amp;";
      -		}
      -	} );
      -}
      -
      -/**
      - * @param {HTMLElement} elem
      - * @param {string} type
      - * @param {Function} fn
      - */
      -function addEvent( elem, type, fn ) {
      -	if ( elem.addEventListener ) {
      -
      -		// Standards-based browsers
      -		elem.addEventListener( type, fn, false );
      -	} else if ( elem.attachEvent ) {
      -
      -		// Support: IE <9
      -		elem.attachEvent( "on" + type, function() {
      -			var event = window.event;
      -			if ( !event.target ) {
      -				event.target = event.srcElement || document;
      -			}
      -
      -			fn.call( elem, event );
      -		} );
      -	}
      -}
      -
      -/**
      - * @param {Array|NodeList} elems
      - * @param {string} type
      - * @param {Function} fn
      - */
      -function addEvents( elems, type, fn ) {
      -	var i = elems.length;
      -	while ( i-- ) {
      -		addEvent( elems[ i ], type, fn );
      -	}
      -}
      -
      -function hasClass( elem, name ) {
      -	return ( " " + elem.className + " " ).indexOf( " " + name + " " ) >= 0;
      -}
      -
      -function addClass( elem, name ) {
      -	if ( !hasClass( elem, name ) ) {
      -		elem.className += ( elem.className ? " " : "" ) + name;
      -	}
      -}
      -
      -function toggleClass( elem, name, force ) {
      -	if ( force || typeof force === "undefined" && !hasClass( elem, name ) ) {
      -		addClass( elem, name );
      -	} else {
      -		removeClass( elem, name );
      -	}
      -}
      -
      -function removeClass( elem, name ) {
      -	var set = " " + elem.className + " ";
      -
      -	// Class name may appear multiple times
      -	while ( set.indexOf( " " + name + " " ) >= 0 ) {
      -		set = set.replace( " " + name + " ", " " );
      -	}
      -
      -	// Trim for prettiness
      -	elem.className = typeof set.trim === "function" ? set.trim() : set.replace( /^\s+|\s+$/g, "" );
      -}
      -
      -function id( name ) {
      -	return document.getElementById && document.getElementById( name );
      -}
      -
      -function getUrlConfigHtml() {
      -	var i, j, val,
      -		escaped, escapedTooltip,
      -		selection = false,
      -		urlConfig = config.urlConfig,
      -		urlConfigHtml = "";
      -
      -	for ( i = 0; i < urlConfig.length; i++ ) {
      -
      -		// Options can be either strings or objects with nonempty "id" properties
      -		val = config.urlConfig[ i ];
      -		if ( typeof val === "string" ) {
      -			val = {
      -				id: val,
      -				label: val
      -			};
      -		}
      -
      -		escaped = escapeText( val.id );
      -		escapedTooltip = escapeText( val.tooltip );
      -
      -		if ( !val.value || typeof val.value === "string" ) {
      -			urlConfigHtml += "<input id='qunit-urlconfig-" + escaped +
      -				"' name='" + escaped + "' type='checkbox'" +
      -				( val.value ? " value='" + escapeText( val.value ) + "'" : "" ) +
      -				( config[ val.id ] ? " checked='checked'" : "" ) +
      -				" title='" + escapedTooltip + "' /><label for='qunit-urlconfig-" + escaped +
      -				"' title='" + escapedTooltip + "'>" + val.label + "</label>";
      -		} else {
      -			urlConfigHtml += "<label for='qunit-urlconfig-" + escaped +
      -				"' title='" + escapedTooltip + "'>" + val.label +
      -				": </label><select id='qunit-urlconfig-" + escaped +
      -				"' name='" + escaped + "' title='" + escapedTooltip + "'><option></option>";
      -
      -			if ( QUnit.is( "array", val.value ) ) {
      -				for ( j = 0; j < val.value.length; j++ ) {
      -					escaped = escapeText( val.value[ j ] );
      -					urlConfigHtml += "<option value='" + escaped + "'" +
      -						( config[ val.id ] === val.value[ j ] ?
      -							( selection = true ) && " selected='selected'" : "" ) +
      -						">" + escaped + "</option>";
      -				}
      -			} else {
      -				for ( j in val.value ) {
      -					if ( hasOwn.call( val.value, j ) ) {
      -						urlConfigHtml += "<option value='" + escapeText( j ) + "'" +
      -							( config[ val.id ] === j ?
      -								( selection = true ) && " selected='selected'" : "" ) +
      -							">" + escapeText( val.value[ j ] ) + "</option>";
      -					}
      -				}
      -			}
      -			if ( config[ val.id ] && !selection ) {
      -				escaped = escapeText( config[ val.id ] );
      -				urlConfigHtml += "<option value='" + escaped +
      -					"' selected='selected' disabled='disabled'>" + escaped + "</option>";
      -			}
      -			urlConfigHtml += "</select>";
      -		}
      -	}
      -
      -	return urlConfigHtml;
      -}
      -
      -// Handle "click" events on toolbar checkboxes and "change" for select menus.
      -// Updates the URL with the new state of `config.urlConfig` values.
      -function toolbarChanged() {
      -	var updatedUrl, value, tests,
      -		field = this,
      -		params = {};
      -
      -	// Detect if field is a select menu or a checkbox
      -	if ( "selectedIndex" in field ) {
      -		value = field.options[ field.selectedIndex ].value || undefined;
      -	} else {
      -		value = field.checked ? ( field.defaultValue || true ) : undefined;
      -	}
      -
      -	params[ field.name ] = value;
      -	updatedUrl = setUrl( params );
      -
      -	// Check if we can apply the change without a page refresh
      -	if ( "hidepassed" === field.name && "replaceState" in window.history ) {
      -		QUnit.urlParams[ field.name ] = value;
      -		config[ field.name ] = value || false;
      -		tests = id( "qunit-tests" );
      -		if ( tests ) {
      -			toggleClass( tests, "hidepass", value || false );
      -		}
      -		window.history.replaceState( null, "", updatedUrl );
      -	} else {
      -		window.location = updatedUrl;
      -	}
      -}
      -
      -function setUrl( params ) {
      -	var key, arrValue, i,
      -		querystring = "?",
      -		location = window.location;
      -
      -	params = QUnit.extend( QUnit.extend( {}, QUnit.urlParams ), params );
      -
      -	for ( key in params ) {
      -
      -		// Skip inherited or undefined properties
      -		if ( hasOwn.call( params, key ) && params[ key ] !== undefined ) {
      -
      -			// Output a parameter for each value of this key (but usually just one)
      -			arrValue = [].concat( params[ key ] );
      -			for ( i = 0; i < arrValue.length; i++ ) {
      -				querystring += encodeURIComponent( key );
      -				if ( arrValue[ i ] !== true ) {
      -					querystring += "=" + encodeURIComponent( arrValue[ i ] );
      -				}
      -				querystring += "&";
      -			}
      -		}
      -	}
      -	return location.protocol + "//" + location.host +
      -		location.pathname + querystring.slice( 0, -1 );
      -}
      -
      -function applyUrlParams() {
      -	var selectedModule,
      -		modulesList = id( "qunit-modulefilter" ),
      -		filter = id( "qunit-filter-input" ).value;
      -
      -	selectedModule = modulesList ?
      -		decodeURIComponent( modulesList.options[ modulesList.selectedIndex ].value ) :
      -		undefined;
      -
      -	window.location = setUrl( {
      -		module: ( selectedModule === "" ) ? undefined : selectedModule,
      -		filter: ( filter === "" ) ? undefined : filter,
      -
      -		// Remove moduleId and testId filters
      -		moduleId: undefined,
      -		testId: undefined
      -	} );
      -}
      -
      -function toolbarUrlConfigContainer() {
      -	var urlConfigContainer = document.createElement( "span" );
      -
      -	urlConfigContainer.innerHTML = getUrlConfigHtml();
      -	addClass( urlConfigContainer, "qunit-url-config" );
      -
      -	// For oldIE support:
      -	// * Add handlers to the individual elements instead of the container
      -	// * Use "click" instead of "change" for checkboxes
      -	addEvents( urlConfigContainer.getElementsByTagName( "input" ), "click", toolbarChanged );
      -	addEvents( urlConfigContainer.getElementsByTagName( "select" ), "change", toolbarChanged );
      -
      -	return urlConfigContainer;
      -}
      -
      -function toolbarLooseFilter() {
      -	var filter = document.createElement( "form" ),
      -		label = document.createElement( "label" ),
      -		input = document.createElement( "input" ),
      -		button = document.createElement( "button" );
      -
      -	addClass( filter, "qunit-filter" );
      -
      -	label.innerHTML = "Filter: ";
      -
      -	input.type = "text";
      -	input.value = config.filter || "";
      -	input.name = "filter";
      -	input.id = "qunit-filter-input";
      -
      -	button.innerHTML = "Go";
      -
      -	label.appendChild( input );
      -
      -	filter.appendChild( label );
      -	filter.appendChild( button );
      -	addEvent( filter, "submit", function( ev ) {
      -		applyUrlParams();
      -
      -		if ( ev && ev.preventDefault ) {
      -			ev.preventDefault();
      -		}
      -
      -		return false;
      -	} );
      -
      -	return filter;
      -}
      -
      -function toolbarModuleFilterHtml() {
      -	var i,
      -		moduleFilterHtml = "";
      -
      -	if ( !modulesList.length ) {
      -		return false;
      -	}
      -
      -	moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label>" +
      -		"<select id='qunit-modulefilter' name='modulefilter'><option value='' " +
      -		( QUnit.urlParams.module === undefined ? "selected='selected'" : "" ) +
      -		">< All Modules ></option>";
      -
      -	for ( i = 0; i < modulesList.length; i++ ) {
      -		moduleFilterHtml += "<option value='" +
      -			escapeText( encodeURIComponent( modulesList[ i ] ) ) + "' " +
      -			( QUnit.urlParams.module === modulesList[ i ] ? "selected='selected'" : "" ) +
      -			">" + escapeText( modulesList[ i ] ) + "</option>";
      -	}
      -	moduleFilterHtml += "</select>";
      -
      -	return moduleFilterHtml;
      -}
      -
      -function toolbarModuleFilter() {
      -	var toolbar = id( "qunit-testrunner-toolbar" ),
      -		moduleFilter = document.createElement( "span" ),
      -		moduleFilterHtml = toolbarModuleFilterHtml();
      -
      -	if ( !toolbar || !moduleFilterHtml ) {
      -		return false;
      -	}
      -
      -	moduleFilter.setAttribute( "id", "qunit-modulefilter-container" );
      -	moduleFilter.innerHTML = moduleFilterHtml;
      -
      -	addEvent( moduleFilter.lastChild, "change", applyUrlParams );
      -
      -	toolbar.appendChild( moduleFilter );
      -}
      -
      -function appendToolbar() {
      -	var toolbar = id( "qunit-testrunner-toolbar" );
      -
      -	if ( toolbar ) {
      -		toolbar.appendChild( toolbarUrlConfigContainer() );
      -		toolbar.appendChild( toolbarLooseFilter() );
      -		toolbarModuleFilter();
      -	}
      -}
      -
      -function appendHeader() {
      -	var header = id( "qunit-header" );
      -
      -	if ( header ) {
      -		header.innerHTML = "<a href='" + escapeText( unfilteredUrl ) + "'>" + header.innerHTML +
      -			"</a> ";
      -	}
      -}
      -
      -function appendBanner() {
      -	var banner = id( "qunit-banner" );
      -
      -	if ( banner ) {
      -		banner.className = "";
      -	}
      -}
      -
      -function appendTestResults() {
      -	var tests = id( "qunit-tests" ),
      -		result = id( "qunit-testresult" );
      -
      -	if ( result ) {
      -		result.parentNode.removeChild( result );
      -	}
      -
      -	if ( tests ) {
      -		tests.innerHTML = "";
      -		result = document.createElement( "p" );
      -		result.id = "qunit-testresult";
      -		result.className = "result";
      -		tests.parentNode.insertBefore( result, tests );
      -		result.innerHTML = "Running...<br />&#160;";
      -	}
      -}
      -
      -function storeFixture() {
      -	var fixture = id( "qunit-fixture" );
      -	if ( fixture ) {
      -		config.fixture = fixture.innerHTML;
      -	}
      -}
      -
      -function appendFilteredTest() {
      -	var testId = QUnit.config.testId;
      -	if ( !testId || testId.length <= 0 ) {
      -		return "";
      -	}
      -	return "<div id='qunit-filteredTest'>Rerunning selected tests: " +
      -		escapeText( testId.join( ", " ) ) +
      -		" <a id='qunit-clearFilter' href='" +
      -		escapeText( unfilteredUrl ) +
      -		"'>Run all tests</a></div>";
      -}
      -
      -function appendUserAgent() {
      -	var userAgent = id( "qunit-userAgent" );
      -
      -	if ( userAgent ) {
      -		userAgent.innerHTML = "";
      -		userAgent.appendChild(
      -			document.createTextNode(
      -				"QUnit " + QUnit.version + "; " + navigator.userAgent
      -			)
      -		);
      -	}
      -}
      -
      -function appendInterface() {
      -	var qunit = id( "qunit" );
      -
      -	if ( qunit ) {
      -		qunit.innerHTML =
      -			"<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" +
      -			"<h2 id='qunit-banner'></h2>" +
      -			"<div id='qunit-testrunner-toolbar'></div>" +
      -			appendFilteredTest() +
      -			"<h2 id='qunit-userAgent'></h2>" +
      -			"<ol id='qunit-tests'></ol>";
      -	}
      -
      -	appendHeader();
      -	appendBanner();
      -	appendTestResults();
      -	appendUserAgent();
      -	appendToolbar();
      -}
      -
      -function appendTestsList( modules ) {
      -	var i, l, x, z, test, moduleObj;
      -
      -	for ( i = 0, l = modules.length; i < l; i++ ) {
      -		moduleObj = modules[ i ];
      -
      -		for ( x = 0, z = moduleObj.tests.length; x < z; x++ ) {
      -			test = moduleObj.tests[ x ];
      -
      -			appendTest( test.name, test.testId, moduleObj.name );
      -		}
      -	}
      -}
      -
      -function appendTest( name, testId, moduleName ) {
      -	var title, rerunTrigger, testBlock, assertList,
      -		tests = id( "qunit-tests" );
      -
      -	if ( !tests ) {
      -		return;
      -	}
      -
      -	title = document.createElement( "strong" );
      -	title.innerHTML = getNameHtml( name, moduleName );
      -
      -	rerunTrigger = document.createElement( "a" );
      -	rerunTrigger.innerHTML = "Rerun";
      -	rerunTrigger.href = setUrl( { testId: testId } );
      -
      -	testBlock = document.createElement( "li" );
      -	testBlock.appendChild( title );
      -	testBlock.appendChild( rerunTrigger );
      -	testBlock.id = "qunit-test-output-" + testId;
      -
      -	assertList = document.createElement( "ol" );
      -	assertList.className = "qunit-assert-list";
      -
      -	testBlock.appendChild( assertList );
      -
      -	tests.appendChild( testBlock );
      -}
      -
      -// HTML Reporter initialization and load
      -QUnit.begin( function( details ) {
      -	var i, moduleObj, tests;
      -
      -	// Sort modules by name for the picker
      -	for ( i = 0; i < details.modules.length; i++ ) {
      -		moduleObj = details.modules[ i ];
      -		if ( moduleObj.name ) {
      -			modulesList.push( moduleObj.name );
      -		}
      -	}
      -	modulesList.sort( function( a, b ) {
      -		return a.localeCompare( b );
      -	} );
      -
      -	// Capture fixture HTML from the page
      -	storeFixture();
      -
      -	// Initialize QUnit elements
      -	appendInterface();
      -	appendTestsList( details.modules );
      -	tests = id( "qunit-tests" );
      -	if ( tests && config.hidepassed ) {
      -		addClass( tests, "hidepass" );
      -	}
      -} );
      -
      -QUnit.done( function( details ) {
      -	var i, key,
      -		banner = id( "qunit-banner" ),
      -		tests = id( "qunit-tests" ),
      -		html = [
      -			"Tests completed in ",
      -			details.runtime,
      -			" milliseconds.<br />",
      -			"<span class='passed'>",
      -			details.passed,
      -			"</span> assertions of <span class='total'>",
      -			details.total,
      -			"</span> passed, <span class='failed'>",
      -			details.failed,
      -			"</span> failed."
      -		].join( "" );
      -
      -	if ( banner ) {
      -		banner.className = details.failed ? "qunit-fail" : "qunit-pass";
      -	}
      -
      -	if ( tests ) {
      -		id( "qunit-testresult" ).innerHTML = html;
      -	}
      -
      -	if ( config.altertitle && document.title ) {
      -
      -		// Show ✖ for good, ✔ for bad suite result in title
      -		// use escape sequences in case file gets loaded with non-utf-8-charset
      -		document.title = [
      -			( details.failed ? "\u2716" : "\u2714" ),
      -			document.title.replace( /^[\u2714\u2716] /i, "" )
      -		].join( " " );
      -	}
      -
      -	// Clear own sessionStorage items if all tests passed
      -	if ( config.reorder && defined.sessionStorage && details.failed === 0 ) {
      -		for ( i = 0; i < sessionStorage.length; i++ ) {
      -			key = sessionStorage.key( i++ );
      -			if ( key.indexOf( "qunit-test-" ) === 0 ) {
      -				sessionStorage.removeItem( key );
      -			}
      -		}
      -	}
      -
      -	// Scroll back to top to show results
      -	if ( config.scrolltop && window.scrollTo ) {
      -		window.scrollTo( 0, 0 );
      -	}
      -} );
      -
      -function getNameHtml( name, module ) {
      -	var nameHtml = "";
      -
      -	if ( module ) {
      -		nameHtml = "<span class='module-name'>" + escapeText( module ) + "</span>: ";
      -	}
      -
      -	nameHtml += "<span class='test-name'>" + escapeText( name ) + "</span>";
      -
      -	return nameHtml;
      -}
      -
      -QUnit.testStart( function( details ) {
      -	var running, testBlock, bad;
      -
      -	testBlock = id( "qunit-test-output-" + details.testId );
      -	if ( testBlock ) {
      -		testBlock.className = "running";
      -	} else {
      -
      -		// Report later registered tests
      -		appendTest( details.name, details.testId, details.module );
      -	}
      -
      -	running = id( "qunit-testresult" );
      -	if ( running ) {
      -		bad = QUnit.config.reorder && defined.sessionStorage &&
      -			+sessionStorage.getItem( "qunit-test-" + details.module + "-" + details.name );
      -
      -		running.innerHTML = ( bad ?
      -			"Rerunning previously failed test: <br />" :
      -			"Running: <br />" ) +
      -			getNameHtml( details.name, details.module );
      -	}
      -
      -} );
      -
      -function stripHtml( string ) {
      -
      -	// Strip tags, html entity and whitespaces
      -	return string.replace( /<\/?[^>]+(>|$)/g, "" ).replace( /\&quot;/g, "" ).replace( /\s+/g, "" );
      -}
      -
      -QUnit.log( function( details ) {
      -	var assertList, assertLi,
      -		message, expected, actual, diff,
      -		showDiff = false,
      -		testItem = id( "qunit-test-output-" + details.testId );
      -
      -	if ( !testItem ) {
      -		return;
      -	}
      -
      -	message = escapeText( details.message ) || ( details.result ? "okay" : "failed" );
      -	message = "<span class='test-message'>" + message + "</span>";
      -	message += "<span class='runtime'>@ " + details.runtime + " ms</span>";
      -
      -	// The pushFailure doesn't provide details.expected
      -	// when it calls, it's implicit to also not show expected and diff stuff
      -	// Also, we need to check details.expected existence, as it can exist and be undefined
      -	if ( !details.result && hasOwn.call( details, "expected" ) ) {
      -		if ( details.negative ) {
      -			expected = "NOT " + QUnit.dump.parse( details.expected );
      -		} else {
      -			expected = QUnit.dump.parse( details.expected );
      -		}
      -
      -		actual = QUnit.dump.parse( details.actual );
      -		message += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" +
      -			escapeText( expected ) +
      -			"</pre></td></tr>";
      -
      -		if ( actual !== expected ) {
      -
      -			message += "<tr class='test-actual'><th>Result: </th><td><pre>" +
      -				escapeText( actual ) + "</pre></td></tr>";
      -
      -			// Don't show diff if actual or expected are booleans
      -			if ( !( /^(true|false)$/.test( actual ) ) &&
      -					!( /^(true|false)$/.test( expected ) ) ) {
      -				diff = QUnit.diff( expected, actual );
      -				showDiff = stripHtml( diff ).length !==
      -					stripHtml( expected ).length +
      -					stripHtml( actual ).length;
      -			}
      -
      -			// Don't show diff if expected and actual are totally different
      -			if ( showDiff ) {
      -				message += "<tr class='test-diff'><th>Diff: </th><td><pre>" +
      -					diff + "</pre></td></tr>";
      -			}
      -		} else if ( expected.indexOf( "[object Array]" ) !== -1 ||
      -				expected.indexOf( "[object Object]" ) !== -1 ) {
      -			message += "<tr class='test-message'><th>Message: </th><td>" +
      -				"Diff suppressed as the depth of object is more than current max depth (" +
      -				QUnit.config.maxDepth + ").<p>Hint: Use <code>QUnit.dump.maxDepth</code> to " +
      -				" run with a higher max depth or <a href='" +
      -				escapeText( setUrl( { maxDepth: -1 } ) ) + "'>" +
      -				"Rerun</a> without max depth.</p></td></tr>";
      -		} else {
      -			message += "<tr class='test-message'><th>Message: </th><td>" +
      -				"Diff suppressed as the expected and actual results have an equivalent" +
      -				" serialization</td></tr>";
      -		}
      -
      -		if ( details.source ) {
      -			message += "<tr class='test-source'><th>Source: </th><td><pre>" +
      -				escapeText( details.source ) + "</pre></td></tr>";
      -		}
      -
      -		message += "</table>";
      -
      -	// This occurs when pushFailure is set and we have an extracted stack trace
      -	} else if ( !details.result && details.source ) {
      -		message += "<table>" +
      -			"<tr class='test-source'><th>Source: </th><td><pre>" +
      -			escapeText( details.source ) + "</pre></td></tr>" +
      -			"</table>";
      -	}
      -
      -	assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
      -
      -	assertLi = document.createElement( "li" );
      -	assertLi.className = details.result ? "pass" : "fail";
      -	assertLi.innerHTML = message;
      -	assertList.appendChild( assertLi );
      -} );
      -
      -QUnit.testDone( function( details ) {
      -	var testTitle, time, testItem, assertList,
      -		good, bad, testCounts, skipped, sourceName,
      -		tests = id( "qunit-tests" );
      -
      -	if ( !tests ) {
      -		return;
      -	}
      -
      -	testItem = id( "qunit-test-output-" + details.testId );
      -
      -	assertList = testItem.getElementsByTagName( "ol" )[ 0 ];
      -
      -	good = details.passed;
      -	bad = details.failed;
      -
      -	// Store result when possible
      -	if ( config.reorder && defined.sessionStorage ) {
      -		if ( bad ) {
      -			sessionStorage.setItem( "qunit-test-" + details.module + "-" + details.name, bad );
      -		} else {
      -			sessionStorage.removeItem( "qunit-test-" + details.module + "-" + details.name );
      -		}
      -	}
      -
      -	if ( bad === 0 ) {
      -
      -		// Collapse the passing tests
      -		addClass( assertList, "qunit-collapsed" );
      -	} else if ( bad && config.collapse && !collapseNext ) {
      -
      -		// Skip collapsing the first failing test
      -		collapseNext = true;
      -	} else {
      -
      -		// Collapse remaining tests
      -		addClass( assertList, "qunit-collapsed" );
      -	}
      -
      -	// The testItem.firstChild is the test name
      -	testTitle = testItem.firstChild;
      -
      -	testCounts = bad ?
      -		"<b class='failed'>" + bad + "</b>, " + "<b class='passed'>" + good + "</b>, " :
      -		"";
      -
      -	testTitle.innerHTML += " <b class='counts'>(" + testCounts +
      -		details.assertions.length + ")</b>";
      -
      -	if ( details.skipped ) {
      -		testItem.className = "skipped";
      -		skipped = document.createElement( "em" );
      -		skipped.className = "qunit-skipped-label";
      -		skipped.innerHTML = "skipped";
      -		testItem.insertBefore( skipped, testTitle );
      -	} else {
      -		addEvent( testTitle, "click", function() {
      -			toggleClass( assertList, "qunit-collapsed" );
      -		} );
      -
      -		testItem.className = bad ? "fail" : "pass";
      -
      -		time = document.createElement( "span" );
      -		time.className = "runtime";
      -		time.innerHTML = details.runtime + " ms";
      -		testItem.insertBefore( time, assertList );
      -	}
      -
      -	// Show the source of the test when showing assertions
      -	if ( details.source ) {
      -		sourceName = document.createElement( "p" );
      -		sourceName.innerHTML = "<strong>Source: </strong>" + details.source;
      -		addClass( sourceName, "qunit-source" );
      -		if ( bad === 0 ) {
      -			addClass( sourceName, "qunit-collapsed" );
      -		}
      -		addEvent( testTitle, "click", function() {
      -			toggleClass( sourceName, "qunit-collapsed" );
      -		} );
      -		testItem.appendChild( sourceName );
      -	}
      -} );
      -
      -// Avoid readyState issue with phantomjs
      -// Ref: #818
      -var notPhantom = ( function( p ) {
      -	return !( p && p.version && p.version.major > 0 );
      -} )( window.phantom );
      -
      -if ( notPhantom && document.readyState === "complete" ) {
      -	QUnit.load();
      -} else {
      -	addEvent( window, "load", QUnit.load );
      -}
      -
      -/*
      - * This file is a modified version of google-diff-match-patch's JavaScript implementation
      - * (https://code.google.com/p/google-diff-match-patch/source/browse/trunk/javascript/diff_match_patch_uncompressed.js),
      - * modifications are licensed as more fully set forth in LICENSE.txt.
      - *
      - * The original source of google-diff-match-patch is attributable and licensed as follows:
      - *
      - * Copyright 2006 Google Inc.
      - * https://code.google.com/p/google-diff-match-patch/
      - *
      - * Licensed under the Apache License, Version 2.0 (the "License");
      - * you may not use this file except in compliance with the License.
      - * You may obtain a copy of the License at
      - *
      - * https://www.apache.org/licenses/LICENSE-2.0
      - *
      - * Unless required by applicable law or agreed to in writing, software
      - * distributed under the License is distributed on an "AS IS" BASIS,
      - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      - * See the License for the specific language governing permissions and
      - * limitations under the License.
      - *
      - * More Info:
      - *  https://code.google.com/p/google-diff-match-patch/
      - *
      - * Usage: QUnit.diff(expected, actual)
      - *
      - */
      -QUnit.diff = ( function() {
      -	function DiffMatchPatch() {
      -	}
      -
      -	//  DIFF FUNCTIONS
      -
      -	/**
      -	 * The data structure representing a diff is an array of tuples:
      -	 * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]
      -	 * which means: delete 'Hello', add 'Goodbye' and keep ' world.'
      -	 */
      -	var DIFF_DELETE = -1,
      -		DIFF_INSERT = 1,
      -		DIFF_EQUAL = 0;
      -
      -	/**
      -	 * Find the differences between two texts.  Simplifies the problem by stripping
      -	 * any common prefix or suffix off the texts before diffing.
      -	 * @param {string} text1 Old string to be diffed.
      -	 * @param {string} text2 New string to be diffed.
      -	 * @param {boolean=} optChecklines Optional speedup flag. If present and false,
      -	 *     then don't run a line-level diff first to identify the changed areas.
      -	 *     Defaults to true, which does a faster, slightly less optimal diff.
      -	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
      -	 */
      -	DiffMatchPatch.prototype.DiffMain = function( text1, text2, optChecklines ) {
      -		var deadline, checklines, commonlength,
      -			commonprefix, commonsuffix, diffs;
      -
      -		// The diff must be complete in up to 1 second.
      -		deadline = ( new Date() ).getTime() + 1000;
      -
      -		// Check for null inputs.
      -		if ( text1 === null || text2 === null ) {
      -			throw new Error( "Null input. (DiffMain)" );
      -		}
      -
      -		// Check for equality (speedup).
      -		if ( text1 === text2 ) {
      -			if ( text1 ) {
      -				return [
      -					[ DIFF_EQUAL, text1 ]
      -				];
      -			}
      -			return [];
      -		}
      -
      -		if ( typeof optChecklines === "undefined" ) {
      -			optChecklines = true;
      -		}
      -
      -		checklines = optChecklines;
      -
      -		// Trim off common prefix (speedup).
      -		commonlength = this.diffCommonPrefix( text1, text2 );
      -		commonprefix = text1.substring( 0, commonlength );
      -		text1 = text1.substring( commonlength );
      -		text2 = text2.substring( commonlength );
      -
      -		// Trim off common suffix (speedup).
      -		commonlength = this.diffCommonSuffix( text1, text2 );
      -		commonsuffix = text1.substring( text1.length - commonlength );
      -		text1 = text1.substring( 0, text1.length - commonlength );
      -		text2 = text2.substring( 0, text2.length - commonlength );
      -
      -		// Compute the diff on the middle block.
      -		diffs = this.diffCompute( text1, text2, checklines, deadline );
      -
      -		// Restore the prefix and suffix.
      -		if ( commonprefix ) {
      -			diffs.unshift( [ DIFF_EQUAL, commonprefix ] );
      -		}
      -		if ( commonsuffix ) {
      -			diffs.push( [ DIFF_EQUAL, commonsuffix ] );
      -		}
      -		this.diffCleanupMerge( diffs );
      -		return diffs;
      -	};
      -
      -	/**
      -	 * Reduce the number of edits by eliminating operationally trivial equalities.
      -	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
      -	 */
      -	DiffMatchPatch.prototype.diffCleanupEfficiency = function( diffs ) {
      -		var changes, equalities, equalitiesLength, lastequality,
      -			pointer, preIns, preDel, postIns, postDel;
      -		changes = false;
      -		equalities = []; // Stack of indices where equalities are found.
      -		equalitiesLength = 0; // Keeping our own length var is faster in JS.
      -		/** @type {?string} */
      -		lastequality = null;
      -
      -		// Always equal to diffs[equalities[equalitiesLength - 1]][1]
      -		pointer = 0; // Index of current position.
      -
      -		// Is there an insertion operation before the last equality.
      -		preIns = false;
      -
      -		// Is there a deletion operation before the last equality.
      -		preDel = false;
      -
      -		// Is there an insertion operation after the last equality.
      -		postIns = false;
      -
      -		// Is there a deletion operation after the last equality.
      -		postDel = false;
      -		while ( pointer < diffs.length ) {
      -
      -			// Equality found.
      -			if ( diffs[ pointer ][ 0 ] === DIFF_EQUAL ) {
      -				if ( diffs[ pointer ][ 1 ].length < 4 && ( postIns || postDel ) ) {
      -
      -					// Candidate found.
      -					equalities[ equalitiesLength++ ] = pointer;
      -					preIns = postIns;
      -					preDel = postDel;
      -					lastequality = diffs[ pointer ][ 1 ];
      -				} else {
      -
      -					// Not a candidate, and can never become one.
      -					equalitiesLength = 0;
      -					lastequality = null;
      -				}
      -				postIns = postDel = false;
      -
      -			// An insertion or deletion.
      -			} else {
      -
      -				if ( diffs[ pointer ][ 0 ] === DIFF_DELETE ) {
      -					postDel = true;
      -				} else {
      -					postIns = true;
      -				}
      -
      -				/*
      -				 * Five types to be split:
      -				 * <ins>A</ins><del>B</del>XY<ins>C</ins><del>D</del>
      -				 * <ins>A</ins>X<ins>C</ins><del>D</del>
      -				 * <ins>A</ins><del>B</del>X<ins>C</ins>
      -				 * <ins>A</del>X<ins>C</ins><del>D</del>
      -				 * <ins>A</ins><del>B</del>X<del>C</del>
      -				 */
      -				if ( lastequality && ( ( preIns && preDel && postIns && postDel ) ||
      -						( ( lastequality.length < 2 ) &&
      -						( preIns + preDel + postIns + postDel ) === 3 ) ) ) {
      -
      -					// Duplicate record.
      -					diffs.splice(
      -						equalities[ equalitiesLength - 1 ],
      -						0,
      -						[ DIFF_DELETE, lastequality ]
      -					);
      -
      -					// Change second copy to insert.
      -					diffs[ equalities[ equalitiesLength - 1 ] + 1 ][ 0 ] = DIFF_INSERT;
      -					equalitiesLength--; // Throw away the equality we just deleted;
      -					lastequality = null;
      -					if ( preIns && preDel ) {
      -
      -						// No changes made which could affect previous entry, keep going.
      -						postIns = postDel = true;
      -						equalitiesLength = 0;
      -					} else {
      -						equalitiesLength--; // Throw away the previous equality.
      -						pointer = equalitiesLength > 0 ? equalities[ equalitiesLength - 1 ] : -1;
      -						postIns = postDel = false;
      -					}
      -					changes = true;
      -				}
      -			}
      -			pointer++;
      -		}
      -
      -		if ( changes ) {
      -			this.diffCleanupMerge( diffs );
      -		}
      -	};
      -
      -	/**
      -	 * Convert a diff array into a pretty HTML report.
      -	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
      -	 * @param {integer} string to be beautified.
      -	 * @return {string} HTML representation.
      -	 */
      -	DiffMatchPatch.prototype.diffPrettyHtml = function( diffs ) {
      -		var op, data, x,
      -			html = [];
      -		for ( x = 0; x < diffs.length; x++ ) {
      -			op = diffs[ x ][ 0 ]; // Operation (insert, delete, equal)
      -			data = diffs[ x ][ 1 ]; // Text of change.
      -			switch ( op ) {
      -			case DIFF_INSERT:
      -				html[ x ] = "<ins>" + escapeText( data ) + "</ins>";
      -				break;
      -			case DIFF_DELETE:
      -				html[ x ] = "<del>" + escapeText( data ) + "</del>";
      -				break;
      -			case DIFF_EQUAL:
      -				html[ x ] = "<span>" + escapeText( data ) + "</span>";
      -				break;
      -			}
      -		}
      -		return html.join( "" );
      -	};
      -
      -	/**
      -	 * Determine the common prefix of two strings.
      -	 * @param {string} text1 First string.
      -	 * @param {string} text2 Second string.
      -	 * @return {number} The number of characters common to the start of each
      -	 *     string.
      -	 */
      -	DiffMatchPatch.prototype.diffCommonPrefix = function( text1, text2 ) {
      -		var pointermid, pointermax, pointermin, pointerstart;
      -
      -		// Quick check for common null cases.
      -		if ( !text1 || !text2 || text1.charAt( 0 ) !== text2.charAt( 0 ) ) {
      -			return 0;
      -		}
      -
      -		// Binary search.
      -		// Performance analysis: https://neil.fraser.name/news/2007/10/09/
      -		pointermin = 0;
      -		pointermax = Math.min( text1.length, text2.length );
      -		pointermid = pointermax;
      -		pointerstart = 0;
      -		while ( pointermin < pointermid ) {
      -			if ( text1.substring( pointerstart, pointermid ) ===
      -					text2.substring( pointerstart, pointermid ) ) {
      -				pointermin = pointermid;
      -				pointerstart = pointermin;
      -			} else {
      -				pointermax = pointermid;
      -			}
      -			pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
      -		}
      -		return pointermid;
      -	};
      -
      -	/**
      -	 * Determine the common suffix of two strings.
      -	 * @param {string} text1 First string.
      -	 * @param {string} text2 Second string.
      -	 * @return {number} The number of characters common to the end of each string.
      -	 */
      -	DiffMatchPatch.prototype.diffCommonSuffix = function( text1, text2 ) {
      -		var pointermid, pointermax, pointermin, pointerend;
      -
      -		// Quick check for common null cases.
      -		if ( !text1 ||
      -				!text2 ||
      -				text1.charAt( text1.length - 1 ) !== text2.charAt( text2.length - 1 ) ) {
      -			return 0;
      -		}
      -
      -		// Binary search.
      -		// Performance analysis: https://neil.fraser.name/news/2007/10/09/
      -		pointermin = 0;
      -		pointermax = Math.min( text1.length, text2.length );
      -		pointermid = pointermax;
      -		pointerend = 0;
      -		while ( pointermin < pointermid ) {
      -			if ( text1.substring( text1.length - pointermid, text1.length - pointerend ) ===
      -					text2.substring( text2.length - pointermid, text2.length - pointerend ) ) {
      -				pointermin = pointermid;
      -				pointerend = pointermin;
      -			} else {
      -				pointermax = pointermid;
      -			}
      -			pointermid = Math.floor( ( pointermax - pointermin ) / 2 + pointermin );
      -		}
      -		return pointermid;
      -	};
      -
      -	/**
      -	 * Find the differences between two texts.  Assumes that the texts do not
      -	 * have any common prefix or suffix.
      -	 * @param {string} text1 Old string to be diffed.
      -	 * @param {string} text2 New string to be diffed.
      -	 * @param {boolean} checklines Speedup flag.  If false, then don't run a
      -	 *     line-level diff first to identify the changed areas.
      -	 *     If true, then run a faster, slightly less optimal diff.
      -	 * @param {number} deadline Time when the diff should be complete by.
      -	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffCompute = function( text1, text2, checklines, deadline ) {
      -		var diffs, longtext, shorttext, i, hm,
      -			text1A, text2A, text1B, text2B,
      -			midCommon, diffsA, diffsB;
      -
      -		if ( !text1 ) {
      -
      -			// Just add some text (speedup).
      -			return [
      -				[ DIFF_INSERT, text2 ]
      -			];
      -		}
      -
      -		if ( !text2 ) {
      -
      -			// Just delete some text (speedup).
      -			return [
      -				[ DIFF_DELETE, text1 ]
      -			];
      -		}
      -
      -		longtext = text1.length > text2.length ? text1 : text2;
      -		shorttext = text1.length > text2.length ? text2 : text1;
      -		i = longtext.indexOf( shorttext );
      -		if ( i !== -1 ) {
      -
      -			// Shorter text is inside the longer text (speedup).
      -			diffs = [
      -				[ DIFF_INSERT, longtext.substring( 0, i ) ],
      -				[ DIFF_EQUAL, shorttext ],
      -				[ DIFF_INSERT, longtext.substring( i + shorttext.length ) ]
      -			];
      -
      -			// Swap insertions for deletions if diff is reversed.
      -			if ( text1.length > text2.length ) {
      -				diffs[ 0 ][ 0 ] = diffs[ 2 ][ 0 ] = DIFF_DELETE;
      -			}
      -			return diffs;
      -		}
      -
      -		if ( shorttext.length === 1 ) {
      -
      -			// Single character string.
      -			// After the previous speedup, the character can't be an equality.
      -			return [
      -				[ DIFF_DELETE, text1 ],
      -				[ DIFF_INSERT, text2 ]
      -			];
      -		}
      -
      -		// Check to see if the problem can be split in two.
      -		hm = this.diffHalfMatch( text1, text2 );
      -		if ( hm ) {
      -
      -			// A half-match was found, sort out the return data.
      -			text1A = hm[ 0 ];
      -			text1B = hm[ 1 ];
      -			text2A = hm[ 2 ];
      -			text2B = hm[ 3 ];
      -			midCommon = hm[ 4 ];
      -
      -			// Send both pairs off for separate processing.
      -			diffsA = this.DiffMain( text1A, text2A, checklines, deadline );
      -			diffsB = this.DiffMain( text1B, text2B, checklines, deadline );
      -
      -			// Merge the results.
      -			return diffsA.concat( [
      -				[ DIFF_EQUAL, midCommon ]
      -			], diffsB );
      -		}
      -
      -		if ( checklines && text1.length > 100 && text2.length > 100 ) {
      -			return this.diffLineMode( text1, text2, deadline );
      -		}
      -
      -		return this.diffBisect( text1, text2, deadline );
      -	};
      -
      -	/**
      -	 * Do the two texts share a substring which is at least half the length of the
      -	 * longer text?
      -	 * This speedup can produce non-minimal diffs.
      -	 * @param {string} text1 First string.
      -	 * @param {string} text2 Second string.
      -	 * @return {Array.<string>} Five element Array, containing the prefix of
      -	 *     text1, the suffix of text1, the prefix of text2, the suffix of
      -	 *     text2 and the common middle.  Or null if there was no match.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffHalfMatch = function( text1, text2 ) {
      -		var longtext, shorttext, dmp,
      -			text1A, text2B, text2A, text1B, midCommon,
      -			hm1, hm2, hm;
      -
      -		longtext = text1.length > text2.length ? text1 : text2;
      -		shorttext = text1.length > text2.length ? text2 : text1;
      -		if ( longtext.length < 4 || shorttext.length * 2 < longtext.length ) {
      -			return null; // Pointless.
      -		}
      -		dmp = this; // 'this' becomes 'window' in a closure.
      -
      -		/**
      -		 * Does a substring of shorttext exist within longtext such that the substring
      -		 * is at least half the length of longtext?
      -		 * Closure, but does not reference any external variables.
      -		 * @param {string} longtext Longer string.
      -		 * @param {string} shorttext Shorter string.
      -		 * @param {number} i Start index of quarter length substring within longtext.
      -		 * @return {Array.<string>} Five element Array, containing the prefix of
      -		 *     longtext, the suffix of longtext, the prefix of shorttext, the suffix
      -		 *     of shorttext and the common middle.  Or null if there was no match.
      -		 * @private
      -		 */
      -		function diffHalfMatchI( longtext, shorttext, i ) {
      -			var seed, j, bestCommon, prefixLength, suffixLength,
      -				bestLongtextA, bestLongtextB, bestShorttextA, bestShorttextB;
      -
      -			// Start with a 1/4 length substring at position i as a seed.
      -			seed = longtext.substring( i, i + Math.floor( longtext.length / 4 ) );
      -			j = -1;
      -			bestCommon = "";
      -			while ( ( j = shorttext.indexOf( seed, j + 1 ) ) !== -1 ) {
      -				prefixLength = dmp.diffCommonPrefix( longtext.substring( i ),
      -					shorttext.substring( j ) );
      -				suffixLength = dmp.diffCommonSuffix( longtext.substring( 0, i ),
      -					shorttext.substring( 0, j ) );
      -				if ( bestCommon.length < suffixLength + prefixLength ) {
      -					bestCommon = shorttext.substring( j - suffixLength, j ) +
      -						shorttext.substring( j, j + prefixLength );
      -					bestLongtextA = longtext.substring( 0, i - suffixLength );
      -					bestLongtextB = longtext.substring( i + prefixLength );
      -					bestShorttextA = shorttext.substring( 0, j - suffixLength );
      -					bestShorttextB = shorttext.substring( j + prefixLength );
      -				}
      -			}
      -			if ( bestCommon.length * 2 >= longtext.length ) {
      -				return [ bestLongtextA, bestLongtextB,
      -					bestShorttextA, bestShorttextB, bestCommon
      -				];
      -			} else {
      -				return null;
      -			}
      -		}
      -
      -		// First check if the second quarter is the seed for a half-match.
      -		hm1 = diffHalfMatchI( longtext, shorttext,
      -			Math.ceil( longtext.length / 4 ) );
      -
      -		// Check again based on the third quarter.
      -		hm2 = diffHalfMatchI( longtext, shorttext,
      -			Math.ceil( longtext.length / 2 ) );
      -		if ( !hm1 && !hm2 ) {
      -			return null;
      -		} else if ( !hm2 ) {
      -			hm = hm1;
      -		} else if ( !hm1 ) {
      -			hm = hm2;
      -		} else {
      -
      -			// Both matched.  Select the longest.
      -			hm = hm1[ 4 ].length > hm2[ 4 ].length ? hm1 : hm2;
      -		}
      -
      -		// A half-match was found, sort out the return data.
      -		text1A, text1B, text2A, text2B;
      -		if ( text1.length > text2.length ) {
      -			text1A = hm[ 0 ];
      -			text1B = hm[ 1 ];
      -			text2A = hm[ 2 ];
      -			text2B = hm[ 3 ];
      -		} else {
      -			text2A = hm[ 0 ];
      -			text2B = hm[ 1 ];
      -			text1A = hm[ 2 ];
      -			text1B = hm[ 3 ];
      -		}
      -		midCommon = hm[ 4 ];
      -		return [ text1A, text1B, text2A, text2B, midCommon ];
      -	};
      -
      -	/**
      -	 * Do a quick line-level diff on both strings, then rediff the parts for
      -	 * greater accuracy.
      -	 * This speedup can produce non-minimal diffs.
      -	 * @param {string} text1 Old string to be diffed.
      -	 * @param {string} text2 New string to be diffed.
      -	 * @param {number} deadline Time when the diff should be complete by.
      -	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffLineMode = function( text1, text2, deadline ) {
      -		var a, diffs, linearray, pointer, countInsert,
      -			countDelete, textInsert, textDelete, j;
      -
      -		// Scan the text on a line-by-line basis first.
      -		a = this.diffLinesToChars( text1, text2 );
      -		text1 = a.chars1;
      -		text2 = a.chars2;
      -		linearray = a.lineArray;
      -
      -		diffs = this.DiffMain( text1, text2, false, deadline );
      -
      -		// Convert the diff back to original text.
      -		this.diffCharsToLines( diffs, linearray );
      -
      -		// Eliminate freak matches (e.g. blank lines)
      -		this.diffCleanupSemantic( diffs );
      -
      -		// Rediff any replacement blocks, this time character-by-character.
      -		// Add a dummy entry at the end.
      -		diffs.push( [ DIFF_EQUAL, "" ] );
      -		pointer = 0;
      -		countDelete = 0;
      -		countInsert = 0;
      -		textDelete = "";
      -		textInsert = "";
      -		while ( pointer < diffs.length ) {
      -			switch ( diffs[ pointer ][ 0 ] ) {
      -			case DIFF_INSERT:
      -				countInsert++;
      -				textInsert += diffs[ pointer ][ 1 ];
      -				break;
      -			case DIFF_DELETE:
      -				countDelete++;
      -				textDelete += diffs[ pointer ][ 1 ];
      -				break;
      -			case DIFF_EQUAL:
      -
      -				// Upon reaching an equality, check for prior redundancies.
      -				if ( countDelete >= 1 && countInsert >= 1 ) {
      -
      -					// Delete the offending records and add the merged ones.
      -					diffs.splice( pointer - countDelete - countInsert,
      -						countDelete + countInsert );
      -					pointer = pointer - countDelete - countInsert;
      -					a = this.DiffMain( textDelete, textInsert, false, deadline );
      -					for ( j = a.length - 1; j >= 0; j-- ) {
      -						diffs.splice( pointer, 0, a[ j ] );
      -					}
      -					pointer = pointer + a.length;
      -				}
      -				countInsert = 0;
      -				countDelete = 0;
      -				textDelete = "";
      -				textInsert = "";
      -				break;
      -			}
      -			pointer++;
      -		}
      -		diffs.pop(); // Remove the dummy entry at the end.
      -
      -		return diffs;
      -	};
      -
      -	/**
      -	 * Find the 'middle snake' of a diff, split the problem in two
      -	 * and return the recursively constructed diff.
      -	 * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.
      -	 * @param {string} text1 Old string to be diffed.
      -	 * @param {string} text2 New string to be diffed.
      -	 * @param {number} deadline Time at which to bail if not yet complete.
      -	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffBisect = function( text1, text2, deadline ) {
      -		var text1Length, text2Length, maxD, vOffset, vLength,
      -			v1, v2, x, delta, front, k1start, k1end, k2start,
      -			k2end, k2Offset, k1Offset, x1, x2, y1, y2, d, k1, k2;
      -
      -		// Cache the text lengths to prevent multiple calls.
      -		text1Length = text1.length;
      -		text2Length = text2.length;
      -		maxD = Math.ceil( ( text1Length + text2Length ) / 2 );
      -		vOffset = maxD;
      -		vLength = 2 * maxD;
      -		v1 = new Array( vLength );
      -		v2 = new Array( vLength );
      -
      -		// Setting all elements to -1 is faster in Chrome & Firefox than mixing
      -		// integers and undefined.
      -		for ( x = 0; x < vLength; x++ ) {
      -			v1[ x ] = -1;
      -			v2[ x ] = -1;
      -		}
      -		v1[ vOffset + 1 ] = 0;
      -		v2[ vOffset + 1 ] = 0;
      -		delta = text1Length - text2Length;
      -
      -		// If the total number of characters is odd, then the front path will collide
      -		// with the reverse path.
      -		front = ( delta % 2 !== 0 );
      -
      -		// Offsets for start and end of k loop.
      -		// Prevents mapping of space beyond the grid.
      -		k1start = 0;
      -		k1end = 0;
      -		k2start = 0;
      -		k2end = 0;
      -		for ( d = 0; d < maxD; d++ ) {
      -
      -			// Bail out if deadline is reached.
      -			if ( ( new Date() ).getTime() > deadline ) {
      -				break;
      -			}
      -
      -			// Walk the front path one step.
      -			for ( k1 = -d + k1start; k1 <= d - k1end; k1 += 2 ) {
      -				k1Offset = vOffset + k1;
      -				if ( k1 === -d || ( k1 !== d && v1[ k1Offset - 1 ] < v1[ k1Offset + 1 ] ) ) {
      -					x1 = v1[ k1Offset + 1 ];
      -				} else {
      -					x1 = v1[ k1Offset - 1 ] + 1;
      -				}
      -				y1 = x1 - k1;
      -				while ( x1 < text1Length && y1 < text2Length &&
      -					text1.charAt( x1 ) === text2.charAt( y1 ) ) {
      -					x1++;
      -					y1++;
      -				}
      -				v1[ k1Offset ] = x1;
      -				if ( x1 > text1Length ) {
      -
      -					// Ran off the right of the graph.
      -					k1end += 2;
      -				} else if ( y1 > text2Length ) {
      -
      -					// Ran off the bottom of the graph.
      -					k1start += 2;
      -				} else if ( front ) {
      -					k2Offset = vOffset + delta - k1;
      -					if ( k2Offset >= 0 && k2Offset < vLength && v2[ k2Offset ] !== -1 ) {
      -
      -						// Mirror x2 onto top-left coordinate system.
      -						x2 = text1Length - v2[ k2Offset ];
      -						if ( x1 >= x2 ) {
      -
      -							// Overlap detected.
      -							return this.diffBisectSplit( text1, text2, x1, y1, deadline );
      -						}
      -					}
      -				}
      -			}
      -
      -			// Walk the reverse path one step.
      -			for ( k2 = -d + k2start; k2 <= d - k2end; k2 += 2 ) {
      -				k2Offset = vOffset + k2;
      -				if ( k2 === -d || ( k2 !== d && v2[ k2Offset - 1 ] < v2[ k2Offset + 1 ] ) ) {
      -					x2 = v2[ k2Offset + 1 ];
      -				} else {
      -					x2 = v2[ k2Offset - 1 ] + 1;
      -				}
      -				y2 = x2 - k2;
      -				while ( x2 < text1Length && y2 < text2Length &&
      -					text1.charAt( text1Length - x2 - 1 ) ===
      -					text2.charAt( text2Length - y2 - 1 ) ) {
      -					x2++;
      -					y2++;
      -				}
      -				v2[ k2Offset ] = x2;
      -				if ( x2 > text1Length ) {
      -
      -					// Ran off the left of the graph.
      -					k2end += 2;
      -				} else if ( y2 > text2Length ) {
      -
      -					// Ran off the top of the graph.
      -					k2start += 2;
      -				} else if ( !front ) {
      -					k1Offset = vOffset + delta - k2;
      -					if ( k1Offset >= 0 && k1Offset < vLength && v1[ k1Offset ] !== -1 ) {
      -						x1 = v1[ k1Offset ];
      -						y1 = vOffset + x1 - k1Offset;
      -
      -						// Mirror x2 onto top-left coordinate system.
      -						x2 = text1Length - x2;
      -						if ( x1 >= x2 ) {
      -
      -							// Overlap detected.
      -							return this.diffBisectSplit( text1, text2, x1, y1, deadline );
      -						}
      -					}
      -				}
      -			}
      -		}
      -
      -		// Diff took too long and hit the deadline or
      -		// number of diffs equals number of characters, no commonality at all.
      -		return [
      -			[ DIFF_DELETE, text1 ],
      -			[ DIFF_INSERT, text2 ]
      -		];
      -	};
      -
      -	/**
      -	 * Given the location of the 'middle snake', split the diff in two parts
      -	 * and recurse.
      -	 * @param {string} text1 Old string to be diffed.
      -	 * @param {string} text2 New string to be diffed.
      -	 * @param {number} x Index of split point in text1.
      -	 * @param {number} y Index of split point in text2.
      -	 * @param {number} deadline Time at which to bail if not yet complete.
      -	 * @return {!Array.<!DiffMatchPatch.Diff>} Array of diff tuples.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffBisectSplit = function( text1, text2, x, y, deadline ) {
      -		var text1a, text1b, text2a, text2b, diffs, diffsb;
      -		text1a = text1.substring( 0, x );
      -		text2a = text2.substring( 0, y );
      -		text1b = text1.substring( x );
      -		text2b = text2.substring( y );
      -
      -		// Compute both diffs serially.
      -		diffs = this.DiffMain( text1a, text2a, false, deadline );
      -		diffsb = this.DiffMain( text1b, text2b, false, deadline );
      -
      -		return diffs.concat( diffsb );
      -	};
      -
      -	/**
      -	 * Reduce the number of edits by eliminating semantically trivial equalities.
      -	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
      -	 */
      -	DiffMatchPatch.prototype.diffCleanupSemantic = function( diffs ) {
      -		var changes, equalities, equalitiesLength, lastequality,
      -			pointer, lengthInsertions2, lengthDeletions2, lengthInsertions1,
      -			lengthDeletions1, deletion, insertion, overlapLength1, overlapLength2;
      -		changes = false;
      -		equalities = []; // Stack of indices where equalities are found.
      -		equalitiesLength = 0; // Keeping our own length var is faster in JS.
      -		/** @type {?string} */
      -		lastequality = null;
      -
      -		// Always equal to diffs[equalities[equalitiesLength - 1]][1]
      -		pointer = 0; // Index of current position.
      -
      -		// Number of characters that changed prior to the equality.
      -		lengthInsertions1 = 0;
      -		lengthDeletions1 = 0;
      -
      -		// Number of characters that changed after the equality.
      -		lengthInsertions2 = 0;
      -		lengthDeletions2 = 0;
      -		while ( pointer < diffs.length ) {
      -			if ( diffs[ pointer ][ 0 ] === DIFF_EQUAL ) { // Equality found.
      -				equalities[ equalitiesLength++ ] = pointer;
      -				lengthInsertions1 = lengthInsertions2;
      -				lengthDeletions1 = lengthDeletions2;
      -				lengthInsertions2 = 0;
      -				lengthDeletions2 = 0;
      -				lastequality = diffs[ pointer ][ 1 ];
      -			} else { // An insertion or deletion.
      -				if ( diffs[ pointer ][ 0 ] === DIFF_INSERT ) {
      -					lengthInsertions2 += diffs[ pointer ][ 1 ].length;
      -				} else {
      -					lengthDeletions2 += diffs[ pointer ][ 1 ].length;
      -				}
      -
      -				// Eliminate an equality that is smaller or equal to the edits on both
      -				// sides of it.
      -				if ( lastequality && ( lastequality.length <=
      -						Math.max( lengthInsertions1, lengthDeletions1 ) ) &&
      -						( lastequality.length <= Math.max( lengthInsertions2,
      -							lengthDeletions2 ) ) ) {
      -
      -					// Duplicate record.
      -					diffs.splice(
      -						equalities[ equalitiesLength - 1 ],
      -						0,
      -						[ DIFF_DELETE, lastequality ]
      -					);
      -
      -					// Change second copy to insert.
      -					diffs[ equalities[ equalitiesLength - 1 ] + 1 ][ 0 ] = DIFF_INSERT;
      -
      -					// Throw away the equality we just deleted.
      -					equalitiesLength--;
      -
      -					// Throw away the previous equality (it needs to be reevaluated).
      -					equalitiesLength--;
      -					pointer = equalitiesLength > 0 ? equalities[ equalitiesLength - 1 ] : -1;
      -
      -					// Reset the counters.
      -					lengthInsertions1 = 0;
      -					lengthDeletions1 = 0;
      -					lengthInsertions2 = 0;
      -					lengthDeletions2 = 0;
      -					lastequality = null;
      -					changes = true;
      -				}
      -			}
      -			pointer++;
      -		}
      -
      -		// Normalize the diff.
      -		if ( changes ) {
      -			this.diffCleanupMerge( diffs );
      -		}
      -
      -		// Find any overlaps between deletions and insertions.
      -		// e.g: <del>abcxxx</del><ins>xxxdef</ins>
      -		//   -> <del>abc</del>xxx<ins>def</ins>
      -		// e.g: <del>xxxabc</del><ins>defxxx</ins>
      -		//   -> <ins>def</ins>xxx<del>abc</del>
      -		// Only extract an overlap if it is as big as the edit ahead or behind it.
      -		pointer = 1;
      -		while ( pointer < diffs.length ) {
      -			if ( diffs[ pointer - 1 ][ 0 ] === DIFF_DELETE &&
      -					diffs[ pointer ][ 0 ] === DIFF_INSERT ) {
      -				deletion = diffs[ pointer - 1 ][ 1 ];
      -				insertion = diffs[ pointer ][ 1 ];
      -				overlapLength1 = this.diffCommonOverlap( deletion, insertion );
      -				overlapLength2 = this.diffCommonOverlap( insertion, deletion );
      -				if ( overlapLength1 >= overlapLength2 ) {
      -					if ( overlapLength1 >= deletion.length / 2 ||
      -							overlapLength1 >= insertion.length / 2 ) {
      -
      -						// Overlap found.  Insert an equality and trim the surrounding edits.
      -						diffs.splice(
      -							pointer,
      -							0,
      -							[ DIFF_EQUAL, insertion.substring( 0, overlapLength1 ) ]
      -						);
      -						diffs[ pointer - 1 ][ 1 ] =
      -							deletion.substring( 0, deletion.length - overlapLength1 );
      -						diffs[ pointer + 1 ][ 1 ] = insertion.substring( overlapLength1 );
      -						pointer++;
      -					}
      -				} else {
      -					if ( overlapLength2 >= deletion.length / 2 ||
      -							overlapLength2 >= insertion.length / 2 ) {
      -
      -						// Reverse overlap found.
      -						// Insert an equality and swap and trim the surrounding edits.
      -						diffs.splice(
      -							pointer,
      -							0,
      -							[ DIFF_EQUAL, deletion.substring( 0, overlapLength2 ) ]
      -						);
      -
      -						diffs[ pointer - 1 ][ 0 ] = DIFF_INSERT;
      -						diffs[ pointer - 1 ][ 1 ] =
      -							insertion.substring( 0, insertion.length - overlapLength2 );
      -						diffs[ pointer + 1 ][ 0 ] = DIFF_DELETE;
      -						diffs[ pointer + 1 ][ 1 ] =
      -							deletion.substring( overlapLength2 );
      -						pointer++;
      -					}
      -				}
      -				pointer++;
      -			}
      -			pointer++;
      -		}
      -	};
      -
      -	/**
      -	 * Determine if the suffix of one string is the prefix of another.
      -	 * @param {string} text1 First string.
      -	 * @param {string} text2 Second string.
      -	 * @return {number} The number of characters common to the end of the first
      -	 *     string and the start of the second string.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffCommonOverlap = function( text1, text2 ) {
      -		var text1Length, text2Length, textLength,
      -			best, length, pattern, found;
      -
      -		// Cache the text lengths to prevent multiple calls.
      -		text1Length = text1.length;
      -		text2Length = text2.length;
      -
      -		// Eliminate the null case.
      -		if ( text1Length === 0 || text2Length === 0 ) {
      -			return 0;
      -		}
      -
      -		// Truncate the longer string.
      -		if ( text1Length > text2Length ) {
      -			text1 = text1.substring( text1Length - text2Length );
      -		} else if ( text1Length < text2Length ) {
      -			text2 = text2.substring( 0, text1Length );
      -		}
      -		textLength = Math.min( text1Length, text2Length );
      -
      -		// Quick check for the worst case.
      -		if ( text1 === text2 ) {
      -			return textLength;
      -		}
      -
      -		// Start by looking for a single character match
      -		// and increase length until no match is found.
      -		// Performance analysis: https://neil.fraser.name/news/2010/11/04/
      -		best = 0;
      -		length = 1;
      -		while ( true ) {
      -			pattern = text1.substring( textLength - length );
      -			found = text2.indexOf( pattern );
      -			if ( found === -1 ) {
      -				return best;
      -			}
      -			length += found;
      -			if ( found === 0 || text1.substring( textLength - length ) ===
      -					text2.substring( 0, length ) ) {
      -				best = length;
      -				length++;
      -			}
      -		}
      -	};
      -
      -	/**
      -	 * Split two texts into an array of strings.  Reduce the texts to a string of
      -	 * hashes where each Unicode character represents one line.
      -	 * @param {string} text1 First string.
      -	 * @param {string} text2 Second string.
      -	 * @return {{chars1: string, chars2: string, lineArray: !Array.<string>}}
      -	 *     An object containing the encoded text1, the encoded text2 and
      -	 *     the array of unique strings.
      -	 *     The zeroth element of the array of unique strings is intentionally blank.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffLinesToChars = function( text1, text2 ) {
      -		var lineArray, lineHash, chars1, chars2;
      -		lineArray = []; // E.g. lineArray[4] === 'Hello\n'
      -		lineHash = {};  // E.g. lineHash['Hello\n'] === 4
      -
      -		// '\x00' is a valid character, but various debuggers don't like it.
      -		// So we'll insert a junk entry to avoid generating a null character.
      -		lineArray[ 0 ] = "";
      -
      -		/**
      -		 * Split a text into an array of strings.  Reduce the texts to a string of
      -		 * hashes where each Unicode character represents one line.
      -		 * Modifies linearray and linehash through being a closure.
      -		 * @param {string} text String to encode.
      -		 * @return {string} Encoded string.
      -		 * @private
      -		 */
      -		function diffLinesToCharsMunge( text ) {
      -			var chars, lineStart, lineEnd, lineArrayLength, line;
      -			chars = "";
      -
      -			// Walk the text, pulling out a substring for each line.
      -			// text.split('\n') would would temporarily double our memory footprint.
      -			// Modifying text would create many large strings to garbage collect.
      -			lineStart = 0;
      -			lineEnd = -1;
      -
      -			// Keeping our own length variable is faster than looking it up.
      -			lineArrayLength = lineArray.length;
      -			while ( lineEnd < text.length - 1 ) {
      -				lineEnd = text.indexOf( "\n", lineStart );
      -				if ( lineEnd === -1 ) {
      -					lineEnd = text.length - 1;
      -				}
      -				line = text.substring( lineStart, lineEnd + 1 );
      -				lineStart = lineEnd + 1;
      -
      -				if ( lineHash.hasOwnProperty ? lineHash.hasOwnProperty( line ) :
      -							( lineHash[ line ] !== undefined ) ) {
      -					chars += String.fromCharCode( lineHash[ line ] );
      -				} else {
      -					chars += String.fromCharCode( lineArrayLength );
      -					lineHash[ line ] = lineArrayLength;
      -					lineArray[ lineArrayLength++ ] = line;
      -				}
      -			}
      -			return chars;
      -		}
      -
      -		chars1 = diffLinesToCharsMunge( text1 );
      -		chars2 = diffLinesToCharsMunge( text2 );
      -		return {
      -			chars1: chars1,
      -			chars2: chars2,
      -			lineArray: lineArray
      -		};
      -	};
      -
      -	/**
      -	 * Rehydrate the text in a diff from a string of line hashes to real lines of
      -	 * text.
      -	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
      -	 * @param {!Array.<string>} lineArray Array of unique strings.
      -	 * @private
      -	 */
      -	DiffMatchPatch.prototype.diffCharsToLines = function( diffs, lineArray ) {
      -		var x, chars, text, y;
      -		for ( x = 0; x < diffs.length; x++ ) {
      -			chars = diffs[ x ][ 1 ];
      -			text = [];
      -			for ( y = 0; y < chars.length; y++ ) {
      -				text[ y ] = lineArray[ chars.charCodeAt( y ) ];
      -			}
      -			diffs[ x ][ 1 ] = text.join( "" );
      -		}
      -	};
      -
      -	/**
      -	 * Reorder and merge like edit sections.  Merge equalities.
      -	 * Any edit section can move as long as it doesn't cross an equality.
      -	 * @param {!Array.<!DiffMatchPatch.Diff>} diffs Array of diff tuples.
      -	 */
      -	DiffMatchPatch.prototype.diffCleanupMerge = function( diffs ) {
      -		var pointer, countDelete, countInsert, textInsert, textDelete,
      -			commonlength, changes, diffPointer, position;
      -		diffs.push( [ DIFF_EQUAL, "" ] ); // Add a dummy entry at the end.
      -		pointer = 0;
      -		countDelete = 0;
      -		countInsert = 0;
      -		textDelete = "";
      -		textInsert = "";
      -		commonlength;
      -		while ( pointer < diffs.length ) {
      -			switch ( diffs[ pointer ][ 0 ] ) {
      -			case DIFF_INSERT:
      -				countInsert++;
      -				textInsert += diffs[ pointer ][ 1 ];
      -				pointer++;
      -				break;
      -			case DIFF_DELETE:
      -				countDelete++;
      -				textDelete += diffs[ pointer ][ 1 ];
      -				pointer++;
      -				break;
      -			case DIFF_EQUAL:
      -
      -				// Upon reaching an equality, check for prior redundancies.
      -				if ( countDelete + countInsert > 1 ) {
      -					if ( countDelete !== 0 && countInsert !== 0 ) {
      -
      -						// Factor out any common prefixes.
      -						commonlength = this.diffCommonPrefix( textInsert, textDelete );
      -						if ( commonlength !== 0 ) {
      -							if ( ( pointer - countDelete - countInsert ) > 0 &&
      -									diffs[ pointer - countDelete - countInsert - 1 ][ 0 ] ===
      -									DIFF_EQUAL ) {
      -								diffs[ pointer - countDelete - countInsert - 1 ][ 1 ] +=
      -									textInsert.substring( 0, commonlength );
      -							} else {
      -								diffs.splice( 0, 0, [ DIFF_EQUAL,
      -									textInsert.substring( 0, commonlength )
      -								] );
      -								pointer++;
      -							}
      -							textInsert = textInsert.substring( commonlength );
      -							textDelete = textDelete.substring( commonlength );
      -						}
      -
      -						// Factor out any common suffixies.
      -						commonlength = this.diffCommonSuffix( textInsert, textDelete );
      -						if ( commonlength !== 0 ) {
      -							diffs[ pointer ][ 1 ] = textInsert.substring( textInsert.length -
      -									commonlength ) + diffs[ pointer ][ 1 ];
      -							textInsert = textInsert.substring( 0, textInsert.length -
      -								commonlength );
      -							textDelete = textDelete.substring( 0, textDelete.length -
      -								commonlength );
      -						}
      -					}
      -
      -					// Delete the offending records and add the merged ones.
      -					if ( countDelete === 0 ) {
      -						diffs.splice( pointer - countInsert,
      -							countDelete + countInsert, [ DIFF_INSERT, textInsert ] );
      -					} else if ( countInsert === 0 ) {
      -						diffs.splice( pointer - countDelete,
      -							countDelete + countInsert, [ DIFF_DELETE, textDelete ] );
      -					} else {
      -						diffs.splice(
      -							pointer - countDelete - countInsert,
      -							countDelete + countInsert,
      -							[ DIFF_DELETE, textDelete ], [ DIFF_INSERT, textInsert ]
      -						);
      -					}
      -					pointer = pointer - countDelete - countInsert +
      -						( countDelete ? 1 : 0 ) + ( countInsert ? 1 : 0 ) + 1;
      -				} else if ( pointer !== 0 && diffs[ pointer - 1 ][ 0 ] === DIFF_EQUAL ) {
      -
      -					// Merge this equality with the previous one.
      -					diffs[ pointer - 1 ][ 1 ] += diffs[ pointer ][ 1 ];
      -					diffs.splice( pointer, 1 );
      -				} else {
      -					pointer++;
      -				}
      -				countInsert = 0;
      -				countDelete = 0;
      -				textDelete = "";
      -				textInsert = "";
      -				break;
      -			}
      -		}
      -		if ( diffs[ diffs.length - 1 ][ 1 ] === "" ) {
      -			diffs.pop(); // Remove the dummy entry at the end.
      -		}
      -
      -		// Second pass: look for single edits surrounded on both sides by equalities
      -		// which can be shifted sideways to eliminate an equality.
      -		// e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC
      -		changes = false;
      -		pointer = 1;
      -
      -		// Intentionally ignore the first and last element (don't need checking).
      -		while ( pointer < diffs.length - 1 ) {
      -			if ( diffs[ pointer - 1 ][ 0 ] === DIFF_EQUAL &&
      -					diffs[ pointer + 1 ][ 0 ] === DIFF_EQUAL ) {
      -
      -				diffPointer = diffs[ pointer ][ 1 ];
      -				position = diffPointer.substring(
      -					diffPointer.length - diffs[ pointer - 1 ][ 1 ].length
      -				);
      -
      -				// This is a single edit surrounded by equalities.
      -				if ( position === diffs[ pointer - 1 ][ 1 ] ) {
      -
      -					// Shift the edit over the previous equality.
      -					diffs[ pointer ][ 1 ] = diffs[ pointer - 1 ][ 1 ] +
      -						diffs[ pointer ][ 1 ].substring( 0, diffs[ pointer ][ 1 ].length -
      -							diffs[ pointer - 1 ][ 1 ].length );
      -					diffs[ pointer + 1 ][ 1 ] =
      -						diffs[ pointer - 1 ][ 1 ] + diffs[ pointer + 1 ][ 1 ];
      -					diffs.splice( pointer - 1, 1 );
      -					changes = true;
      -				} else if ( diffPointer.substring( 0, diffs[ pointer + 1 ][ 1 ].length ) ===
      -						diffs[ pointer + 1 ][ 1 ] ) {
      -
      -					// Shift the edit over the next equality.
      -					diffs[ pointer - 1 ][ 1 ] += diffs[ pointer + 1 ][ 1 ];
      -					diffs[ pointer ][ 1 ] =
      -						diffs[ pointer ][ 1 ].substring( diffs[ pointer + 1 ][ 1 ].length ) +
      -						diffs[ pointer + 1 ][ 1 ];
      -					diffs.splice( pointer + 1, 1 );
      -					changes = true;
      -				}
      -			}
      -			pointer++;
      -		}
      -
      -		// If shifts were made, the diff needs reordering and another shift sweep.
      -		if ( changes ) {
      -			this.diffCleanupMerge( diffs );
      -		}
      -	};
      -
      -	return function( o, n ) {
      -		var diff, output, text;
      -		diff = new DiffMatchPatch();
      -		output = diff.DiffMain( o, n );
      -		diff.diffCleanupEfficiency( output );
      -		text = diff.diffPrettyHtml( output );
      -
      -		return text;
      -	};
      -}() );
      -
      -}() );
      diff --git a/bower_components/select2/vendor/jquery-2.1.0.js b/bower_components/select2/vendor/jquery-2.1.0.js
      deleted file mode 100644
      index d405ae7b22..0000000000
      --- a/bower_components/select2/vendor/jquery-2.1.0.js
      +++ /dev/null
      @@ -1,9111 +0,0 @@
      -/*!
      - * jQuery JavaScript Library v2.1.0
      - * http://jquery.com/
      - *
      - * Includes Sizzle.js
      - * http://sizzlejs.com/
      - *
      - * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
      - * Released under the MIT license
      - * http://jquery.org/license
      - *
      - * Date: 2014-01-23T21:10Z
      - */
      -
      -(function( global, factory ) {
      -
      -    if ( typeof module === "object" && typeof module.exports === "object" ) {
      -        // For CommonJS and CommonJS-like environments where a proper window is present,
      -        // execute the factory and get jQuery
      -        // For environments that do not inherently posses a window with a document
      -        // (such as Node.js), expose a jQuery-making factory as module.exports
      -        // This accentuates the need for the creation of a real window
      -        // e.g. var jQuery = require("jquery")(window);
      -        // See ticket #14549 for more info
      -        module.exports = global.document ?
      -            factory( global, true ) :
      -            function( w ) {
      -                if ( !w.document ) {
      -                    throw new Error( "jQuery requires a window with a document" );
      -                }
      -                return factory( w );
      -            };
      -    } else {
      -        factory( global );
      -    }
      -
      -// Pass this if window is not defined yet
      -}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
      -
      -// Can't do this because several apps including ASP.NET trace
      -// the stack via arguments.caller.callee and Firefox dies if
      -// you try to trace through "use strict" call chains. (#13335)
      -// Support: Firefox 18+
      -//
      -
      -    var arr = [];
      -
      -    var slice = arr.slice;
      -
      -    var concat = arr.concat;
      -
      -    var push = arr.push;
      -
      -    var indexOf = arr.indexOf;
      -
      -    var class2type = {};
      -
      -    var toString = class2type.toString;
      -
      -    var hasOwn = class2type.hasOwnProperty;
      -
      -    var trim = "".trim;
      -
      -    var support = {};
      -
      -
      -
      -    var
      -    // Use the correct document accordingly with window argument (sandbox)
      -        document = window.document,
      -
      -        version = "2.1.0",
      -
      -    // Define a local copy of jQuery
      -        jQuery = function( selector, context ) {
      -            // The jQuery object is actually just the init constructor 'enhanced'
      -            // Need init if jQuery is called (just allow error to be thrown if not included)
      -            return new jQuery.fn.init( selector, context );
      -        },
      -
      -    // Matches dashed string for camelizing
      -        rmsPrefix = /^-ms-/,
      -        rdashAlpha = /-([\da-z])/gi,
      -
      -    // Used by jQuery.camelCase as callback to replace()
      -        fcamelCase = function( all, letter ) {
      -            return letter.toUpperCase();
      -        };
      -
      -    jQuery.fn = jQuery.prototype = {
      -        // The current version of jQuery being used
      -        jquery: version,
      -
      -        constructor: jQuery,
      -
      -        // Start with an empty selector
      -        selector: "",
      -
      -        // The default length of a jQuery object is 0
      -        length: 0,
      -
      -        toArray: function() {
      -            return slice.call( this );
      -        },
      -
      -        // Get the Nth element in the matched element set OR
      -        // Get the whole matched element set as a clean array
      -        get: function( num ) {
      -            return num != null ?
      -
      -                // Return a 'clean' array
      -                ( num < 0 ? this[ num + this.length ] : this[ num ] ) :
      -
      -                // Return just the object
      -                slice.call( this );
      -        },
      -
      -        // Take an array of elements and push it onto the stack
      -        // (returning the new matched element set)
      -        pushStack: function( elems ) {
      -
      -            // Build a new jQuery matched element set
      -            var ret = jQuery.merge( this.constructor(), elems );
      -
      -            // Add the old object onto the stack (as a reference)
      -            ret.prevObject = this;
      -            ret.context = this.context;
      -
      -            // Return the newly-formed element set
      -            return ret;
      -        },
      -
      -        // Execute a callback for every element in the matched set.
      -        // (You can seed the arguments with an array of args, but this is
      -        // only used internally.)
      -        each: function( callback, args ) {
      -            return jQuery.each( this, callback, args );
      -        },
      -
      -        map: function( callback ) {
      -            return this.pushStack( jQuery.map(this, function( elem, i ) {
      -                return callback.call( elem, i, elem );
      -            }));
      -        },
      -
      -        slice: function() {
      -            return this.pushStack( slice.apply( this, arguments ) );
      -        },
      -
      -        first: function() {
      -            return this.eq( 0 );
      -        },
      -
      -        last: function() {
      -            return this.eq( -1 );
      -        },
      -
      -        eq: function( i ) {
      -            var len = this.length,
      -                j = +i + ( i < 0 ? len : 0 );
      -            return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
      -        },
      -
      -        end: function() {
      -            return this.prevObject || this.constructor(null);
      -        },
      -
      -        // For internal use only.
      -        // Behaves like an Array's method, not like a jQuery method.
      -        push: push,
      -        sort: arr.sort,
      -        splice: arr.splice
      -    };
      -
      -    jQuery.extend = jQuery.fn.extend = function() {
      -        var options, name, src, copy, copyIsArray, clone,
      -            target = arguments[0] || {},
      -            i = 1,
      -            length = arguments.length,
      -            deep = false;
      -
      -        // Handle a deep copy situation
      -        if ( typeof target === "boolean" ) {
      -            deep = target;
      -
      -            // skip the boolean and the target
      -            target = arguments[ i ] || {};
      -            i++;
      -        }
      -
      -        // Handle case when target is a string or something (possible in deep copy)
      -        if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
      -            target = {};
      -        }
      -
      -        // extend jQuery itself if only one argument is passed
      -        if ( i === length ) {
      -            target = this;
      -            i--;
      -        }
      -
      -        for ( ; i < length; i++ ) {
      -            // Only deal with non-null/undefined values
      -            if ( (options = arguments[ i ]) != null ) {
      -                // Extend the base object
      -                for ( name in options ) {
      -                    src = target[ name ];
      -                    copy = options[ name ];
      -
      -                    // Prevent never-ending loop
      -                    if ( target === copy ) {
      -                        continue;
      -                    }
      -
      -                    // Recurse if we're merging plain objects or arrays
      -                    if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
      -                        if ( copyIsArray ) {
      -                            copyIsArray = false;
      -                            clone = src && jQuery.isArray(src) ? src : [];
      -
      -                        } else {
      -                            clone = src && jQuery.isPlainObject(src) ? src : {};
      -                        }
      -
      -                        // Never move original objects, clone them
      -                        target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -                        // Don't bring in undefined values
      -                    } else if ( copy !== undefined ) {
      -                        target[ name ] = copy;
      -                    }
      -                }
      -            }
      -        }
      -
      -        // Return the modified object
      -        return target;
      -    };
      -
      -    jQuery.extend({
      -        // Unique for each copy of jQuery on the page
      -        expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
      -
      -        // Assume jQuery is ready without the ready module
      -        isReady: true,
      -
      -        error: function( msg ) {
      -            throw new Error( msg );
      -        },
      -
      -        noop: function() {},
      -
      -        // See test/unit/core.js for details concerning isFunction.
      -        // Since version 1.3, DOM methods and functions like alert
      -        // aren't supported. They return false on IE (#2968).
      -        isFunction: function( obj ) {
      -            return jQuery.type(obj) === "function";
      -        },
      -
      -        isArray: Array.isArray,
      -
      -        isWindow: function( obj ) {
      -            return obj != null && obj === obj.window;
      -        },
      -
      -        isNumeric: function( obj ) {
      -            // parseFloat NaNs numeric-cast false positives (null|true|false|"")
      -            // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
      -            // subtraction forces infinities to NaN
      -            return obj - parseFloat( obj ) >= 0;
      -        },
      -
      -        isPlainObject: function( obj ) {
      -            // Not plain objects:
      -            // - Any object or value whose internal [[Class]] property is not "[object Object]"
      -            // - DOM nodes
      -            // - window
      -            if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
      -                return false;
      -            }
      -
      -            // Support: Firefox <20
      -            // The try/catch suppresses exceptions thrown when attempting to access
      -            // the "constructor" property of certain host objects, ie. |window.location|
      -            // https://bugzilla.mozilla.org/show_bug.cgi?id=814622
      -            try {
      -                if ( obj.constructor &&
      -                    !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
      -                    return false;
      -                }
      -            } catch ( e ) {
      -                return false;
      -            }
      -
      -            // If the function hasn't returned already, we're confident that
      -            // |obj| is a plain object, created by {} or constructed with new Object
      -            return true;
      -        },
      -
      -        isEmptyObject: function( obj ) {
      -            var name;
      -            for ( name in obj ) {
      -                return false;
      -            }
      -            return true;
      -        },
      -
      -        type: function( obj ) {
      -            if ( obj == null ) {
      -                return obj + "";
      -            }
      -            // Support: Android < 4.0, iOS < 6 (functionish RegExp)
      -            return typeof obj === "object" || typeof obj === "function" ?
      -                class2type[ toString.call(obj) ] || "object" :
      -                typeof obj;
      -        },
      -
      -        // Evaluates a script in a global context
      -        globalEval: function( code ) {
      -            var script,
      -                indirect = eval;
      -
      -            code = jQuery.trim( code );
      -
      -            if ( code ) {
      -                // If the code includes a valid, prologue position
      -                // strict mode pragma, execute code by injecting a
      -                // script tag into the document.
      -                if ( code.indexOf("use strict") === 1 ) {
      -                    script = document.createElement("script");
      -                    script.text = code;
      -                    document.head.appendChild( script ).parentNode.removeChild( script );
      -                } else {
      -                    // Otherwise, avoid the DOM node creation, insertion
      -                    // and removal by using an indirect global eval
      -                    indirect( code );
      -                }
      -            }
      -        },
      -
      -        // Convert dashed to camelCase; used by the css and data modules
      -        // Microsoft forgot to hump their vendor prefix (#9572)
      -        camelCase: function( string ) {
      -            return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -        },
      -
      -        nodeName: function( elem, name ) {
      -            return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
      -        },
      -
      -        // args is for internal usage only
      -        each: function( obj, callback, args ) {
      -            var value,
      -                i = 0,
      -                length = obj.length,
      -                isArray = isArraylike( obj );
      -
      -            if ( args ) {
      -                if ( isArray ) {
      -                    for ( ; i < length; i++ ) {
      -                        value = callback.apply( obj[ i ], args );
      -
      -                        if ( value === false ) {
      -                            break;
      -                        }
      -                    }
      -                } else {
      -                    for ( i in obj ) {
      -                        value = callback.apply( obj[ i ], args );
      -
      -                        if ( value === false ) {
      -                            break;
      -                        }
      -                    }
      -                }
      -
      -                // A special, fast, case for the most common use of each
      -            } else {
      -                if ( isArray ) {
      -                    for ( ; i < length; i++ ) {
      -                        value = callback.call( obj[ i ], i, obj[ i ] );
      -
      -                        if ( value === false ) {
      -                            break;
      -                        }
      -                    }
      -                } else {
      -                    for ( i in obj ) {
      -                        value = callback.call( obj[ i ], i, obj[ i ] );
      -
      -                        if ( value === false ) {
      -                            break;
      -                        }
      -                    }
      -                }
      -            }
      -
      -            return obj;
      -        },
      -
      -        trim: function( text ) {
      -            return text == null ? "" : trim.call( text );
      -        },
      -
      -        // results is for internal usage only
      -        makeArray: function( arr, results ) {
      -            var ret = results || [];
      -
      -            if ( arr != null ) {
      -                if ( isArraylike( Object(arr) ) ) {
      -                    jQuery.merge( ret,
      -                        typeof arr === "string" ?
      -                            [ arr ] : arr
      -                    );
      -                } else {
      -                    push.call( ret, arr );
      -                }
      -            }
      -
      -            return ret;
      -        },
      -
      -        inArray: function( elem, arr, i ) {
      -            return arr == null ? -1 : indexOf.call( arr, elem, i );
      -        },
      -
      -        merge: function( first, second ) {
      -            var len = +second.length,
      -                j = 0,
      -                i = first.length;
      -
      -            for ( ; j < len; j++ ) {
      -                first[ i++ ] = second[ j ];
      -            }
      -
      -            first.length = i;
      -
      -            return first;
      -        },
      -
      -        grep: function( elems, callback, invert ) {
      -            var callbackInverse,
      -                matches = [],
      -                i = 0,
      -                length = elems.length,
      -                callbackExpect = !invert;
      -
      -            // Go through the array, only saving the items
      -            // that pass the validator function
      -            for ( ; i < length; i++ ) {
      -                callbackInverse = !callback( elems[ i ], i );
      -                if ( callbackInverse !== callbackExpect ) {
      -                    matches.push( elems[ i ] );
      -                }
      -            }
      -
      -            return matches;
      -        },
      -
      -        // arg is for internal usage only
      -        map: function( elems, callback, arg ) {
      -            var value,
      -                i = 0,
      -                length = elems.length,
      -                isArray = isArraylike( elems ),
      -                ret = [];
      -
      -            // Go through the array, translating each of the items to their new values
      -            if ( isArray ) {
      -                for ( ; i < length; i++ ) {
      -                    value = callback( elems[ i ], i, arg );
      -
      -                    if ( value != null ) {
      -                        ret.push( value );
      -                    }
      -                }
      -
      -                // Go through every key on the object,
      -            } else {
      -                for ( i in elems ) {
      -                    value = callback( elems[ i ], i, arg );
      -
      -                    if ( value != null ) {
      -                        ret.push( value );
      -                    }
      -                }
      -            }
      -
      -            // Flatten any nested arrays
      -            return concat.apply( [], ret );
      -        },
      -
      -        // A global GUID counter for objects
      -        guid: 1,
      -
      -        // Bind a function to a context, optionally partially applying any
      -        // arguments.
      -        proxy: function( fn, context ) {
      -            var tmp, args, proxy;
      -
      -            if ( typeof context === "string" ) {
      -                tmp = fn[ context ];
      -                context = fn;
      -                fn = tmp;
      -            }
      -
      -            // Quick check to determine if target is callable, in the spec
      -            // this throws a TypeError, but we will just return undefined.
      -            if ( !jQuery.isFunction( fn ) ) {
      -                return undefined;
      -            }
      -
      -            // Simulated bind
      -            args = slice.call( arguments, 2 );
      -            proxy = function() {
      -                return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
      -            };
      -
      -            // Set the guid of unique handler to the same of original handler, so it can be removed
      -            proxy.guid = fn.guid = fn.guid || jQuery.guid++;
      -
      -            return proxy;
      -        },
      -
      -        now: Date.now,
      -
      -        // jQuery.support is not used in Core but other projects attach their
      -        // properties to it so it needs to exist.
      -        support: support
      -    });
      -
      -// Populate the class2type map
      -    jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
      -        class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -    });
      -
      -    function isArraylike( obj ) {
      -        var length = obj.length,
      -            type = jQuery.type( obj );
      -
      -        if ( type === "function" || jQuery.isWindow( obj ) ) {
      -            return false;
      -        }
      -
      -        if ( obj.nodeType === 1 && length ) {
      -            return true;
      -        }
      -
      -        return type === "array" || length === 0 ||
      -            typeof length === "number" && length > 0 && ( length - 1 ) in obj;
      -    }
      -    var Sizzle =
      -        /*!
      -         * Sizzle CSS Selector Engine v1.10.16
      -         * http://sizzlejs.com/
      -         *
      -         * Copyright 2013 jQuery Foundation, Inc. and other contributors
      -         * Released under the MIT license
      -         * http://jquery.org/license
      -         *
      -         * Date: 2014-01-13
      -         */
      -        (function( window ) {
      -
      -            var i,
      -                support,
      -                Expr,
      -                getText,
      -                isXML,
      -                compile,
      -                outermostContext,
      -                sortInput,
      -                hasDuplicate,
      -
      -            // Local document vars
      -                setDocument,
      -                document,
      -                docElem,
      -                documentIsHTML,
      -                rbuggyQSA,
      -                rbuggyMatches,
      -                matches,
      -                contains,
      -
      -            // Instance-specific data
      -                expando = "sizzle" + -(new Date()),
      -                preferredDoc = window.document,
      -                dirruns = 0,
      -                done = 0,
      -                classCache = createCache(),
      -                tokenCache = createCache(),
      -                compilerCache = createCache(),
      -                sortOrder = function( a, b ) {
      -                    if ( a === b ) {
      -                        hasDuplicate = true;
      -                    }
      -                    return 0;
      -                },
      -
      -            // General-purpose constants
      -                strundefined = typeof undefined,
      -                MAX_NEGATIVE = 1 << 31,
      -
      -            // Instance methods
      -                hasOwn = ({}).hasOwnProperty,
      -                arr = [],
      -                pop = arr.pop,
      -                push_native = arr.push,
      -                push = arr.push,
      -                slice = arr.slice,
      -            // Use a stripped-down indexOf if we can't use a native one
      -                indexOf = arr.indexOf || function( elem ) {
      -                    var i = 0,
      -                        len = this.length;
      -                    for ( ; i < len; i++ ) {
      -                        if ( this[i] === elem ) {
      -                            return i;
      -                        }
      -                    }
      -                    return -1;
      -                },
      -
      -                booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
      -
      -            // Regular expressions
      -
      -            // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
      -                whitespace = "[\\x20\\t\\r\\n\\f]",
      -            // http://www.w3.org/TR/css3-syntax/#characters
      -                characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
      -
      -            // Loosely modeled on CSS identifier characters
      -            // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
      -            // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
      -                identifier = characterEncoding.replace( "w", "w#" ),
      -
      -            // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
      -                attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
      -                    "*(?:([*^$|!~]?=)" + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
      -
      -            // Prefer arguments quoted,
      -            //   then not containing pseudos/brackets,
      -            //   then attribute selectors/non-parenthetical expressions,
      -            //   then anything else
      -            // These preferences are here to reduce the number of selectors
      -            //   needing tokenize in the PSEUDO preFilter
      -                pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
      -
      -            // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
      -                rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
      -
      -                rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
      -                rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
      -
      -                rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
      -
      -                rpseudo = new RegExp( pseudos ),
      -                ridentifier = new RegExp( "^" + identifier + "$" ),
      -
      -                matchExpr = {
      -                    "ID": new RegExp( "^#(" + characterEncoding + ")" ),
      -                    "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
      -                    "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
      -                    "ATTR": new RegExp( "^" + attributes ),
      -                    "PSEUDO": new RegExp( "^" + pseudos ),
      -                    "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
      -                        "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
      -                        "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
      -                    "bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
      -                    // For use in libraries implementing .is()
      -                    // We use this for POS matching in `select`
      -                    "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
      -                        whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
      -                },
      -
      -                rinputs = /^(?:input|select|textarea|button)$/i,
      -                rheader = /^h\d$/i,
      -
      -                rnative = /^[^{]+\{\s*\[native \w/,
      -
      -            // Easily-parseable/retrievable ID or TAG or CLASS selectors
      -                rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
      -
      -                rsibling = /[+~]/,
      -                rescape = /'|\\/g,
      -
      -            // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
      -                runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
      -                funescape = function( _, escaped, escapedWhitespace ) {
      -                    var high = "0x" + escaped - 0x10000;
      -                    // NaN means non-codepoint
      -                    // Support: Firefox
      -                    // Workaround erroneous numeric interpretation of +"0x"
      -                    return high !== high || escapedWhitespace ?
      -                        escaped :
      -                        high < 0 ?
      -                            // BMP codepoint
      -                            String.fromCharCode( high + 0x10000 ) :
      -                            // Supplemental Plane codepoint (surrogate pair)
      -                            String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
      -                };
      -
      -// Optimize for push.apply( _, NodeList )
      -            try {
      -                push.apply(
      -                    (arr = slice.call( preferredDoc.childNodes )),
      -                    preferredDoc.childNodes
      -                );
      -                // Support: Android<4.0
      -                // Detect silently failing push.apply
      -                arr[ preferredDoc.childNodes.length ].nodeType;
      -            } catch ( e ) {
      -                push = { apply: arr.length ?
      -
      -                    // Leverage slice if possible
      -                    function( target, els ) {
      -                        push_native.apply( target, slice.call(els) );
      -                    } :
      -
      -                    // Support: IE<9
      -                    // Otherwise append directly
      -                    function( target, els ) {
      -                        var j = target.length,
      -                            i = 0;
      -                        // Can't trust NodeList.length
      -                        while ( (target[j++] = els[i++]) ) {}
      -                        target.length = j - 1;
      -                    }
      -                };
      -            }
      -
      -            function Sizzle( selector, context, results, seed ) {
      -                var match, elem, m, nodeType,
      -                // QSA vars
      -                    i, groups, old, nid, newContext, newSelector;
      -
      -                if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
      -                    setDocument( context );
      -                }
      -
      -                context = context || document;
      -                results = results || [];
      -
      -                if ( !selector || typeof selector !== "string" ) {
      -                    return results;
      -                }
      -
      -                if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
      -                    return [];
      -                }
      -
      -                if ( documentIsHTML && !seed ) {
      -
      -                    // Shortcuts
      -                    if ( (match = rquickExpr.exec( selector )) ) {
      -                        // Speed-up: Sizzle("#ID")
      -                        if ( (m = match[1]) ) {
      -                            if ( nodeType === 9 ) {
      -                                elem = context.getElementById( m );
      -                                // Check parentNode to catch when Blackberry 4.6 returns
      -                                // nodes that are no longer in the document (jQuery #6963)
      -                                if ( elem && elem.parentNode ) {
      -                                    // Handle the case where IE, Opera, and Webkit return items
      -                                    // by name instead of ID
      -                                    if ( elem.id === m ) {
      -                                        results.push( elem );
      -                                        return results;
      -                                    }
      -                                } else {
      -                                    return results;
      -                                }
      -                            } else {
      -                                // Context is not a document
      -                                if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
      -                                    contains( context, elem ) && elem.id === m ) {
      -                                    results.push( elem );
      -                                    return results;
      -                                }
      -                            }
      -
      -                            // Speed-up: Sizzle("TAG")
      -                        } else if ( match[2] ) {
      -                            push.apply( results, context.getElementsByTagName( selector ) );
      -                            return results;
      -
      -                            // Speed-up: Sizzle(".CLASS")
      -                        } else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
      -                            push.apply( results, context.getElementsByClassName( m ) );
      -                            return results;
      -                        }
      -                    }
      -
      -                    // QSA path
      -                    if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
      -                        nid = old = expando;
      -                        newContext = context;
      -                        newSelector = nodeType === 9 && selector;
      -
      -                        // qSA works strangely on Element-rooted queries
      -                        // We can work around this by specifying an extra ID on the root
      -                        // and working up from there (Thanks to Andrew Dupont for the technique)
      -                        // IE 8 doesn't work on object elements
      -                        if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
      -                            groups = tokenize( selector );
      -
      -                            if ( (old = context.getAttribute("id")) ) {
      -                                nid = old.replace( rescape, "\\$&" );
      -                            } else {
      -                                context.setAttribute( "id", nid );
      -                            }
      -                            nid = "[id='" + nid + "'] ";
      -
      -                            i = groups.length;
      -                            while ( i-- ) {
      -                                groups[i] = nid + toSelector( groups[i] );
      -                            }
      -                            newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
      -                            newSelector = groups.join(",");
      -                        }
      -
      -                        if ( newSelector ) {
      -                            try {
      -                                push.apply( results,
      -                                    newContext.querySelectorAll( newSelector )
      -                                );
      -                                return results;
      -                            } catch(qsaError) {
      -                            } finally {
      -                                if ( !old ) {
      -                                    context.removeAttribute("id");
      -                                }
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                // All others
      -                return select( selector.replace( rtrim, "$1" ), context, results, seed );
      -            }
      -
      -            /**
      -             * Create key-value caches of limited size
      -             * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
      -             *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
      -             *	deleting the oldest entry
      -             */
      -            function createCache() {
      -                var keys = [];
      -
      -                function cache( key, value ) {
      -                    // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
      -                    if ( keys.push( key + " " ) > Expr.cacheLength ) {
      -                        // Only keep the most recent entries
      -                        delete cache[ keys.shift() ];
      -                    }
      -                    return (cache[ key + " " ] = value);
      -                }
      -                return cache;
      -            }
      -
      -            /**
      -             * Mark a function for special use by Sizzle
      -             * @param {Function} fn The function to mark
      -             */
      -            function markFunction( fn ) {
      -                fn[ expando ] = true;
      -                return fn;
      -            }
      -
      -            /**
      -             * Support testing using an element
      -             * @param {Function} fn Passed the created div and expects a boolean result
      -             */
      -            function assert( fn ) {
      -                var div = document.createElement("div");
      -
      -                try {
      -                    return !!fn( div );
      -                } catch (e) {
      -                    return false;
      -                } finally {
      -                    // Remove from its parent by default
      -                    if ( div.parentNode ) {
      -                        div.parentNode.removeChild( div );
      -                    }
      -                    // release memory in IE
      -                    div = null;
      -                }
      -            }
      -
      -            /**
      -             * Adds the same handler for all of the specified attrs
      -             * @param {String} attrs Pipe-separated list of attributes
      -             * @param {Function} handler The method that will be applied
      -             */
      -            function addHandle( attrs, handler ) {
      -                var arr = attrs.split("|"),
      -                    i = attrs.length;
      -
      -                while ( i-- ) {
      -                    Expr.attrHandle[ arr[i] ] = handler;
      -                }
      -            }
      -
      -            /**
      -             * Checks document order of two siblings
      -             * @param {Element} a
      -             * @param {Element} b
      -             * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
      -             */
      -            function siblingCheck( a, b ) {
      -                var cur = b && a,
      -                    diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
      -                        ( ~b.sourceIndex || MAX_NEGATIVE ) -
      -                            ( ~a.sourceIndex || MAX_NEGATIVE );
      -
      -                // Use IE sourceIndex if available on both nodes
      -                if ( diff ) {
      -                    return diff;
      -                }
      -
      -                // Check if b follows a
      -                if ( cur ) {
      -                    while ( (cur = cur.nextSibling) ) {
      -                        if ( cur === b ) {
      -                            return -1;
      -                        }
      -                    }
      -                }
      -
      -                return a ? 1 : -1;
      -            }
      -
      -            /**
      -             * Returns a function to use in pseudos for input types
      -             * @param {String} type
      -             */
      -            function createInputPseudo( type ) {
      -                return function( elem ) {
      -                    var name = elem.nodeName.toLowerCase();
      -                    return name === "input" && elem.type === type;
      -                };
      -            }
      -
      -            /**
      -             * Returns a function to use in pseudos for buttons
      -             * @param {String} type
      -             */
      -            function createButtonPseudo( type ) {
      -                return function( elem ) {
      -                    var name = elem.nodeName.toLowerCase();
      -                    return (name === "input" || name === "button") && elem.type === type;
      -                };
      -            }
      -
      -            /**
      -             * Returns a function to use in pseudos for positionals
      -             * @param {Function} fn
      -             */
      -            function createPositionalPseudo( fn ) {
      -                return markFunction(function( argument ) {
      -                    argument = +argument;
      -                    return markFunction(function( seed, matches ) {
      -                        var j,
      -                            matchIndexes = fn( [], seed.length, argument ),
      -                            i = matchIndexes.length;
      -
      -                        // Match elements found at the specified indexes
      -                        while ( i-- ) {
      -                            if ( seed[ (j = matchIndexes[i]) ] ) {
      -                                seed[j] = !(matches[j] = seed[j]);
      -                            }
      -                        }
      -                    });
      -                });
      -            }
      -
      -            /**
      -             * Checks a node for validity as a Sizzle context
      -             * @param {Element|Object=} context
      -             * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
      -             */
      -            function testContext( context ) {
      -                return context && typeof context.getElementsByTagName !== strundefined && context;
      -            }
      -
      -// Expose support vars for convenience
      -            support = Sizzle.support = {};
      -
      -            /**
      -             * Detects XML nodes
      -             * @param {Element|Object} elem An element or a document
      -             * @returns {Boolean} True iff elem is a non-HTML XML node
      -             */
      -            isXML = Sizzle.isXML = function( elem ) {
      -                // documentElement is verified for cases where it doesn't yet exist
      -                // (such as loading iframes in IE - #4833)
      -                var documentElement = elem && (elem.ownerDocument || elem).documentElement;
      -                return documentElement ? documentElement.nodeName !== "HTML" : false;
      -            };
      -
      -            /**
      -             * Sets document-related variables once based on the current document
      -             * @param {Element|Object} [doc] An element or document object to use to set the document
      -             * @returns {Object} Returns the current document
      -             */
      -            setDocument = Sizzle.setDocument = function( node ) {
      -                var hasCompare,
      -                    doc = node ? node.ownerDocument || node : preferredDoc,
      -                    parent = doc.defaultView;
      -
      -                // If no document and documentElement is available, return
      -                if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
      -                    return document;
      -                }
      -
      -                // Set our document
      -                document = doc;
      -                docElem = doc.documentElement;
      -
      -                // Support tests
      -                documentIsHTML = !isXML( doc );
      -
      -                // Support: IE>8
      -                // If iframe document is assigned to "document" variable and if iframe has been reloaded,
      -                // IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
      -                // IE6-8 do not support the defaultView property so parent will be undefined
      -                if ( parent && parent !== parent.top ) {
      -                    // IE11 does not have attachEvent, so all must suffer
      -                    if ( parent.addEventListener ) {
      -                        parent.addEventListener( "unload", function() {
      -                            setDocument();
      -                        }, false );
      -                    } else if ( parent.attachEvent ) {
      -                        parent.attachEvent( "onunload", function() {
      -                            setDocument();
      -                        });
      -                    }
      -                }
      -
      -                /* Attributes
      -                 ---------------------------------------------------------------------- */
      -
      -                // Support: IE<8
      -                // Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
      -                support.attributes = assert(function( div ) {
      -                    div.className = "i";
      -                    return !div.getAttribute("className");
      -                });
      -
      -                /* getElement(s)By*
      -                 ---------------------------------------------------------------------- */
      -
      -                // Check if getElementsByTagName("*") returns only elements
      -                support.getElementsByTagName = assert(function( div ) {
      -                    div.appendChild( doc.createComment("") );
      -                    return !div.getElementsByTagName("*").length;
      -                });
      -
      -                // Check if getElementsByClassName can be trusted
      -                support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
      -                    div.innerHTML = "<div class='a'></div><div class='a i'></div>";
      -
      -                    // Support: Safari<4
      -                    // Catch class over-caching
      -                    div.firstChild.className = "i";
      -                    // Support: Opera<10
      -                    // Catch gEBCN failure to find non-leading classes
      -                    return div.getElementsByClassName("i").length === 2;
      -                });
      -
      -                // Support: IE<10
      -                // Check if getElementById returns elements by name
      -                // The broken getElementById methods don't pick up programatically-set names,
      -                // so use a roundabout getElementsByName test
      -                support.getById = assert(function( div ) {
      -                    docElem.appendChild( div ).id = expando;
      -                    return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
      -                });
      -
      -                // ID find and filter
      -                if ( support.getById ) {
      -                    Expr.find["ID"] = function( id, context ) {
      -                        if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
      -                            var m = context.getElementById( id );
      -                            // Check parentNode to catch when Blackberry 4.6 returns
      -                            // nodes that are no longer in the document #6963
      -                            return m && m.parentNode ? [m] : [];
      -                        }
      -                    };
      -                    Expr.filter["ID"] = function( id ) {
      -                        var attrId = id.replace( runescape, funescape );
      -                        return function( elem ) {
      -                            return elem.getAttribute("id") === attrId;
      -                        };
      -                    };
      -                } else {
      -                    // Support: IE6/7
      -                    // getElementById is not reliable as a find shortcut
      -                    delete Expr.find["ID"];
      -
      -                    Expr.filter["ID"] =  function( id ) {
      -                        var attrId = id.replace( runescape, funescape );
      -                        return function( elem ) {
      -                            var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
      -                            return node && node.value === attrId;
      -                        };
      -                    };
      -                }
      -
      -                // Tag
      -                Expr.find["TAG"] = support.getElementsByTagName ?
      -                    function( tag, context ) {
      -                        if ( typeof context.getElementsByTagName !== strundefined ) {
      -                            return context.getElementsByTagName( tag );
      -                        }
      -                    } :
      -                    function( tag, context ) {
      -                        var elem,
      -                            tmp = [],
      -                            i = 0,
      -                            results = context.getElementsByTagName( tag );
      -
      -                        // Filter out possible comments
      -                        if ( tag === "*" ) {
      -                            while ( (elem = results[i++]) ) {
      -                                if ( elem.nodeType === 1 ) {
      -                                    tmp.push( elem );
      -                                }
      -                            }
      -
      -                            return tmp;
      -                        }
      -                        return results;
      -                    };
      -
      -                // Class
      -                Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
      -                    if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
      -                        return context.getElementsByClassName( className );
      -                    }
      -                };
      -
      -                /* QSA/matchesSelector
      -                 ---------------------------------------------------------------------- */
      -
      -                // QSA and matchesSelector support
      -
      -                // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
      -                rbuggyMatches = [];
      -
      -                // qSa(:focus) reports false when true (Chrome 21)
      -                // We allow this because of a bug in IE8/9 that throws an error
      -                // whenever `document.activeElement` is accessed on an iframe
      -                // So, we allow :focus to pass through QSA all the time to avoid the IE error
      -                // See http://bugs.jquery.com/ticket/13378
      -                rbuggyQSA = [];
      -
      -                if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
      -                    // Build QSA regex
      -                    // Regex strategy adopted from Diego Perini
      -                    assert(function( div ) {
      -                        // Select is set to empty string on purpose
      -                        // This is to test IE's treatment of not explicitly
      -                        // setting a boolean content attribute,
      -                        // since its presence should be enough
      -                        // http://bugs.jquery.com/ticket/12359
      -                        div.innerHTML = "<select t=''><option selected=''></option></select>";
      -
      -                        // Support: IE8, Opera 10-12
      -                        // Nothing should be selected when empty strings follow ^= or $= or *=
      -                        if ( div.querySelectorAll("[t^='']").length ) {
      -                            rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
      -                        }
      -
      -                        // Support: IE8
      -                        // Boolean attributes and "value" are not treated correctly
      -                        if ( !div.querySelectorAll("[selected]").length ) {
      -                            rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
      -                        }
      -
      -                        // Webkit/Opera - :checked should return selected option elements
      -                        // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -                        // IE8 throws error here and will not see later tests
      -                        if ( !div.querySelectorAll(":checked").length ) {
      -                            rbuggyQSA.push(":checked");
      -                        }
      -                    });
      -
      -                    assert(function( div ) {
      -                        // Support: Windows 8 Native Apps
      -                        // The type and name attributes are restricted during .innerHTML assignment
      -                        var input = doc.createElement("input");
      -                        input.setAttribute( "type", "hidden" );
      -                        div.appendChild( input ).setAttribute( "name", "D" );
      -
      -                        // Support: IE8
      -                        // Enforce case-sensitivity of name attribute
      -                        if ( div.querySelectorAll("[name=d]").length ) {
      -                            rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
      -                        }
      -
      -                        // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
      -                        // IE8 throws error here and will not see later tests
      -                        if ( !div.querySelectorAll(":enabled").length ) {
      -                            rbuggyQSA.push( ":enabled", ":disabled" );
      -                        }
      -
      -                        // Opera 10-11 does not throw on post-comma invalid pseudos
      -                        div.querySelectorAll("*,:x");
      -                        rbuggyQSA.push(",.*:");
      -                    });
      -                }
      -
      -                if ( (support.matchesSelector = rnative.test( (matches = docElem.webkitMatchesSelector ||
      -                    docElem.mozMatchesSelector ||
      -                    docElem.oMatchesSelector ||
      -                    docElem.msMatchesSelector) )) ) {
      -
      -                    assert(function( div ) {
      -                        // Check to see if it's possible to do matchesSelector
      -                        // on a disconnected node (IE 9)
      -                        support.disconnectedMatch = matches.call( div, "div" );
      -
      -                        // This should fail with an exception
      -                        // Gecko does not error, returns false instead
      -                        matches.call( div, "[s!='']:x" );
      -                        rbuggyMatches.push( "!=", pseudos );
      -                    });
      -                }
      -
      -                rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
      -                rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
      -
      -                /* Contains
      -                 ---------------------------------------------------------------------- */
      -                hasCompare = rnative.test( docElem.compareDocumentPosition );
      -
      -                // Element contains another
      -                // Purposefully does not implement inclusive descendent
      -                // As in, an element does not contain itself
      -                contains = hasCompare || rnative.test( docElem.contains ) ?
      -                    function( a, b ) {
      -                        var adown = a.nodeType === 9 ? a.documentElement : a,
      -                            bup = b && b.parentNode;
      -                        return a === bup || !!( bup && bup.nodeType === 1 && (
      -                            adown.contains ?
      -                                adown.contains( bup ) :
      -                                a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
      -                            ));
      -                    } :
      -                    function( a, b ) {
      -                        if ( b ) {
      -                            while ( (b = b.parentNode) ) {
      -                                if ( b === a ) {
      -                                    return true;
      -                                }
      -                            }
      -                        }
      -                        return false;
      -                    };
      -
      -                /* Sorting
      -                 ---------------------------------------------------------------------- */
      -
      -                // Document order sorting
      -                sortOrder = hasCompare ?
      -                    function( a, b ) {
      -
      -                        // Flag for duplicate removal
      -                        if ( a === b ) {
      -                            hasDuplicate = true;
      -                            return 0;
      -                        }
      -
      -                        // Sort on method existence if only one input has compareDocumentPosition
      -                        var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
      -                        if ( compare ) {
      -                            return compare;
      -                        }
      -
      -                        // Calculate position if both inputs belong to the same document
      -                        compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
      -                            a.compareDocumentPosition( b ) :
      -
      -                            // Otherwise we know they are disconnected
      -                            1;
      -
      -                        // Disconnected nodes
      -                        if ( compare & 1 ||
      -                            (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
      -
      -                            // Choose the first element that is related to our preferred document
      -                            if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
      -                                return -1;
      -                            }
      -                            if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
      -                                return 1;
      -                            }
      -
      -                            // Maintain original order
      -                            return sortInput ?
      -                                ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
      -                                0;
      -                        }
      -
      -                        return compare & 4 ? -1 : 1;
      -                    } :
      -                    function( a, b ) {
      -                        // Exit early if the nodes are identical
      -                        if ( a === b ) {
      -                            hasDuplicate = true;
      -                            return 0;
      -                        }
      -
      -                        var cur,
      -                            i = 0,
      -                            aup = a.parentNode,
      -                            bup = b.parentNode,
      -                            ap = [ a ],
      -                            bp = [ b ];
      -
      -                        // Parentless nodes are either documents or disconnected
      -                        if ( !aup || !bup ) {
      -                            return a === doc ? -1 :
      -                                b === doc ? 1 :
      -                                    aup ? -1 :
      -                                        bup ? 1 :
      -                                            sortInput ?
      -                                                ( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
      -                                                0;
      -
      -                            // If the nodes are siblings, we can do a quick check
      -                        } else if ( aup === bup ) {
      -                            return siblingCheck( a, b );
      -                        }
      -
      -                        // Otherwise we need full lists of their ancestors for comparison
      -                        cur = a;
      -                        while ( (cur = cur.parentNode) ) {
      -                            ap.unshift( cur );
      -                        }
      -                        cur = b;
      -                        while ( (cur = cur.parentNode) ) {
      -                            bp.unshift( cur );
      -                        }
      -
      -                        // Walk down the tree looking for a discrepancy
      -                        while ( ap[i] === bp[i] ) {
      -                            i++;
      -                        }
      -
      -                        return i ?
      -                            // Do a sibling check if the nodes have a common ancestor
      -                            siblingCheck( ap[i], bp[i] ) :
      -
      -                            // Otherwise nodes in our document sort first
      -                            ap[i] === preferredDoc ? -1 :
      -                                bp[i] === preferredDoc ? 1 :
      -                                    0;
      -                    };
      -
      -                return doc;
      -            };
      -
      -            Sizzle.matches = function( expr, elements ) {
      -                return Sizzle( expr, null, null, elements );
      -            };
      -
      -            Sizzle.matchesSelector = function( elem, expr ) {
      -                // Set document vars if needed
      -                if ( ( elem.ownerDocument || elem ) !== document ) {
      -                    setDocument( elem );
      -                }
      -
      -                // Make sure that attribute selectors are quoted
      -                expr = expr.replace( rattributeQuotes, "='$1']" );
      -
      -                if ( support.matchesSelector && documentIsHTML &&
      -                    ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
      -                    ( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
      -
      -                    try {
      -                        var ret = matches.call( elem, expr );
      -
      -                        // IE 9's matchesSelector returns false on disconnected nodes
      -                        if ( ret || support.disconnectedMatch ||
      -                            // As well, disconnected nodes are said to be in a document
      -                            // fragment in IE 9
      -                            elem.document && elem.document.nodeType !== 11 ) {
      -                            return ret;
      -                        }
      -                    } catch(e) {}
      -                }
      -
      -                return Sizzle( expr, document, null, [elem] ).length > 0;
      -            };
      -
      -            Sizzle.contains = function( context, elem ) {
      -                // Set document vars if needed
      -                if ( ( context.ownerDocument || context ) !== document ) {
      -                    setDocument( context );
      -                }
      -                return contains( context, elem );
      -            };
      -
      -            Sizzle.attr = function( elem, name ) {
      -                // Set document vars if needed
      -                if ( ( elem.ownerDocument || elem ) !== document ) {
      -                    setDocument( elem );
      -                }
      -
      -                var fn = Expr.attrHandle[ name.toLowerCase() ],
      -                // Don't get fooled by Object.prototype properties (jQuery #13807)
      -                    val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
      -                        fn( elem, name, !documentIsHTML ) :
      -                        undefined;
      -
      -                return val !== undefined ?
      -                    val :
      -                    support.attributes || !documentIsHTML ?
      -                        elem.getAttribute( name ) :
      -                        (val = elem.getAttributeNode(name)) && val.specified ?
      -                            val.value :
      -                            null;
      -            };
      -
      -            Sizzle.error = function( msg ) {
      -                throw new Error( "Syntax error, unrecognized expression: " + msg );
      -            };
      -
      -            /**
      -             * Document sorting and removing duplicates
      -             * @param {ArrayLike} results
      -             */
      -            Sizzle.uniqueSort = function( results ) {
      -                var elem,
      -                    duplicates = [],
      -                    j = 0,
      -                    i = 0;
      -
      -                // Unless we *know* we can detect duplicates, assume their presence
      -                hasDuplicate = !support.detectDuplicates;
      -                sortInput = !support.sortStable && results.slice( 0 );
      -                results.sort( sortOrder );
      -
      -                if ( hasDuplicate ) {
      -                    while ( (elem = results[i++]) ) {
      -                        if ( elem === results[ i ] ) {
      -                            j = duplicates.push( i );
      -                        }
      -                    }
      -                    while ( j-- ) {
      -                        results.splice( duplicates[ j ], 1 );
      -                    }
      -                }
      -
      -                // Clear input after sorting to release objects
      -                // See https://github.com/jquery/sizzle/pull/225
      -                sortInput = null;
      -
      -                return results;
      -            };
      -
      -            /**
      -             * Utility function for retrieving the text value of an array of DOM nodes
      -             * @param {Array|Element} elem
      -             */
      -            getText = Sizzle.getText = function( elem ) {
      -                var node,
      -                    ret = "",
      -                    i = 0,
      -                    nodeType = elem.nodeType;
      -
      -                if ( !nodeType ) {
      -                    // If no nodeType, this is expected to be an array
      -                    while ( (node = elem[i++]) ) {
      -                        // Do not traverse comment nodes
      -                        ret += getText( node );
      -                    }
      -                } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -                    // Use textContent for elements
      -                    // innerText usage removed for consistency of new lines (jQuery #11153)
      -                    if ( typeof elem.textContent === "string" ) {
      -                        return elem.textContent;
      -                    } else {
      -                        // Traverse its children
      -                        for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -                            ret += getText( elem );
      -                        }
      -                    }
      -                } else if ( nodeType === 3 || nodeType === 4 ) {
      -                    return elem.nodeValue;
      -                }
      -                // Do not include comment or processing instruction nodes
      -
      -                return ret;
      -            };
      -
      -            Expr = Sizzle.selectors = {
      -
      -                // Can be adjusted by the user
      -                cacheLength: 50,
      -
      -                createPseudo: markFunction,
      -
      -                match: matchExpr,
      -
      -                attrHandle: {},
      -
      -                find: {},
      -
      -                relative: {
      -                    ">": { dir: "parentNode", first: true },
      -                    " ": { dir: "parentNode" },
      -                    "+": { dir: "previousSibling", first: true },
      -                    "~": { dir: "previousSibling" }
      -                },
      -
      -                preFilter: {
      -                    "ATTR": function( match ) {
      -                        match[1] = match[1].replace( runescape, funescape );
      -
      -                        // Move the given value to match[3] whether quoted or unquoted
      -                        match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
      -
      -                        if ( match[2] === "~=" ) {
      -                            match[3] = " " + match[3] + " ";
      -                        }
      -
      -                        return match.slice( 0, 4 );
      -                    },
      -
      -                    "CHILD": function( match ) {
      -                        /* matches from matchExpr["CHILD"]
      -                         1 type (only|nth|...)
      -                         2 what (child|of-type)
      -                         3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
      -                         4 xn-component of xn+y argument ([+-]?\d*n|)
      -                         5 sign of xn-component
      -                         6 x of xn-component
      -                         7 sign of y-component
      -                         8 y of y-component
      -                         */
      -                        match[1] = match[1].toLowerCase();
      -
      -                        if ( match[1].slice( 0, 3 ) === "nth" ) {
      -                            // nth-* requires argument
      -                            if ( !match[3] ) {
      -                                Sizzle.error( match[0] );
      -                            }
      -
      -                            // numeric x and y parameters for Expr.filter.CHILD
      -                            // remember that false/true cast respectively to 0/1
      -                            match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
      -                            match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
      -
      -                            // other types prohibit arguments
      -                        } else if ( match[3] ) {
      -                            Sizzle.error( match[0] );
      -                        }
      -
      -                        return match;
      -                    },
      -
      -                    "PSEUDO": function( match ) {
      -                        var excess,
      -                            unquoted = !match[5] && match[2];
      -
      -                        if ( matchExpr["CHILD"].test( match[0] ) ) {
      -                            return null;
      -                        }
      -
      -                        // Accept quoted arguments as-is
      -                        if ( match[3] && match[4] !== undefined ) {
      -                            match[2] = match[4];
      -
      -                            // Strip excess characters from unquoted arguments
      -                        } else if ( unquoted && rpseudo.test( unquoted ) &&
      -                            // Get excess from tokenize (recursively)
      -                            (excess = tokenize( unquoted, true )) &&
      -                            // advance to the next closing parenthesis
      -                            (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
      -
      -                            // excess is a negative index
      -                            match[0] = match[0].slice( 0, excess );
      -                            match[2] = unquoted.slice( 0, excess );
      -                        }
      -
      -                        // Return only captures needed by the pseudo filter method (type and argument)
      -                        return match.slice( 0, 3 );
      -                    }
      -                },
      -
      -                filter: {
      -
      -                    "TAG": function( nodeNameSelector ) {
      -                        var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
      -                        return nodeNameSelector === "*" ?
      -                            function() { return true; } :
      -                            function( elem ) {
      -                                return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
      -                            };
      -                    },
      -
      -                    "CLASS": function( className ) {
      -                        var pattern = classCache[ className + " " ];
      -
      -                        return pattern ||
      -                            (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
      -                                classCache( className, function( elem ) {
      -                                    return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
      -                                });
      -                    },
      -
      -                    "ATTR": function( name, operator, check ) {
      -                        return function( elem ) {
      -                            var result = Sizzle.attr( elem, name );
      -
      -                            if ( result == null ) {
      -                                return operator === "!=";
      -                            }
      -                            if ( !operator ) {
      -                                return true;
      -                            }
      -
      -                            result += "";
      -
      -                            return operator === "=" ? result === check :
      -                                operator === "!=" ? result !== check :
      -                                    operator === "^=" ? check && result.indexOf( check ) === 0 :
      -                                        operator === "*=" ? check && result.indexOf( check ) > -1 :
      -                                            operator === "$=" ? check && result.slice( -check.length ) === check :
      -                                                operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
      -                                                    operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
      -                                                        false;
      -                        };
      -                    },
      -
      -                    "CHILD": function( type, what, argument, first, last ) {
      -                        var simple = type.slice( 0, 3 ) !== "nth",
      -                            forward = type.slice( -4 ) !== "last",
      -                            ofType = what === "of-type";
      -
      -                        return first === 1 && last === 0 ?
      -
      -                            // Shortcut for :nth-*(n)
      -                            function( elem ) {
      -                                return !!elem.parentNode;
      -                            } :
      -
      -                            function( elem, context, xml ) {
      -                                var cache, outerCache, node, diff, nodeIndex, start,
      -                                    dir = simple !== forward ? "nextSibling" : "previousSibling",
      -                                    parent = elem.parentNode,
      -                                    name = ofType && elem.nodeName.toLowerCase(),
      -                                    useCache = !xml && !ofType;
      -
      -                                if ( parent ) {
      -
      -                                    // :(first|last|only)-(child|of-type)
      -                                    if ( simple ) {
      -                                        while ( dir ) {
      -                                            node = elem;
      -                                            while ( (node = node[ dir ]) ) {
      -                                                if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
      -                                                    return false;
      -                                                }
      -                                            }
      -                                            // Reverse direction for :only-* (if we haven't yet done so)
      -                                            start = dir = type === "only" && !start && "nextSibling";
      -                                        }
      -                                        return true;
      -                                    }
      -
      -                                    start = [ forward ? parent.firstChild : parent.lastChild ];
      -
      -                                    // non-xml :nth-child(...) stores cache data on `parent`
      -                                    if ( forward && useCache ) {
      -                                        // Seek `elem` from a previously-cached index
      -                                        outerCache = parent[ expando ] || (parent[ expando ] = {});
      -                                        cache = outerCache[ type ] || [];
      -                                        nodeIndex = cache[0] === dirruns && cache[1];
      -                                        diff = cache[0] === dirruns && cache[2];
      -                                        node = nodeIndex && parent.childNodes[ nodeIndex ];
      -
      -                                        while ( (node = ++nodeIndex && node && node[ dir ] ||
      -
      -                                            // Fallback to seeking `elem` from the start
      -                                            (diff = nodeIndex = 0) || start.pop()) ) {
      -
      -                                            // When found, cache indexes on `parent` and break
      -                                            if ( node.nodeType === 1 && ++diff && node === elem ) {
      -                                                outerCache[ type ] = [ dirruns, nodeIndex, diff ];
      -                                                break;
      -                                            }
      -                                        }
      -
      -                                        // Use previously-cached element index if available
      -                                    } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
      -                                        diff = cache[1];
      -
      -                                        // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
      -                                    } else {
      -                                        // Use the same loop as above to seek `elem` from the start
      -                                        while ( (node = ++nodeIndex && node && node[ dir ] ||
      -                                            (diff = nodeIndex = 0) || start.pop()) ) {
      -
      -                                            if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
      -                                                // Cache the index of each encountered element
      -                                                if ( useCache ) {
      -                                                    (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
      -                                                }
      -
      -                                                if ( node === elem ) {
      -                                                    break;
      -                                                }
      -                                            }
      -                                        }
      -                                    }
      -
      -                                    // Incorporate the offset, then check against cycle size
      -                                    diff -= last;
      -                                    return diff === first || ( diff % first === 0 && diff / first >= 0 );
      -                                }
      -                            };
      -                    },
      -
      -                    "PSEUDO": function( pseudo, argument ) {
      -                        // pseudo-class names are case-insensitive
      -                        // http://www.w3.org/TR/selectors/#pseudo-classes
      -                        // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
      -                        // Remember that setFilters inherits from pseudos
      -                        var args,
      -                            fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
      -                                Sizzle.error( "unsupported pseudo: " + pseudo );
      -
      -                        // The user may use createPseudo to indicate that
      -                        // arguments are needed to create the filter function
      -                        // just as Sizzle does
      -                        if ( fn[ expando ] ) {
      -                            return fn( argument );
      -                        }
      -
      -                        // But maintain support for old signatures
      -                        if ( fn.length > 1 ) {
      -                            args = [ pseudo, pseudo, "", argument ];
      -                            return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
      -                                markFunction(function( seed, matches ) {
      -                                    var idx,
      -                                        matched = fn( seed, argument ),
      -                                        i = matched.length;
      -                                    while ( i-- ) {
      -                                        idx = indexOf.call( seed, matched[i] );
      -                                        seed[ idx ] = !( matches[ idx ] = matched[i] );
      -                                    }
      -                                }) :
      -                                function( elem ) {
      -                                    return fn( elem, 0, args );
      -                                };
      -                        }
      -
      -                        return fn;
      -                    }
      -                },
      -
      -                pseudos: {
      -                    // Potentially complex pseudos
      -                    "not": markFunction(function( selector ) {
      -                        // Trim the selector passed to compile
      -                        // to avoid treating leading and trailing
      -                        // spaces as combinators
      -                        var input = [],
      -                            results = [],
      -                            matcher = compile( selector.replace( rtrim, "$1" ) );
      -
      -                        return matcher[ expando ] ?
      -                            markFunction(function( seed, matches, context, xml ) {
      -                                var elem,
      -                                    unmatched = matcher( seed, null, xml, [] ),
      -                                    i = seed.length;
      -
      -                                // Match elements unmatched by `matcher`
      -                                while ( i-- ) {
      -                                    if ( (elem = unmatched[i]) ) {
      -                                        seed[i] = !(matches[i] = elem);
      -                                    }
      -                                }
      -                            }) :
      -                            function( elem, context, xml ) {
      -                                input[0] = elem;
      -                                matcher( input, null, xml, results );
      -                                return !results.pop();
      -                            };
      -                    }),
      -
      -                    "has": markFunction(function( selector ) {
      -                        return function( elem ) {
      -                            return Sizzle( selector, elem ).length > 0;
      -                        };
      -                    }),
      -
      -                    "contains": markFunction(function( text ) {
      -                        return function( elem ) {
      -                            return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
      -                        };
      -                    }),
      -
      -                    // "Whether an element is represented by a :lang() selector
      -                    // is based solely on the element's language value
      -                    // being equal to the identifier C,
      -                    // or beginning with the identifier C immediately followed by "-".
      -                    // The matching of C against the element's language value is performed case-insensitively.
      -                    // The identifier C does not have to be a valid language name."
      -                    // http://www.w3.org/TR/selectors/#lang-pseudo
      -                    "lang": markFunction( function( lang ) {
      -                        // lang value must be a valid identifier
      -                        if ( !ridentifier.test(lang || "") ) {
      -                            Sizzle.error( "unsupported lang: " + lang );
      -                        }
      -                        lang = lang.replace( runescape, funescape ).toLowerCase();
      -                        return function( elem ) {
      -                            var elemLang;
      -                            do {
      -                                if ( (elemLang = documentIsHTML ?
      -                                    elem.lang :
      -                                    elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
      -
      -                                    elemLang = elemLang.toLowerCase();
      -                                    return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
      -                                }
      -                            } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
      -                            return false;
      -                        };
      -                    }),
      -
      -                    // Miscellaneous
      -                    "target": function( elem ) {
      -                        var hash = window.location && window.location.hash;
      -                        return hash && hash.slice( 1 ) === elem.id;
      -                    },
      -
      -                    "root": function( elem ) {
      -                        return elem === docElem;
      -                    },
      -
      -                    "focus": function( elem ) {
      -                        return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
      -                    },
      -
      -                    // Boolean properties
      -                    "enabled": function( elem ) {
      -                        return elem.disabled === false;
      -                    },
      -
      -                    "disabled": function( elem ) {
      -                        return elem.disabled === true;
      -                    },
      -
      -                    "checked": function( elem ) {
      -                        // In CSS3, :checked should return both checked and selected elements
      -                        // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -                        var nodeName = elem.nodeName.toLowerCase();
      -                        return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
      -                    },
      -
      -                    "selected": function( elem ) {
      -                        // Accessing this property makes selected-by-default
      -                        // options in Safari work properly
      -                        if ( elem.parentNode ) {
      -                            elem.parentNode.selectedIndex;
      -                        }
      -
      -                        return elem.selected === true;
      -                    },
      -
      -                    // Contents
      -                    "empty": function( elem ) {
      -                        // http://www.w3.org/TR/selectors/#empty-pseudo
      -                        // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
      -                        //   but not by others (comment: 8; processing instruction: 7; etc.)
      -                        // nodeType < 6 works because attributes (2) do not appear as children
      -                        for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -                            if ( elem.nodeType < 6 ) {
      -                                return false;
      -                            }
      -                        }
      -                        return true;
      -                    },
      -
      -                    "parent": function( elem ) {
      -                        return !Expr.pseudos["empty"]( elem );
      -                    },
      -
      -                    // Element/input types
      -                    "header": function( elem ) {
      -                        return rheader.test( elem.nodeName );
      -                    },
      -
      -                    "input": function( elem ) {
      -                        return rinputs.test( elem.nodeName );
      -                    },
      -
      -                    "button": function( elem ) {
      -                        var name = elem.nodeName.toLowerCase();
      -                        return name === "input" && elem.type === "button" || name === "button";
      -                    },
      -
      -                    "text": function( elem ) {
      -                        var attr;
      -                        return elem.nodeName.toLowerCase() === "input" &&
      -                            elem.type === "text" &&
      -
      -                            // Support: IE<8
      -                            // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
      -                            ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
      -                    },
      -
      -                    // Position-in-collection
      -                    "first": createPositionalPseudo(function() {
      -                        return [ 0 ];
      -                    }),
      -
      -                    "last": createPositionalPseudo(function( matchIndexes, length ) {
      -                        return [ length - 1 ];
      -                    }),
      -
      -                    "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -                        return [ argument < 0 ? argument + length : argument ];
      -                    }),
      -
      -                    "even": createPositionalPseudo(function( matchIndexes, length ) {
      -                        var i = 0;
      -                        for ( ; i < length; i += 2 ) {
      -                            matchIndexes.push( i );
      -                        }
      -                        return matchIndexes;
      -                    }),
      -
      -                    "odd": createPositionalPseudo(function( matchIndexes, length ) {
      -                        var i = 1;
      -                        for ( ; i < length; i += 2 ) {
      -                            matchIndexes.push( i );
      -                        }
      -                        return matchIndexes;
      -                    }),
      -
      -                    "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -                        var i = argument < 0 ? argument + length : argument;
      -                        for ( ; --i >= 0; ) {
      -                            matchIndexes.push( i );
      -                        }
      -                        return matchIndexes;
      -                    }),
      -
      -                    "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -                        var i = argument < 0 ? argument + length : argument;
      -                        for ( ; ++i < length; ) {
      -                            matchIndexes.push( i );
      -                        }
      -                        return matchIndexes;
      -                    })
      -                }
      -            };
      -
      -            Expr.pseudos["nth"] = Expr.pseudos["eq"];
      -
      -// Add button/input type pseudos
      -            for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
      -                Expr.pseudos[ i ] = createInputPseudo( i );
      -            }
      -            for ( i in { submit: true, reset: true } ) {
      -                Expr.pseudos[ i ] = createButtonPseudo( i );
      -            }
      -
      -// Easy API for creating new setFilters
      -            function setFilters() {}
      -            setFilters.prototype = Expr.filters = Expr.pseudos;
      -            Expr.setFilters = new setFilters();
      -
      -            function tokenize( selector, parseOnly ) {
      -                var matched, match, tokens, type,
      -                    soFar, groups, preFilters,
      -                    cached = tokenCache[ selector + " " ];
      -
      -                if ( cached ) {
      -                    return parseOnly ? 0 : cached.slice( 0 );
      -                }
      -
      -                soFar = selector;
      -                groups = [];
      -                preFilters = Expr.preFilter;
      -
      -                while ( soFar ) {
      -
      -                    // Comma and first run
      -                    if ( !matched || (match = rcomma.exec( soFar )) ) {
      -                        if ( match ) {
      -                            // Don't consume trailing commas as valid
      -                            soFar = soFar.slice( match[0].length ) || soFar;
      -                        }
      -                        groups.push( (tokens = []) );
      -                    }
      -
      -                    matched = false;
      -
      -                    // Combinators
      -                    if ( (match = rcombinators.exec( soFar )) ) {
      -                        matched = match.shift();
      -                        tokens.push({
      -                            value: matched,
      -                            // Cast descendant combinators to space
      -                            type: match[0].replace( rtrim, " " )
      -                        });
      -                        soFar = soFar.slice( matched.length );
      -                    }
      -
      -                    // Filters
      -                    for ( type in Expr.filter ) {
      -                        if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
      -                            (match = preFilters[ type ]( match ))) ) {
      -                            matched = match.shift();
      -                            tokens.push({
      -                                value: matched,
      -                                type: type,
      -                                matches: match
      -                            });
      -                            soFar = soFar.slice( matched.length );
      -                        }
      -                    }
      -
      -                    if ( !matched ) {
      -                        break;
      -                    }
      -                }
      -
      -                // Return the length of the invalid excess
      -                // if we're just parsing
      -                // Otherwise, throw an error or return tokens
      -                return parseOnly ?
      -                    soFar.length :
      -                    soFar ?
      -                        Sizzle.error( selector ) :
      -                        // Cache the tokens
      -                        tokenCache( selector, groups ).slice( 0 );
      -            }
      -
      -            function toSelector( tokens ) {
      -                var i = 0,
      -                    len = tokens.length,
      -                    selector = "";
      -                for ( ; i < len; i++ ) {
      -                    selector += tokens[i].value;
      -                }
      -                return selector;
      -            }
      -
      -            function addCombinator( matcher, combinator, base ) {
      -                var dir = combinator.dir,
      -                    checkNonElements = base && dir === "parentNode",
      -                    doneName = done++;
      -
      -                return combinator.first ?
      -                    // Check against closest ancestor/preceding element
      -                    function( elem, context, xml ) {
      -                        while ( (elem = elem[ dir ]) ) {
      -                            if ( elem.nodeType === 1 || checkNonElements ) {
      -                                return matcher( elem, context, xml );
      -                            }
      -                        }
      -                    } :
      -
      -                    // Check against all ancestor/preceding elements
      -                    function( elem, context, xml ) {
      -                        var oldCache, outerCache,
      -                            newCache = [ dirruns, doneName ];
      -
      -                        // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
      -                        if ( xml ) {
      -                            while ( (elem = elem[ dir ]) ) {
      -                                if ( elem.nodeType === 1 || checkNonElements ) {
      -                                    if ( matcher( elem, context, xml ) ) {
      -                                        return true;
      -                                    }
      -                                }
      -                            }
      -                        } else {
      -                            while ( (elem = elem[ dir ]) ) {
      -                                if ( elem.nodeType === 1 || checkNonElements ) {
      -                                    outerCache = elem[ expando ] || (elem[ expando ] = {});
      -                                    if ( (oldCache = outerCache[ dir ]) &&
      -                                        oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
      -
      -                                        // Assign to newCache so results back-propagate to previous elements
      -                                        return (newCache[ 2 ] = oldCache[ 2 ]);
      -                                    } else {
      -                                        // Reuse newcache so results back-propagate to previous elements
      -                                        outerCache[ dir ] = newCache;
      -
      -                                        // A match means we're done; a fail means we have to keep checking
      -                                        if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
      -                                            return true;
      -                                        }
      -                                    }
      -                                }
      -                            }
      -                        }
      -                    };
      -            }
      -
      -            function elementMatcher( matchers ) {
      -                return matchers.length > 1 ?
      -                    function( elem, context, xml ) {
      -                        var i = matchers.length;
      -                        while ( i-- ) {
      -                            if ( !matchers[i]( elem, context, xml ) ) {
      -                                return false;
      -                            }
      -                        }
      -                        return true;
      -                    } :
      -                    matchers[0];
      -            }
      -
      -            function condense( unmatched, map, filter, context, xml ) {
      -                var elem,
      -                    newUnmatched = [],
      -                    i = 0,
      -                    len = unmatched.length,
      -                    mapped = map != null;
      -
      -                for ( ; i < len; i++ ) {
      -                    if ( (elem = unmatched[i]) ) {
      -                        if ( !filter || filter( elem, context, xml ) ) {
      -                            newUnmatched.push( elem );
      -                            if ( mapped ) {
      -                                map.push( i );
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                return newUnmatched;
      -            }
      -
      -            function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
      -                if ( postFilter && !postFilter[ expando ] ) {
      -                    postFilter = setMatcher( postFilter );
      -                }
      -                if ( postFinder && !postFinder[ expando ] ) {
      -                    postFinder = setMatcher( postFinder, postSelector );
      -                }
      -                return markFunction(function( seed, results, context, xml ) {
      -                    var temp, i, elem,
      -                        preMap = [],
      -                        postMap = [],
      -                        preexisting = results.length,
      -
      -                    // Get initial elements from seed or context
      -                        elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
      -
      -                    // Prefilter to get matcher input, preserving a map for seed-results synchronization
      -                        matcherIn = preFilter && ( seed || !selector ) ?
      -                            condense( elems, preMap, preFilter, context, xml ) :
      -                            elems,
      -
      -                        matcherOut = matcher ?
      -                            // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
      -                            postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
      -
      -                                // ...intermediate processing is necessary
      -                                [] :
      -
      -                                // ...otherwise use results directly
      -                                results :
      -                            matcherIn;
      -
      -                    // Find primary matches
      -                    if ( matcher ) {
      -                        matcher( matcherIn, matcherOut, context, xml );
      -                    }
      -
      -                    // Apply postFilter
      -                    if ( postFilter ) {
      -                        temp = condense( matcherOut, postMap );
      -                        postFilter( temp, [], context, xml );
      -
      -                        // Un-match failing elements by moving them back to matcherIn
      -                        i = temp.length;
      -                        while ( i-- ) {
      -                            if ( (elem = temp[i]) ) {
      -                                matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
      -                            }
      -                        }
      -                    }
      -
      -                    if ( seed ) {
      -                        if ( postFinder || preFilter ) {
      -                            if ( postFinder ) {
      -                                // Get the final matcherOut by condensing this intermediate into postFinder contexts
      -                                temp = [];
      -                                i = matcherOut.length;
      -                                while ( i-- ) {
      -                                    if ( (elem = matcherOut[i]) ) {
      -                                        // Restore matcherIn since elem is not yet a final match
      -                                        temp.push( (matcherIn[i] = elem) );
      -                                    }
      -                                }
      -                                postFinder( null, (matcherOut = []), temp, xml );
      -                            }
      -
      -                            // Move matched elements from seed to results to keep them synchronized
      -                            i = matcherOut.length;
      -                            while ( i-- ) {
      -                                if ( (elem = matcherOut[i]) &&
      -                                    (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
      -
      -                                    seed[temp] = !(results[temp] = elem);
      -                                }
      -                            }
      -                        }
      -
      -                        // Add elements to results, through postFinder if defined
      -                    } else {
      -                        matcherOut = condense(
      -                            matcherOut === results ?
      -                                matcherOut.splice( preexisting, matcherOut.length ) :
      -                                matcherOut
      -                        );
      -                        if ( postFinder ) {
      -                            postFinder( null, results, matcherOut, xml );
      -                        } else {
      -                            push.apply( results, matcherOut );
      -                        }
      -                    }
      -                });
      -            }
      -
      -            function matcherFromTokens( tokens ) {
      -                var checkContext, matcher, j,
      -                    len = tokens.length,
      -                    leadingRelative = Expr.relative[ tokens[0].type ],
      -                    implicitRelative = leadingRelative || Expr.relative[" "],
      -                    i = leadingRelative ? 1 : 0,
      -
      -                // The foundational matcher ensures that elements are reachable from top-level context(s)
      -                    matchContext = addCombinator( function( elem ) {
      -                        return elem === checkContext;
      -                    }, implicitRelative, true ),
      -                    matchAnyContext = addCombinator( function( elem ) {
      -                        return indexOf.call( checkContext, elem ) > -1;
      -                    }, implicitRelative, true ),
      -                    matchers = [ function( elem, context, xml ) {
      -                        return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
      -                            (checkContext = context).nodeType ?
      -                                matchContext( elem, context, xml ) :
      -                                matchAnyContext( elem, context, xml ) );
      -                    } ];
      -
      -                for ( ; i < len; i++ ) {
      -                    if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
      -                        matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
      -                    } else {
      -                        matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
      -
      -                        // Return special upon seeing a positional matcher
      -                        if ( matcher[ expando ] ) {
      -                            // Find the next relative operator (if any) for proper handling
      -                            j = ++i;
      -                            for ( ; j < len; j++ ) {
      -                                if ( Expr.relative[ tokens[j].type ] ) {
      -                                    break;
      -                                }
      -                            }
      -                            return setMatcher(
      -                                i > 1 && elementMatcher( matchers ),
      -                                i > 1 && toSelector(
      -                                    // If the preceding token was a descendant combinator, insert an implicit any-element `*`
      -                                    tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
      -                                ).replace( rtrim, "$1" ),
      -                                matcher,
      -                                i < j && matcherFromTokens( tokens.slice( i, j ) ),
      -                                j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
      -                                j < len && toSelector( tokens )
      -                            );
      -                        }
      -                        matchers.push( matcher );
      -                    }
      -                }
      -
      -                return elementMatcher( matchers );
      -            }
      -
      -            function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
      -                var bySet = setMatchers.length > 0,
      -                    byElement = elementMatchers.length > 0,
      -                    superMatcher = function( seed, context, xml, results, outermost ) {
      -                        var elem, j, matcher,
      -                            matchedCount = 0,
      -                            i = "0",
      -                            unmatched = seed && [],
      -                            setMatched = [],
      -                            contextBackup = outermostContext,
      -                        // We must always have either seed elements or outermost context
      -                            elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
      -                        // Use integer dirruns iff this is the outermost matcher
      -                            dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
      -                            len = elems.length;
      -
      -                        if ( outermost ) {
      -                            outermostContext = context !== document && context;
      -                        }
      -
      -                        // Add elements passing elementMatchers directly to results
      -                        // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
      -                        // Support: IE<9, Safari
      -                        // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
      -                        for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
      -                            if ( byElement && elem ) {
      -                                j = 0;
      -                                while ( (matcher = elementMatchers[j++]) ) {
      -                                    if ( matcher( elem, context, xml ) ) {
      -                                        results.push( elem );
      -                                        break;
      -                                    }
      -                                }
      -                                if ( outermost ) {
      -                                    dirruns = dirrunsUnique;
      -                                }
      -                            }
      -
      -                            // Track unmatched elements for set filters
      -                            if ( bySet ) {
      -                                // They will have gone through all possible matchers
      -                                if ( (elem = !matcher && elem) ) {
      -                                    matchedCount--;
      -                                }
      -
      -                                // Lengthen the array for every element, matched or not
      -                                if ( seed ) {
      -                                    unmatched.push( elem );
      -                                }
      -                            }
      -                        }
      -
      -                        // Apply set filters to unmatched elements
      -                        matchedCount += i;
      -                        if ( bySet && i !== matchedCount ) {
      -                            j = 0;
      -                            while ( (matcher = setMatchers[j++]) ) {
      -                                matcher( unmatched, setMatched, context, xml );
      -                            }
      -
      -                            if ( seed ) {
      -                                // Reintegrate element matches to eliminate the need for sorting
      -                                if ( matchedCount > 0 ) {
      -                                    while ( i-- ) {
      -                                        if ( !(unmatched[i] || setMatched[i]) ) {
      -                                            setMatched[i] = pop.call( results );
      -                                        }
      -                                    }
      -                                }
      -
      -                                // Discard index placeholder values to get only actual matches
      -                                setMatched = condense( setMatched );
      -                            }
      -
      -                            // Add matches to results
      -                            push.apply( results, setMatched );
      -
      -                            // Seedless set matches succeeding multiple successful matchers stipulate sorting
      -                            if ( outermost && !seed && setMatched.length > 0 &&
      -                                ( matchedCount + setMatchers.length ) > 1 ) {
      -
      -                                Sizzle.uniqueSort( results );
      -                            }
      -                        }
      -
      -                        // Override manipulation of globals by nested matchers
      -                        if ( outermost ) {
      -                            dirruns = dirrunsUnique;
      -                            outermostContext = contextBackup;
      -                        }
      -
      -                        return unmatched;
      -                    };
      -
      -                return bySet ?
      -                    markFunction( superMatcher ) :
      -                    superMatcher;
      -            }
      -
      -            compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
      -                var i,
      -                    setMatchers = [],
      -                    elementMatchers = [],
      -                    cached = compilerCache[ selector + " " ];
      -
      -                if ( !cached ) {
      -                    // Generate a function of recursive functions that can be used to check each element
      -                    if ( !group ) {
      -                        group = tokenize( selector );
      -                    }
      -                    i = group.length;
      -                    while ( i-- ) {
      -                        cached = matcherFromTokens( group[i] );
      -                        if ( cached[ expando ] ) {
      -                            setMatchers.push( cached );
      -                        } else {
      -                            elementMatchers.push( cached );
      -                        }
      -                    }
      -
      -                    // Cache the compiled function
      -                    cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
      -                }
      -                return cached;
      -            };
      -
      -            function multipleContexts( selector, contexts, results ) {
      -                var i = 0,
      -                    len = contexts.length;
      -                for ( ; i < len; i++ ) {
      -                    Sizzle( selector, contexts[i], results );
      -                }
      -                return results;
      -            }
      -
      -            function select( selector, context, results, seed ) {
      -                var i, tokens, token, type, find,
      -                    match = tokenize( selector );
      -
      -                if ( !seed ) {
      -                    // Try to minimize operations if there is only one group
      -                    if ( match.length === 1 ) {
      -
      -                        // Take a shortcut and set the context if the root selector is an ID
      -                        tokens = match[0] = match[0].slice( 0 );
      -                        if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
      -                            support.getById && context.nodeType === 9 && documentIsHTML &&
      -                            Expr.relative[ tokens[1].type ] ) {
      -
      -                            context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
      -                            if ( !context ) {
      -                                return results;
      -                            }
      -                            selector = selector.slice( tokens.shift().value.length );
      -                        }
      -
      -                        // Fetch a seed set for right-to-left matching
      -                        i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
      -                        while ( i-- ) {
      -                            token = tokens[i];
      -
      -                            // Abort if we hit a combinator
      -                            if ( Expr.relative[ (type = token.type) ] ) {
      -                                break;
      -                            }
      -                            if ( (find = Expr.find[ type ]) ) {
      -                                // Search, expanding context for leading sibling combinators
      -                                if ( (seed = find(
      -                                    token.matches[0].replace( runescape, funescape ),
      -                                    rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
      -                                )) ) {
      -
      -                                    // If seed is empty or no tokens remain, we can return early
      -                                    tokens.splice( i, 1 );
      -                                    selector = seed.length && toSelector( tokens );
      -                                    if ( !selector ) {
      -                                        push.apply( results, seed );
      -                                        return results;
      -                                    }
      -
      -                                    break;
      -                                }
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                // Compile and execute a filtering function
      -                // Provide `match` to avoid retokenization if we modified the selector above
      -                compile( selector, match )(
      -                    seed,
      -                    context,
      -                    !documentIsHTML,
      -                    results,
      -                    rsibling.test( selector ) && testContext( context.parentNode ) || context
      -                );
      -                return results;
      -            }
      -
      -// One-time assignments
      -
      -// Sort stability
      -            support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
      -
      -// Support: Chrome<14
      -// Always assume duplicates if they aren't passed to the comparison function
      -            support.detectDuplicates = !!hasDuplicate;
      -
      -// Initialize against the default document
      -            setDocument();
      -
      -// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
      -// Detached nodes confoundingly follow *each other*
      -            support.sortDetached = assert(function( div1 ) {
      -                // Should return 1, but returns 4 (following)
      -                return div1.compareDocumentPosition( document.createElement("div") ) & 1;
      -            });
      -
      -// Support: IE<8
      -// Prevent attribute/property "interpolation"
      -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
      -            if ( !assert(function( div ) {
      -                div.innerHTML = "<a href='#'></a>";
      -                return div.firstChild.getAttribute("href") === "#" ;
      -            }) ) {
      -                addHandle( "type|href|height|width", function( elem, name, isXML ) {
      -                    if ( !isXML ) {
      -                        return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
      -                    }
      -                });
      -            }
      -
      -// Support: IE<9
      -// Use defaultValue in place of getAttribute("value")
      -            if ( !support.attributes || !assert(function( div ) {
      -                div.innerHTML = "<input/>";
      -                div.firstChild.setAttribute( "value", "" );
      -                return div.firstChild.getAttribute( "value" ) === "";
      -            }) ) {
      -                addHandle( "value", function( elem, name, isXML ) {
      -                    if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
      -                        return elem.defaultValue;
      -                    }
      -                });
      -            }
      -
      -// Support: IE<9
      -// Use getAttributeNode to fetch booleans when getAttribute lies
      -            if ( !assert(function( div ) {
      -                return div.getAttribute("disabled") == null;
      -            }) ) {
      -                addHandle( booleans, function( elem, name, isXML ) {
      -                    var val;
      -                    if ( !isXML ) {
      -                        return elem[ name ] === true ? name.toLowerCase() :
      -                            (val = elem.getAttributeNode( name )) && val.specified ?
      -                                val.value :
      -                                null;
      -                    }
      -                });
      -            }
      -
      -            return Sizzle;
      -
      -        })( window );
      -
      -
      -
      -    jQuery.find = Sizzle;
      -    jQuery.expr = Sizzle.selectors;
      -    jQuery.expr[":"] = jQuery.expr.pseudos;
      -    jQuery.unique = Sizzle.uniqueSort;
      -    jQuery.text = Sizzle.getText;
      -    jQuery.isXMLDoc = Sizzle.isXML;
      -    jQuery.contains = Sizzle.contains;
      -
      -
      -
      -    var rneedsContext = jQuery.expr.match.needsContext;
      -
      -    var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
      -
      -
      -
      -    var risSimple = /^.[^:#\[\.,]*$/;
      -
      -// Implement the identical functionality for filter and not
      -    function winnow( elements, qualifier, not ) {
      -        if ( jQuery.isFunction( qualifier ) ) {
      -            return jQuery.grep( elements, function( elem, i ) {
      -                /* jshint -W018 */
      -                return !!qualifier.call( elem, i, elem ) !== not;
      -            });
      -
      -        }
      -
      -        if ( qualifier.nodeType ) {
      -            return jQuery.grep( elements, function( elem ) {
      -                return ( elem === qualifier ) !== not;
      -            });
      -
      -        }
      -
      -        if ( typeof qualifier === "string" ) {
      -            if ( risSimple.test( qualifier ) ) {
      -                return jQuery.filter( qualifier, elements, not );
      -            }
      -
      -            qualifier = jQuery.filter( qualifier, elements );
      -        }
      -
      -        return jQuery.grep( elements, function( elem ) {
      -            return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
      -        });
      -    }
      -
      -    jQuery.filter = function( expr, elems, not ) {
      -        var elem = elems[ 0 ];
      -
      -        if ( not ) {
      -            expr = ":not(" + expr + ")";
      -        }
      -
      -        return elems.length === 1 && elem.nodeType === 1 ?
      -            jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
      -            jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
      -                return elem.nodeType === 1;
      -            }));
      -    };
      -
      -    jQuery.fn.extend({
      -        find: function( selector ) {
      -            var i,
      -                len = this.length,
      -                ret = [],
      -                self = this;
      -
      -            if ( typeof selector !== "string" ) {
      -                return this.pushStack( jQuery( selector ).filter(function() {
      -                    for ( i = 0; i < len; i++ ) {
      -                        if ( jQuery.contains( self[ i ], this ) ) {
      -                            return true;
      -                        }
      -                    }
      -                }) );
      -            }
      -
      -            for ( i = 0; i < len; i++ ) {
      -                jQuery.find( selector, self[ i ], ret );
      -            }
      -
      -            // Needed because $( selector, context ) becomes $( context ).find( selector )
      -            ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
      -            ret.selector = this.selector ? this.selector + " " + selector : selector;
      -            return ret;
      -        },
      -        filter: function( selector ) {
      -            return this.pushStack( winnow(this, selector || [], false) );
      -        },
      -        not: function( selector ) {
      -            return this.pushStack( winnow(this, selector || [], true) );
      -        },
      -        is: function( selector ) {
      -            return !!winnow(
      -                this,
      -
      -                // If this is a positional/relative selector, check membership in the returned set
      -                // so $("p:first").is("p:last") won't return true for a doc with two "p".
      -                typeof selector === "string" && rneedsContext.test( selector ) ?
      -                    jQuery( selector ) :
      -                    selector || [],
      -                false
      -            ).length;
      -        }
      -    });
      -
      -
      -// Initialize a jQuery object
      -
      -
      -// A central reference to the root jQuery(document)
      -    var rootjQuery,
      -
      -    // A simple way to check for HTML strings
      -    // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
      -    // Strict HTML recognition (#11290: must start with <)
      -        rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
      -
      -        init = jQuery.fn.init = function( selector, context ) {
      -            var match, elem;
      -
      -            // HANDLE: $(""), $(null), $(undefined), $(false)
      -            if ( !selector ) {
      -                return this;
      -            }
      -
      -            // Handle HTML strings
      -            if ( typeof selector === "string" ) {
      -                if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
      -                    // Assume that strings that start and end with <> are HTML and skip the regex check
      -                    match = [ null, selector, null ];
      -
      -                } else {
      -                    match = rquickExpr.exec( selector );
      -                }
      -
      -                // Match html or make sure no context is specified for #id
      -                if ( match && (match[1] || !context) ) {
      -
      -                    // HANDLE: $(html) -> $(array)
      -                    if ( match[1] ) {
      -                        context = context instanceof jQuery ? context[0] : context;
      -
      -                        // scripts is true for back-compat
      -                        // Intentionally let the error be thrown if parseHTML is not present
      -                        jQuery.merge( this, jQuery.parseHTML(
      -                            match[1],
      -                            context && context.nodeType ? context.ownerDocument || context : document,
      -                            true
      -                        ) );
      -
      -                        // HANDLE: $(html, props)
      -                        if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
      -                            for ( match in context ) {
      -                                // Properties of context are called as methods if possible
      -                                if ( jQuery.isFunction( this[ match ] ) ) {
      -                                    this[ match ]( context[ match ] );
      -
      -                                    // ...and otherwise set as attributes
      -                                } else {
      -                                    this.attr( match, context[ match ] );
      -                                }
      -                            }
      -                        }
      -
      -                        return this;
      -
      -                        // HANDLE: $(#id)
      -                    } else {
      -                        elem = document.getElementById( match[2] );
      -
      -                        // Check parentNode to catch when Blackberry 4.6 returns
      -                        // nodes that are no longer in the document #6963
      -                        if ( elem && elem.parentNode ) {
      -                            // Inject the element directly into the jQuery object
      -                            this.length = 1;
      -                            this[0] = elem;
      -                        }
      -
      -                        this.context = document;
      -                        this.selector = selector;
      -                        return this;
      -                    }
      -
      -                    // HANDLE: $(expr, $(...))
      -                } else if ( !context || context.jquery ) {
      -                    return ( context || rootjQuery ).find( selector );
      -
      -                    // HANDLE: $(expr, context)
      -                    // (which is just equivalent to: $(context).find(expr)
      -                } else {
      -                    return this.constructor( context ).find( selector );
      -                }
      -
      -                // HANDLE: $(DOMElement)
      -            } else if ( selector.nodeType ) {
      -                this.context = this[0] = selector;
      -                this.length = 1;
      -                return this;
      -
      -                // HANDLE: $(function)
      -                // Shortcut for document ready
      -            } else if ( jQuery.isFunction( selector ) ) {
      -                return typeof rootjQuery.ready !== "undefined" ?
      -                    rootjQuery.ready( selector ) :
      -                    // Execute immediately if ready is not present
      -                    selector( jQuery );
      -            }
      -
      -            if ( selector.selector !== undefined ) {
      -                this.selector = selector.selector;
      -                this.context = selector.context;
      -            }
      -
      -            return jQuery.makeArray( selector, this );
      -        };
      -
      -// Give the init function the jQuery prototype for later instantiation
      -    init.prototype = jQuery.fn;
      -
      -// Initialize central reference
      -    rootjQuery = jQuery( document );
      -
      -
      -    var rparentsprev = /^(?:parents|prev(?:Until|All))/,
      -    // methods guaranteed to produce a unique set when starting from a unique set
      -        guaranteedUnique = {
      -            children: true,
      -            contents: true,
      -            next: true,
      -            prev: true
      -        };
      -
      -    jQuery.extend({
      -        dir: function( elem, dir, until ) {
      -            var matched = [],
      -                truncate = until !== undefined;
      -
      -            while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
      -                if ( elem.nodeType === 1 ) {
      -                    if ( truncate && jQuery( elem ).is( until ) ) {
      -                        break;
      -                    }
      -                    matched.push( elem );
      -                }
      -            }
      -            return matched;
      -        },
      -
      -        sibling: function( n, elem ) {
      -            var matched = [];
      -
      -            for ( ; n; n = n.nextSibling ) {
      -                if ( n.nodeType === 1 && n !== elem ) {
      -                    matched.push( n );
      -                }
      -            }
      -
      -            return matched;
      -        }
      -    });
      -
      -    jQuery.fn.extend({
      -        has: function( target ) {
      -            var targets = jQuery( target, this ),
      -                l = targets.length;
      -
      -            return this.filter(function() {
      -                var i = 0;
      -                for ( ; i < l; i++ ) {
      -                    if ( jQuery.contains( this, targets[i] ) ) {
      -                        return true;
      -                    }
      -                }
      -            });
      -        },
      -
      -        closest: function( selectors, context ) {
      -            var cur,
      -                i = 0,
      -                l = this.length,
      -                matched = [],
      -                pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
      -                    jQuery( selectors, context || this.context ) :
      -                    0;
      -
      -            for ( ; i < l; i++ ) {
      -                for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
      -                    // Always skip document fragments
      -                    if ( cur.nodeType < 11 && (pos ?
      -                        pos.index(cur) > -1 :
      -
      -                        // Don't pass non-elements to Sizzle
      -                        cur.nodeType === 1 &&
      -                            jQuery.find.matchesSelector(cur, selectors)) ) {
      -
      -                        matched.push( cur );
      -                        break;
      -                    }
      -                }
      -            }
      -
      -            return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
      -        },
      -
      -        // Determine the position of an element within
      -        // the matched set of elements
      -        index: function( elem ) {
      -
      -            // No argument, return index in parent
      -            if ( !elem ) {
      -                return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
      -            }
      -
      -            // index in selector
      -            if ( typeof elem === "string" ) {
      -                return indexOf.call( jQuery( elem ), this[ 0 ] );
      -            }
      -
      -            // Locate the position of the desired element
      -            return indexOf.call( this,
      -
      -                // If it receives a jQuery object, the first element is used
      -                elem.jquery ? elem[ 0 ] : elem
      -            );
      -        },
      -
      -        add: function( selector, context ) {
      -            return this.pushStack(
      -                jQuery.unique(
      -                    jQuery.merge( this.get(), jQuery( selector, context ) )
      -                )
      -            );
      -        },
      -
      -        addBack: function( selector ) {
      -            return this.add( selector == null ?
      -                this.prevObject : this.prevObject.filter(selector)
      -            );
      -        }
      -    });
      -
      -    function sibling( cur, dir ) {
      -        while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
      -        return cur;
      -    }
      -
      -    jQuery.each({
      -        parent: function( elem ) {
      -            var parent = elem.parentNode;
      -            return parent && parent.nodeType !== 11 ? parent : null;
      -        },
      -        parents: function( elem ) {
      -            return jQuery.dir( elem, "parentNode" );
      -        },
      -        parentsUntil: function( elem, i, until ) {
      -            return jQuery.dir( elem, "parentNode", until );
      -        },
      -        next: function( elem ) {
      -            return sibling( elem, "nextSibling" );
      -        },
      -        prev: function( elem ) {
      -            return sibling( elem, "previousSibling" );
      -        },
      -        nextAll: function( elem ) {
      -            return jQuery.dir( elem, "nextSibling" );
      -        },
      -        prevAll: function( elem ) {
      -            return jQuery.dir( elem, "previousSibling" );
      -        },
      -        nextUntil: function( elem, i, until ) {
      -            return jQuery.dir( elem, "nextSibling", until );
      -        },
      -        prevUntil: function( elem, i, until ) {
      -            return jQuery.dir( elem, "previousSibling", until );
      -        },
      -        siblings: function( elem ) {
      -            return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
      -        },
      -        children: function( elem ) {
      -            return jQuery.sibling( elem.firstChild );
      -        },
      -        contents: function( elem ) {
      -            return elem.contentDocument || jQuery.merge( [], elem.childNodes );
      -        }
      -    }, function( name, fn ) {
      -        jQuery.fn[ name ] = function( until, selector ) {
      -            var matched = jQuery.map( this, fn, until );
      -
      -            if ( name.slice( -5 ) !== "Until" ) {
      -                selector = until;
      -            }
      -
      -            if ( selector && typeof selector === "string" ) {
      -                matched = jQuery.filter( selector, matched );
      -            }
      -
      -            if ( this.length > 1 ) {
      -                // Remove duplicates
      -                if ( !guaranteedUnique[ name ] ) {
      -                    jQuery.unique( matched );
      -                }
      -
      -                // Reverse order for parents* and prev-derivatives
      -                if ( rparentsprev.test( name ) ) {
      -                    matched.reverse();
      -                }
      -            }
      -
      -            return this.pushStack( matched );
      -        };
      -    });
      -    var rnotwhite = (/\S+/g);
      -
      -
      -
      -// String to Object options format cache
      -    var optionsCache = {};
      -
      -// Convert String-formatted options into Object-formatted ones and store in cache
      -    function createOptions( options ) {
      -        var object = optionsCache[ options ] = {};
      -        jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
      -            object[ flag ] = true;
      -        });
      -        return object;
      -    }
      -
      -    /*
      -     * Create a callback list using the following parameters:
      -     *
      -     *	options: an optional list of space-separated options that will change how
      -     *			the callback list behaves or a more traditional option object
      -     *
      -     * By default a callback list will act like an event callback list and can be
      -     * "fired" multiple times.
      -     *
      -     * Possible options:
      -     *
      -     *	once:			will ensure the callback list can only be fired once (like a Deferred)
      -     *
      -     *	memory:			will keep track of previous values and will call any callback added
      -     *					after the list has been fired right away with the latest "memorized"
      -     *					values (like a Deferred)
      -     *
      -     *	unique:			will ensure a callback can only be added once (no duplicate in the list)
      -     *
      -     *	stopOnFalse:	interrupt callings when a callback returns false
      -     *
      -     */
      -    jQuery.Callbacks = function( options ) {
      -
      -        // Convert options from String-formatted to Object-formatted if needed
      -        // (we check in cache first)
      -        options = typeof options === "string" ?
      -            ( optionsCache[ options ] || createOptions( options ) ) :
      -            jQuery.extend( {}, options );
      -
      -        var // Last fire value (for non-forgettable lists)
      -            memory,
      -        // Flag to know if list was already fired
      -            fired,
      -        // Flag to know if list is currently firing
      -            firing,
      -        // First callback to fire (used internally by add and fireWith)
      -            firingStart,
      -        // End of the loop when firing
      -            firingLength,
      -        // Index of currently firing callback (modified by remove if needed)
      -            firingIndex,
      -        // Actual callback list
      -            list = [],
      -        // Stack of fire calls for repeatable lists
      -            stack = !options.once && [],
      -        // Fire callbacks
      -            fire = function( data ) {
      -                memory = options.memory && data;
      -                fired = true;
      -                firingIndex = firingStart || 0;
      -                firingStart = 0;
      -                firingLength = list.length;
      -                firing = true;
      -                for ( ; list && firingIndex < firingLength; firingIndex++ ) {
      -                    if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
      -                        memory = false; // To prevent further calls using add
      -                        break;
      -                    }
      -                }
      -                firing = false;
      -                if ( list ) {
      -                    if ( stack ) {
      -                        if ( stack.length ) {
      -                            fire( stack.shift() );
      -                        }
      -                    } else if ( memory ) {
      -                        list = [];
      -                    } else {
      -                        self.disable();
      -                    }
      -                }
      -            },
      -        // Actual Callbacks object
      -            self = {
      -                // Add a callback or a collection of callbacks to the list
      -                add: function() {
      -                    if ( list ) {
      -                        // First, we save the current length
      -                        var start = list.length;
      -                        (function add( args ) {
      -                            jQuery.each( args, function( _, arg ) {
      -                                var type = jQuery.type( arg );
      -                                if ( type === "function" ) {
      -                                    if ( !options.unique || !self.has( arg ) ) {
      -                                        list.push( arg );
      -                                    }
      -                                } else if ( arg && arg.length && type !== "string" ) {
      -                                    // Inspect recursively
      -                                    add( arg );
      -                                }
      -                            });
      -                        })( arguments );
      -                        // Do we need to add the callbacks to the
      -                        // current firing batch?
      -                        if ( firing ) {
      -                            firingLength = list.length;
      -                            // With memory, if we're not firing then
      -                            // we should call right away
      -                        } else if ( memory ) {
      -                            firingStart = start;
      -                            fire( memory );
      -                        }
      -                    }
      -                    return this;
      -                },
      -                // Remove a callback from the list
      -                remove: function() {
      -                    if ( list ) {
      -                        jQuery.each( arguments, function( _, arg ) {
      -                            var index;
      -                            while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
      -                                list.splice( index, 1 );
      -                                // Handle firing indexes
      -                                if ( firing ) {
      -                                    if ( index <= firingLength ) {
      -                                        firingLength--;
      -                                    }
      -                                    if ( index <= firingIndex ) {
      -                                        firingIndex--;
      -                                    }
      -                                }
      -                            }
      -                        });
      -                    }
      -                    return this;
      -                },
      -                // Check if a given callback is in the list.
      -                // If no argument is given, return whether or not list has callbacks attached.
      -                has: function( fn ) {
      -                    return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
      -                },
      -                // Remove all callbacks from the list
      -                empty: function() {
      -                    list = [];
      -                    firingLength = 0;
      -                    return this;
      -                },
      -                // Have the list do nothing anymore
      -                disable: function() {
      -                    list = stack = memory = undefined;
      -                    return this;
      -                },
      -                // Is it disabled?
      -                disabled: function() {
      -                    return !list;
      -                },
      -                // Lock the list in its current state
      -                lock: function() {
      -                    stack = undefined;
      -                    if ( !memory ) {
      -                        self.disable();
      -                    }
      -                    return this;
      -                },
      -                // Is it locked?
      -                locked: function() {
      -                    return !stack;
      -                },
      -                // Call all callbacks with the given context and arguments
      -                fireWith: function( context, args ) {
      -                    if ( list && ( !fired || stack ) ) {
      -                        args = args || [];
      -                        args = [ context, args.slice ? args.slice() : args ];
      -                        if ( firing ) {
      -                            stack.push( args );
      -                        } else {
      -                            fire( args );
      -                        }
      -                    }
      -                    return this;
      -                },
      -                // Call all the callbacks with the given arguments
      -                fire: function() {
      -                    self.fireWith( this, arguments );
      -                    return this;
      -                },
      -                // To know if the callbacks have already been called at least once
      -                fired: function() {
      -                    return !!fired;
      -                }
      -            };
      -
      -        return self;
      -    };
      -
      -
      -    jQuery.extend({
      -
      -        Deferred: function( func ) {
      -            var tuples = [
      -                    // action, add listener, listener list, final state
      -                    [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
      -                    [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
      -                    [ "notify", "progress", jQuery.Callbacks("memory") ]
      -                ],
      -                state = "pending",
      -                promise = {
      -                    state: function() {
      -                        return state;
      -                    },
      -                    always: function() {
      -                        deferred.done( arguments ).fail( arguments );
      -                        return this;
      -                    },
      -                    then: function( /* fnDone, fnFail, fnProgress */ ) {
      -                        var fns = arguments;
      -                        return jQuery.Deferred(function( newDefer ) {
      -                            jQuery.each( tuples, function( i, tuple ) {
      -                                var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
      -                                // deferred[ done | fail | progress ] for forwarding actions to newDefer
      -                                deferred[ tuple[1] ](function() {
      -                                    var returned = fn && fn.apply( this, arguments );
      -                                    if ( returned && jQuery.isFunction( returned.promise ) ) {
      -                                        returned.promise()
      -                                            .done( newDefer.resolve )
      -                                            .fail( newDefer.reject )
      -                                            .progress( newDefer.notify );
      -                                    } else {
      -                                        newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
      -                                    }
      -                                });
      -                            });
      -                            fns = null;
      -                        }).promise();
      -                    },
      -                    // Get a promise for this deferred
      -                    // If obj is provided, the promise aspect is added to the object
      -                    promise: function( obj ) {
      -                        return obj != null ? jQuery.extend( obj, promise ) : promise;
      -                    }
      -                },
      -                deferred = {};
      -
      -            // Keep pipe for back-compat
      -            promise.pipe = promise.then;
      -
      -            // Add list-specific methods
      -            jQuery.each( tuples, function( i, tuple ) {
      -                var list = tuple[ 2 ],
      -                    stateString = tuple[ 3 ];
      -
      -                // promise[ done | fail | progress ] = list.add
      -                promise[ tuple[1] ] = list.add;
      -
      -                // Handle state
      -                if ( stateString ) {
      -                    list.add(function() {
      -                        // state = [ resolved | rejected ]
      -                        state = stateString;
      -
      -                        // [ reject_list | resolve_list ].disable; progress_list.lock
      -                    }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
      -                }
      -
      -                // deferred[ resolve | reject | notify ]
      -                deferred[ tuple[0] ] = function() {
      -                    deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
      -                    return this;
      -                };
      -                deferred[ tuple[0] + "With" ] = list.fireWith;
      -            });
      -
      -            // Make the deferred a promise
      -            promise.promise( deferred );
      -
      -            // Call given func if any
      -            if ( func ) {
      -                func.call( deferred, deferred );
      -            }
      -
      -            // All done!
      -            return deferred;
      -        },
      -
      -        // Deferred helper
      -        when: function( subordinate /* , ..., subordinateN */ ) {
      -            var i = 0,
      -                resolveValues = slice.call( arguments ),
      -                length = resolveValues.length,
      -
      -            // the count of uncompleted subordinates
      -                remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
      -
      -            // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
      -                deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
      -
      -            // Update function for both resolve and progress values
      -                updateFunc = function( i, contexts, values ) {
      -                    return function( value ) {
      -                        contexts[ i ] = this;
      -                        values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
      -                        if ( values === progressValues ) {
      -                            deferred.notifyWith( contexts, values );
      -                        } else if ( !( --remaining ) ) {
      -                            deferred.resolveWith( contexts, values );
      -                        }
      -                    };
      -                },
      -
      -                progressValues, progressContexts, resolveContexts;
      -
      -            // add listeners to Deferred subordinates; treat others as resolved
      -            if ( length > 1 ) {
      -                progressValues = new Array( length );
      -                progressContexts = new Array( length );
      -                resolveContexts = new Array( length );
      -                for ( ; i < length; i++ ) {
      -                    if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
      -                        resolveValues[ i ].promise()
      -                            .done( updateFunc( i, resolveContexts, resolveValues ) )
      -                            .fail( deferred.reject )
      -                            .progress( updateFunc( i, progressContexts, progressValues ) );
      -                    } else {
      -                        --remaining;
      -                    }
      -                }
      -            }
      -
      -            // if we're not waiting on anything, resolve the master
      -            if ( !remaining ) {
      -                deferred.resolveWith( resolveContexts, resolveValues );
      -            }
      -
      -            return deferred.promise();
      -        }
      -    });
      -
      -
      -// The deferred used on DOM ready
      -    var readyList;
      -
      -    jQuery.fn.ready = function( fn ) {
      -        // Add the callback
      -        jQuery.ready.promise().done( fn );
      -
      -        return this;
      -    };
      -
      -    jQuery.extend({
      -        // Is the DOM ready to be used? Set to true once it occurs.
      -        isReady: false,
      -
      -        // A counter to track how many items to wait for before
      -        // the ready event fires. See #6781
      -        readyWait: 1,
      -
      -        // Hold (or release) the ready event
      -        holdReady: function( hold ) {
      -            if ( hold ) {
      -                jQuery.readyWait++;
      -            } else {
      -                jQuery.ready( true );
      -            }
      -        },
      -
      -        // Handle when the DOM is ready
      -        ready: function( wait ) {
      -
      -            // Abort if there are pending holds or we're already ready
      -            if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
      -                return;
      -            }
      -
      -            // Remember that the DOM is ready
      -            jQuery.isReady = true;
      -
      -            // If a normal DOM Ready event fired, decrement, and wait if need be
      -            if ( wait !== true && --jQuery.readyWait > 0 ) {
      -                return;
      -            }
      -
      -            // If there are functions bound, to execute
      -            readyList.resolveWith( document, [ jQuery ] );
      -
      -            // Trigger any bound ready events
      -            if ( jQuery.fn.trigger ) {
      -                jQuery( document ).trigger("ready").off("ready");
      -            }
      -        }
      -    });
      -
      -    /**
      -     * The ready event handler and self cleanup method
      -     */
      -    function completed() {
      -        document.removeEventListener( "DOMContentLoaded", completed, false );
      -        window.removeEventListener( "load", completed, false );
      -        jQuery.ready();
      -    }
      -
      -    jQuery.ready.promise = function( obj ) {
      -        if ( !readyList ) {
      -
      -            readyList = jQuery.Deferred();
      -
      -            // Catch cases where $(document).ready() is called after the browser event has already occurred.
      -            // we once tried to use readyState "interactive" here, but it caused issues like the one
      -            // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
      -            if ( document.readyState === "complete" ) {
      -                // Handle it asynchronously to allow scripts the opportunity to delay ready
      -                setTimeout( jQuery.ready );
      -
      -            } else {
      -
      -                // Use the handy event callback
      -                document.addEventListener( "DOMContentLoaded", completed, false );
      -
      -                // A fallback to window.onload, that will always work
      -                window.addEventListener( "load", completed, false );
      -            }
      -        }
      -        return readyList.promise( obj );
      -    };
      -
      -// Kick off the DOM ready check even if the user does not
      -    jQuery.ready.promise();
      -
      -
      -
      -
      -// Multifunctional method to get and set values of a collection
      -// The value/s can optionally be executed if it's a function
      -    var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
      -        var i = 0,
      -            len = elems.length,
      -            bulk = key == null;
      -
      -        // Sets many values
      -        if ( jQuery.type( key ) === "object" ) {
      -            chainable = true;
      -            for ( i in key ) {
      -                jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
      -            }
      -
      -            // Sets one value
      -        } else if ( value !== undefined ) {
      -            chainable = true;
      -
      -            if ( !jQuery.isFunction( value ) ) {
      -                raw = true;
      -            }
      -
      -            if ( bulk ) {
      -                // Bulk operations run against the entire set
      -                if ( raw ) {
      -                    fn.call( elems, value );
      -                    fn = null;
      -
      -                    // ...except when executing function values
      -                } else {
      -                    bulk = fn;
      -                    fn = function( elem, key, value ) {
      -                        return bulk.call( jQuery( elem ), value );
      -                    };
      -                }
      -            }
      -
      -            if ( fn ) {
      -                for ( ; i < len; i++ ) {
      -                    fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
      -                }
      -            }
      -        }
      -
      -        return chainable ?
      -            elems :
      -
      -            // Gets
      -            bulk ?
      -                fn.call( elems ) :
      -                len ? fn( elems[0], key ) : emptyGet;
      -    };
      -
      -
      -    /**
      -     * Determines whether an object can have data
      -     */
      -    jQuery.acceptData = function( owner ) {
      -        // Accepts only:
      -        //  - Node
      -        //    - Node.ELEMENT_NODE
      -        //    - Node.DOCUMENT_NODE
      -        //  - Object
      -        //    - Any
      -        /* jshint -W018 */
      -        return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
      -    };
      -
      -
      -    function Data() {
      -        // Support: Android < 4,
      -        // Old WebKit does not have Object.preventExtensions/freeze method,
      -        // return new empty object instead with no [[set]] accessor
      -        Object.defineProperty( this.cache = {}, 0, {
      -            get: function() {
      -                return {};
      -            }
      -        });
      -
      -        this.expando = jQuery.expando + Math.random();
      -    }
      -
      -    Data.uid = 1;
      -    Data.accepts = jQuery.acceptData;
      -
      -    Data.prototype = {
      -        key: function( owner ) {
      -            // We can accept data for non-element nodes in modern browsers,
      -            // but we should not, see #8335.
      -            // Always return the key for a frozen object.
      -            if ( !Data.accepts( owner ) ) {
      -                return 0;
      -            }
      -
      -            var descriptor = {},
      -            // Check if the owner object already has a cache key
      -                unlock = owner[ this.expando ];
      -
      -            // If not, create one
      -            if ( !unlock ) {
      -                unlock = Data.uid++;
      -
      -                // Secure it in a non-enumerable, non-writable property
      -                try {
      -                    descriptor[ this.expando ] = { value: unlock };
      -                    Object.defineProperties( owner, descriptor );
      -
      -                    // Support: Android < 4
      -                    // Fallback to a less secure definition
      -                } catch ( e ) {
      -                    descriptor[ this.expando ] = unlock;
      -                    jQuery.extend( owner, descriptor );
      -                }
      -            }
      -
      -            // Ensure the cache object
      -            if ( !this.cache[ unlock ] ) {
      -                this.cache[ unlock ] = {};
      -            }
      -
      -            return unlock;
      -        },
      -        set: function( owner, data, value ) {
      -            var prop,
      -            // There may be an unlock assigned to this node,
      -            // if there is no entry for this "owner", create one inline
      -            // and set the unlock as though an owner entry had always existed
      -                unlock = this.key( owner ),
      -                cache = this.cache[ unlock ];
      -
      -            // Handle: [ owner, key, value ] args
      -            if ( typeof data === "string" ) {
      -                cache[ data ] = value;
      -
      -                // Handle: [ owner, { properties } ] args
      -            } else {
      -                // Fresh assignments by object are shallow copied
      -                if ( jQuery.isEmptyObject( cache ) ) {
      -                    jQuery.extend( this.cache[ unlock ], data );
      -                    // Otherwise, copy the properties one-by-one to the cache object
      -                } else {
      -                    for ( prop in data ) {
      -                        cache[ prop ] = data[ prop ];
      -                    }
      -                }
      -            }
      -            return cache;
      -        },
      -        get: function( owner, key ) {
      -            // Either a valid cache is found, or will be created.
      -            // New caches will be created and the unlock returned,
      -            // allowing direct access to the newly created
      -            // empty data object. A valid owner object must be provided.
      -            var cache = this.cache[ this.key( owner ) ];
      -
      -            return key === undefined ?
      -                cache : cache[ key ];
      -        },
      -        access: function( owner, key, value ) {
      -            var stored;
      -            // In cases where either:
      -            //
      -            //   1. No key was specified
      -            //   2. A string key was specified, but no value provided
      -            //
      -            // Take the "read" path and allow the get method to determine
      -            // which value to return, respectively either:
      -            //
      -            //   1. The entire cache object
      -            //   2. The data stored at the key
      -            //
      -            if ( key === undefined ||
      -                ((key && typeof key === "string") && value === undefined) ) {
      -
      -                stored = this.get( owner, key );
      -
      -                return stored !== undefined ?
      -                    stored : this.get( owner, jQuery.camelCase(key) );
      -            }
      -
      -            // [*]When the key is not a string, or both a key and value
      -            // are specified, set or extend (existing objects) with either:
      -            //
      -            //   1. An object of properties
      -            //   2. A key and value
      -            //
      -            this.set( owner, key, value );
      -
      -            // Since the "set" path can have two possible entry points
      -            // return the expected data based on which path was taken[*]
      -            return value !== undefined ? value : key;
      -        },
      -        remove: function( owner, key ) {
      -            var i, name, camel,
      -                unlock = this.key( owner ),
      -                cache = this.cache[ unlock ];
      -
      -            if ( key === undefined ) {
      -                this.cache[ unlock ] = {};
      -
      -            } else {
      -                // Support array or space separated string of keys
      -                if ( jQuery.isArray( key ) ) {
      -                    // If "name" is an array of keys...
      -                    // When data is initially created, via ("key", "val") signature,
      -                    // keys will be converted to camelCase.
      -                    // Since there is no way to tell _how_ a key was added, remove
      -                    // both plain key and camelCase key. #12786
      -                    // This will only penalize the array argument path.
      -                    name = key.concat( key.map( jQuery.camelCase ) );
      -                } else {
      -                    camel = jQuery.camelCase( key );
      -                    // Try the string as a key before any manipulation
      -                    if ( key in cache ) {
      -                        name = [ key, camel ];
      -                    } else {
      -                        // If a key with the spaces exists, use it.
      -                        // Otherwise, create an array by matching non-whitespace
      -                        name = camel;
      -                        name = name in cache ?
      -                            [ name ] : ( name.match( rnotwhite ) || [] );
      -                    }
      -                }
      -
      -                i = name.length;
      -                while ( i-- ) {
      -                    delete cache[ name[ i ] ];
      -                }
      -            }
      -        },
      -        hasData: function( owner ) {
      -            return !jQuery.isEmptyObject(
      -                this.cache[ owner[ this.expando ] ] || {}
      -            );
      -        },
      -        discard: function( owner ) {
      -            if ( owner[ this.expando ] ) {
      -                delete this.cache[ owner[ this.expando ] ];
      -            }
      -        }
      -    };
      -    var data_priv = new Data();
      -
      -    var data_user = new Data();
      -
      -
      -
      -    /*
      -     Implementation Summary
      -
      -     1. Enforce API surface and semantic compatibility with 1.9.x branch
      -     2. Improve the module's maintainability by reducing the storage
      -     paths to a single mechanism.
      -     3. Use the same single mechanism to support "private" and "user" data.
      -     4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
      -     5. Avoid exposing implementation details on user objects (eg. expando properties)
      -     6. Provide a clear path for implementation upgrade to WeakMap in 2014
      -     */
      -    var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
      -        rmultiDash = /([A-Z])/g;
      -
      -    function dataAttr( elem, key, data ) {
      -        var name;
      -
      -        // If nothing was found internally, try to fetch any
      -        // data from the HTML5 data-* attribute
      -        if ( data === undefined && elem.nodeType === 1 ) {
      -            name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
      -            data = elem.getAttribute( name );
      -
      -            if ( typeof data === "string" ) {
      -                try {
      -                    data = data === "true" ? true :
      -                        data === "false" ? false :
      -                            data === "null" ? null :
      -                                // Only convert to a number if it doesn't change the string
      -                                +data + "" === data ? +data :
      -                                    rbrace.test( data ) ? jQuery.parseJSON( data ) :
      -                                        data;
      -                } catch( e ) {}
      -
      -                // Make sure we set the data so it isn't changed later
      -                data_user.set( elem, key, data );
      -            } else {
      -                data = undefined;
      -            }
      -        }
      -        return data;
      -    }
      -
      -    jQuery.extend({
      -        hasData: function( elem ) {
      -            return data_user.hasData( elem ) || data_priv.hasData( elem );
      -        },
      -
      -        data: function( elem, name, data ) {
      -            return data_user.access( elem, name, data );
      -        },
      -
      -        removeData: function( elem, name ) {
      -            data_user.remove( elem, name );
      -        },
      -
      -        // TODO: Now that all calls to _data and _removeData have been replaced
      -        // with direct calls to data_priv methods, these can be deprecated.
      -        _data: function( elem, name, data ) {
      -            return data_priv.access( elem, name, data );
      -        },
      -
      -        _removeData: function( elem, name ) {
      -            data_priv.remove( elem, name );
      -        }
      -    });
      -
      -    jQuery.fn.extend({
      -        data: function( key, value ) {
      -            var i, name, data,
      -                elem = this[ 0 ],
      -                attrs = elem && elem.attributes;
      -
      -            // Gets all values
      -            if ( key === undefined ) {
      -                if ( this.length ) {
      -                    data = data_user.get( elem );
      -
      -                    if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
      -                        i = attrs.length;
      -                        while ( i-- ) {
      -                            name = attrs[ i ].name;
      -
      -                            if ( name.indexOf( "data-" ) === 0 ) {
      -                                name = jQuery.camelCase( name.slice(5) );
      -                                dataAttr( elem, name, data[ name ] );
      -                            }
      -                        }
      -                        data_priv.set( elem, "hasDataAttrs", true );
      -                    }
      -                }
      -
      -                return data;
      -            }
      -
      -            // Sets multiple values
      -            if ( typeof key === "object" ) {
      -                return this.each(function() {
      -                    data_user.set( this, key );
      -                });
      -            }
      -
      -            return access( this, function( value ) {
      -                var data,
      -                    camelKey = jQuery.camelCase( key );
      -
      -                // The calling jQuery object (element matches) is not empty
      -                // (and therefore has an element appears at this[ 0 ]) and the
      -                // `value` parameter was not undefined. An empty jQuery object
      -                // will result in `undefined` for elem = this[ 0 ] which will
      -                // throw an exception if an attempt to read a data cache is made.
      -                if ( elem && value === undefined ) {
      -                    // Attempt to get data from the cache
      -                    // with the key as-is
      -                    data = data_user.get( elem, key );
      -                    if ( data !== undefined ) {
      -                        return data;
      -                    }
      -
      -                    // Attempt to get data from the cache
      -                    // with the key camelized
      -                    data = data_user.get( elem, camelKey );
      -                    if ( data !== undefined ) {
      -                        return data;
      -                    }
      -
      -                    // Attempt to "discover" the data in
      -                    // HTML5 custom data-* attrs
      -                    data = dataAttr( elem, camelKey, undefined );
      -                    if ( data !== undefined ) {
      -                        return data;
      -                    }
      -
      -                    // We tried really hard, but the data doesn't exist.
      -                    return;
      -                }
      -
      -                // Set the data...
      -                this.each(function() {
      -                    // First, attempt to store a copy or reference of any
      -                    // data that might've been store with a camelCased key.
      -                    var data = data_user.get( this, camelKey );
      -
      -                    // For HTML5 data-* attribute interop, we have to
      -                    // store property names with dashes in a camelCase form.
      -                    // This might not apply to all properties...*
      -                    data_user.set( this, camelKey, value );
      -
      -                    // *... In the case of properties that might _actually_
      -                    // have dashes, we need to also store a copy of that
      -                    // unchanged property.
      -                    if ( key.indexOf("-") !== -1 && data !== undefined ) {
      -                        data_user.set( this, key, value );
      -                    }
      -                });
      -            }, null, value, arguments.length > 1, null, true );
      -        },
      -
      -        removeData: function( key ) {
      -            return this.each(function() {
      -                data_user.remove( this, key );
      -            });
      -        }
      -    });
      -
      -
      -    jQuery.extend({
      -        queue: function( elem, type, data ) {
      -            var queue;
      -
      -            if ( elem ) {
      -                type = ( type || "fx" ) + "queue";
      -                queue = data_priv.get( elem, type );
      -
      -                // Speed up dequeue by getting out quickly if this is just a lookup
      -                if ( data ) {
      -                    if ( !queue || jQuery.isArray( data ) ) {
      -                        queue = data_priv.access( elem, type, jQuery.makeArray(data) );
      -                    } else {
      -                        queue.push( data );
      -                    }
      -                }
      -                return queue || [];
      -            }
      -        },
      -
      -        dequeue: function( elem, type ) {
      -            type = type || "fx";
      -
      -            var queue = jQuery.queue( elem, type ),
      -                startLength = queue.length,
      -                fn = queue.shift(),
      -                hooks = jQuery._queueHooks( elem, type ),
      -                next = function() {
      -                    jQuery.dequeue( elem, type );
      -                };
      -
      -            // If the fx queue is dequeued, always remove the progress sentinel
      -            if ( fn === "inprogress" ) {
      -                fn = queue.shift();
      -                startLength--;
      -            }
      -
      -            if ( fn ) {
      -
      -                // Add a progress sentinel to prevent the fx queue from being
      -                // automatically dequeued
      -                if ( type === "fx" ) {
      -                    queue.unshift( "inprogress" );
      -                }
      -
      -                // clear up the last queue stop function
      -                delete hooks.stop;
      -                fn.call( elem, next, hooks );
      -            }
      -
      -            if ( !startLength && hooks ) {
      -                hooks.empty.fire();
      -            }
      -        },
      -
      -        // not intended for public consumption - generates a queueHooks object, or returns the current one
      -        _queueHooks: function( elem, type ) {
      -            var key = type + "queueHooks";
      -            return data_priv.get( elem, key ) || data_priv.access( elem, key, {
      -                empty: jQuery.Callbacks("once memory").add(function() {
      -                    data_priv.remove( elem, [ type + "queue", key ] );
      -                })
      -            });
      -        }
      -    });
      -
      -    jQuery.fn.extend({
      -        queue: function( type, data ) {
      -            var setter = 2;
      -
      -            if ( typeof type !== "string" ) {
      -                data = type;
      -                type = "fx";
      -                setter--;
      -            }
      -
      -            if ( arguments.length < setter ) {
      -                return jQuery.queue( this[0], type );
      -            }
      -
      -            return data === undefined ?
      -                this :
      -                this.each(function() {
      -                    var queue = jQuery.queue( this, type, data );
      -
      -                    // ensure a hooks for this queue
      -                    jQuery._queueHooks( this, type );
      -
      -                    if ( type === "fx" && queue[0] !== "inprogress" ) {
      -                        jQuery.dequeue( this, type );
      -                    }
      -                });
      -        },
      -        dequeue: function( type ) {
      -            return this.each(function() {
      -                jQuery.dequeue( this, type );
      -            });
      -        },
      -        clearQueue: function( type ) {
      -            return this.queue( type || "fx", [] );
      -        },
      -        // Get a promise resolved when queues of a certain type
      -        // are emptied (fx is the type by default)
      -        promise: function( type, obj ) {
      -            var tmp,
      -                count = 1,
      -                defer = jQuery.Deferred(),
      -                elements = this,
      -                i = this.length,
      -                resolve = function() {
      -                    if ( !( --count ) ) {
      -                        defer.resolveWith( elements, [ elements ] );
      -                    }
      -                };
      -
      -            if ( typeof type !== "string" ) {
      -                obj = type;
      -                type = undefined;
      -            }
      -            type = type || "fx";
      -
      -            while ( i-- ) {
      -                tmp = data_priv.get( elements[ i ], type + "queueHooks" );
      -                if ( tmp && tmp.empty ) {
      -                    count++;
      -                    tmp.empty.add( resolve );
      -                }
      -            }
      -            resolve();
      -            return defer.promise( obj );
      -        }
      -    });
      -    var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
      -
      -    var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
      -
      -    var isHidden = function( elem, el ) {
      -        // isHidden might be called from jQuery#filter function;
      -        // in that case, element will be second argument
      -        elem = el || elem;
      -        return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
      -    };
      -
      -    var rcheckableType = (/^(?:checkbox|radio)$/i);
      -
      -
      -
      -    (function() {
      -        var fragment = document.createDocumentFragment(),
      -            div = fragment.appendChild( document.createElement( "div" ) );
      -
      -        // #11217 - WebKit loses check when the name is after the checked attribute
      -        div.innerHTML = "<input type='radio' checked='checked' name='t'/>";
      -
      -        // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
      -        // old WebKit doesn't clone checked state correctly in fragments
      -        support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
      -
      -        // Make sure textarea (and checkbox) defaultValue is properly cloned
      -        // Support: IE9-IE11+
      -        div.innerHTML = "<textarea>x</textarea>";
      -        support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
      -    })();
      -    var strundefined = typeof undefined;
      -
      -
      -
      -    support.focusinBubbles = "onfocusin" in window;
      -
      -
      -    var
      -        rkeyEvent = /^key/,
      -        rmouseEvent = /^(?:mouse|contextmenu)|click/,
      -        rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
      -        rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
      -
      -    function returnTrue() {
      -        return true;
      -    }
      -
      -    function returnFalse() {
      -        return false;
      -    }
      -
      -    function safeActiveElement() {
      -        try {
      -            return document.activeElement;
      -        } catch ( err ) { }
      -    }
      -
      -    /*
      -     * Helper functions for managing events -- not part of the public interface.
      -     * Props to Dean Edwards' addEvent library for many of the ideas.
      -     */
      -    jQuery.event = {
      -
      -        global: {},
      -
      -        add: function( elem, types, handler, data, selector ) {
      -
      -            var handleObjIn, eventHandle, tmp,
      -                events, t, handleObj,
      -                special, handlers, type, namespaces, origType,
      -                elemData = data_priv.get( elem );
      -
      -            // Don't attach events to noData or text/comment nodes (but allow plain objects)
      -            if ( !elemData ) {
      -                return;
      -            }
      -
      -            // Caller can pass in an object of custom data in lieu of the handler
      -            if ( handler.handler ) {
      -                handleObjIn = handler;
      -                handler = handleObjIn.handler;
      -                selector = handleObjIn.selector;
      -            }
      -
      -            // Make sure that the handler has a unique ID, used to find/remove it later
      -            if ( !handler.guid ) {
      -                handler.guid = jQuery.guid++;
      -            }
      -
      -            // Init the element's event structure and main handler, if this is the first
      -            if ( !(events = elemData.events) ) {
      -                events = elemData.events = {};
      -            }
      -            if ( !(eventHandle = elemData.handle) ) {
      -                eventHandle = elemData.handle = function( e ) {
      -                    // Discard the second event of a jQuery.event.trigger() and
      -                    // when an event is called after a page has unloaded
      -                    return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
      -                        jQuery.event.dispatch.apply( elem, arguments ) : undefined;
      -                };
      -            }
      -
      -            // Handle multiple events separated by a space
      -            types = ( types || "" ).match( rnotwhite ) || [ "" ];
      -            t = types.length;
      -            while ( t-- ) {
      -                tmp = rtypenamespace.exec( types[t] ) || [];
      -                type = origType = tmp[1];
      -                namespaces = ( tmp[2] || "" ).split( "." ).sort();
      -
      -                // There *must* be a type, no attaching namespace-only handlers
      -                if ( !type ) {
      -                    continue;
      -                }
      -
      -                // If event changes its type, use the special event handlers for the changed type
      -                special = jQuery.event.special[ type ] || {};
      -
      -                // If selector defined, determine special event api type, otherwise given type
      -                type = ( selector ? special.delegateType : special.bindType ) || type;
      -
      -                // Update special based on newly reset type
      -                special = jQuery.event.special[ type ] || {};
      -
      -                // handleObj is passed to all event handlers
      -                handleObj = jQuery.extend({
      -                    type: type,
      -                    origType: origType,
      -                    data: data,
      -                    handler: handler,
      -                    guid: handler.guid,
      -                    selector: selector,
      -                    needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
      -                    namespace: namespaces.join(".")
      -                }, handleObjIn );
      -
      -                // Init the event handler queue if we're the first
      -                if ( !(handlers = events[ type ]) ) {
      -                    handlers = events[ type ] = [];
      -                    handlers.delegateCount = 0;
      -
      -                    // Only use addEventListener if the special events handler returns false
      -                    if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
      -                        if ( elem.addEventListener ) {
      -                            elem.addEventListener( type, eventHandle, false );
      -                        }
      -                    }
      -                }
      -
      -                if ( special.add ) {
      -                    special.add.call( elem, handleObj );
      -
      -                    if ( !handleObj.handler.guid ) {
      -                        handleObj.handler.guid = handler.guid;
      -                    }
      -                }
      -
      -                // Add to the element's handler list, delegates in front
      -                if ( selector ) {
      -                    handlers.splice( handlers.delegateCount++, 0, handleObj );
      -                } else {
      -                    handlers.push( handleObj );
      -                }
      -
      -                // Keep track of which events have ever been used, for event optimization
      -                jQuery.event.global[ type ] = true;
      -            }
      -
      -        },
      -
      -        // Detach an event or set of events from an element
      -        remove: function( elem, types, handler, selector, mappedTypes ) {
      -
      -            var j, origCount, tmp,
      -                events, t, handleObj,
      -                special, handlers, type, namespaces, origType,
      -                elemData = data_priv.hasData( elem ) && data_priv.get( elem );
      -
      -            if ( !elemData || !(events = elemData.events) ) {
      -                return;
      -            }
      -
      -            // Once for each type.namespace in types; type may be omitted
      -            types = ( types || "" ).match( rnotwhite ) || [ "" ];
      -            t = types.length;
      -            while ( t-- ) {
      -                tmp = rtypenamespace.exec( types[t] ) || [];
      -                type = origType = tmp[1];
      -                namespaces = ( tmp[2] || "" ).split( "." ).sort();
      -
      -                // Unbind all events (on this namespace, if provided) for the element
      -                if ( !type ) {
      -                    for ( type in events ) {
      -                        jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
      -                    }
      -                    continue;
      -                }
      -
      -                special = jQuery.event.special[ type ] || {};
      -                type = ( selector ? special.delegateType : special.bindType ) || type;
      -                handlers = events[ type ] || [];
      -                tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
      -
      -                // Remove matching events
      -                origCount = j = handlers.length;
      -                while ( j-- ) {
      -                    handleObj = handlers[ j ];
      -
      -                    if ( ( mappedTypes || origType === handleObj.origType ) &&
      -                        ( !handler || handler.guid === handleObj.guid ) &&
      -                        ( !tmp || tmp.test( handleObj.namespace ) ) &&
      -                        ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
      -                        handlers.splice( j, 1 );
      -
      -                        if ( handleObj.selector ) {
      -                            handlers.delegateCount--;
      -                        }
      -                        if ( special.remove ) {
      -                            special.remove.call( elem, handleObj );
      -                        }
      -                    }
      -                }
      -
      -                // Remove generic event handler if we removed something and no more handlers exist
      -                // (avoids potential for endless recursion during removal of special event handlers)
      -                if ( origCount && !handlers.length ) {
      -                    if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
      -                        jQuery.removeEvent( elem, type, elemData.handle );
      -                    }
      -
      -                    delete events[ type ];
      -                }
      -            }
      -
      -            // Remove the expando if it's no longer used
      -            if ( jQuery.isEmptyObject( events ) ) {
      -                delete elemData.handle;
      -                data_priv.remove( elem, "events" );
      -            }
      -        },
      -
      -        trigger: function( event, data, elem, onlyHandlers ) {
      -
      -            var i, cur, tmp, bubbleType, ontype, handle, special,
      -                eventPath = [ elem || document ],
      -                type = hasOwn.call( event, "type" ) ? event.type : event,
      -                namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
      -
      -            cur = tmp = elem = elem || document;
      -
      -            // Don't do events on text and comment nodes
      -            if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
      -                return;
      -            }
      -
      -            // focus/blur morphs to focusin/out; ensure we're not firing them right now
      -            if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
      -                return;
      -            }
      -
      -            if ( type.indexOf(".") >= 0 ) {
      -                // Namespaced trigger; create a regexp to match event type in handle()
      -                namespaces = type.split(".");
      -                type = namespaces.shift();
      -                namespaces.sort();
      -            }
      -            ontype = type.indexOf(":") < 0 && "on" + type;
      -
      -            // Caller can pass in a jQuery.Event object, Object, or just an event type string
      -            event = event[ jQuery.expando ] ?
      -                event :
      -                new jQuery.Event( type, typeof event === "object" && event );
      -
      -            // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
      -            event.isTrigger = onlyHandlers ? 2 : 3;
      -            event.namespace = namespaces.join(".");
      -            event.namespace_re = event.namespace ?
      -                new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
      -                null;
      -
      -            // Clean up the event in case it is being reused
      -            event.result = undefined;
      -            if ( !event.target ) {
      -                event.target = elem;
      -            }
      -
      -            // Clone any incoming data and prepend the event, creating the handler arg list
      -            data = data == null ?
      -                [ event ] :
      -                jQuery.makeArray( data, [ event ] );
      -
      -            // Allow special events to draw outside the lines
      -            special = jQuery.event.special[ type ] || {};
      -            if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
      -                return;
      -            }
      -
      -            // Determine event propagation path in advance, per W3C events spec (#9951)
      -            // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
      -            if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
      -
      -                bubbleType = special.delegateType || type;
      -                if ( !rfocusMorph.test( bubbleType + type ) ) {
      -                    cur = cur.parentNode;
      -                }
      -                for ( ; cur; cur = cur.parentNode ) {
      -                    eventPath.push( cur );
      -                    tmp = cur;
      -                }
      -
      -                // Only add window if we got to document (e.g., not plain obj or detached DOM)
      -                if ( tmp === (elem.ownerDocument || document) ) {
      -                    eventPath.push( tmp.defaultView || tmp.parentWindow || window );
      -                }
      -            }
      -
      -            // Fire handlers on the event path
      -            i = 0;
      -            while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
      -
      -                event.type = i > 1 ?
      -                    bubbleType :
      -                    special.bindType || type;
      -
      -                // jQuery handler
      -                handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
      -                if ( handle ) {
      -                    handle.apply( cur, data );
      -                }
      -
      -                // Native handler
      -                handle = ontype && cur[ ontype ];
      -                if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
      -                    event.result = handle.apply( cur, data );
      -                    if ( event.result === false ) {
      -                        event.preventDefault();
      -                    }
      -                }
      -            }
      -            event.type = type;
      -
      -            // If nobody prevented the default action, do it now
      -            if ( !onlyHandlers && !event.isDefaultPrevented() ) {
      -
      -                if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
      -                    jQuery.acceptData( elem ) ) {
      -
      -                    // Call a native DOM method on the target with the same name name as the event.
      -                    // Don't do default actions on window, that's where global variables be (#6170)
      -                    if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
      -
      -                        // Don't re-trigger an onFOO event when we call its FOO() method
      -                        tmp = elem[ ontype ];
      -
      -                        if ( tmp ) {
      -                            elem[ ontype ] = null;
      -                        }
      -
      -                        // Prevent re-triggering of the same event, since we already bubbled it above
      -                        jQuery.event.triggered = type;
      -                        elem[ type ]();
      -                        jQuery.event.triggered = undefined;
      -
      -                        if ( tmp ) {
      -                            elem[ ontype ] = tmp;
      -                        }
      -                    }
      -                }
      -            }
      -
      -            return event.result;
      -        },
      -
      -        dispatch: function( event ) {
      -
      -            // Make a writable jQuery.Event from the native event object
      -            event = jQuery.event.fix( event );
      -
      -            var i, j, ret, matched, handleObj,
      -                handlerQueue = [],
      -                args = slice.call( arguments ),
      -                handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
      -                special = jQuery.event.special[ event.type ] || {};
      -
      -            // Use the fix-ed jQuery.Event rather than the (read-only) native event
      -            args[0] = event;
      -            event.delegateTarget = this;
      -
      -            // Call the preDispatch hook for the mapped type, and let it bail if desired
      -            if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
      -                return;
      -            }
      -
      -            // Determine handlers
      -            handlerQueue = jQuery.event.handlers.call( this, event, handlers );
      -
      -            // Run delegates first; they may want to stop propagation beneath us
      -            i = 0;
      -            while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
      -                event.currentTarget = matched.elem;
      -
      -                j = 0;
      -                while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
      -
      -                    // Triggered event must either 1) have no namespace, or
      -                    // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
      -                    if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
      -
      -                        event.handleObj = handleObj;
      -                        event.data = handleObj.data;
      -
      -                        ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
      -                            .apply( matched.elem, args );
      -
      -                        if ( ret !== undefined ) {
      -                            if ( (event.result = ret) === false ) {
      -                                event.preventDefault();
      -                                event.stopPropagation();
      -                            }
      -                        }
      -                    }
      -                }
      -            }
      -
      -            // Call the postDispatch hook for the mapped type
      -            if ( special.postDispatch ) {
      -                special.postDispatch.call( this, event );
      -            }
      -
      -            return event.result;
      -        },
      -
      -        handlers: function( event, handlers ) {
      -            var i, matches, sel, handleObj,
      -                handlerQueue = [],
      -                delegateCount = handlers.delegateCount,
      -                cur = event.target;
      -
      -            // Find delegate handlers
      -            // Black-hole SVG <use> instance trees (#13180)
      -            // Avoid non-left-click bubbling in Firefox (#3861)
      -            if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
      -
      -                for ( ; cur !== this; cur = cur.parentNode || this ) {
      -
      -                    // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
      -                    if ( cur.disabled !== true || event.type !== "click" ) {
      -                        matches = [];
      -                        for ( i = 0; i < delegateCount; i++ ) {
      -                            handleObj = handlers[ i ];
      -
      -                            // Don't conflict with Object.prototype properties (#13203)
      -                            sel = handleObj.selector + " ";
      -
      -                            if ( matches[ sel ] === undefined ) {
      -                                matches[ sel ] = handleObj.needsContext ?
      -                                    jQuery( sel, this ).index( cur ) >= 0 :
      -                                    jQuery.find( sel, this, null, [ cur ] ).length;
      -                            }
      -                            if ( matches[ sel ] ) {
      -                                matches.push( handleObj );
      -                            }
      -                        }
      -                        if ( matches.length ) {
      -                            handlerQueue.push({ elem: cur, handlers: matches });
      -                        }
      -                    }
      -                }
      -            }
      -
      -            // Add the remaining (directly-bound) handlers
      -            if ( delegateCount < handlers.length ) {
      -                handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
      -            }
      -
      -            return handlerQueue;
      -        },
      -
      -        // Includes some event props shared by KeyEvent and MouseEvent
      -        props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
      -
      -        fixHooks: {},
      -
      -        keyHooks: {
      -            props: "char charCode key keyCode".split(" "),
      -            filter: function( event, original ) {
      -
      -                // Add which for key events
      -                if ( event.which == null ) {
      -                    event.which = original.charCode != null ? original.charCode : original.keyCode;
      -                }
      -
      -                return event;
      -            }
      -        },
      -
      -        mouseHooks: {
      -            props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
      -            filter: function( event, original ) {
      -                var eventDoc, doc, body,
      -                    button = original.button;
      -
      -                // Calculate pageX/Y if missing and clientX/Y available
      -                if ( event.pageX == null && original.clientX != null ) {
      -                    eventDoc = event.target.ownerDocument || document;
      -                    doc = eventDoc.documentElement;
      -                    body = eventDoc.body;
      -
      -                    event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
      -                    event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
      -                }
      -
      -                // Add which for click: 1 === left; 2 === middle; 3 === right
      -                // Note: button is not normalized, so don't use it
      -                if ( !event.which && button !== undefined ) {
      -                    event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
      -                }
      -
      -                return event;
      -            }
      -        },
      -
      -        fix: function( event ) {
      -            if ( event[ jQuery.expando ] ) {
      -                return event;
      -            }
      -
      -            // Create a writable copy of the event object and normalize some properties
      -            var i, prop, copy,
      -                type = event.type,
      -                originalEvent = event,
      -                fixHook = this.fixHooks[ type ];
      -
      -            if ( !fixHook ) {
      -                this.fixHooks[ type ] = fixHook =
      -                    rmouseEvent.test( type ) ? this.mouseHooks :
      -                        rkeyEvent.test( type ) ? this.keyHooks :
      -                        {};
      -            }
      -            copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
      -
      -            event = new jQuery.Event( originalEvent );
      -
      -            i = copy.length;
      -            while ( i-- ) {
      -                prop = copy[ i ];
      -                event[ prop ] = originalEvent[ prop ];
      -            }
      -
      -            // Support: Cordova 2.5 (WebKit) (#13255)
      -            // All events should have a target; Cordova deviceready doesn't
      -            if ( !event.target ) {
      -                event.target = document;
      -            }
      -
      -            // Support: Safari 6.0+, Chrome < 28
      -            // Target should not be a text node (#504, #13143)
      -            if ( event.target.nodeType === 3 ) {
      -                event.target = event.target.parentNode;
      -            }
      -
      -            return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
      -        },
      -
      -        special: {
      -            load: {
      -                // Prevent triggered image.load events from bubbling to window.load
      -                noBubble: true
      -            },
      -            focus: {
      -                // Fire native event if possible so blur/focus sequence is correct
      -                trigger: function() {
      -                    if ( this !== safeActiveElement() && this.focus ) {
      -                        this.focus();
      -                        return false;
      -                    }
      -                },
      -                delegateType: "focusin"
      -            },
      -            blur: {
      -                trigger: function() {
      -                    if ( this === safeActiveElement() && this.blur ) {
      -                        this.blur();
      -                        return false;
      -                    }
      -                },
      -                delegateType: "focusout"
      -            },
      -            click: {
      -                // For checkbox, fire native event so checked state will be right
      -                trigger: function() {
      -                    if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
      -                        this.click();
      -                        return false;
      -                    }
      -                },
      -
      -                // For cross-browser consistency, don't fire native .click() on links
      -                _default: function( event ) {
      -                    return jQuery.nodeName( event.target, "a" );
      -                }
      -            },
      -
      -            beforeunload: {
      -                postDispatch: function( event ) {
      -
      -                    // Support: Firefox 20+
      -                    // Firefox doesn't alert if the returnValue field is not set.
      -                    if ( event.result !== undefined ) {
      -                        event.originalEvent.returnValue = event.result;
      -                    }
      -                }
      -            }
      -        },
      -
      -        simulate: function( type, elem, event, bubble ) {
      -            // Piggyback on a donor event to simulate a different one.
      -            // Fake originalEvent to avoid donor's stopPropagation, but if the
      -            // simulated event prevents default then we do the same on the donor.
      -            var e = jQuery.extend(
      -                new jQuery.Event(),
      -                event,
      -                {
      -                    type: type,
      -                    isSimulated: true,
      -                    originalEvent: {}
      -                }
      -            );
      -            if ( bubble ) {
      -                jQuery.event.trigger( e, null, elem );
      -            } else {
      -                jQuery.event.dispatch.call( elem, e );
      -            }
      -            if ( e.isDefaultPrevented() ) {
      -                event.preventDefault();
      -            }
      -        }
      -    };
      -
      -    jQuery.removeEvent = function( elem, type, handle ) {
      -        if ( elem.removeEventListener ) {
      -            elem.removeEventListener( type, handle, false );
      -        }
      -    };
      -
      -    jQuery.Event = function( src, props ) {
      -        // Allow instantiation without the 'new' keyword
      -        if ( !(this instanceof jQuery.Event) ) {
      -            return new jQuery.Event( src, props );
      -        }
      -
      -        // Event object
      -        if ( src && src.type ) {
      -            this.originalEvent = src;
      -            this.type = src.type;
      -
      -            // Events bubbling up the document may have been marked as prevented
      -            // by a handler lower down the tree; reflect the correct value.
      -            this.isDefaultPrevented = src.defaultPrevented ||
      -                // Support: Android < 4.0
      -                src.defaultPrevented === undefined &&
      -                    src.getPreventDefault && src.getPreventDefault() ?
      -                returnTrue :
      -                returnFalse;
      -
      -            // Event type
      -        } else {
      -            this.type = src;
      -        }
      -
      -        // Put explicitly provided properties onto the event object
      -        if ( props ) {
      -            jQuery.extend( this, props );
      -        }
      -
      -        // Create a timestamp if incoming event doesn't have one
      -        this.timeStamp = src && src.timeStamp || jQuery.now();
      -
      -        // Mark it as fixed
      -        this[ jQuery.expando ] = true;
      -    };
      -
      -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
      -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      -    jQuery.Event.prototype = {
      -        isDefaultPrevented: returnFalse,
      -        isPropagationStopped: returnFalse,
      -        isImmediatePropagationStopped: returnFalse,
      -
      -        preventDefault: function() {
      -            var e = this.originalEvent;
      -
      -            this.isDefaultPrevented = returnTrue;
      -
      -            if ( e && e.preventDefault ) {
      -                e.preventDefault();
      -            }
      -        },
      -        stopPropagation: function() {
      -            var e = this.originalEvent;
      -
      -            this.isPropagationStopped = returnTrue;
      -
      -            if ( e && e.stopPropagation ) {
      -                e.stopPropagation();
      -            }
      -        },
      -        stopImmediatePropagation: function() {
      -            this.isImmediatePropagationStopped = returnTrue;
      -            this.stopPropagation();
      -        }
      -    };
      -
      -// Create mouseenter/leave events using mouseover/out and event-time checks
      -// Support: Chrome 15+
      -    jQuery.each({
      -        mouseenter: "mouseover",
      -        mouseleave: "mouseout"
      -    }, function( orig, fix ) {
      -        jQuery.event.special[ orig ] = {
      -            delegateType: fix,
      -            bindType: fix,
      -
      -            handle: function( event ) {
      -                var ret,
      -                    target = this,
      -                    related = event.relatedTarget,
      -                    handleObj = event.handleObj;
      -
      -                // For mousenter/leave call the handler if related is outside the target.
      -                // NB: No relatedTarget if the mouse left/entered the browser window
      -                if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
      -                    event.type = handleObj.origType;
      -                    ret = handleObj.handler.apply( this, arguments );
      -                    event.type = fix;
      -                }
      -                return ret;
      -            }
      -        };
      -    });
      -
      -// Create "bubbling" focus and blur events
      -// Support: Firefox, Chrome, Safari
      -    if ( !support.focusinBubbles ) {
      -        jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
      -
      -            // Attach a single capturing handler on the document while someone wants focusin/focusout
      -            var handler = function( event ) {
      -                jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
      -            };
      -
      -            jQuery.event.special[ fix ] = {
      -                setup: function() {
      -                    var doc = this.ownerDocument || this,
      -                        attaches = data_priv.access( doc, fix );
      -
      -                    if ( !attaches ) {
      -                        doc.addEventListener( orig, handler, true );
      -                    }
      -                    data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
      -                },
      -                teardown: function() {
      -                    var doc = this.ownerDocument || this,
      -                        attaches = data_priv.access( doc, fix ) - 1;
      -
      -                    if ( !attaches ) {
      -                        doc.removeEventListener( orig, handler, true );
      -                        data_priv.remove( doc, fix );
      -
      -                    } else {
      -                        data_priv.access( doc, fix, attaches );
      -                    }
      -                }
      -            };
      -        });
      -    }
      -
      -    jQuery.fn.extend({
      -
      -        on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
      -            var origFn, type;
      -
      -            // Types can be a map of types/handlers
      -            if ( typeof types === "object" ) {
      -                // ( types-Object, selector, data )
      -                if ( typeof selector !== "string" ) {
      -                    // ( types-Object, data )
      -                    data = data || selector;
      -                    selector = undefined;
      -                }
      -                for ( type in types ) {
      -                    this.on( type, selector, data, types[ type ], one );
      -                }
      -                return this;
      -            }
      -
      -            if ( data == null && fn == null ) {
      -                // ( types, fn )
      -                fn = selector;
      -                data = selector = undefined;
      -            } else if ( fn == null ) {
      -                if ( typeof selector === "string" ) {
      -                    // ( types, selector, fn )
      -                    fn = data;
      -                    data = undefined;
      -                } else {
      -                    // ( types, data, fn )
      -                    fn = data;
      -                    data = selector;
      -                    selector = undefined;
      -                }
      -            }
      -            if ( fn === false ) {
      -                fn = returnFalse;
      -            } else if ( !fn ) {
      -                return this;
      -            }
      -
      -            if ( one === 1 ) {
      -                origFn = fn;
      -                fn = function( event ) {
      -                    // Can use an empty set, since event contains the info
      -                    jQuery().off( event );
      -                    return origFn.apply( this, arguments );
      -                };
      -                // Use same guid so caller can remove using origFn
      -                fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
      -            }
      -            return this.each( function() {
      -                jQuery.event.add( this, types, fn, data, selector );
      -            });
      -        },
      -        one: function( types, selector, data, fn ) {
      -            return this.on( types, selector, data, fn, 1 );
      -        },
      -        off: function( types, selector, fn ) {
      -            var handleObj, type;
      -            if ( types && types.preventDefault && types.handleObj ) {
      -                // ( event )  dispatched jQuery.Event
      -                handleObj = types.handleObj;
      -                jQuery( types.delegateTarget ).off(
      -                    handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
      -                    handleObj.selector,
      -                    handleObj.handler
      -                );
      -                return this;
      -            }
      -            if ( typeof types === "object" ) {
      -                // ( types-object [, selector] )
      -                for ( type in types ) {
      -                    this.off( type, selector, types[ type ] );
      -                }
      -                return this;
      -            }
      -            if ( selector === false || typeof selector === "function" ) {
      -                // ( types [, fn] )
      -                fn = selector;
      -                selector = undefined;
      -            }
      -            if ( fn === false ) {
      -                fn = returnFalse;
      -            }
      -            return this.each(function() {
      -                jQuery.event.remove( this, types, fn, selector );
      -            });
      -        },
      -
      -        trigger: function( type, data ) {
      -            return this.each(function() {
      -                jQuery.event.trigger( type, data, this );
      -            });
      -        },
      -        triggerHandler: function( type, data ) {
      -            var elem = this[0];
      -            if ( elem ) {
      -                return jQuery.event.trigger( type, data, elem, true );
      -            }
      -        }
      -    });
      -
      -
      -    var
      -        rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
      -        rtagName = /<([\w:]+)/,
      -        rhtml = /<|&#?\w+;/,
      -        rnoInnerhtml = /<(?:script|style|link)/i,
      -    // checked="checked" or checked
      -        rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
      -        rscriptType = /^$|\/(?:java|ecma)script/i,
      -        rscriptTypeMasked = /^true\/(.*)/,
      -        rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
      -
      -    // We have to close these tags to support XHTML (#13200)
      -        wrapMap = {
      -
      -            // Support: IE 9
      -            option: [ 1, "<select multiple='multiple'>", "</select>" ],
      -
      -            thead: [ 1, "<table>", "</table>" ],
      -            col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
      -            tr: [ 2, "<table><tbody>", "</tbody></table>" ],
      -            td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
      -
      -            _default: [ 0, "", "" ]
      -        };
      -
      -// Support: IE 9
      -    wrapMap.optgroup = wrapMap.option;
      -
      -    wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
      -    wrapMap.th = wrapMap.td;
      -
      -// Support: 1.x compatibility
      -// Manipulating tables requires a tbody
      -    function manipulationTarget( elem, content ) {
      -        return jQuery.nodeName( elem, "table" ) &&
      -            jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
      -
      -            elem.getElementsByTagName("tbody")[0] ||
      -                elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
      -            elem;
      -    }
      -
      -// Replace/restore the type attribute of script elements for safe DOM manipulation
      -    function disableScript( elem ) {
      -        elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
      -        return elem;
      -    }
      -    function restoreScript( elem ) {
      -        var match = rscriptTypeMasked.exec( elem.type );
      -
      -        if ( match ) {
      -            elem.type = match[ 1 ];
      -        } else {
      -            elem.removeAttribute("type");
      -        }
      -
      -        return elem;
      -    }
      -
      -// Mark scripts as having already been evaluated
      -    function setGlobalEval( elems, refElements ) {
      -        var i = 0,
      -            l = elems.length;
      -
      -        for ( ; i < l; i++ ) {
      -            data_priv.set(
      -                elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
      -            );
      -        }
      -    }
      -
      -    function cloneCopyEvent( src, dest ) {
      -        var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
      -
      -        if ( dest.nodeType !== 1 ) {
      -            return;
      -        }
      -
      -        // 1. Copy private data: events, handlers, etc.
      -        if ( data_priv.hasData( src ) ) {
      -            pdataOld = data_priv.access( src );
      -            pdataCur = data_priv.set( dest, pdataOld );
      -            events = pdataOld.events;
      -
      -            if ( events ) {
      -                delete pdataCur.handle;
      -                pdataCur.events = {};
      -
      -                for ( type in events ) {
      -                    for ( i = 0, l = events[ type ].length; i < l; i++ ) {
      -                        jQuery.event.add( dest, type, events[ type ][ i ] );
      -                    }
      -                }
      -            }
      -        }
      -
      -        // 2. Copy user data
      -        if ( data_user.hasData( src ) ) {
      -            udataOld = data_user.access( src );
      -            udataCur = jQuery.extend( {}, udataOld );
      -
      -            data_user.set( dest, udataCur );
      -        }
      -    }
      -
      -    function getAll( context, tag ) {
      -        var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
      -            context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
      -                [];
      -
      -        return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
      -            jQuery.merge( [ context ], ret ) :
      -            ret;
      -    }
      -
      -// Support: IE >= 9
      -    function fixInput( src, dest ) {
      -        var nodeName = dest.nodeName.toLowerCase();
      -
      -        // Fails to persist the checked state of a cloned checkbox or radio button.
      -        if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
      -            dest.checked = src.checked;
      -
      -            // Fails to return the selected option to the default selected state when cloning options
      -        } else if ( nodeName === "input" || nodeName === "textarea" ) {
      -            dest.defaultValue = src.defaultValue;
      -        }
      -    }
      -
      -    jQuery.extend({
      -        clone: function( elem, dataAndEvents, deepDataAndEvents ) {
      -            var i, l, srcElements, destElements,
      -                clone = elem.cloneNode( true ),
      -                inPage = jQuery.contains( elem.ownerDocument, elem );
      -
      -            // Support: IE >= 9
      -            // Fix Cloning issues
      -            if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
      -                !jQuery.isXMLDoc( elem ) ) {
      -
      -                // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
      -                destElements = getAll( clone );
      -                srcElements = getAll( elem );
      -
      -                for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -                    fixInput( srcElements[ i ], destElements[ i ] );
      -                }
      -            }
      -
      -            // Copy the events from the original to the clone
      -            if ( dataAndEvents ) {
      -                if ( deepDataAndEvents ) {
      -                    srcElements = srcElements || getAll( elem );
      -                    destElements = destElements || getAll( clone );
      -
      -                    for ( i = 0, l = srcElements.length; i < l; i++ ) {
      -                        cloneCopyEvent( srcElements[ i ], destElements[ i ] );
      -                    }
      -                } else {
      -                    cloneCopyEvent( elem, clone );
      -                }
      -            }
      -
      -            // Preserve script evaluation history
      -            destElements = getAll( clone, "script" );
      -            if ( destElements.length > 0 ) {
      -                setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
      -            }
      -
      -            // Return the cloned set
      -            return clone;
      -        },
      -
      -        buildFragment: function( elems, context, scripts, selection ) {
      -            var elem, tmp, tag, wrap, contains, j,
      -                fragment = context.createDocumentFragment(),
      -                nodes = [],
      -                i = 0,
      -                l = elems.length;
      -
      -            for ( ; i < l; i++ ) {
      -                elem = elems[ i ];
      -
      -                if ( elem || elem === 0 ) {
      -
      -                    // Add nodes directly
      -                    if ( jQuery.type( elem ) === "object" ) {
      -                        // Support: QtWebKit
      -                        // jQuery.merge because push.apply(_, arraylike) throws
      -                        jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
      -
      -                        // Convert non-html into a text node
      -                    } else if ( !rhtml.test( elem ) ) {
      -                        nodes.push( context.createTextNode( elem ) );
      -
      -                        // Convert html into DOM nodes
      -                    } else {
      -                        tmp = tmp || fragment.appendChild( context.createElement("div") );
      -
      -                        // Deserialize a standard representation
      -                        tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
      -                        wrap = wrapMap[ tag ] || wrapMap._default;
      -                        tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[ 2 ];
      -
      -                        // Descend through wrappers to the right content
      -                        j = wrap[ 0 ];
      -                        while ( j-- ) {
      -                            tmp = tmp.lastChild;
      -                        }
      -
      -                        // Support: QtWebKit
      -                        // jQuery.merge because push.apply(_, arraylike) throws
      -                        jQuery.merge( nodes, tmp.childNodes );
      -
      -                        // Remember the top-level container
      -                        tmp = fragment.firstChild;
      -
      -                        // Fixes #12346
      -                        // Support: Webkit, IE
      -                        tmp.textContent = "";
      -                    }
      -                }
      -            }
      -
      -            // Remove wrapper from fragment
      -            fragment.textContent = "";
      -
      -            i = 0;
      -            while ( (elem = nodes[ i++ ]) ) {
      -
      -                // #4087 - If origin and destination elements are the same, and this is
      -                // that element, do not do anything
      -                if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
      -                    continue;
      -                }
      -
      -                contains = jQuery.contains( elem.ownerDocument, elem );
      -
      -                // Append to fragment
      -                tmp = getAll( fragment.appendChild( elem ), "script" );
      -
      -                // Preserve script evaluation history
      -                if ( contains ) {
      -                    setGlobalEval( tmp );
      -                }
      -
      -                // Capture executables
      -                if ( scripts ) {
      -                    j = 0;
      -                    while ( (elem = tmp[ j++ ]) ) {
      -                        if ( rscriptType.test( elem.type || "" ) ) {
      -                            scripts.push( elem );
      -                        }
      -                    }
      -                }
      -            }
      -
      -            return fragment;
      -        },
      -
      -        cleanData: function( elems ) {
      -            var data, elem, events, type, key, j,
      -                special = jQuery.event.special,
      -                i = 0;
      -
      -            for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
      -                if ( jQuery.acceptData( elem ) ) {
      -                    key = elem[ data_priv.expando ];
      -
      -                    if ( key && (data = data_priv.cache[ key ]) ) {
      -                        events = Object.keys( data.events || {} );
      -                        if ( events.length ) {
      -                            for ( j = 0; (type = events[j]) !== undefined; j++ ) {
      -                                if ( special[ type ] ) {
      -                                    jQuery.event.remove( elem, type );
      -
      -                                    // This is a shortcut to avoid jQuery.event.remove's overhead
      -                                } else {
      -                                    jQuery.removeEvent( elem, type, data.handle );
      -                                }
      -                            }
      -                        }
      -                        if ( data_priv.cache[ key ] ) {
      -                            // Discard any remaining `private` data
      -                            delete data_priv.cache[ key ];
      -                        }
      -                    }
      -                }
      -                // Discard any remaining `user` data
      -                delete data_user.cache[ elem[ data_user.expando ] ];
      -            }
      -        }
      -    });
      -
      -    jQuery.fn.extend({
      -        text: function( value ) {
      -            return access( this, function( value ) {
      -                return value === undefined ?
      -                    jQuery.text( this ) :
      -                    this.empty().each(function() {
      -                        if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -                            this.textContent = value;
      -                        }
      -                    });
      -            }, null, value, arguments.length );
      -        },
      -
      -        append: function() {
      -            return this.domManip( arguments, function( elem ) {
      -                if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -                    var target = manipulationTarget( this, elem );
      -                    target.appendChild( elem );
      -                }
      -            });
      -        },
      -
      -        prepend: function() {
      -            return this.domManip( arguments, function( elem ) {
      -                if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -                    var target = manipulationTarget( this, elem );
      -                    target.insertBefore( elem, target.firstChild );
      -                }
      -            });
      -        },
      -
      -        before: function() {
      -            return this.domManip( arguments, function( elem ) {
      -                if ( this.parentNode ) {
      -                    this.parentNode.insertBefore( elem, this );
      -                }
      -            });
      -        },
      -
      -        after: function() {
      -            return this.domManip( arguments, function( elem ) {
      -                if ( this.parentNode ) {
      -                    this.parentNode.insertBefore( elem, this.nextSibling );
      -                }
      -            });
      -        },
      -
      -        remove: function( selector, keepData /* Internal Use Only */ ) {
      -            var elem,
      -                elems = selector ? jQuery.filter( selector, this ) : this,
      -                i = 0;
      -
      -            for ( ; (elem = elems[i]) != null; i++ ) {
      -                if ( !keepData && elem.nodeType === 1 ) {
      -                    jQuery.cleanData( getAll( elem ) );
      -                }
      -
      -                if ( elem.parentNode ) {
      -                    if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
      -                        setGlobalEval( getAll( elem, "script" ) );
      -                    }
      -                    elem.parentNode.removeChild( elem );
      -                }
      -            }
      -
      -            return this;
      -        },
      -
      -        empty: function() {
      -            var elem,
      -                i = 0;
      -
      -            for ( ; (elem = this[i]) != null; i++ ) {
      -                if ( elem.nodeType === 1 ) {
      -
      -                    // Prevent memory leaks
      -                    jQuery.cleanData( getAll( elem, false ) );
      -
      -                    // Remove any remaining nodes
      -                    elem.textContent = "";
      -                }
      -            }
      -
      -            return this;
      -        },
      -
      -        clone: function( dataAndEvents, deepDataAndEvents ) {
      -            dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
      -            deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
      -
      -            return this.map(function() {
      -                return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
      -            });
      -        },
      -
      -        html: function( value ) {
      -            return access( this, function( value ) {
      -                var elem = this[ 0 ] || {},
      -                    i = 0,
      -                    l = this.length;
      -
      -                if ( value === undefined && elem.nodeType === 1 ) {
      -                    return elem.innerHTML;
      -                }
      -
      -                // See if we can take a shortcut and just use innerHTML
      -                if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
      -                    !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
      -
      -                    value = value.replace( rxhtmlTag, "<$1></$2>" );
      -
      -                    try {
      -                        for ( ; i < l; i++ ) {
      -                            elem = this[ i ] || {};
      -
      -                            // Remove element nodes and prevent memory leaks
      -                            if ( elem.nodeType === 1 ) {
      -                                jQuery.cleanData( getAll( elem, false ) );
      -                                elem.innerHTML = value;
      -                            }
      -                        }
      -
      -                        elem = 0;
      -
      -                        // If using innerHTML throws an exception, use the fallback method
      -                    } catch( e ) {}
      -                }
      -
      -                if ( elem ) {
      -                    this.empty().append( value );
      -                }
      -            }, null, value, arguments.length );
      -        },
      -
      -        replaceWith: function() {
      -            var arg = arguments[ 0 ];
      -
      -            // Make the changes, replacing each context element with the new content
      -            this.domManip( arguments, function( elem ) {
      -                arg = this.parentNode;
      -
      -                jQuery.cleanData( getAll( this ) );
      -
      -                if ( arg ) {
      -                    arg.replaceChild( elem, this );
      -                }
      -            });
      -
      -            // Force removal if there was no new content (e.g., from empty arguments)
      -            return arg && (arg.length || arg.nodeType) ? this : this.remove();
      -        },
      -
      -        detach: function( selector ) {
      -            return this.remove( selector, true );
      -        },
      -
      -        domManip: function( args, callback ) {
      -
      -            // Flatten any nested arrays
      -            args = concat.apply( [], args );
      -
      -            var fragment, first, scripts, hasScripts, node, doc,
      -                i = 0,
      -                l = this.length,
      -                set = this,
      -                iNoClone = l - 1,
      -                value = args[ 0 ],
      -                isFunction = jQuery.isFunction( value );
      -
      -            // We can't cloneNode fragments that contain checked, in WebKit
      -            if ( isFunction ||
      -                ( l > 1 && typeof value === "string" &&
      -                    !support.checkClone && rchecked.test( value ) ) ) {
      -                return this.each(function( index ) {
      -                    var self = set.eq( index );
      -                    if ( isFunction ) {
      -                        args[ 0 ] = value.call( this, index, self.html() );
      -                    }
      -                    self.domManip( args, callback );
      -                });
      -            }
      -
      -            if ( l ) {
      -                fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
      -                first = fragment.firstChild;
      -
      -                if ( fragment.childNodes.length === 1 ) {
      -                    fragment = first;
      -                }
      -
      -                if ( first ) {
      -                    scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
      -                    hasScripts = scripts.length;
      -
      -                    // Use the original fragment for the last item instead of the first because it can end up
      -                    // being emptied incorrectly in certain situations (#8070).
      -                    for ( ; i < l; i++ ) {
      -                        node = fragment;
      -
      -                        if ( i !== iNoClone ) {
      -                            node = jQuery.clone( node, true, true );
      -
      -                            // Keep references to cloned scripts for later restoration
      -                            if ( hasScripts ) {
      -                                // Support: QtWebKit
      -                                // jQuery.merge because push.apply(_, arraylike) throws
      -                                jQuery.merge( scripts, getAll( node, "script" ) );
      -                            }
      -                        }
      -
      -                        callback.call( this[ i ], node, i );
      -                    }
      -
      -                    if ( hasScripts ) {
      -                        doc = scripts[ scripts.length - 1 ].ownerDocument;
      -
      -                        // Reenable scripts
      -                        jQuery.map( scripts, restoreScript );
      -
      -                        // Evaluate executable scripts on first document insertion
      -                        for ( i = 0; i < hasScripts; i++ ) {
      -                            node = scripts[ i ];
      -                            if ( rscriptType.test( node.type || "" ) &&
      -                                !data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
      -
      -                                if ( node.src ) {
      -                                    // Optional AJAX dependency, but won't run scripts if not present
      -                                    if ( jQuery._evalUrl ) {
      -                                        jQuery._evalUrl( node.src );
      -                                    }
      -                                } else {
      -                                    jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
      -                                }
      -                            }
      -                        }
      -                    }
      -                }
      -            }
      -
      -            return this;
      -        }
      -    });
      -
      -    jQuery.each({
      -        appendTo: "append",
      -        prependTo: "prepend",
      -        insertBefore: "before",
      -        insertAfter: "after",
      -        replaceAll: "replaceWith"
      -    }, function( name, original ) {
      -        jQuery.fn[ name ] = function( selector ) {
      -            var elems,
      -                ret = [],
      -                insert = jQuery( selector ),
      -                last = insert.length - 1,
      -                i = 0;
      -
      -            for ( ; i <= last; i++ ) {
      -                elems = i === last ? this : this.clone( true );
      -                jQuery( insert[ i ] )[ original ]( elems );
      -
      -                // Support: QtWebKit
      -                // .get() because push.apply(_, arraylike) throws
      -                push.apply( ret, elems.get() );
      -            }
      -
      -            return this.pushStack( ret );
      -        };
      -    });
      -
      -
      -    var iframe,
      -        elemdisplay = {};
      -
      -    /**
      -     * Retrieve the actual display of a element
      -     * @param {String} name nodeName of the element
      -     * @param {Object} doc Document object
      -     */
      -// Called only from within defaultDisplay
      -    function actualDisplay( name, doc ) {
      -        var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
      -
      -        // getDefaultComputedStyle might be reliably used only on attached element
      -            display = window.getDefaultComputedStyle ?
      -
      -                // Use of this method is a temporary fix (more like optmization) until something better comes along,
      -                // since it was removed from specification and supported only in FF
      -                window.getDefaultComputedStyle( elem[ 0 ] ).display : jQuery.css( elem[ 0 ], "display" );
      -
      -        // We don't have any data stored on the element,
      -        // so use "detach" method as fast way to get rid of the element
      -        elem.detach();
      -
      -        return display;
      -    }
      -
      -    /**
      -     * Try to determine the default display value of an element
      -     * @param {String} nodeName
      -     */
      -    function defaultDisplay( nodeName ) {
      -        var doc = document,
      -            display = elemdisplay[ nodeName ];
      -
      -        if ( !display ) {
      -            display = actualDisplay( nodeName, doc );
      -
      -            // If the simple way fails, read from inside an iframe
      -            if ( display === "none" || !display ) {
      -
      -                // Use the already-created iframe if possible
      -                iframe = (iframe || jQuery( "<iframe frameborder='0' width='0' height='0'/>" )).appendTo( doc.documentElement );
      -
      -                // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
      -                doc = iframe[ 0 ].contentDocument;
      -
      -                // Support: IE
      -                doc.write();
      -                doc.close();
      -
      -                display = actualDisplay( nodeName, doc );
      -                iframe.detach();
      -            }
      -
      -            // Store the correct default display
      -            elemdisplay[ nodeName ] = display;
      -        }
      -
      -        return display;
      -    }
      -    var rmargin = (/^margin/);
      -
      -    var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
      -
      -    var getStyles = function( elem ) {
      -        return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
      -    };
      -
      -
      -
      -    function curCSS( elem, name, computed ) {
      -        var width, minWidth, maxWidth, ret,
      -            style = elem.style;
      -
      -        computed = computed || getStyles( elem );
      -
      -        // Support: IE9
      -        // getPropertyValue is only needed for .css('filter') in IE9, see #12537
      -        if ( computed ) {
      -            ret = computed.getPropertyValue( name ) || computed[ name ];
      -        }
      -
      -        if ( computed ) {
      -
      -            if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
      -                ret = jQuery.style( elem, name );
      -            }
      -
      -            // Support: iOS < 6
      -            // A tribute to the "awesome hack by Dean Edwards"
      -            // iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
      -            // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
      -            if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
      -
      -                // Remember the original values
      -                width = style.width;
      -                minWidth = style.minWidth;
      -                maxWidth = style.maxWidth;
      -
      -                // Put in the new values to get a computed value out
      -                style.minWidth = style.maxWidth = style.width = ret;
      -                ret = computed.width;
      -
      -                // Revert the changed values
      -                style.width = width;
      -                style.minWidth = minWidth;
      -                style.maxWidth = maxWidth;
      -            }
      -        }
      -
      -        return ret !== undefined ?
      -            // Support: IE
      -            // IE returns zIndex value as an integer.
      -            ret + "" :
      -            ret;
      -    }
      -
      -
      -    function addGetHookIf( conditionFn, hookFn ) {
      -        // Define the hook, we'll check on the first run if it's really needed.
      -        return {
      -            get: function() {
      -                if ( conditionFn() ) {
      -                    // Hook not needed (or it's not possible to use it due to missing dependency),
      -                    // remove it.
      -                    // Since there are no other hooks for marginRight, remove the whole object.
      -                    delete this.get;
      -                    return;
      -                }
      -
      -                // Hook needed; redefine it so that the support test is not executed again.
      -
      -                return (this.get = hookFn).apply( this, arguments );
      -            }
      -        };
      -    }
      -
      -
      -    (function() {
      -        var pixelPositionVal, boxSizingReliableVal,
      -        // Support: Firefox, Android 2.3 (Prefixed box-sizing versions).
      -            divReset = "padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;" +
      -                "-moz-box-sizing:content-box;box-sizing:content-box",
      -            docElem = document.documentElement,
      -            container = document.createElement( "div" ),
      -            div = document.createElement( "div" );
      -
      -        div.style.backgroundClip = "content-box";
      -        div.cloneNode( true ).style.backgroundClip = "";
      -        support.clearCloneStyle = div.style.backgroundClip === "content-box";
      -
      -        container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;" +
      -            "margin-top:1px";
      -        container.appendChild( div );
      -
      -        // Executing both pixelPosition & boxSizingReliable tests require only one layout
      -        // so they're executed at the same time to save the second computation.
      -        function computePixelPositionAndBoxSizingReliable() {
      -            // Support: Firefox, Android 2.3 (Prefixed box-sizing versions).
      -            div.style.cssText = "-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
      -                "box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;" +
      -                "position:absolute;top:1%";
      -            docElem.appendChild( container );
      -
      -            var divStyle = window.getComputedStyle( div, null );
      -            pixelPositionVal = divStyle.top !== "1%";
      -            boxSizingReliableVal = divStyle.width === "4px";
      -
      -            docElem.removeChild( container );
      -        }
      -
      -        // Use window.getComputedStyle because jsdom on node.js will break without it.
      -        if ( window.getComputedStyle ) {
      -            jQuery.extend(support, {
      -                pixelPosition: function() {
      -                    // This test is executed only once but we still do memoizing
      -                    // since we can use the boxSizingReliable pre-computing.
      -                    // No need to check if the test was already performed, though.
      -                    computePixelPositionAndBoxSizingReliable();
      -                    return pixelPositionVal;
      -                },
      -                boxSizingReliable: function() {
      -                    if ( boxSizingReliableVal == null ) {
      -                        computePixelPositionAndBoxSizingReliable();
      -                    }
      -                    return boxSizingReliableVal;
      -                },
      -                reliableMarginRight: function() {
      -                    // Support: Android 2.3
      -                    // Check if div with explicit width and no margin-right incorrectly
      -                    // gets computed margin-right based on width of container. (#3333)
      -                    // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -                    // This support function is only executed once so no memoizing is needed.
      -                    var ret,
      -                        marginDiv = div.appendChild( document.createElement( "div" ) );
      -                    marginDiv.style.cssText = div.style.cssText = divReset;
      -                    marginDiv.style.marginRight = marginDiv.style.width = "0";
      -                    div.style.width = "1px";
      -                    docElem.appendChild( container );
      -
      -                    ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
      -
      -                    docElem.removeChild( container );
      -
      -                    // Clean up the div for other support tests.
      -                    div.innerHTML = "";
      -
      -                    return ret;
      -                }
      -            });
      -        }
      -    })();
      -
      -
      -// A method for quickly swapping in/out CSS properties to get correct calculations.
      -    jQuery.swap = function( elem, options, callback, args ) {
      -        var ret, name,
      -            old = {};
      -
      -        // Remember the old values, and insert the new ones
      -        for ( name in options ) {
      -            old[ name ] = elem.style[ name ];
      -            elem.style[ name ] = options[ name ];
      -        }
      -
      -        ret = callback.apply( elem, args || [] );
      -
      -        // Revert the old values
      -        for ( name in options ) {
      -            elem.style[ name ] = old[ name ];
      -        }
      -
      -        return ret;
      -    };
      -
      -
      -    var
      -    // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
      -    // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
      -        rdisplayswap = /^(none|table(?!-c[ea]).+)/,
      -        rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
      -        rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
      -
      -        cssShow = { position: "absolute", visibility: "hidden", display: "block" },
      -        cssNormalTransform = {
      -            letterSpacing: 0,
      -            fontWeight: 400
      -        },
      -
      -        cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
      -
      -// return a css property mapped to a potentially vendor prefixed property
      -    function vendorPropName( style, name ) {
      -
      -        // shortcut for names that are not vendor prefixed
      -        if ( name in style ) {
      -            return name;
      -        }
      -
      -        // check for vendor prefixed names
      -        var capName = name[0].toUpperCase() + name.slice(1),
      -            origName = name,
      -            i = cssPrefixes.length;
      -
      -        while ( i-- ) {
      -            name = cssPrefixes[ i ] + capName;
      -            if ( name in style ) {
      -                return name;
      -            }
      -        }
      -
      -        return origName;
      -    }
      -
      -    function setPositiveNumber( elem, value, subtract ) {
      -        var matches = rnumsplit.exec( value );
      -        return matches ?
      -            // Guard against undefined "subtract", e.g., when used as in cssHooks
      -            Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
      -            value;
      -    }
      -
      -    function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
      -        var i = extra === ( isBorderBox ? "border" : "content" ) ?
      -                // If we already have the right measurement, avoid augmentation
      -                4 :
      -                // Otherwise initialize for horizontal or vertical properties
      -                name === "width" ? 1 : 0,
      -
      -            val = 0;
      -
      -        for ( ; i < 4; i += 2 ) {
      -            // both box models exclude margin, so add it if we want it
      -            if ( extra === "margin" ) {
      -                val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
      -            }
      -
      -            if ( isBorderBox ) {
      -                // border-box includes padding, so remove it if we want content
      -                if ( extra === "content" ) {
      -                    val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -                }
      -
      -                // at this point, extra isn't border nor margin, so remove border
      -                if ( extra !== "margin" ) {
      -                    val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -                }
      -            } else {
      -                // at this point, extra isn't content, so add padding
      -                val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -
      -                // at this point, extra isn't content nor padding, so add border
      -                if ( extra !== "padding" ) {
      -                    val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -                }
      -            }
      -        }
      -
      -        return val;
      -    }
      -
      -    function getWidthOrHeight( elem, name, extra ) {
      -
      -        // Start with offset property, which is equivalent to the border-box value
      -        var valueIsBorderBox = true,
      -            val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
      -            styles = getStyles( elem ),
      -            isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
      -
      -        // some non-html elements return undefined for offsetWidth, so check for null/undefined
      -        // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
      -        // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
      -        if ( val <= 0 || val == null ) {
      -            // Fall back to computed then uncomputed css if necessary
      -            val = curCSS( elem, name, styles );
      -            if ( val < 0 || val == null ) {
      -                val = elem.style[ name ];
      -            }
      -
      -            // Computed unit is not pixels. Stop here and return.
      -            if ( rnumnonpx.test(val) ) {
      -                return val;
      -            }
      -
      -            // we need the check for style in case a browser which returns unreliable values
      -            // for getComputedStyle silently falls back to the reliable elem.style
      -            valueIsBorderBox = isBorderBox &&
      -                ( support.boxSizingReliable() || val === elem.style[ name ] );
      -
      -            // Normalize "", auto, and prepare for extra
      -            val = parseFloat( val ) || 0;
      -        }
      -
      -        // use the active box-sizing model to add/subtract irrelevant styles
      -        return ( val +
      -            augmentWidthOrHeight(
      -                elem,
      -                name,
      -                extra || ( isBorderBox ? "border" : "content" ),
      -                valueIsBorderBox,
      -                styles
      -            )
      -            ) + "px";
      -    }
      -
      -    function showHide( elements, show ) {
      -        var display, elem, hidden,
      -            values = [],
      -            index = 0,
      -            length = elements.length;
      -
      -        for ( ; index < length; index++ ) {
      -            elem = elements[ index ];
      -            if ( !elem.style ) {
      -                continue;
      -            }
      -
      -            values[ index ] = data_priv.get( elem, "olddisplay" );
      -            display = elem.style.display;
      -            if ( show ) {
      -                // Reset the inline display of this element to learn if it is
      -                // being hidden by cascaded rules or not
      -                if ( !values[ index ] && display === "none" ) {
      -                    elem.style.display = "";
      -                }
      -
      -                // Set elements which have been overridden with display: none
      -                // in a stylesheet to whatever the default browser style is
      -                // for such an element
      -                if ( elem.style.display === "" && isHidden( elem ) ) {
      -                    values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
      -                }
      -            } else {
      -
      -                if ( !values[ index ] ) {
      -                    hidden = isHidden( elem );
      -
      -                    if ( display && display !== "none" || !hidden ) {
      -                        data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css(elem, "display") );
      -                    }
      -                }
      -            }
      -        }
      -
      -        // Set the display of most of the elements in a second loop
      -        // to avoid the constant reflow
      -        for ( index = 0; index < length; index++ ) {
      -            elem = elements[ index ];
      -            if ( !elem.style ) {
      -                continue;
      -            }
      -            if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
      -                elem.style.display = show ? values[ index ] || "" : "none";
      -            }
      -        }
      -
      -        return elements;
      -    }
      -
      -    jQuery.extend({
      -        // Add in style property hooks for overriding the default
      -        // behavior of getting and setting a style property
      -        cssHooks: {
      -            opacity: {
      -                get: function( elem, computed ) {
      -                    if ( computed ) {
      -                        // We should always get a number back from opacity
      -                        var ret = curCSS( elem, "opacity" );
      -                        return ret === "" ? "1" : ret;
      -                    }
      -                }
      -            }
      -        },
      -
      -        // Don't automatically add "px" to these possibly-unitless properties
      -        cssNumber: {
      -            "columnCount": true,
      -            "fillOpacity": true,
      -            "fontWeight": true,
      -            "lineHeight": true,
      -            "opacity": true,
      -            "order": true,
      -            "orphans": true,
      -            "widows": true,
      -            "zIndex": true,
      -            "zoom": true
      -        },
      -
      -        // Add in properties whose names you wish to fix before
      -        // setting or getting the value
      -        cssProps: {
      -            // normalize float css property
      -            "float": "cssFloat"
      -        },
      -
      -        // Get and set the style property on a DOM Node
      -        style: function( elem, name, value, extra ) {
      -            // Don't set styles on text and comment nodes
      -            if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
      -                return;
      -            }
      -
      -            // Make sure that we're working with the right name
      -            var ret, type, hooks,
      -                origName = jQuery.camelCase( name ),
      -                style = elem.style;
      -
      -            name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
      -
      -            // gets hook for the prefixed version
      -            // followed by the unprefixed version
      -            hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -            // Check if we're setting a value
      -            if ( value !== undefined ) {
      -                type = typeof value;
      -
      -                // convert relative number strings (+= or -=) to relative numbers. #7345
      -                if ( type === "string" && (ret = rrelNum.exec( value )) ) {
      -                    value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
      -                    // Fixes bug #9237
      -                    type = "number";
      -                }
      -
      -                // Make sure that null and NaN values aren't set. See: #7116
      -                if ( value == null || value !== value ) {
      -                    return;
      -                }
      -
      -                // If a number was passed in, add 'px' to the (except for certain CSS properties)
      -                if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
      -                    value += "px";
      -                }
      -
      -                // Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
      -                // but it would mean to define eight (for every problematic property) identical functions
      -                if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
      -                    style[ name ] = "inherit";
      -                }
      -
      -                // If a hook was provided, use that value, otherwise just set the specified value
      -                if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
      -                    // Support: Chrome, Safari
      -                    // Setting style to blank string required to delete "style: x !important;"
      -                    style[ name ] = "";
      -                    style[ name ] = value;
      -                }
      -
      -            } else {
      -                // If a hook was provided get the non-computed value from there
      -                if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
      -                    return ret;
      -                }
      -
      -                // Otherwise just get the value from the style object
      -                return style[ name ];
      -            }
      -        },
      -
      -        css: function( elem, name, extra, styles ) {
      -            var val, num, hooks,
      -                origName = jQuery.camelCase( name );
      -
      -            // Make sure that we're working with the right name
      -            name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
      -
      -            // gets hook for the prefixed version
      -            // followed by the unprefixed version
      -            hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -            // If a hook was provided get the computed value from there
      -            if ( hooks && "get" in hooks ) {
      -                val = hooks.get( elem, true, extra );
      -            }
      -
      -            // Otherwise, if a way to get the computed value exists, use that
      -            if ( val === undefined ) {
      -                val = curCSS( elem, name, styles );
      -            }
      -
      -            //convert "normal" to computed value
      -            if ( val === "normal" && name in cssNormalTransform ) {
      -                val = cssNormalTransform[ name ];
      -            }
      -
      -            // Return, converting to number if forced or a qualifier was provided and val looks numeric
      -            if ( extra === "" || extra ) {
      -                num = parseFloat( val );
      -                return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
      -            }
      -            return val;
      -        }
      -    });
      -
      -    jQuery.each([ "height", "width" ], function( i, name ) {
      -        jQuery.cssHooks[ name ] = {
      -            get: function( elem, computed, extra ) {
      -                if ( computed ) {
      -                    // certain elements can have dimension info if we invisibly show them
      -                    // however, it must have a current display style that would benefit from this
      -                    return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
      -                        jQuery.swap( elem, cssShow, function() {
      -                            return getWidthOrHeight( elem, name, extra );
      -                        }) :
      -                        getWidthOrHeight( elem, name, extra );
      -                }
      -            },
      -
      -            set: function( elem, value, extra ) {
      -                var styles = extra && getStyles( elem );
      -                return setPositiveNumber( elem, value, extra ?
      -                    augmentWidthOrHeight(
      -                        elem,
      -                        name,
      -                        extra,
      -                        jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
      -                        styles
      -                    ) : 0
      -                );
      -            }
      -        };
      -    });
      -
      -// Support: Android 2.3
      -    jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
      -        function( elem, computed ) {
      -            if ( computed ) {
      -                // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -                // Work around by temporarily setting element display to inline-block
      -                return jQuery.swap( elem, { "display": "inline-block" },
      -                    curCSS, [ elem, "marginRight" ] );
      -            }
      -        }
      -    );
      -
      -// These hooks are used by animate to expand properties
      -    jQuery.each({
      -        margin: "",
      -        padding: "",
      -        border: "Width"
      -    }, function( prefix, suffix ) {
      -        jQuery.cssHooks[ prefix + suffix ] = {
      -            expand: function( value ) {
      -                var i = 0,
      -                    expanded = {},
      -
      -                // assumes a single number if not a string
      -                    parts = typeof value === "string" ? value.split(" ") : [ value ];
      -
      -                for ( ; i < 4; i++ ) {
      -                    expanded[ prefix + cssExpand[ i ] + suffix ] =
      -                        parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
      -                }
      -
      -                return expanded;
      -            }
      -        };
      -
      -        if ( !rmargin.test( prefix ) ) {
      -            jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
      -        }
      -    });
      -
      -    jQuery.fn.extend({
      -        css: function( name, value ) {
      -            return access( this, function( elem, name, value ) {
      -                var styles, len,
      -                    map = {},
      -                    i = 0;
      -
      -                if ( jQuery.isArray( name ) ) {
      -                    styles = getStyles( elem );
      -                    len = name.length;
      -
      -                    for ( ; i < len; i++ ) {
      -                        map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
      -                    }
      -
      -                    return map;
      -                }
      -
      -                return value !== undefined ?
      -                    jQuery.style( elem, name, value ) :
      -                    jQuery.css( elem, name );
      -            }, name, value, arguments.length > 1 );
      -        },
      -        show: function() {
      -            return showHide( this, true );
      -        },
      -        hide: function() {
      -            return showHide( this );
      -        },
      -        toggle: function( state ) {
      -            if ( typeof state === "boolean" ) {
      -                return state ? this.show() : this.hide();
      -            }
      -
      -            return this.each(function() {
      -                if ( isHidden( this ) ) {
      -                    jQuery( this ).show();
      -                } else {
      -                    jQuery( this ).hide();
      -                }
      -            });
      -        }
      -    });
      -
      -
      -    function Tween( elem, options, prop, end, easing ) {
      -        return new Tween.prototype.init( elem, options, prop, end, easing );
      -    }
      -    jQuery.Tween = Tween;
      -
      -    Tween.prototype = {
      -        constructor: Tween,
      -        init: function( elem, options, prop, end, easing, unit ) {
      -            this.elem = elem;
      -            this.prop = prop;
      -            this.easing = easing || "swing";
      -            this.options = options;
      -            this.start = this.now = this.cur();
      -            this.end = end;
      -            this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
      -        },
      -        cur: function() {
      -            var hooks = Tween.propHooks[ this.prop ];
      -
      -            return hooks && hooks.get ?
      -                hooks.get( this ) :
      -                Tween.propHooks._default.get( this );
      -        },
      -        run: function( percent ) {
      -            var eased,
      -                hooks = Tween.propHooks[ this.prop ];
      -
      -            if ( this.options.duration ) {
      -                this.pos = eased = jQuery.easing[ this.easing ](
      -                    percent, this.options.duration * percent, 0, 1, this.options.duration
      -                );
      -            } else {
      -                this.pos = eased = percent;
      -            }
      -            this.now = ( this.end - this.start ) * eased + this.start;
      -
      -            if ( this.options.step ) {
      -                this.options.step.call( this.elem, this.now, this );
      -            }
      -
      -            if ( hooks && hooks.set ) {
      -                hooks.set( this );
      -            } else {
      -                Tween.propHooks._default.set( this );
      -            }
      -            return this;
      -        }
      -    };
      -
      -    Tween.prototype.init.prototype = Tween.prototype;
      -
      -    Tween.propHooks = {
      -        _default: {
      -            get: function( tween ) {
      -                var result;
      -
      -                if ( tween.elem[ tween.prop ] != null &&
      -                    (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
      -                    return tween.elem[ tween.prop ];
      -                }
      -
      -                // passing an empty string as a 3rd parameter to .css will automatically
      -                // attempt a parseFloat and fallback to a string if the parse fails
      -                // so, simple values such as "10px" are parsed to Float.
      -                // complex values such as "rotate(1rad)" are returned as is.
      -                result = jQuery.css( tween.elem, tween.prop, "" );
      -                // Empty strings, null, undefined and "auto" are converted to 0.
      -                return !result || result === "auto" ? 0 : result;
      -            },
      -            set: function( tween ) {
      -                // use step hook for back compat - use cssHook if its there - use .style if its
      -                // available and use plain properties where available
      -                if ( jQuery.fx.step[ tween.prop ] ) {
      -                    jQuery.fx.step[ tween.prop ]( tween );
      -                } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
      -                    jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
      -                } else {
      -                    tween.elem[ tween.prop ] = tween.now;
      -                }
      -            }
      -        }
      -    };
      -
      -// Support: IE9
      -// Panic based approach to setting things on disconnected nodes
      -
      -    Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
      -        set: function( tween ) {
      -            if ( tween.elem.nodeType && tween.elem.parentNode ) {
      -                tween.elem[ tween.prop ] = tween.now;
      -            }
      -        }
      -    };
      -
      -    jQuery.easing = {
      -        linear: function( p ) {
      -            return p;
      -        },
      -        swing: function( p ) {
      -            return 0.5 - Math.cos( p * Math.PI ) / 2;
      -        }
      -    };
      -
      -    jQuery.fx = Tween.prototype.init;
      -
      -// Back Compat <1.8 extension point
      -    jQuery.fx.step = {};
      -
      -
      -
      -
      -    var
      -        fxNow, timerId,
      -        rfxtypes = /^(?:toggle|show|hide)$/,
      -        rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
      -        rrun = /queueHooks$/,
      -        animationPrefilters = [ defaultPrefilter ],
      -        tweeners = {
      -            "*": [ function( prop, value ) {
      -                var tween = this.createTween( prop, value ),
      -                    target = tween.cur(),
      -                    parts = rfxnum.exec( value ),
      -                    unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
      -
      -                // Starting value computation is required for potential unit mismatches
      -                    start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
      -                        rfxnum.exec( jQuery.css( tween.elem, prop ) ),
      -                    scale = 1,
      -                    maxIterations = 20;
      -
      -                if ( start && start[ 3 ] !== unit ) {
      -                    // Trust units reported by jQuery.css
      -                    unit = unit || start[ 3 ];
      -
      -                    // Make sure we update the tween properties later on
      -                    parts = parts || [];
      -
      -                    // Iteratively approximate from a nonzero starting point
      -                    start = +target || 1;
      -
      -                    do {
      -                        // If previous iteration zeroed out, double until we get *something*
      -                        // Use a string for doubling factor so we don't accidentally see scale as unchanged below
      -                        scale = scale || ".5";
      -
      -                        // Adjust and apply
      -                        start = start / scale;
      -                        jQuery.style( tween.elem, prop, start + unit );
      -
      -                        // Update scale, tolerating zero or NaN from tween.cur()
      -                        // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
      -                    } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
      -                }
      -
      -                // Update tween properties
      -                if ( parts ) {
      -                    start = tween.start = +start || +target || 0;
      -                    tween.unit = unit;
      -                    // If a +=/-= token was provided, we're doing a relative animation
      -                    tween.end = parts[ 1 ] ?
      -                        start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
      -                        +parts[ 2 ];
      -                }
      -
      -                return tween;
      -            } ]
      -        };
      -
      -// Animations created synchronously will run synchronously
      -    function createFxNow() {
      -        setTimeout(function() {
      -            fxNow = undefined;
      -        });
      -        return ( fxNow = jQuery.now() );
      -    }
      -
      -// Generate parameters to create a standard animation
      -    function genFx( type, includeWidth ) {
      -        var which,
      -            i = 0,
      -            attrs = { height: type };
      -
      -        // if we include width, step value is 1 to do all cssExpand values,
      -        // if we don't include width, step value is 2 to skip over Left and Right
      -        includeWidth = includeWidth ? 1 : 0;
      -        for ( ; i < 4 ; i += 2 - includeWidth ) {
      -            which = cssExpand[ i ];
      -            attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
      -        }
      -
      -        if ( includeWidth ) {
      -            attrs.opacity = attrs.width = type;
      -        }
      -
      -        return attrs;
      -    }
      -
      -    function createTween( value, prop, animation ) {
      -        var tween,
      -            collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
      -            index = 0,
      -            length = collection.length;
      -        for ( ; index < length; index++ ) {
      -            if ( (tween = collection[ index ].call( animation, prop, value )) ) {
      -
      -                // we're done with this property
      -                return tween;
      -            }
      -        }
      -    }
      -
      -    function defaultPrefilter( elem, props, opts ) {
      -        /* jshint validthis: true */
      -        var prop, value, toggle, tween, hooks, oldfire, display,
      -            anim = this,
      -            orig = {},
      -            style = elem.style,
      -            hidden = elem.nodeType && isHidden( elem ),
      -            dataShow = data_priv.get( elem, "fxshow" );
      -
      -        // handle queue: false promises
      -        if ( !opts.queue ) {
      -            hooks = jQuery._queueHooks( elem, "fx" );
      -            if ( hooks.unqueued == null ) {
      -                hooks.unqueued = 0;
      -                oldfire = hooks.empty.fire;
      -                hooks.empty.fire = function() {
      -                    if ( !hooks.unqueued ) {
      -                        oldfire();
      -                    }
      -                };
      -            }
      -            hooks.unqueued++;
      -
      -            anim.always(function() {
      -                // doing this makes sure that the complete handler will be called
      -                // before this completes
      -                anim.always(function() {
      -                    hooks.unqueued--;
      -                    if ( !jQuery.queue( elem, "fx" ).length ) {
      -                        hooks.empty.fire();
      -                    }
      -                });
      -            });
      -        }
      -
      -        // height/width overflow pass
      -        if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
      -            // Make sure that nothing sneaks out
      -            // Record all 3 overflow attributes because IE9-10 do not
      -            // change the overflow attribute when overflowX and
      -            // overflowY are set to the same value
      -            opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
      -
      -            // Set display property to inline-block for height/width
      -            // animations on inline elements that are having width/height animated
      -            display = jQuery.css( elem, "display" );
      -            // Get default display if display is currently "none"
      -            if ( display === "none" ) {
      -                display = defaultDisplay( elem.nodeName );
      -            }
      -            if ( display === "inline" &&
      -                jQuery.css( elem, "float" ) === "none" ) {
      -
      -                style.display = "inline-block";
      -            }
      -        }
      -
      -        if ( opts.overflow ) {
      -            style.overflow = "hidden";
      -            anim.always(function() {
      -                style.overflow = opts.overflow[ 0 ];
      -                style.overflowX = opts.overflow[ 1 ];
      -                style.overflowY = opts.overflow[ 2 ];
      -            });
      -        }
      -
      -        // show/hide pass
      -        for ( prop in props ) {
      -            value = props[ prop ];
      -            if ( rfxtypes.exec( value ) ) {
      -                delete props[ prop ];
      -                toggle = toggle || value === "toggle";
      -                if ( value === ( hidden ? "hide" : "show" ) ) {
      -
      -                    // If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
      -                    if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
      -                        hidden = true;
      -                    } else {
      -                        continue;
      -                    }
      -                }
      -                orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
      -            }
      -        }
      -
      -        if ( !jQuery.isEmptyObject( orig ) ) {
      -            if ( dataShow ) {
      -                if ( "hidden" in dataShow ) {
      -                    hidden = dataShow.hidden;
      -                }
      -            } else {
      -                dataShow = data_priv.access( elem, "fxshow", {} );
      -            }
      -
      -            // store state if its toggle - enables .stop().toggle() to "reverse"
      -            if ( toggle ) {
      -                dataShow.hidden = !hidden;
      -            }
      -            if ( hidden ) {
      -                jQuery( elem ).show();
      -            } else {
      -                anim.done(function() {
      -                    jQuery( elem ).hide();
      -                });
      -            }
      -            anim.done(function() {
      -                var prop;
      -
      -                data_priv.remove( elem, "fxshow" );
      -                for ( prop in orig ) {
      -                    jQuery.style( elem, prop, orig[ prop ] );
      -                }
      -            });
      -            for ( prop in orig ) {
      -                tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
      -
      -                if ( !( prop in dataShow ) ) {
      -                    dataShow[ prop ] = tween.start;
      -                    if ( hidden ) {
      -                        tween.end = tween.start;
      -                        tween.start = prop === "width" || prop === "height" ? 1 : 0;
      -                    }
      -                }
      -            }
      -        }
      -    }
      -
      -    function propFilter( props, specialEasing ) {
      -        var index, name, easing, value, hooks;
      -
      -        // camelCase, specialEasing and expand cssHook pass
      -        for ( index in props ) {
      -            name = jQuery.camelCase( index );
      -            easing = specialEasing[ name ];
      -            value = props[ index ];
      -            if ( jQuery.isArray( value ) ) {
      -                easing = value[ 1 ];
      -                value = props[ index ] = value[ 0 ];
      -            }
      -
      -            if ( index !== name ) {
      -                props[ name ] = value;
      -                delete props[ index ];
      -            }
      -
      -            hooks = jQuery.cssHooks[ name ];
      -            if ( hooks && "expand" in hooks ) {
      -                value = hooks.expand( value );
      -                delete props[ name ];
      -
      -                // not quite $.extend, this wont overwrite keys already present.
      -                // also - reusing 'index' from above because we have the correct "name"
      -                for ( index in value ) {
      -                    if ( !( index in props ) ) {
      -                        props[ index ] = value[ index ];
      -                        specialEasing[ index ] = easing;
      -                    }
      -                }
      -            } else {
      -                specialEasing[ name ] = easing;
      -            }
      -        }
      -    }
      -
      -    function Animation( elem, properties, options ) {
      -        var result,
      -            stopped,
      -            index = 0,
      -            length = animationPrefilters.length,
      -            deferred = jQuery.Deferred().always( function() {
      -                // don't match elem in the :animated selector
      -                delete tick.elem;
      -            }),
      -            tick = function() {
      -                if ( stopped ) {
      -                    return false;
      -                }
      -                var currentTime = fxNow || createFxNow(),
      -                    remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
      -                // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
      -                    temp = remaining / animation.duration || 0,
      -                    percent = 1 - temp,
      -                    index = 0,
      -                    length = animation.tweens.length;
      -
      -                for ( ; index < length ; index++ ) {
      -                    animation.tweens[ index ].run( percent );
      -                }
      -
      -                deferred.notifyWith( elem, [ animation, percent, remaining ]);
      -
      -                if ( percent < 1 && length ) {
      -                    return remaining;
      -                } else {
      -                    deferred.resolveWith( elem, [ animation ] );
      -                    return false;
      -                }
      -            },
      -            animation = deferred.promise({
      -                elem: elem,
      -                props: jQuery.extend( {}, properties ),
      -                opts: jQuery.extend( true, { specialEasing: {} }, options ),
      -                originalProperties: properties,
      -                originalOptions: options,
      -                startTime: fxNow || createFxNow(),
      -                duration: options.duration,
      -                tweens: [],
      -                createTween: function( prop, end ) {
      -                    var tween = jQuery.Tween( elem, animation.opts, prop, end,
      -                        animation.opts.specialEasing[ prop ] || animation.opts.easing );
      -                    animation.tweens.push( tween );
      -                    return tween;
      -                },
      -                stop: function( gotoEnd ) {
      -                    var index = 0,
      -                    // if we are going to the end, we want to run all the tweens
      -                    // otherwise we skip this part
      -                        length = gotoEnd ? animation.tweens.length : 0;
      -                    if ( stopped ) {
      -                        return this;
      -                    }
      -                    stopped = true;
      -                    for ( ; index < length ; index++ ) {
      -                        animation.tweens[ index ].run( 1 );
      -                    }
      -
      -                    // resolve when we played the last frame
      -                    // otherwise, reject
      -                    if ( gotoEnd ) {
      -                        deferred.resolveWith( elem, [ animation, gotoEnd ] );
      -                    } else {
      -                        deferred.rejectWith( elem, [ animation, gotoEnd ] );
      -                    }
      -                    return this;
      -                }
      -            }),
      -            props = animation.props;
      -
      -        propFilter( props, animation.opts.specialEasing );
      -
      -        for ( ; index < length ; index++ ) {
      -            result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
      -            if ( result ) {
      -                return result;
      -            }
      -        }
      -
      -        jQuery.map( props, createTween, animation );
      -
      -        if ( jQuery.isFunction( animation.opts.start ) ) {
      -            animation.opts.start.call( elem, animation );
      -        }
      -
      -        jQuery.fx.timer(
      -            jQuery.extend( tick, {
      -                elem: elem,
      -                anim: animation,
      -                queue: animation.opts.queue
      -            })
      -        );
      -
      -        // attach callbacks from options
      -        return animation.progress( animation.opts.progress )
      -            .done( animation.opts.done, animation.opts.complete )
      -            .fail( animation.opts.fail )
      -            .always( animation.opts.always );
      -    }
      -
      -    jQuery.Animation = jQuery.extend( Animation, {
      -
      -        tweener: function( props, callback ) {
      -            if ( jQuery.isFunction( props ) ) {
      -                callback = props;
      -                props = [ "*" ];
      -            } else {
      -                props = props.split(" ");
      -            }
      -
      -            var prop,
      -                index = 0,
      -                length = props.length;
      -
      -            for ( ; index < length ; index++ ) {
      -                prop = props[ index ];
      -                tweeners[ prop ] = tweeners[ prop ] || [];
      -                tweeners[ prop ].unshift( callback );
      -            }
      -        },
      -
      -        prefilter: function( callback, prepend ) {
      -            if ( prepend ) {
      -                animationPrefilters.unshift( callback );
      -            } else {
      -                animationPrefilters.push( callback );
      -            }
      -        }
      -    });
      -
      -    jQuery.speed = function( speed, easing, fn ) {
      -        var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
      -            complete: fn || !fn && easing ||
      -                jQuery.isFunction( speed ) && speed,
      -            duration: speed,
      -            easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
      -        };
      -
      -        opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
      -            opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
      -
      -        // normalize opt.queue - true/undefined/null -> "fx"
      -        if ( opt.queue == null || opt.queue === true ) {
      -            opt.queue = "fx";
      -        }
      -
      -        // Queueing
      -        opt.old = opt.complete;
      -
      -        opt.complete = function() {
      -            if ( jQuery.isFunction( opt.old ) ) {
      -                opt.old.call( this );
      -            }
      -
      -            if ( opt.queue ) {
      -                jQuery.dequeue( this, opt.queue );
      -            }
      -        };
      -
      -        return opt;
      -    };
      -
      -    jQuery.fn.extend({
      -        fadeTo: function( speed, to, easing, callback ) {
      -
      -            // show any hidden elements after setting opacity to 0
      -            return this.filter( isHidden ).css( "opacity", 0 ).show()
      -
      -                // animate to the value specified
      -                .end().animate({ opacity: to }, speed, easing, callback );
      -        },
      -        animate: function( prop, speed, easing, callback ) {
      -            var empty = jQuery.isEmptyObject( prop ),
      -                optall = jQuery.speed( speed, easing, callback ),
      -                doAnimation = function() {
      -                    // Operate on a copy of prop so per-property easing won't be lost
      -                    var anim = Animation( this, jQuery.extend( {}, prop ), optall );
      -
      -                    // Empty animations, or finishing resolves immediately
      -                    if ( empty || data_priv.get( this, "finish" ) ) {
      -                        anim.stop( true );
      -                    }
      -                };
      -            doAnimation.finish = doAnimation;
      -
      -            return empty || optall.queue === false ?
      -                this.each( doAnimation ) :
      -                this.queue( optall.queue, doAnimation );
      -        },
      -        stop: function( type, clearQueue, gotoEnd ) {
      -            var stopQueue = function( hooks ) {
      -                var stop = hooks.stop;
      -                delete hooks.stop;
      -                stop( gotoEnd );
      -            };
      -
      -            if ( typeof type !== "string" ) {
      -                gotoEnd = clearQueue;
      -                clearQueue = type;
      -                type = undefined;
      -            }
      -            if ( clearQueue && type !== false ) {
      -                this.queue( type || "fx", [] );
      -            }
      -
      -            return this.each(function() {
      -                var dequeue = true,
      -                    index = type != null && type + "queueHooks",
      -                    timers = jQuery.timers,
      -                    data = data_priv.get( this );
      -
      -                if ( index ) {
      -                    if ( data[ index ] && data[ index ].stop ) {
      -                        stopQueue( data[ index ] );
      -                    }
      -                } else {
      -                    for ( index in data ) {
      -                        if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
      -                            stopQueue( data[ index ] );
      -                        }
      -                    }
      -                }
      -
      -                for ( index = timers.length; index--; ) {
      -                    if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
      -                        timers[ index ].anim.stop( gotoEnd );
      -                        dequeue = false;
      -                        timers.splice( index, 1 );
      -                    }
      -                }
      -
      -                // start the next in the queue if the last step wasn't forced
      -                // timers currently will call their complete callbacks, which will dequeue
      -                // but only if they were gotoEnd
      -                if ( dequeue || !gotoEnd ) {
      -                    jQuery.dequeue( this, type );
      -                }
      -            });
      -        },
      -        finish: function( type ) {
      -            if ( type !== false ) {
      -                type = type || "fx";
      -            }
      -            return this.each(function() {
      -                var index,
      -                    data = data_priv.get( this ),
      -                    queue = data[ type + "queue" ],
      -                    hooks = data[ type + "queueHooks" ],
      -                    timers = jQuery.timers,
      -                    length = queue ? queue.length : 0;
      -
      -                // enable finishing flag on private data
      -                data.finish = true;
      -
      -                // empty the queue first
      -                jQuery.queue( this, type, [] );
      -
      -                if ( hooks && hooks.stop ) {
      -                    hooks.stop.call( this, true );
      -                }
      -
      -                // look for any active animations, and finish them
      -                for ( index = timers.length; index--; ) {
      -                    if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
      -                        timers[ index ].anim.stop( true );
      -                        timers.splice( index, 1 );
      -                    }
      -                }
      -
      -                // look for any animations in the old queue and finish them
      -                for ( index = 0; index < length; index++ ) {
      -                    if ( queue[ index ] && queue[ index ].finish ) {
      -                        queue[ index ].finish.call( this );
      -                    }
      -                }
      -
      -                // turn off finishing flag
      -                delete data.finish;
      -            });
      -        }
      -    });
      -
      -    jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
      -        var cssFn = jQuery.fn[ name ];
      -        jQuery.fn[ name ] = function( speed, easing, callback ) {
      -            return speed == null || typeof speed === "boolean" ?
      -                cssFn.apply( this, arguments ) :
      -                this.animate( genFx( name, true ), speed, easing, callback );
      -        };
      -    });
      -
      -// Generate shortcuts for custom animations
      -    jQuery.each({
      -        slideDown: genFx("show"),
      -        slideUp: genFx("hide"),
      -        slideToggle: genFx("toggle"),
      -        fadeIn: { opacity: "show" },
      -        fadeOut: { opacity: "hide" },
      -        fadeToggle: { opacity: "toggle" }
      -    }, function( name, props ) {
      -        jQuery.fn[ name ] = function( speed, easing, callback ) {
      -            return this.animate( props, speed, easing, callback );
      -        };
      -    });
      -
      -    jQuery.timers = [];
      -    jQuery.fx.tick = function() {
      -        var timer,
      -            i = 0,
      -            timers = jQuery.timers;
      -
      -        fxNow = jQuery.now();
      -
      -        for ( ; i < timers.length; i++ ) {
      -            timer = timers[ i ];
      -            // Checks the timer has not already been removed
      -            if ( !timer() && timers[ i ] === timer ) {
      -                timers.splice( i--, 1 );
      -            }
      -        }
      -
      -        if ( !timers.length ) {
      -            jQuery.fx.stop();
      -        }
      -        fxNow = undefined;
      -    };
      -
      -    jQuery.fx.timer = function( timer ) {
      -        jQuery.timers.push( timer );
      -        if ( timer() ) {
      -            jQuery.fx.start();
      -        } else {
      -            jQuery.timers.pop();
      -        }
      -    };
      -
      -    jQuery.fx.interval = 13;
      -
      -    jQuery.fx.start = function() {
      -        if ( !timerId ) {
      -            timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
      -        }
      -    };
      -
      -    jQuery.fx.stop = function() {
      -        clearInterval( timerId );
      -        timerId = null;
      -    };
      -
      -    jQuery.fx.speeds = {
      -        slow: 600,
      -        fast: 200,
      -        // Default speed
      -        _default: 400
      -    };
      -
      -
      -// Based off of the plugin by Clint Helfers, with permission.
      -// http://blindsignals.com/index.php/2009/07/jquery-delay/
      -    jQuery.fn.delay = function( time, type ) {
      -        time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
      -        type = type || "fx";
      -
      -        return this.queue( type, function( next, hooks ) {
      -            var timeout = setTimeout( next, time );
      -            hooks.stop = function() {
      -                clearTimeout( timeout );
      -            };
      -        });
      -    };
      -
      -
      -    (function() {
      -        var input = document.createElement( "input" ),
      -            select = document.createElement( "select" ),
      -            opt = select.appendChild( document.createElement( "option" ) );
      -
      -        input.type = "checkbox";
      -
      -        // Support: iOS 5.1, Android 4.x, Android 2.3
      -        // Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
      -        support.checkOn = input.value !== "";
      -
      -        // Must access the parent to make an option select properly
      -        // Support: IE9, IE10
      -        support.optSelected = opt.selected;
      -
      -        // Make sure that the options inside disabled selects aren't marked as disabled
      -        // (WebKit marks them as disabled)
      -        select.disabled = true;
      -        support.optDisabled = !opt.disabled;
      -
      -        // Check if an input maintains its value after becoming a radio
      -        // Support: IE9, IE10
      -        input = document.createElement( "input" );
      -        input.value = "t";
      -        input.type = "radio";
      -        support.radioValue = input.value === "t";
      -    })();
      -
      -
      -    var nodeHook, boolHook,
      -        attrHandle = jQuery.expr.attrHandle;
      -
      -    jQuery.fn.extend({
      -        attr: function( name, value ) {
      -            return access( this, jQuery.attr, name, value, arguments.length > 1 );
      -        },
      -
      -        removeAttr: function( name ) {
      -            return this.each(function() {
      -                jQuery.removeAttr( this, name );
      -            });
      -        }
      -    });
      -
      -    jQuery.extend({
      -        attr: function( elem, name, value ) {
      -            var hooks, ret,
      -                nType = elem.nodeType;
      -
      -            // don't get/set attributes on text, comment and attribute nodes
      -            if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -                return;
      -            }
      -
      -            // Fallback to prop when attributes are not supported
      -            if ( typeof elem.getAttribute === strundefined ) {
      -                return jQuery.prop( elem, name, value );
      -            }
      -
      -            // All attributes are lowercase
      -            // Grab necessary hook if one is defined
      -            if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
      -                name = name.toLowerCase();
      -                hooks = jQuery.attrHooks[ name ] ||
      -                    ( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
      -            }
      -
      -            if ( value !== undefined ) {
      -
      -                if ( value === null ) {
      -                    jQuery.removeAttr( elem, name );
      -
      -                } else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
      -                    return ret;
      -
      -                } else {
      -                    elem.setAttribute( name, value + "" );
      -                    return value;
      -                }
      -
      -            } else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
      -                return ret;
      -
      -            } else {
      -                ret = jQuery.find.attr( elem, name );
      -
      -                // Non-existent attributes return null, we normalize to undefined
      -                return ret == null ?
      -                    undefined :
      -                    ret;
      -            }
      -        },
      -
      -        removeAttr: function( elem, value ) {
      -            var name, propName,
      -                i = 0,
      -                attrNames = value && value.match( rnotwhite );
      -
      -            if ( attrNames && elem.nodeType === 1 ) {
      -                while ( (name = attrNames[i++]) ) {
      -                    propName = jQuery.propFix[ name ] || name;
      -
      -                    // Boolean attributes get special treatment (#10870)
      -                    if ( jQuery.expr.match.bool.test( name ) ) {
      -                        // Set corresponding property to false
      -                        elem[ propName ] = false;
      -                    }
      -
      -                    elem.removeAttribute( name );
      -                }
      -            }
      -        },
      -
      -        attrHooks: {
      -            type: {
      -                set: function( elem, value ) {
      -                    if ( !support.radioValue && value === "radio" &&
      -                        jQuery.nodeName( elem, "input" ) ) {
      -                        // Setting the type on a radio button after the value resets the value in IE6-9
      -                        // Reset value to default in case type is set after value during creation
      -                        var val = elem.value;
      -                        elem.setAttribute( "type", value );
      -                        if ( val ) {
      -                            elem.value = val;
      -                        }
      -                        return value;
      -                    }
      -                }
      -            }
      -        }
      -    });
      -
      -// Hooks for boolean attributes
      -    boolHook = {
      -        set: function( elem, value, name ) {
      -            if ( value === false ) {
      -                // Remove boolean attributes when set to false
      -                jQuery.removeAttr( elem, name );
      -            } else {
      -                elem.setAttribute( name, name );
      -            }
      -            return name;
      -        }
      -    };
      -    jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
      -        var getter = attrHandle[ name ] || jQuery.find.attr;
      -
      -        attrHandle[ name ] = function( elem, name, isXML ) {
      -            var ret, handle;
      -            if ( !isXML ) {
      -                // Avoid an infinite loop by temporarily removing this function from the getter
      -                handle = attrHandle[ name ];
      -                attrHandle[ name ] = ret;
      -                ret = getter( elem, name, isXML ) != null ?
      -                    name.toLowerCase() :
      -                    null;
      -                attrHandle[ name ] = handle;
      -            }
      -            return ret;
      -        };
      -    });
      -
      -
      -
      -
      -    var rfocusable = /^(?:input|select|textarea|button)$/i;
      -
      -    jQuery.fn.extend({
      -        prop: function( name, value ) {
      -            return access( this, jQuery.prop, name, value, arguments.length > 1 );
      -        },
      -
      -        removeProp: function( name ) {
      -            return this.each(function() {
      -                delete this[ jQuery.propFix[ name ] || name ];
      -            });
      -        }
      -    });
      -
      -    jQuery.extend({
      -        propFix: {
      -            "for": "htmlFor",
      -            "class": "className"
      -        },
      -
      -        prop: function( elem, name, value ) {
      -            var ret, hooks, notxml,
      -                nType = elem.nodeType;
      -
      -            // don't get/set properties on text, comment and attribute nodes
      -            if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -                return;
      -            }
      -
      -            notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
      -
      -            if ( notxml ) {
      -                // Fix name and attach hooks
      -                name = jQuery.propFix[ name ] || name;
      -                hooks = jQuery.propHooks[ name ];
      -            }
      -
      -            if ( value !== undefined ) {
      -                return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
      -                    ret :
      -                    ( elem[ name ] = value );
      -
      -            } else {
      -                return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
      -                    ret :
      -                    elem[ name ];
      -            }
      -        },
      -
      -        propHooks: {
      -            tabIndex: {
      -                get: function( elem ) {
      -                    return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
      -                        elem.tabIndex :
      -                        -1;
      -                }
      -            }
      -        }
      -    });
      -
      -// Support: IE9+
      -// Selectedness for an option in an optgroup can be inaccurate
      -    if ( !support.optSelected ) {
      -        jQuery.propHooks.selected = {
      -            get: function( elem ) {
      -                var parent = elem.parentNode;
      -                if ( parent && parent.parentNode ) {
      -                    parent.parentNode.selectedIndex;
      -                }
      -                return null;
      -            }
      -        };
      -    }
      -
      -    jQuery.each([
      -        "tabIndex",
      -        "readOnly",
      -        "maxLength",
      -        "cellSpacing",
      -        "cellPadding",
      -        "rowSpan",
      -        "colSpan",
      -        "useMap",
      -        "frameBorder",
      -        "contentEditable"
      -    ], function() {
      -        jQuery.propFix[ this.toLowerCase() ] = this;
      -    });
      -
      -
      -
      -
      -    var rclass = /[\t\r\n\f]/g;
      -
      -    jQuery.fn.extend({
      -        addClass: function( value ) {
      -            var classes, elem, cur, clazz, j, finalValue,
      -                proceed = typeof value === "string" && value,
      -                i = 0,
      -                len = this.length;
      -
      -            if ( jQuery.isFunction( value ) ) {
      -                return this.each(function( j ) {
      -                    jQuery( this ).addClass( value.call( this, j, this.className ) );
      -                });
      -            }
      -
      -            if ( proceed ) {
      -                // The disjunction here is for better compressibility (see removeClass)
      -                classes = ( value || "" ).match( rnotwhite ) || [];
      -
      -                for ( ; i < len; i++ ) {
      -                    elem = this[ i ];
      -                    cur = elem.nodeType === 1 && ( elem.className ?
      -                        ( " " + elem.className + " " ).replace( rclass, " " ) :
      -                        " "
      -                        );
      -
      -                    if ( cur ) {
      -                        j = 0;
      -                        while ( (clazz = classes[j++]) ) {
      -                            if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
      -                                cur += clazz + " ";
      -                            }
      -                        }
      -
      -                        // only assign if different to avoid unneeded rendering.
      -                        finalValue = jQuery.trim( cur );
      -                        if ( elem.className !== finalValue ) {
      -                            elem.className = finalValue;
      -                        }
      -                    }
      -                }
      -            }
      -
      -            return this;
      -        },
      -
      -        removeClass: function( value ) {
      -            var classes, elem, cur, clazz, j, finalValue,
      -                proceed = arguments.length === 0 || typeof value === "string" && value,
      -                i = 0,
      -                len = this.length;
      -
      -            if ( jQuery.isFunction( value ) ) {
      -                return this.each(function( j ) {
      -                    jQuery( this ).removeClass( value.call( this, j, this.className ) );
      -                });
      -            }
      -            if ( proceed ) {
      -                classes = ( value || "" ).match( rnotwhite ) || [];
      -
      -                for ( ; i < len; i++ ) {
      -                    elem = this[ i ];
      -                    // This expression is here for better compressibility (see addClass)
      -                    cur = elem.nodeType === 1 && ( elem.className ?
      -                        ( " " + elem.className + " " ).replace( rclass, " " ) :
      -                        ""
      -                        );
      -
      -                    if ( cur ) {
      -                        j = 0;
      -                        while ( (clazz = classes[j++]) ) {
      -                            // Remove *all* instances
      -                            while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
      -                                cur = cur.replace( " " + clazz + " ", " " );
      -                            }
      -                        }
      -
      -                        // only assign if different to avoid unneeded rendering.
      -                        finalValue = value ? jQuery.trim( cur ) : "";
      -                        if ( elem.className !== finalValue ) {
      -                            elem.className = finalValue;
      -                        }
      -                    }
      -                }
      -            }
      -
      -            return this;
      -        },
      -
      -        toggleClass: function( value, stateVal ) {
      -            var type = typeof value;
      -
      -            if ( typeof stateVal === "boolean" && type === "string" ) {
      -                return stateVal ? this.addClass( value ) : this.removeClass( value );
      -            }
      -
      -            if ( jQuery.isFunction( value ) ) {
      -                return this.each(function( i ) {
      -                    jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
      -                });
      -            }
      -
      -            return this.each(function() {
      -                if ( type === "string" ) {
      -                    // toggle individual class names
      -                    var className,
      -                        i = 0,
      -                        self = jQuery( this ),
      -                        classNames = value.match( rnotwhite ) || [];
      -
      -                    while ( (className = classNames[ i++ ]) ) {
      -                        // check each className given, space separated list
      -                        if ( self.hasClass( className ) ) {
      -                            self.removeClass( className );
      -                        } else {
      -                            self.addClass( className );
      -                        }
      -                    }
      -
      -                    // Toggle whole class name
      -                } else if ( type === strundefined || type === "boolean" ) {
      -                    if ( this.className ) {
      -                        // store className if set
      -                        data_priv.set( this, "__className__", this.className );
      -                    }
      -
      -                    // If the element has a class name or if we're passed "false",
      -                    // then remove the whole classname (if there was one, the above saved it).
      -                    // Otherwise bring back whatever was previously saved (if anything),
      -                    // falling back to the empty string if nothing was stored.
      -                    this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
      -                }
      -            });
      -        },
      -
      -        hasClass: function( selector ) {
      -            var className = " " + selector + " ",
      -                i = 0,
      -                l = this.length;
      -            for ( ; i < l; i++ ) {
      -                if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
      -                    return true;
      -                }
      -            }
      -
      -            return false;
      -        }
      -    });
      -
      -
      -
      -
      -    var rreturn = /\r/g;
      -
      -    jQuery.fn.extend({
      -        val: function( value ) {
      -            var hooks, ret, isFunction,
      -                elem = this[0];
      -
      -            if ( !arguments.length ) {
      -                if ( elem ) {
      -                    hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
      -
      -                    if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
      -                        return ret;
      -                    }
      -
      -                    ret = elem.value;
      -
      -                    return typeof ret === "string" ?
      -                        // handle most common string cases
      -                        ret.replace(rreturn, "") :
      -                        // handle cases where value is null/undef or number
      -                        ret == null ? "" : ret;
      -                }
      -
      -                return;
      -            }
      -
      -            isFunction = jQuery.isFunction( value );
      -
      -            return this.each(function( i ) {
      -                var val;
      -
      -                if ( this.nodeType !== 1 ) {
      -                    return;
      -                }
      -
      -                if ( isFunction ) {
      -                    val = value.call( this, i, jQuery( this ).val() );
      -                } else {
      -                    val = value;
      -                }
      -
      -                // Treat null/undefined as ""; convert numbers to string
      -                if ( val == null ) {
      -                    val = "";
      -
      -                } else if ( typeof val === "number" ) {
      -                    val += "";
      -
      -                } else if ( jQuery.isArray( val ) ) {
      -                    val = jQuery.map( val, function( value ) {
      -                        return value == null ? "" : value + "";
      -                    });
      -                }
      -
      -                hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
      -
      -                // If set returns undefined, fall back to normal setting
      -                if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
      -                    this.value = val;
      -                }
      -            });
      -        }
      -    });
      -
      -    jQuery.extend({
      -        valHooks: {
      -            select: {
      -                get: function( elem ) {
      -                    var value, option,
      -                        options = elem.options,
      -                        index = elem.selectedIndex,
      -                        one = elem.type === "select-one" || index < 0,
      -                        values = one ? null : [],
      -                        max = one ? index + 1 : options.length,
      -                        i = index < 0 ?
      -                            max :
      -                            one ? index : 0;
      -
      -                    // Loop through all the selected options
      -                    for ( ; i < max; i++ ) {
      -                        option = options[ i ];
      -
      -                        // IE6-9 doesn't update selected after form reset (#2551)
      -                        if ( ( option.selected || i === index ) &&
      -                            // Don't return options that are disabled or in a disabled optgroup
      -                            ( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
      -                            ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
      -
      -                            // Get the specific value for the option
      -                            value = jQuery( option ).val();
      -
      -                            // We don't need an array for one selects
      -                            if ( one ) {
      -                                return value;
      -                            }
      -
      -                            // Multi-Selects return an array
      -                            values.push( value );
      -                        }
      -                    }
      -
      -                    return values;
      -                },
      -
      -                set: function( elem, value ) {
      -                    var optionSet, option,
      -                        options = elem.options,
      -                        values = jQuery.makeArray( value ),
      -                        i = options.length;
      -
      -                    while ( i-- ) {
      -                        option = options[ i ];
      -                        if ( (option.selected = jQuery.inArray( jQuery(option).val(), values ) >= 0) ) {
      -                            optionSet = true;
      -                        }
      -                    }
      -
      -                    // force browsers to behave consistently when non-matching value is set
      -                    if ( !optionSet ) {
      -                        elem.selectedIndex = -1;
      -                    }
      -                    return values;
      -                }
      -            }
      -        }
      -    });
      -
      -// Radios and checkboxes getter/setter
      -    jQuery.each([ "radio", "checkbox" ], function() {
      -        jQuery.valHooks[ this ] = {
      -            set: function( elem, value ) {
      -                if ( jQuery.isArray( value ) ) {
      -                    return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
      -                }
      -            }
      -        };
      -        if ( !support.checkOn ) {
      -            jQuery.valHooks[ this ].get = function( elem ) {
      -                // Support: Webkit
      -                // "" is returned instead of "on" if a value isn't specified
      -                return elem.getAttribute("value") === null ? "on" : elem.value;
      -            };
      -        }
      -    });
      -
      -
      -
      -
      -// Return jQuery for attributes-only inclusion
      -
      -
      -    jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
      -        "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
      -        "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
      -
      -        // Handle event binding
      -        jQuery.fn[ name ] = function( data, fn ) {
      -            return arguments.length > 0 ?
      -                this.on( name, null, data, fn ) :
      -                this.trigger( name );
      -        };
      -    });
      -
      -    jQuery.fn.extend({
      -        hover: function( fnOver, fnOut ) {
      -            return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
      -        },
      -
      -        bind: function( types, data, fn ) {
      -            return this.on( types, null, data, fn );
      -        },
      -        unbind: function( types, fn ) {
      -            return this.off( types, null, fn );
      -        },
      -
      -        delegate: function( selector, types, data, fn ) {
      -            return this.on( types, selector, data, fn );
      -        },
      -        undelegate: function( selector, types, fn ) {
      -            // ( namespace ) or ( selector, types [, fn] )
      -            return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
      -        }
      -    });
      -
      -
      -    var nonce = jQuery.now();
      -
      -    var rquery = (/\?/);
      -
      -
      -
      -// Support: Android 2.3
      -// Workaround failure to string-cast null input
      -    jQuery.parseJSON = function( data ) {
      -        return JSON.parse( data + "" );
      -    };
      -
      -
      -// Cross-browser xml parsing
      -    jQuery.parseXML = function( data ) {
      -        var xml, tmp;
      -        if ( !data || typeof data !== "string" ) {
      -            return null;
      -        }
      -
      -        // Support: IE9
      -        try {
      -            tmp = new DOMParser();
      -            xml = tmp.parseFromString( data, "text/xml" );
      -        } catch ( e ) {
      -            xml = undefined;
      -        }
      -
      -        if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
      -            jQuery.error( "Invalid XML: " + data );
      -        }
      -        return xml;
      -    };
      -
      -
      -    var
      -    // Document location
      -        ajaxLocParts,
      -        ajaxLocation,
      -
      -        rhash = /#.*$/,
      -        rts = /([?&])_=[^&]*/,
      -        rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
      -    // #7653, #8125, #8152: local protocol detection
      -        rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
      -        rnoContent = /^(?:GET|HEAD)$/,
      -        rprotocol = /^\/\//,
      -        rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
      -
      -    /* Prefilters
      -     * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
      -     * 2) These are called:
      -     *    - BEFORE asking for a transport
      -     *    - AFTER param serialization (s.data is a string if s.processData is true)
      -     * 3) key is the dataType
      -     * 4) the catchall symbol "*" can be used
      -     * 5) execution will start with transport dataType and THEN continue down to "*" if needed
      -     */
      -        prefilters = {},
      -
      -    /* Transports bindings
      -     * 1) key is the dataType
      -     * 2) the catchall symbol "*" can be used
      -     * 3) selection will start with transport dataType and THEN go to "*" if needed
      -     */
      -        transports = {},
      -
      -    // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
      -        allTypes = "*/".concat("*");
      -
      -// #8138, IE may throw an exception when accessing
      -// a field from window.location if document.domain has been set
      -    try {
      -        ajaxLocation = location.href;
      -    } catch( e ) {
      -        // Use the href attribute of an A element
      -        // since IE will modify it given document.location
      -        ajaxLocation = document.createElement( "a" );
      -        ajaxLocation.href = "";
      -        ajaxLocation = ajaxLocation.href;
      -    }
      -
      -// Segment location into parts
      -    ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
      -
      -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
      -    function addToPrefiltersOrTransports( structure ) {
      -
      -        // dataTypeExpression is optional and defaults to "*"
      -        return function( dataTypeExpression, func ) {
      -
      -            if ( typeof dataTypeExpression !== "string" ) {
      -                func = dataTypeExpression;
      -                dataTypeExpression = "*";
      -            }
      -
      -            var dataType,
      -                i = 0,
      -                dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
      -
      -            if ( jQuery.isFunction( func ) ) {
      -                // For each dataType in the dataTypeExpression
      -                while ( (dataType = dataTypes[i++]) ) {
      -                    // Prepend if requested
      -                    if ( dataType[0] === "+" ) {
      -                        dataType = dataType.slice( 1 ) || "*";
      -                        (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
      -
      -                        // Otherwise append
      -                    } else {
      -                        (structure[ dataType ] = structure[ dataType ] || []).push( func );
      -                    }
      -                }
      -            }
      -        };
      -    }
      -
      -// Base inspection function for prefilters and transports
      -    function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
      -
      -        var inspected = {},
      -            seekingTransport = ( structure === transports );
      -
      -        function inspect( dataType ) {
      -            var selected;
      -            inspected[ dataType ] = true;
      -            jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
      -                var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
      -                if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
      -                    options.dataTypes.unshift( dataTypeOrTransport );
      -                    inspect( dataTypeOrTransport );
      -                    return false;
      -                } else if ( seekingTransport ) {
      -                    return !( selected = dataTypeOrTransport );
      -                }
      -            });
      -            return selected;
      -        }
      -
      -        return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
      -    }
      -
      -// A special extend for ajax options
      -// that takes "flat" options (not to be deep extended)
      -// Fixes #9887
      -    function ajaxExtend( target, src ) {
      -        var key, deep,
      -            flatOptions = jQuery.ajaxSettings.flatOptions || {};
      -
      -        for ( key in src ) {
      -            if ( src[ key ] !== undefined ) {
      -                ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
      -            }
      -        }
      -        if ( deep ) {
      -            jQuery.extend( true, target, deep );
      -        }
      -
      -        return target;
      -    }
      -
      -    /* Handles responses to an ajax request:
      -     * - finds the right dataType (mediates between content-type and expected dataType)
      -     * - returns the corresponding response
      -     */
      -    function ajaxHandleResponses( s, jqXHR, responses ) {
      -
      -        var ct, type, finalDataType, firstDataType,
      -            contents = s.contents,
      -            dataTypes = s.dataTypes;
      -
      -        // Remove auto dataType and get content-type in the process
      -        while ( dataTypes[ 0 ] === "*" ) {
      -            dataTypes.shift();
      -            if ( ct === undefined ) {
      -                ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
      -            }
      -        }
      -
      -        // Check if we're dealing with a known content-type
      -        if ( ct ) {
      -            for ( type in contents ) {
      -                if ( contents[ type ] && contents[ type ].test( ct ) ) {
      -                    dataTypes.unshift( type );
      -                    break;
      -                }
      -            }
      -        }
      -
      -        // Check to see if we have a response for the expected dataType
      -        if ( dataTypes[ 0 ] in responses ) {
      -            finalDataType = dataTypes[ 0 ];
      -        } else {
      -            // Try convertible dataTypes
      -            for ( type in responses ) {
      -                if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
      -                    finalDataType = type;
      -                    break;
      -                }
      -                if ( !firstDataType ) {
      -                    firstDataType = type;
      -                }
      -            }
      -            // Or just use first one
      -            finalDataType = finalDataType || firstDataType;
      -        }
      -
      -        // If we found a dataType
      -        // We add the dataType to the list if needed
      -        // and return the corresponding response
      -        if ( finalDataType ) {
      -            if ( finalDataType !== dataTypes[ 0 ] ) {
      -                dataTypes.unshift( finalDataType );
      -            }
      -            return responses[ finalDataType ];
      -        }
      -    }
      -
      -    /* Chain conversions given the request and the original response
      -     * Also sets the responseXXX fields on the jqXHR instance
      -     */
      -    function ajaxConvert( s, response, jqXHR, isSuccess ) {
      -        var conv2, current, conv, tmp, prev,
      -            converters = {},
      -        // Work with a copy of dataTypes in case we need to modify it for conversion
      -            dataTypes = s.dataTypes.slice();
      -
      -        // Create converters map with lowercased keys
      -        if ( dataTypes[ 1 ] ) {
      -            for ( conv in s.converters ) {
      -                converters[ conv.toLowerCase() ] = s.converters[ conv ];
      -            }
      -        }
      -
      -        current = dataTypes.shift();
      -
      -        // Convert to each sequential dataType
      -        while ( current ) {
      -
      -            if ( s.responseFields[ current ] ) {
      -                jqXHR[ s.responseFields[ current ] ] = response;
      -            }
      -
      -            // Apply the dataFilter if provided
      -            if ( !prev && isSuccess && s.dataFilter ) {
      -                response = s.dataFilter( response, s.dataType );
      -            }
      -
      -            prev = current;
      -            current = dataTypes.shift();
      -
      -            if ( current ) {
      -
      -                // There's only work to do if current dataType is non-auto
      -                if ( current === "*" ) {
      -
      -                    current = prev;
      -
      -                    // Convert response if prev dataType is non-auto and differs from current
      -                } else if ( prev !== "*" && prev !== current ) {
      -
      -                    // Seek a direct converter
      -                    conv = converters[ prev + " " + current ] || converters[ "* " + current ];
      -
      -                    // If none found, seek a pair
      -                    if ( !conv ) {
      -                        for ( conv2 in converters ) {
      -
      -                            // If conv2 outputs current
      -                            tmp = conv2.split( " " );
      -                            if ( tmp[ 1 ] === current ) {
      -
      -                                // If prev can be converted to accepted input
      -                                conv = converters[ prev + " " + tmp[ 0 ] ] ||
      -                                    converters[ "* " + tmp[ 0 ] ];
      -                                if ( conv ) {
      -                                    // Condense equivalence converters
      -                                    if ( conv === true ) {
      -                                        conv = converters[ conv2 ];
      -
      -                                        // Otherwise, insert the intermediate dataType
      -                                    } else if ( converters[ conv2 ] !== true ) {
      -                                        current = tmp[ 0 ];
      -                                        dataTypes.unshift( tmp[ 1 ] );
      -                                    }
      -                                    break;
      -                                }
      -                            }
      -                        }
      -                    }
      -
      -                    // Apply converter (if not an equivalence)
      -                    if ( conv !== true ) {
      -
      -                        // Unless errors are allowed to bubble, catch and return them
      -                        if ( conv && s[ "throws" ] ) {
      -                            response = conv( response );
      -                        } else {
      -                            try {
      -                                response = conv( response );
      -                            } catch ( e ) {
      -                                return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
      -                            }
      -                        }
      -                    }
      -                }
      -            }
      -        }
      -
      -        return { state: "success", data: response };
      -    }
      -
      -    jQuery.extend({
      -
      -        // Counter for holding the number of active queries
      -        active: 0,
      -
      -        // Last-Modified header cache for next request
      -        lastModified: {},
      -        etag: {},
      -
      -        ajaxSettings: {
      -            url: ajaxLocation,
      -            type: "GET",
      -            isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
      -            global: true,
      -            processData: true,
      -            async: true,
      -            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      -            /*
      -             timeout: 0,
      -             data: null,
      -             dataType: null,
      -             username: null,
      -             password: null,
      -             cache: null,
      -             throws: false,
      -             traditional: false,
      -             headers: {},
      -             */
      -
      -            accepts: {
      -                "*": allTypes,
      -                text: "text/plain",
      -                html: "text/html",
      -                xml: "application/xml, text/xml",
      -                json: "application/json, text/javascript"
      -            },
      -
      -            contents: {
      -                xml: /xml/,
      -                html: /html/,
      -                json: /json/
      -            },
      -
      -            responseFields: {
      -                xml: "responseXML",
      -                text: "responseText",
      -                json: "responseJSON"
      -            },
      -
      -            // Data converters
      -            // Keys separate source (or catchall "*") and destination types with a single space
      -            converters: {
      -
      -                // Convert anything to text
      -                "* text": String,
      -
      -                // Text to html (true = no transformation)
      -                "text html": true,
      -
      -                // Evaluate text as a json expression
      -                "text json": jQuery.parseJSON,
      -
      -                // Parse text as xml
      -                "text xml": jQuery.parseXML
      -            },
      -
      -            // For options that shouldn't be deep extended:
      -            // you can add your own custom options here if
      -            // and when you create one that shouldn't be
      -            // deep extended (see ajaxExtend)
      -            flatOptions: {
      -                url: true,
      -                context: true
      -            }
      -        },
      -
      -        // Creates a full fledged settings object into target
      -        // with both ajaxSettings and settings fields.
      -        // If target is omitted, writes into ajaxSettings.
      -        ajaxSetup: function( target, settings ) {
      -            return settings ?
      -
      -                // Building a settings object
      -                ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
      -
      -                // Extending ajaxSettings
      -                ajaxExtend( jQuery.ajaxSettings, target );
      -        },
      -
      -        ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
      -        ajaxTransport: addToPrefiltersOrTransports( transports ),
      -
      -        // Main method
      -        ajax: function( url, options ) {
      -
      -            // If url is an object, simulate pre-1.5 signature
      -            if ( typeof url === "object" ) {
      -                options = url;
      -                url = undefined;
      -            }
      -
      -            // Force options to be an object
      -            options = options || {};
      -
      -            var transport,
      -            // URL without anti-cache param
      -                cacheURL,
      -            // Response headers
      -                responseHeadersString,
      -                responseHeaders,
      -            // timeout handle
      -                timeoutTimer,
      -            // Cross-domain detection vars
      -                parts,
      -            // To know if global events are to be dispatched
      -                fireGlobals,
      -            // Loop variable
      -                i,
      -            // Create the final options object
      -                s = jQuery.ajaxSetup( {}, options ),
      -            // Callbacks context
      -                callbackContext = s.context || s,
      -            // Context for global events is callbackContext if it is a DOM node or jQuery collection
      -                globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
      -                    jQuery( callbackContext ) :
      -                    jQuery.event,
      -            // Deferreds
      -                deferred = jQuery.Deferred(),
      -                completeDeferred = jQuery.Callbacks("once memory"),
      -            // Status-dependent callbacks
      -                statusCode = s.statusCode || {},
      -            // Headers (they are sent all at once)
      -                requestHeaders = {},
      -                requestHeadersNames = {},
      -            // The jqXHR state
      -                state = 0,
      -            // Default abort message
      -                strAbort = "canceled",
      -            // Fake xhr
      -                jqXHR = {
      -                    readyState: 0,
      -
      -                    // Builds headers hashtable if needed
      -                    getResponseHeader: function( key ) {
      -                        var match;
      -                        if ( state === 2 ) {
      -                            if ( !responseHeaders ) {
      -                                responseHeaders = {};
      -                                while ( (match = rheaders.exec( responseHeadersString )) ) {
      -                                    responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
      -                                }
      -                            }
      -                            match = responseHeaders[ key.toLowerCase() ];
      -                        }
      -                        return match == null ? null : match;
      -                    },
      -
      -                    // Raw string
      -                    getAllResponseHeaders: function() {
      -                        return state === 2 ? responseHeadersString : null;
      -                    },
      -
      -                    // Caches the header
      -                    setRequestHeader: function( name, value ) {
      -                        var lname = name.toLowerCase();
      -                        if ( !state ) {
      -                            name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
      -                            requestHeaders[ name ] = value;
      -                        }
      -                        return this;
      -                    },
      -
      -                    // Overrides response content-type header
      -                    overrideMimeType: function( type ) {
      -                        if ( !state ) {
      -                            s.mimeType = type;
      -                        }
      -                        return this;
      -                    },
      -
      -                    // Status-dependent callbacks
      -                    statusCode: function( map ) {
      -                        var code;
      -                        if ( map ) {
      -                            if ( state < 2 ) {
      -                                for ( code in map ) {
      -                                    // Lazy-add the new callback in a way that preserves old ones
      -                                    statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
      -                                }
      -                            } else {
      -                                // Execute the appropriate callbacks
      -                                jqXHR.always( map[ jqXHR.status ] );
      -                            }
      -                        }
      -                        return this;
      -                    },
      -
      -                    // Cancel the request
      -                    abort: function( statusText ) {
      -                        var finalText = statusText || strAbort;
      -                        if ( transport ) {
      -                            transport.abort( finalText );
      -                        }
      -                        done( 0, finalText );
      -                        return this;
      -                    }
      -                };
      -
      -            // Attach deferreds
      -            deferred.promise( jqXHR ).complete = completeDeferred.add;
      -            jqXHR.success = jqXHR.done;
      -            jqXHR.error = jqXHR.fail;
      -
      -            // Remove hash character (#7531: and string promotion)
      -            // Add protocol if not provided (prefilters might expect it)
      -            // Handle falsy url in the settings object (#10093: consistency with old signature)
      -            // We also use the url parameter if available
      -            s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
      -                .replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
      -
      -            // Alias method option to type as per ticket #12004
      -            s.type = options.method || options.type || s.method || s.type;
      -
      -            // Extract dataTypes list
      -            s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
      -
      -            // A cross-domain request is in order when we have a protocol:host:port mismatch
      -            if ( s.crossDomain == null ) {
      -                parts = rurl.exec( s.url.toLowerCase() );
      -                s.crossDomain = !!( parts &&
      -                    ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
      -                        ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
      -                            ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
      -                    );
      -            }
      -
      -            // Convert data if not already a string
      -            if ( s.data && s.processData && typeof s.data !== "string" ) {
      -                s.data = jQuery.param( s.data, s.traditional );
      -            }
      -
      -            // Apply prefilters
      -            inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
      -
      -            // If request was aborted inside a prefilter, stop there
      -            if ( state === 2 ) {
      -                return jqXHR;
      -            }
      -
      -            // We can fire global events as of now if asked to
      -            fireGlobals = s.global;
      -
      -            // Watch for a new set of requests
      -            if ( fireGlobals && jQuery.active++ === 0 ) {
      -                jQuery.event.trigger("ajaxStart");
      -            }
      -
      -            // Uppercase the type
      -            s.type = s.type.toUpperCase();
      -
      -            // Determine if request has content
      -            s.hasContent = !rnoContent.test( s.type );
      -
      -            // Save the URL in case we're toying with the If-Modified-Since
      -            // and/or If-None-Match header later on
      -            cacheURL = s.url;
      -
      -            // More options handling for requests with no content
      -            if ( !s.hasContent ) {
      -
      -                // If data is available, append data to url
      -                if ( s.data ) {
      -                    cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
      -                    // #9682: remove data so that it's not used in an eventual retry
      -                    delete s.data;
      -                }
      -
      -                // Add anti-cache in url if needed
      -                if ( s.cache === false ) {
      -                    s.url = rts.test( cacheURL ) ?
      -
      -                        // If there is already a '_' parameter, set its value
      -                        cacheURL.replace( rts, "$1_=" + nonce++ ) :
      -
      -                        // Otherwise add one to the end
      -                        cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
      -                }
      -            }
      -
      -            // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -            if ( s.ifModified ) {
      -                if ( jQuery.lastModified[ cacheURL ] ) {
      -                    jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
      -                }
      -                if ( jQuery.etag[ cacheURL ] ) {
      -                    jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
      -                }
      -            }
      -
      -            // Set the correct header, if data is being sent
      -            if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
      -                jqXHR.setRequestHeader( "Content-Type", s.contentType );
      -            }
      -
      -            // Set the Accepts header for the server, depending on the dataType
      -            jqXHR.setRequestHeader(
      -                "Accept",
      -                s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
      -                    s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
      -                    s.accepts[ "*" ]
      -            );
      -
      -            // Check for headers option
      -            for ( i in s.headers ) {
      -                jqXHR.setRequestHeader( i, s.headers[ i ] );
      -            }
      -
      -            // Allow custom headers/mimetypes and early abort
      -            if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
      -                // Abort if not done already and return
      -                return jqXHR.abort();
      -            }
      -
      -            // aborting is no longer a cancellation
      -            strAbort = "abort";
      -
      -            // Install callbacks on deferreds
      -            for ( i in { success: 1, error: 1, complete: 1 } ) {
      -                jqXHR[ i ]( s[ i ] );
      -            }
      -
      -            // Get transport
      -            transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
      -
      -            // If no transport, we auto-abort
      -            if ( !transport ) {
      -                done( -1, "No Transport" );
      -            } else {
      -                jqXHR.readyState = 1;
      -
      -                // Send global event
      -                if ( fireGlobals ) {
      -                    globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
      -                }
      -                // Timeout
      -                if ( s.async && s.timeout > 0 ) {
      -                    timeoutTimer = setTimeout(function() {
      -                        jqXHR.abort("timeout");
      -                    }, s.timeout );
      -                }
      -
      -                try {
      -                    state = 1;
      -                    transport.send( requestHeaders, done );
      -                } catch ( e ) {
      -                    // Propagate exception as error if not done
      -                    if ( state < 2 ) {
      -                        done( -1, e );
      -                        // Simply rethrow otherwise
      -                    } else {
      -                        throw e;
      -                    }
      -                }
      -            }
      -
      -            // Callback for when everything is done
      -            function done( status, nativeStatusText, responses, headers ) {
      -                var isSuccess, success, error, response, modified,
      -                    statusText = nativeStatusText;
      -
      -                // Called once
      -                if ( state === 2 ) {
      -                    return;
      -                }
      -
      -                // State is "done" now
      -                state = 2;
      -
      -                // Clear timeout if it exists
      -                if ( timeoutTimer ) {
      -                    clearTimeout( timeoutTimer );
      -                }
      -
      -                // Dereference transport for early garbage collection
      -                // (no matter how long the jqXHR object will be used)
      -                transport = undefined;
      -
      -                // Cache response headers
      -                responseHeadersString = headers || "";
      -
      -                // Set readyState
      -                jqXHR.readyState = status > 0 ? 4 : 0;
      -
      -                // Determine if successful
      -                isSuccess = status >= 200 && status < 300 || status === 304;
      -
      -                // Get response data
      -                if ( responses ) {
      -                    response = ajaxHandleResponses( s, jqXHR, responses );
      -                }
      -
      -                // Convert no matter what (that way responseXXX fields are always set)
      -                response = ajaxConvert( s, response, jqXHR, isSuccess );
      -
      -                // If successful, handle type chaining
      -                if ( isSuccess ) {
      -
      -                    // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -                    if ( s.ifModified ) {
      -                        modified = jqXHR.getResponseHeader("Last-Modified");
      -                        if ( modified ) {
      -                            jQuery.lastModified[ cacheURL ] = modified;
      -                        }
      -                        modified = jqXHR.getResponseHeader("etag");
      -                        if ( modified ) {
      -                            jQuery.etag[ cacheURL ] = modified;
      -                        }
      -                    }
      -
      -                    // if no content
      -                    if ( status === 204 || s.type === "HEAD" ) {
      -                        statusText = "nocontent";
      -
      -                        // if not modified
      -                    } else if ( status === 304 ) {
      -                        statusText = "notmodified";
      -
      -                        // If we have data, let's convert it
      -                    } else {
      -                        statusText = response.state;
      -                        success = response.data;
      -                        error = response.error;
      -                        isSuccess = !error;
      -                    }
      -                } else {
      -                    // We extract error from statusText
      -                    // then normalize statusText and status for non-aborts
      -                    error = statusText;
      -                    if ( status || !statusText ) {
      -                        statusText = "error";
      -                        if ( status < 0 ) {
      -                            status = 0;
      -                        }
      -                    }
      -                }
      -
      -                // Set data for the fake xhr object
      -                jqXHR.status = status;
      -                jqXHR.statusText = ( nativeStatusText || statusText ) + "";
      -
      -                // Success/Error
      -                if ( isSuccess ) {
      -                    deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
      -                } else {
      -                    deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
      -                }
      -
      -                // Status-dependent callbacks
      -                jqXHR.statusCode( statusCode );
      -                statusCode = undefined;
      -
      -                if ( fireGlobals ) {
      -                    globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
      -                        [ jqXHR, s, isSuccess ? success : error ] );
      -                }
      -
      -                // Complete
      -                completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
      -
      -                if ( fireGlobals ) {
      -                    globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
      -                    // Handle the global AJAX counter
      -                    if ( !( --jQuery.active ) ) {
      -                        jQuery.event.trigger("ajaxStop");
      -                    }
      -                }
      -            }
      -
      -            return jqXHR;
      -        },
      -
      -        getJSON: function( url, data, callback ) {
      -            return jQuery.get( url, data, callback, "json" );
      -        },
      -
      -        getScript: function( url, callback ) {
      -            return jQuery.get( url, undefined, callback, "script" );
      -        }
      -    });
      -
      -    jQuery.each( [ "get", "post" ], function( i, method ) {
      -        jQuery[ method ] = function( url, data, callback, type ) {
      -            // shift arguments if data argument was omitted
      -            if ( jQuery.isFunction( data ) ) {
      -                type = type || callback;
      -                callback = data;
      -                data = undefined;
      -            }
      -
      -            return jQuery.ajax({
      -                url: url,
      -                type: method,
      -                dataType: type,
      -                data: data,
      -                success: callback
      -            });
      -        };
      -    });
      -
      -// Attach a bunch of functions for handling common AJAX events
      -    jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
      -        jQuery.fn[ type ] = function( fn ) {
      -            return this.on( type, fn );
      -        };
      -    });
      -
      -
      -    jQuery._evalUrl = function( url ) {
      -        return jQuery.ajax({
      -            url: url,
      -            type: "GET",
      -            dataType: "script",
      -            async: false,
      -            global: false,
      -            "throws": true
      -        });
      -    };
      -
      -
      -    jQuery.fn.extend({
      -        wrapAll: function( html ) {
      -            var wrap;
      -
      -            if ( jQuery.isFunction( html ) ) {
      -                return this.each(function( i ) {
      -                    jQuery( this ).wrapAll( html.call(this, i) );
      -                });
      -            }
      -
      -            if ( this[ 0 ] ) {
      -
      -                // The elements to wrap the target around
      -                wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
      -
      -                if ( this[ 0 ].parentNode ) {
      -                    wrap.insertBefore( this[ 0 ] );
      -                }
      -
      -                wrap.map(function() {
      -                    var elem = this;
      -
      -                    while ( elem.firstElementChild ) {
      -                        elem = elem.firstElementChild;
      -                    }
      -
      -                    return elem;
      -                }).append( this );
      -            }
      -
      -            return this;
      -        },
      -
      -        wrapInner: function( html ) {
      -            if ( jQuery.isFunction( html ) ) {
      -                return this.each(function( i ) {
      -                    jQuery( this ).wrapInner( html.call(this, i) );
      -                });
      -            }
      -
      -            return this.each(function() {
      -                var self = jQuery( this ),
      -                    contents = self.contents();
      -
      -                if ( contents.length ) {
      -                    contents.wrapAll( html );
      -
      -                } else {
      -                    self.append( html );
      -                }
      -            });
      -        },
      -
      -        wrap: function( html ) {
      -            var isFunction = jQuery.isFunction( html );
      -
      -            return this.each(function( i ) {
      -                jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
      -            });
      -        },
      -
      -        unwrap: function() {
      -            return this.parent().each(function() {
      -                if ( !jQuery.nodeName( this, "body" ) ) {
      -                    jQuery( this ).replaceWith( this.childNodes );
      -                }
      -            }).end();
      -        }
      -    });
      -
      -
      -    jQuery.expr.filters.hidden = function( elem ) {
      -        // Support: Opera <= 12.12
      -        // Opera reports offsetWidths and offsetHeights less than zero on some elements
      -        return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
      -    };
      -    jQuery.expr.filters.visible = function( elem ) {
      -        return !jQuery.expr.filters.hidden( elem );
      -    };
      -
      -
      -
      -
      -    var r20 = /%20/g,
      -        rbracket = /\[\]$/,
      -        rCRLF = /\r?\n/g,
      -        rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
      -        rsubmittable = /^(?:input|select|textarea|keygen)/i;
      -
      -    function buildParams( prefix, obj, traditional, add ) {
      -        var name;
      -
      -        if ( jQuery.isArray( obj ) ) {
      -            // Serialize array item.
      -            jQuery.each( obj, function( i, v ) {
      -                if ( traditional || rbracket.test( prefix ) ) {
      -                    // Treat each array item as a scalar.
      -                    add( prefix, v );
      -
      -                } else {
      -                    // Item is non-scalar (array or object), encode its numeric index.
      -                    buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
      -                }
      -            });
      -
      -        } else if ( !traditional && jQuery.type( obj ) === "object" ) {
      -            // Serialize object item.
      -            for ( name in obj ) {
      -                buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
      -            }
      -
      -        } else {
      -            // Serialize scalar item.
      -            add( prefix, obj );
      -        }
      -    }
      -
      -// Serialize an array of form elements or a set of
      -// key/values into a query string
      -    jQuery.param = function( a, traditional ) {
      -        var prefix,
      -            s = [],
      -            add = function( key, value ) {
      -                // If value is a function, invoke it and return its value
      -                value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
      -                s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
      -            };
      -
      -        // Set traditional to true for jQuery <= 1.3.2 behavior.
      -        if ( traditional === undefined ) {
      -            traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
      -        }
      -
      -        // If an array was passed in, assume that it is an array of form elements.
      -        if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
      -            // Serialize the form elements
      -            jQuery.each( a, function() {
      -                add( this.name, this.value );
      -            });
      -
      -        } else {
      -            // If traditional, encode the "old" way (the way 1.3.2 or older
      -            // did it), otherwise encode params recursively.
      -            for ( prefix in a ) {
      -                buildParams( prefix, a[ prefix ], traditional, add );
      -            }
      -        }
      -
      -        // Return the resulting serialization
      -        return s.join( "&" ).replace( r20, "+" );
      -    };
      -
      -    jQuery.fn.extend({
      -        serialize: function() {
      -            return jQuery.param( this.serializeArray() );
      -        },
      -        serializeArray: function() {
      -            return this.map(function() {
      -                // Can add propHook for "elements" to filter or add form elements
      -                var elements = jQuery.prop( this, "elements" );
      -                return elements ? jQuery.makeArray( elements ) : this;
      -            })
      -                .filter(function() {
      -                    var type = this.type;
      -
      -                    // Use .is( ":disabled" ) so that fieldset[disabled] works
      -                    return this.name && !jQuery( this ).is( ":disabled" ) &&
      -                        rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
      -                        ( this.checked || !rcheckableType.test( type ) );
      -                })
      -                .map(function( i, elem ) {
      -                    var val = jQuery( this ).val();
      -
      -                    return val == null ?
      -                        null :
      -                        jQuery.isArray( val ) ?
      -                            jQuery.map( val, function( val ) {
      -                                return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -                            }) :
      -                        { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -                }).get();
      -        }
      -    });
      -
      -
      -    jQuery.ajaxSettings.xhr = function() {
      -        try {
      -            return new XMLHttpRequest();
      -        } catch( e ) {}
      -    };
      -
      -    var xhrId = 0,
      -        xhrCallbacks = {},
      -        xhrSuccessStatus = {
      -            // file protocol always yields status code 0, assume 200
      -            0: 200,
      -            // Support: IE9
      -            // #1450: sometimes IE returns 1223 when it should be 204
      -            1223: 204
      -        },
      -        xhrSupported = jQuery.ajaxSettings.xhr();
      -
      -// Support: IE9
      -// Open requests must be manually aborted on unload (#5280)
      -    if ( window.ActiveXObject ) {
      -        jQuery( window ).on( "unload", function() {
      -            for ( var key in xhrCallbacks ) {
      -                xhrCallbacks[ key ]();
      -            }
      -        });
      -    }
      -
      -    support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
      -    support.ajax = xhrSupported = !!xhrSupported;
      -
      -    jQuery.ajaxTransport(function( options ) {
      -        var callback;
      -
      -        // Cross domain only allowed if supported through XMLHttpRequest
      -        if ( support.cors || xhrSupported && !options.crossDomain ) {
      -            return {
      -                send: function( headers, complete ) {
      -                    var i,
      -                        xhr = options.xhr(),
      -                        id = ++xhrId;
      -
      -                    xhr.open( options.type, options.url, options.async, options.username, options.password );
      -
      -                    // Apply custom fields if provided
      -                    if ( options.xhrFields ) {
      -                        for ( i in options.xhrFields ) {
      -                            xhr[ i ] = options.xhrFields[ i ];
      -                        }
      -                    }
      -
      -                    // Override mime type if needed
      -                    if ( options.mimeType && xhr.overrideMimeType ) {
      -                        xhr.overrideMimeType( options.mimeType );
      -                    }
      -
      -                    // X-Requested-With header
      -                    // For cross-domain requests, seeing as conditions for a preflight are
      -                    // akin to a jigsaw puzzle, we simply never set it to be sure.
      -                    // (it can always be set on a per-request basis or even using ajaxSetup)
      -                    // For same-domain requests, won't change header if already provided.
      -                    if ( !options.crossDomain && !headers["X-Requested-With"] ) {
      -                        headers["X-Requested-With"] = "XMLHttpRequest";
      -                    }
      -
      -                    // Set headers
      -                    for ( i in headers ) {
      -                        xhr.setRequestHeader( i, headers[ i ] );
      -                    }
      -
      -                    // Callback
      -                    callback = function( type ) {
      -                        return function() {
      -                            if ( callback ) {
      -                                delete xhrCallbacks[ id ];
      -                                callback = xhr.onload = xhr.onerror = null;
      -
      -                                if ( type === "abort" ) {
      -                                    xhr.abort();
      -                                } else if ( type === "error" ) {
      -                                    complete(
      -                                        // file: protocol always yields status 0; see #8605, #14207
      -                                        xhr.status,
      -                                        xhr.statusText
      -                                    );
      -                                } else {
      -                                    complete(
      -                                        xhrSuccessStatus[ xhr.status ] || xhr.status,
      -                                        xhr.statusText,
      -                                        // Support: IE9
      -                                        // Accessing binary-data responseText throws an exception
      -                                        // (#11426)
      -                                        typeof xhr.responseText === "string" ? {
      -                                            text: xhr.responseText
      -                                        } : undefined,
      -                                        xhr.getAllResponseHeaders()
      -                                    );
      -                                }
      -                            }
      -                        };
      -                    };
      -
      -                    // Listen to events
      -                    xhr.onload = callback();
      -                    xhr.onerror = callback("error");
      -
      -                    // Create the abort callback
      -                    callback = xhrCallbacks[ id ] = callback("abort");
      -
      -                    // Do send the request
      -                    // This may raise an exception which is actually
      -                    // handled in jQuery.ajax (so no try/catch here)
      -                    xhr.send( options.hasContent && options.data || null );
      -                },
      -
      -                abort: function() {
      -                    if ( callback ) {
      -                        callback();
      -                    }
      -                }
      -            };
      -        }
      -    });
      -
      -
      -
      -
      -// Install script dataType
      -    jQuery.ajaxSetup({
      -        accepts: {
      -            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
      -        },
      -        contents: {
      -            script: /(?:java|ecma)script/
      -        },
      -        converters: {
      -            "text script": function( text ) {
      -                jQuery.globalEval( text );
      -                return text;
      -            }
      -        }
      -    });
      -
      -// Handle cache's special case and crossDomain
      -    jQuery.ajaxPrefilter( "script", function( s ) {
      -        if ( s.cache === undefined ) {
      -            s.cache = false;
      -        }
      -        if ( s.crossDomain ) {
      -            s.type = "GET";
      -        }
      -    });
      -
      -// Bind script tag hack transport
      -    jQuery.ajaxTransport( "script", function( s ) {
      -        // This transport only deals with cross domain requests
      -        if ( s.crossDomain ) {
      -            var script, callback;
      -            return {
      -                send: function( _, complete ) {
      -                    script = jQuery("<script>").prop({
      -                        async: true,
      -                        charset: s.scriptCharset,
      -                        src: s.url
      -                    }).on(
      -                            "load error",
      -                            callback = function( evt ) {
      -                                script.remove();
      -                                callback = null;
      -                                if ( evt ) {
      -                                    complete( evt.type === "error" ? 404 : 200, evt.type );
      -                                }
      -                            }
      -                        );
      -                    document.head.appendChild( script[ 0 ] );
      -                },
      -                abort: function() {
      -                    if ( callback ) {
      -                        callback();
      -                    }
      -                }
      -            };
      -        }
      -    });
      -
      -
      -
      -
      -    var oldCallbacks = [],
      -        rjsonp = /(=)\?(?=&|$)|\?\?/;
      -
      -// Default jsonp settings
      -    jQuery.ajaxSetup({
      -        jsonp: "callback",
      -        jsonpCallback: function() {
      -            var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
      -            this[ callback ] = true;
      -            return callback;
      -        }
      -    });
      -
      -// Detect, normalize options and install callbacks for jsonp requests
      -    jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
      -
      -        var callbackName, overwritten, responseContainer,
      -            jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
      -                "url" :
      -                typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
      -                );
      -
      -        // Handle iff the expected data type is "jsonp" or we have a parameter to set
      -        if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
      -
      -            // Get callback name, remembering preexisting value associated with it
      -            callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
      -                s.jsonpCallback() :
      -                s.jsonpCallback;
      -
      -            // Insert callback into url or form data
      -            if ( jsonProp ) {
      -                s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
      -            } else if ( s.jsonp !== false ) {
      -                s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
      -            }
      -
      -            // Use data converter to retrieve json after script execution
      -            s.converters["script json"] = function() {
      -                if ( !responseContainer ) {
      -                    jQuery.error( callbackName + " was not called" );
      -                }
      -                return responseContainer[ 0 ];
      -            };
      -
      -            // force json dataType
      -            s.dataTypes[ 0 ] = "json";
      -
      -            // Install callback
      -            overwritten = window[ callbackName ];
      -            window[ callbackName ] = function() {
      -                responseContainer = arguments;
      -            };
      -
      -            // Clean-up function (fires after converters)
      -            jqXHR.always(function() {
      -                // Restore preexisting value
      -                window[ callbackName ] = overwritten;
      -
      -                // Save back as free
      -                if ( s[ callbackName ] ) {
      -                    // make sure that re-using the options doesn't screw things around
      -                    s.jsonpCallback = originalSettings.jsonpCallback;
      -
      -                    // save the callback name for future use
      -                    oldCallbacks.push( callbackName );
      -                }
      -
      -                // Call if it was a function and we have a response
      -                if ( responseContainer && jQuery.isFunction( overwritten ) ) {
      -                    overwritten( responseContainer[ 0 ] );
      -                }
      -
      -                responseContainer = overwritten = undefined;
      -            });
      -
      -            // Delegate to script
      -            return "script";
      -        }
      -    });
      -
      -
      -
      -
      -// data: string of html
      -// context (optional): If specified, the fragment will be created in this context, defaults to document
      -// keepScripts (optional): If true, will include scripts passed in the html string
      -    jQuery.parseHTML = function( data, context, keepScripts ) {
      -        if ( !data || typeof data !== "string" ) {
      -            return null;
      -        }
      -        if ( typeof context === "boolean" ) {
      -            keepScripts = context;
      -            context = false;
      -        }
      -        context = context || document;
      -
      -        var parsed = rsingleTag.exec( data ),
      -            scripts = !keepScripts && [];
      -
      -        // Single tag
      -        if ( parsed ) {
      -            return [ context.createElement( parsed[1] ) ];
      -        }
      -
      -        parsed = jQuery.buildFragment( [ data ], context, scripts );
      -
      -        if ( scripts && scripts.length ) {
      -            jQuery( scripts ).remove();
      -        }
      -
      -        return jQuery.merge( [], parsed.childNodes );
      -    };
      -
      -
      -// Keep a copy of the old load method
      -    var _load = jQuery.fn.load;
      -
      -    /**
      -     * Load a url into a page
      -     */
      -    jQuery.fn.load = function( url, params, callback ) {
      -        if ( typeof url !== "string" && _load ) {
      -            return _load.apply( this, arguments );
      -        }
      -
      -        var selector, type, response,
      -            self = this,
      -            off = url.indexOf(" ");
      -
      -        if ( off >= 0 ) {
      -            selector = url.slice( off );
      -            url = url.slice( 0, off );
      -        }
      -
      -        // If it's a function
      -        if ( jQuery.isFunction( params ) ) {
      -
      -            // We assume that it's the callback
      -            callback = params;
      -            params = undefined;
      -
      -            // Otherwise, build a param string
      -        } else if ( params && typeof params === "object" ) {
      -            type = "POST";
      -        }
      -
      -        // If we have elements to modify, make the request
      -        if ( self.length > 0 ) {
      -            jQuery.ajax({
      -                url: url,
      -
      -                // if "type" variable is undefined, then "GET" method will be used
      -                type: type,
      -                dataType: "html",
      -                data: params
      -            }).done(function( responseText ) {
      -
      -                    // Save response for use in complete callback
      -                    response = arguments;
      -
      -                    self.html( selector ?
      -
      -                        // If a selector was specified, locate the right elements in a dummy div
      -                        // Exclude scripts to avoid IE 'Permission Denied' errors
      -                        jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
      -
      -                        // Otherwise use the full result
      -                        responseText );
      -
      -                }).complete( callback && function( jqXHR, status ) {
      -                    self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
      -                });
      -        }
      -
      -        return this;
      -    };
      -
      -
      -
      -
      -    jQuery.expr.filters.animated = function( elem ) {
      -        return jQuery.grep(jQuery.timers, function( fn ) {
      -            return elem === fn.elem;
      -        }).length;
      -    };
      -
      -
      -
      -
      -    var docElem = window.document.documentElement;
      -
      -    /**
      -     * Gets a window from an element
      -     */
      -    function getWindow( elem ) {
      -        return jQuery.isWindow( elem ) ? elem : elem.nodeType === 9 && elem.defaultView;
      -    }
      -
      -    jQuery.offset = {
      -        setOffset: function( elem, options, i ) {
      -            var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
      -                position = jQuery.css( elem, "position" ),
      -                curElem = jQuery( elem ),
      -                props = {};
      -
      -            // Set position first, in-case top/left are set even on static elem
      -            if ( position === "static" ) {
      -                elem.style.position = "relative";
      -            }
      -
      -            curOffset = curElem.offset();
      -            curCSSTop = jQuery.css( elem, "top" );
      -            curCSSLeft = jQuery.css( elem, "left" );
      -            calculatePosition = ( position === "absolute" || position === "fixed" ) &&
      -                ( curCSSTop + curCSSLeft ).indexOf("auto") > -1;
      -
      -            // Need to be able to calculate position if either top or left is auto and position is either absolute or fixed
      -            if ( calculatePosition ) {
      -                curPosition = curElem.position();
      -                curTop = curPosition.top;
      -                curLeft = curPosition.left;
      -
      -            } else {
      -                curTop = parseFloat( curCSSTop ) || 0;
      -                curLeft = parseFloat( curCSSLeft ) || 0;
      -            }
      -
      -            if ( jQuery.isFunction( options ) ) {
      -                options = options.call( elem, i, curOffset );
      -            }
      -
      -            if ( options.top != null ) {
      -                props.top = ( options.top - curOffset.top ) + curTop;
      -            }
      -            if ( options.left != null ) {
      -                props.left = ( options.left - curOffset.left ) + curLeft;
      -            }
      -
      -            if ( "using" in options ) {
      -                options.using.call( elem, props );
      -
      -            } else {
      -                curElem.css( props );
      -            }
      -        }
      -    };
      -
      -    jQuery.fn.extend({
      -        offset: function( options ) {
      -            if ( arguments.length ) {
      -                return options === undefined ?
      -                    this :
      -                    this.each(function( i ) {
      -                        jQuery.offset.setOffset( this, options, i );
      -                    });
      -            }
      -
      -            var docElem, win,
      -                elem = this[ 0 ],
      -                box = { top: 0, left: 0 },
      -                doc = elem && elem.ownerDocument;
      -
      -            if ( !doc ) {
      -                return;
      -            }
      -
      -            docElem = doc.documentElement;
      -
      -            // Make sure it's not a disconnected DOM node
      -            if ( !jQuery.contains( docElem, elem ) ) {
      -                return box;
      -            }
      -
      -            // If we don't have gBCR, just use 0,0 rather than error
      -            // BlackBerry 5, iOS 3 (original iPhone)
      -            if ( typeof elem.getBoundingClientRect !== strundefined ) {
      -                box = elem.getBoundingClientRect();
      -            }
      -            win = getWindow( doc );
      -            return {
      -                top: box.top + win.pageYOffset - docElem.clientTop,
      -                left: box.left + win.pageXOffset - docElem.clientLeft
      -            };
      -        },
      -
      -        position: function() {
      -            if ( !this[ 0 ] ) {
      -                return;
      -            }
      -
      -            var offsetParent, offset,
      -                elem = this[ 0 ],
      -                parentOffset = { top: 0, left: 0 };
      -
      -            // Fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
      -            if ( jQuery.css( elem, "position" ) === "fixed" ) {
      -                // We assume that getBoundingClientRect is available when computed position is fixed
      -                offset = elem.getBoundingClientRect();
      -
      -            } else {
      -                // Get *real* offsetParent
      -                offsetParent = this.offsetParent();
      -
      -                // Get correct offsets
      -                offset = this.offset();
      -                if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
      -                    parentOffset = offsetParent.offset();
      -                }
      -
      -                // Add offsetParent borders
      -                parentOffset.top += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
      -                parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
      -            }
      -
      -            // Subtract parent offsets and element margins
      -            return {
      -                top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
      -                left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
      -            };
      -        },
      -
      -        offsetParent: function() {
      -            return this.map(function() {
      -                var offsetParent = this.offsetParent || docElem;
      -
      -                while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position" ) === "static" ) ) {
      -                    offsetParent = offsetParent.offsetParent;
      -                }
      -
      -                return offsetParent || docElem;
      -            });
      -        }
      -    });
      -
      -// Create scrollLeft and scrollTop methods
      -    jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
      -        var top = "pageYOffset" === prop;
      -
      -        jQuery.fn[ method ] = function( val ) {
      -            return access( this, function( elem, method, val ) {
      -                var win = getWindow( elem );
      -
      -                if ( val === undefined ) {
      -                    return win ? win[ prop ] : elem[ method ];
      -                }
      -
      -                if ( win ) {
      -                    win.scrollTo(
      -                        !top ? val : window.pageXOffset,
      -                        top ? val : window.pageYOffset
      -                    );
      -
      -                } else {
      -                    elem[ method ] = val;
      -                }
      -            }, method, val, arguments.length, null );
      -        };
      -    });
      -
      -// Add the top/left cssHooks using jQuery.fn.position
      -// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
      -// getComputedStyle returns percent when specified for top/left/bottom/right
      -// rather than make the css module depend on the offset module, we just check for it here
      -    jQuery.each( [ "top", "left" ], function( i, prop ) {
      -        jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
      -            function( elem, computed ) {
      -                if ( computed ) {
      -                    computed = curCSS( elem, prop );
      -                    // if curCSS returns percentage, fallback to offset
      -                    return rnumnonpx.test( computed ) ?
      -                        jQuery( elem ).position()[ prop ] + "px" :
      -                        computed;
      -                }
      -            }
      -        );
      -    });
      -
      -
      -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
      -    jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
      -        jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
      -            // margin is only for outerHeight, outerWidth
      -            jQuery.fn[ funcName ] = function( margin, value ) {
      -                var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
      -                    extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
      -
      -                return access( this, function( elem, type, value ) {
      -                    var doc;
      -
      -                    if ( jQuery.isWindow( elem ) ) {
      -                        // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
      -                        // isn't a whole lot we can do. See pull request at this URL for discussion:
      -                        // https://github.com/jquery/jquery/pull/764
      -                        return elem.document.documentElement[ "client" + name ];
      -                    }
      -
      -                    // Get document width or height
      -                    if ( elem.nodeType === 9 ) {
      -                        doc = elem.documentElement;
      -
      -                        // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
      -                        // whichever is greatest
      -                        return Math.max(
      -                            elem.body[ "scroll" + name ], doc[ "scroll" + name ],
      -                            elem.body[ "offset" + name ], doc[ "offset" + name ],
      -                            doc[ "client" + name ]
      -                        );
      -                    }
      -
      -                    return value === undefined ?
      -                        // Get width or height on the element, requesting but not forcing parseFloat
      -                        jQuery.css( elem, type, extra ) :
      -
      -                        // Set width or height on the element
      -                        jQuery.style( elem, type, value, extra );
      -                }, type, chainable ? margin : undefined, chainable, null );
      -            };
      -        });
      -    });
      -
      -
      -// The number of elements contained in the matched element set
      -    jQuery.fn.size = function() {
      -        return this.length;
      -    };
      -
      -    jQuery.fn.andSelf = jQuery.fn.addBack;
      -
      -
      -
      -
      -// Register as a named AMD module, since jQuery can be concatenated with other
      -// files that may use define, but not via a proper concatenation script that
      -// understands anonymous AMD modules. A named AMD is safest and most robust
      -// way to register. Lowercase jquery is used because AMD module names are
      -// derived from file names, and jQuery is normally delivered in a lowercase
      -// file name. Do this after creating the global so that if an AMD module wants
      -// to call noConflict to hide this version of jQuery, it will work.
      -    if ( typeof define === "function" && define.amd ) {
      -        define( "jquery", [], function() {
      -            return jQuery;
      -        });
      -    }
      -
      -
      -
      -
      -    var
      -    // Map over jQuery in case of overwrite
      -        _jQuery = window.jQuery,
      -
      -    // Map over the $ in case of overwrite
      -        _$ = window.$;
      -
      -    jQuery.noConflict = function( deep ) {
      -        if ( window.$ === jQuery ) {
      -            window.$ = _$;
      -        }
      -
      -        if ( deep && window.jQuery === jQuery ) {
      -            window.jQuery = _jQuery;
      -        }
      -
      -        return jQuery;
      -    };
      -
      -// Expose jQuery and $ identifiers, even in
      -// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
      -// and CommonJS for browser emulators (#13566)
      -    if ( typeof noGlobal === strundefined ) {
      -        window.jQuery = window.$ = jQuery;
      -    }
      -
      -
      -
      -
      -    return jQuery;
      -
      -}));
      \ No newline at end of file
      diff --git a/bower_components/tether/.bower.json b/bower_components/tether/.bower.json
      deleted file mode 100644
      index f336b8ad8e..0000000000
      --- a/bower_components/tether/.bower.json
      +++ /dev/null
      @@ -1,35 +0,0 @@
      -{
      -  "name": "tether",
      -  "version": "1.4.0",
      -  "homepage": "http://github.hubspot.com/tether",
      -  "authors": [
      -    "Zack Bloom <zackbloom@gmail.com>",
      -    "Adam Schwartz <adam.flynn.schwartz@gmail.com>"
      -  ],
      -  "maintainers": [
      -    "Nicholas Hwang <nick.joosung.hwang@gmail.com>",
      -    "Trevor Burnham <trevorburnham@gmail.com>"
      -  ],
      -  "description": "A client-side library to make absolutely positioned elements attach to elements in the page efficiently.",
      -  "keywords": [
      -    "javascript"
      -  ],
      -  "license": "MIT",
      -  "main": "dist/js/tether.js",
      -  "ignore": [
      -    "**/.*",
      -    "node_modules",
      -    "bower_components",
      -    "test",
      -    "tests"
      -  ],
      -  "_release": "1.4.0",
      -  "_resolution": {
      -    "type": "version",
      -    "tag": "v1.4.0",
      -    "commit": "3d7119e590661f8c9e9e566c8a7640c189687215"
      -  },
      -  "_source": "https://github.com/HubSpot/tether.git",
      -  "_target": "^1.4.0",
      -  "_originalSource": "tether"
      -}
      \ No newline at end of file
      diff --git a/bower_components/tether/CHANGELOG.md b/bower_components/tether/CHANGELOG.md
      deleted file mode 100644
      index d5a8047ff7..0000000000
      --- a/bower_components/tether/CHANGELOG.md
      +++ /dev/null
      @@ -1,13 +0,0 @@
      -## v1.3.0
      -- Tether instances now fire an 'update' event when attachments change due to constraints (#119)
      -
      -## v1.0.1
      -- Update arrow mixin to change arrow pointer event
      -
      -
      -## v1.0.0
      -- Coffeescript -> ES6
      -- Proper UMD Wrapper
      -- Update build steps
      -- Add changelog
      -- Provide minified CSS
      diff --git a/bower_components/tether/CONTRIBUTING.md b/bower_components/tether/CONTRIBUTING.md
      deleted file mode 100644
      index 8e4b9c542f..0000000000
      --- a/bower_components/tether/CONTRIBUTING.md
      +++ /dev/null
      @@ -1,59 +0,0 @@
      -# Contributing Guide
      -
      -You will need:
      -
      -- Node.js/io.js & npm
      -- Bower
      -- Gulp
      -
      -
      -## Getting started
      -
      -1. Fork the project
      -2. Clone your forked project by running `git clone git@github.com:{
      -   YOUR_USERNAME }/tether.git`
      -3. Run `npm install` to install both node modules and bower components
      -4. Test that you can build the source by moving/renaming the existing `dist`
      -   directory and running `npm run build`
      -5. Assuming everything went well, you should now have a `dist` directory that
      -   matches the one you moved in step 4
      -
      -
      -## Writing code!
      -
      -We use `gulp` to facilitate things like transpilation, minification, etc. so
      -can you focus on writing relevant code. If there is a fix or feature you would like
      -to contribute, we ask that you take the following steps:
      -
      -1. Most of the _editable_ code lives in the `src` directory while built code
      -   will end up in the `dist` directory upon running `npm run build`.
      -
      -2. Depending on how big your changes are, bump the version numbers appropriately
      -   in `bower.json` and `package.json`. We try to follow semver, so a good rule
      -   of thumb for how to bump the version is:
      -   - A fix to existing code, perform a patch bump e.g. x.x.0 -> x.x.1
      -   - New feature, perform a minor bump e.g. x.0.x -> x.1.x
      -   - Breaking changes such a rewrite, perform a major bump e.g.
      -     1.x.x -> 2.x.x
      -
      -   Versioning is hard, so just use good judgement and we'll be more than happy
      -   to help out.
      -
      -   __NOTE__: There is a `gulp` task that will automate some of the versioning.
      -   You can run `gulp version:{type}` where type is `patch|minor|major` to
      -   update both `bower.json` and `package.json` as well as add the appropriate
      -   git tag.
      -
      -3. Provide a thoughtful commit message and push your changes to your fork using
      -   `git push origin master` (assuming your forked project is using `origin` for
      -   the remote name and you are on the `master` branch).
      -
      -4. Open a Pull Request on GitHub with a description of your changes.
      -
      -
      -## Testing
      -
      -Work in progress. We are hoping to add some tests, so if you would like to help
      -us get started, feel free to contact us through the Issues or open a Pull
      -Request.
      -
      diff --git a/bower_components/tether/LICENSE b/bower_components/tether/LICENSE
      deleted file mode 100644
      index 0e08c0a565..0000000000
      --- a/bower_components/tether/LICENSE
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -Copyright (c) 2014-2016 HubSpot, Inc.
      -
      -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
      -
      -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
      -
      -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
      -
      diff --git a/bower_components/tether/README.md b/bower_components/tether/README.md
      deleted file mode 100644
      index e7db89361e..0000000000
      --- a/bower_components/tether/README.md
      +++ /dev/null
      @@ -1,106 +0,0 @@
      -## Tether
      -
      -[![GitHub
      -version](https://badge.fury.io/gh/HubSpot%2Ftether.svg)](http://badge.fury.io/gh/HubSpot%2Ftether)
      -
      -[Tether](http://github.hubspot.com/tether/) is a small, focused JavaScript library for defining and managing the position of user interface (UI) elements in relation to one another on a web page. It is a tool for web developers building features that require certain UI elements to be precisely positioned based on the location of another UI element.
      -
      -There are often situations in UI development where elements need to be attached to other elements, but placing them right next to each other in the [DOM tree](https://en.wikipedia.org/wiki/Document_Object_Model) can be problematic based on the context. For example, what happens if the element we’re attaching other elements to is fixed to the center of the screen? Or what if the element is inside a scrollable container? How can we prevent the attached element from being clipped as it disappears from view while a user is scrolling? Tether can solve all of these problems and more.
      -
      -Some common UI elements that have been built with Tether are [tooltips](http://github.hubspot.com/tooltip/docs/welcome), [select menus](http://github.hubspot.com/select/docs/welcome), [dropdown menus](http://github.hubspot.com/drop/docs/welcome), and [guided tours](http://github.hubspot.com/shepherd/docs/welcome). Tether is flexible and can be used to [solve](http://github.hubspot.com/tether/examples/out-of-bounds/) [all](http://github.hubspot.com/tether/examples/content-visible) [kinds](http://github.hubspot.com/tether/examples/element-scroll) [of](http://github.hubspot.com/tether/examples/enable-disable) interesting [problems](http://github.hubspot.com/tether/examples/viewport); it ensures UI elements stay where they need to be, based on the various user interactions (click, scroll, etc) and layout contexts (fixed positioning, inside scrollable containers, etc).
      -
      -Please have a look at the [documentation](http://github.hubspot.com/tether/) for a more detailed explanation of why you might need Tether for your next project.
      -
      -## What to Use Tether for and When to Use It
      -
      -Tether is a small, focused JavaScript library. For those who might be new to JavaScript, a library is simply a JavaScript file (or files) that contain useful JavaScript code to help achieve tasks easier and faster. Since Tether is a JavaScript user interface (**UI**) library, it contains code to help you to manage the way your website or web app appears.
      -
      -Tether’s goal to is to help you position your elements side-by-side when needed.
      -
      -Let’s say you’ve started working on your dream project&mdash;a fancy web app that’s sure to become the next big thing! An important feature of your new app is to allow users to comment on shared photos. However, due to limited vertical space and the overall layout of your new app, you’d like to display the comments **next** to the image, similar to how Instagram does it.
      -
      -Your HTML code might look something like this:
      -
      -```html
      -<div class="container">
      -  <img src="awesome-picture.jpg" alt="Awesome Picture" class="picture">
      -  <div class="comments">
      -    ...
      -  </div>
      -</div>
      -```
      -
      -Now, you could achieve this with some CSS using its `position` property, but going this route can be problematic since many of `position`’s values take elements **out** of the natural DOM flow. For example, if you have an element at the bottom of your HTML document, using `position: absolute` or `position: fixed` might could move it all the way to the top of your website in the browser.
      -
      -Not only that, but you also have to make manual adjustments to ensure **other** elements aren’t negatively affected by the positioned elements. Not to mention, you probably want your comment box to be **responsive**, and look good across different device sizes. Coding a solution for this manually is a challenge all on its own.
      -
      -**Enter Tether!**
      -
      -After installing Tether and including it in your project, you can begin using it!
      -
      -1. In your JavaScript file, create a new instance (or constructor function) of the `Tether` object:
      -
      -    ```javascript
      -    new Tether({});
      -    ```
      -
      -2. Within the curly braces (`{}`) you can configure the library’s options. Tether’s extensive list of options can be found in the [Tether documentation](http://github.hubspot.com/tether/).
      -
      -    ```javascript
      -    new Tether({
      -      element: '.comments',
      -      target: '.picture',
      -      attachment: 'top right'
      -      targetAttachment: 'top left'
      -    });
      -    ```
      -
      -Now you have a perfectly placed comment section to go with your awesome picture! It’ll even stay attached to the element when a user resizes their browser window.
      -
      -There are tons of other useful features of Tether as well, instead of “comment boxes” you could also build:
      -
      -* Tooltips for useful hints and tricks,
      -* Dropdown menus,
      -* Autocomplete popups for forms,
      -* and [more](http://github.hubspot.com/tether/examples/list_of_examples/)!
      -
      -## Install
      -
      -__npm__
      -```sh
      -$ npm install tether
      -```
      -
      -__bower__
      -```sh
      -$ bower install tether
      -```
      -
      -__download__
      -
      -Or just download from the [releases](https://github.com/HubSpot/tether/releases).
      -
      -## Usage
      -You only need to include [tether.min.js](https://github.com/HubSpot/tether/blob/master/dist/js/tether.min.js) in your page:
      -```
      -<script src="path/to/dist/js/tether.min.js"></script>
      -```
      -Or just use a CDN:
      -```
      -<script src="//cdnjs.cloudflare.com/ajax/libs/tether/1.3.1/js/tether.min.js"></script>
      -```
      -
      -The css files in the [dist/css](https://github.com/HubSpot/tether/tree/master/dist/css) folder are not required to get tether running.
      -
      -For more details jump straight in to the detailed [Usage](http://github.hubspot.com/tether/#usage) page.
      -
      -[![Tether Docs](http://i.imgur.com/YCx8cLr.png)](http://github.hubspot.com/tether/#usage)
      -
      -[Demo & API Documentation](http://github.hubspot.com/tether/)
      -
      -## Contributing
      -
      -We encourage contributions of all kinds. If you would like to contribute in some way, please review our [guidelines for contributing](CONTRIBUTING.md).
      -
      -## License
      -Copyright &copy; 2014-2016 HubSpot - [MIT License](LICENSE)
      diff --git a/bower_components/tether/bower.json b/bower_components/tether/bower.json
      deleted file mode 100644
      index ea9b6b759e..0000000000
      --- a/bower_components/tether/bower.json
      +++ /dev/null
      @@ -1,26 +0,0 @@
      -{
      -  "name": "tether",
      -  "version": "1.4.0",
      -  "homepage": "http://github.hubspot.com/tether",
      -  "authors": [
      -    "Zack Bloom <zackbloom@gmail.com>",
      -    "Adam Schwartz <adam.flynn.schwartz@gmail.com>"
      -  ],
      -  "maintainers": [
      -    "Nicholas Hwang <nick.joosung.hwang@gmail.com>",
      -    "Trevor Burnham <trevorburnham@gmail.com>"
      -  ],
      -  "description": "A client-side library to make absolutely positioned elements attach to elements in the page efficiently.",
      -  "keywords": [
      -    "javascript"
      -  ],
      -  "license": "MIT",
      -  "main": "dist/js/tether.js",
      -  "ignore": [
      -    "**/.*",
      -    "node_modules",
      -    "bower_components",
      -    "test",
      -    "tests"
      -  ]
      -}
      diff --git a/bower_components/tether/component.json b/bower_components/tether/component.json
      deleted file mode 100644
      index 1e81c50db0..0000000000
      --- a/bower_components/tether/component.json
      +++ /dev/null
      @@ -1,22 +0,0 @@
      -{
      -  "name": "tether",
      -  "repo": "HubSpot/tether",
      -  "version": "1.3.9",
      -  "description": "A client-side library to make absolutely positioned elements attach to elements in the page efficiently.",
      -  "authors": [
      -    "Zack Bloom <zackbloom@gmail.com>",
      -    "Adam Schwartz <adam.flynn.schwartz@gmail.com>"
      -  ],
      -  "maintainers": [
      -    "Nicholas Hwang <nick.joosung.hwang@gmail.com>"
      -  ],
      -  "license": "MIT",
      -  "demo": "http://github.hubspot.com/tether/docs/welcome/",
      -  "main": "dist/js/tether.js",
      -  "styles": [
      -    "dist/css/tether.css"
      -  ],
      -  "scripts": [
      -    "dist/js/tether.js"
      -  ]
      -}
      diff --git a/bower_components/tether/dist/css/tether-theme-arrows-dark.css b/bower_components/tether/dist/css/tether-theme-arrows-dark.css
      deleted file mode 100644
      index c000dd7400..0000000000
      --- a/bower_components/tether/dist/css/tether-theme-arrows-dark.css
      +++ /dev/null
      @@ -1,150 +0,0 @@
      -.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
      -  box-sizing: border-box; }
      -
      -.tether-element {
      -  position: absolute;
      -  display: none; }
      -  .tether-element.tether-open {
      -    display: block; }
      -
      -.tether-element.tether-theme-arrows-dark {
      -  max-width: 100%;
      -  max-height: 100%; }
      -  .tether-element.tether-theme-arrows-dark .tether-content {
      -    border-radius: 5px;
      -    position: relative;
      -    font-family: inherit;
      -    background: #000;
      -    color: #fff;
      -    padding: 1em;
      -    font-size: 1.1em;
      -    line-height: 1.5em; }
      -    .tether-element.tether-theme-arrows-dark .tether-content:before {
      -      content: "";
      -      display: block;
      -      position: absolute;
      -      width: 0;
      -      height: 0;
      -      border-color: transparent;
      -      border-width: 16px;
      -      border-style: solid; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-center .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-center .tether-content:before {
      -      top: 100%;
      -      left: 50%;
      -      margin-left: -16px;
      -      border-top-color: #000;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-center .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-center .tether-content:before {
      -      bottom: 100%;
      -      left: 50%;
      -      margin-left: -16px;
      -      border-bottom-color: #000;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-element-attached-middle .tether-content {
      -    margin-right: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-element-attached-middle .tether-content:before {
      -      left: 100%;
      -      top: 50%;
      -      margin-top: -16px;
      -      border-left-color: #000;
      -      border-right: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-element-attached-middle .tether-content {
      -    margin-left: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-element-attached-middle .tether-content:before {
      -      right: 100%;
      -      top: 50%;
      -      margin-top: -16px;
      -      border-right-color: #000;
      -      border-left: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-target-attached-center .tether-content {
      -    left: -32px; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-target-attached-center .tether-content {
      -    left: 32px; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
      -      bottom: 100%;
      -      left: 16px;
      -      border-bottom-color: #000;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
      -      bottom: 100%;
      -      right: 16px;
      -      border-bottom-color: #000;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
      -      top: 100%;
      -      left: 16px;
      -      border-top-color: #000;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
      -      top: 100%;
      -      right: 16px;
      -      border-top-color: #000;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content:before {
      -      bottom: 100%;
      -      left: 16px;
      -      border-bottom-color: #000;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content:before {
      -      bottom: 100%;
      -      right: 16px;
      -      border-bottom-color: #000;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content:before {
      -      top: 100%;
      -      left: 16px;
      -      border-top-color: #000;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content:before {
      -      top: 100%;
      -      right: 16px;
      -      border-top-color: #000;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content {
      -    margin-right: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content:before {
      -      top: 16px;
      -      left: 100%;
      -      border-left-color: #000;
      -      border-right: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content {
      -    margin-left: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before {
      -      top: 16px;
      -      right: 100%;
      -      border-right-color: #000;
      -      border-left: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content {
      -    margin-right: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content:before {
      -      bottom: 16px;
      -      left: 100%;
      -      border-left-color: #000;
      -      border-right: 0; }
      -  .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content {
      -    margin-left: 16px; }
      -    .tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content:before {
      -      bottom: 16px;
      -      right: 100%;
      -      border-right-color: #000;
      -      border-left: 0; }
      diff --git a/bower_components/tether/dist/css/tether-theme-arrows-dark.min.css b/bower_components/tether/dist/css/tether-theme-arrows-dark.min.css
      deleted file mode 100644
      index 73d263e98d..0000000000
      --- a/bower_components/tether/dist/css/tether-theme-arrows-dark.min.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-center .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content{margin-bottom:16px}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-element-attached-middle .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content{margin-right:16px}.tether-element,.tether-element *,.tether-element :after,.tether-element :before,.tether-element:after,.tether-element:before{box-sizing:border-box}.tether-element{position:absolute;display:none}.tether-element.tether-open{display:block}.tether-element.tether-theme-arrows-dark{max-width:100%;max-height:100%}.tether-element.tether-theme-arrows-dark .tether-content{border-radius:5px;position:relative;font-family:inherit;background:#000;color:#fff;padding:1em;font-size:1.1em;line-height:1.5em}.tether-element.tether-theme-arrows-dark .tether-content:before{content:"";display:block;position:absolute;width:0;height:0;border-color:transparent;border-width:16px;border-style:solid}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-center .tether-content:before{top:100%;left:50%;margin-left:-16px;border-top-color:#000;border-bottom:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-center .tether-content{margin-top:16px}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-center .tether-content:before{bottom:100%;left:50%;margin-left:-16px;border-bottom-color:#000;border-top:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-element-attached-middle .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content{margin-left:16px}.tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-element-attached-middle .tether-content:before{left:100%;top:50%;margin-top:-16px;border-left-color:#000;border-right:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-element-attached-middle .tether-content:before{right:100%;top:50%;margin-top:-16px;border-right-color:#000;border-left:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content,.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content{margin-top:16px}.tether-element.tether-theme-arrows-dark.tether-element-attached-left.tether-target-attached-center .tether-content{left:-32px}.tether-element.tether-theme-arrows-dark.tether-element-attached-right.tether-target-attached-center .tether-content{left:32px}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content:before{bottom:100%;left:16px;border-bottom-color:#000;border-top:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content:before{bottom:100%;right:16px;border-bottom-color:#000;border-top:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content:before{top:100%;left:16px;border-top-color:#000;border-bottom:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content:before{top:100%;right:16px;border-top-color:#000;border-bottom:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content:before{bottom:100%;left:16px;border-bottom-color:#000;border-top:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content:before{bottom:100%;right:16px;border-bottom-color:#000;border-top:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content:before{top:100%;left:16px;border-top-color:#000;border-bottom:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content:before{top:100%;right:16px;border-top-color:#000;border-bottom:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content:before{top:16px;left:100%;border-left-color:#000;border-right:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before{top:16px;right:100%;border-right-color:#000;border-left:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content:before{bottom:16px;left:100%;border-left-color:#000;border-right:0}.tether-element.tether-theme-arrows-dark.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content:before{bottom:16px;right:100%;border-right-color:#000;border-left:0}
      \ No newline at end of file
      diff --git a/bower_components/tether/dist/css/tether-theme-arrows.css b/bower_components/tether/dist/css/tether-theme-arrows.css
      deleted file mode 100644
      index e9e3bbfabf..0000000000
      --- a/bower_components/tether/dist/css/tether-theme-arrows.css
      +++ /dev/null
      @@ -1,154 +0,0 @@
      -.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
      -  box-sizing: border-box; }
      -
      -.tether-element {
      -  position: absolute;
      -  display: none; }
      -  .tether-element.tether-open {
      -    display: block; }
      -
      -.tether-element.tether-theme-arrows {
      -  max-width: 100%;
      -  max-height: 100%; }
      -  .tether-element.tether-theme-arrows .tether-content {
      -    border-radius: 5px;
      -    position: relative;
      -    font-family: inherit;
      -    background: #fff;
      -    color: inherit;
      -    padding: 1em;
      -    font-size: 1.1em;
      -    line-height: 1.5em;
      -    -webkit-transform: translateZ(0);
      -            transform: translateZ(0);
      -    -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2));
      -            filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2)); }
      -    .tether-element.tether-theme-arrows .tether-content:before {
      -      content: "";
      -      display: block;
      -      position: absolute;
      -      width: 0;
      -      height: 0;
      -      border-color: transparent;
      -      border-width: 16px;
      -      border-style: solid; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-center .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-center .tether-content:before {
      -      top: 100%;
      -      left: 50%;
      -      margin-left: -16px;
      -      border-top-color: #fff;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-center .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-center .tether-content:before {
      -      bottom: 100%;
      -      left: 50%;
      -      margin-left: -16px;
      -      border-bottom-color: #fff;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-right.tether-element-attached-middle .tether-content {
      -    margin-right: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-right.tether-element-attached-middle .tether-content:before {
      -      left: 100%;
      -      top: 50%;
      -      margin-top: -16px;
      -      border-left-color: #fff;
      -      border-right: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-left.tether-element-attached-middle .tether-content {
      -    margin-left: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-left.tether-element-attached-middle .tether-content:before {
      -      right: 100%;
      -      top: 50%;
      -      margin-top: -16px;
      -      border-right-color: #fff;
      -      border-left: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-left.tether-target-attached-center .tether-content {
      -    left: -32px; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-right.tether-target-attached-center .tether-content {
      -    left: 32px; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
      -      bottom: 100%;
      -      left: 16px;
      -      border-bottom-color: #fff;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
      -      bottom: 100%;
      -      right: 16px;
      -      border-bottom-color: #fff;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content:before {
      -      top: 100%;
      -      left: 16px;
      -      border-top-color: #fff;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content:before {
      -      top: 100%;
      -      right: 16px;
      -      border-top-color: #fff;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content:before {
      -      bottom: 100%;
      -      left: 16px;
      -      border-bottom-color: #fff;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content {
      -    margin-top: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content:before {
      -      bottom: 100%;
      -      right: 16px;
      -      border-bottom-color: #fff;
      -      border-top: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content:before {
      -      top: 100%;
      -      left: 16px;
      -      border-top-color: #fff;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content {
      -    margin-bottom: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content:before {
      -      top: 100%;
      -      right: 16px;
      -      border-top-color: #fff;
      -      border-bottom: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content {
      -    margin-right: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content:before {
      -      top: 16px;
      -      left: 100%;
      -      border-left-color: #fff;
      -      border-right: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content {
      -    margin-left: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before {
      -      top: 16px;
      -      right: 100%;
      -      border-right-color: #fff;
      -      border-left: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content {
      -    margin-right: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content:before {
      -      bottom: 16px;
      -      left: 100%;
      -      border-left-color: #fff;
      -      border-right: 0; }
      -  .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content {
      -    margin-left: 16px; }
      -    .tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content:before {
      -      bottom: 16px;
      -      right: 100%;
      -      border-right-color: #fff;
      -      border-left: 0; }
      diff --git a/bower_components/tether/dist/css/tether-theme-arrows.min.css b/bower_components/tether/dist/css/tether-theme-arrows.min.css
      deleted file mode 100644
      index 61994a9c4b..0000000000
      --- a/bower_components/tether/dist/css/tether-theme-arrows.min.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-center .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content{margin-bottom:16px}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-right.tether-element-attached-middle .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content{margin-right:16px}.tether-element,.tether-element *,.tether-element :after,.tether-element :before,.tether-element:after,.tether-element:before{box-sizing:border-box}.tether-element{position:absolute;display:none}.tether-element.tether-open{display:block}.tether-element.tether-theme-arrows{max-width:100%;max-height:100%}.tether-element.tether-theme-arrows .tether-content{border-radius:5px;position:relative;font-family:inherit;background:#fff;color:inherit;padding:1em;font-size:1.1em;line-height:1.5em;-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .2));filter:drop-shadow(0 1px 4px rgba(0, 0, 0, .2))}.tether-element.tether-theme-arrows .tether-content:before{content:"";display:block;position:absolute;width:0;height:0;border-color:transparent;border-width:16px;border-style:solid}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-center .tether-content:before{top:100%;left:50%;margin-left:-16px;border-top-color:#fff;border-bottom:0}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-center .tether-content{margin-top:16px}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-center .tether-content:before{bottom:100%;left:50%;margin-left:-16px;border-bottom-color:#fff;border-top:0}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-left.tether-element-attached-middle .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content{margin-left:16px}.tether-element.tether-theme-arrows.tether-element-attached-right.tether-element-attached-middle .tether-content:before{left:100%;top:50%;margin-top:-16px;border-left-color:#fff;border-right:0}.tether-element.tether-theme-arrows.tether-element-attached-left.tether-element-attached-middle .tether-content:before{right:100%;top:50%;margin-top:-16px;border-right-color:#fff;border-left:0}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content,.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content{margin-top:16px}.tether-element.tether-theme-arrows.tether-element-attached-left.tether-target-attached-center .tether-content{left:-32px}.tether-element.tether-theme-arrows.tether-element-attached-right.tether-target-attached-center .tether-content{left:32px}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-middle .tether-content:before{bottom:100%;left:16px;border-bottom-color:#fff;border-top:0}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-middle .tether-content:before{bottom:100%;right:16px;border-bottom-color:#fff;border-top:0}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-middle .tether-content:before{top:100%;left:16px;border-top-color:#fff;border-bottom:0}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-middle .tether-content:before{top:100%;right:16px;border-top-color:#fff;border-bottom:0}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-bottom .tether-content:before{bottom:100%;left:16px;border-bottom-color:#fff;border-top:0}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-bottom .tether-content:before{bottom:100%;right:16px;border-bottom-color:#fff;border-top:0}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-top .tether-content:before{top:100%;left:16px;border-top-color:#fff;border-bottom:0}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-top .tether-content:before{top:100%;right:16px;border-top-color:#fff;border-bottom:0}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-right.tether-target-attached-left .tether-content:before{top:16px;left:100%;border-left-color:#fff;border-right:0}.tether-element.tether-theme-arrows.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before{top:16px;right:100%;border-right-color:#fff;border-left:0}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-right.tether-target-attached-left .tether-content:before{bottom:16px;left:100%;border-left-color:#fff;border-right:0}.tether-element.tether-theme-arrows.tether-element-attached-bottom.tether-element-attached-left.tether-target-attached-right .tether-content:before{bottom:16px;right:100%;border-right-color:#fff;border-left:0}
      \ No newline at end of file
      diff --git a/bower_components/tether/dist/css/tether-theme-basic.css b/bower_components/tether/dist/css/tether-theme-basic.css
      deleted file mode 100644
      index f2b3b5c6a2..0000000000
      --- a/bower_components/tether/dist/css/tether-theme-basic.css
      +++ /dev/null
      @@ -1,21 +0,0 @@
      -.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
      -  box-sizing: border-box; }
      -
      -.tether-element {
      -  position: absolute;
      -  display: none; }
      -  .tether-element.tether-open {
      -    display: block; }
      -
      -.tether-element.tether-theme-basic {
      -  max-width: 100%;
      -  max-height: 100%; }
      -  .tether-element.tether-theme-basic .tether-content {
      -    border-radius: 5px;
      -    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
      -    font-family: inherit;
      -    background: #fff;
      -    color: inherit;
      -    padding: 1em;
      -    font-size: 1.1em;
      -    line-height: 1.5em; }
      diff --git a/bower_components/tether/dist/css/tether-theme-basic.min.css b/bower_components/tether/dist/css/tether-theme-basic.min.css
      deleted file mode 100644
      index f117c4799a..0000000000
      --- a/bower_components/tether/dist/css/tether-theme-basic.min.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -.tether-element,.tether-element *,.tether-element :after,.tether-element :before,.tether-element:after,.tether-element:before{box-sizing:border-box}.tether-element{position:absolute;display:none}.tether-element.tether-open{display:block}.tether-element.tether-theme-basic{max-width:100%;max-height:100%}.tether-element.tether-theme-basic .tether-content{border-radius:5px;box-shadow:0 2px 8px rgba(0,0,0,.2);font-family:inherit;background:#fff;color:inherit;padding:1em;font-size:1.1em;line-height:1.5em}
      \ No newline at end of file
      diff --git a/bower_components/tether/dist/css/tether.css b/bower_components/tether/dist/css/tether.css
      deleted file mode 100644
      index fc30f56745..0000000000
      --- a/bower_components/tether/dist/css/tether.css
      +++ /dev/null
      @@ -1,8 +0,0 @@
      -.tether-element, .tether-element:after, .tether-element:before, .tether-element *, .tether-element *:after, .tether-element *:before {
      -  box-sizing: border-box; }
      -
      -.tether-element {
      -  position: absolute;
      -  display: none; }
      -  .tether-element.tether-open {
      -    display: block; }
      diff --git a/bower_components/tether/dist/css/tether.min.css b/bower_components/tether/dist/css/tether.min.css
      deleted file mode 100644
      index 328251c90c..0000000000
      --- a/bower_components/tether/dist/css/tether.min.css
      +++ /dev/null
      @@ -1 +0,0 @@
      -.tether-element,.tether-element *,.tether-element :after,.tether-element :before,.tether-element:after,.tether-element:before{box-sizing:border-box}.tether-element{position:absolute;display:none}.tether-element.tether-open{display:block}
      \ No newline at end of file
      diff --git a/bower_components/tether/dist/js/tether.js b/bower_components/tether/dist/js/tether.js
      deleted file mode 100644
      index ea141f01d0..0000000000
      --- a/bower_components/tether/dist/js/tether.js
      +++ /dev/null
      @@ -1,1811 +0,0 @@
      -/*! tether 1.4.0 */
      -
      -(function(root, factory) {
      -  if (typeof define === 'function' && define.amd) {
      -    define(factory);
      -  } else if (typeof exports === 'object') {
      -    module.exports = factory(require, exports, module);
      -  } else {
      -    root.Tether = factory();
      -  }
      -}(this, function(require, exports, module) {
      -
      -'use strict';
      -
      -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
      -
      -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
      -
      -var TetherBase = undefined;
      -if (typeof TetherBase === 'undefined') {
      -  TetherBase = { modules: [] };
      -}
      -
      -var zeroElement = null;
      -
      -// Same as native getBoundingClientRect, except it takes into account parent <frame> offsets
      -// if the element lies within a nested document (<frame> or <iframe>-like).
      -function getActualBoundingClientRect(node) {
      -  var boundingRect = node.getBoundingClientRect();
      -
      -  // The original object returned by getBoundingClientRect is immutable, so we clone it
      -  // We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9
      -  var rect = {};
      -  for (var k in boundingRect) {
      -    rect[k] = boundingRect[k];
      -  }
      -
      -  if (node.ownerDocument !== document) {
      -    var _frameElement = node.ownerDocument.defaultView.frameElement;
      -    if (_frameElement) {
      -      var frameRect = getActualBoundingClientRect(_frameElement);
      -      rect.top += frameRect.top;
      -      rect.bottom += frameRect.top;
      -      rect.left += frameRect.left;
      -      rect.right += frameRect.left;
      -    }
      -  }
      -
      -  return rect;
      -}
      -
      -function getScrollParents(el) {
      -  // In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;
      -  // https://bugzilla.mozilla.org/show_bug.cgi?id=548397
      -  var computedStyle = getComputedStyle(el) || {};
      -  var position = computedStyle.position;
      -  var parents = [];
      -
      -  if (position === 'fixed') {
      -    return [el];
      -  }
      -
      -  var parent = el;
      -  while ((parent = parent.parentNode) && parent && parent.nodeType === 1) {
      -    var style = undefined;
      -    try {
      -      style = getComputedStyle(parent);
      -    } catch (err) {}
      -
      -    if (typeof style === 'undefined' || style === null) {
      -      parents.push(parent);
      -      return parents;
      -    }
      -
      -    var _style = style;
      -    var overflow = _style.overflow;
      -    var overflowX = _style.overflowX;
      -    var overflowY = _style.overflowY;
      -
      -    if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {
      -      if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {
      -        parents.push(parent);
      -      }
      -    }
      -  }
      -
      -  parents.push(el.ownerDocument.body);
      -
      -  // If the node is within a frame, account for the parent window scroll
      -  if (el.ownerDocument !== document) {
      -    parents.push(el.ownerDocument.defaultView);
      -  }
      -
      -  return parents;
      -}
      -
      -var uniqueId = (function () {
      -  var id = 0;
      -  return function () {
      -    return ++id;
      -  };
      -})();
      -
      -var zeroPosCache = {};
      -var getOrigin = function getOrigin() {
      -  // getBoundingClientRect is unfortunately too accurate.  It introduces a pixel or two of
      -  // jitter as the user scrolls that messes with our ability to detect if two positions
      -  // are equivilant or not.  We place an element at the top left of the page that will
      -  // get the same jitter, so we can cancel the two out.
      -  var node = zeroElement;
      -  if (!node || !document.body.contains(node)) {
      -    node = document.createElement('div');
      -    node.setAttribute('data-tether-id', uniqueId());
      -    extend(node.style, {
      -      top: 0,
      -      left: 0,
      -      position: 'absolute'
      -    });
      -
      -    document.body.appendChild(node);
      -
      -    zeroElement = node;
      -  }
      -
      -  var id = node.getAttribute('data-tether-id');
      -  if (typeof zeroPosCache[id] === 'undefined') {
      -    zeroPosCache[id] = getActualBoundingClientRect(node);
      -
      -    // Clear the cache when this position call is done
      -    defer(function () {
      -      delete zeroPosCache[id];
      -    });
      -  }
      -
      -  return zeroPosCache[id];
      -};
      -
      -function removeUtilElements() {
      -  if (zeroElement) {
      -    document.body.removeChild(zeroElement);
      -  }
      -  zeroElement = null;
      -};
      -
      -function getBounds(el) {
      -  var doc = undefined;
      -  if (el === document) {
      -    doc = document;
      -    el = document.documentElement;
      -  } else {
      -    doc = el.ownerDocument;
      -  }
      -
      -  var docEl = doc.documentElement;
      -
      -  var box = getActualBoundingClientRect(el);
      -
      -  var origin = getOrigin();
      -
      -  box.top -= origin.top;
      -  box.left -= origin.left;
      -
      -  if (typeof box.width === 'undefined') {
      -    box.width = document.body.scrollWidth - box.left - box.right;
      -  }
      -  if (typeof box.height === 'undefined') {
      -    box.height = document.body.scrollHeight - box.top - box.bottom;
      -  }
      -
      -  box.top = box.top - docEl.clientTop;
      -  box.left = box.left - docEl.clientLeft;
      -  box.right = doc.body.clientWidth - box.width - box.left;
      -  box.bottom = doc.body.clientHeight - box.height - box.top;
      -
      -  return box;
      -}
      -
      -function getOffsetParent(el) {
      -  return el.offsetParent || document.documentElement;
      -}
      -
      -var _scrollBarSize = null;
      -function getScrollBarSize() {
      -  if (_scrollBarSize) {
      -    return _scrollBarSize;
      -  }
      -  var inner = document.createElement('div');
      -  inner.style.width = '100%';
      -  inner.style.height = '200px';
      -
      -  var outer = document.createElement('div');
      -  extend(outer.style, {
      -    position: 'absolute',
      -    top: 0,
      -    left: 0,
      -    pointerEvents: 'none',
      -    visibility: 'hidden',
      -    width: '200px',
      -    height: '150px',
      -    overflow: 'hidden'
      -  });
      -
      -  outer.appendChild(inner);
      -
      -  document.body.appendChild(outer);
      -
      -  var widthContained = inner.offsetWidth;
      -  outer.style.overflow = 'scroll';
      -  var widthScroll = inner.offsetWidth;
      -
      -  if (widthContained === widthScroll) {
      -    widthScroll = outer.clientWidth;
      -  }
      -
      -  document.body.removeChild(outer);
      -
      -  var width = widthContained - widthScroll;
      -
      -  _scrollBarSize = { width: width, height: width };
      -  return _scrollBarSize;
      -}
      -
      -function extend() {
      -  var out = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
      -
      -  var args = [];
      -
      -  Array.prototype.push.apply(args, arguments);
      -
      -  args.slice(1).forEach(function (obj) {
      -    if (obj) {
      -      for (var key in obj) {
      -        if (({}).hasOwnProperty.call(obj, key)) {
      -          out[key] = obj[key];
      -        }
      -      }
      -    }
      -  });
      -
      -  return out;
      -}
      -
      -function removeClass(el, name) {
      -  if (typeof el.classList !== 'undefined') {
      -    name.split(' ').forEach(function (cls) {
      -      if (cls.trim()) {
      -        el.classList.remove(cls);
      -      }
      -    });
      -  } else {
      -    var regex = new RegExp('(^| )' + name.split(' ').join('|') + '( |$)', 'gi');
      -    var className = getClassName(el).replace(regex, ' ');
      -    setClassName(el, className);
      -  }
      -}
      -
      -function addClass(el, name) {
      -  if (typeof el.classList !== 'undefined') {
      -    name.split(' ').forEach(function (cls) {
      -      if (cls.trim()) {
      -        el.classList.add(cls);
      -      }
      -    });
      -  } else {
      -    removeClass(el, name);
      -    var cls = getClassName(el) + (' ' + name);
      -    setClassName(el, cls);
      -  }
      -}
      -
      -function hasClass(el, name) {
      -  if (typeof el.classList !== 'undefined') {
      -    return el.classList.contains(name);
      -  }
      -  var className = getClassName(el);
      -  return new RegExp('(^| )' + name + '( |$)', 'gi').test(className);
      -}
      -
      -function getClassName(el) {
      -  // Can't use just SVGAnimatedString here since nodes within a Frame in IE have
      -  // completely separately SVGAnimatedString base classes
      -  if (el.className instanceof el.ownerDocument.defaultView.SVGAnimatedString) {
      -    return el.className.baseVal;
      -  }
      -  return el.className;
      -}
      -
      -function setClassName(el, className) {
      -  el.setAttribute('class', className);
      -}
      -
      -function updateClasses(el, add, all) {
      -  // Of the set of 'all' classes, we need the 'add' classes, and only the
      -  // 'add' classes to be set.
      -  all.forEach(function (cls) {
      -    if (add.indexOf(cls) === -1 && hasClass(el, cls)) {
      -      removeClass(el, cls);
      -    }
      -  });
      -
      -  add.forEach(function (cls) {
      -    if (!hasClass(el, cls)) {
      -      addClass(el, cls);
      -    }
      -  });
      -}
      -
      -var deferred = [];
      -
      -var defer = function defer(fn) {
      -  deferred.push(fn);
      -};
      -
      -var flush = function flush() {
      -  var fn = undefined;
      -  while (fn = deferred.pop()) {
      -    fn();
      -  }
      -};
      -
      -var Evented = (function () {
      -  function Evented() {
      -    _classCallCheck(this, Evented);
      -  }
      -
      -  _createClass(Evented, [{
      -    key: 'on',
      -    value: function on(event, handler, ctx) {
      -      var once = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
      -
      -      if (typeof this.bindings === 'undefined') {
      -        this.bindings = {};
      -      }
      -      if (typeof this.bindings[event] === 'undefined') {
      -        this.bindings[event] = [];
      -      }
      -      this.bindings[event].push({ handler: handler, ctx: ctx, once: once });
      -    }
      -  }, {
      -    key: 'once',
      -    value: function once(event, handler, ctx) {
      -      this.on(event, handler, ctx, true);
      -    }
      -  }, {
      -    key: 'off',
      -    value: function off(event, handler) {
      -      if (typeof this.bindings === 'undefined' || typeof this.bindings[event] === 'undefined') {
      -        return;
      -      }
      -
      -      if (typeof handler === 'undefined') {
      -        delete this.bindings[event];
      -      } else {
      -        var i = 0;
      -        while (i < this.bindings[event].length) {
      -          if (this.bindings[event][i].handler === handler) {
      -            this.bindings[event].splice(i, 1);
      -          } else {
      -            ++i;
      -          }
      -        }
      -      }
      -    }
      -  }, {
      -    key: 'trigger',
      -    value: function trigger(event) {
      -      if (typeof this.bindings !== 'undefined' && this.bindings[event]) {
      -        var i = 0;
      -
      -        for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
      -          args[_key - 1] = arguments[_key];
      -        }
      -
      -        while (i < this.bindings[event].length) {
      -          var _bindings$event$i = this.bindings[event][i];
      -          var handler = _bindings$event$i.handler;
      -          var ctx = _bindings$event$i.ctx;
      -          var once = _bindings$event$i.once;
      -
      -          var context = ctx;
      -          if (typeof context === 'undefined') {
      -            context = this;
      -          }
      -
      -          handler.apply(context, args);
      -
      -          if (once) {
      -            this.bindings[event].splice(i, 1);
      -          } else {
      -            ++i;
      -          }
      -        }
      -      }
      -    }
      -  }]);
      -
      -  return Evented;
      -})();
      -
      -TetherBase.Utils = {
      -  getActualBoundingClientRect: getActualBoundingClientRect,
      -  getScrollParents: getScrollParents,
      -  getBounds: getBounds,
      -  getOffsetParent: getOffsetParent,
      -  extend: extend,
      -  addClass: addClass,
      -  removeClass: removeClass,
      -  hasClass: hasClass,
      -  updateClasses: updateClasses,
      -  defer: defer,
      -  flush: flush,
      -  uniqueId: uniqueId,
      -  Evented: Evented,
      -  getScrollBarSize: getScrollBarSize,
      -  removeUtilElements: removeUtilElements
      -};
      -/* globals TetherBase, performance */
      -
      -'use strict';
      -
      -var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
      -
      -var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
      -
      -var _get = function get(_x6, _x7, _x8) { var _again = true; _function: while (_again) { var object = _x6, property = _x7, receiver = _x8; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x6 = parent; _x7 = property; _x8 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
      -
      -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
      -
      -function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
      -
      -if (typeof TetherBase === 'undefined') {
      -  throw new Error('You must include the utils.js file before tether.js');
      -}
      -
      -var _TetherBase$Utils = TetherBase.Utils;
      -var getScrollParents = _TetherBase$Utils.getScrollParents;
      -var getBounds = _TetherBase$Utils.getBounds;
      -var getOffsetParent = _TetherBase$Utils.getOffsetParent;
      -var extend = _TetherBase$Utils.extend;
      -var addClass = _TetherBase$Utils.addClass;
      -var removeClass = _TetherBase$Utils.removeClass;
      -var updateClasses = _TetherBase$Utils.updateClasses;
      -var defer = _TetherBase$Utils.defer;
      -var flush = _TetherBase$Utils.flush;
      -var getScrollBarSize = _TetherBase$Utils.getScrollBarSize;
      -var removeUtilElements = _TetherBase$Utils.removeUtilElements;
      -
      -function within(a, b) {
      -  var diff = arguments.length <= 2 || arguments[2] === undefined ? 1 : arguments[2];
      -
      -  return a + diff >= b && b >= a - diff;
      -}
      -
      -var transformKey = (function () {
      -  if (typeof document === 'undefined') {
      -    return '';
      -  }
      -  var el = document.createElement('div');
      -
      -  var transforms = ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform'];
      -  for (var i = 0; i < transforms.length; ++i) {
      -    var key = transforms[i];
      -    if (el.style[key] !== undefined) {
      -      return key;
      -    }
      -  }
      -})();
      -
      -var tethers = [];
      -
      -var position = function position() {
      -  tethers.forEach(function (tether) {
      -    tether.position(false);
      -  });
      -  flush();
      -};
      -
      -function now() {
      -  if (typeof performance !== 'undefined' && typeof performance.now !== 'undefined') {
      -    return performance.now();
      -  }
      -  return +new Date();
      -}
      -
      -(function () {
      -  var lastCall = null;
      -  var lastDuration = null;
      -  var pendingTimeout = null;
      -
      -  var tick = function tick() {
      -    if (typeof lastDuration !== 'undefined' && lastDuration > 16) {
      -      // We voluntarily throttle ourselves if we can't manage 60fps
      -      lastDuration = Math.min(lastDuration - 16, 250);
      -
      -      // Just in case this is the last event, remember to position just once more
      -      pendingTimeout = setTimeout(tick, 250);
      -      return;
      -    }
      -
      -    if (typeof lastCall !== 'undefined' && now() - lastCall < 10) {
      -      // Some browsers call events a little too frequently, refuse to run more than is reasonable
      -      return;
      -    }
      -
      -    if (pendingTimeout != null) {
      -      clearTimeout(pendingTimeout);
      -      pendingTimeout = null;
      -    }
      -
      -    lastCall = now();
      -    position();
      -    lastDuration = now() - lastCall;
      -  };
      -
      -  if (typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {
      -    ['resize', 'scroll', 'touchmove'].forEach(function (event) {
      -      window.addEventListener(event, tick);
      -    });
      -  }
      -})();
      -
      -var MIRROR_LR = {
      -  center: 'center',
      -  left: 'right',
      -  right: 'left'
      -};
      -
      -var MIRROR_TB = {
      -  middle: 'middle',
      -  top: 'bottom',
      -  bottom: 'top'
      -};
      -
      -var OFFSET_MAP = {
      -  top: 0,
      -  left: 0,
      -  middle: '50%',
      -  center: '50%',
      -  bottom: '100%',
      -  right: '100%'
      -};
      -
      -var autoToFixedAttachment = function autoToFixedAttachment(attachment, relativeToAttachment) {
      -  var left = attachment.left;
      -  var top = attachment.top;
      -
      -  if (left === 'auto') {
      -    left = MIRROR_LR[relativeToAttachment.left];
      -  }
      -
      -  if (top === 'auto') {
      -    top = MIRROR_TB[relativeToAttachment.top];
      -  }
      -
      -  return { left: left, top: top };
      -};
      -
      -var attachmentToOffset = function attachmentToOffset(attachment) {
      -  var left = attachment.left;
      -  var top = attachment.top;
      -
      -  if (typeof OFFSET_MAP[attachment.left] !== 'undefined') {
      -    left = OFFSET_MAP[attachment.left];
      -  }
      -
      -  if (typeof OFFSET_MAP[attachment.top] !== 'undefined') {
      -    top = OFFSET_MAP[attachment.top];
      -  }
      -
      -  return { left: left, top: top };
      -};
      -
      -function addOffset() {
      -  var out = { top: 0, left: 0 };
      -
      -  for (var _len = arguments.length, offsets = Array(_len), _key = 0; _key < _len; _key++) {
      -    offsets[_key] = arguments[_key];
      -  }
      -
      -  offsets.forEach(function (_ref) {
      -    var top = _ref.top;
      -    var left = _ref.left;
      -
      -    if (typeof top === 'string') {
      -      top = parseFloat(top, 10);
      -    }
      -    if (typeof left === 'string') {
      -      left = parseFloat(left, 10);
      -    }
      -
      -    out.top += top;
      -    out.left += left;
      -  });
      -
      -  return out;
      -}
      -
      -function offsetToPx(offset, size) {
      -  if (typeof offset.left === 'string' && offset.left.indexOf('%') !== -1) {
      -    offset.left = parseFloat(offset.left, 10) / 100 * size.width;
      -  }
      -  if (typeof offset.top === 'string' && offset.top.indexOf('%') !== -1) {
      -    offset.top = parseFloat(offset.top, 10) / 100 * size.height;
      -  }
      -
      -  return offset;
      -}
      -
      -var parseOffset = function parseOffset(value) {
      -  var _value$split = value.split(' ');
      -
      -  var _value$split2 = _slicedToArray(_value$split, 2);
      -
      -  var top = _value$split2[0];
      -  var left = _value$split2[1];
      -
      -  return { top: top, left: left };
      -};
      -var parseAttachment = parseOffset;
      -
      -var TetherClass = (function (_Evented) {
      -  _inherits(TetherClass, _Evented);
      -
      -  function TetherClass(options) {
      -    var _this = this;
      -
      -    _classCallCheck(this, TetherClass);
      -
      -    _get(Object.getPrototypeOf(TetherClass.prototype), 'constructor', this).call(this);
      -    this.position = this.position.bind(this);
      -
      -    tethers.push(this);
      -
      -    this.history = [];
      -
      -    this.setOptions(options, false);
      -
      -    TetherBase.modules.forEach(function (module) {
      -      if (typeof module.initialize !== 'undefined') {
      -        module.initialize.call(_this);
      -      }
      -    });
      -
      -    this.position();
      -  }
      -
      -  _createClass(TetherClass, [{
      -    key: 'getClass',
      -    value: function getClass() {
      -      var key = arguments.length <= 0 || arguments[0] === undefined ? '' : arguments[0];
      -      var classes = this.options.classes;
      -
      -      if (typeof classes !== 'undefined' && classes[key]) {
      -        return this.options.classes[key];
      -      } else if (this.options.classPrefix) {
      -        return this.options.classPrefix + '-' + key;
      -      } else {
      -        return key;
      -      }
      -    }
      -  }, {
      -    key: 'setOptions',
      -    value: function setOptions(options) {
      -      var _this2 = this;
      -
      -      var pos = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1];
      -
      -      var defaults = {
      -        offset: '0 0',
      -        targetOffset: '0 0',
      -        targetAttachment: 'auto auto',
      -        classPrefix: 'tether'
      -      };
      -
      -      this.options = extend(defaults, options);
      -
      -      var _options = this.options;
      -      var element = _options.element;
      -      var target = _options.target;
      -      var targetModifier = _options.targetModifier;
      -
      -      this.element = element;
      -      this.target = target;
      -      this.targetModifier = targetModifier;
      -
      -      if (this.target === 'viewport') {
      -        this.target = document.body;
      -        this.targetModifier = 'visible';
      -      } else if (this.target === 'scroll-handle') {
      -        this.target = document.body;
      -        this.targetModifier = 'scroll-handle';
      -      }
      -
      -      ['element', 'target'].forEach(function (key) {
      -        if (typeof _this2[key] === 'undefined') {
      -          throw new Error('Tether Error: Both element and target must be defined');
      -        }
      -
      -        if (typeof _this2[key].jquery !== 'undefined') {
      -          _this2[key] = _this2[key][0];
      -        } else if (typeof _this2[key] === 'string') {
      -          _this2[key] = document.querySelector(_this2[key]);
      -        }
      -      });
      -
      -      addClass(this.element, this.getClass('element'));
      -      if (!(this.options.addTargetClasses === false)) {
      -        addClass(this.target, this.getClass('target'));
      -      }
      -
      -      if (!this.options.attachment) {
      -        throw new Error('Tether Error: You must provide an attachment');
      -      }
      -
      -      this.targetAttachment = parseAttachment(this.options.targetAttachment);
      -      this.attachment = parseAttachment(this.options.attachment);
      -      this.offset = parseOffset(this.options.offset);
      -      this.targetOffset = parseOffset(this.options.targetOffset);
      -
      -      if (typeof this.scrollParents !== 'undefined') {
      -        this.disable();
      -      }
      -
      -      if (this.targetModifier === 'scroll-handle') {
      -        this.scrollParents = [this.target];
      -      } else {
      -        this.scrollParents = getScrollParents(this.target);
      -      }
      -
      -      if (!(this.options.enabled === false)) {
      -        this.enable(pos);
      -      }
      -    }
      -  }, {
      -    key: 'getTargetBounds',
      -    value: function getTargetBounds() {
      -      if (typeof this.targetModifier !== 'undefined') {
      -        if (this.targetModifier === 'visible') {
      -          if (this.target === document.body) {
      -            return { top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth };
      -          } else {
      -            var bounds = getBounds(this.target);
      -
      -            var out = {
      -              height: bounds.height,
      -              width: bounds.width,
      -              top: bounds.top,
      -              left: bounds.left
      -            };
      -
      -            out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));
      -            out.height = Math.min(out.height, bounds.height - (bounds.top + bounds.height - (pageYOffset + innerHeight)));
      -            out.height = Math.min(innerHeight, out.height);
      -            out.height -= 2;
      -
      -            out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));
      -            out.width = Math.min(out.width, bounds.width - (bounds.left + bounds.width - (pageXOffset + innerWidth)));
      -            out.width = Math.min(innerWidth, out.width);
      -            out.width -= 2;
      -
      -            if (out.top < pageYOffset) {
      -              out.top = pageYOffset;
      -            }
      -            if (out.left < pageXOffset) {
      -              out.left = pageXOffset;
      -            }
      -
      -            return out;
      -          }
      -        } else if (this.targetModifier === 'scroll-handle') {
      -          var bounds = undefined;
      -          var target = this.target;
      -          if (target === document.body) {
      -            target = document.documentElement;
      -
      -            bounds = {
      -              left: pageXOffset,
      -              top: pageYOffset,
      -              height: innerHeight,
      -              width: innerWidth
      -            };
      -          } else {
      -            bounds = getBounds(target);
      -          }
      -
      -          var style = getComputedStyle(target);
      -
      -          var hasBottomScroll = target.scrollWidth > target.clientWidth || [style.overflow, style.overflowX].indexOf('scroll') >= 0 || this.target !== document.body;
      -
      -          var scrollBottom = 0;
      -          if (hasBottomScroll) {
      -            scrollBottom = 15;
      -          }
      -
      -          var height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;
      -
      -          var out = {
      -            width: 15,
      -            height: height * 0.975 * (height / target.scrollHeight),
      -            left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15
      -          };
      -
      -          var fitAdj = 0;
      -          if (height < 408 && this.target === document.body) {
      -            fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;
      -          }
      -
      -          if (this.target !== document.body) {
      -            out.height = Math.max(out.height, 24);
      -          }
      -
      -          var scrollPercentage = this.target.scrollTop / (target.scrollHeight - height);
      -          out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);
      -
      -          if (this.target === document.body) {
      -            out.height = Math.max(out.height, 24);
      -          }
      -
      -          return out;
      -        }
      -      } else {
      -        return getBounds(this.target);
      -      }
      -    }
      -  }, {
      -    key: 'clearCache',
      -    value: function clearCache() {
      -      this._cache = {};
      -    }
      -  }, {
      -    key: 'cache',
      -    value: function cache(k, getter) {
      -      // More than one module will often need the same DOM info, so
      -      // we keep a cache which is cleared on each position call
      -      if (typeof this._cache === 'undefined') {
      -        this._cache = {};
      -      }
      -
      -      if (typeof this._cache[k] === 'undefined') {
      -        this._cache[k] = getter.call(this);
      -      }
      -
      -      return this._cache[k];
      -    }
      -  }, {
      -    key: 'enable',
      -    value: function enable() {
      -      var _this3 = this;
      -
      -      var pos = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
      -
      -      if (!(this.options.addTargetClasses === false)) {
      -        addClass(this.target, this.getClass('enabled'));
      -      }
      -      addClass(this.element, this.getClass('enabled'));
      -      this.enabled = true;
      -
      -      this.scrollParents.forEach(function (parent) {
      -        if (parent !== _this3.target.ownerDocument) {
      -          parent.addEventListener('scroll', _this3.position);
      -        }
      -      });
      -
      -      if (pos) {
      -        this.position();
      -      }
      -    }
      -  }, {
      -    key: 'disable',
      -    value: function disable() {
      -      var _this4 = this;
      -
      -      removeClass(this.target, this.getClass('enabled'));
      -      removeClass(this.element, this.getClass('enabled'));
      -      this.enabled = false;
      -
      -      if (typeof this.scrollParents !== 'undefined') {
      -        this.scrollParents.forEach(function (parent) {
      -          parent.removeEventListener('scroll', _this4.position);
      -        });
      -      }
      -    }
      -  }, {
      -    key: 'destroy',
      -    value: function destroy() {
      -      var _this5 = this;
      -
      -      this.disable();
      -
      -      tethers.forEach(function (tether, i) {
      -        if (tether === _this5) {
      -          tethers.splice(i, 1);
      -        }
      -      });
      -
      -      // Remove any elements we were using for convenience from the DOM
      -      if (tethers.length === 0) {
      -        removeUtilElements();
      -      }
      -    }
      -  }, {
      -    key: 'updateAttachClasses',
      -    value: function updateAttachClasses(elementAttach, targetAttach) {
      -      var _this6 = this;
      -
      -      elementAttach = elementAttach || this.attachment;
      -      targetAttach = targetAttach || this.targetAttachment;
      -      var sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];
      -
      -      if (typeof this._addAttachClasses !== 'undefined' && this._addAttachClasses.length) {
      -        // updateAttachClasses can be called more than once in a position call, so
      -        // we need to clean up after ourselves such that when the last defer gets
      -        // ran it doesn't add any extra classes from previous calls.
      -        this._addAttachClasses.splice(0, this._addAttachClasses.length);
      -      }
      -
      -      if (typeof this._addAttachClasses === 'undefined') {
      -        this._addAttachClasses = [];
      -      }
      -      var add = this._addAttachClasses;
      -
      -      if (elementAttach.top) {
      -        add.push(this.getClass('element-attached') + '-' + elementAttach.top);
      -      }
      -      if (elementAttach.left) {
      -        add.push(this.getClass('element-attached') + '-' + elementAttach.left);
      -      }
      -      if (targetAttach.top) {
      -        add.push(this.getClass('target-attached') + '-' + targetAttach.top);
      -      }
      -      if (targetAttach.left) {
      -        add.push(this.getClass('target-attached') + '-' + targetAttach.left);
      -      }
      -
      -      var all = [];
      -      sides.forEach(function (side) {
      -        all.push(_this6.getClass('element-attached') + '-' + side);
      -        all.push(_this6.getClass('target-attached') + '-' + side);
      -      });
      -
      -      defer(function () {
      -        if (!(typeof _this6._addAttachClasses !== 'undefined')) {
      -          return;
      -        }
      -
      -        updateClasses(_this6.element, _this6._addAttachClasses, all);
      -        if (!(_this6.options.addTargetClasses === false)) {
      -          updateClasses(_this6.target, _this6._addAttachClasses, all);
      -        }
      -
      -        delete _this6._addAttachClasses;
      -      });
      -    }
      -  }, {
      -    key: 'position',
      -    value: function position() {
      -      var _this7 = this;
      -
      -      var flushChanges = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];
      -
      -      // flushChanges commits the changes immediately, leave true unless you are positioning multiple
      -      // tethers (in which case call Tether.Utils.flush yourself when you're done)
      -
      -      if (!this.enabled) {
      -        return;
      -      }
      -
      -      this.clearCache();
      -
      -      // Turn 'auto' attachments into the appropriate corner or edge
      -      var targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);
      -
      -      this.updateAttachClasses(this.attachment, targetAttachment);
      -
      -      var elementPos = this.cache('element-bounds', function () {
      -        return getBounds(_this7.element);
      -      });
      -
      -      var width = elementPos.width;
      -      var height = elementPos.height;
      -
      -      if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {
      -        var _lastSize = this.lastSize;
      -
      -        // We cache the height and width to make it possible to position elements that are
      -        // getting hidden.
      -        width = _lastSize.width;
      -        height = _lastSize.height;
      -      } else {
      -        this.lastSize = { width: width, height: height };
      -      }
      -
      -      var targetPos = this.cache('target-bounds', function () {
      -        return _this7.getTargetBounds();
      -      });
      -      var targetSize = targetPos;
      -
      -      // Get an actual px offset from the attachment
      -      var offset = offsetToPx(attachmentToOffset(this.attachment), { width: width, height: height });
      -      var targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);
      -
      -      var manualOffset = offsetToPx(this.offset, { width: width, height: height });
      -      var manualTargetOffset = offsetToPx(this.targetOffset, targetSize);
      -
      -      // Add the manually provided offset
      -      offset = addOffset(offset, manualOffset);
      -      targetOffset = addOffset(targetOffset, manualTargetOffset);
      -
      -      // It's now our goal to make (element position + offset) == (target position + target offset)
      -      var left = targetPos.left + targetOffset.left - offset.left;
      -      var top = targetPos.top + targetOffset.top - offset.top;
      -
      -      for (var i = 0; i < TetherBase.modules.length; ++i) {
      -        var _module2 = TetherBase.modules[i];
      -        var ret = _module2.position.call(this, {
      -          left: left,
      -          top: top,
      -          targetAttachment: targetAttachment,
      -          targetPos: targetPos,
      -          elementPos: elementPos,
      -          offset: offset,
      -          targetOffset: targetOffset,
      -          manualOffset: manualOffset,
      -          manualTargetOffset: manualTargetOffset,
      -          scrollbarSize: scrollbarSize,
      -          attachment: this.attachment
      -        });
      -
      -        if (ret === false) {
      -          return false;
      -        } else if (typeof ret === 'undefined' || typeof ret !== 'object') {
      -          continue;
      -        } else {
      -          top = ret.top;
      -          left = ret.left;
      -        }
      -      }
      -
      -      // We describe the position three different ways to give the optimizer
      -      // a chance to decide the best possible way to position the element
      -      // with the fewest repaints.
      -      var next = {
      -        // It's position relative to the page (absolute positioning when
      -        // the element is a child of the body)
      -        page: {
      -          top: top,
      -          left: left
      -        },
      -
      -        // It's position relative to the viewport (fixed positioning)
      -        viewport: {
      -          top: top - pageYOffset,
      -          bottom: pageYOffset - top - height + innerHeight,
      -          left: left - pageXOffset,
      -          right: pageXOffset - left - width + innerWidth
      -        }
      -      };
      -
      -      var doc = this.target.ownerDocument;
      -      var win = doc.defaultView;
      -
      -      var scrollbarSize = undefined;
      -      if (win.innerHeight > doc.documentElement.clientHeight) {
      -        scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);
      -        next.viewport.bottom -= scrollbarSize.height;
      -      }
      -
      -      if (win.innerWidth > doc.documentElement.clientWidth) {
      -        scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);
      -        next.viewport.right -= scrollbarSize.width;
      -      }
      -
      -      if (['', 'static'].indexOf(doc.body.style.position) === -1 || ['', 'static'].indexOf(doc.body.parentElement.style.position) === -1) {
      -        // Absolute positioning in the body will be relative to the page, not the 'initial containing block'
      -        next.page.bottom = doc.body.scrollHeight - top - height;
      -        next.page.right = doc.body.scrollWidth - left - width;
      -      }
      -
      -      if (typeof this.options.optimizations !== 'undefined' && this.options.optimizations.moveElement !== false && !(typeof this.targetModifier !== 'undefined')) {
      -        (function () {
      -          var offsetParent = _this7.cache('target-offsetparent', function () {
      -            return getOffsetParent(_this7.target);
      -          });
      -          var offsetPosition = _this7.cache('target-offsetparent-bounds', function () {
      -            return getBounds(offsetParent);
      -          });
      -          var offsetParentStyle = getComputedStyle(offsetParent);
      -          var offsetParentSize = offsetPosition;
      -
      -          var offsetBorder = {};
      -          ['Top', 'Left', 'Bottom', 'Right'].forEach(function (side) {
      -            offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle['border' + side + 'Width']);
      -          });
      -
      -          offsetPosition.right = doc.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;
      -          offsetPosition.bottom = doc.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;
      -
      -          if (next.page.top >= offsetPosition.top + offsetBorder.top && next.page.bottom >= offsetPosition.bottom) {
      -            if (next.page.left >= offsetPosition.left + offsetBorder.left && next.page.right >= offsetPosition.right) {
      -              // We're within the visible part of the target's scroll parent
      -              var scrollTop = offsetParent.scrollTop;
      -              var scrollLeft = offsetParent.scrollLeft;
      -
      -              // It's position relative to the target's offset parent (absolute positioning when
      -              // the element is moved to be a child of the target's offset parent).
      -              next.offset = {
      -                top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,
      -                left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left
      -              };
      -            }
      -          }
      -        })();
      -      }
      -
      -      // We could also travel up the DOM and try each containing context, rather than only
      -      // looking at the body, but we're gonna get diminishing returns.
      -
      -      this.move(next);
      -
      -      this.history.unshift(next);
      -
      -      if (this.history.length > 3) {
      -        this.history.pop();
      -      }
      -
      -      if (flushChanges) {
      -        flush();
      -      }
      -
      -      return true;
      -    }
      -
      -    // THE ISSUE
      -  }, {
      -    key: 'move',
      -    value: function move(pos) {
      -      var _this8 = this;
      -
      -      if (!(typeof this.element.parentNode !== 'undefined')) {
      -        return;
      -      }
      -
      -      var same = {};
      -
      -      for (var type in pos) {
      -        same[type] = {};
      -
      -        for (var key in pos[type]) {
      -          var found = false;
      -
      -          for (var i = 0; i < this.history.length; ++i) {
      -            var point = this.history[i];
      -            if (typeof point[type] !== 'undefined' && !within(point[type][key], pos[type][key])) {
      -              found = true;
      -              break;
      -            }
      -          }
      -
      -          if (!found) {
      -            same[type][key] = true;
      -          }
      -        }
      -      }
      -
      -      var css = { top: '', left: '', right: '', bottom: '' };
      -
      -      var transcribe = function transcribe(_same, _pos) {
      -        var hasOptimizations = typeof _this8.options.optimizations !== 'undefined';
      -        var gpu = hasOptimizations ? _this8.options.optimizations.gpu : null;
      -        if (gpu !== false) {
      -          var yPos = undefined,
      -              xPos = undefined;
      -          if (_same.top) {
      -            css.top = 0;
      -            yPos = _pos.top;
      -          } else {
      -            css.bottom = 0;
      -            yPos = -_pos.bottom;
      -          }
      -
      -          if (_same.left) {
      -            css.left = 0;
      -            xPos = _pos.left;
      -          } else {
      -            css.right = 0;
      -            xPos = -_pos.right;
      -          }
      -
      -          if (window.matchMedia) {
      -            // HubSpot/tether#207
      -            var retina = window.matchMedia('only screen and (min-resolution: 1.3dppx)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3)').matches;
      -            if (!retina) {
      -              xPos = Math.round(xPos);
      -              yPos = Math.round(yPos);
      -            }
      -          }
      -
      -          css[transformKey] = 'translateX(' + xPos + 'px) translateY(' + yPos + 'px)';
      -
      -          if (transformKey !== 'msTransform') {
      -            // The Z transform will keep this in the GPU (faster, and prevents artifacts),
      -            // but IE9 doesn't support 3d transforms and will choke.
      -            css[transformKey] += " translateZ(0)";
      -          }
      -        } else {
      -          if (_same.top) {
      -            css.top = _pos.top + 'px';
      -          } else {
      -            css.bottom = _pos.bottom + 'px';
      -          }
      -
      -          if (_same.left) {
      -            css.left = _pos.left + 'px';
      -          } else {
      -            css.right = _pos.right + 'px';
      -          }
      -        }
      -      };
      -
      -      var moved = false;
      -      if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {
      -        css.position = 'absolute';
      -        transcribe(same.page, pos.page);
      -      } else if ((same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {
      -        css.position = 'fixed';
      -        transcribe(same.viewport, pos.viewport);
      -      } else if (typeof same.offset !== 'undefined' && same.offset.top && same.offset.left) {
      -        (function () {
      -          css.position = 'absolute';
      -          var offsetParent = _this8.cache('target-offsetparent', function () {
      -            return getOffsetParent(_this8.target);
      -          });
      -
      -          if (getOffsetParent(_this8.element) !== offsetParent) {
      -            defer(function () {
      -              _this8.element.parentNode.removeChild(_this8.element);
      -              offsetParent.appendChild(_this8.element);
      -            });
      -          }
      -
      -          transcribe(same.offset, pos.offset);
      -          moved = true;
      -        })();
      -      } else {
      -        css.position = 'absolute';
      -        transcribe({ top: true, left: true }, pos.page);
      -      }
      -
      -      if (!moved) {
      -        if (this.options.bodyElement) {
      -          this.options.bodyElement.appendChild(this.element);
      -        } else {
      -          var offsetParentIsBody = true;
      -          var currentNode = this.element.parentNode;
      -          while (currentNode && currentNode.nodeType === 1 && currentNode.tagName !== 'BODY') {
      -            if (getComputedStyle(currentNode).position !== 'static') {
      -              offsetParentIsBody = false;
      -              break;
      -            }
      -
      -            currentNode = currentNode.parentNode;
      -          }
      -
      -          if (!offsetParentIsBody) {
      -            this.element.parentNode.removeChild(this.element);
      -            this.element.ownerDocument.body.appendChild(this.element);
      -          }
      -        }
      -      }
      -
      -      // Any css change will trigger a repaint, so let's avoid one if nothing changed
      -      var writeCSS = {};
      -      var write = false;
      -      for (var key in css) {
      -        var val = css[key];
      -        var elVal = this.element.style[key];
      -
      -        if (elVal !== val) {
      -          write = true;
      -          writeCSS[key] = val;
      -        }
      -      }
      -
      -      if (write) {
      -        defer(function () {
      -          extend(_this8.element.style, writeCSS);
      -          _this8.trigger('repositioned');
      -        });
      -      }
      -    }
      -  }]);
      -
      -  return TetherClass;
      -})(Evented);
      -
      -TetherClass.modules = [];
      -
      -TetherBase.position = position;
      -
      -var Tether = extend(TetherClass, TetherBase);
      -/* globals TetherBase */
      -
      -'use strict';
      -
      -var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
      -
      -var _TetherBase$Utils = TetherBase.Utils;
      -var getBounds = _TetherBase$Utils.getBounds;
      -var extend = _TetherBase$Utils.extend;
      -var updateClasses = _TetherBase$Utils.updateClasses;
      -var defer = _TetherBase$Utils.defer;
      -
      -var BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];
      -
      -function getBoundingRect(tether, to) {
      -  if (to === 'scrollParent') {
      -    to = tether.scrollParents[0];
      -  } else if (to === 'window') {
      -    to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];
      -  }
      -
      -  if (to === document) {
      -    to = to.documentElement;
      -  }
      -
      -  if (typeof to.nodeType !== 'undefined') {
      -    (function () {
      -      var node = to;
      -      var size = getBounds(to);
      -      var pos = size;
      -      var style = getComputedStyle(to);
      -
      -      to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top];
      -
      -      // Account any parent Frames scroll offset
      -      if (node.ownerDocument !== document) {
      -        var win = node.ownerDocument.defaultView;
      -        to[0] += win.pageXOffset;
      -        to[1] += win.pageYOffset;
      -        to[2] += win.pageXOffset;
      -        to[3] += win.pageYOffset;
      -      }
      -
      -      BOUNDS_FORMAT.forEach(function (side, i) {
      -        side = side[0].toUpperCase() + side.substr(1);
      -        if (side === 'Top' || side === 'Left') {
      -          to[i] += parseFloat(style['border' + side + 'Width']);
      -        } else {
      -          to[i] -= parseFloat(style['border' + side + 'Width']);
      -        }
      -      });
      -    })();
      -  }
      -
      -  return to;
      -}
      -
      -TetherBase.modules.push({
      -  position: function position(_ref) {
      -    var _this = this;
      -
      -    var top = _ref.top;
      -    var left = _ref.left;
      -    var targetAttachment = _ref.targetAttachment;
      -
      -    if (!this.options.constraints) {
      -      return true;
      -    }
      -
      -    var _cache = this.cache('element-bounds', function () {
      -      return getBounds(_this.element);
      -    });
      -
      -    var height = _cache.height;
      -    var width = _cache.width;
      -
      -    if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {
      -      var _lastSize = this.lastSize;
      -
      -      // Handle the item getting hidden as a result of our positioning without glitching
      -      // the classes in and out
      -      width = _lastSize.width;
      -      height = _lastSize.height;
      -    }
      -
      -    var targetSize = this.cache('target-bounds', function () {
      -      return _this.getTargetBounds();
      -    });
      -
      -    var targetHeight = targetSize.height;
      -    var targetWidth = targetSize.width;
      -
      -    var allClasses = [this.getClass('pinned'), this.getClass('out-of-bounds')];
      -
      -    this.options.constraints.forEach(function (constraint) {
      -      var outOfBoundsClass = constraint.outOfBoundsClass;
      -      var pinnedClass = constraint.pinnedClass;
      -
      -      if (outOfBoundsClass) {
      -        allClasses.push(outOfBoundsClass);
      -      }
      -      if (pinnedClass) {
      -        allClasses.push(pinnedClass);
      -      }
      -    });
      -
      -    allClasses.forEach(function (cls) {
      -      ['left', 'top', 'right', 'bottom'].forEach(function (side) {
      -        allClasses.push(cls + '-' + side);
      -      });
      -    });
      -
      -    var addClasses = [];
      -
      -    var tAttachment = extend({}, targetAttachment);
      -    var eAttachment = extend({}, this.attachment);
      -
      -    this.options.constraints.forEach(function (constraint) {
      -      var to = constraint.to;
      -      var attachment = constraint.attachment;
      -      var pin = constraint.pin;
      -
      -      if (typeof attachment === 'undefined') {
      -        attachment = '';
      -      }
      -
      -      var changeAttachX = undefined,
      -          changeAttachY = undefined;
      -      if (attachment.indexOf(' ') >= 0) {
      -        var _attachment$split = attachment.split(' ');
      -
      -        var _attachment$split2 = _slicedToArray(_attachment$split, 2);
      -
      -        changeAttachY = _attachment$split2[0];
      -        changeAttachX = _attachment$split2[1];
      -      } else {
      -        changeAttachX = changeAttachY = attachment;
      -      }
      -
      -      var bounds = getBoundingRect(_this, to);
      -
      -      if (changeAttachY === 'target' || changeAttachY === 'both') {
      -        if (top < bounds[1] && tAttachment.top === 'top') {
      -          top += targetHeight;
      -          tAttachment.top = 'bottom';
      -        }
      -
      -        if (top + height > bounds[3] && tAttachment.top === 'bottom') {
      -          top -= targetHeight;
      -          tAttachment.top = 'top';
      -        }
      -      }
      -
      -      if (changeAttachY === 'together') {
      -        if (tAttachment.top === 'top') {
      -          if (eAttachment.top === 'bottom' && top < bounds[1]) {
      -            top += targetHeight;
      -            tAttachment.top = 'bottom';
      -
      -            top += height;
      -            eAttachment.top = 'top';
      -          } else if (eAttachment.top === 'top' && top + height > bounds[3] && top - (height - targetHeight) >= bounds[1]) {
      -            top -= height - targetHeight;
      -            tAttachment.top = 'bottom';
      -
      -            eAttachment.top = 'bottom';
      -          }
      -        }
      -
      -        if (tAttachment.top === 'bottom') {
      -          if (eAttachment.top === 'top' && top + height > bounds[3]) {
      -            top -= targetHeight;
      -            tAttachment.top = 'top';
      -
      -            top -= height;
      -            eAttachment.top = 'bottom';
      -          } else if (eAttachment.top === 'bottom' && top < bounds[1] && top + (height * 2 - targetHeight) <= bounds[3]) {
      -            top += height - targetHeight;
      -            tAttachment.top = 'top';
      -
      -            eAttachment.top = 'top';
      -          }
      -        }
      -
      -        if (tAttachment.top === 'middle') {
      -          if (top + height > bounds[3] && eAttachment.top === 'top') {
      -            top -= height;
      -            eAttachment.top = 'bottom';
      -          } else if (top < bounds[1] && eAttachment.top === 'bottom') {
      -            top += height;
      -            eAttachment.top = 'top';
      -          }
      -        }
      -      }
      -
      -      if (changeAttachX === 'target' || changeAttachX === 'both') {
      -        if (left < bounds[0] && tAttachment.left === 'left') {
      -          left += targetWidth;
      -          tAttachment.left = 'right';
      -        }
      -
      -        if (left + width > bounds[2] && tAttachment.left === 'right') {
      -          left -= targetWidth;
      -          tAttachment.left = 'left';
      -        }
      -      }
      -
      -      if (changeAttachX === 'together') {
      -        if (left < bounds[0] && tAttachment.left === 'left') {
      -          if (eAttachment.left === 'right') {
      -            left += targetWidth;
      -            tAttachment.left = 'right';
      -
      -            left += width;
      -            eAttachment.left = 'left';
      -          } else if (eAttachment.left === 'left') {
      -            left += targetWidth;
      -            tAttachment.left = 'right';
      -
      -            left -= width;
      -            eAttachment.left = 'right';
      -          }
      -        } else if (left + width > bounds[2] && tAttachment.left === 'right') {
      -          if (eAttachment.left === 'left') {
      -            left -= targetWidth;
      -            tAttachment.left = 'left';
      -
      -            left -= width;
      -            eAttachment.left = 'right';
      -          } else if (eAttachment.left === 'right') {
      -            left -= targetWidth;
      -            tAttachment.left = 'left';
      -
      -            left += width;
      -            eAttachment.left = 'left';
      -          }
      -        } else if (tAttachment.left === 'center') {
      -          if (left + width > bounds[2] && eAttachment.left === 'left') {
      -            left -= width;
      -            eAttachment.left = 'right';
      -          } else if (left < bounds[0] && eAttachment.left === 'right') {
      -            left += width;
      -            eAttachment.left = 'left';
      -          }
      -        }
      -      }
      -
      -      if (changeAttachY === 'element' || changeAttachY === 'both') {
      -        if (top < bounds[1] && eAttachment.top === 'bottom') {
      -          top += height;
      -          eAttachment.top = 'top';
      -        }
      -
      -        if (top + height > bounds[3] && eAttachment.top === 'top') {
      -          top -= height;
      -          eAttachment.top = 'bottom';
      -        }
      -      }
      -
      -      if (changeAttachX === 'element' || changeAttachX === 'both') {
      -        if (left < bounds[0]) {
      -          if (eAttachment.left === 'right') {
      -            left += width;
      -            eAttachment.left = 'left';
      -          } else if (eAttachment.left === 'center') {
      -            left += width / 2;
      -            eAttachment.left = 'left';
      -          }
      -        }
      -
      -        if (left + width > bounds[2]) {
      -          if (eAttachment.left === 'left') {
      -            left -= width;
      -            eAttachment.left = 'right';
      -          } else if (eAttachment.left === 'center') {
      -            left -= width / 2;
      -            eAttachment.left = 'right';
      -          }
      -        }
      -      }
      -
      -      if (typeof pin === 'string') {
      -        pin = pin.split(',').map(function (p) {
      -          return p.trim();
      -        });
      -      } else if (pin === true) {
      -        pin = ['top', 'left', 'right', 'bottom'];
      -      }
      -
      -      pin = pin || [];
      -
      -      var pinned = [];
      -      var oob = [];
      -
      -      if (top < bounds[1]) {
      -        if (pin.indexOf('top') >= 0) {
      -          top = bounds[1];
      -          pinned.push('top');
      -        } else {
      -          oob.push('top');
      -        }
      -      }
      -
      -      if (top + height > bounds[3]) {
      -        if (pin.indexOf('bottom') >= 0) {
      -          top = bounds[3] - height;
      -          pinned.push('bottom');
      -        } else {
      -          oob.push('bottom');
      -        }
      -      }
      -
      -      if (left < bounds[0]) {
      -        if (pin.indexOf('left') >= 0) {
      -          left = bounds[0];
      -          pinned.push('left');
      -        } else {
      -          oob.push('left');
      -        }
      -      }
      -
      -      if (left + width > bounds[2]) {
      -        if (pin.indexOf('right') >= 0) {
      -          left = bounds[2] - width;
      -          pinned.push('right');
      -        } else {
      -          oob.push('right');
      -        }
      -      }
      -
      -      if (pinned.length) {
      -        (function () {
      -          var pinnedClass = undefined;
      -          if (typeof _this.options.pinnedClass !== 'undefined') {
      -            pinnedClass = _this.options.pinnedClass;
      -          } else {
      -            pinnedClass = _this.getClass('pinned');
      -          }
      -
      -          addClasses.push(pinnedClass);
      -          pinned.forEach(function (side) {
      -            addClasses.push(pinnedClass + '-' + side);
      -          });
      -        })();
      -      }
      -
      -      if (oob.length) {
      -        (function () {
      -          var oobClass = undefined;
      -          if (typeof _this.options.outOfBoundsClass !== 'undefined') {
      -            oobClass = _this.options.outOfBoundsClass;
      -          } else {
      -            oobClass = _this.getClass('out-of-bounds');
      -          }
      -
      -          addClasses.push(oobClass);
      -          oob.forEach(function (side) {
      -            addClasses.push(oobClass + '-' + side);
      -          });
      -        })();
      -      }
      -
      -      if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {
      -        eAttachment.left = tAttachment.left = false;
      -      }
      -      if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {
      -        eAttachment.top = tAttachment.top = false;
      -      }
      -
      -      if (tAttachment.top !== targetAttachment.top || tAttachment.left !== targetAttachment.left || eAttachment.top !== _this.attachment.top || eAttachment.left !== _this.attachment.left) {
      -        _this.updateAttachClasses(eAttachment, tAttachment);
      -        _this.trigger('update', {
      -          attachment: eAttachment,
      -          targetAttachment: tAttachment
      -        });
      -      }
      -    });
      -
      -    defer(function () {
      -      if (!(_this.options.addTargetClasses === false)) {
      -        updateClasses(_this.target, addClasses, allClasses);
      -      }
      -      updateClasses(_this.element, addClasses, allClasses);
      -    });
      -
      -    return { top: top, left: left };
      -  }
      -});
      -/* globals TetherBase */
      -
      -'use strict';
      -
      -var _TetherBase$Utils = TetherBase.Utils;
      -var getBounds = _TetherBase$Utils.getBounds;
      -var updateClasses = _TetherBase$Utils.updateClasses;
      -var defer = _TetherBase$Utils.defer;
      -
      -TetherBase.modules.push({
      -  position: function position(_ref) {
      -    var _this = this;
      -
      -    var top = _ref.top;
      -    var left = _ref.left;
      -
      -    var _cache = this.cache('element-bounds', function () {
      -      return getBounds(_this.element);
      -    });
      -
      -    var height = _cache.height;
      -    var width = _cache.width;
      -
      -    var targetPos = this.getTargetBounds();
      -
      -    var bottom = top + height;
      -    var right = left + width;
      -
      -    var abutted = [];
      -    if (top <= targetPos.bottom && bottom >= targetPos.top) {
      -      ['left', 'right'].forEach(function (side) {
      -        var targetPosSide = targetPos[side];
      -        if (targetPosSide === left || targetPosSide === right) {
      -          abutted.push(side);
      -        }
      -      });
      -    }
      -
      -    if (left <= targetPos.right && right >= targetPos.left) {
      -      ['top', 'bottom'].forEach(function (side) {
      -        var targetPosSide = targetPos[side];
      -        if (targetPosSide === top || targetPosSide === bottom) {
      -          abutted.push(side);
      -        }
      -      });
      -    }
      -
      -    var allClasses = [];
      -    var addClasses = [];
      -
      -    var sides = ['left', 'top', 'right', 'bottom'];
      -    allClasses.push(this.getClass('abutted'));
      -    sides.forEach(function (side) {
      -      allClasses.push(_this.getClass('abutted') + '-' + side);
      -    });
      -
      -    if (abutted.length) {
      -      addClasses.push(this.getClass('abutted'));
      -    }
      -
      -    abutted.forEach(function (side) {
      -      addClasses.push(_this.getClass('abutted') + '-' + side);
      -    });
      -
      -    defer(function () {
      -      if (!(_this.options.addTargetClasses === false)) {
      -        updateClasses(_this.target, addClasses, allClasses);
      -      }
      -      updateClasses(_this.element, addClasses, allClasses);
      -    });
      -
      -    return true;
      -  }
      -});
      -/* globals TetherBase */
      -
      -'use strict';
      -
      -var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
      -
      -TetherBase.modules.push({
      -  position: function position(_ref) {
      -    var top = _ref.top;
      -    var left = _ref.left;
      -
      -    if (!this.options.shift) {
      -      return;
      -    }
      -
      -    var shift = this.options.shift;
      -    if (typeof this.options.shift === 'function') {
      -      shift = this.options.shift.call(this, { top: top, left: left });
      -    }
      -
      -    var shiftTop = undefined,
      -        shiftLeft = undefined;
      -    if (typeof shift === 'string') {
      -      shift = shift.split(' ');
      -      shift[1] = shift[1] || shift[0];
      -
      -      var _shift = shift;
      -
      -      var _shift2 = _slicedToArray(_shift, 2);
      -
      -      shiftTop = _shift2[0];
      -      shiftLeft = _shift2[1];
      -
      -      shiftTop = parseFloat(shiftTop, 10);
      -      shiftLeft = parseFloat(shiftLeft, 10);
      -    } else {
      -      shiftTop = shift.top;
      -      shiftLeft = shift.left;
      -    }
      -
      -    top += shiftTop;
      -    left += shiftLeft;
      -
      -    return { top: top, left: left };
      -  }
      -});
      -return Tether;
      -
      -}));
      diff --git a/bower_components/tether/dist/js/tether.min.js b/bower_components/tether/dist/js/tether.min.js
      deleted file mode 100644
      index d16b9b14eb..0000000000
      --- a/bower_components/tether/dist/js/tether.min.js
      +++ /dev/null
      @@ -1 +0,0 @@
      -!function(t,e){"function"==typeof define&&define.amd?define(e):"object"==typeof exports?module.exports=e(require,exports,module):t.Tether=e()}(this,function(t,e,o){"use strict";function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){var e=t.getBoundingClientRect(),o={};for(var i in e)o[i]=e[i];if(t.ownerDocument!==document){var r=t.ownerDocument.defaultView.frameElement;if(r){var s=n(r);o.top+=s.top,o.bottom+=s.top,o.left+=s.left,o.right+=s.left}}return o}function r(t){var e=getComputedStyle(t)||{},o=e.position,i=[];if("fixed"===o)return[t];for(var n=t;(n=n.parentNode)&&n&&1===n.nodeType;){var r=void 0;try{r=getComputedStyle(n)}catch(s){}if("undefined"==typeof r||null===r)return i.push(n),i;var a=r,f=a.overflow,l=a.overflowX,h=a.overflowY;/(auto|scroll)/.test(f+h+l)&&("absolute"!==o||["relative","absolute","fixed"].indexOf(r.position)>=0)&&i.push(n)}return i.push(t.ownerDocument.body),t.ownerDocument!==document&&i.push(t.ownerDocument.defaultView),i}function s(){A&&document.body.removeChild(A),A=null}function a(t){var e=void 0;t===document?(e=document,t=document.documentElement):e=t.ownerDocument;var o=e.documentElement,i=n(t),r=P();return i.top-=r.top,i.left-=r.left,"undefined"==typeof i.width&&(i.width=document.body.scrollWidth-i.left-i.right),"undefined"==typeof i.height&&(i.height=document.body.scrollHeight-i.top-i.bottom),i.top=i.top-o.clientTop,i.left=i.left-o.clientLeft,i.right=e.body.clientWidth-i.width-i.left,i.bottom=e.body.clientHeight-i.height-i.top,i}function f(t){return t.offsetParent||document.documentElement}function l(){if(M)return M;var t=document.createElement("div");t.style.width="100%",t.style.height="200px";var e=document.createElement("div");h(e.style,{position:"absolute",top:0,left:0,pointerEvents:"none",visibility:"hidden",width:"200px",height:"150px",overflow:"hidden"}),e.appendChild(t),document.body.appendChild(e);var o=t.offsetWidth;e.style.overflow="scroll";var i=t.offsetWidth;o===i&&(i=e.clientWidth),document.body.removeChild(e);var n=o-i;return M={width:n,height:n}}function h(){var t=arguments.length<=0||void 0===arguments[0]?{}:arguments[0],e=[];return Array.prototype.push.apply(e,arguments),e.slice(1).forEach(function(e){if(e)for(var o in e)({}).hasOwnProperty.call(e,o)&&(t[o]=e[o])}),t}function d(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.remove(e)});else{var o=new RegExp("(^| )"+e.split(" ").join("|")+"( |$)","gi"),i=c(t).replace(o," ");g(t,i)}}function p(t,e){if("undefined"!=typeof t.classList)e.split(" ").forEach(function(e){e.trim()&&t.classList.add(e)});else{d(t,e);var o=c(t)+(" "+e);g(t,o)}}function u(t,e){if("undefined"!=typeof t.classList)return t.classList.contains(e);var o=c(t);return new RegExp("(^| )"+e+"( |$)","gi").test(o)}function c(t){return t.className instanceof t.ownerDocument.defaultView.SVGAnimatedString?t.className.baseVal:t.className}function g(t,e){t.setAttribute("class",e)}function m(t,e,o){o.forEach(function(o){e.indexOf(o)===-1&&u(t,o)&&d(t,o)}),e.forEach(function(e){u(t,e)||p(t,e)})}function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function v(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}function y(t,e){var o=arguments.length<=2||void 0===arguments[2]?1:arguments[2];return t+o>=e&&e>=t-o}function b(){return"undefined"!=typeof performance&&"undefined"!=typeof performance.now?performance.now():+new Date}function w(){for(var t={top:0,left:0},e=arguments.length,o=Array(e),i=0;i<e;i++)o[i]=arguments[i];return o.forEach(function(e){var o=e.top,i=e.left;"string"==typeof o&&(o=parseFloat(o,10)),"string"==typeof i&&(i=parseFloat(i,10)),t.top+=o,t.left+=i}),t}function C(t,e){return"string"==typeof t.left&&t.left.indexOf("%")!==-1&&(t.left=parseFloat(t.left,10)/100*e.width),"string"==typeof t.top&&t.top.indexOf("%")!==-1&&(t.top=parseFloat(t.top,10)/100*e.height),t}function O(t,e){return"scrollParent"===e?e=t.scrollParents[0]:"window"===e&&(e=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),e===document&&(e=e.documentElement),"undefined"!=typeof e.nodeType&&!function(){var t=e,o=a(e),i=o,n=getComputedStyle(e);if(e=[i.left,i.top,o.width+i.left,o.height+i.top],t.ownerDocument!==document){var r=t.ownerDocument.defaultView;e[0]+=r.pageXOffset,e[1]+=r.pageYOffset,e[2]+=r.pageXOffset,e[3]+=r.pageYOffset}G.forEach(function(t,o){t=t[0].toUpperCase()+t.substr(1),"Top"===t||"Left"===t?e[o]+=parseFloat(n["border"+t+"Width"]):e[o]-=parseFloat(n["border"+t+"Width"])})}(),e}var E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),x=void 0;"undefined"==typeof x&&(x={modules:[]});var A=null,T=function(){var t=0;return function(){return++t}}(),S={},P=function(){var t=A;t&&document.body.contains(t)||(t=document.createElement("div"),t.setAttribute("data-tether-id",T()),h(t.style,{top:0,left:0,position:"absolute"}),document.body.appendChild(t),A=t);var e=t.getAttribute("data-tether-id");return"undefined"==typeof S[e]&&(S[e]=n(t),k(function(){delete S[e]})),S[e]},M=null,W=[],k=function(t){W.push(t)},_=function(){for(var t=void 0;t=W.pop();)t()},B=function(){function t(){i(this,t)}return E(t,[{key:"on",value:function(t,e,o){var i=!(arguments.length<=3||void 0===arguments[3])&&arguments[3];"undefined"==typeof this.bindings&&(this.bindings={}),"undefined"==typeof this.bindings[t]&&(this.bindings[t]=[]),this.bindings[t].push({handler:e,ctx:o,once:i})}},{key:"once",value:function(t,e,o){this.on(t,e,o,!0)}},{key:"off",value:function(t,e){if("undefined"!=typeof this.bindings&&"undefined"!=typeof this.bindings[t])if("undefined"==typeof e)delete this.bindings[t];else for(var o=0;o<this.bindings[t].length;)this.bindings[t][o].handler===e?this.bindings[t].splice(o,1):++o}},{key:"trigger",value:function(t){if("undefined"!=typeof this.bindings&&this.bindings[t]){for(var e=0,o=arguments.length,i=Array(o>1?o-1:0),n=1;n<o;n++)i[n-1]=arguments[n];for(;e<this.bindings[t].length;){var r=this.bindings[t][e],s=r.handler,a=r.ctx,f=r.once,l=a;"undefined"==typeof l&&(l=this),s.apply(l,i),f?this.bindings[t].splice(e,1):++e}}}}]),t}();x.Utils={getActualBoundingClientRect:n,getScrollParents:r,getBounds:a,getOffsetParent:f,extend:h,addClass:p,removeClass:d,hasClass:u,updateClasses:m,defer:k,flush:_,uniqueId:T,Evented:B,getScrollBarSize:l,removeUtilElements:s};var z=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),E=function(){function t(t,e){for(var o=0;o<e.length;o++){var i=e[o];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}return function(e,o,i){return o&&t(e.prototype,o),i&&t(e,i),e}}(),j=function(t,e,o){for(var i=!0;i;){var n=t,r=e,s=o;i=!1,null===n&&(n=Function.prototype);var a=Object.getOwnPropertyDescriptor(n,r);if(void 0!==a){if("value"in a)return a.value;var f=a.get;if(void 0===f)return;return f.call(s)}var l=Object.getPrototypeOf(n);if(null===l)return;t=l,e=r,o=s,i=!0,a=l=void 0}};if("undefined"==typeof x)throw new Error("You must include the utils.js file before tether.js");var Y=x.Utils,r=Y.getScrollParents,a=Y.getBounds,f=Y.getOffsetParent,h=Y.extend,p=Y.addClass,d=Y.removeClass,m=Y.updateClasses,k=Y.defer,_=Y.flush,l=Y.getScrollBarSize,s=Y.removeUtilElements,L=function(){if("undefined"==typeof document)return"";for(var t=document.createElement("div"),e=["transform","WebkitTransform","OTransform","MozTransform","msTransform"],o=0;o<e.length;++o){var i=e[o];if(void 0!==t.style[i])return i}}(),D=[],X=function(){D.forEach(function(t){t.position(!1)}),_()};!function(){var t=null,e=null,o=null,i=function n(){return"undefined"!=typeof e&&e>16?(e=Math.min(e-16,250),void(o=setTimeout(n,250))):void("undefined"!=typeof t&&b()-t<10||(null!=o&&(clearTimeout(o),o=null),t=b(),X(),e=b()-t))};"undefined"!=typeof window&&"undefined"!=typeof window.addEventListener&&["resize","scroll","touchmove"].forEach(function(t){window.addEventListener(t,i)})}();var F={center:"center",left:"right",right:"left"},H={middle:"middle",top:"bottom",bottom:"top"},N={top:0,left:0,middle:"50%",center:"50%",bottom:"100%",right:"100%"},U=function(t,e){var o=t.left,i=t.top;return"auto"===o&&(o=F[e.left]),"auto"===i&&(i=H[e.top]),{left:o,top:i}},V=function(t){var e=t.left,o=t.top;return"undefined"!=typeof N[t.left]&&(e=N[t.left]),"undefined"!=typeof N[t.top]&&(o=N[t.top]),{left:e,top:o}},R=function(t){var e=t.split(" "),o=z(e,2),i=o[0],n=o[1];return{top:i,left:n}},q=R,I=function(t){function e(t){var o=this;i(this,e),j(Object.getPrototypeOf(e.prototype),"constructor",this).call(this),this.position=this.position.bind(this),D.push(this),this.history=[],this.setOptions(t,!1),x.modules.forEach(function(t){"undefined"!=typeof t.initialize&&t.initialize.call(o)}),this.position()}return v(e,t),E(e,[{key:"getClass",value:function(){var t=arguments.length<=0||void 0===arguments[0]?"":arguments[0],e=this.options.classes;return"undefined"!=typeof e&&e[t]?this.options.classes[t]:this.options.classPrefix?this.options.classPrefix+"-"+t:t}},{key:"setOptions",value:function(t){var e=this,o=arguments.length<=1||void 0===arguments[1]||arguments[1],i={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto",classPrefix:"tether"};this.options=h(i,t);var n=this.options,s=n.element,a=n.target,f=n.targetModifier;if(this.element=s,this.target=a,this.targetModifier=f,"viewport"===this.target?(this.target=document.body,this.targetModifier="visible"):"scroll-handle"===this.target&&(this.target=document.body,this.targetModifier="scroll-handle"),["element","target"].forEach(function(t){if("undefined"==typeof e[t])throw new Error("Tether Error: Both element and target must be defined");"undefined"!=typeof e[t].jquery?e[t]=e[t][0]:"string"==typeof e[t]&&(e[t]=document.querySelector(e[t]))}),p(this.element,this.getClass("element")),this.options.addTargetClasses!==!1&&p(this.target,this.getClass("target")),!this.options.attachment)throw new Error("Tether Error: You must provide an attachment");this.targetAttachment=q(this.options.targetAttachment),this.attachment=q(this.options.attachment),this.offset=R(this.options.offset),this.targetOffset=R(this.options.targetOffset),"undefined"!=typeof this.scrollParents&&this.disable(),"scroll-handle"===this.targetModifier?this.scrollParents=[this.target]:this.scrollParents=r(this.target),this.options.enabled!==!1&&this.enable(o)}},{key:"getTargetBounds",value:function(){if("undefined"==typeof this.targetModifier)return a(this.target);if("visible"===this.targetModifier){if(this.target===document.body)return{top:pageYOffset,left:pageXOffset,height:innerHeight,width:innerWidth};var t=a(this.target),e={height:t.height,width:t.width,top:t.top,left:t.left};return e.height=Math.min(e.height,t.height-(pageYOffset-t.top)),e.height=Math.min(e.height,t.height-(t.top+t.height-(pageYOffset+innerHeight))),e.height=Math.min(innerHeight,e.height),e.height-=2,e.width=Math.min(e.width,t.width-(pageXOffset-t.left)),e.width=Math.min(e.width,t.width-(t.left+t.width-(pageXOffset+innerWidth))),e.width=Math.min(innerWidth,e.width),e.width-=2,e.top<pageYOffset&&(e.top=pageYOffset),e.left<pageXOffset&&(e.left=pageXOffset),e}if("scroll-handle"===this.targetModifier){var t=void 0,o=this.target;o===document.body?(o=document.documentElement,t={left:pageXOffset,top:pageYOffset,height:innerHeight,width:innerWidth}):t=a(o);var i=getComputedStyle(o),n=o.scrollWidth>o.clientWidth||[i.overflow,i.overflowX].indexOf("scroll")>=0||this.target!==document.body,r=0;n&&(r=15);var s=t.height-parseFloat(i.borderTopWidth)-parseFloat(i.borderBottomWidth)-r,e={width:15,height:.975*s*(s/o.scrollHeight),left:t.left+t.width-parseFloat(i.borderLeftWidth)-15},f=0;s<408&&this.target===document.body&&(f=-11e-5*Math.pow(s,2)-.00727*s+22.58),this.target!==document.body&&(e.height=Math.max(e.height,24));var l=this.target.scrollTop/(o.scrollHeight-s);return e.top=l*(s-e.height-f)+t.top+parseFloat(i.borderTopWidth),this.target===document.body&&(e.height=Math.max(e.height,24)),e}}},{key:"clearCache",value:function(){this._cache={}}},{key:"cache",value:function(t,e){return"undefined"==typeof this._cache&&(this._cache={}),"undefined"==typeof this._cache[t]&&(this._cache[t]=e.call(this)),this._cache[t]}},{key:"enable",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];this.options.addTargetClasses!==!1&&p(this.target,this.getClass("enabled")),p(this.element,this.getClass("enabled")),this.enabled=!0,this.scrollParents.forEach(function(e){e!==t.target.ownerDocument&&e.addEventListener("scroll",t.position)}),e&&this.position()}},{key:"disable",value:function(){var t=this;d(this.target,this.getClass("enabled")),d(this.element,this.getClass("enabled")),this.enabled=!1,"undefined"!=typeof this.scrollParents&&this.scrollParents.forEach(function(e){e.removeEventListener("scroll",t.position)})}},{key:"destroy",value:function(){var t=this;this.disable(),D.forEach(function(e,o){e===t&&D.splice(o,1)}),0===D.length&&s()}},{key:"updateAttachClasses",value:function(t,e){var o=this;t=t||this.attachment,e=e||this.targetAttachment;var i=["left","top","bottom","right","middle","center"];"undefined"!=typeof this._addAttachClasses&&this._addAttachClasses.length&&this._addAttachClasses.splice(0,this._addAttachClasses.length),"undefined"==typeof this._addAttachClasses&&(this._addAttachClasses=[]);var n=this._addAttachClasses;t.top&&n.push(this.getClass("element-attached")+"-"+t.top),t.left&&n.push(this.getClass("element-attached")+"-"+t.left),e.top&&n.push(this.getClass("target-attached")+"-"+e.top),e.left&&n.push(this.getClass("target-attached")+"-"+e.left);var r=[];i.forEach(function(t){r.push(o.getClass("element-attached")+"-"+t),r.push(o.getClass("target-attached")+"-"+t)}),k(function(){"undefined"!=typeof o._addAttachClasses&&(m(o.element,o._addAttachClasses,r),o.options.addTargetClasses!==!1&&m(o.target,o._addAttachClasses,r),delete o._addAttachClasses)})}},{key:"position",value:function(){var t=this,e=arguments.length<=0||void 0===arguments[0]||arguments[0];if(this.enabled){this.clearCache();var o=U(this.targetAttachment,this.attachment);this.updateAttachClasses(this.attachment,o);var i=this.cache("element-bounds",function(){return a(t.element)}),n=i.width,r=i.height;if(0===n&&0===r&&"undefined"!=typeof this.lastSize){var s=this.lastSize;n=s.width,r=s.height}else this.lastSize={width:n,height:r};var h=this.cache("target-bounds",function(){return t.getTargetBounds()}),d=h,p=C(V(this.attachment),{width:n,height:r}),u=C(V(o),d),c=C(this.offset,{width:n,height:r}),g=C(this.targetOffset,d);p=w(p,c),u=w(u,g);for(var m=h.left+u.left-p.left,v=h.top+u.top-p.top,y=0;y<x.modules.length;++y){var b=x.modules[y],O=b.position.call(this,{left:m,top:v,targetAttachment:o,targetPos:h,elementPos:i,offset:p,targetOffset:u,manualOffset:c,manualTargetOffset:g,scrollbarSize:S,attachment:this.attachment});if(O===!1)return!1;"undefined"!=typeof O&&"object"==typeof O&&(v=O.top,m=O.left)}var E={page:{top:v,left:m},viewport:{top:v-pageYOffset,bottom:pageYOffset-v-r+innerHeight,left:m-pageXOffset,right:pageXOffset-m-n+innerWidth}},A=this.target.ownerDocument,T=A.defaultView,S=void 0;return T.innerHeight>A.documentElement.clientHeight&&(S=this.cache("scrollbar-size",l),E.viewport.bottom-=S.height),T.innerWidth>A.documentElement.clientWidth&&(S=this.cache("scrollbar-size",l),E.viewport.right-=S.width),["","static"].indexOf(A.body.style.position)!==-1&&["","static"].indexOf(A.body.parentElement.style.position)!==-1||(E.page.bottom=A.body.scrollHeight-v-r,E.page.right=A.body.scrollWidth-m-n),"undefined"!=typeof this.options.optimizations&&this.options.optimizations.moveElement!==!1&&"undefined"==typeof this.targetModifier&&!function(){var e=t.cache("target-offsetparent",function(){return f(t.target)}),o=t.cache("target-offsetparent-bounds",function(){return a(e)}),i=getComputedStyle(e),n=o,r={};if(["Top","Left","Bottom","Right"].forEach(function(t){r[t.toLowerCase()]=parseFloat(i["border"+t+"Width"])}),o.right=A.body.scrollWidth-o.left-n.width+r.right,o.bottom=A.body.scrollHeight-o.top-n.height+r.bottom,E.page.top>=o.top+r.top&&E.page.bottom>=o.bottom&&E.page.left>=o.left+r.left&&E.page.right>=o.right){var s=e.scrollTop,l=e.scrollLeft;E.offset={top:E.page.top-o.top+s-r.top,left:E.page.left-o.left+l-r.left}}}(),this.move(E),this.history.unshift(E),this.history.length>3&&this.history.pop(),e&&_(),!0}}},{key:"move",value:function(t){var e=this;if("undefined"!=typeof this.element.parentNode){var o={};for(var i in t){o[i]={};for(var n in t[i]){for(var r=!1,s=0;s<this.history.length;++s){var a=this.history[s];if("undefined"!=typeof a[i]&&!y(a[i][n],t[i][n])){r=!0;break}}r||(o[i][n]=!0)}}var l={top:"",left:"",right:"",bottom:""},d=function(t,o){var i="undefined"!=typeof e.options.optimizations,n=i?e.options.optimizations.gpu:null;if(n!==!1){var r=void 0,s=void 0;if(t.top?(l.top=0,r=o.top):(l.bottom=0,r=-o.bottom),t.left?(l.left=0,s=o.left):(l.right=0,s=-o.right),window.matchMedia){var a=window.matchMedia("only screen and (min-resolution: 1.3dppx)").matches||window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3)").matches;a||(s=Math.round(s),r=Math.round(r))}l[L]="translateX("+s+"px) translateY("+r+"px)","msTransform"!==L&&(l[L]+=" translateZ(0)")}else t.top?l.top=o.top+"px":l.bottom=o.bottom+"px",t.left?l.left=o.left+"px":l.right=o.right+"px"},p=!1;if((o.page.top||o.page.bottom)&&(o.page.left||o.page.right)?(l.position="absolute",d(o.page,t.page)):(o.viewport.top||o.viewport.bottom)&&(o.viewport.left||o.viewport.right)?(l.position="fixed",d(o.viewport,t.viewport)):"undefined"!=typeof o.offset&&o.offset.top&&o.offset.left?!function(){l.position="absolute";var i=e.cache("target-offsetparent",function(){return f(e.target)});f(e.element)!==i&&k(function(){e.element.parentNode.removeChild(e.element),i.appendChild(e.element)}),d(o.offset,t.offset),p=!0}():(l.position="absolute",d({top:!0,left:!0},t.page)),!p)if(this.options.bodyElement)this.options.bodyElement.appendChild(this.element);else{for(var u=!0,c=this.element.parentNode;c&&1===c.nodeType&&"BODY"!==c.tagName;){if("static"!==getComputedStyle(c).position){u=!1;break}c=c.parentNode}u||(this.element.parentNode.removeChild(this.element),this.element.ownerDocument.body.appendChild(this.element))}var g={},m=!1;for(var n in l){var v=l[n],b=this.element.style[n];b!==v&&(m=!0,g[n]=v)}m&&k(function(){h(e.element.style,g),e.trigger("repositioned")})}}}]),e}(B);I.modules=[],x.position=X;var $=h(I,x),z=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),Y=x.Utils,a=Y.getBounds,h=Y.extend,m=Y.updateClasses,k=Y.defer,G=["left","top","right","bottom"];x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=t.targetAttachment;if(!this.options.constraints)return!0;var r=this.cache("element-bounds",function(){return a(e.element)}),s=r.height,f=r.width;if(0===f&&0===s&&"undefined"!=typeof this.lastSize){var l=this.lastSize;f=l.width,s=l.height}var d=this.cache("target-bounds",function(){return e.getTargetBounds()}),p=d.height,u=d.width,c=[this.getClass("pinned"),this.getClass("out-of-bounds")];this.options.constraints.forEach(function(t){var e=t.outOfBoundsClass,o=t.pinnedClass;e&&c.push(e),o&&c.push(o)}),c.forEach(function(t){["left","top","right","bottom"].forEach(function(e){c.push(t+"-"+e)})});var g=[],v=h({},n),y=h({},this.attachment);return this.options.constraints.forEach(function(t){var r=t.to,a=t.attachment,l=t.pin;"undefined"==typeof a&&(a="");var h=void 0,d=void 0;if(a.indexOf(" ")>=0){var c=a.split(" "),m=z(c,2);d=m[0],h=m[1]}else h=d=a;var b=O(e,r);"target"!==d&&"both"!==d||(o<b[1]&&"top"===v.top&&(o+=p,v.top="bottom"),o+s>b[3]&&"bottom"===v.top&&(o-=p,v.top="top")),"together"===d&&("top"===v.top&&("bottom"===y.top&&o<b[1]?(o+=p,v.top="bottom",o+=s,y.top="top"):"top"===y.top&&o+s>b[3]&&o-(s-p)>=b[1]&&(o-=s-p,v.top="bottom",y.top="bottom")),"bottom"===v.top&&("top"===y.top&&o+s>b[3]?(o-=p,v.top="top",o-=s,y.top="bottom"):"bottom"===y.top&&o<b[1]&&o+(2*s-p)<=b[3]&&(o+=s-p,v.top="top",y.top="top")),"middle"===v.top&&(o+s>b[3]&&"top"===y.top?(o-=s,y.top="bottom"):o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"))),"target"!==h&&"both"!==h||(i<b[0]&&"left"===v.left&&(i+=u,v.left="right"),i+f>b[2]&&"right"===v.left&&(i-=u,v.left="left")),"together"===h&&(i<b[0]&&"left"===v.left?"right"===y.left?(i+=u,v.left="right",i+=f,y.left="left"):"left"===y.left&&(i+=u,v.left="right",i-=f,y.left="right"):i+f>b[2]&&"right"===v.left?"left"===y.left?(i-=u,v.left="left",i-=f,y.left="right"):"right"===y.left&&(i-=u,v.left="left",i+=f,y.left="left"):"center"===v.left&&(i+f>b[2]&&"left"===y.left?(i-=f,y.left="right"):i<b[0]&&"right"===y.left&&(i+=f,y.left="left"))),"element"!==d&&"both"!==d||(o<b[1]&&"bottom"===y.top&&(o+=s,y.top="top"),o+s>b[3]&&"top"===y.top&&(o-=s,y.top="bottom")),"element"!==h&&"both"!==h||(i<b[0]&&("right"===y.left?(i+=f,y.left="left"):"center"===y.left&&(i+=f/2,y.left="left")),i+f>b[2]&&("left"===y.left?(i-=f,y.left="right"):"center"===y.left&&(i-=f/2,y.left="right"))),"string"==typeof l?l=l.split(",").map(function(t){return t.trim()}):l===!0&&(l=["top","left","right","bottom"]),l=l||[];var w=[],C=[];o<b[1]&&(l.indexOf("top")>=0?(o=b[1],w.push("top")):C.push("top")),o+s>b[3]&&(l.indexOf("bottom")>=0?(o=b[3]-s,w.push("bottom")):C.push("bottom")),i<b[0]&&(l.indexOf("left")>=0?(i=b[0],w.push("left")):C.push("left")),i+f>b[2]&&(l.indexOf("right")>=0?(i=b[2]-f,w.push("right")):C.push("right")),w.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.pinnedClass?e.options.pinnedClass:e.getClass("pinned"),g.push(t),w.forEach(function(e){g.push(t+"-"+e)})}(),C.length&&!function(){var t=void 0;t="undefined"!=typeof e.options.outOfBoundsClass?e.options.outOfBoundsClass:e.getClass("out-of-bounds"),g.push(t),C.forEach(function(e){g.push(t+"-"+e)})}(),(w.indexOf("left")>=0||w.indexOf("right")>=0)&&(y.left=v.left=!1),(w.indexOf("top")>=0||w.indexOf("bottom")>=0)&&(y.top=v.top=!1),v.top===n.top&&v.left===n.left&&y.top===e.attachment.top&&y.left===e.attachment.left||(e.updateAttachClasses(y,v),e.trigger("update",{attachment:y,targetAttachment:v}))}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,g,c),m(e.element,g,c)}),{top:o,left:i}}});var Y=x.Utils,a=Y.getBounds,m=Y.updateClasses,k=Y.defer;x.modules.push({position:function(t){var e=this,o=t.top,i=t.left,n=this.cache("element-bounds",function(){return a(e.element)}),r=n.height,s=n.width,f=this.getTargetBounds(),l=o+r,h=i+s,d=[];o<=f.bottom&&l>=f.top&&["left","right"].forEach(function(t){var e=f[t];e!==i&&e!==h||d.push(t)}),i<=f.right&&h>=f.left&&["top","bottom"].forEach(function(t){var e=f[t];e!==o&&e!==l||d.push(t)});var p=[],u=[],c=["left","top","right","bottom"];return p.push(this.getClass("abutted")),c.forEach(function(t){p.push(e.getClass("abutted")+"-"+t)}),d.length&&u.push(this.getClass("abutted")),d.forEach(function(t){u.push(e.getClass("abutted")+"-"+t)}),k(function(){e.options.addTargetClasses!==!1&&m(e.target,u,p),m(e.element,u,p)}),!0}});var z=function(){function t(t,e){var o=[],i=!0,n=!1,r=void 0;try{for(var s,a=t[Symbol.iterator]();!(i=(s=a.next()).done)&&(o.push(s.value),!e||o.length!==e);i=!0);}catch(f){n=!0,r=f}finally{try{!i&&a["return"]&&a["return"]()}finally{if(n)throw r}}return o}return function(e,o){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return t(e,o);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}();return x.modules.push({position:function(t){var e=t.top,o=t.left;if(this.options.shift){var i=this.options.shift;"function"==typeof this.options.shift&&(i=this.options.shift.call(this,{top:e,left:o}));var n=void 0,r=void 0;if("string"==typeof i){i=i.split(" "),i[1]=i[1]||i[0];var s=i,a=z(s,2);n=a[0],r=a[1],n=parseFloat(n,10),r=parseFloat(r,10)}else n=i.top,r=i.left;return e+=n,o+=r,{top:e,left:o}}}}),$});
      \ No newline at end of file
      diff --git a/bower_components/tether/docs/1-Overview/1-why_you_should_use_tether.md b/bower_components/tether/docs/1-Overview/1-why_you_should_use_tether.md
      deleted file mode 100644
      index 6147d25fde..0000000000
      --- a/bower_components/tether/docs/1-Overview/1-why_you_should_use_tether.md
      +++ /dev/null
      @@ -1,43 +0,0 @@
      -## Why You Should Use Tether
      -
      -Virtually every app includes some sort of overlay attached to an element on the page.
      -Things like [tooltips](http://github.hubspot.com/tooltip/docs/welcome),
      -[dropdowns](http://github.hubspot.com/select/docs/welcome), [hover-activated info boxes](http://github.hubspot.com/drop/docs/welcome), etc.
      -
      -Those elements need to be attached to something on the page.  Actually placing them next to
      -the element in the DOM causes problems though, if any parent element is anything
      -but `overflow: visible`, the element gets cut off.  So you need absolute positioning
      -in the body.
      -
      -Some of the time absolute positioning is right, but what about if the thing we're
      -attached to is fixed to the center of the screen?  We'll have to move it every
      -time the user scrolls.  What about if the element is in a scrollable container,
      -if the overlay is inside of it (so no clipping), it would be cool if the code
      -were smart enough to move it inside when that area is scrolled.  That way we
      -need to reposition it even less.
      -
      -It would also be nice if the code could somehow figure out whether positioning it
      -from the top, bottom, left, or right would result in the fewest repositionings
      -as the user scrolls or resizes.
      -
      -Most of the time you're building these elements it would be nice for the element to
      -flip to the other side of the element if it hits the edge of the screen, or a scrollable
      -container it might be in.  It would be nice if we could confine the element
      -to within some area, or even hide it when it leaves.
      -
      -It would be nice for the element to be repositioned with CSS transforms
      -rather than top and left when possible, to allow the positioning to be done entirely
      -in the GPU.
      -
      -Now that the positioning is so fancy, you're going to use it for more and more
      -elements.  It would be cool if the library could optimize all of their repositioning
      -into a single repaint.
      -
      -All of that is baked into Tether.
      -
      -### tl;dr
      -
      -- Optimized GPU-accelerated repositioning for 60fps scrolling
      -- Reliable positioning on any possible corner, edge or point in between.
      -- Support for repositioning or pinning the element when it would be offscreen
      -- Designed to be embeddable in other libraries
      diff --git a/bower_components/tether/docs/1-Overview/2-repositioning.md b/bower_components/tether/docs/1-Overview/2-repositioning.md
      deleted file mode 100644
      index 6c02483f11..0000000000
      --- a/bower_components/tether/docs/1-Overview/2-repositioning.md
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -Repositioning
      ------
      -
      -Tethers will be automatically repositioned when the page is resized, and when any element containing the Tether is scrolled.
      -If the element moves for some other reason (e.g. with JavaScript), Tether won't know to reposition the element.
      -
      -#### Manually Repositioning
      -
      -The simplest way to reposition every Tether on the page is to call `Tether.position()`.  It will efficiently reposition every
      -Tether in a single repaint, making it more efficient than manually repositioning many Tethers individually.
      -
      -```javascript
      -Tether.position()
      -```
      -
      -#### Repositioning a Single Tether
      -
      -If you have many Tethers on screen, it may be more efficient to just reposition the tether that needs it.  You can do this
      -by calling the `.position` method on the Tether instance:
      -
      -```javascript
      -tether = new Tether({ ... })
      -
      -// Later:
      -tether.position()
      -```
      -
      -#### Tethering Hidden Elements
      -
      -If you are creating a tether involving elements which are `display: none`, or not actually in the DOM, 
      -your Tether may not be able to position itself properly.  One way around this is to
      -ensure that a position call happens after all layouts have finished:
      -
      -```javascript
      -myElement.style.display = 'block'
      -
      -tether = new Tether({ ... })
      -
      -setTimeout(function(){
      -  tether.position();
      -})
      -```
      -
      -In general however, you shouldn't have any trouble if both the element and the target are visible and in the DOM when you
      -create the Tether.  If that is not the case, create the Tether disabled (option `enabled`: `false`), and enable it when
      -the elements are ready.
      diff --git a/bower_components/tether/docs/1-Overview/3-why_we_dont_support_IE_8.md b/bower_components/tether/docs/1-Overview/3-why_we_dont_support_IE_8.md
      deleted file mode 100644
      index 841de9ec56..0000000000
      --- a/bower_components/tether/docs/1-Overview/3-why_we_dont_support_IE_8.md
      +++ /dev/null
      @@ -1,47 +0,0 @@
      -Why we don't support IE 8
      --------------------------
      -
      -We've been living in 2007 for a while now, pretending that new browser features don't
      -exist because they aren't in IE8.  You might not even know about some of these features,
      -or think they are only enabled by jQuery or underscore, simply because it hasn't
      -been an option to rely upon them.
      -
      -Here is the list of features you don't have if you choose to support IE 8:
      -
      -- HTML5 audio and video
      -- SVG
      -- Canvas
      -- TrueType fonts
      -- Media Queries
      -- CSS Transforms
      -- Multiple Backgrounds
      -- CSS3 Units (vh, vw, rem)
      -- Custom DOM events
      -- Hardware accelerated graphics
      -- The DOMContentLoaded event
      -- addEventListener
      -- Object.create, .seal, .freeze, .defineProperty
      -- Array.isArray, .indexOf, .every, .some, .forEach, .map, .filter, .reduce
      -- A modern JavaScript engine
      -- A real developer tools
      -- A consistent box model
      -- jQuery 2
      -- Google Apps
      -- Tether
      -
      -It's true that IE 8 still holds a big chunk of the browsing population, but the reasons
      -why they can't update are dwindling.  There are two big reasons for continuing IE 8 support.
      -
      -#### Enterprises
      -
      -  Microsoft is dropping support for XP in April, organizations who want security updates will have to upgrade.
      -
      -#### China uses XP
      -
      -  Chrome, Firefox and Opera all support XP.  Nothing prevents users from upgrading, except the inertia of
      -  organizations who still support IE 8.
      -
      -#### The Future
      -
      -We are skating towards where the puck will be, and we hope that as you decide to drop IE 8 support,
      -you choose to add Tether to the list of awesome things you can do.
      diff --git a/bower_components/tether/docs/2-Examples/1-list_of_examples.md b/bower_components/tether/docs/2-Examples/1-list_of_examples.md
      deleted file mode 100644
      index bbb7fd5169..0000000000
      --- a/bower_components/tether/docs/2-Examples/1-list_of_examples.md
      +++ /dev/null
      @@ -1,27 +0,0 @@
      -### Examples
      -
      -It's our goal to create a wide variety of example of how Tether
      -can be used.  Here's what we have so far, please send a PR with
      -any examples you might create.
      -
      -#### Beginner
      -
      -- [simple](../../examples/simple): A simple example to get you started
      -- [out-of-bounds](../../examples/out-of-bounds): How to hide the element when it would
      -otherwise be offscreen
      -- [pin](../../examples/pin): How to pin the element so it never goes offscreen
      -- [enable-disable](../../examples/enable-disable): How to enable and disable the Tether
      -in JavaScript
      -
      -#### Advanced
      -
      -- [content-visible](../../examples/content-visible): Demonstrates using the `'visible'`
      -`targetModifier` to align an element with the visible portion of another.
      -- [dolls](../../examples/dolls): A performance test to show several dozen elements,
      -each tethered to the previous.  Try dragging the top left tether.
      -- [element-scroll](../../examples/element-scroll): Demonstrates using the `'scroll-handle'`
      -`targetModifier` to align an element with the scrollbar of an element.
      -- [scroll](../../examples/scroll): Demonstrates using the `'scroll-handle'` `targetModifier`
      -to align an element with the body's scroll handle.
      -- [viewport](../../examples/viewport): Demonstrates aligning an element with the
      -viewport by using the `'visible'` `targetModifier` when tethered to the body.
      diff --git a/bower_components/tether/docs/2-Examples/2-projects_using_tether.md b/bower_components/tether/docs/2-Examples/2-projects_using_tether.md
      deleted file mode 100644
      index b9086b2802..0000000000
      --- a/bower_components/tether/docs/2-Examples/2-projects_using_tether.md
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -## Projects Using Tether
      -
      -Here at HubSpot we have built a bunch of libraries on top of Tether,
      -both because we wanted Tether-performance, and because we saw opportunities
      -to improve on what was available in the client-side ecosystem.
      -
      -### [Select](http://github.hubspot.com/select/docs/welcome)
      -
      -Select is a replacement for native browser select elements that is fully stylable.
      -
      -### [Shepherd](http://github.hubspot.com/shepherd/docs/welcome)
      -
      -Shepherd is a library for making tours of your app to help onboard users and show off
      -new features.
      -
      -### [Tooltip](http://github.hubspot.com/tooltip/docs/welcome)
      -
      -A simple, easy-to-use implementation of tooltips that works well.
      -
      -### [Drop](http://github.hubspot.com/drop/docs/welcome)
      -
      -Where Tether does general-purpose positioning, Drop assumes that you are interested
      -in making something which pops up next to something the user clicks or hovers on.
      -
      -If you're building something that fits that pattern, Drop can make things a little easier.
      -
      -### [React Datepicker](https://github.com/Hacker0x01/react-datepicker)
      -
      -A simple and reusable datepicker component for React
      -
      -### [ember-tether](https://github.com/yapplabs/ember-tether)
      -
      -An Ember.js-friendly interface for tether.
      -
      -### Your Project Here
      -
      -If you have a cool open-source library built on Tether, PR this doc.
      diff --git a/bower_components/tether/docs/3-Advanced/1-embedding_tether.md b/bower_components/tether/docs/3-Advanced/1-embedding_tether.md
      deleted file mode 100644
      index f47be16e14..0000000000
      --- a/bower_components/tether/docs/3-Advanced/1-embedding_tether.md
      +++ /dev/null
      @@ -1,9 +0,0 @@
      -## Embedding Tether
      -
      -Tether is designed to be embeddable in other libraries.
      -
      -There is one thing you should think about doing to create an embedded Tether:
      -
      -- Set the `classPrefix` of the tethers you create.  That prefix will replace `'tether'` in
      -all of the classes.  You can also disable classes you don't intend on using with the `classes`
      -option.
      diff --git a/bower_components/tether/docs/3-Advanced/2-extending_tether.md b/bower_components/tether/docs/3-Advanced/2-extending_tether.md
      deleted file mode 100644
      index fa357b211b..0000000000
      --- a/bower_components/tether/docs/3-Advanced/2-extending_tether.md
      +++ /dev/null
      @@ -1,54 +0,0 @@
      -Extending Tether
      ------
      -
      -Tether has a module system which can be used to modify Tether's positioning, or just do something each time the Tether is moved.
      -
      -Tether has an array called `Tether.modules`, push onto it to add a module:
      -
      -```coffeescript
      -Tether.modules.push
      -  position: ({top, left}) ->
      -    top += 10
      -
      -    {top, left}
      -```
      -
      -#### Position
      -
      -Your position function can either return a new object with `top` and `left`, `null`/`undefined` to leave the coordinates unchanged, or
      -`false` to cancel the positioning.
      -
      -The position function is passed an object with the following elements:
      -
      -```javascript
      -{
      -  left, // The element's new position, from the top left corner of the page
      -  top,
      -  targetAttachment, // The targetAttachment, with 'auto' resolved to an actual attachment
      -  targetPos, // The coordinates of the target
      -  attachment, // The attachment, as passed in the option
      -  elementPos, // The coordinates of the element
      -  offset, // The offset, after it's converted into pixels and the manual offset is added
      -  targetOffset, // The attachment is converted into an offset and is included in these values
      -  manualOffset, // The manual offset, in pixels
      -  manualTargetOffset
      -}
      -```
      -
      -It is called with the Tether instance as its context (`this`).
      -
      -#### Initialize
      -
      -Modules can also have an `initialize` function which will be called when a new tether is created.  The initialize function
      -is also called with the Tether instance as its context.
      -
      -```coffeescript
      -Tether.modules.push
      -  initialize: ->
      -    console.log "New Tether Created!", @
      -```
      -
      -#### Examples
      -
      -[Constraints](https://github.com/HubSpot/tether/blob/master/src/js/constraint.js) and [shift](https://github.com/HubSpot/tether/blob/master/src/js/shift.js) are both implemented as modules.
      -[Mark Attachment](https://github.com/HubSpot/tether/blob/master/src/js/markAttachment.js) is used by the docs.
      diff --git a/bower_components/tether/docs/coffee/intro.coffee b/bower_components/tether/docs/coffee/intro.coffee
      deleted file mode 100644
      index 52a305df9a..0000000000
      --- a/bower_components/tether/docs/coffee/intro.coffee
      +++ /dev/null
      @@ -1,113 +0,0 @@
      -{uniqueId} = Tether.Utils
      -
      -SETUP_JS = """
      -yellowBox = $('.yellow-box', $output);
      -greenBox = $('.green-box', $output);
      -scrollBox = $('.scroll-box', $output);
      -"""
      -
      -OUTPUT_HTML = (key) -> """
      -<div class="scroll-box">
      -  <div class="scroll-content">
      -    <div class="yellow-box" data-example="#{ key }"></div>
      -    <div class="green-box" data-example="#{ key }"></div>
      -  </div>
      -</div>
      -"""
      -
      -tethers = {}
      -
      -getOutput = ($block) ->
      -  key = $block.data('example')
      -  if key and typeof key is 'string'
      -    return $("output[data-example='#{ key }']")
      -  else
      -    return $block.parents('pre').nextAll('output').first()
      -
      -run = (key) ->
      -  if typeof key is 'string'
      -    $block = $("code[data-example='#{ key }']")
      -  else
      -    $block = key
      -
      -  key = $block.attr('data-example')
      -
      -  $output = getOutput $block
      -
      -  code = $block.text()
      -  code = SETUP_JS + code
      -
      -  window.$output = $output
      -  tethers[key] = eval code
      -
      -setupBlock = ($block) ->
      -  key = $block.data('example')
      -
      -  $output = getOutput $block
      -
      -  if not key
      -    key = uniqueId()
      -    $block.attr('data-example', key)
      -    $output.attr('data-example', key)
      -    $output.find('.tether-element').attr('data-example', key)
      -
      -  $output.html OUTPUT_HTML(key)
      -
      -  $scrollBox = $output.find('.scroll-box')
      -  $scrollContent = $scrollBox.find('.scroll-content')
      -  $scrollBox.scrollTop(parseInt($scrollContent.css('height')) / 2 - $scrollBox.height() / 2)
      -  $scrollBox.scrollLeft(parseInt($scrollContent.css('width')) / 2 - $scrollBox.width() / 2)
      -  setTimeout ->
      -    $scrollBox.on 'scroll', ->
      -      $output.addClass 'scrolled'
      -
      -  $scrollBox.css 'height', "#{ $block.parent().outerHeight() }px"
      -
      -  if not $output.attr('deactivated')?
      -    run $block
      -
      -$(document.body).on 'click', (e) ->
      -  if $(e.target).is('output[deactivated]')
      -    activate $(e.target)
      -    false
      -  else if $(e.target).is('output[activated]')
      -    deactivate $(e.target)
      -    false
      -
      -activate = ($output) ->
      -  $block = $output.prev().find('code')
      -
      -  run $block
      -
      -  $output.find('.tether-element').show()
      -
      -  key = $output.data('example')
      -  $(tethers[key].element).show()
      -  tethers[key].enable()
      -
      -  $output.removeAttr('deactivated')
      -  $output.attr('activated', true)
      -
      -deactivate = ($output) ->
      -  $block = $output.prev().find('code')
      -  key = $output.data('example')
      -
      -  tethers[key].disable()
      -
      -  $el = $(tethers[key].element)
      -  $el.detach()
      -  $output.find('.scroll-content').append $el
      -  $el.hide()
      -
      -  $output.removeAttr('activated')
      -  $output.attr('deactivated', true)
      -
      -init = ->
      -  $blocks = $('code[data-example]')
      -
      -  setupBlock($ block) for block in $blocks
      -
      -window.EXECUTR_OPTIONS =
      -  codeSelector: 'code[executable]'
      -
      -$ init
      diff --git a/bower_components/tether/docs/css/intro.css b/bower_components/tether/docs/css/intro.css
      deleted file mode 100644
      index 44303fd99c..0000000000
      --- a/bower_components/tether/docs/css/intro.css
      +++ /dev/null
      @@ -1,218 +0,0 @@
      -@charset "UTF-8";
      -*, *:after, *:before {
      -  box-sizing: border-box; }
      -
      -body {
      -  position: relative; }
      -
      -.yellow-box {
      -  width: 100px;
      -  height: 100px;
      -  background-color: #fe8;
      -  pointer-events: none; }
      -
      -.green-box {
      -  margin-top: 65px;
      -  margin-left: 100px;
      -  width: 200px;
      -  height: 50px;
      -  background-color: #4e9; }
      -  .no-green .green-box {
      -    display: none; }
      -
      -.scroll-box {
      -  height: 150px;
      -  border: 10px solid #eee;
      -  background: #fbfbfb;
      -  overflow: auto;
      -  position: relative; }
      -
      -.scroll-content {
      -  height: 2000px;
      -  width: 2000px;
      -  padding: 910px 809px; }
      -
      -pre.pre-with-output {
      -  margin: 0;
      -  width: 50%;
      -  float: left; }
      -  pre.pre-with-output code mark {
      -    background: #b8daff;
      -    color: #000; }
      -
      -p, h2, h3 {
      -  clear: both; }
      -
      -output {
      -  display: block;
      -  position: relative;
      -  width: 50%;
      -  float: right;
      -  margin-bottom: 15px; }
      -  output.scroll-page .scroll-box {
      -    overflow: hidden; }
      -  output.scroll-page:after {
      -    content: "↕ scroll the page ↕"; }
      -  output:after {
      -    content: "↕ scroll this area ↕";
      -    position: absolute;
      -    bottom: 25px;
      -    width: 100%;
      -    text-align: center;
      -    font-size: 16px;
      -    font-variant: small-caps;
      -    color: #777;
      -    opacity: 1;
      -    -webkit-transition: opacity 0.2s;
      -            transition: opacity 0.2s; }
      -  output.scrolled:after {
      -    opacity: 0; }
      -  output[deactivated], output[activated] {
      -    cursor: pointer; }
      -    output[deactivated] .scroll-box, output[activated] .scroll-box {
      -      pointer-events: none; }
      -    output[deactivated]:after, output[activated]:after {
      -      position: absolute;
      -      top: 0;
      -      left: 0;
      -      right: 0;
      -      bottom: 0;
      -      opacity: 1;
      -      content: "Click To Show";
      -      background-color: #AAA;
      -      border-left: 10px solid #EEE;
      -      color: white;
      -      font-size: 24px;
      -      font-variant: normal;
      -      padding-top: 80px; }
      -  output[activated]:after {
      -    content: "Click To Hide"; }
      -  output[activated].visible-enabled:after {
      -    height: 35px;
      -    padding-top: 5px; }
      -
      -.attachment-mark, .tether-marker-dot {
      -  position: relative; }
      -  .attachment-mark:after, .tether-marker-dot:after {
      -    content: "A";
      -    width: 10px;
      -    height: 10px;
      -    background-color: red;
      -    display: inline-block;
      -    line-height: 10px;
      -    font-size: 9px;
      -    color: white;
      -    text-align: center;
      -    position: absolute; }
      -
      -span.attachment-mark:after, span.tether-marker-dot:after {
      -  position: relative;
      -  top: -1px;
      -  margin-right: 1px; }
      -
      -.tether-marker-dot {
      -  position: absolute; }
      -  .tether-marker-dot:after {
      -    top: -5px;
      -    left: -5px; }
      -
      -.tether-target-marker {
      -  position: absolute; }
      -  div.tether-target-attached-left .tether-target-marker {
      -    left: 0; }
      -  div.tether-target-attached-top .tether-target-marker {
      -    top: 0; }
      -  div.tether-target-attached-bottom .tether-target-marker {
      -    bottom: 0; }
      -  div.tether-target-attached-right .tether-target-marker {
      -    right: 0; }
      -  div.tether-target-attached-center .tether-target-marker {
      -    left: 50%; }
      -
      -.tether-element-marker {
      -  position: absolute; }
      -  div.tether-element-attached-left .tether-element-marker {
      -    left: 0; }
      -  div.tether-element-attached-top .tether-element-marker {
      -    top: 0; }
      -  div.tether-element-attached-bottom .tether-element-marker {
      -    bottom: 0; }
      -  div.tether-element-attached-right .tether-element-marker {
      -    right: 0; }
      -  div.tether-element-attached-center .tether-element-marker {
      -    left: 50%; }
      -
      -.tether-element-attached-middle .tether-element-marker {
      -  top: 50px; }
      -
      -.tether-target-attached-middle .tether-target-marker {
      -  top: 25px; }
      -
      -.tether-element {
      -  position: relative; }
      -  .tether-element.tether-pinned-left {
      -    box-shadow: inset 2px 0 0 0 red; }
      -  .tether-element.tether-pinned-right {
      -    box-shadow: inset -2px 0 0 0 red; }
      -  .tether-element.tether-pinned-top {
      -    box-shadow: inset 0 2px 0 0 red; }
      -  .tether-element.tether-pinned-bottom {
      -    box-shadow: inset 0 -2px 0 0 red; }
      -
      -.tether-target {
      -  position: relative; }
      -
      -.tether-element.tether-out-of-bounds[data-example="hide"] {
      -  display: none; }
      -
      -[data-example^="optimizer"].lang-javascript {
      -  /* This should just be a `code` selector, but sass doesn't allow that with & */
      -  min-height: 220px; }
      -
      -[data-example^="optimizer"].tether-element:before {
      -  margin-top: 26px;
      -  display: block;
      -  text-align: center;
      -  content: "I'm in the body";
      -  line-height: 1.2;
      -  font-size: 15px;
      -  padding: 4px;
      -  color: #666; }
      -
      -[data-example^="optimizer"] .scroll-box .tether-element:before {
      -  content: "I'm in my scroll parent!"; }
      -
      -.tether-element[data-example="scroll-visible"] {
      -  height: 30px; }
      -  .tether-element[data-example="scroll-visible"] .tether-marker-dot {
      -    display: none; }
      -
      -.hs-doc-content h2.projects-header {
      -  text-align: center;
      -  font-weight: 300; }
      -
      -.projects-paragraph {
      -  text-align: center; }
      -  .projects-paragraph a {
      -    display: inline-block;
      -    vertical-align: middle;
      -    *vertical-align: auto;
      -    *zoom: 1;
      -    *display: inline;
      -    text-align: center;
      -    margin-right: 30px;
      -    color: inherit; }
      -    .projects-paragraph a span {
      -      display: inline-block;
      -      vertical-align: middle;
      -      *vertical-align: auto;
      -      *zoom: 1;
      -      *display: inline;
      -      margin-bottom: 20px;
      -      font-size: 20px;
      -      color: inherit;
      -      font-weight: 300; }
      -    .projects-paragraph a img {
      -      display: block;
      -      max-width: 100%;
      -      width: 100px; }
      diff --git a/bower_components/tether/docs/intro.md b/bower_components/tether/docs/intro.md
      deleted file mode 100644
      index aaf5ab5bc8..0000000000
      --- a/bower_components/tether/docs/intro.md
      +++ /dev/null
      @@ -1,591 +0,0 @@
      -<script src="dist/js/tether.js"></script>
      -<script src="docs/js/markAttachment.js"></script>
      -<script src="docs/js/intro.js"></script>
      -<link rel="stylesheet" href="docs/css/intro.css"></link>
      -
      -Tether
      -======
      -
      -Tether is a JavaScript library for efficiently making an absolutely positioned
      -element stay next to another element on the page. For example, you might
      -want a tooltip or dialog to open, and remain, next to the relevant item
      -on the page.
      -
      -Tether includes the ability to constrain the element within the viewport, its
      -scroll parent, any other element on the page, or a fixed bounding box.  When it
      -exceeds those constraints it can be pinned to the edge, flip to the other
      -side of its target, or hide itself.
      -
      -Tether optimizes its location placement to result in the minimum amount of
      -'jankyness' as the page is scrolled and resized.  The page can maintain 60fps
      -scrolling even with dozens or hundreds of tethers on screen (pop open the
      -devtools timeline as you scroll this page).
      -
      -Tether is 5kb minified and gzipped, and supports IE9+, and all modern
      -browsers.
      -
      -<h2 class="projects-header">Projects Built With Tether</h2>
      -<p class="projects-paragraph">
      -<a href="http://github.hubspot.com/select/docs/welcome"><span>Select</span><img src="http://github.hubspot.com/os-icons/select-icon.png" /></a>
      -<a href="http://github.hubspot.com/drop/docs/welcome"><span>Drop</span><img src="http://github.hubspot.com/os-icons/drop-icon.png" /></a>
      -<a href="http://github.hubspot.com/tooltip/docs/welcome"><span>Tooltip</span><img src="http://github.hubspot.com/os-icons/tooltip-icon.png" /></a>
      -<a href="http://github.hubspot.com/shepherd/docs/welcome"><span>Shepherd</span><img src="http://github.hubspot.com/os-icons/shepherd-icon.png" /></a>
      -</p>
      -
      -Usage
      ------
      -
      -The element to be moved is called the 'element'.
      -The element in the page it's to be attached to is called the 'target'.
      -
      -To use Tether, you define a point on the target and a point on the element.
      -Tether moves the element to keep those two points on top of each other.
      -
      -That point is called the attachment (we've marked it in the examples with
      -a red <span class="attachment-mark"></span>).  For example, if you'd like
      -the element to sit on the left of the target:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example='usage'>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top right',
      -  targetAttachment: 'top left'
      -});
      -</code></pre><output data-example='usage'></output>
      -
      -Attachment
      -----------
      -
      -You can move the attachment points of both the element and the target.
      -
      -For example, lets move the element's attachment:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: <mark>'bottom left'</mark>,
      -  targetAttachment: 'top left'
      -});
      -</code></pre><output></output>
      -
      -We can also change the target's attachment point:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'bottom left',
      -  targetAttachment: <mark>'bottom right'</mark>
      -});
      -</code></pre><output></output>
      -
      -There are two more attachment points we haven't seen yet, center and middle:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: <mark>'middle center'</mark>,
      -  targetAttachment: <mark>'middle center'</mark>
      -});
      -</code></pre><output></output>
      -
      -All told, Tether provides six built in attachment positions:
      -
      -- left
      -- center
      -- right
      -- top
      -- middle
      -- bottom
      -
      -The syntax of the attachment properties is: `"vertical-attachment horizontal-attachment"`.
      -
      -You must always supply an `attachment`.  If you don't supply a `target-attachment`, it is
      -assumed to be the mirror image of `attachment`.
      -
      -### Offset
      -
      -The six attachment points we provide are not always enough to place the element
      -exactly where you want it.  To correct this, we provide two more properties,
      -`offset` and `targetOffset`.
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top right',
      -  targetAttachment: 'top left',
      -  <mark>offset: '0 10px'</mark>
      -});
      -</code></pre><output></output>
      -
      -As you can see, we've moved the attachment point of the element 10px to the right.
      -We can also move the attachment point of the target:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top right',
      -  targetAttachment: 'top left',
      -  offset: '0 10px',
      -  <mark>targetOffset: '20px 0'</mark>
      -});
      -</code></pre><output></output>
      -
      -The offset properties also accept percentages. Percentages in `offset` refer to
      -the height and width of the element, `targetOffset` the height and width of
      -the target.
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top right',
      -  targetAttachment: 'top left',
      -  targetOffset: <mark>'0 75%'</mark>
      -});
      -</code></pre><output></output>
      -
      -The syntax of the offset properties is `"vertical-offset horizontal-offset"`
      -
      -Tether offers a couple of special attachments, using the `targetModifier`
      -option:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: scrollBox,
      -  attachment: 'middle right',
      -  targetAttachment: 'middle left',
      -  targetModifier: 'scroll-handle'
      -});
      -</code></pre><output></output>
      -
      -Set the target to `document.body` to have the element follow the page's scroll bar.
      -
      -The `targetModifier` `visible` can be used to attach an element to the visible part
      -of an element:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: document.body,
      -  attachment: 'middle center',
      -  targetAttachment: 'middle center',
      -  <mark>targetModifier: 'visible'</mark>
      -});
      -</code></pre><output deactivated></output>
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example="scroll-visible">new Tether({
      -  element: yellowBox,
      -  <mark>target: scrollBox</mark>,
      -  attachment: 'middle center',
      -  targetAttachment: 'middle center',
      -  targetModifier: 'visible'
      -});
      -</code></pre><output class="no-green scroll-page" data-example="scroll-visible"></output>
      -
      -Constraints
      ------------
      -
      -If you have tried any of the previous examples, you'll notice that it's pretty
      -easy to scroll the regions in such a way that the element is hanging out on
      -its own, with no target in sight.
      -
      -Constraints allow you to control what happens when the tethered element would
      -have to fall outside of a defined region to maintain the attachment.
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'middle left',
      -  targetAttachment: 'middle left',
      -  <mark>constraints</mark>: [
      -    {
      -      to: 'scrollParent',
      -      pin: true
      -    }
      -  ]
      -});
      -</code></pre><output></output>
      -
      -We've created a constraint which will keep the element within its scroll
      -parent by 'pinning' it to the edges if it tries to escape.  For the sake
      -of the example, we're also highlighting the pinned edge in red.
      -
      -Specify an array of sides if you'd only like to pin those edges:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'middle left',
      -  targetAttachment: 'middle left',
      -  constraints: [
      -    {
      -      to: 'scrollParent',
      -      pin: <mark>['top']</mark>
      -    }
      -  ]
      -});
      -</code></pre><output></output>
      -
      -You might want to allow the element to change its attachment, if doing so
      -would keep more of it within its assigned region:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left',
      -  constraints: [
      -    {
      -      to: 'scrollParent',
      -      <mark>attachment: 'together'</mark>
      -    }
      -  ]
      -});
      -</code></pre><output></output>
      -
      -If you scroll the example a bit, you'll see it flip the attachment when necessary.
      -You can combine `pin` and `attachment` as well:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left',
      -  constraints: [
      -    {
      -      to: 'scrollParent',
      -      attachment: 'together',
      -      <mark>pin: true</mark>
      -    }
      -  ]
      -});
      -</code></pre><output></output>
      -
      -Attachment will accept any of these values:
      -
      -- `element`: Only change the element's attachment
      -- `target`: Only change the target's attachment
      -- `both`: Change either's attachment (or both), as needed
      -- `together`: Change both the element's and target's attachment at the same time (to
      -'flip' the element to the other side of the attachment)
      -- `none`: Don't allow changes to attachment (the default)
      -
      -Together is the option you will use most commonly:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top right',
      -  targetAttachment: 'bottom left',
      -  constraints: [
      -    {
      -      to: 'scrollParent',
      -      attachment: <mark>'together'</mark>
      -    }
      -  ]
      -});
      -</code></pre><output></output>
      -
      -You can also provide different settings for the vertical and horizontal attachments:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left',
      -  constraints: [
      -    {
      -      to: 'scrollParent',
      -      attachment: <mark>'together none'</mark>
      -    }
      -  ]
      -});
      -</code></pre><output></output>
      -
      -Whenever the element is out of the constrained area, we add the `tether-out-of-bounds`
      -class to it.  If you add some CSS to make items with that class `display: none`, the
      -tether will hide.
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example="hide">new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'middle center',
      -  targetAttachment: 'middle center',
      -  constraints: [
      -    {
      -      to: 'scrollParent'
      -    }
      -  ]
      -});
      -</code></pre><output data-example="hide"></output>
      -
      -You can also constrain the element to the viewport, you'll have to scroll the
      -page to see this one.
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example="window">new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left',
      -  constraints: [
      -    {
      -      to: <mark>'window'</mark>,
      -      attachment: 'together'
      -    }
      -  ]
      -});
      -</code></pre><output data-example="window" class="scroll-page"></output>
      -
      -You can, of course, use pin with the window as well to
      -make it always visible no matter where the user scrolls:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left',
      -  constraints: [
      -    {
      -      to: 'window',
      -      attachment: 'together',
      -      <mark>pin: true</mark>
      -    }
      -  ]
      -});
      -</code></pre><output deactivated class="scroll-page visible-enabled"></output>
      -
      -`to` can be any of:
      -
      -- `'scrollParent'`
      -- `'window'`
      -- any DOM element
      -- an array of bound points relative to the body `[X1, Y1, X2, Y2]`
      -
      -You can also provide multiple constraints, keeping in mind that they are
      -processed in the order supplied (the last one always has the final word).
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left',
      -  constraints: [
      -    {
      -      to: <mark>'scrollParent'</mark>,
      -      pin: true
      -    },
      -    {
      -      to: <mark>'window'</mark>,
      -      attachment: 'together'
      -    }
      -  ]
      -});
      -</code></pre><output></output>
      -
      -Optimization
      -------------
      -
      -### Element Moving
      -
      -The goal of Tether's optimizer is to not have to change the positioning
      -CSS as the page is scrolled or resized.  To accomplish this it looks at the
      -last few positions, finds commonalities, and uses them to decide whether to
      -position the element absolutely or with fixed positioning.
      -
      -If the element is fully contained within its scroll parent, its DOM node
      -can also be moved inside the scroll parent, to avoid repaints as the
      -container is scrolled.
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example="optimizer">new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left'
      -});
      -</code></pre><output data-example="optimizer"></output>
      -
      -We are moving where the DOM node is, so if you have CSS which styles elements
      -within the offset parent, you may see some rendering changes.  Also note
      -that this optimization works best if the scroll parent is the offset parent.
      -In other words, **the scroll parent should be made position relative, fixed or
      -absolute to enable this optimization.**
      -
      -If you do see stylistic changes occur when the element is moved,
      -you might want to disable this optimization.  You can do that by
      -setting `optimizations.moveElement` to false.
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example="optimizer2">new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  targetAttachment: 'bottom left',
      -  optimizations: {
      -    <mark>moveElement: false</mark>
      -  }
      -});
      -</code></pre><output data-example="optimizer2"></output>
      -
      -### GPU
      -
      -By default tether positions elements using CSS transforms.  These transforms allow the
      -tethered element to be moved as its own layer to not force a repaint of the underlying
      -page.
      -
      -This method of positioning can cause some issues however, including color shifts and artifacts.
      -
      -If you experience these issues, you can disable this optimization by setting `optimizations.gpu`
      -to false:
      -
      -<pre class="pre-with-output"><code class="lang-javascript" data-example>new Tether({
      -  element: yellowBox,
      -  target: greenBox,
      -  attachment: 'top left',
      -  optimizations: {
      -    <mark>gpu: false</mark>
      -  }
      -});
      -</code></pre><output></output>
      -
      -Methods
      --------
      -
      -The `Tether` constructor we've been using in these examples returns us a
      -`Tether` object.
      -
      -The `Tether` object has these methods:
      -
      -- `setOptions({ options })` - Update any of the options (such as attachment)
      -- `disable()` - Disable the tethering
      -- `enable()` - Enable the tethering
      -- `destroy()` - Disable and remove all references
      -- `position()` - Manually trigger a repositioning
      -
      -Options
      --------
      -
      -The full list of options which can be passed to the `Tether` constructor and
      -`setOptions`:
      -
      -- `element`: The DOM element, jQuery element, or a selector string of an element which will be moved
      -- `target`: The DOM element, jQuery element, or a selector string of an element which the `element` will be attached to
      -- `attachment`: A string of the form `'vert-attachment horiz-attachment'`
      -  - `vert-attachment` can be any of `'top'`, `'middle'`, `'bottom'`
      -  - `horiz-attachment` can be any of `'left'`, `'center'`, `'right'`
      -- `targetAttachment`: A string similar to `attachment`.
      -  The one difference is that, if it's not provided, targetAttachment will assume the mirror
      -  image of `attachment`.
      -- `offset`: A string of the form `'vert-offset horiz-offset'`
      -  - `vert-offset` and `horiz-offset` can be of the form `"20px"` or `"55%"`
      -- `targetOffset`: A string similar to `offset`, but refering to the offset of the target
      -- `targetModifier`: Can be set to `'visible'` or `'scroll-handle'`
      -- `enabled`: Should the tether be enabled initially? Defaults to `true`.
      -- `classes`: A hash of classes which should be changed or disabled
      -- `classPrefix`: The prefix placed at the beginning of the default classes, defaults to `'tether'`
      -- `optimizations`: A hash of optimizations, used to disable them
      -- `constraints`: An array of constraint definition objects.  Each definition is of the form:
      -  - `to`: A DOM element, bounding box, the string `'window'`, or the string `'scrollParent'`
      -  - `pin`: `true` or an array of strings representing the sides of the constraint
      -  - `attachment`: A string of the form `"vert-modifier horiz-modifier"`, or a single value
      -  representing both
      -    - Each modifier should be one of `"none"`, `"together"`, `"element"`, `"target"`, or `"both"`.
      -  - `outOfBoundsClass`: An alternative to `"tether-out-of-bounds"`, useful if the class
      -  needs to be differentiated from that of another constraint.
      -  - `pinnedClass`: An alternative to `"tether-pinned"`, similar to `outOfBoundsClass`.
      -
      -Classes
      --------
      -
      -Tether adds a variety of classes to the element and target to allow you to style
      -them based on their tethering.
      -
      -You can change the prefix of the classes with the `classPrefix` option.  It is `'tether'` by
      -default, but you could, for example, change it to be `'bill'` if you were building the bill
      -library and all the classes would be `'bill-*'`.
      -
      -```javascript
      -new Tether({
      -  classPrefix: 'bill'
      -});
      -```
      -
      -The sass/css is similarily configurable, see
      -[tooltip](https://github.com/HubSpot/tooltip/blob/master/sass/tooltip-theme-arrows.sass#L14) for
      -an example of how to make your own prefixed css file.
      -
      -All classes can be changed or disabled with the `classes` option.  For example, to change the
      -`tether-element` class to be `my-box`:
      -
      -```javascript
      -new Tether({
      -  classes: {
      -    element: 'my-box'
      -  }
      -});
      -```
      -
      -You can also disable classes you're not going to use:
      -
      -```javascript
      -new Tether({
      -  classes: {
      -    out-of-bounds: false
      -  }
      -});
      -```
      -
      -- `tether-element` is added to the element
      -- `tether-target` is added to the target
      -- `tether-enabled` is added to both elements when tether is not disabled
      -- `tether-element-attached-[left,right,top,bottom,middle,center]` is added to both
      -elements based on the elements attachment, if the element becomes detached (for
      -example, if it's pinned), that class is removed.  The class reflects how the
      -element is actually attached, so if a constraint changes the attachment, that
      -change will be reflected in the class.
      -- `tether-target-attached-[left,right,top,bottom,middle,center]` is added to both
      -elements based on the target's attachment.  All of the characteristics are the
      -same as for element-attached.
      -
      -### Constraint-related Classes
      -
      -- `tether-out-of-bounds`, `tether-out-of-bounds-[side]` are added to both the element and the target
      -when the element is placed outside of its constraint.
      -- `tether-pinned`, `tether-pinned-[side]` are added to both the element and target when a constraint
      -has pinned the element to the [side] of the container.
      -
      -Browser Support
      ----------------
      -
      -Tether supports IE9+, and all modern browsers.
      -
      -Google doesn't support IE8, Microsoft is dropping support in a few months, and not supporting it saves
      -us a whole lot of trouble.  If you are interested in adding support, get in touch, we're happy to accept
      -a PR.
      -
      -Contributing
      -------------
      -
      -Please contribute! Tether is developed in Coffeescript, but if that's problematic for you, feel free
      -to submit pull requests which just change the JavaScript files, we can adapt them as needed.
      -
      -To build Tether, you need:
      -
      -- Node.js
      -
      -#### Instructions
      -
      -- Install the build tool
      -
      -```bash
      -npm install -g gulp
      -```
      -
      -- Install the project
      -
      -```bash
      -# In the project directory
      -npm install
      -```
      -
      -- Build / Watch
      -
      -```bash
      -gulp
      -```
      diff --git a/bower_components/tether/docs/js/intro.js b/bower_components/tether/docs/js/intro.js
      deleted file mode 100644
      index 47ed6e5b3a..0000000000
      --- a/bower_components/tether/docs/js/intro.js
      +++ /dev/null
      @@ -1,117 +0,0 @@
      -(function() {
      -  var OUTPUT_HTML, SETUP_JS, activate, deactivate, getOutput, init, run, setupBlock, tethers, uniqueId;
      -
      -  uniqueId = Tether.Utils.uniqueId;
      -
      -  SETUP_JS = "yellowBox = $('.yellow-box', $output);\ngreenBox = $('.green-box', $output);\nscrollBox = $('.scroll-box', $output);";
      -
      -  OUTPUT_HTML = function(key) {
      -    return "<div class=\"scroll-box\">\n  <div class=\"scroll-content\">\n    <div class=\"yellow-box\" data-example=\"" + key + "\"></div>\n    <div class=\"green-box\" data-example=\"" + key + "\"></div>\n  </div>\n</div>";
      -  };
      -
      -  tethers = {};
      -
      -  getOutput = function($block) {
      -    var key;
      -    key = $block.data('example');
      -    if (key && typeof key === 'string') {
      -      return $("output[data-example='" + key + "']");
      -    } else {
      -      return $block.parents('pre').nextAll('output').first();
      -    }
      -  };
      -
      -  run = function(key) {
      -    var $block, $output, code;
      -    if (typeof key === 'string') {
      -      $block = $("code[data-example='" + key + "']");
      -    } else {
      -      $block = key;
      -    }
      -    key = $block.attr('data-example');
      -    $output = getOutput($block);
      -    code = $block.text();
      -    code = SETUP_JS + code;
      -    window.$output = $output;
      -    return tethers[key] = eval(code);
      -  };
      -
      -  setupBlock = function($block) {
      -    var $output, $scrollBox, $scrollContent, key;
      -    key = $block.data('example');
      -    $output = getOutput($block);
      -    if (!key) {
      -      key = uniqueId();
      -      $block.attr('data-example', key);
      -      $output.attr('data-example', key);
      -      $output.find('.tether-element').attr('data-example', key);
      -    }
      -    $output.html(OUTPUT_HTML(key));
      -    $scrollBox = $output.find('.scroll-box');
      -    $scrollContent = $scrollBox.find('.scroll-content');
      -    $scrollBox.scrollTop(parseInt($scrollContent.css('height')) / 2 - $scrollBox.height() / 2);
      -    $scrollBox.scrollLeft(parseInt($scrollContent.css('width')) / 2 - $scrollBox.width() / 2);
      -    setTimeout(function() {
      -      return $scrollBox.on('scroll', function() {
      -        return $output.addClass('scrolled');
      -      });
      -    });
      -    $scrollBox.css('height', "" + ($block.parent().outerHeight()) + "px");
      -    if ($output.attr('deactivated') == null) {
      -      return run($block);
      -    }
      -  };
      -
      -  $(document.body).on('click', function(e) {
      -    if ($(e.target).is('output[deactivated]')) {
      -      activate($(e.target));
      -      return false;
      -    } else if ($(e.target).is('output[activated]')) {
      -      deactivate($(e.target));
      -      return false;
      -    }
      -  });
      -
      -  activate = function($output) {
      -    var $block, key;
      -    $block = $output.prev().find('code');
      -    run($block);
      -    $output.find('.tether-element').show();
      -    key = $output.data('example');
      -    $(tethers[key].element).show();
      -    tethers[key].enable();
      -    $output.removeAttr('deactivated');
      -    return $output.attr('activated', true);
      -  };
      -
      -  deactivate = function($output) {
      -    var $block, $el, key;
      -    $block = $output.prev().find('code');
      -    key = $output.data('example');
      -    tethers[key].disable();
      -    $el = $(tethers[key].element);
      -    $el.detach();
      -    $output.find('.scroll-content').append($el);
      -    $el.hide();
      -    $output.removeAttr('activated');
      -    return $output.attr('deactivated', true);
      -  };
      -
      -  init = function() {
      -    var $blocks, block, _i, _len, _results;
      -    $blocks = $('code[data-example]');
      -    _results = [];
      -    for (_i = 0, _len = $blocks.length; _i < _len; _i++) {
      -      block = $blocks[_i];
      -      _results.push(setupBlock($(block)));
      -    }
      -    return _results;
      -  };
      -
      -  window.EXECUTR_OPTIONS = {
      -    codeSelector: 'code[executable]'
      -  };
      -
      -  $(init);
      -
      -}).call(this);
      diff --git a/bower_components/tether/docs/js/markAttachment.js b/bower_components/tether/docs/js/markAttachment.js
      deleted file mode 100644
      index c7d34f0885..0000000000
      --- a/bower_components/tether/docs/js/markAttachment.js
      +++ /dev/null
      @@ -1,51 +0,0 @@
      -/* globals Tether */
      -
      -'use strict';
      -
      -Tether.modules.push({
      -  initialize: function initialize() {
      -    var _this = this;
      -
      -    this.markers = {};
      -
      -    ['target', 'element'].forEach(function (type) {
      -      var el = document.createElement('div');
      -      el.className = _this.getClass('' + type + '-marker');
      -
      -      var dot = document.createElement('div');
      -      dot.className = _this.getClass('marker-dot');
      -      el.appendChild(dot);
      -
      -      _this[type].appendChild(el);
      -
      -      _this.markers[type] = { dot: dot, el: el };
      -    });
      -  },
      -
      -  position: function position(_ref) {
      -    var manualOffset = _ref.manualOffset;
      -    var manualTargetOffset = _ref.manualTargetOffset;
      -
      -    var offsets = {
      -      element: manualOffset,
      -      target: manualTargetOffset
      -    };
      -
      -    for (var type in offsets) {
      -      var offset = offsets[type];
      -      for (var side in offset) {
      -        var val = offset[side];
      -        var notString = typeof val !== 'string';
      -        if (notString || val.indexOf('%') === -1 && val.indexOf('px') === -1) {
      -          val += 'px';
      -        }
      -
      -        if (this.markers[type].dot.style[side] !== val) {
      -          this.markers[type].dot.style[side] = val;
      -        }
      -      }
      -    }
      -
      -    return true;
      -  }
      -});
      diff --git a/bower_components/tether/docs/sass/intro.sass b/bower_components/tether/docs/sass/intro.sass
      deleted file mode 100644
      index 8456a20943..0000000000
      --- a/bower_components/tether/docs/sass/intro.sass
      +++ /dev/null
      @@ -1,233 +0,0 @@
      -$scrollableArea: 2000px
      -$exampleWidth: 400px
      -$exampleHeight: 180px
      -
      -@mixin inline-block
      -  display: inline-block
      -  vertical-align: middle
      -  *vertical-align: auto
      -  *zoom: 1
      -  *display: inline
      -
      -*, *:after, *:before
      -  box-sizing: border-box
      -
      -body
      -  position: relative
      -
      -.yellow-box
      -  width: 100px
      -  height: 100px
      -  background-color: #fe8
      -  pointer-events: none
      -
      -.green-box
      -  margin-top: ($exampleHeight - 50px) / 2
      -  margin-left: ($exampleWidth - 200px) / 2
      -  width: 200px
      -  height: 50px
      -  background-color: #4e9
      -
      -  .no-green &
      -    display: none
      -
      -.scroll-box
      -  height: 150px
      -  border: 10px solid #eee
      -  background: #fbfbfb
      -  overflow: auto
      -  position: relative
      -
      -.scroll-content
      -  height: $scrollableArea
      -  width: $scrollableArea
      -  padding: ($scrollableArea - $exampleHeight)/2 ($scrollableArea - $exampleWidth)/2 + 9
      -
      -pre.pre-with-output
      -  margin: 0
      -  width: 50%
      -  float: left
      -
      -  code mark
      -    background: #b8daff
      -    color: #000
      -
      -p, h2, h3
      -  clear: both
      -
      -output
      -  display: block
      -  position: relative
      -  width: 50%
      -  float: right
      -  margin-bottom: 15px
      -
      -  &.scroll-page
      -    .scroll-box
      -      overflow: hidden
      -
      -    &:after
      -      content: "↕ scroll the page ↕"
      -
      -  &:after
      -    content: "↕ scroll this area ↕"
      -    position: absolute
      -    bottom: 25px
      -    width: 100%
      -    text-align: center
      -    font-size: 16px
      -    font-variant: small-caps
      -    color: #777
      -    opacity: 1
      -    transition: opacity 0.2s
      -
      -  &.scrolled:after
      -    opacity: 0
      -
      -  &[deactivated], &[activated]
      -    .scroll-box
      -      pointer-events: none
      -
      -    cursor: pointer
      -
      -    &:after
      -      position: absolute
      -      top: 0
      -      left: 0
      -      right: 0
      -      bottom: 0
      -      opacity: 1
      -      content: "Click To Show"
      -      background-color: #AAA
      -      border-left: 10px solid #EEE
      -      color: white
      -      font-size: 24px
      -      font-variant: normal
      -      padding-top: 80px
      -
      -  &[activated]
      -    &:after
      -      content: "Click To Hide"
      -
      -    &.visible-enabled
      -      &:after
      -        height: 35px
      -        padding-top: 5px
      -
      -.attachment-mark
      -  position: relative
      -
      -  &:after
      -    content: "A"
      -    width: 10px
      -    height: 10px
      -    background-color: red
      -    display: inline-block
      -
      -    line-height: 10px
      -    font-size: 9px
      -    color: white
      -    text-align: center
      -
      -    position: absolute
      -
      -span.attachment-mark
      -  &:after
      -    position: relative
      -    top: -1px
      -    margin-right: 1px
      -
      -.tether-marker-dot
      -  @extend .attachment-mark
      -
      -  position: absolute
      -
      -  &:after
      -    top: -5px
      -    left: -5px
      -
      -@each $type in target, element
      -  .tether-#{ $type }-marker
      -    position: absolute
      -
      -    @each $side in left, top, bottom, right
      -      div.tether-#{ $type }-attached-#{ $side } &
      -        #{ $side }: 0
      -
      -    div.tether-#{ $type }-attached-center &
      -      left: 50%
      -
      -.tether-element-attached-middle .tether-element-marker
      -  top: 50px
      -
      -.tether-target-attached-middle .tether-target-marker
      -  top: 25px
      -
      -.tether-element
      -  position: relative
      -
      -  &.tether-pinned-left
      -    box-shadow: inset 2px 0 0 0 red
      -  &.tether-pinned-right
      -    box-shadow: inset -2px 0 0 0 red
      -  &.tether-pinned-top
      -    box-shadow: inset 0 2px 0 0 red
      -  &.tether-pinned-bottom
      -    box-shadow: inset 0 -2px 0 0 red
      -
      -.tether-target
      -  position: relative
      -
      -.tether-element.tether-out-of-bounds[data-example="hide"]
      -  display: none
      -
      -[data-example^="optimizer"]
      -  &.lang-javascript
      -    /* This should just be a `code` selector, but sass doesn't allow that with & */
      -    min-height: 220px
      -
      -  &.tether-element
      -
      -    &:before
      -      margin-top: 26px
      -      display: block
      -      text-align: center
      -      content: "I'm in the body"
      -      line-height: 1.2
      -      font-size: 15px
      -      padding: 4px
      -      color: #666
      -
      -  .scroll-box .tether-element:before
      -    content: "I'm in my scroll parent!"
      -
      -.tether-element[data-example="scroll-visible"]
      -  height: 30px
      -
      -  .tether-marker-dot
      -    display: none
      -
      -.hs-doc-content h2.projects-header
      -  text-align: center
      -  font-weight: 300
      -
      -.projects-paragraph
      -  text-align: center
      -
      -  a
      -    +inline-block
      -    text-align: center
      -    margin-right: 30px
      -    color: inherit
      -
      -    span
      -      +inline-block
      -      margin-bottom: 20px
      -      font-size: 20px
      -      color: inherit
      -      font-weight: 300
      -
      -    img
      -      display: block
      -      max-width: 100%
      -      width: 100px
      diff --git a/bower_components/tether/docs/welcome/browser-demo.html b/bower_components/tether/docs/welcome/browser-demo.html
      deleted file mode 100644
      index 6c175bc19e..0000000000
      --- a/bower_components/tether/docs/welcome/browser-demo.html
      +++ /dev/null
      @@ -1,76 +0,0 @@
      -<!doctype html>
      -<head>
      -    <meta charset="utf-8">
      -    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      -    <title>Drop – Browser Demo</title>
      -    <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -    <link rel="icon" href="http://static.hubspot.com/favicon.ico">
      -
      -    <script type="text/javascript" src="//use.typekit.net/ghy0wve.js"></script>
      -    <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
      -
      -    <!-- Drop themes -->
      -    <link rel="stylesheet" href="//github.hubspot.com/tether/dist/css/tether-theme-arrows-dark.css" />
      -
      -    <!-- Browser demo styles -->
      -    <link rel="stylesheet" href="//github.hubspot.com/tether/docs/welcome/css/browser-demo.css" />
      -</head>
      -<body>
      -    <div class="browser-demo">
      -        <div class="top"><div class="title"></div></div>
      -        <div class="bottom">
      -            <div class="left">
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -                <div class="item"></div>
      -            </div>
      -            <div class="right">
      -                <div class="title"></div>
      -                <p>
      -                    <div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div>
      -                </p>
      -                <p>
      -                    <div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div><div class="word"></div>
      -                </p>
      -            </div>
      -        </div>
      -    </div>
      -
      -    <!-- Tether javascript -->
      -    <script src="//github.hubspot.com/tether/dist/js/tether.min.js"></script>
      -
      -    <!-- Welcome docs javascript -->
      -    <script src="//github.hubspot.com/tether/docs/welcome/js/log.js"></script>
      -    <script src="//github.hubspot.com/tether/docs/welcome/js/jquery.js"></script>
      -    <script src="//github.hubspot.com/tether/docs/welcome/js/drop.js"></script>
      -</body>
      -</html>
      diff --git a/bower_components/tether/docs/welcome/coffee/welcome.coffee b/bower_components/tether/docs/welcome/coffee/welcome.coffee
      deleted file mode 100644
      index a43160214c..0000000000
      --- a/bower_components/tether/docs/welcome/coffee/welcome.coffee
      +++ /dev/null
      @@ -1,212 +0,0 @@
      -_Drop = Drop.createContext classPrefix: 'tether'
      -
      -isMobile = $(window).width() < 567
      -
      -init = ->
      -    setupHero()
      -    setupBrowserDemo()
      -
      -setupHero = ->
      -    $target = $('.tether-target-demo')
      -
      -    positions = [
      -        'top left'
      -        'left top'
      -        'left middle'
      -        'left bottom'
      -        'bottom left'
      -        'bottom center'
      -        'bottom right'
      -        'right bottom'
      -        'right middle'
      -        'right top'
      -        'top right'
      -        'top center'
      -    ]
      -
      -    if isMobile
      -        positions = [
      -            'top left'
      -            'bottom left'
      -            'bottom right'
      -            'top right'
      -        ]
      -
      -    window.drops = {}
      -
      -    for position in positions
      -        drops[position] = new _Drop
      -            target: $target[0]
      -            classes: 'tether-theme-arrows-dark'
      -            position: position
      -            constrainToWindow: false
      -            openOn: ''
      -            content: '<div style="height: 50px; width: 50px"></div>'
      -
      -    openIndex = 0
      -    frames = 0
      -    frameLengthMS = 10
      -
      -    openAllDrops = ->
      -        for position, drop of drops
      -            drop.open()
      -
      -    openNextDrop = ->
      -        for position, drop of drops
      -            drop.close()
      -
      -        drops[positions[openIndex]].open()
      -        drops[positions[(openIndex + 6) % positions.length]].open()
      -
      -        openIndex = (openIndex + 1) % positions.length
      -
      -        if frames > 5
      -            finalDropState()
      -            return
      -
      -        frames += 1
      -
      -        setTimeout openNextDrop, frameLengthMS * frames
      -
      -    finalDropState = ->
      -        $(drops['top left'].dropContent).html('Marrying DOM elements for life.')
      -        $(drops['bottom right'].dropContent).html('<a class="button" href="http://github.com/HubSpot/tether">★ On Github</a>')
      -        drops['top left'].open()
      -        drops['bottom right'].open()
      -
      -    if true or isMobile
      -        drops['top left'].open()
      -        drops['top left'].tether.position()
      -        drops['bottom right'].open()
      -        drops['bottom right'].tether.position()
      -        finalDropState()
      -
      -    else
      -        openNextDrop()
      -
      -setupBrowserDemo = ->
      -    $browserDemo = $('.browser-demo.showcase')
      -
      -    $startPoint = $('.browser-demo-start-point')
      -    $stopPoint = $('.browser-demo-stop-point')
      -
      -    $iframe = $('.browser-window iframe')
      -    $browserContents = $('.browser-content .browser-demo-inner')
      -
      -    $sections = $('.browser-demo-section')
      -
      -    $('body').append """
      -        <style>
      -            table.showcase.browser-demo.fixed-bottom {
      -                top: #{ $sections.length }00%
      -            }
      -        </style>
      -    """
      -
      -    $(window).scroll ->
      -        scrollTop = $(window).scrollTop()
      -
      -        if $startPoint.position().top < scrollTop and scrollTop + window.innerHeight < $stopPoint.position().top
      -            $browserDemo.removeClass('fixed-bottom')
      -            $browserDemo.addClass('fixed')
      -
      -            $sections.each ->
      -                $section = $ @
      -
      -                if $section.position().top < scrollTop < $section.position().top + $section.outerHeight()
      -                    setSection $section.data('section')
      -
      -                return true
      -
      -        else
      -            $browserDemo.removeAttr('data-section')
      -            $browserDemo.removeClass('fixed')
      -
      -            if scrollTop + window.innerHeight > $stopPoint.position().top
      -                $browserDemo.addClass('fixed-bottom')
      -            else
      -                $browserDemo.removeClass('fixed-bottom')
      -
      -    $iframe.load ->
      -        iframeWindow = $iframe[0].contentWindow
      -
      -        $items = $iframe.contents().find('.item')
      -
      -        $items.each (i) ->
      -            $item = $(@)
      -
      -            _iframeWindowDrop = iframeWindow.Drop.createContext classPrefix: 'tether'
      -
      -            drop = new _iframeWindowDrop
      -                target: $item[0]
      -                classes: 'tether-theme-arrows-dark'
      -                position: 'right top'
      -                constrainToWindow: true
      -                openOn: 'click'
      -                content: '''
      -                    <ul>
      -                        <li>Action&nbsp;1</li>
      -                        <li>Action&nbsp;2</li>
      -                        <li>Action&nbsp;3</li>
      -                    </ul>
      -                '''
      -
      -            $item.data('drop', drop)
      -
      -    scrollInterval = undefined
      -    scrollTop = 0
      -    scrollTopDirection = 1
      -
      -    setSection = (section) ->
      -        $browserDemo.attr('data-section', section)
      -
      -        $('.section-copy').removeClass('active')
      -        $(""".section-copy[data-section="#{ section }"]""").addClass('active')
      -
      -        openExampleItem = ->
      -            if isMobile
      -                $iframe.contents().find('.item:first').data().drop.open()
      -            else
      -                $iframe.contents().find('.item:eq(2)').data().drop.open()
      -
      -        closeAllItems = ->
      -            $iframe.contents().find('.item').each -> $(@).data().drop.close() or true
      -
      -        scrollLeftSection = ->
      -            scrollInterval = setInterval ->
      -                $iframe.contents().find('.left').scrollTop scrollTop
      -                scrollTop += scrollTopDirection
      -                if scrollTop > 50
      -                    scrollTopDirection = -1
      -                if scrollTop < 0
      -                    scrollTopDirection = 1
      -            , 30
      -
      -        stopScrollingLeftSection = ->
      -            clearInterval scrollInterval
      -
      -        switch section
      -
      -            when 'what'
      -                closeAllItems()
      -                openExampleItem()
      -                stopScrollingLeftSection()
      -
      -            when 'how'
      -                closeAllItems()
      -                openExampleItem()
      -                stopScrollingLeftSection()
      -                scrollLeftSection()
      -
      -            when 'why'
      -                closeAllItems()
      -                openExampleItem()
      -                stopScrollingLeftSection()
      -                scrollLeftSection()
      -
      -            when 'outro'
      -                closeAllItems()
      -                openExampleItem()
      -                stopScrollingLeftSection()
      -
      -init()
      \ No newline at end of file
      diff --git a/bower_components/tether/docs/welcome/css/browser-demo.css b/bower_components/tether/docs/welcome/css/browser-demo.css
      deleted file mode 100644
      index 0bd007b8f8..0000000000
      --- a/bower_components/tether/docs/welcome/css/browser-demo.css
      +++ /dev/null
      @@ -1,86 +0,0 @@
      -html, body {
      -  height: 100%;
      -  overflow: hidden;
      -  font-family: "proxima-nova", sans-serif; }
      -
      -.tether.tether-theme-arrows-dark .tether-content {
      -  -webkit-filter: none;
      -          filter: none;
      -  background: #000; }
      -  .tether.tether-theme-arrows-dark .tether-content ul {
      -    color: #fff;
      -    list-style: none;
      -    padding: 0;
      -    margin: 0; }
      -
      -.tether.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before {
      -  border-right-color: #000; }
      -
      -.browser-demo {
      -  position: absolute;
      -  top: 0;
      -  left: 0;
      -  bottom: 0;
      -  right: 0; }
      -  .browser-demo *, .browser-demo *:after, .browser-demo *:before {
      -    box-sizing: border-box; }
      -  .browser-demo .top {
      -    position: absolute;
      -    height: 60px;
      -    padding: 20px;
      -    line-height: 40px;
      -    width: 100%;
      -    border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
      -  .browser-demo .bottom {
      -    position: absolute;
      -    top: 60px;
      -    bottom: 0;
      -    width: 100%; }
      -    .browser-demo .bottom .left {
      -      border-right: 1px solid rgba(0, 0, 0, 0.1);
      -      position: absolute;
      -      width: 30%;
      -      height: 100%;
      -      overflow: auto; }
      -      .browser-demo .bottom .left .item {
      -        height: 64px;
      -        border-bottom: 1px solid rgba(0, 0, 0, 0.1);
      -        cursor: pointer; }
      -        .browser-demo .bottom .left .item:hover, .browser-demo .bottom .left .item.tether-open {
      -          background: rgba(0, 0, 0, 0.1);
      -          border-bottom: 1px solid transparent; }
      -        .browser-demo .bottom .left .item:last-child {
      -          border-bottom: 0; }
      -    .browser-demo .bottom .right {
      -      position: absolute;
      -      width: 70%;
      -      right: 0;
      -      height: 100%;
      -      padding: 20px; }
      -  .browser-demo .title {
      -    display: inline-block;
      -    vertical-align: middle;
      -    *vertical-align: auto;
      -    *zoom: 1;
      -    *display: inline;
      -    background: rgba(0, 0, 0, 0.1);
      -    width: 150px;
      -    height: 15px;
      -    margin-bottom: 20px; }
      -  .browser-demo .word {
      -    display: inline-block;
      -    vertical-align: middle;
      -    *vertical-align: auto;
      -    *zoom: 1;
      -    *display: inline;
      -    background: rgba(0, 0, 0, 0.1);
      -    width: 50px;
      -    height: 8px;
      -    margin-right: 5px;
      -    margin-bottom: 5px; }
      -    .browser-demo .word:nth-last-child(4n+1) {
      -      width: 73px; }
      -    .browser-demo .word:nth-last-child(10n+1) {
      -      width: 14px; }
      -    .browser-demo .word:nth-last-child(9n+1) {
      -      width: 80px; }
      diff --git a/bower_components/tether/docs/welcome/css/prism.css b/bower_components/tether/docs/welcome/css/prism.css
      deleted file mode 100644
      index b86d1c2a19..0000000000
      --- a/bower_components/tether/docs/welcome/css/prism.css
      +++ /dev/null
      @@ -1,2 +0,0 @@
      -/* Prism.js */
      -code[class*="language-"], pre[class*="language-"] {color: black; font-family: Consolas, Monaco, 'Andale Mono', monospace; direction: ltr; text-align: left; white-space: pre; word-spacing: normal; -moz-tab-size: 4; -o-tab-size: 4; tab-size: 4; -webkit-hyphens: none; -moz-hyphens: none; -ms-hyphens: none; hyphens: none; } /* Code blocks */ pre[class*="language-"] {padding: 1em; margin: .5em 0; overflow: auto; font-size: 14px; } :not(pre) > code[class*="language-"], pre[class*="language-"] {background: rgba(0, 0, 0, .05); } /* Inline code */ :not(pre) > code[class*="language-"] {padding: .1em; border-radius: .3em; } .token.comment, .token.prolog, .token.doctype, .token.cdata {color: slategray; } .token.punctuation {color: #999; } .namespace {opacity: .7; } .token.property, .token.tag, .token.boolean, .token.number, .token.constant, .token.symbol {color: #905; } .token.selector, .token.attr-name, .token.string, .token.builtin {color: #690; } .token.operator, .token.entity, .token.url, .language-css .token.string, .style .token.string, .token.variable {color: #a67f59; } .token.atrule, .token.attr-value, .token.keyword {color: #07a; } .token.regex, .token.important {color: #e90; } .token.important {font-weight: bold; } .token.entity {cursor: help; }
      \ No newline at end of file
      diff --git a/bower_components/tether/docs/welcome/css/welcome.css b/bower_components/tether/docs/welcome/css/welcome.css
      deleted file mode 100644
      index 8b7a6ad89d..0000000000
      --- a/bower_components/tether/docs/welcome/css/welcome.css
      +++ /dev/null
      @@ -1,247 +0,0 @@
      -html, body {
      -  height: 100%; }
      -
      -body {
      -  margin: 0;
      -  font-family: "proxima-nova", "Helvetica Neue", sans-serif; }
      -
      -.button {
      -  display: inline-block;
      -  border: 2px solid #333;
      -  color: #333;
      -  padding: 1em 1.25em;
      -  font-weight: 500;
      -  text-transform: uppercase;
      -  letter-spacing: 3px;
      -  text-decoration: none;
      -  cursor: pointer;
      -  width: 140px;
      -  font-size: .8em;
      -  line-height: 1.3em;
      -  text-align: center; }
      -
      -.tether-element.tether-theme-arrows-dark .tether-content {
      -  padding: 1em;
      -  font-size: 1.1em; }
      -  .tether-element.tether-theme-arrows-dark .tether-content .button {
      -    border-color: #fff;
      -    color: #fff;
      -    width: 170px;
      -    pointer-events: all; }
      -
      -.mobile-copy {
      -  display: none; }
      -  @media (max-width: 568px) {
      -    .mobile-copy {
      -      display: block; } }
      -
      -.button.dark {
      -  background: #333;
      -  color: #fff; }
      -
      -.hero-wrap {
      -  height: 100%;
      -  overflow: hidden; }
      -
      -table.showcase {
      -  height: 100%;
      -  width: 100%;
      -  position: relative; }
      -  table.showcase:after {
      -    content: "";
      -    display: block;
      -    position: absolute;
      -    left: 0;
      -    right: 0;
      -    bottom: 20px;
      -    margin: auto;
      -    height: 0;
      -    width: 0;
      -    border-width: 18px;
      -    border-style: solid;
      -    border-color: transparent;
      -    border-top-color: rgba(0, 0, 0, 0.2); }
      -  table.showcase.no-next-arrow:after {
      -    display: none; }
      -  table.showcase .showcase-inner {
      -    margin: 40px auto 60px;
      -    padding: 10px; }
      -    table.showcase .showcase-inner h1 {
      -      font-size: 50px;
      -      text-align: center;
      -      font-weight: 300; }
      -      @media (max-width: 567px) {
      -        table.showcase .showcase-inner h1 {
      -          font-size: 40px; } }
      -    table.showcase .showcase-inner h2 {
      -      font-size: 24px;
      -      text-align: center;
      -      font-weight: 300;
      -      margin: 1em 0 1em; }
      -      @media (max-width: 567px) {
      -        table.showcase .showcase-inner h2 {
      -          font-size: 14px; } }
      -    table.showcase .showcase-inner p {
      -      text-align: center; }
      -  table.showcase.hero {
      -    text-align: center; }
      -    table.showcase.hero .tether-target-demo {
      -      display: inline-block;
      -      vertical-align: middle;
      -      *vertical-align: auto;
      -      *zoom: 1;
      -      *display: inline;
      -      border: 2px dotted #000;
      -      margin: 5rem auto;
      -      padding: 5rem; }
      -      @media (max-width: 567px) {
      -        table.showcase.hero .tether-target-demo {
      -          padding: 1rem; } }
      -  table.showcase.share {
      -    background: #f3f3f3; }
      -  table.showcase.projects-showcase .showcase-inner .projects-list {
      -    width: 80%;
      -    max-width: 1200px;
      -    margin: 0 auto; }
      -    table.showcase.projects-showcase .showcase-inner .projects-list .project {
      -      color: inherit;
      -      text-decoration: none;
      -      position: relative;
      -      width: 50%;
      -      float: left;
      -      text-align: center;
      -      margin-bottom: 2rem; }
      -      table.showcase.projects-showcase .showcase-inner .projects-list .project:nth-child(odd) {
      -        clear: left; }
      -    table.showcase.projects-showcase .showcase-inner .projects-list .os-icon {
      -      width: 8rem;
      -      height: 8rem;
      -      margin-bottom: 1rem;
      -      background-size: 100%; }
      -    table.showcase.projects-showcase .showcase-inner .projects-list h1 {
      -      font-size: 2.5rem; }
      -    table.showcase.projects-showcase .showcase-inner .projects-list p {
      -      font-size: 1.3rem; }
      -  table.showcase.browser-demo {
      -    background-image: -webkit-linear-gradient(top left, #723362 0%, #9d223c 100%);
      -    background-image: linear-gradient(top left, #723362 0%, #9d223c 100%);
      -    background-color: #9d223c;
      -    position: absolute;
      -    top: 100%; }
      -    table.showcase.browser-demo.fixed {
      -      position: fixed;
      -      top: 0;
      -      bottom: 0;
      -      left: 0;
      -      right: 0;
      -      z-index: 1; }
      -      table.showcase.browser-demo.fixed .browser-demo-inner {
      -        -webkit-transition: width 2s ease-in-out, height 2s ease-in-out;
      -                transition: width 2s ease-in-out, height 2s ease-in-out; }
      -      table.showcase.browser-demo.fixed[data-section="what"] {
      -        box-shadow: 0 0 0 0; }
      -      table.showcase.browser-demo.fixed[data-section="why"] .browser-demo-inner {
      -        width: 70%; }
      -      table.showcase.browser-demo.fixed[data-section="outro"] .showcase-inner {
      -        pointer-events: all; }
      -    table.showcase.browser-demo .showcase-inner {
      -      pointer-events: none;
      -      position: absolute;
      -      left: 10%;
      -      right: 40%;
      -      top: 220px;
      -      bottom: 120px;
      -      margin: 0;
      -      padding: 0; }
      -      @media (max-width: 567px) {
      -        table.showcase.browser-demo .showcase-inner {
      -          bottom: 90px;
      -          top: 180px; } }
      -    table.showcase.browser-demo .browser-demo-inner {
      -      height: 100%;
      -      width: 100%; }
      -    table.showcase.browser-demo .section-copy {
      -      -webkit-transition: opacity 0.5s ease-in-out, top 0.5s ease-in-out;
      -              transition: opacity 0.5s ease-in-out, top 0.5s ease-in-out;
      -      opacity: 0;
      -      position: absolute;
      -      top: 0;
      -      position: absolute;
      -      height: 200px;
      -      color: #fff;
      -      text-align: center;
      -      width: 100%; }
      -      table.showcase.browser-demo .section-copy.active {
      -        opacity: 1;
      -        top: -150px; }
      -        @media (max-width: 567px) {
      -          table.showcase.browser-demo .section-copy.active {
      -            top: -130px; } }
      -      table.showcase.browser-demo .section-copy h2 {
      -        font-size: 40px;
      -        font-weight: bold;
      -        line-height: 1;
      -        margin: 25px 0 15px; }
      -        @media (max-width: 567px) {
      -          table.showcase.browser-demo .section-copy h2 {
      -            font-size: 30px; } }
      -    table.showcase.browser-demo .browser-window {
      -      border-radius: 4px;
      -      background: #fff;
      -      position: relative;
      -      height: 100%;
      -      width: 100%;
      -      max-width: 1200px;
      -      margin: 0 auto; }
      -      table.showcase.browser-demo .browser-window .browser-titlebar {
      -        position: absolute;
      -        top: 0;
      -        left: 0;
      -        right: 0;
      -        border-bottom: 1px solid #eee;
      -        height: 55px; }
      -        table.showcase.browser-demo .browser-window .browser-titlebar .browser-dots {
      -          padding: 16px; }
      -          table.showcase.browser-demo .browser-window .browser-titlebar .browser-dots b {
      -            display: inline-block;
      -            vertical-align: middle;
      -            *vertical-align: auto;
      -            *zoom: 1;
      -            *display: inline;
      -            border-radius: 50%;
      -            width: 10px;
      -            height: 10px;
      -            margin-right: 7px;
      -            background: rgba(0, 0, 0, 0.1); }
      -      table.showcase.browser-demo .browser-window .browser-frame {
      -        position: absolute;
      -        top: 55px;
      -        left: 0;
      -        right: 0;
      -        bottom: 0; }
      -        table.showcase.browser-demo .browser-window .browser-frame iframe {
      -          border-radius: 0 0 4px 4px;
      -          border: 0;
      -          width: 100%;
      -          height: 100%; }
      -  table.showcase.browser-demo-section .section-scroll-copy {
      -    position: relative;
      -    z-index: 10;
      -    color: #fff;
      -    width: 100%;
      -    font-size: 22px; }
      -    table.showcase.browser-demo-section .section-scroll-copy .section-scroll-copy-inner {
      -      position: absolute;
      -      z-index: 10;
      -      color: #fff;
      -      right: 10%;
      -      width: 23%; }
      -      table.showcase.browser-demo-section .section-scroll-copy .section-scroll-copy-inner a {
      -        color: inherit; }
      -      table.showcase.browser-demo-section .section-scroll-copy .section-scroll-copy-inner .example-paragraph {
      -        border-radius: 4px;
      -        background: #000;
      -        padding: 1rem; }
      -
      -.browser-content {
      -  display: none; }
      diff --git a/bower_components/tether/docs/welcome/index.html b/bower_components/tether/docs/welcome/index.html
      deleted file mode 100644
      index d70d00d5e3..0000000000
      --- a/bower_components/tether/docs/welcome/index.html
      +++ /dev/null
      @@ -1,226 +0,0 @@
      -<!doctype html>
      -<head>
      -    <meta charset="utf-8">
      -    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
      -    <title>Tether – Marrying elements for life</title>
      -    <meta name="description" content="Tether is a JavaScript and CSS library. It is free and open source and was developed by HubSpot developers Adam Schwartz (@adamfschwartz) and Zack Bloom (@zackbloom).">
      -    <link rel="icon" href="http://static.hubspot.com/favicon.ico">
      -
      -    <script type="text/javascript" src="//use.typekit.net/ghy0wve.js"></script>
      -    <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
      -
      -    <!-- Tether themes -->
      -    <link rel="stylesheet" href="//github.hubspot.com/tether/dist/css/tether-theme-arrows-dark.css" />
      -
      -    <!-- Welcome docs styles -->
      -    <link rel="stylesheet" href="//github.hubspot.com/tether/docs/welcome/css/prism.css" />
      -    <link rel="stylesheet" href="//github.hubspot.com/tether/docs/welcome/css/welcome.css" />
      -
      -    <!-- OS icons -->
      -    <link rel="stylesheet" href="http://github.hubspot.com/os-icons/os-icons.css" />
      -</head>
      -<body>
      -    <div class="hero-wrap">
      -        <table class="showcase hero"><tr><td>
      -            <div class="showcase-inner">
      -                <div class="tether-target-demo">
      -                    <h1>Tether</h1>
      -                    <div class="mobile-copy">
      -                        <h2>Marrying elements for life</h2>
      -                        <p>
      -                            <a class="button" href="http://github.com/HubSpot/tether">★ On Github</a>
      -                        </p>
      -                    </div>
      -                </div>
      -            </div>
      -        </td></tr></table>
      -    </div>
      -
      -    <div class="browser-demo-start-point"></div>
      -
      -    <table class="showcase browser-demo"><tr><td>
      -        <div class="showcase-inner">
      -            <div class="section-copy" data-section="what">
      -                <h2>What is Tether?</h2>
      -            </div>
      -            <div class="section-copy" data-section="how">
      -                <h2>How Tether works.</h2>
      -            </div>
      -            <div class="section-copy" data-section="why">
      -                <h2>Tether is powerful.</h2>
      -            </div>
      -            <div class="section-copy" data-section="outro">
      -                <h2>Play with Tether</h2>
      -            </div>
      -            <div class="browser-demo-inner">
      -                <div class="browser-window">
      -                    <div class="browser-titlebar">
      -                        <div class="browser-dots"><b></b><b></b><b></b></div>
      -                    </div>
      -                    <div class="browser-frame">
      -                        <iframe src="browser-demo.html"></iframe>
      -                    </div>
      -                </div>
      -            </div>
      -        </div>
      -    </td></tr></table>
      -
      -    <table class="showcase browser-demo-section no-next-arrow" data-section="what"><tr><td>
      -        <div class="section-scroll-copy">
      -            <div class="section-scroll-copy-inner">
      -                <p>Tether is a low-level UI library that can be used to position any element on a page <i>next to any other element</i>.</p>
      -                <p>It can be used for dropdown menus, tooltips, popovers, tours, help information, scroll guides, autocompletes, etc. The possibilities are endless.</p>
      -                <p class="example-paragraph">In this example we're showing an action menu <em>tethered</em> to a list item.</p>
      -            </div>
      -        </div>
      -    </td></tr></table>
      -
      -    <table class="showcase browser-demo-section no-next-arrow" data-section="how"><tr><td>
      -        <div class="section-scroll-copy">
      -            <div class="section-scroll-copy-inner">
      -                <p>Tether works by creating an absolutely positioned element and meticulously tracking the movements of a <i>target</i> which you specify.</p>
      -                <p>The <i>target</i> and <i>element</i> can be tethered together in a variety of different ways.</p>
      -                <p class="example-paragraph">Notice how the <i>tethered element</i> stays tethered to its <i>target</i> list item even as the left pane is scrolled up and down.</p>
      -            </div>
      -        </div>
      -    </td></tr></table>
      -
      -    <table class="showcase browser-demo-section no-next-arrow" data-section="why"><tr><td>
      -        <div class="section-scroll-copy">
      -            <div class="section-scroll-copy-inner">
      -                <p>Tether can keep your element positioned properly even in some tough situations.</p>
      -                <p>Tether handles all of the common pain points:</p>
      -                <ul>
      -                    <li>Automatically detect collisions with the edge of the page or edge of the scrollParent</li>
      -                    <li>Automatically reposition on browser resize, scroll, and other events,</li>
      -                    <li>Constrain the position to any bounding box,</li>
      -                </ul>
      -                <p>...and a lot more.</p>
      -            </div>
      -        </div>
      -    </td></tr></table>
      -
      -    <table class="showcase browser-demo-section no-next-arrow" data-section="outro"><tr><td>
      -        <div class="section-scroll-copy">
      -            <div class="section-scroll-copy-inner">
      -                <p class="example-paragraph">Interact with this demo.</p>
      -                <p>&nbsp;</p>
      -                <p>To learn more, check out our <a href="/">documentation</a>.</p>
      -            </div>
      -        </div>
      -    </td></tr></table>
      -
      -    <table class="showcase browser-demo-section no-next-arrow" data-section="__empty"><tr><td></td></tr></table>
      -
      -    <div class="browser-demo-stop-point"></div>
      -
      -    <table class="showcase projects-showcase no-next-arrow"><tr><td>
      -        <div class="showcase-inner">
      -            <h1>Tether Family</h1>
      -            <h2>These projects are all powered by Tether's positioning engine.</h2>
      -            <div class="projects-list">
      -                <a href="//github.hubspot.com/drop/docs/welcome" class="project">
      -                    <h1>Drop</h1>
      -                    <span class="os-icon drop-icon"></span>
      -                    <p>Create dropdowns, popovers, and more.</p>
      -                </a>
      -                <a href="//github.hubspot.com/tooltip/docs/welcome" class="project">
      -                    <h1>Tooltip</h1>
      -                    <span class="os-icon tooltip-icon"></span>
      -                    <p>Stylable tooltips built on Tether.</p>
      -                </a>
      -                <a href="//github.hubspot.com/select/docs/welcome" class="project">
      -                    <h1>Select</h1>
      -                    <span class="os-icon select-icon"></span>
      -                    <p>Stylable select elements built on Tether.</p>
      -                </a>
      -                <a href="//github.hubspot.com/shepherd/docs/welcome" class="project">
      -                    <h1>Shepherd</h1>
      -                    <span class="os-icon shepherd-icon"></span>
      -                    <p>Guide your users through a tour of your app.</p>
      -                </a>
      -            </div>
      -        </div>
      -    </td></tr></table>
      -
      -    <table class="showcase last-showcase no-next-arrow share"><tr><td>
      -        <div class="showcase-inner">
      -            <h1>Share</h1>
      -            <h2>Help us spread the word.</h2>
      -            <!-- Share -->
      -            <style>
      -                .share-buttons {
      -                    margin: 4em auto;
      -                    text-align: center;
      -                }
      -                .share-button {
      -                    display: inline-block;
      -                }
      -                .retweet-button {
      -                    width: 100px;
      -                    margin-left: 20px;
      -                }
      -                .github-stars {
      -                    width: 100px;
      -                }
      -            </style>
      -            <div class="share-buttons">
      -                <div class="share-button retweet-button">
      -                    <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://github.hubspot.com/tether/docs/welcome" data-text="Tether.js - A positioning engine for JavaScript" data-count="horizontal" data-via="HubSpotDev">Tweet</a>
      -                    <script>
      -                        (function(){
      -                            var recommends, button;
      -
      -                            if (Math.random() >= 0.5) {
      -                                recommends = ['hubspotdev', 'zackbloom', 'adamfschwartz'];
      -                            } else {
      -                                recommends = ['hubspotdev', 'adamfschwartz', 'zackbloom'];
      -                            }
      -
      -                            button = document.querySelector('.twitter-share-button');
      -
      -                            if (button) {
      -                                button.setAttribute('data-related', recommends.join(','));
      -                            }
      -                        })();
      -                    </script>
      -                    <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
      -                </div>
      -                <div class="share-button github-stars-button">
      -                    <iframe src="http://ghbtns.com/github-btn.html?user=HubSpot&amp;repo=tether&amp;type=watch&amp;count=true&amp;size=small" allowtransparency="true" frameborder="0" scrolling="0" width="100" height="20"></iframe>
      -                </div>
      -            </p>
      -        </div>
      -    </td></tr></table>
      -
      -    <!-- Tether javascript -->
      -    <script src="//github.hubspot.com/tether/dist/js/tether.min.js"></script>
      -
      -    <!-- Welcome docs javascript -->
      -    <script src="//github.hubspot.com/tether/docs/welcome/js/log.js"></script>
      -    <script src="//github.hubspot.com/tether/docs/welcome/js/jquery.js"></script>
      -    <script src="//github.hubspot.com/tether/docs/welcome/js/drop.js"></script>
      -    <script src="//github.hubspot.com/tether/docs/welcome/js/welcome.js"></script>
      -
      -    <!-- HubSpot analytics -->
      -    <script type="text/javascript">
      -        (function(d,s,i,r) {
      -            if (d.getElementById(i)){return;}
      -            var n=d.createElement(s),e=d.getElementsByTagName(s)[0];
      -            n.id=i;n.src='//js.hubspot.com/analytics/'+(Math.ceil(new Date()/r)*r)+'/51294.js';
      -            e.parentNode.insertBefore(n, e);
      -        })(document,"script","hs-analytics",300000);
      -    </script>
      -
      -    <!-- Google analytics -->
      -    <script>
      -        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      -        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      -        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      -        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
      -
      -        ga('create', 'UA-45159009-1', 'auto');
      -        ga('send', 'pageview');
      -    </script>
      -</body>
      -</html>
      diff --git a/bower_components/tether/docs/welcome/js/drop.js b/bower_components/tether/docs/welcome/js/drop.js
      deleted file mode 100644
      index 0058819408..0000000000
      --- a/bower_components/tether/docs/welcome/js/drop.js
      +++ /dev/null
      @@ -1,239 +0,0 @@
      -(function() {
      -  var Evented, MIRROR_ATTACH, addClass, allDrops, clickEvent, createContext, extend, hasClass, removeClass, sortAttach, touchDevice, _ref,
      -    __hasProp = {}.hasOwnProperty,
      -    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; },
      -    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
      -
      -  _ref = Tether.Utils, extend = _ref.extend, addClass = _ref.addClass, removeClass = _ref.removeClass, hasClass = _ref.hasClass, Evented = _ref.Evented;
      -
      -  touchDevice = 'ontouchstart' in document.documentElement;
      -
      -  clickEvent = touchDevice ? 'touchstart' : 'click';
      -
      -  sortAttach = function(str) {
      -    var first, second, _ref1, _ref2;
      -    _ref1 = str.split(' '), first = _ref1[0], second = _ref1[1];
      -    if (first === 'left' || first === 'right') {
      -      _ref2 = [second, first], first = _ref2[0], second = _ref2[1];
      -    }
      -    return [first, second].join(' ');
      -  };
      -
      -  MIRROR_ATTACH = {
      -    left: 'right',
      -    right: 'left',
      -    top: 'bottom',
      -    bottom: 'top',
      -    middle: 'middle',
      -    center: 'center'
      -  };
      -
      -  allDrops = {};
      -
      -  createContext = function(options) {
      -    var DropInstance, defaultOptions, drop, _name;
      -    if (options == null) {
      -      options = {};
      -    }
      -    drop = function() {
      -      return (function(func, args, ctor) {
      -        ctor.prototype = func.prototype;
      -        var child = new ctor, result = func.apply(child, args);
      -        return Object(result) === result ? result : child;
      -      })(DropInstance, arguments, function(){});
      -    };
      -    extend(drop, {
      -      createContext: createContext,
      -      drops: [],
      -      defaults: {}
      -    });
      -    defaultOptions = {
      -      classPrefix: 'drop',
      -      defaults: {
      -        attach: 'bottom left',
      -        openOn: 'click',
      -        constrainToScrollParent: true,
      -        constrainToWindow: true,
      -        classes: '',
      -        tetherOptions: {}
      -      }
      -    };
      -    extend(drop, defaultOptions, options);
      -    extend(drop.defaults, defaultOptions.defaults, options.defaults);
      -    if (allDrops[_name = drop.classPrefix] == null) {
      -      allDrops[_name] = [];
      -    }
      -    drop.updateBodyClasses = function() {
      -      var anyOpen, _drop, _i, _len, _ref1;
      -      anyOpen = false;
      -      _ref1 = allDrops[drop.classPrefix];
      -      for (_i = 0, _len = _ref1.length; _i < _len; _i++) {
      -        _drop = _ref1[_i];
      -        if (!(_drop.isOpened())) {
      -          continue;
      -        }
      -        anyOpen = true;
      -        break;
      -      }
      -      if (anyOpen) {
      -        return addClass(document.body, "" + drop.classPrefix + "-open");
      -      } else {
      -        return removeClass(document.body, "" + drop.classPrefix + "-open");
      -      }
      -    };
      -    DropInstance = (function(_super) {
      -      __extends(DropInstance, _super);
      -
      -      function DropInstance(options) {
      -        this.options = options;
      -        this.options = extend({}, drop.defaults, this.options);
      -        this.target = this.options.target;
      -        if (this.target == null) {
      -          throw new Error('Drop Error: You must provide a target.');
      -        }
      -        drop.drops.push(this);
      -        allDrops[drop.classPrefix].push(this);
      -        this.setupElements();
      -        this.setupEvents();
      -        this.setupTether();
      -      }
      -
      -      DropInstance.prototype.setupElements = function() {
      -        this.drop = document.createElement('div');
      -        addClass(this.drop, drop.classPrefix);
      -        if (this.options.classes) {
      -          addClass(this.drop, this.options.classes);
      -        }
      -        this.dropContent = document.createElement('div');
      -        addClass(this.dropContent, "" + drop.classPrefix + "-content");
      -        if (typeof this.options.content === 'object') {
      -          this.dropContent.appendChild(this.options.content);
      -        } else {
      -          this.dropContent.innerHTML = this.options.content;
      -        }
      -        return this.drop.appendChild(this.dropContent);
      -      };
      -
      -      DropInstance.prototype.setupTether = function() {
      -        var constraints, dropAttach;
      -        dropAttach = this.options.position.split(' ');
      -        dropAttach[0] = MIRROR_ATTACH[dropAttach[0]];
      -        dropAttach = dropAttach.join(' ');
      -        constraints = [];
      -        if (this.options.constrainToScrollParent) {
      -          constraints.push({
      -            to: 'scrollParent',
      -            pin: 'top, bottom',
      -            attachment: 'together none'
      -          });
      -        }
      -        if (this.options.constrainToWindow !== false) {
      -          constraints.push({
      -            to: 'window',
      -            pin: true,
      -            attachment: 'together'
      -          });
      -        }
      -        constraints.push({
      -          to: 'scrollParent'
      -        });
      -        options = {
      -          element: this.drop,
      -          target: this.target,
      -          attachment: sortAttach(dropAttach),
      -          targetAttachment: sortAttach(this.options.position),
      -          classPrefix: drop.classPrefix,
      -          offset: '0 0',
      -          targetOffset: '0 0',
      -          enabled: false,
      -          constraints: constraints
      -        };
      -        if (this.options.tether !== false) {
      -          return this.tether = new Tether(extend({}, options, this.options.tether));
      -        }
      -      };
      -
      -      DropInstance.prototype.setupEvents = function() {
      -        var events,
      -          _this = this;
      -        if (!this.options.openOn) {
      -          return;
      -        }
      -        events = this.options.openOn.split(' ');
      -        if (__indexOf.call(events, 'click') >= 0) {
      -          this.target.addEventListener(clickEvent, function() {
      -            return _this.toggle();
      -          });
      -          document.addEventListener(clickEvent, function(event) {
      -            if (!_this.isOpened()) {
      -              return;
      -            }
      -            if (event.target === _this.drop || _this.drop.contains(event.target)) {
      -              return;
      -            }
      -            if (event.target === _this.target || _this.target.contains(event.target)) {
      -              return;
      -            }
      -            return _this.close();
      -          });
      -        }
      -        if (__indexOf.call(events, 'hover') >= 0) {
      -          this.target.addEventListener('mouseover', function() {
      -            return _this.open();
      -          });
      -          return this.target.addEventListener('mouseout', function() {
      -            return _this.close();
      -          });
      -        }
      -      };
      -
      -      DropInstance.prototype.isOpened = function() {
      -        return hasClass(this.drop, "" + drop.classPrefix + "-open");
      -      };
      -
      -      DropInstance.prototype.toggle = function() {
      -        if (this.isOpened()) {
      -          return this.close();
      -        } else {
      -          return this.open();
      -        }
      -      };
      -
      -      DropInstance.prototype.open = function() {
      -        var _ref1;
      -        if (!this.drop.parentNode) {
      -          document.body.appendChild(this.drop);
      -        }
      -        addClass(this.target, "" + drop.classPrefix + "-open");
      -        addClass(this.drop, "" + drop.classPrefix + "-open");
      -        if ((_ref1 = this.tether) != null) {
      -          _ref1.enable();
      -        }
      -        this.trigger('open');
      -        return drop.updateBodyClasses();
      -      };
      -
      -      DropInstance.prototype.close = function() {
      -        var _ref1;
      -        removeClass(this.target, "" + drop.classPrefix + "-open");
      -        removeClass(this.drop, "" + drop.classPrefix + "-open");
      -        this.trigger('close');
      -        if ((_ref1 = this.tether) != null) {
      -          _ref1.disable();
      -        }
      -        return drop.updateBodyClasses();
      -      };
      -
      -      return DropInstance;
      -
      -    })(Evented);
      -    return drop;
      -  };
      -
      -  window.Drop = createContext();
      -
      -  document.addEventListener('DOMContentLoaded', function() {
      -    return Drop.updateBodyClasses();
      -  });
      -
      -}).call(this);
      \ No newline at end of file
      diff --git a/bower_components/tether/docs/welcome/js/jquery.js b/bower_components/tether/docs/welcome/js/jquery.js
      deleted file mode 100644
      index dfdf619cc7..0000000000
      --- a/bower_components/tether/docs/welcome/js/jquery.js
      +++ /dev/null
      @@ -1,9597 +0,0 @@
      -/*!
      - * jQuery JavaScript Library v1.9.1
      - * http://jquery.com/
      - *
      - * Includes Sizzle.js
      - * http://sizzlejs.com/
      - *
      - * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
      - * Released under the MIT license
      - * http://jquery.org/license
      - *
      - * Date: 2013-2-4
      - */
      -(function( window, undefined ) {
      -
      -// Can't do this because several apps including ASP.NET trace
      -// the stack via arguments.caller.callee and Firefox dies if
      -// you try to trace through "use strict" call chains. (#13335)
      -// Support: Firefox 18+
      -//"use strict";
      -var
      -    // The deferred used on DOM ready
      -    readyList,
      -
      -    // A central reference to the root jQuery(document)
      -    rootjQuery,
      -
      -    // Support: IE<9
      -    // For `typeof node.method` instead of `node.method !== undefined`
      -    core_strundefined = typeof undefined,
      -
      -    // Use the correct document accordingly with window argument (sandbox)
      -    document = window.document,
      -    location = window.location,
      -
      -    // Map over jQuery in case of overwrite
      -    _jQuery = window.jQuery,
      -
      -    // Map over the $ in case of overwrite
      -    _$ = window.$,
      -
      -    // [[Class]] -> type pairs
      -    class2type = {},
      -
      -    // List of deleted data cache ids, so we can reuse them
      -    core_deletedIds = [],
      -
      -    core_version = "1.9.1",
      -
      -    // Save a reference to some core methods
      -    core_concat = core_deletedIds.concat,
      -    core_push = core_deletedIds.push,
      -    core_slice = core_deletedIds.slice,
      -    core_indexOf = core_deletedIds.indexOf,
      -    core_toString = class2type.toString,
      -    core_hasOwn = class2type.hasOwnProperty,
      -    core_trim = core_version.trim,
      -
      -    // Define a local copy of jQuery
      -    jQuery = function( selector, context ) {
      -        // The jQuery object is actually just the init constructor 'enhanced'
      -        return new jQuery.fn.init( selector, context, rootjQuery );
      -    },
      -
      -    // Used for matching numbers
      -    core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
      -
      -    // Used for splitting on whitespace
      -    core_rnotwhite = /\S+/g,
      -
      -    // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
      -    rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
      -
      -    // A simple way to check for HTML strings
      -    // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
      -    // Strict HTML recognition (#11290: must start with <)
      -    rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
      -
      -    // Match a standalone tag
      -    rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
      -
      -    // JSON RegExp
      -    rvalidchars = /^[\],:{}\s]*$/,
      -    rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
      -    rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
      -    rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
      -
      -    // Matches dashed string for camelizing
      -    rmsPrefix = /^-ms-/,
      -    rdashAlpha = /-([\da-z])/gi,
      -
      -    // Used by jQuery.camelCase as callback to replace()
      -    fcamelCase = function( all, letter ) {
      -        return letter.toUpperCase();
      -    },
      -
      -    // The ready event handler
      -    completed = function( event ) {
      -
      -        // readyState === "complete" is good enough for us to call the dom ready in oldIE
      -        if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
      -            detach();
      -            jQuery.ready();
      -        }
      -    },
      -    // Clean-up method for dom ready events
      -    detach = function() {
      -        if ( document.addEventListener ) {
      -            document.removeEventListener( "DOMContentLoaded", completed, false );
      -            window.removeEventListener( "load", completed, false );
      -
      -        } else {
      -            document.detachEvent( "onreadystatechange", completed );
      -            window.detachEvent( "onload", completed );
      -        }
      -    };
      -
      -jQuery.fn = jQuery.prototype = {
      -    // The current version of jQuery being used
      -    jquery: core_version,
      -
      -    constructor: jQuery,
      -    init: function( selector, context, rootjQuery ) {
      -        var match, elem;
      -
      -        // HANDLE: $(""), $(null), $(undefined), $(false)
      -        if ( !selector ) {
      -            return this;
      -        }
      -
      -        // Handle HTML strings
      -        if ( typeof selector === "string" ) {
      -            if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
      -                // Assume that strings that start and end with <> are HTML and skip the regex check
      -                match = [ null, selector, null ];
      -
      -            } else {
      -                match = rquickExpr.exec( selector );
      -            }
      -
      -            // Match html or make sure no context is specified for #id
      -            if ( match && (match[1] || !context) ) {
      -
      -                // HANDLE: $(html) -> $(array)
      -                if ( match[1] ) {
      -                    context = context instanceof jQuery ? context[0] : context;
      -
      -                    // scripts is true for back-compat
      -                    jQuery.merge( this, jQuery.parseHTML(
      -                        match[1],
      -                        context && context.nodeType ? context.ownerDocument || context : document,
      -                        true
      -                    ) );
      -
      -                    // HANDLE: $(html, props)
      -                    if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
      -                        for ( match in context ) {
      -                            // Properties of context are called as methods if possible
      -                            if ( jQuery.isFunction( this[ match ] ) ) {
      -                                this[ match ]( context[ match ] );
      -
      -                            // ...and otherwise set as attributes
      -                            } else {
      -                                this.attr( match, context[ match ] );
      -                            }
      -                        }
      -                    }
      -
      -                    return this;
      -
      -                // HANDLE: $(#id)
      -                } else {
      -                    elem = document.getElementById( match[2] );
      -
      -                    // Check parentNode to catch when Blackberry 4.6 returns
      -                    // nodes that are no longer in the document #6963
      -                    if ( elem && elem.parentNode ) {
      -                        // Handle the case where IE and Opera return items
      -                        // by name instead of ID
      -                        if ( elem.id !== match[2] ) {
      -                            return rootjQuery.find( selector );
      -                        }
      -
      -                        // Otherwise, we inject the element directly into the jQuery object
      -                        this.length = 1;
      -                        this[0] = elem;
      -                    }
      -
      -                    this.context = document;
      -                    this.selector = selector;
      -                    return this;
      -                }
      -
      -            // HANDLE: $(expr, $(...))
      -            } else if ( !context || context.jquery ) {
      -                return ( context || rootjQuery ).find( selector );
      -
      -            // HANDLE: $(expr, context)
      -            // (which is just equivalent to: $(context).find(expr)
      -            } else {
      -                return this.constructor( context ).find( selector );
      -            }
      -
      -        // HANDLE: $(DOMElement)
      -        } else if ( selector.nodeType ) {
      -            this.context = this[0] = selector;
      -            this.length = 1;
      -            return this;
      -
      -        // HANDLE: $(function)
      -        // Shortcut for document ready
      -        } else if ( jQuery.isFunction( selector ) ) {
      -            return rootjQuery.ready( selector );
      -        }
      -
      -        if ( selector.selector !== undefined ) {
      -            this.selector = selector.selector;
      -            this.context = selector.context;
      -        }
      -
      -        return jQuery.makeArray( selector, this );
      -    },
      -
      -    // Start with an empty selector
      -    selector: "",
      -
      -    // The default length of a jQuery object is 0
      -    length: 0,
      -
      -    // The number of elements contained in the matched element set
      -    size: function() {
      -        return this.length;
      -    },
      -
      -    toArray: function() {
      -        return core_slice.call( this );
      -    },
      -
      -    // Get the Nth element in the matched element set OR
      -    // Get the whole matched element set as a clean array
      -    get: function( num ) {
      -        return num == null ?
      -
      -            // Return a 'clean' array
      -            this.toArray() :
      -
      -            // Return just the object
      -            ( num < 0 ? this[ this.length + num ] : this[ num ] );
      -    },
      -
      -    // Take an array of elements and push it onto the stack
      -    // (returning the new matched element set)
      -    pushStack: function( elems ) {
      -
      -        // Build a new jQuery matched element set
      -        var ret = jQuery.merge( this.constructor(), elems );
      -
      -        // Add the old object onto the stack (as a reference)
      -        ret.prevObject = this;
      -        ret.context = this.context;
      -
      -        // Return the newly-formed element set
      -        return ret;
      -    },
      -
      -    // Execute a callback for every element in the matched set.
      -    // (You can seed the arguments with an array of args, but this is
      -    // only used internally.)
      -    each: function( callback, args ) {
      -        return jQuery.each( this, callback, args );
      -    },
      -
      -    ready: function( fn ) {
      -        // Add the callback
      -        jQuery.ready.promise().done( fn );
      -
      -        return this;
      -    },
      -
      -    slice: function() {
      -        return this.pushStack( core_slice.apply( this, arguments ) );
      -    },
      -
      -    first: function() {
      -        return this.eq( 0 );
      -    },
      -
      -    last: function() {
      -        return this.eq( -1 );
      -    },
      -
      -    eq: function( i ) {
      -        var len = this.length,
      -            j = +i + ( i < 0 ? len : 0 );
      -        return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
      -    },
      -
      -    map: function( callback ) {
      -        return this.pushStack( jQuery.map(this, function( elem, i ) {
      -            return callback.call( elem, i, elem );
      -        }));
      -    },
      -
      -    end: function() {
      -        return this.prevObject || this.constructor(null);
      -    },
      -
      -    // For internal use only.
      -    // Behaves like an Array's method, not like a jQuery method.
      -    push: core_push,
      -    sort: [].sort,
      -    splice: [].splice
      -};
      -
      -// Give the init function the jQuery prototype for later instantiation
      -jQuery.fn.init.prototype = jQuery.fn;
      -
      -jQuery.extend = jQuery.fn.extend = function() {
      -    var src, copyIsArray, copy, name, options, clone,
      -        target = arguments[0] || {},
      -        i = 1,
      -        length = arguments.length,
      -        deep = false;
      -
      -    // Handle a deep copy situation
      -    if ( typeof target === "boolean" ) {
      -        deep = target;
      -        target = arguments[1] || {};
      -        // skip the boolean and the target
      -        i = 2;
      -    }
      -
      -    // Handle case when target is a string or something (possible in deep copy)
      -    if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
      -        target = {};
      -    }
      -
      -    // extend jQuery itself if only one argument is passed
      -    if ( length === i ) {
      -        target = this;
      -        --i;
      -    }
      -
      -    for ( ; i < length; i++ ) {
      -        // Only deal with non-null/undefined values
      -        if ( (options = arguments[ i ]) != null ) {
      -            // Extend the base object
      -            for ( name in options ) {
      -                src = target[ name ];
      -                copy = options[ name ];
      -
      -                // Prevent never-ending loop
      -                if ( target === copy ) {
      -                    continue;
      -                }
      -
      -                // Recurse if we're merging plain objects or arrays
      -                if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
      -                    if ( copyIsArray ) {
      -                        copyIsArray = false;
      -                        clone = src && jQuery.isArray(src) ? src : [];
      -
      -                    } else {
      -                        clone = src && jQuery.isPlainObject(src) ? src : {};
      -                    }
      -
      -                    // Never move original objects, clone them
      -                    target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -                // Don't bring in undefined values
      -                } else if ( copy !== undefined ) {
      -                    target[ name ] = copy;
      -                }
      -            }
      -        }
      -    }
      -
      -    // Return the modified object
      -    return target;
      -};
      -
      -jQuery.extend({
      -    noConflict: function( deep ) {
      -        if ( window.$ === jQuery ) {
      -            window.$ = _$;
      -        }
      -
      -        if ( deep && window.jQuery === jQuery ) {
      -            window.jQuery = _jQuery;
      -        }
      -
      -        return jQuery;
      -    },
      -
      -    // Is the DOM ready to be used? Set to true once it occurs.
      -    isReady: false,
      -
      -    // A counter to track how many items to wait for before
      -    // the ready event fires. See #6781
      -    readyWait: 1,
      -
      -    // Hold (or release) the ready event
      -    holdReady: function( hold ) {
      -        if ( hold ) {
      -            jQuery.readyWait++;
      -        } else {
      -            jQuery.ready( true );
      -        }
      -    },
      -
      -    // Handle when the DOM is ready
      -    ready: function( wait ) {
      -
      -        // Abort if there are pending holds or we're already ready
      -        if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
      -            return;
      -        }
      -
      -        // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
      -        if ( !document.body ) {
      -            return setTimeout( jQuery.ready );
      -        }
      -
      -        // Remember that the DOM is ready
      -        jQuery.isReady = true;
      -
      -        // If a normal DOM Ready event fired, decrement, and wait if need be
      -        if ( wait !== true && --jQuery.readyWait > 0 ) {
      -            return;
      -        }
      -
      -        // If there are functions bound, to execute
      -        readyList.resolveWith( document, [ jQuery ] );
      -
      -        // Trigger any bound ready events
      -        if ( jQuery.fn.trigger ) {
      -            jQuery( document ).trigger("ready").off("ready");
      -        }
      -    },
      -
      -    // See test/unit/core.js for details concerning isFunction.
      -    // Since version 1.3, DOM methods and functions like alert
      -    // aren't supported. They return false on IE (#2968).
      -    isFunction: function( obj ) {
      -        return jQuery.type(obj) === "function";
      -    },
      -
      -    isArray: Array.isArray || function( obj ) {
      -        return jQuery.type(obj) === "array";
      -    },
      -
      -    isWindow: function( obj ) {
      -        return obj != null && obj == obj.window;
      -    },
      -
      -    isNumeric: function( obj ) {
      -        return !isNaN( parseFloat(obj) ) && isFinite( obj );
      -    },
      -
      -    type: function( obj ) {
      -        if ( obj == null ) {
      -            return String( obj );
      -        }
      -        return typeof obj === "object" || typeof obj === "function" ?
      -            class2type[ core_toString.call(obj) ] || "object" :
      -            typeof obj;
      -    },
      -
      -    isPlainObject: function( obj ) {
      -        // Must be an Object.
      -        // Because of IE, we also have to check the presence of the constructor property.
      -        // Make sure that DOM nodes and window objects don't pass through, as well
      -        if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
      -            return false;
      -        }
      -
      -        try {
      -            // Not own constructor property must be Object
      -            if ( obj.constructor &&
      -                !core_hasOwn.call(obj, "constructor") &&
      -                !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
      -                return false;
      -            }
      -        } catch ( e ) {
      -            // IE8,9 Will throw exceptions on certain host objects #9897
      -            return false;
      -        }
      -
      -        // Own properties are enumerated firstly, so to speed up,
      -        // if last one is own, then all properties are own.
      -
      -        var key;
      -        for ( key in obj ) {}
      -
      -        return key === undefined || core_hasOwn.call( obj, key );
      -    },
      -
      -    isEmptyObject: function( obj ) {
      -        var name;
      -        for ( name in obj ) {
      -            return false;
      -        }
      -        return true;
      -    },
      -
      -    error: function( msg ) {
      -        throw new Error( msg );
      -    },
      -
      -    // data: string of html
      -    // context (optional): If specified, the fragment will be created in this context, defaults to document
      -    // keepScripts (optional): If true, will include scripts passed in the html string
      -    parseHTML: function( data, context, keepScripts ) {
      -        if ( !data || typeof data !== "string" ) {
      -            return null;
      -        }
      -        if ( typeof context === "boolean" ) {
      -            keepScripts = context;
      -            context = false;
      -        }
      -        context = context || document;
      -
      -        var parsed = rsingleTag.exec( data ),
      -            scripts = !keepScripts && [];
      -
      -        // Single tag
      -        if ( parsed ) {
      -            return [ context.createElement( parsed[1] ) ];
      -        }
      -
      -        parsed = jQuery.buildFragment( [ data ], context, scripts );
      -        if ( scripts ) {
      -            jQuery( scripts ).remove();
      -        }
      -        return jQuery.merge( [], parsed.childNodes );
      -    },
      -
      -    parseJSON: function( data ) {
      -        // Attempt to parse using the native JSON parser first
      -        if ( window.JSON && window.JSON.parse ) {
      -            return window.JSON.parse( data );
      -        }
      -
      -        if ( data === null ) {
      -            return data;
      -        }
      -
      -        if ( typeof data === "string" ) {
      -
      -            // Make sure leading/trailing whitespace is removed (IE can't handle it)
      -            data = jQuery.trim( data );
      -
      -            if ( data ) {
      -                // Make sure the incoming data is actual JSON
      -                // Logic borrowed from http://json.org/json2.js
      -                if ( rvalidchars.test( data.replace( rvalidescape, "@" )
      -                    .replace( rvalidtokens, "]" )
      -                    .replace( rvalidbraces, "")) ) {
      -
      -                    return ( new Function( "return " + data ) )();
      -                }
      -            }
      -        }
      -
      -        jQuery.error( "Invalid JSON: " + data );
      -    },
      -
      -    // Cross-browser xml parsing
      -    parseXML: function( data ) {
      -        var xml, tmp;
      -        if ( !data || typeof data !== "string" ) {
      -            return null;
      -        }
      -        try {
      -            if ( window.DOMParser ) { // Standard
      -                tmp = new DOMParser();
      -                xml = tmp.parseFromString( data , "text/xml" );
      -            } else { // IE
      -                xml = new ActiveXObject( "Microsoft.XMLDOM" );
      -                xml.async = "false";
      -                xml.loadXML( data );
      -            }
      -        } catch( e ) {
      -            xml = undefined;
      -        }
      -        if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
      -            jQuery.error( "Invalid XML: " + data );
      -        }
      -        return xml;
      -    },
      -
      -    noop: function() {},
      -
      -    // Evaluates a script in a global context
      -    // Workarounds based on findings by Jim Driscoll
      -    // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
      -    globalEval: function( data ) {
      -        if ( data && jQuery.trim( data ) ) {
      -            // We use execScript on Internet Explorer
      -            // We use an anonymous function so that context is window
      -            // rather than jQuery in Firefox
      -            ( window.execScript || function( data ) {
      -                window[ "eval" ].call( window, data );
      -            } )( data );
      -        }
      -    },
      -
      -    // Convert dashed to camelCase; used by the css and data modules
      -    // Microsoft forgot to hump their vendor prefix (#9572)
      -    camelCase: function( string ) {
      -        return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -    },
      -
      -    nodeName: function( elem, name ) {
      -        return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
      -    },
      -
      -    // args is for internal usage only
      -    each: function( obj, callback, args ) {
      -        var value,
      -            i = 0,
      -            length = obj.length,
      -            isArray = isArraylike( obj );
      -
      -        if ( args ) {
      -            if ( isArray ) {
      -                for ( ; i < length; i++ ) {
      -                    value = callback.apply( obj[ i ], args );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            } else {
      -                for ( i in obj ) {
      -                    value = callback.apply( obj[ i ], args );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            }
      -
      -        // A special, fast, case for the most common use of each
      -        } else {
      -            if ( isArray ) {
      -                for ( ; i < length; i++ ) {
      -                    value = callback.call( obj[ i ], i, obj[ i ] );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            } else {
      -                for ( i in obj ) {
      -                    value = callback.call( obj[ i ], i, obj[ i ] );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            }
      -        }
      -
      -        return obj;
      -    },
      -
      -    // Use native String.trim function wherever possible
      -    trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
      -        function( text ) {
      -            return text == null ?
      -                "" :
      -                core_trim.call( text );
      -        } :
      -
      -        // Otherwise use our own trimming functionality
      -        function( text ) {
      -            return text == null ?
      -                "" :
      -                ( text + "" ).replace( rtrim, "" );
      -        },
      -
      -    // results is for internal usage only
      -    makeArray: function( arr, results ) {
      -        var ret = results || [];
      -
      -        if ( arr != null ) {
      -            if ( isArraylike( Object(arr) ) ) {
      -                jQuery.merge( ret,
      -                    typeof arr === "string" ?
      -                    [ arr ] : arr
      -                );
      -            } else {
      -                core_push.call( ret, arr );
      -            }
      -        }
      -
      -        return ret;
      -    },
      -
      -    inArray: function( elem, arr, i ) {
      -        var len;
      -
      -        if ( arr ) {
      -            if ( core_indexOf ) {
      -                return core_indexOf.call( arr, elem, i );
      -            }
      -
      -            len = arr.length;
      -            i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
      -
      -            for ( ; i < len; i++ ) {
      -                // Skip accessing in sparse arrays
      -                if ( i in arr && arr[ i ] === elem ) {
      -                    return i;
      -                }
      -            }
      -        }
      -
      -        return -1;
      -    },
      -
      -    merge: function( first, second ) {
      -        var l = second.length,
      -            i = first.length,
      -            j = 0;
      -
      -        if ( typeof l === "number" ) {
      -            for ( ; j < l; j++ ) {
      -                first[ i++ ] = second[ j ];
      -            }
      -        } else {
      -            while ( second[j] !== undefined ) {
      -                first[ i++ ] = second[ j++ ];
      -            }
      -        }
      -
      -        first.length = i;
      -
      -        return first;
      -    },
      -
      -    grep: function( elems, callback, inv ) {
      -        var retVal,
      -            ret = [],
      -            i = 0,
      -            length = elems.length;
      -        inv = !!inv;
      -
      -        // Go through the array, only saving the items
      -        // that pass the validator function
      -        for ( ; i < length; i++ ) {
      -            retVal = !!callback( elems[ i ], i );
      -            if ( inv !== retVal ) {
      -                ret.push( elems[ i ] );
      -            }
      -        }
      -
      -        return ret;
      -    },
      -
      -    // arg is for internal usage only
      -    map: function( elems, callback, arg ) {
      -        var value,
      -            i = 0,
      -            length = elems.length,
      -            isArray = isArraylike( elems ),
      -            ret = [];
      -
      -        // Go through the array, translating each of the items to their
      -        if ( isArray ) {
      -            for ( ; i < length; i++ ) {
      -                value = callback( elems[ i ], i, arg );
      -
      -                if ( value != null ) {
      -                    ret[ ret.length ] = value;
      -                }
      -            }
      -
      -        // Go through every key on the object,
      -        } else {
      -            for ( i in elems ) {
      -                value = callback( elems[ i ], i, arg );
      -
      -                if ( value != null ) {
      -                    ret[ ret.length ] = value;
      -                }
      -            }
      -        }
      -
      -        // Flatten any nested arrays
      -        return core_concat.apply( [], ret );
      -    },
      -
      -    // A global GUID counter for objects
      -    guid: 1,
      -
      -    // Bind a function to a context, optionally partially applying any
      -    // arguments.
      -    proxy: function( fn, context ) {
      -        var args, proxy, tmp;
      -
      -        if ( typeof context === "string" ) {
      -            tmp = fn[ context ];
      -            context = fn;
      -            fn = tmp;
      -        }
      -
      -        // Quick check to determine if target is callable, in the spec
      -        // this throws a TypeError, but we will just return undefined.
      -        if ( !jQuery.isFunction( fn ) ) {
      -            return undefined;
      -        }
      -
      -        // Simulated bind
      -        args = core_slice.call( arguments, 2 );
      -        proxy = function() {
      -            return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
      -        };
      -
      -        // Set the guid of unique handler to the same of original handler, so it can be removed
      -        proxy.guid = fn.guid = fn.guid || jQuery.guid++;
      -
      -        return proxy;
      -    },
      -
      -    // Multifunctional method to get and set values of a collection
      -    // The value/s can optionally be executed if it's a function
      -    access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
      -        var i = 0,
      -            length = elems.length,
      -            bulk = key == null;
      -
      -        // Sets many values
      -        if ( jQuery.type( key ) === "object" ) {
      -            chainable = true;
      -            for ( i in key ) {
      -                jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
      -            }
      -
      -        // Sets one value
      -        } else if ( value !== undefined ) {
      -            chainable = true;
      -
      -            if ( !jQuery.isFunction( value ) ) {
      -                raw = true;
      -            }
      -
      -            if ( bulk ) {
      -                // Bulk operations run against the entire set
      -                if ( raw ) {
      -                    fn.call( elems, value );
      -                    fn = null;
      -
      -                // ...except when executing function values
      -                } else {
      -                    bulk = fn;
      -                    fn = function( elem, key, value ) {
      -                        return bulk.call( jQuery( elem ), value );
      -                    };
      -                }
      -            }
      -
      -            if ( fn ) {
      -                for ( ; i < length; i++ ) {
      -                    fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
      -                }
      -            }
      -        }
      -
      -        return chainable ?
      -            elems :
      -
      -            // Gets
      -            bulk ?
      -                fn.call( elems ) :
      -                length ? fn( elems[0], key ) : emptyGet;
      -    },
      -
      -    now: function() {
      -        return ( new Date() ).getTime();
      -    }
      -});
      -
      -jQuery.ready.promise = function( obj ) {
      -    if ( !readyList ) {
      -
      -        readyList = jQuery.Deferred();
      -
      -        // Catch cases where $(document).ready() is called after the browser event has already occurred.
      -        // we once tried to use readyState "interactive" here, but it caused issues like the one
      -        // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
      -        if ( document.readyState === "complete" ) {
      -            // Handle it asynchronously to allow scripts the opportunity to delay ready
      -            setTimeout( jQuery.ready );
      -
      -        // Standards-based browsers support DOMContentLoaded
      -        } else if ( document.addEventListener ) {
      -            // Use the handy event callback
      -            document.addEventListener( "DOMContentLoaded", completed, false );
      -
      -            // A fallback to window.onload, that will always work
      -            window.addEventListener( "load", completed, false );
      -
      -        // If IE event model is used
      -        } else {
      -            // Ensure firing before onload, maybe late but safe also for iframes
      -            document.attachEvent( "onreadystatechange", completed );
      -
      -            // A fallback to window.onload, that will always work
      -            window.attachEvent( "onload", completed );
      -
      -            // If IE and not a frame
      -            // continually check to see if the document is ready
      -            var top = false;
      -
      -            try {
      -                top = window.frameElement == null && document.documentElement;
      -            } catch(e) {}
      -
      -            if ( top && top.doScroll ) {
      -                (function doScrollCheck() {
      -                    if ( !jQuery.isReady ) {
      -
      -                        try {
      -                            // Use the trick by Diego Perini
      -                            // http://javascript.nwbox.com/IEContentLoaded/
      -                            top.doScroll("left");
      -                        } catch(e) {
      -                            return setTimeout( doScrollCheck, 50 );
      -                        }
      -
      -                        // detach all dom ready events
      -                        detach();
      -
      -                        // and execute any waiting functions
      -                        jQuery.ready();
      -                    }
      -                })();
      -            }
      -        }
      -    }
      -    return readyList.promise( obj );
      -};
      -
      -// Populate the class2type map
      -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
      -    class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -});
      -
      -function isArraylike( obj ) {
      -    var length = obj.length,
      -        type = jQuery.type( obj );
      -
      -    if ( jQuery.isWindow( obj ) ) {
      -        return false;
      -    }
      -
      -    if ( obj.nodeType === 1 && length ) {
      -        return true;
      -    }
      -
      -    return type === "array" || type !== "function" &&
      -        ( length === 0 ||
      -        typeof length === "number" && length > 0 && ( length - 1 ) in obj );
      -}
      -
      -// All jQuery objects should point back to these
      -rootjQuery = jQuery(document);
      -// String to Object options format cache
      -var optionsCache = {};
      -
      -// Convert String-formatted options into Object-formatted ones and store in cache
      -function createOptions( options ) {
      -    var object = optionsCache[ options ] = {};
      -    jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
      -        object[ flag ] = true;
      -    });
      -    return object;
      -}
      -
      -/*
      - * Create a callback list using the following parameters:
      - *
      - *  options: an optional list of space-separated options that will change how
      - *          the callback list behaves or a more traditional option object
      - *
      - * By default a callback list will act like an event callback list and can be
      - * "fired" multiple times.
      - *
      - * Possible options:
      - *
      - *  once:           will ensure the callback list can only be fired once (like a Deferred)
      - *
      - *  memory:         will keep track of previous values and will call any callback added
      - *                  after the list has been fired right away with the latest "memorized"
      - *                  values (like a Deferred)
      - *
      - *  unique:         will ensure a callback can only be added once (no duplicate in the list)
      - *
      - *  stopOnFalse:    interrupt callings when a callback returns false
      - *
      - */
      -jQuery.Callbacks = function( options ) {
      -
      -    // Convert options from String-formatted to Object-formatted if needed
      -    // (we check in cache first)
      -    options = typeof options === "string" ?
      -        ( optionsCache[ options ] || createOptions( options ) ) :
      -        jQuery.extend( {}, options );
      -
      -    var // Flag to know if list is currently firing
      -        firing,
      -        // Last fire value (for non-forgettable lists)
      -        memory,
      -        // Flag to know if list was already fired
      -        fired,
      -        // End of the loop when firing
      -        firingLength,
      -        // Index of currently firing callback (modified by remove if needed)
      -        firingIndex,
      -        // First callback to fire (used internally by add and fireWith)
      -        firingStart,
      -        // Actual callback list
      -        list = [],
      -        // Stack of fire calls for repeatable lists
      -        stack = !options.once && [],
      -        // Fire callbacks
      -        fire = function( data ) {
      -            memory = options.memory && data;
      -            fired = true;
      -            firingIndex = firingStart || 0;
      -            firingStart = 0;
      -            firingLength = list.length;
      -            firing = true;
      -            for ( ; list && firingIndex < firingLength; firingIndex++ ) {
      -                if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
      -                    memory = false; // To prevent further calls using add
      -                    break;
      -                }
      -            }
      -            firing = false;
      -            if ( list ) {
      -                if ( stack ) {
      -                    if ( stack.length ) {
      -                        fire( stack.shift() );
      -                    }
      -                } else if ( memory ) {
      -                    list = [];
      -                } else {
      -                    self.disable();
      -                }
      -            }
      -        },
      -        // Actual Callbacks object
      -        self = {
      -            // Add a callback or a collection of callbacks to the list
      -            add: function() {
      -                if ( list ) {
      -                    // First, we save the current length
      -                    var start = list.length;
      -                    (function add( args ) {
      -                        jQuery.each( args, function( _, arg ) {
      -                            var type = jQuery.type( arg );
      -                            if ( type === "function" ) {
      -                                if ( !options.unique || !self.has( arg ) ) {
      -                                    list.push( arg );
      -                                }
      -                            } else if ( arg && arg.length && type !== "string" ) {
      -                                // Inspect recursively
      -                                add( arg );
      -                            }
      -                        });
      -                    })( arguments );
      -                    // Do we need to add the callbacks to the
      -                    // current firing batch?
      -                    if ( firing ) {
      -                        firingLength = list.length;
      -                    // With memory, if we're not firing then
      -                    // we should call right away
      -                    } else if ( memory ) {
      -                        firingStart = start;
      -                        fire( memory );
      -                    }
      -                }
      -                return this;
      -            },
      -            // Remove a callback from the list
      -            remove: function() {
      -                if ( list ) {
      -                    jQuery.each( arguments, function( _, arg ) {
      -                        var index;
      -                        while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
      -                            list.splice( index, 1 );
      -                            // Handle firing indexes
      -                            if ( firing ) {
      -                                if ( index <= firingLength ) {
      -                                    firingLength--;
      -                                }
      -                                if ( index <= firingIndex ) {
      -                                    firingIndex--;
      -                                }
      -                            }
      -                        }
      -                    });
      -                }
      -                return this;
      -            },
      -            // Check if a given callback is in the list.
      -            // If no argument is given, return whether or not list has callbacks attached.
      -            has: function( fn ) {
      -                return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
      -            },
      -            // Remove all callbacks from the list
      -            empty: function() {
      -                list = [];
      -                return this;
      -            },
      -            // Have the list do nothing anymore
      -            disable: function() {
      -                list = stack = memory = undefined;
      -                return this;
      -            },
      -            // Is it disabled?
      -            disabled: function() {
      -                return !list;
      -            },
      -            // Lock the list in its current state
      -            lock: function() {
      -                stack = undefined;
      -                if ( !memory ) {
      -                    self.disable();
      -                }
      -                return this;
      -            },
      -            // Is it locked?
      -            locked: function() {
      -                return !stack;
      -            },
      -            // Call all callbacks with the given context and arguments
      -            fireWith: function( context, args ) {
      -                args = args || [];
      -                args = [ context, args.slice ? args.slice() : args ];
      -                if ( list && ( !fired || stack ) ) {
      -                    if ( firing ) {
      -                        stack.push( args );
      -                    } else {
      -                        fire( args );
      -                    }
      -                }
      -                return this;
      -            },
      -            // Call all the callbacks with the given arguments
      -            fire: function() {
      -                self.fireWith( this, arguments );
      -                return this;
      -            },
      -            // To know if the callbacks have already been called at least once
      -            fired: function() {
      -                return !!fired;
      -            }
      -        };
      -
      -    return self;
      -};
      -jQuery.extend({
      -
      -    Deferred: function( func ) {
      -        var tuples = [
      -                // action, add listener, listener list, final state
      -                [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
      -                [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
      -                [ "notify", "progress", jQuery.Callbacks("memory") ]
      -            ],
      -            state = "pending",
      -            promise = {
      -                state: function() {
      -                    return state;
      -                },
      -                always: function() {
      -                    deferred.done( arguments ).fail( arguments );
      -                    return this;
      -                },
      -                then: function( /* fnDone, fnFail, fnProgress */ ) {
      -                    var fns = arguments;
      -                    return jQuery.Deferred(function( newDefer ) {
      -                        jQuery.each( tuples, function( i, tuple ) {
      -                            var action = tuple[ 0 ],
      -                                fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
      -                            // deferred[ done | fail | progress ] for forwarding actions to newDefer
      -                            deferred[ tuple[1] ](function() {
      -                                var returned = fn && fn.apply( this, arguments );
      -                                if ( returned && jQuery.isFunction( returned.promise ) ) {
      -                                    returned.promise()
      -                                        .done( newDefer.resolve )
      -                                        .fail( newDefer.reject )
      -                                        .progress( newDefer.notify );
      -                                } else {
      -                                    newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
      -                                }
      -                            });
      -                        });
      -                        fns = null;
      -                    }).promise();
      -                },
      -                // Get a promise for this deferred
      -                // If obj is provided, the promise aspect is added to the object
      -                promise: function( obj ) {
      -                    return obj != null ? jQuery.extend( obj, promise ) : promise;
      -                }
      -            },
      -            deferred = {};
      -
      -        // Keep pipe for back-compat
      -        promise.pipe = promise.then;
      -
      -        // Add list-specific methods
      -        jQuery.each( tuples, function( i, tuple ) {
      -            var list = tuple[ 2 ],
      -                stateString = tuple[ 3 ];
      -
      -            // promise[ done | fail | progress ] = list.add
      -            promise[ tuple[1] ] = list.add;
      -
      -            // Handle state
      -            if ( stateString ) {
      -                list.add(function() {
      -                    // state = [ resolved | rejected ]
      -                    state = stateString;
      -
      -                // [ reject_list | resolve_list ].disable; progress_list.lock
      -                }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
      -            }
      -
      -            // deferred[ resolve | reject | notify ]
      -            deferred[ tuple[0] ] = function() {
      -                deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
      -                return this;
      -            };
      -            deferred[ tuple[0] + "With" ] = list.fireWith;
      -        });
      -
      -        // Make the deferred a promise
      -        promise.promise( deferred );
      -
      -        // Call given func if any
      -        if ( func ) {
      -            func.call( deferred, deferred );
      -        }
      -
      -        // All done!
      -        return deferred;
      -    },
      -
      -    // Deferred helper
      -    when: function( subordinate /* , ..., subordinateN */ ) {
      -        var i = 0,
      -            resolveValues = core_slice.call( arguments ),
      -            length = resolveValues.length,
      -
      -            // the count of uncompleted subordinates
      -            remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
      -
      -            // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
      -            deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
      -
      -            // Update function for both resolve and progress values
      -            updateFunc = function( i, contexts, values ) {
      -                return function( value ) {
      -                    contexts[ i ] = this;
      -                    values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
      -                    if( values === progressValues ) {
      -                        deferred.notifyWith( contexts, values );
      -                    } else if ( !( --remaining ) ) {
      -                        deferred.resolveWith( contexts, values );
      -                    }
      -                };
      -            },
      -
      -            progressValues, progressContexts, resolveContexts;
      -
      -        // add listeners to Deferred subordinates; treat others as resolved
      -        if ( length > 1 ) {
      -            progressValues = new Array( length );
      -            progressContexts = new Array( length );
      -            resolveContexts = new Array( length );
      -            for ( ; i < length; i++ ) {
      -                if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
      -                    resolveValues[ i ].promise()
      -                        .done( updateFunc( i, resolveContexts, resolveValues ) )
      -                        .fail( deferred.reject )
      -                        .progress( updateFunc( i, progressContexts, progressValues ) );
      -                } else {
      -                    --remaining;
      -                }
      -            }
      -        }
      -
      -        // if we're not waiting on anything, resolve the master
      -        if ( !remaining ) {
      -            deferred.resolveWith( resolveContexts, resolveValues );
      -        }
      -
      -        return deferred.promise();
      -    }
      -});
      -jQuery.support = (function() {
      -
      -    var support, all, a,
      -        input, select, fragment,
      -        opt, eventName, isSupported, i,
      -        div = document.createElement("div");
      -
      -    // Setup
      -    div.setAttribute( "className", "t" );
      -    div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
      -
      -    // Support tests won't run in some limited or non-browser environments
      -    all = div.getElementsByTagName("*");
      -    a = div.getElementsByTagName("a")[ 0 ];
      -    if ( !all || !a || !all.length ) {
      -        return {};
      -    }
      -
      -    // First batch of tests
      -    select = document.createElement("select");
      -    opt = select.appendChild( document.createElement("option") );
      -    input = div.getElementsByTagName("input")[ 0 ];
      -
      -    a.style.cssText = "top:1px;float:left;opacity:.5";
      -    support = {
      -        // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
      -        getSetAttribute: div.className !== "t",
      -
      -        // IE strips leading whitespace when .innerHTML is used
      -        leadingWhitespace: div.firstChild.nodeType === 3,
      -
      -        // Make sure that tbody elements aren't automatically inserted
      -        // IE will insert them into empty tables
      -        tbody: !div.getElementsByTagName("tbody").length,
      -
      -        // Make sure that link elements get serialized correctly by innerHTML
      -        // This requires a wrapper element in IE
      -        htmlSerialize: !!div.getElementsByTagName("link").length,
      -
      -        // Get the style information from getAttribute
      -        // (IE uses .cssText instead)
      -        style: /top/.test( a.getAttribute("style") ),
      -
      -        // Make sure that URLs aren't manipulated
      -        // (IE normalizes it by default)
      -        hrefNormalized: a.getAttribute("href") === "/a",
      -
      -        // Make sure that element opacity exists
      -        // (IE uses filter instead)
      -        // Use a regex to work around a WebKit issue. See #5145
      -        opacity: /^0.5/.test( a.style.opacity ),
      -
      -        // Verify style float existence
      -        // (IE uses styleFloat instead of cssFloat)
      -        cssFloat: !!a.style.cssFloat,
      -
      -        // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
      -        checkOn: !!input.value,
      -
      -        // Make sure that a selected-by-default option has a working selected property.
      -        // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
      -        optSelected: opt.selected,
      -
      -        // Tests for enctype support on a form (#6743)
      -        enctype: !!document.createElement("form").enctype,
      -
      -        // Makes sure cloning an html5 element does not cause problems
      -        // Where outerHTML is undefined, this still works
      -        html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
      -
      -        // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
      -        boxModel: document.compatMode === "CSS1Compat",
      -
      -        // Will be defined later
      -        deleteExpando: true,
      -        noCloneEvent: true,
      -        inlineBlockNeedsLayout: false,
      -        shrinkWrapBlocks: false,
      -        reliableMarginRight: true,
      -        boxSizingReliable: true,
      -        pixelPosition: false
      -    };
      -
      -    // Make sure checked status is properly cloned
      -    input.checked = true;
      -    support.noCloneChecked = input.cloneNode( true ).checked;
      -
      -    // Make sure that the options inside disabled selects aren't marked as disabled
      -    // (WebKit marks them as disabled)
      -    select.disabled = true;
      -    support.optDisabled = !opt.disabled;
      -
      -    // Support: IE<9
      -    try {
      -        delete div.test;
      -    } catch( e ) {
      -        support.deleteExpando = false;
      -    }
      -
      -    // Check if we can trust getAttribute("value")
      -    input = document.createElement("input");
      -    input.setAttribute( "value", "" );
      -    support.input = input.getAttribute( "value" ) === "";
      -
      -    // Check if an input maintains its value after becoming a radio
      -    input.value = "t";
      -    input.setAttribute( "type", "radio" );
      -    support.radioValue = input.value === "t";
      -
      -    // #11217 - WebKit loses check when the name is after the checked attribute
      -    input.setAttribute( "checked", "t" );
      -    input.setAttribute( "name", "t" );
      -
      -    fragment = document.createDocumentFragment();
      -    fragment.appendChild( input );
      -
      -    // Check if a disconnected checkbox will retain its checked
      -    // value of true after appended to the DOM (IE6/7)
      -    support.appendChecked = input.checked;
      -
      -    // WebKit doesn't clone checked state correctly in fragments
      -    support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
      -
      -    // Support: IE<9
      -    // Opera does not clone events (and typeof div.attachEvent === undefined).
      -    // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
      -    if ( div.attachEvent ) {
      -        div.attachEvent( "onclick", function() {
      -            support.noCloneEvent = false;
      -        });
      -
      -        div.cloneNode( true ).click();
      -    }
      -
      -    // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
      -    // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php
      -    for ( i in { submit: true, change: true, focusin: true }) {
      -        div.setAttribute( eventName = "on" + i, "t" );
      -
      -        support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
      -    }
      -
      -    div.style.backgroundClip = "content-box";
      -    div.cloneNode( true ).style.backgroundClip = "";
      -    support.clearCloneStyle = div.style.backgroundClip === "content-box";
      -
      -    // Run tests that need a body at doc ready
      -    jQuery(function() {
      -        var container, marginDiv, tds,
      -            divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
      -            body = document.getElementsByTagName("body")[0];
      -
      -        if ( !body ) {
      -            // Return for frameset docs that don't have a body
      -            return;
      -        }
      -
      -        container = document.createElement("div");
      -        container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
      -
      -        body.appendChild( container ).appendChild( div );
      -
      -        // Support: IE8
      -        // Check if table cells still have offsetWidth/Height when they are set
      -        // to display:none and there are still other visible table cells in a
      -        // table row; if so, offsetWidth/Height are not reliable for use when
      -        // determining if an element has been hidden directly using
      -        // display:none (it is still safe to use offsets if a parent element is
      -        // hidden; don safety goggles and see bug #4512 for more information).
      -        div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
      -        tds = div.getElementsByTagName("td");
      -        tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
      -        isSupported = ( tds[ 0 ].offsetHeight === 0 );
      -
      -        tds[ 0 ].style.display = "";
      -        tds[ 1 ].style.display = "none";
      -
      -        // Support: IE8
      -        // Check if empty table cells still have offsetWidth/Height
      -        support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
      -
      -        // Check box-sizing and margin behavior
      -        div.innerHTML = "";
      -        div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
      -        support.boxSizing = ( div.offsetWidth === 4 );
      -        support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
      -
      -        // Use window.getComputedStyle because jsdom on node.js will break without it.
      -        if ( window.getComputedStyle ) {
      -            support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
      -            support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
      -
      -            // Check if div with explicit width and no margin-right incorrectly
      -            // gets computed margin-right based on width of container. (#3333)
      -            // Fails in WebKit before Feb 2011 nightlies
      -            // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -            marginDiv = div.appendChild( document.createElement("div") );
      -            marginDiv.style.cssText = div.style.cssText = divReset;
      -            marginDiv.style.marginRight = marginDiv.style.width = "0";
      -            div.style.width = "1px";
      -
      -            support.reliableMarginRight =
      -                !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
      -        }
      -
      -        if ( typeof div.style.zoom !== core_strundefined ) {
      -            // Support: IE<8
      -            // Check if natively block-level elements act like inline-block
      -            // elements when setting their display to 'inline' and giving
      -            // them layout
      -            div.innerHTML = "";
      -            div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
      -            support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
      -
      -            // Support: IE6
      -            // Check if elements with layout shrink-wrap their children
      -            div.style.display = "block";
      -            div.innerHTML = "<div></div>";
      -            div.firstChild.style.width = "5px";
      -            support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
      -
      -            if ( support.inlineBlockNeedsLayout ) {
      -                // Prevent IE 6 from affecting layout for positioned elements #11048
      -                // Prevent IE from shrinking the body in IE 7 mode #12869
      -                // Support: IE<8
      -                body.style.zoom = 1;
      -            }
      -        }
      -
      -        body.removeChild( container );
      -
      -        // Null elements to avoid leaks in IE
      -        container = div = tds = marginDiv = null;
      -    });
      -
      -    // Null elements to avoid leaks in IE
      -    all = select = fragment = opt = a = input = null;
      -
      -    return support;
      -})();
      -
      -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
      -    rmultiDash = /([A-Z])/g;
      -
      -function internalData( elem, name, data, pvt /* Internal Use Only */ ){
      -    if ( !jQuery.acceptData( elem ) ) {
      -        return;
      -    }
      -
      -    var thisCache, ret,
      -        internalKey = jQuery.expando,
      -        getByName = typeof name === "string",
      -
      -        // We have to handle DOM nodes and JS objects differently because IE6-7
      -        // can't GC object references properly across the DOM-JS boundary
      -        isNode = elem.nodeType,
      -
      -        // Only DOM nodes need the global jQuery cache; JS object data is
      -        // attached directly to the object so GC can occur automatically
      -        cache = isNode ? jQuery.cache : elem,
      -
      -        // Only defining an ID for JS objects if its cache already exists allows
      -        // the code to shortcut on the same path as a DOM node with no cache
      -        id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
      -
      -    // Avoid doing any more work than we need to when trying to get data on an
      -    // object that has no data at all
      -    if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
      -        return;
      -    }
      -
      -    if ( !id ) {
      -        // Only DOM nodes need a new unique ID for each element since their data
      -        // ends up in the global cache
      -        if ( isNode ) {
      -            elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++;
      -        } else {
      -            id = internalKey;
      -        }
      -    }
      -
      -    if ( !cache[ id ] ) {
      -        cache[ id ] = {};
      -
      -        // Avoids exposing jQuery metadata on plain JS objects when the object
      -        // is serialized using JSON.stringify
      -        if ( !isNode ) {
      -            cache[ id ].toJSON = jQuery.noop;
      -        }
      -    }
      -
      -    // An object can be passed to jQuery.data instead of a key/value pair; this gets
      -    // shallow copied over onto the existing cache
      -    if ( typeof name === "object" || typeof name === "function" ) {
      -        if ( pvt ) {
      -            cache[ id ] = jQuery.extend( cache[ id ], name );
      -        } else {
      -            cache[ id ].data = jQuery.extend( cache[ id ].data, name );
      -        }
      -    }
      -
      -    thisCache = cache[ id ];
      -
      -    // jQuery data() is stored in a separate object inside the object's internal data
      -    // cache in order to avoid key collisions between internal data and user-defined
      -    // data.
      -    if ( !pvt ) {
      -        if ( !thisCache.data ) {
      -            thisCache.data = {};
      -        }
      -
      -        thisCache = thisCache.data;
      -    }
      -
      -    if ( data !== undefined ) {
      -        thisCache[ jQuery.camelCase( name ) ] = data;
      -    }
      -
      -    // Check for both converted-to-camel and non-converted data property names
      -    // If a data property was specified
      -    if ( getByName ) {
      -
      -        // First Try to find as-is property data
      -        ret = thisCache[ name ];
      -
      -        // Test for null|undefined property data
      -        if ( ret == null ) {
      -
      -            // Try to find the camelCased property
      -            ret = thisCache[ jQuery.camelCase( name ) ];
      -        }
      -    } else {
      -        ret = thisCache;
      -    }
      -
      -    return ret;
      -}
      -
      -function internalRemoveData( elem, name, pvt ) {
      -    if ( !jQuery.acceptData( elem ) ) {
      -        return;
      -    }
      -
      -    var i, l, thisCache,
      -        isNode = elem.nodeType,
      -
      -        // See jQuery.data for more information
      -        cache = isNode ? jQuery.cache : elem,
      -        id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
      -
      -    // If there is already no cache entry for this object, there is no
      -    // purpose in continuing
      -    if ( !cache[ id ] ) {
      -        return;
      -    }
      -
      -    if ( name ) {
      -
      -        thisCache = pvt ? cache[ id ] : cache[ id ].data;
      -
      -        if ( thisCache ) {
      -
      -            // Support array or space separated string names for data keys
      -            if ( !jQuery.isArray( name ) ) {
      -
      -                // try the string as a key before any manipulation
      -                if ( name in thisCache ) {
      -                    name = [ name ];
      -                } else {
      -
      -                    // split the camel cased version by spaces unless a key with the spaces exists
      -                    name = jQuery.camelCase( name );
      -                    if ( name in thisCache ) {
      -                        name = [ name ];
      -                    } else {
      -                        name = name.split(" ");
      -                    }
      -                }
      -            } else {
      -                // If "name" is an array of keys...
      -                // When data is initially created, via ("key", "val") signature,
      -                // keys will be converted to camelCase.
      -                // Since there is no way to tell _how_ a key was added, remove
      -                // both plain key and camelCase key. #12786
      -                // This will only penalize the array argument path.
      -                name = name.concat( jQuery.map( name, jQuery.camelCase ) );
      -            }
      -
      -            for ( i = 0, l = name.length; i < l; i++ ) {
      -                delete thisCache[ name[i] ];
      -            }
      -
      -            // If there is no data left in the cache, we want to continue
      -            // and let the cache object itself get destroyed
      -            if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
      -                return;
      -            }
      -        }
      -    }
      -
      -    // See jQuery.data for more information
      -    if ( !pvt ) {
      -        delete cache[ id ].data;
      -
      -        // Don't destroy the parent cache unless the internal data object
      -        // had been the only thing left in it
      -        if ( !isEmptyDataObject( cache[ id ] ) ) {
      -            return;
      -        }
      -    }
      -
      -    // Destroy the cache
      -    if ( isNode ) {
      -        jQuery.cleanData( [ elem ], true );
      -
      -    // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
      -    } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
      -        delete cache[ id ];
      -
      -    // When all else fails, null
      -    } else {
      -        cache[ id ] = null;
      -    }
      -}
      -
      -jQuery.extend({
      -    cache: {},
      -
      -    // Unique for each copy of jQuery on the page
      -    // Non-digits removed to match rinlinejQuery
      -    expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
      -
      -    // The following elements throw uncatchable exceptions if you
      -    // attempt to add expando properties to them.
      -    noData: {
      -        "embed": true,
      -        // Ban all objects except for Flash (which handle expandos)
      -        "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
      -        "applet": true
      -    },
      -
      -    hasData: function( elem ) {
      -        elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
      -        return !!elem && !isEmptyDataObject( elem );
      -    },
      -
      -    data: function( elem, name, data ) {
      -        return internalData( elem, name, data );
      -    },
      -
      -    removeData: function( elem, name ) {
      -        return internalRemoveData( elem, name );
      -    },
      -
      -    // For internal use only.
      -    _data: function( elem, name, data ) {
      -        return internalData( elem, name, data, true );
      -    },
      -
      -    _removeData: function( elem, name ) {
      -        return internalRemoveData( elem, name, true );
      -    },
      -
      -    // A method for determining if a DOM node can handle the data expando
      -    acceptData: function( elem ) {
      -        // Do not set data on non-element because it will not be cleared (#8335).
      -        if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
      -            return false;
      -        }
      -
      -        var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
      -
      -        // nodes accept data unless otherwise specified; rejection can be conditional
      -        return !noData || noData !== true && elem.getAttribute("classid") === noData;
      -    }
      -});
      -
      -jQuery.fn.extend({
      -    data: function( key, value ) {
      -        var attrs, name,
      -            elem = this[0],
      -            i = 0,
      -            data = null;
      -
      -        // Gets all values
      -        if ( key === undefined ) {
      -            if ( this.length ) {
      -                data = jQuery.data( elem );
      -
      -                if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
      -                    attrs = elem.attributes;
      -                    for ( ; i < attrs.length; i++ ) {
      -                        name = attrs[i].name;
      -
      -                        if ( !name.indexOf( "data-" ) ) {
      -                            name = jQuery.camelCase( name.slice(5) );
      -
      -                            dataAttr( elem, name, data[ name ] );
      -                        }
      -                    }
      -                    jQuery._data( elem, "parsedAttrs", true );
      -                }
      -            }
      -
      -            return data;
      -        }
      -
      -        // Sets multiple values
      -        if ( typeof key === "object" ) {
      -            return this.each(function() {
      -                jQuery.data( this, key );
      -            });
      -        }
      -
      -        return jQuery.access( this, function( value ) {
      -
      -            if ( value === undefined ) {
      -                // Try to fetch any internally stored data first
      -                return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
      -            }
      -
      -            this.each(function() {
      -                jQuery.data( this, key, value );
      -            });
      -        }, null, value, arguments.length > 1, null, true );
      -    },
      -
      -    removeData: function( key ) {
      -        return this.each(function() {
      -            jQuery.removeData( this, key );
      -        });
      -    }
      -});
      -
      -function dataAttr( elem, key, data ) {
      -    // If nothing was found internally, try to fetch any
      -    // data from the HTML5 data-* attribute
      -    if ( data === undefined && elem.nodeType === 1 ) {
      -
      -        var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
      -
      -        data = elem.getAttribute( name );
      -
      -        if ( typeof data === "string" ) {
      -            try {
      -                data = data === "true" ? true :
      -                    data === "false" ? false :
      -                    data === "null" ? null :
      -                    // Only convert to a number if it doesn't change the string
      -                    +data + "" === data ? +data :
      -                    rbrace.test( data ) ? jQuery.parseJSON( data ) :
      -                        data;
      -            } catch( e ) {}
      -
      -            // Make sure we set the data so it isn't changed later
      -            jQuery.data( elem, key, data );
      -
      -        } else {
      -            data = undefined;
      -        }
      -    }
      -
      -    return data;
      -}
      -
      -// checks a cache object for emptiness
      -function isEmptyDataObject( obj ) {
      -    var name;
      -    for ( name in obj ) {
      -
      -        // if the public data object is empty, the private is still empty
      -        if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
      -            continue;
      -        }
      -        if ( name !== "toJSON" ) {
      -            return false;
      -        }
      -    }
      -
      -    return true;
      -}
      -jQuery.extend({
      -    queue: function( elem, type, data ) {
      -        var queue;
      -
      -        if ( elem ) {
      -            type = ( type || "fx" ) + "queue";
      -            queue = jQuery._data( elem, type );
      -
      -            // Speed up dequeue by getting out quickly if this is just a lookup
      -            if ( data ) {
      -                if ( !queue || jQuery.isArray(data) ) {
      -                    queue = jQuery._data( elem, type, jQuery.makeArray(data) );
      -                } else {
      -                    queue.push( data );
      -                }
      -            }
      -            return queue || [];
      -        }
      -    },
      -
      -    dequeue: function( elem, type ) {
      -        type = type || "fx";
      -
      -        var queue = jQuery.queue( elem, type ),
      -            startLength = queue.length,
      -            fn = queue.shift(),
      -            hooks = jQuery._queueHooks( elem, type ),
      -            next = function() {
      -                jQuery.dequeue( elem, type );
      -            };
      -
      -        // If the fx queue is dequeued, always remove the progress sentinel
      -        if ( fn === "inprogress" ) {
      -            fn = queue.shift();
      -            startLength--;
      -        }
      -
      -        hooks.cur = fn;
      -        if ( fn ) {
      -
      -            // Add a progress sentinel to prevent the fx queue from being
      -            // automatically dequeued
      -            if ( type === "fx" ) {
      -                queue.unshift( "inprogress" );
      -            }
      -
      -            // clear up the last queue stop function
      -            delete hooks.stop;
      -            fn.call( elem, next, hooks );
      -        }
      -
      -        if ( !startLength && hooks ) {
      -            hooks.empty.fire();
      -        }
      -    },
      -
      -    // not intended for public consumption - generates a queueHooks object, or returns the current one
      -    _queueHooks: function( elem, type ) {
      -        var key = type + "queueHooks";
      -        return jQuery._data( elem, key ) || jQuery._data( elem, key, {
      -            empty: jQuery.Callbacks("once memory").add(function() {
      -                jQuery._removeData( elem, type + "queue" );
      -                jQuery._removeData( elem, key );
      -            })
      -        });
      -    }
      -});
      -
      -jQuery.fn.extend({
      -    queue: function( type, data ) {
      -        var setter = 2;
      -
      -        if ( typeof type !== "string" ) {
      -            data = type;
      -            type = "fx";
      -            setter--;
      -        }
      -
      -        if ( arguments.length < setter ) {
      -            return jQuery.queue( this[0], type );
      -        }
      -
      -        return data === undefined ?
      -            this :
      -            this.each(function() {
      -                var queue = jQuery.queue( this, type, data );
      -
      -                // ensure a hooks for this queue
      -                jQuery._queueHooks( this, type );
      -
      -                if ( type === "fx" && queue[0] !== "inprogress" ) {
      -                    jQuery.dequeue( this, type );
      -                }
      -            });
      -    },
      -    dequeue: function( type ) {
      -        return this.each(function() {
      -            jQuery.dequeue( this, type );
      -        });
      -    },
      -    // Based off of the plugin by Clint Helfers, with permission.
      -    // http://blindsignals.com/index.php/2009/07/jquery-delay/
      -    delay: function( time, type ) {
      -        time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
      -        type = type || "fx";
      -
      -        return this.queue( type, function( next, hooks ) {
      -            var timeout = setTimeout( next, time );
      -            hooks.stop = function() {
      -                clearTimeout( timeout );
      -            };
      -        });
      -    },
      -    clearQueue: function( type ) {
      -        return this.queue( type || "fx", [] );
      -    },
      -    // Get a promise resolved when queues of a certain type
      -    // are emptied (fx is the type by default)
      -    promise: function( type, obj ) {
      -        var tmp,
      -            count = 1,
      -            defer = jQuery.Deferred(),
      -            elements = this,
      -            i = this.length,
      -            resolve = function() {
      -                if ( !( --count ) ) {
      -                    defer.resolveWith( elements, [ elements ] );
      -                }
      -            };
      -
      -        if ( typeof type !== "string" ) {
      -            obj = type;
      -            type = undefined;
      -        }
      -        type = type || "fx";
      -
      -        while( i-- ) {
      -            tmp = jQuery._data( elements[ i ], type + "queueHooks" );
      -            if ( tmp && tmp.empty ) {
      -                count++;
      -                tmp.empty.add( resolve );
      -            }
      -        }
      -        resolve();
      -        return defer.promise( obj );
      -    }
      -});
      -var nodeHook, boolHook,
      -    rclass = /[\t\r\n]/g,
      -    rreturn = /\r/g,
      -    rfocusable = /^(?:input|select|textarea|button|object)$/i,
      -    rclickable = /^(?:a|area)$/i,
      -    rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
      -    ruseDefault = /^(?:checked|selected)$/i,
      -    getSetAttribute = jQuery.support.getSetAttribute,
      -    getSetInput = jQuery.support.input;
      -
      -jQuery.fn.extend({
      -    attr: function( name, value ) {
      -        return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
      -    },
      -
      -    removeAttr: function( name ) {
      -        return this.each(function() {
      -            jQuery.removeAttr( this, name );
      -        });
      -    },
      -
      -    prop: function( name, value ) {
      -        return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
      -    },
      -
      -    removeProp: function( name ) {
      -        name = jQuery.propFix[ name ] || name;
      -        return this.each(function() {
      -            // try/catch handles cases where IE balks (such as removing a property on window)
      -            try {
      -                this[ name ] = undefined;
      -                delete this[ name ];
      -            } catch( e ) {}
      -        });
      -    },
      -
      -    addClass: function( value ) {
      -        var classes, elem, cur, clazz, j,
      -            i = 0,
      -            len = this.length,
      -            proceed = typeof value === "string" && value;
      -
      -        if ( jQuery.isFunction( value ) ) {
      -            return this.each(function( j ) {
      -                jQuery( this ).addClass( value.call( this, j, this.className ) );
      -            });
      -        }
      -
      -        if ( proceed ) {
      -            // The disjunction here is for better compressibility (see removeClass)
      -            classes = ( value || "" ).match( core_rnotwhite ) || [];
      -
      -            for ( ; i < len; i++ ) {
      -                elem = this[ i ];
      -                cur = elem.nodeType === 1 && ( elem.className ?
      -                    ( " " + elem.className + " " ).replace( rclass, " " ) :
      -                    " "
      -                );
      -
      -                if ( cur ) {
      -                    j = 0;
      -                    while ( (clazz = classes[j++]) ) {
      -                        if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
      -                            cur += clazz + " ";
      -                        }
      -                    }
      -                    elem.className = jQuery.trim( cur );
      -
      -                }
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    removeClass: function( value ) {
      -        var classes, elem, cur, clazz, j,
      -            i = 0,
      -            len = this.length,
      -            proceed = arguments.length === 0 || typeof value === "string" && value;
      -
      -        if ( jQuery.isFunction( value ) ) {
      -            return this.each(function( j ) {
      -                jQuery( this ).removeClass( value.call( this, j, this.className ) );
      -            });
      -        }
      -        if ( proceed ) {
      -            classes = ( value || "" ).match( core_rnotwhite ) || [];
      -
      -            for ( ; i < len; i++ ) {
      -                elem = this[ i ];
      -                // This expression is here for better compressibility (see addClass)
      -                cur = elem.nodeType === 1 && ( elem.className ?
      -                    ( " " + elem.className + " " ).replace( rclass, " " ) :
      -                    ""
      -                );
      -
      -                if ( cur ) {
      -                    j = 0;
      -                    while ( (clazz = classes[j++]) ) {
      -                        // Remove *all* instances
      -                        while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
      -                            cur = cur.replace( " " + clazz + " ", " " );
      -                        }
      -                    }
      -                    elem.className = value ? jQuery.trim( cur ) : "";
      -                }
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    toggleClass: function( value, stateVal ) {
      -        var type = typeof value,
      -            isBool = typeof stateVal === "boolean";
      -
      -        if ( jQuery.isFunction( value ) ) {
      -            return this.each(function( i ) {
      -                jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
      -            });
      -        }
      -
      -        return this.each(function() {
      -            if ( type === "string" ) {
      -                // toggle individual class names
      -                var className,
      -                    i = 0,
      -                    self = jQuery( this ),
      -                    state = stateVal,
      -                    classNames = value.match( core_rnotwhite ) || [];
      -
      -                while ( (className = classNames[ i++ ]) ) {
      -                    // check each className given, space separated list
      -                    state = isBool ? state : !self.hasClass( className );
      -                    self[ state ? "addClass" : "removeClass" ]( className );
      -                }
      -
      -            // Toggle whole class name
      -            } else if ( type === core_strundefined || type === "boolean" ) {
      -                if ( this.className ) {
      -                    // store className if set
      -                    jQuery._data( this, "__className__", this.className );
      -                }
      -
      -                // If the element has a class name or if we're passed "false",
      -                // then remove the whole classname (if there was one, the above saved it).
      -                // Otherwise bring back whatever was previously saved (if anything),
      -                // falling back to the empty string if nothing was stored.
      -                this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
      -            }
      -        });
      -    },
      -
      -    hasClass: function( selector ) {
      -        var className = " " + selector + " ",
      -            i = 0,
      -            l = this.length;
      -        for ( ; i < l; i++ ) {
      -            if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
      -                return true;
      -            }
      -        }
      -
      -        return false;
      -    },
      -
      -    val: function( value ) {
      -        var ret, hooks, isFunction,
      -            elem = this[0];
      -
      -        if ( !arguments.length ) {
      -            if ( elem ) {
      -                hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
      -
      -                if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
      -                    return ret;
      -                }
      -
      -                ret = elem.value;
      -
      -                return typeof ret === "string" ?
      -                    // handle most common string cases
      -                    ret.replace(rreturn, "") :
      -                    // handle cases where value is null/undef or number
      -                    ret == null ? "" : ret;
      -            }
      -
      -            return;
      -        }
      -
      -        isFunction = jQuery.isFunction( value );
      -
      -        return this.each(function( i ) {
      -            var val,
      -                self = jQuery(this);
      -
      -            if ( this.nodeType !== 1 ) {
      -                return;
      -            }
      -
      -            if ( isFunction ) {
      -                val = value.call( this, i, self.val() );
      -            } else {
      -                val = value;
      -            }
      -
      -            // Treat null/undefined as ""; convert numbers to string
      -            if ( val == null ) {
      -                val = "";
      -            } else if ( typeof val === "number" ) {
      -                val += "";
      -            } else if ( jQuery.isArray( val ) ) {
      -                val = jQuery.map(val, function ( value ) {
      -                    return value == null ? "" : value + "";
      -                });
      -            }
      -
      -            hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
      -
      -            // If set returns undefined, fall back to normal setting
      -            if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
      -                this.value = val;
      -            }
      -        });
      -    }
      -});
      -
      -jQuery.extend({
      -    valHooks: {
      -        option: {
      -            get: function( elem ) {
      -                // attributes.value is undefined in Blackberry 4.7 but
      -                // uses .value. See #6932
      -                var val = elem.attributes.value;
      -                return !val || val.specified ? elem.value : elem.text;
      -            }
      -        },
      -        select: {
      -            get: function( elem ) {
      -                var value, option,
      -                    options = elem.options,
      -                    index = elem.selectedIndex,
      -                    one = elem.type === "select-one" || index < 0,
      -                    values = one ? null : [],
      -                    max = one ? index + 1 : options.length,
      -                    i = index < 0 ?
      -                        max :
      -                        one ? index : 0;
      -
      -                // Loop through all the selected options
      -                for ( ; i < max; i++ ) {
      -                    option = options[ i ];
      -
      -                    // oldIE doesn't update selected after form reset (#2551)
      -                    if ( ( option.selected || i === index ) &&
      -                            // Don't return options that are disabled or in a disabled optgroup
      -                            ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
      -                            ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
      -
      -                        // Get the specific value for the option
      -                        value = jQuery( option ).val();
      -
      -                        // We don't need an array for one selects
      -                        if ( one ) {
      -                            return value;
      -                        }
      -
      -                        // Multi-Selects return an array
      -                        values.push( value );
      -                    }
      -                }
      -
      -                return values;
      -            },
      -
      -            set: function( elem, value ) {
      -                var values = jQuery.makeArray( value );
      -
      -                jQuery(elem).find("option").each(function() {
      -                    this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
      -                });
      -
      -                if ( !values.length ) {
      -                    elem.selectedIndex = -1;
      -                }
      -                return values;
      -            }
      -        }
      -    },
      -
      -    attr: function( elem, name, value ) {
      -        var hooks, notxml, ret,
      -            nType = elem.nodeType;
      -
      -        // don't get/set attributes on text, comment and attribute nodes
      -        if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -            return;
      -        }
      -
      -        // Fallback to prop when attributes are not supported
      -        if ( typeof elem.getAttribute === core_strundefined ) {
      -            return jQuery.prop( elem, name, value );
      -        }
      -
      -        notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
      -
      -        // All attributes are lowercase
      -        // Grab necessary hook if one is defined
      -        if ( notxml ) {
      -            name = name.toLowerCase();
      -            hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
      -        }
      -
      -        if ( value !== undefined ) {
      -
      -            if ( value === null ) {
      -                jQuery.removeAttr( elem, name );
      -
      -            } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
      -                return ret;
      -
      -            } else {
      -                elem.setAttribute( name, value + "" );
      -                return value;
      -            }
      -
      -        } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
      -            return ret;
      -
      -        } else {
      -
      -            // In IE9+, Flash objects don't have .getAttribute (#12945)
      -            // Support: IE9+
      -            if ( typeof elem.getAttribute !== core_strundefined ) {
      -                ret =  elem.getAttribute( name );
      -            }
      -
      -            // Non-existent attributes return null, we normalize to undefined
      -            return ret == null ?
      -                undefined :
      -                ret;
      -        }
      -    },
      -
      -    removeAttr: function( elem, value ) {
      -        var name, propName,
      -            i = 0,
      -            attrNames = value && value.match( core_rnotwhite );
      -
      -        if ( attrNames && elem.nodeType === 1 ) {
      -            while ( (name = attrNames[i++]) ) {
      -                propName = jQuery.propFix[ name ] || name;
      -
      -                // Boolean attributes get special treatment (#10870)
      -                if ( rboolean.test( name ) ) {
      -                    // Set corresponding property to false for boolean attributes
      -                    // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8
      -                    if ( !getSetAttribute && ruseDefault.test( name ) ) {
      -                        elem[ jQuery.camelCase( "default-" + name ) ] =
      -                            elem[ propName ] = false;
      -                    } else {
      -                        elem[ propName ] = false;
      -                    }
      -
      -                // See #9699 for explanation of this approach (setting first, then removal)
      -                } else {
      -                    jQuery.attr( elem, name, "" );
      -                }
      -
      -                elem.removeAttribute( getSetAttribute ? name : propName );
      -            }
      -        }
      -    },
      -
      -    attrHooks: {
      -        type: {
      -            set: function( elem, value ) {
      -                if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
      -                    // Setting the type on a radio button after the value resets the value in IE6-9
      -                    // Reset value to default in case type is set after value during creation
      -                    var val = elem.value;
      -                    elem.setAttribute( "type", value );
      -                    if ( val ) {
      -                        elem.value = val;
      -                    }
      -                    return value;
      -                }
      -            }
      -        }
      -    },
      -
      -    propFix: {
      -        tabindex: "tabIndex",
      -        readonly: "readOnly",
      -        "for": "htmlFor",
      -        "class": "className",
      -        maxlength: "maxLength",
      -        cellspacing: "cellSpacing",
      -        cellpadding: "cellPadding",
      -        rowspan: "rowSpan",
      -        colspan: "colSpan",
      -        usemap: "useMap",
      -        frameborder: "frameBorder",
      -        contenteditable: "contentEditable"
      -    },
      -
      -    prop: function( elem, name, value ) {
      -        var ret, hooks, notxml,
      -            nType = elem.nodeType;
      -
      -        // don't get/set properties on text, comment and attribute nodes
      -        if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -            return;
      -        }
      -
      -        notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
      -
      -        if ( notxml ) {
      -            // Fix name and attach hooks
      -            name = jQuery.propFix[ name ] || name;
      -            hooks = jQuery.propHooks[ name ];
      -        }
      -
      -        if ( value !== undefined ) {
      -            if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
      -                return ret;
      -
      -            } else {
      -                return ( elem[ name ] = value );
      -            }
      -
      -        } else {
      -            if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
      -                return ret;
      -
      -            } else {
      -                return elem[ name ];
      -            }
      -        }
      -    },
      -
      -    propHooks: {
      -        tabIndex: {
      -            get: function( elem ) {
      -                // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
      -                // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
      -                var attributeNode = elem.getAttributeNode("tabindex");
      -
      -                return attributeNode && attributeNode.specified ?
      -                    parseInt( attributeNode.value, 10 ) :
      -                    rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
      -                        0 :
      -                        undefined;
      -            }
      -        }
      -    }
      -});
      -
      -// Hook for boolean attributes
      -boolHook = {
      -    get: function( elem, name ) {
      -        var
      -            // Use .prop to determine if this attribute is understood as boolean
      -            prop = jQuery.prop( elem, name ),
      -
      -            // Fetch it accordingly
      -            attr = typeof prop === "boolean" && elem.getAttribute( name ),
      -            detail = typeof prop === "boolean" ?
      -
      -                getSetInput && getSetAttribute ?
      -                    attr != null :
      -                    // oldIE fabricates an empty string for missing boolean attributes
      -                    // and conflates checked/selected into attroperties
      -                    ruseDefault.test( name ) ?
      -                        elem[ jQuery.camelCase( "default-" + name ) ] :
      -                        !!attr :
      -
      -                // fetch an attribute node for properties not recognized as boolean
      -                elem.getAttributeNode( name );
      -
      -        return detail && detail.value !== false ?
      -            name.toLowerCase() :
      -            undefined;
      -    },
      -    set: function( elem, value, name ) {
      -        if ( value === false ) {
      -            // Remove boolean attributes when set to false
      -            jQuery.removeAttr( elem, name );
      -        } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
      -            // IE<8 needs the *property* name
      -            elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
      -
      -        // Use defaultChecked and defaultSelected for oldIE
      -        } else {
      -            elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
      -        }
      -
      -        return name;
      -    }
      -};
      -
      -// fix oldIE value attroperty
      -if ( !getSetInput || !getSetAttribute ) {
      -    jQuery.attrHooks.value = {
      -        get: function( elem, name ) {
      -            var ret = elem.getAttributeNode( name );
      -            return jQuery.nodeName( elem, "input" ) ?
      -
      -                // Ignore the value *property* by using defaultValue
      -                elem.defaultValue :
      -
      -                ret && ret.specified ? ret.value : undefined;
      -        },
      -        set: function( elem, value, name ) {
      -            if ( jQuery.nodeName( elem, "input" ) ) {
      -                // Does not return so that setAttribute is also used
      -                elem.defaultValue = value;
      -            } else {
      -                // Use nodeHook if defined (#1954); otherwise setAttribute is fine
      -                return nodeHook && nodeHook.set( elem, value, name );
      -            }
      -        }
      -    };
      -}
      -
      -// IE6/7 do not support getting/setting some attributes with get/setAttribute
      -if ( !getSetAttribute ) {
      -
      -    // Use this for any attribute in IE6/7
      -    // This fixes almost every IE6/7 issue
      -    nodeHook = jQuery.valHooks.button = {
      -        get: function( elem, name ) {
      -            var ret = elem.getAttributeNode( name );
      -            return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ?
      -                ret.value :
      -                undefined;
      -        },
      -        set: function( elem, value, name ) {
      -            // Set the existing or create a new attribute node
      -            var ret = elem.getAttributeNode( name );
      -            if ( !ret ) {
      -                elem.setAttributeNode(
      -                    (ret = elem.ownerDocument.createAttribute( name ))
      -                );
      -            }
      -
      -            ret.value = value += "";
      -
      -            // Break association with cloned elements by also using setAttribute (#9646)
      -            return name === "value" || value === elem.getAttribute( name ) ?
      -                value :
      -                undefined;
      -        }
      -    };
      -
      -    // Set contenteditable to false on removals(#10429)
      -    // Setting to empty string throws an error as an invalid value
      -    jQuery.attrHooks.contenteditable = {
      -        get: nodeHook.get,
      -        set: function( elem, value, name ) {
      -            nodeHook.set( elem, value === "" ? false : value, name );
      -        }
      -    };
      -
      -    // Set width and height to auto instead of 0 on empty string( Bug #8150 )
      -    // This is for removals
      -    jQuery.each([ "width", "height" ], function( i, name ) {
      -        jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
      -            set: function( elem, value ) {
      -                if ( value === "" ) {
      -                    elem.setAttribute( name, "auto" );
      -                    return value;
      -                }
      -            }
      -        });
      -    });
      -}
      -
      -
      -// Some attributes require a special call on IE
      -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
      -if ( !jQuery.support.hrefNormalized ) {
      -    jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
      -        jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
      -            get: function( elem ) {
      -                var ret = elem.getAttribute( name, 2 );
      -                return ret == null ? undefined : ret;
      -            }
      -        });
      -    });
      -
      -    // href/src property should get the full normalized URL (#10299/#12915)
      -    jQuery.each([ "href", "src" ], function( i, name ) {
      -        jQuery.propHooks[ name ] = {
      -            get: function( elem ) {
      -                return elem.getAttribute( name, 4 );
      -            }
      -        };
      -    });
      -}
      -
      -if ( !jQuery.support.style ) {
      -    jQuery.attrHooks.style = {
      -        get: function( elem ) {
      -            // Return undefined in the case of empty string
      -            // Note: IE uppercases css property names, but if we were to .toLowerCase()
      -            // .cssText, that would destroy case senstitivity in URL's, like in "background"
      -            return elem.style.cssText || undefined;
      -        },
      -        set: function( elem, value ) {
      -            return ( elem.style.cssText = value + "" );
      -        }
      -    };
      -}
      -
      -// Safari mis-reports the default selected property of an option
      -// Accessing the parent's selectedIndex property fixes it
      -if ( !jQuery.support.optSelected ) {
      -    jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
      -        get: function( elem ) {
      -            var parent = elem.parentNode;
      -
      -            if ( parent ) {
      -                parent.selectedIndex;
      -
      -                // Make sure that it also works with optgroups, see #5701
      -                if ( parent.parentNode ) {
      -                    parent.parentNode.selectedIndex;
      -                }
      -            }
      -            return null;
      -        }
      -    });
      -}
      -
      -// IE6/7 call enctype encoding
      -if ( !jQuery.support.enctype ) {
      -    jQuery.propFix.enctype = "encoding";
      -}
      -
      -// Radios and checkboxes getter/setter
      -if ( !jQuery.support.checkOn ) {
      -    jQuery.each([ "radio", "checkbox" ], function() {
      -        jQuery.valHooks[ this ] = {
      -            get: function( elem ) {
      -                // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
      -                return elem.getAttribute("value") === null ? "on" : elem.value;
      -            }
      -        };
      -    });
      -}
      -jQuery.each([ "radio", "checkbox" ], function() {
      -    jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
      -        set: function( elem, value ) {
      -            if ( jQuery.isArray( value ) ) {
      -                return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
      -            }
      -        }
      -    });
      -});
      -var rformElems = /^(?:input|select|textarea)$/i,
      -    rkeyEvent = /^key/,
      -    rmouseEvent = /^(?:mouse|contextmenu)|click/,
      -    rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
      -    rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
      -
      -function returnTrue() {
      -    return true;
      -}
      -
      -function returnFalse() {
      -    return false;
      -}
      -
      -/*
      - * Helper functions for managing events -- not part of the public interface.
      - * Props to Dean Edwards' addEvent library for many of the ideas.
      - */
      -jQuery.event = {
      -
      -    global: {},
      -
      -    add: function( elem, types, handler, data, selector ) {
      -        var tmp, events, t, handleObjIn,
      -            special, eventHandle, handleObj,
      -            handlers, type, namespaces, origType,
      -            elemData = jQuery._data( elem );
      -
      -        // Don't attach events to noData or text/comment nodes (but allow plain objects)
      -        if ( !elemData ) {
      -            return;
      -        }
      -
      -        // Caller can pass in an object of custom data in lieu of the handler
      -        if ( handler.handler ) {
      -            handleObjIn = handler;
      -            handler = handleObjIn.handler;
      -            selector = handleObjIn.selector;
      -        }
      -
      -        // Make sure that the handler has a unique ID, used to find/remove it later
      -        if ( !handler.guid ) {
      -            handler.guid = jQuery.guid++;
      -        }
      -
      -        // Init the element's event structure and main handler, if this is the first
      -        if ( !(events = elemData.events) ) {
      -            events = elemData.events = {};
      -        }
      -        if ( !(eventHandle = elemData.handle) ) {
      -            eventHandle = elemData.handle = function( e ) {
      -                // Discard the second event of a jQuery.event.trigger() and
      -                // when an event is called after a page has unloaded
      -                return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
      -                    jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
      -                    undefined;
      -            };
      -            // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
      -            eventHandle.elem = elem;
      -        }
      -
      -        // Handle multiple events separated by a space
      -        // jQuery(...).bind("mouseover mouseout", fn);
      -        types = ( types || "" ).match( core_rnotwhite ) || [""];
      -        t = types.length;
      -        while ( t-- ) {
      -            tmp = rtypenamespace.exec( types[t] ) || [];
      -            type = origType = tmp[1];
      -            namespaces = ( tmp[2] || "" ).split( "." ).sort();
      -
      -            // If event changes its type, use the special event handlers for the changed type
      -            special = jQuery.event.special[ type ] || {};
      -
      -            // If selector defined, determine special event api type, otherwise given type
      -            type = ( selector ? special.delegateType : special.bindType ) || type;
      -
      -            // Update special based on newly reset type
      -            special = jQuery.event.special[ type ] || {};
      -
      -            // handleObj is passed to all event handlers
      -            handleObj = jQuery.extend({
      -                type: type,
      -                origType: origType,
      -                data: data,
      -                handler: handler,
      -                guid: handler.guid,
      -                selector: selector,
      -                needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
      -                namespace: namespaces.join(".")
      -            }, handleObjIn );
      -
      -            // Init the event handler queue if we're the first
      -            if ( !(handlers = events[ type ]) ) {
      -                handlers = events[ type ] = [];
      -                handlers.delegateCount = 0;
      -
      -                // Only use addEventListener/attachEvent if the special events handler returns false
      -                if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
      -                    // Bind the global event handler to the element
      -                    if ( elem.addEventListener ) {
      -                        elem.addEventListener( type, eventHandle, false );
      -
      -                    } else if ( elem.attachEvent ) {
      -                        elem.attachEvent( "on" + type, eventHandle );
      -                    }
      -                }
      -            }
      -
      -            if ( special.add ) {
      -                special.add.call( elem, handleObj );
      -
      -                if ( !handleObj.handler.guid ) {
      -                    handleObj.handler.guid = handler.guid;
      -                }
      -            }
      -
      -            // Add to the element's handler list, delegates in front
      -            if ( selector ) {
      -                handlers.splice( handlers.delegateCount++, 0, handleObj );
      -            } else {
      -                handlers.push( handleObj );
      -            }
      -
      -            // Keep track of which events have ever been used, for event optimization
      -            jQuery.event.global[ type ] = true;
      -        }
      -
      -        // Nullify elem to prevent memory leaks in IE
      -        elem = null;
      -    },
      -
      -    // Detach an event or set of events from an element
      -    remove: function( elem, types, handler, selector, mappedTypes ) {
      -        var j, handleObj, tmp,
      -            origCount, t, events,
      -            special, handlers, type,
      -            namespaces, origType,
      -            elemData = jQuery.hasData( elem ) && jQuery._data( elem );
      -
      -        if ( !elemData || !(events = elemData.events) ) {
      -            return;
      -        }
      -
      -        // Once for each type.namespace in types; type may be omitted
      -        types = ( types || "" ).match( core_rnotwhite ) || [""];
      -        t = types.length;
      -        while ( t-- ) {
      -            tmp = rtypenamespace.exec( types[t] ) || [];
      -            type = origType = tmp[1];
      -            namespaces = ( tmp[2] || "" ).split( "." ).sort();
      -
      -            // Unbind all events (on this namespace, if provided) for the element
      -            if ( !type ) {
      -                for ( type in events ) {
      -                    jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
      -                }
      -                continue;
      -            }
      -
      -            special = jQuery.event.special[ type ] || {};
      -            type = ( selector ? special.delegateType : special.bindType ) || type;
      -            handlers = events[ type ] || [];
      -            tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
      -
      -            // Remove matching events
      -            origCount = j = handlers.length;
      -            while ( j-- ) {
      -                handleObj = handlers[ j ];
      -
      -                if ( ( mappedTypes || origType === handleObj.origType ) &&
      -                    ( !handler || handler.guid === handleObj.guid ) &&
      -                    ( !tmp || tmp.test( handleObj.namespace ) ) &&
      -                    ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
      -                    handlers.splice( j, 1 );
      -
      -                    if ( handleObj.selector ) {
      -                        handlers.delegateCount--;
      -                    }
      -                    if ( special.remove ) {
      -                        special.remove.call( elem, handleObj );
      -                    }
      -                }
      -            }
      -
      -            // Remove generic event handler if we removed something and no more handlers exist
      -            // (avoids potential for endless recursion during removal of special event handlers)
      -            if ( origCount && !handlers.length ) {
      -                if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
      -                    jQuery.removeEvent( elem, type, elemData.handle );
      -                }
      -
      -                delete events[ type ];
      -            }
      -        }
      -
      -        // Remove the expando if it's no longer used
      -        if ( jQuery.isEmptyObject( events ) ) {
      -            delete elemData.handle;
      -
      -            // removeData also checks for emptiness and clears the expando if empty
      -            // so use it instead of delete
      -            jQuery._removeData( elem, "events" );
      -        }
      -    },
      -
      -    trigger: function( event, data, elem, onlyHandlers ) {
      -        var handle, ontype, cur,
      -            bubbleType, special, tmp, i,
      -            eventPath = [ elem || document ],
      -            type = core_hasOwn.call( event, "type" ) ? event.type : event,
      -            namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
      -
      -        cur = tmp = elem = elem || document;
      -
      -        // Don't do events on text and comment nodes
      -        if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
      -            return;
      -        }
      -
      -        // focus/blur morphs to focusin/out; ensure we're not firing them right now
      -        if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
      -            return;
      -        }
      -
      -        if ( type.indexOf(".") >= 0 ) {
      -            // Namespaced trigger; create a regexp to match event type in handle()
      -            namespaces = type.split(".");
      -            type = namespaces.shift();
      -            namespaces.sort();
      -        }
      -        ontype = type.indexOf(":") < 0 && "on" + type;
      -
      -        // Caller can pass in a jQuery.Event object, Object, or just an event type string
      -        event = event[ jQuery.expando ] ?
      -            event :
      -            new jQuery.Event( type, typeof event === "object" && event );
      -
      -        event.isTrigger = true;
      -        event.namespace = namespaces.join(".");
      -        event.namespace_re = event.namespace ?
      -            new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
      -            null;
      -
      -        // Clean up the event in case it is being reused
      -        event.result = undefined;
      -        if ( !event.target ) {
      -            event.target = elem;
      -        }
      -
      -        // Clone any incoming data and prepend the event, creating the handler arg list
      -        data = data == null ?
      -            [ event ] :
      -            jQuery.makeArray( data, [ event ] );
      -
      -        // Allow special events to draw outside the lines
      -        special = jQuery.event.special[ type ] || {};
      -        if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
      -            return;
      -        }
      -
      -        // Determine event propagation path in advance, per W3C events spec (#9951)
      -        // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
      -        if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
      -
      -            bubbleType = special.delegateType || type;
      -            if ( !rfocusMorph.test( bubbleType + type ) ) {
      -                cur = cur.parentNode;
      -            }
      -            for ( ; cur; cur = cur.parentNode ) {
      -                eventPath.push( cur );
      -                tmp = cur;
      -            }
      -
      -            // Only add window if we got to document (e.g., not plain obj or detached DOM)
      -            if ( tmp === (elem.ownerDocument || document) ) {
      -                eventPath.push( tmp.defaultView || tmp.parentWindow || window );
      -            }
      -        }
      -
      -        // Fire handlers on the event path
      -        i = 0;
      -        while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
      -
      -            event.type = i > 1 ?
      -                bubbleType :
      -                special.bindType || type;
      -
      -            // jQuery handler
      -            handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
      -            if ( handle ) {
      -                handle.apply( cur, data );
      -            }
      -
      -            // Native handler
      -            handle = ontype && cur[ ontype ];
      -            if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
      -                event.preventDefault();
      -            }
      -        }
      -        event.type = type;
      -
      -        // If nobody prevented the default action, do it now
      -        if ( !onlyHandlers && !event.isDefaultPrevented() ) {
      -
      -            if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
      -                !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
      -
      -                // Call a native DOM method on the target with the same name name as the event.
      -                // Can't use an .isFunction() check here because IE6/7 fails that test.
      -                // Don't do default actions on window, that's where global variables be (#6170)
      -                if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
      -
      -                    // Don't re-trigger an onFOO event when we call its FOO() method
      -                    tmp = elem[ ontype ];
      -
      -                    if ( tmp ) {
      -                        elem[ ontype ] = null;
      -                    }
      -
      -                    // Prevent re-triggering of the same event, since we already bubbled it above
      -                    jQuery.event.triggered = type;
      -                    try {
      -                        elem[ type ]();
      -                    } catch ( e ) {
      -                        // IE<9 dies on focus/blur to hidden element (#1486,#12518)
      -                        // only reproducible on winXP IE8 native, not IE9 in IE8 mode
      -                    }
      -                    jQuery.event.triggered = undefined;
      -
      -                    if ( tmp ) {
      -                        elem[ ontype ] = tmp;
      -                    }
      -                }
      -            }
      -        }
      -
      -        return event.result;
      -    },
      -
      -    dispatch: function( event ) {
      -
      -        // Make a writable jQuery.Event from the native event object
      -        event = jQuery.event.fix( event );
      -
      -        var i, ret, handleObj, matched, j,
      -            handlerQueue = [],
      -            args = core_slice.call( arguments ),
      -            handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
      -            special = jQuery.event.special[ event.type ] || {};
      -
      -        // Use the fix-ed jQuery.Event rather than the (read-only) native event
      -        args[0] = event;
      -        event.delegateTarget = this;
      -
      -        // Call the preDispatch hook for the mapped type, and let it bail if desired
      -        if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
      -            return;
      -        }
      -
      -        // Determine handlers
      -        handlerQueue = jQuery.event.handlers.call( this, event, handlers );
      -
      -        // Run delegates first; they may want to stop propagation beneath us
      -        i = 0;
      -        while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
      -            event.currentTarget = matched.elem;
      -
      -            j = 0;
      -            while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
      -
      -                // Triggered event must either 1) have no namespace, or
      -                // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
      -                if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
      -
      -                    event.handleObj = handleObj;
      -                    event.data = handleObj.data;
      -
      -                    ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
      -                            .apply( matched.elem, args );
      -
      -                    if ( ret !== undefined ) {
      -                        if ( (event.result = ret) === false ) {
      -                            event.preventDefault();
      -                            event.stopPropagation();
      -                        }
      -                    }
      -                }
      -            }
      -        }
      -
      -        // Call the postDispatch hook for the mapped type
      -        if ( special.postDispatch ) {
      -            special.postDispatch.call( this, event );
      -        }
      -
      -        return event.result;
      -    },
      -
      -    handlers: function( event, handlers ) {
      -        var sel, handleObj, matches, i,
      -            handlerQueue = [],
      -            delegateCount = handlers.delegateCount,
      -            cur = event.target;
      -
      -        // Find delegate handlers
      -        // Black-hole SVG <use> instance trees (#13180)
      -        // Avoid non-left-click bubbling in Firefox (#3861)
      -        if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
      -
      -            for ( ; cur != this; cur = cur.parentNode || this ) {
      -
      -                // Don't check non-elements (#13208)
      -                // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
      -                if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
      -                    matches = [];
      -                    for ( i = 0; i < delegateCount; i++ ) {
      -                        handleObj = handlers[ i ];
      -
      -                        // Don't conflict with Object.prototype properties (#13203)
      -                        sel = handleObj.selector + " ";
      -
      -                        if ( matches[ sel ] === undefined ) {
      -                            matches[ sel ] = handleObj.needsContext ?
      -                                jQuery( sel, this ).index( cur ) >= 0 :
      -                                jQuery.find( sel, this, null, [ cur ] ).length;
      -                        }
      -                        if ( matches[ sel ] ) {
      -                            matches.push( handleObj );
      -                        }
      -                    }
      -                    if ( matches.length ) {
      -                        handlerQueue.push({ elem: cur, handlers: matches });
      -                    }
      -                }
      -            }
      -        }
      -
      -        // Add the remaining (directly-bound) handlers
      -        if ( delegateCount < handlers.length ) {
      -            handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
      -        }
      -
      -        return handlerQueue;
      -    },
      -
      -    fix: function( event ) {
      -        if ( event[ jQuery.expando ] ) {
      -            return event;
      -        }
      -
      -        // Create a writable copy of the event object and normalize some properties
      -        var i, prop, copy,
      -            type = event.type,
      -            originalEvent = event,
      -            fixHook = this.fixHooks[ type ];
      -
      -        if ( !fixHook ) {
      -            this.fixHooks[ type ] = fixHook =
      -                rmouseEvent.test( type ) ? this.mouseHooks :
      -                rkeyEvent.test( type ) ? this.keyHooks :
      -                {};
      -        }
      -        copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
      -
      -        event = new jQuery.Event( originalEvent );
      -
      -        i = copy.length;
      -        while ( i-- ) {
      -            prop = copy[ i ];
      -            event[ prop ] = originalEvent[ prop ];
      -        }
      -
      -        // Support: IE<9
      -        // Fix target property (#1925)
      -        if ( !event.target ) {
      -            event.target = originalEvent.srcElement || document;
      -        }
      -
      -        // Support: Chrome 23+, Safari?
      -        // Target should not be a text node (#504, #13143)
      -        if ( event.target.nodeType === 3 ) {
      -            event.target = event.target.parentNode;
      -        }
      -
      -        // Support: IE<9
      -        // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
      -        event.metaKey = !!event.metaKey;
      -
      -        return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
      -    },
      -
      -    // Includes some event props shared by KeyEvent and MouseEvent
      -    props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
      -
      -    fixHooks: {},
      -
      -    keyHooks: {
      -        props: "char charCode key keyCode".split(" "),
      -        filter: function( event, original ) {
      -
      -            // Add which for key events
      -            if ( event.which == null ) {
      -                event.which = original.charCode != null ? original.charCode : original.keyCode;
      -            }
      -
      -            return event;
      -        }
      -    },
      -
      -    mouseHooks: {
      -        props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
      -        filter: function( event, original ) {
      -            var body, eventDoc, doc,
      -                button = original.button,
      -                fromElement = original.fromElement;
      -
      -            // Calculate pageX/Y if missing and clientX/Y available
      -            if ( event.pageX == null && original.clientX != null ) {
      -                eventDoc = event.target.ownerDocument || document;
      -                doc = eventDoc.documentElement;
      -                body = eventDoc.body;
      -
      -                event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
      -                event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
      -            }
      -
      -            // Add relatedTarget, if necessary
      -            if ( !event.relatedTarget && fromElement ) {
      -                event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
      -            }
      -
      -            // Add which for click: 1 === left; 2 === middle; 3 === right
      -            // Note: button is not normalized, so don't use it
      -            if ( !event.which && button !== undefined ) {
      -                event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
      -            }
      -
      -            return event;
      -        }
      -    },
      -
      -    special: {
      -        load: {
      -            // Prevent triggered image.load events from bubbling to window.load
      -            noBubble: true
      -        },
      -        click: {
      -            // For checkbox, fire native event so checked state will be right
      -            trigger: function() {
      -                if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
      -                    this.click();
      -                    return false;
      -                }
      -            }
      -        },
      -        focus: {
      -            // Fire native event if possible so blur/focus sequence is correct
      -            trigger: function() {
      -                if ( this !== document.activeElement && this.focus ) {
      -                    try {
      -                        this.focus();
      -                        return false;
      -                    } catch ( e ) {
      -                        // Support: IE<9
      -                        // If we error on focus to hidden element (#1486, #12518),
      -                        // let .trigger() run the handlers
      -                    }
      -                }
      -            },
      -            delegateType: "focusin"
      -        },
      -        blur: {
      -            trigger: function() {
      -                if ( this === document.activeElement && this.blur ) {
      -                    this.blur();
      -                    return false;
      -                }
      -            },
      -            delegateType: "focusout"
      -        },
      -
      -        beforeunload: {
      -            postDispatch: function( event ) {
      -
      -                // Even when returnValue equals to undefined Firefox will still show alert
      -                if ( event.result !== undefined ) {
      -                    event.originalEvent.returnValue = event.result;
      -                }
      -            }
      -        }
      -    },
      -
      -    simulate: function( type, elem, event, bubble ) {
      -        // Piggyback on a donor event to simulate a different one.
      -        // Fake originalEvent to avoid donor's stopPropagation, but if the
      -        // simulated event prevents default then we do the same on the donor.
      -        var e = jQuery.extend(
      -            new jQuery.Event(),
      -            event,
      -            { type: type,
      -                isSimulated: true,
      -                originalEvent: {}
      -            }
      -        );
      -        if ( bubble ) {
      -            jQuery.event.trigger( e, null, elem );
      -        } else {
      -            jQuery.event.dispatch.call( elem, e );
      -        }
      -        if ( e.isDefaultPrevented() ) {
      -            event.preventDefault();
      -        }
      -    }
      -};
      -
      -jQuery.removeEvent = document.removeEventListener ?
      -    function( elem, type, handle ) {
      -        if ( elem.removeEventListener ) {
      -            elem.removeEventListener( type, handle, false );
      -        }
      -    } :
      -    function( elem, type, handle ) {
      -        var name = "on" + type;
      -
      -        if ( elem.detachEvent ) {
      -
      -            // #8545, #7054, preventing memory leaks for custom events in IE6-8
      -            // detachEvent needed property on element, by name of that event, to properly expose it to GC
      -            if ( typeof elem[ name ] === core_strundefined ) {
      -                elem[ name ] = null;
      -            }
      -
      -            elem.detachEvent( name, handle );
      -        }
      -    };
      -
      -jQuery.Event = function( src, props ) {
      -    // Allow instantiation without the 'new' keyword
      -    if ( !(this instanceof jQuery.Event) ) {
      -        return new jQuery.Event( src, props );
      -    }
      -
      -    // Event object
      -    if ( src && src.type ) {
      -        this.originalEvent = src;
      -        this.type = src.type;
      -
      -        // Events bubbling up the document may have been marked as prevented
      -        // by a handler lower down the tree; reflect the correct value.
      -        this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
      -            src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
      -
      -    // Event type
      -    } else {
      -        this.type = src;
      -    }
      -
      -    // Put explicitly provided properties onto the event object
      -    if ( props ) {
      -        jQuery.extend( this, props );
      -    }
      -
      -    // Create a timestamp if incoming event doesn't have one
      -    this.timeStamp = src && src.timeStamp || jQuery.now();
      -
      -    // Mark it as fixed
      -    this[ jQuery.expando ] = true;
      -};
      -
      -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
      -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      -jQuery.Event.prototype = {
      -    isDefaultPrevented: returnFalse,
      -    isPropagationStopped: returnFalse,
      -    isImmediatePropagationStopped: returnFalse,
      -
      -    preventDefault: function() {
      -        var e = this.originalEvent;
      -
      -        this.isDefaultPrevented = returnTrue;
      -        if ( !e ) {
      -            return;
      -        }
      -
      -        // If preventDefault exists, run it on the original event
      -        if ( e.preventDefault ) {
      -            e.preventDefault();
      -
      -        // Support: IE
      -        // Otherwise set the returnValue property of the original event to false
      -        } else {
      -            e.returnValue = false;
      -        }
      -    },
      -    stopPropagation: function() {
      -        var e = this.originalEvent;
      -
      -        this.isPropagationStopped = returnTrue;
      -        if ( !e ) {
      -            return;
      -        }
      -        // If stopPropagation exists, run it on the original event
      -        if ( e.stopPropagation ) {
      -            e.stopPropagation();
      -        }
      -
      -        // Support: IE
      -        // Set the cancelBubble property of the original event to true
      -        e.cancelBubble = true;
      -    },
      -    stopImmediatePropagation: function() {
      -        this.isImmediatePropagationStopped = returnTrue;
      -        this.stopPropagation();
      -    }
      -};
      -
      -// Create mouseenter/leave events using mouseover/out and event-time checks
      -jQuery.each({
      -    mouseenter: "mouseover",
      -    mouseleave: "mouseout"
      -}, function( orig, fix ) {
      -    jQuery.event.special[ orig ] = {
      -        delegateType: fix,
      -        bindType: fix,
      -
      -        handle: function( event ) {
      -            var ret,
      -                target = this,
      -                related = event.relatedTarget,
      -                handleObj = event.handleObj;
      -
      -            // For mousenter/leave call the handler if related is outside the target.
      -            // NB: No relatedTarget if the mouse left/entered the browser window
      -            if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
      -                event.type = handleObj.origType;
      -                ret = handleObj.handler.apply( this, arguments );
      -                event.type = fix;
      -            }
      -            return ret;
      -        }
      -    };
      -});
      -
      -// IE submit delegation
      -if ( !jQuery.support.submitBubbles ) {
      -
      -    jQuery.event.special.submit = {
      -        setup: function() {
      -            // Only need this for delegated form submit events
      -            if ( jQuery.nodeName( this, "form" ) ) {
      -                return false;
      -            }
      -
      -            // Lazy-add a submit handler when a descendant form may potentially be submitted
      -            jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
      -                // Node name check avoids a VML-related crash in IE (#9807)
      -                var elem = e.target,
      -                    form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
      -                if ( form && !jQuery._data( form, "submitBubbles" ) ) {
      -                    jQuery.event.add( form, "submit._submit", function( event ) {
      -                        event._submit_bubble = true;
      -                    });
      -                    jQuery._data( form, "submitBubbles", true );
      -                }
      -            });
      -            // return undefined since we don't need an event listener
      -        },
      -
      -        postDispatch: function( event ) {
      -            // If form was submitted by the user, bubble the event up the tree
      -            if ( event._submit_bubble ) {
      -                delete event._submit_bubble;
      -                if ( this.parentNode && !event.isTrigger ) {
      -                    jQuery.event.simulate( "submit", this.parentNode, event, true );
      -                }
      -            }
      -        },
      -
      -        teardown: function() {
      -            // Only need this for delegated form submit events
      -            if ( jQuery.nodeName( this, "form" ) ) {
      -                return false;
      -            }
      -
      -            // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
      -            jQuery.event.remove( this, "._submit" );
      -        }
      -    };
      -}
      -
      -// IE change delegation and checkbox/radio fix
      -if ( !jQuery.support.changeBubbles ) {
      -
      -    jQuery.event.special.change = {
      -
      -        setup: function() {
      -
      -            if ( rformElems.test( this.nodeName ) ) {
      -                // IE doesn't fire change on a check/radio until blur; trigger it on click
      -                // after a propertychange. Eat the blur-change in special.change.handle.
      -                // This still fires onchange a second time for check/radio after blur.
      -                if ( this.type === "checkbox" || this.type === "radio" ) {
      -                    jQuery.event.add( this, "propertychange._change", function( event ) {
      -                        if ( event.originalEvent.propertyName === "checked" ) {
      -                            this._just_changed = true;
      -                        }
      -                    });
      -                    jQuery.event.add( this, "click._change", function( event ) {
      -                        if ( this._just_changed && !event.isTrigger ) {
      -                            this._just_changed = false;
      -                        }
      -                        // Allow triggered, simulated change events (#11500)
      -                        jQuery.event.simulate( "change", this, event, true );
      -                    });
      -                }
      -                return false;
      -            }
      -            // Delegated event; lazy-add a change handler on descendant inputs
      -            jQuery.event.add( this, "beforeactivate._change", function( e ) {
      -                var elem = e.target;
      -
      -                if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
      -                    jQuery.event.add( elem, "change._change", function( event ) {
      -                        if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
      -                            jQuery.event.simulate( "change", this.parentNode, event, true );
      -                        }
      -                    });
      -                    jQuery._data( elem, "changeBubbles", true );
      -                }
      -            });
      -        },
      -
      -        handle: function( event ) {
      -            var elem = event.target;
      -
      -            // Swallow native change events from checkbox/radio, we already triggered them above
      -            if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
      -                return event.handleObj.handler.apply( this, arguments );
      -            }
      -        },
      -
      -        teardown: function() {
      -            jQuery.event.remove( this, "._change" );
      -
      -            return !rformElems.test( this.nodeName );
      -        }
      -    };
      -}
      -
      -// Create "bubbling" focus and blur events
      -if ( !jQuery.support.focusinBubbles ) {
      -    jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
      -
      -        // Attach a single capturing handler while someone wants focusin/focusout
      -        var attaches = 0,
      -            handler = function( event ) {
      -                jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
      -            };
      -
      -        jQuery.event.special[ fix ] = {
      -            setup: function() {
      -                if ( attaches++ === 0 ) {
      -                    document.addEventListener( orig, handler, true );
      -                }
      -            },
      -            teardown: function() {
      -                if ( --attaches === 0 ) {
      -                    document.removeEventListener( orig, handler, true );
      -                }
      -            }
      -        };
      -    });
      -}
      -
      -jQuery.fn.extend({
      -
      -    on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
      -        var type, origFn;
      -
      -        // Types can be a map of types/handlers
      -        if ( typeof types === "object" ) {
      -            // ( types-Object, selector, data )
      -            if ( typeof selector !== "string" ) {
      -                // ( types-Object, data )
      -                data = data || selector;
      -                selector = undefined;
      -            }
      -            for ( type in types ) {
      -                this.on( type, selector, data, types[ type ], one );
      -            }
      -            return this;
      -        }
      -
      -        if ( data == null && fn == null ) {
      -            // ( types, fn )
      -            fn = selector;
      -            data = selector = undefined;
      -        } else if ( fn == null ) {
      -            if ( typeof selector === "string" ) {
      -                // ( types, selector, fn )
      -                fn = data;
      -                data = undefined;
      -            } else {
      -                // ( types, data, fn )
      -                fn = data;
      -                data = selector;
      -                selector = undefined;
      -            }
      -        }
      -        if ( fn === false ) {
      -            fn = returnFalse;
      -        } else if ( !fn ) {
      -            return this;
      -        }
      -
      -        if ( one === 1 ) {
      -            origFn = fn;
      -            fn = function( event ) {
      -                // Can use an empty set, since event contains the info
      -                jQuery().off( event );
      -                return origFn.apply( this, arguments );
      -            };
      -            // Use same guid so caller can remove using origFn
      -            fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
      -        }
      -        return this.each( function() {
      -            jQuery.event.add( this, types, fn, data, selector );
      -        });
      -    },
      -    one: function( types, selector, data, fn ) {
      -        return this.on( types, selector, data, fn, 1 );
      -    },
      -    off: function( types, selector, fn ) {
      -        var handleObj, type;
      -        if ( types && types.preventDefault && types.handleObj ) {
      -            // ( event )  dispatched jQuery.Event
      -            handleObj = types.handleObj;
      -            jQuery( types.delegateTarget ).off(
      -                handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
      -                handleObj.selector,
      -                handleObj.handler
      -            );
      -            return this;
      -        }
      -        if ( typeof types === "object" ) {
      -            // ( types-object [, selector] )
      -            for ( type in types ) {
      -                this.off( type, selector, types[ type ] );
      -            }
      -            return this;
      -        }
      -        if ( selector === false || typeof selector === "function" ) {
      -            // ( types [, fn] )
      -            fn = selector;
      -            selector = undefined;
      -        }
      -        if ( fn === false ) {
      -            fn = returnFalse;
      -        }
      -        return this.each(function() {
      -            jQuery.event.remove( this, types, fn, selector );
      -        });
      -    },
      -
      -    bind: function( types, data, fn ) {
      -        return this.on( types, null, data, fn );
      -    },
      -    unbind: function( types, fn ) {
      -        return this.off( types, null, fn );
      -    },
      -
      -    delegate: function( selector, types, data, fn ) {
      -        return this.on( types, selector, data, fn );
      -    },
      -    undelegate: function( selector, types, fn ) {
      -        // ( namespace ) or ( selector, types [, fn] )
      -        return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
      -    },
      -
      -    trigger: function( type, data ) {
      -        return this.each(function() {
      -            jQuery.event.trigger( type, data, this );
      -        });
      -    },
      -    triggerHandler: function( type, data ) {
      -        var elem = this[0];
      -        if ( elem ) {
      -            return jQuery.event.trigger( type, data, elem, true );
      -        }
      -    }
      -});
      -/*!
      - * Sizzle CSS Selector Engine
      - * Copyright 2012 jQuery Foundation and other contributors
      - * Released under the MIT license
      - * http://sizzlejs.com/
      - */
      -(function( window, undefined ) {
      -
      -var i,
      -    cachedruns,
      -    Expr,
      -    getText,
      -    isXML,
      -    compile,
      -    hasDuplicate,
      -    outermostContext,
      -
      -    // Local document vars
      -    setDocument,
      -    document,
      -    docElem,
      -    documentIsXML,
      -    rbuggyQSA,
      -    rbuggyMatches,
      -    matches,
      -    contains,
      -    sortOrder,
      -
      -    // Instance-specific data
      -    expando = "sizzle" + -(new Date()),
      -    preferredDoc = window.document,
      -    support = {},
      -    dirruns = 0,
      -    done = 0,
      -    classCache = createCache(),
      -    tokenCache = createCache(),
      -    compilerCache = createCache(),
      -
      -    // General-purpose constants
      -    strundefined = typeof undefined,
      -    MAX_NEGATIVE = 1 << 31,
      -
      -    // Array methods
      -    arr = [],
      -    pop = arr.pop,
      -    push = arr.push,
      -    slice = arr.slice,
      -    // Use a stripped-down indexOf if we can't use a native one
      -    indexOf = arr.indexOf || function( elem ) {
      -        var i = 0,
      -            len = this.length;
      -        for ( ; i < len; i++ ) {
      -            if ( this[i] === elem ) {
      -                return i;
      -            }
      -        }
      -        return -1;
      -    },
      -
      -
      -    // Regular expressions
      -
      -    // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
      -    whitespace = "[\\x20\\t\\r\\n\\f]",
      -    // http://www.w3.org/TR/css3-syntax/#characters
      -    characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
      -
      -    // Loosely modeled on CSS identifier characters
      -    // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
      -    // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
      -    identifier = characterEncoding.replace( "w", "w#" ),
      -
      -    // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
      -    operators = "([*^$|!~]?=)",
      -    attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
      -        "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
      -
      -    // Prefer arguments quoted,
      -    //   then not containing pseudos/brackets,
      -    //   then attribute selectors/non-parenthetical expressions,
      -    //   then anything else
      -    // These preferences are here to reduce the number of selectors
      -    //   needing tokenize in the PSEUDO preFilter
      -    pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
      -
      -    // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
      -    rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
      -
      -    rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
      -    rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
      -    rpseudo = new RegExp( pseudos ),
      -    ridentifier = new RegExp( "^" + identifier + "$" ),
      -
      -    matchExpr = {
      -        "ID": new RegExp( "^#(" + characterEncoding + ")" ),
      -        "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
      -        "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
      -        "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
      -        "ATTR": new RegExp( "^" + attributes ),
      -        "PSEUDO": new RegExp( "^" + pseudos ),
      -        "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
      -            "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
      -            "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
      -        // For use in libraries implementing .is()
      -        // We use this for POS matching in `select`
      -        "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
      -            whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
      -    },
      -
      -    rsibling = /[\x20\t\r\n\f]*[+~]/,
      -
      -    rnative = /^[^{]+\{\s*\[native code/,
      -
      -    // Easily-parseable/retrievable ID or TAG or CLASS selectors
      -    rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
      -
      -    rinputs = /^(?:input|select|textarea|button)$/i,
      -    rheader = /^h\d$/i,
      -
      -    rescape = /'|\\/g,
      -    rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
      -
      -    // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
      -    runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
      -    funescape = function( _, escaped ) {
      -        var high = "0x" + escaped - 0x10000;
      -        // NaN means non-codepoint
      -        return high !== high ?
      -            escaped :
      -            // BMP codepoint
      -            high < 0 ?
      -                String.fromCharCode( high + 0x10000 ) :
      -                // Supplemental Plane codepoint (surrogate pair)
      -                String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
      -    };
      -
      -// Use a stripped-down slice if we can't use a native one
      -try {
      -    slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType;
      -} catch ( e ) {
      -    slice = function( i ) {
      -        var elem,
      -            results = [];
      -        while ( (elem = this[i++]) ) {
      -            results.push( elem );
      -        }
      -        return results;
      -    };
      -}
      -
      -/**
      - * For feature detection
      - * @param {Function} fn The function to test for native support
      - */
      -function isNative( fn ) {
      -    return rnative.test( fn + "" );
      -}
      -
      -/**
      - * Create key-value caches of limited size
      - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
      - *  property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
      - *  deleting the oldest entry
      - */
      -function createCache() {
      -    var cache,
      -        keys = [];
      -
      -    return (cache = function( key, value ) {
      -        // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
      -        if ( keys.push( key += " " ) > Expr.cacheLength ) {
      -            // Only keep the most recent entries
      -            delete cache[ keys.shift() ];
      -        }
      -        return (cache[ key ] = value);
      -    });
      -}
      -
      -/**
      - * Mark a function for special use by Sizzle
      - * @param {Function} fn The function to mark
      - */
      -function markFunction( fn ) {
      -    fn[ expando ] = true;
      -    return fn;
      -}
      -
      -/**
      - * Support testing using an element
      - * @param {Function} fn Passed the created div and expects a boolean result
      - */
      -function assert( fn ) {
      -    var div = document.createElement("div");
      -
      -    try {
      -        return fn( div );
      -    } catch (e) {
      -        return false;
      -    } finally {
      -        // release memory in IE
      -        div = null;
      -    }
      -}
      -
      -function Sizzle( selector, context, results, seed ) {
      -    var match, elem, m, nodeType,
      -        // QSA vars
      -        i, groups, old, nid, newContext, newSelector;
      -
      -    if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
      -        setDocument( context );
      -    }
      -
      -    context = context || document;
      -    results = results || [];
      -
      -    if ( !selector || typeof selector !== "string" ) {
      -        return results;
      -    }
      -
      -    if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
      -        return [];
      -    }
      -
      -    if ( !documentIsXML && !seed ) {
      -
      -        // Shortcuts
      -        if ( (match = rquickExpr.exec( selector )) ) {
      -            // Speed-up: Sizzle("#ID")
      -            if ( (m = match[1]) ) {
      -                if ( nodeType === 9 ) {
      -                    elem = context.getElementById( m );
      -                    // Check parentNode to catch when Blackberry 4.6 returns
      -                    // nodes that are no longer in the document #6963
      -                    if ( elem && elem.parentNode ) {
      -                        // Handle the case where IE, Opera, and Webkit return items
      -                        // by name instead of ID
      -                        if ( elem.id === m ) {
      -                            results.push( elem );
      -                            return results;
      -                        }
      -                    } else {
      -                        return results;
      -                    }
      -                } else {
      -                    // Context is not a document
      -                    if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
      -                        contains( context, elem ) && elem.id === m ) {
      -                        results.push( elem );
      -                        return results;
      -                    }
      -                }
      -
      -            // Speed-up: Sizzle("TAG")
      -            } else if ( match[2] ) {
      -                push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
      -                return results;
      -
      -            // Speed-up: Sizzle(".CLASS")
      -            } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) {
      -                push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
      -                return results;
      -            }
      -        }
      -
      -        // QSA path
      -        if ( support.qsa && !rbuggyQSA.test(selector) ) {
      -            old = true;
      -            nid = expando;
      -            newContext = context;
      -            newSelector = nodeType === 9 && selector;
      -
      -            // qSA works strangely on Element-rooted queries
      -            // We can work around this by specifying an extra ID on the root
      -            // and working up from there (Thanks to Andrew Dupont for the technique)
      -            // IE 8 doesn't work on object elements
      -            if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
      -                groups = tokenize( selector );
      -
      -                if ( (old = context.getAttribute("id")) ) {
      -                    nid = old.replace( rescape, "\\$&" );
      -                } else {
      -                    context.setAttribute( "id", nid );
      -                }
      -                nid = "[id='" + nid + "'] ";
      -
      -                i = groups.length;
      -                while ( i-- ) {
      -                    groups[i] = nid + toSelector( groups[i] );
      -                }
      -                newContext = rsibling.test( selector ) && context.parentNode || context;
      -                newSelector = groups.join(",");
      -            }
      -
      -            if ( newSelector ) {
      -                try {
      -                    push.apply( results, slice.call( newContext.querySelectorAll(
      -                        newSelector
      -                    ), 0 ) );
      -                    return results;
      -                } catch(qsaError) {
      -                } finally {
      -                    if ( !old ) {
      -                        context.removeAttribute("id");
      -                    }
      -                }
      -            }
      -        }
      -    }
      -
      -    // All others
      -    return select( selector.replace( rtrim, "$1" ), context, results, seed );
      -}
      -
      -/**
      - * Detect xml
      - * @param {Element|Object} elem An element or a document
      - */
      -isXML = Sizzle.isXML = function( elem ) {
      -    // documentElement is verified for cases where it doesn't yet exist
      -    // (such as loading iframes in IE - #4833)
      -    var documentElement = elem && (elem.ownerDocument || elem).documentElement;
      -    return documentElement ? documentElement.nodeName !== "HTML" : false;
      -};
      -
      -/**
      - * Sets document-related variables once based on the current document
      - * @param {Element|Object} [doc] An element or document object to use to set the document
      - * @returns {Object} Returns the current document
      - */
      -setDocument = Sizzle.setDocument = function( node ) {
      -    var doc = node ? node.ownerDocument || node : preferredDoc;
      -
      -    // If no document and documentElement is available, return
      -    if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
      -        return document;
      -    }
      -
      -    // Set our document
      -    document = doc;
      -    docElem = doc.documentElement;
      -
      -    // Support tests
      -    documentIsXML = isXML( doc );
      -
      -    // Check if getElementsByTagName("*") returns only elements
      -    support.tagNameNoComments = assert(function( div ) {
      -        div.appendChild( doc.createComment("") );
      -        return !div.getElementsByTagName("*").length;
      -    });
      -
      -    // Check if attributes should be retrieved by attribute nodes
      -    support.attributes = assert(function( div ) {
      -        div.innerHTML = "<select></select>";
      -        var type = typeof div.lastChild.getAttribute("multiple");
      -        // IE8 returns a string for some attributes even when not present
      -        return type !== "boolean" && type !== "string";
      -    });
      -
      -    // Check if getElementsByClassName can be trusted
      -    support.getByClassName = assert(function( div ) {
      -        // Opera can't find a second classname (in 9.6)
      -        div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
      -        if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
      -            return false;
      -        }
      -
      -        // Safari 3.2 caches class attributes and doesn't catch changes
      -        div.lastChild.className = "e";
      -        return div.getElementsByClassName("e").length === 2;
      -    });
      -
      -    // Check if getElementById returns elements by name
      -    // Check if getElementsByName privileges form controls or returns elements by ID
      -    support.getByName = assert(function( div ) {
      -        // Inject content
      -        div.id = expando + 0;
      -        div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
      -        docElem.insertBefore( div, docElem.firstChild );
      -
      -        // Test
      -        var pass = doc.getElementsByName &&
      -            // buggy browsers will return fewer than the correct 2
      -            doc.getElementsByName( expando ).length === 2 +
      -            // buggy browsers will return more than the correct 0
      -            doc.getElementsByName( expando + 0 ).length;
      -        support.getIdNotName = !doc.getElementById( expando );
      -
      -        // Cleanup
      -        docElem.removeChild( div );
      -
      -        return pass;
      -    });
      -
      -    // IE6/7 return modified attributes
      -    Expr.attrHandle = assert(function( div ) {
      -        div.innerHTML = "<a href='#'></a>";
      -        return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
      -            div.firstChild.getAttribute("href") === "#";
      -    }) ?
      -        {} :
      -        {
      -            "href": function( elem ) {
      -                return elem.getAttribute( "href", 2 );
      -            },
      -            "type": function( elem ) {
      -                return elem.getAttribute("type");
      -            }
      -        };
      -
      -    // ID find and filter
      -    if ( support.getIdNotName ) {
      -        Expr.find["ID"] = function( id, context ) {
      -            if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
      -                var m = context.getElementById( id );
      -                // Check parentNode to catch when Blackberry 4.6 returns
      -                // nodes that are no longer in the document #6963
      -                return m && m.parentNode ? [m] : [];
      -            }
      -        };
      -        Expr.filter["ID"] = function( id ) {
      -            var attrId = id.replace( runescape, funescape );
      -            return function( elem ) {
      -                return elem.getAttribute("id") === attrId;
      -            };
      -        };
      -    } else {
      -        Expr.find["ID"] = function( id, context ) {
      -            if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
      -                var m = context.getElementById( id );
      -
      -                return m ?
      -                    m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
      -                        [m] :
      -                        undefined :
      -                    [];
      -            }
      -        };
      -        Expr.filter["ID"] =  function( id ) {
      -            var attrId = id.replace( runescape, funescape );
      -            return function( elem ) {
      -                var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
      -                return node && node.value === attrId;
      -            };
      -        };
      -    }
      -
      -    // Tag
      -    Expr.find["TAG"] = support.tagNameNoComments ?
      -        function( tag, context ) {
      -            if ( typeof context.getElementsByTagName !== strundefined ) {
      -                return context.getElementsByTagName( tag );
      -            }
      -        } :
      -        function( tag, context ) {
      -            var elem,
      -                tmp = [],
      -                i = 0,
      -                results = context.getElementsByTagName( tag );
      -
      -            // Filter out possible comments
      -            if ( tag === "*" ) {
      -                while ( (elem = results[i++]) ) {
      -                    if ( elem.nodeType === 1 ) {
      -                        tmp.push( elem );
      -                    }
      -                }
      -
      -                return tmp;
      -            }
      -            return results;
      -        };
      -
      -    // Name
      -    Expr.find["NAME"] = support.getByName && function( tag, context ) {
      -        if ( typeof context.getElementsByName !== strundefined ) {
      -            return context.getElementsByName( name );
      -        }
      -    };
      -
      -    // Class
      -    Expr.find["CLASS"] = support.getByClassName && function( className, context ) {
      -        if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) {
      -            return context.getElementsByClassName( className );
      -        }
      -    };
      -
      -    // QSA and matchesSelector support
      -
      -    // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
      -    rbuggyMatches = [];
      -
      -    // qSa(:focus) reports false when true (Chrome 21),
      -    // no need to also add to buggyMatches since matches checks buggyQSA
      -    // A support test would require too much code (would include document ready)
      -    rbuggyQSA = [ ":focus" ];
      -
      -    if ( (support.qsa = isNative(doc.querySelectorAll)) ) {
      -        // Build QSA regex
      -        // Regex strategy adopted from Diego Perini
      -        assert(function( div ) {
      -            // Select is set to empty string on purpose
      -            // This is to test IE's treatment of not explictly
      -            // setting a boolean content attribute,
      -            // since its presence should be enough
      -            // http://bugs.jquery.com/ticket/12359
      -            div.innerHTML = "<select><option selected=''></option></select>";
      -
      -            // IE8 - Some boolean attributes are not treated correctly
      -            if ( !div.querySelectorAll("[selected]").length ) {
      -                rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
      -            }
      -
      -            // Webkit/Opera - :checked should return selected option elements
      -            // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -            // IE8 throws error here and will not see later tests
      -            if ( !div.querySelectorAll(":checked").length ) {
      -                rbuggyQSA.push(":checked");
      -            }
      -        });
      -
      -        assert(function( div ) {
      -
      -            // Opera 10-12/IE8 - ^= $= *= and empty values
      -            // Should not select anything
      -            div.innerHTML = "<input type='hidden' i=''/>";
      -            if ( div.querySelectorAll("[i^='']").length ) {
      -                rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
      -            }
      -
      -            // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
      -            // IE8 throws error here and will not see later tests
      -            if ( !div.querySelectorAll(":enabled").length ) {
      -                rbuggyQSA.push( ":enabled", ":disabled" );
      -            }
      -
      -            // Opera 10-11 does not throw on post-comma invalid pseudos
      -            div.querySelectorAll("*,:x");
      -            rbuggyQSA.push(",.*:");
      -        });
      -    }
      -
      -    if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector ||
      -        docElem.mozMatchesSelector ||
      -        docElem.webkitMatchesSelector ||
      -        docElem.oMatchesSelector ||
      -        docElem.msMatchesSelector) )) ) {
      -
      -        assert(function( div ) {
      -            // Check to see if it's possible to do matchesSelector
      -            // on a disconnected node (IE 9)
      -            support.disconnectedMatch = matches.call( div, "div" );
      -
      -            // This should fail with an exception
      -            // Gecko does not error, returns false instead
      -            matches.call( div, "[s!='']:x" );
      -            rbuggyMatches.push( "!=", pseudos );
      -        });
      -    }
      -
      -    rbuggyQSA = new RegExp( rbuggyQSA.join("|") );
      -    rbuggyMatches = new RegExp( rbuggyMatches.join("|") );
      -
      -    // Element contains another
      -    // Purposefully does not implement inclusive descendent
      -    // As in, an element does not contain itself
      -    contains = isNative(docElem.contains) || docElem.compareDocumentPosition ?
      -        function( a, b ) {
      -            var adown = a.nodeType === 9 ? a.documentElement : a,
      -                bup = b && b.parentNode;
      -            return a === bup || !!( bup && bup.nodeType === 1 && (
      -                adown.contains ?
      -                    adown.contains( bup ) :
      -                    a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
      -            ));
      -        } :
      -        function( a, b ) {
      -            if ( b ) {
      -                while ( (b = b.parentNode) ) {
      -                    if ( b === a ) {
      -                        return true;
      -                    }
      -                }
      -            }
      -            return false;
      -        };
      -
      -    // Document order sorting
      -    sortOrder = docElem.compareDocumentPosition ?
      -    function( a, b ) {
      -        var compare;
      -
      -        if ( a === b ) {
      -            hasDuplicate = true;
      -            return 0;
      -        }
      -
      -        if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) {
      -            if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) {
      -                if ( a === doc || contains( preferredDoc, a ) ) {
      -                    return -1;
      -                }
      -                if ( b === doc || contains( preferredDoc, b ) ) {
      -                    return 1;
      -                }
      -                return 0;
      -            }
      -            return compare & 4 ? -1 : 1;
      -        }
      -
      -        return a.compareDocumentPosition ? -1 : 1;
      -    } :
      -    function( a, b ) {
      -        var cur,
      -            i = 0,
      -            aup = a.parentNode,
      -            bup = b.parentNode,
      -            ap = [ a ],
      -            bp = [ b ];
      -
      -        // Exit early if the nodes are identical
      -        if ( a === b ) {
      -            hasDuplicate = true;
      -            return 0;
      -
      -        // Parentless nodes are either documents or disconnected
      -        } else if ( !aup || !bup ) {
      -            return a === doc ? -1 :
      -                b === doc ? 1 :
      -                aup ? -1 :
      -                bup ? 1 :
      -                0;
      -
      -        // If the nodes are siblings, we can do a quick check
      -        } else if ( aup === bup ) {
      -            return siblingCheck( a, b );
      -        }
      -
      -        // Otherwise we need full lists of their ancestors for comparison
      -        cur = a;
      -        while ( (cur = cur.parentNode) ) {
      -            ap.unshift( cur );
      -        }
      -        cur = b;
      -        while ( (cur = cur.parentNode) ) {
      -            bp.unshift( cur );
      -        }
      -
      -        // Walk down the tree looking for a discrepancy
      -        while ( ap[i] === bp[i] ) {
      -            i++;
      -        }
      -
      -        return i ?
      -            // Do a sibling check if the nodes have a common ancestor
      -            siblingCheck( ap[i], bp[i] ) :
      -
      -            // Otherwise nodes in our document sort first
      -            ap[i] === preferredDoc ? -1 :
      -            bp[i] === preferredDoc ? 1 :
      -            0;
      -    };
      -
      -    // Always assume the presence of duplicates if sort doesn't
      -    // pass them to our comparison function (as in Google Chrome).
      -    hasDuplicate = false;
      -    [0, 0].sort( sortOrder );
      -    support.detectDuplicates = hasDuplicate;
      -
      -    return document;
      -};
      -
      -Sizzle.matches = function( expr, elements ) {
      -    return Sizzle( expr, null, null, elements );
      -};
      -
      -Sizzle.matchesSelector = function( elem, expr ) {
      -    // Set document vars if needed
      -    if ( ( elem.ownerDocument || elem ) !== document ) {
      -        setDocument( elem );
      -    }
      -
      -    // Make sure that attribute selectors are quoted
      -    expr = expr.replace( rattributeQuotes, "='$1']" );
      -
      -    // rbuggyQSA always contains :focus, so no need for an existence check
      -    if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) {
      -        try {
      -            var ret = matches.call( elem, expr );
      -
      -            // IE 9's matchesSelector returns false on disconnected nodes
      -            if ( ret || support.disconnectedMatch ||
      -                    // As well, disconnected nodes are said to be in a document
      -                    // fragment in IE 9
      -                    elem.document && elem.document.nodeType !== 11 ) {
      -                return ret;
      -            }
      -        } catch(e) {}
      -    }
      -
      -    return Sizzle( expr, document, null, [elem] ).length > 0;
      -};
      -
      -Sizzle.contains = function( context, elem ) {
      -    // Set document vars if needed
      -    if ( ( context.ownerDocument || context ) !== document ) {
      -        setDocument( context );
      -    }
      -    return contains( context, elem );
      -};
      -
      -Sizzle.attr = function( elem, name ) {
      -    var val;
      -
      -    // Set document vars if needed
      -    if ( ( elem.ownerDocument || elem ) !== document ) {
      -        setDocument( elem );
      -    }
      -
      -    if ( !documentIsXML ) {
      -        name = name.toLowerCase();
      -    }
      -    if ( (val = Expr.attrHandle[ name ]) ) {
      -        return val( elem );
      -    }
      -    if ( documentIsXML || support.attributes ) {
      -        return elem.getAttribute( name );
      -    }
      -    return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ?
      -        name :
      -        val && val.specified ? val.value : null;
      -};
      -
      -Sizzle.error = function( msg ) {
      -    throw new Error( "Syntax error, unrecognized expression: " + msg );
      -};
      -
      -// Document sorting and removing duplicates
      -Sizzle.uniqueSort = function( results ) {
      -    var elem,
      -        duplicates = [],
      -        i = 1,
      -        j = 0;
      -
      -    // Unless we *know* we can detect duplicates, assume their presence
      -    hasDuplicate = !support.detectDuplicates;
      -    results.sort( sortOrder );
      -
      -    if ( hasDuplicate ) {
      -        for ( ; (elem = results[i]); i++ ) {
      -            if ( elem === results[ i - 1 ] ) {
      -                j = duplicates.push( i );
      -            }
      -        }
      -        while ( j-- ) {
      -            results.splice( duplicates[ j ], 1 );
      -        }
      -    }
      -
      -    return results;
      -};
      -
      -function siblingCheck( a, b ) {
      -    var cur = b && a,
      -        diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE );
      -
      -    // Use IE sourceIndex if available on both nodes
      -    if ( diff ) {
      -        return diff;
      -    }
      -
      -    // Check if b follows a
      -    if ( cur ) {
      -        while ( (cur = cur.nextSibling) ) {
      -            if ( cur === b ) {
      -                return -1;
      -            }
      -        }
      -    }
      -
      -    return a ? 1 : -1;
      -}
      -
      -// Returns a function to use in pseudos for input types
      -function createInputPseudo( type ) {
      -    return function( elem ) {
      -        var name = elem.nodeName.toLowerCase();
      -        return name === "input" && elem.type === type;
      -    };
      -}
      -
      -// Returns a function to use in pseudos for buttons
      -function createButtonPseudo( type ) {
      -    return function( elem ) {
      -        var name = elem.nodeName.toLowerCase();
      -        return (name === "input" || name === "button") && elem.type === type;
      -    };
      -}
      -
      -// Returns a function to use in pseudos for positionals
      -function createPositionalPseudo( fn ) {
      -    return markFunction(function( argument ) {
      -        argument = +argument;
      -        return markFunction(function( seed, matches ) {
      -            var j,
      -                matchIndexes = fn( [], seed.length, argument ),
      -                i = matchIndexes.length;
      -
      -            // Match elements found at the specified indexes
      -            while ( i-- ) {
      -                if ( seed[ (j = matchIndexes[i]) ] ) {
      -                    seed[j] = !(matches[j] = seed[j]);
      -                }
      -            }
      -        });
      -    });
      -}
      -
      -/**
      - * Utility function for retrieving the text value of an array of DOM nodes
      - * @param {Array|Element} elem
      - */
      -getText = Sizzle.getText = function( elem ) {
      -    var node,
      -        ret = "",
      -        i = 0,
      -        nodeType = elem.nodeType;
      -
      -    if ( !nodeType ) {
      -        // If no nodeType, this is expected to be an array
      -        for ( ; (node = elem[i]); i++ ) {
      -            // Do not traverse comment nodes
      -            ret += getText( node );
      -        }
      -    } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -        // Use textContent for elements
      -        // innerText usage removed for consistency of new lines (see #11153)
      -        if ( typeof elem.textContent === "string" ) {
      -            return elem.textContent;
      -        } else {
      -            // Traverse its children
      -            for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -                ret += getText( elem );
      -            }
      -        }
      -    } else if ( nodeType === 3 || nodeType === 4 ) {
      -        return elem.nodeValue;
      -    }
      -    // Do not include comment or processing instruction nodes
      -
      -    return ret;
      -};
      -
      -Expr = Sizzle.selectors = {
      -
      -    // Can be adjusted by the user
      -    cacheLength: 50,
      -
      -    createPseudo: markFunction,
      -
      -    match: matchExpr,
      -
      -    find: {},
      -
      -    relative: {
      -        ">": { dir: "parentNode", first: true },
      -        " ": { dir: "parentNode" },
      -        "+": { dir: "previousSibling", first: true },
      -        "~": { dir: "previousSibling" }
      -    },
      -
      -    preFilter: {
      -        "ATTR": function( match ) {
      -            match[1] = match[1].replace( runescape, funescape );
      -
      -            // Move the given value to match[3] whether quoted or unquoted
      -            match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
      -
      -            if ( match[2] === "~=" ) {
      -                match[3] = " " + match[3] + " ";
      -            }
      -
      -            return match.slice( 0, 4 );
      -        },
      -
      -        "CHILD": function( match ) {
      -            /* matches from matchExpr["CHILD"]
      -                1 type (only|nth|...)
      -                2 what (child|of-type)
      -                3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
      -                4 xn-component of xn+y argument ([+-]?\d*n|)
      -                5 sign of xn-component
      -                6 x of xn-component
      -                7 sign of y-component
      -                8 y of y-component
      -            */
      -            match[1] = match[1].toLowerCase();
      -
      -            if ( match[1].slice( 0, 3 ) === "nth" ) {
      -                // nth-* requires argument
      -                if ( !match[3] ) {
      -                    Sizzle.error( match[0] );
      -                }
      -
      -                // numeric x and y parameters for Expr.filter.CHILD
      -                // remember that false/true cast respectively to 0/1
      -                match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
      -                match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
      -
      -            // other types prohibit arguments
      -            } else if ( match[3] ) {
      -                Sizzle.error( match[0] );
      -            }
      -
      -            return match;
      -        },
      -
      -        "PSEUDO": function( match ) {
      -            var excess,
      -                unquoted = !match[5] && match[2];
      -
      -            if ( matchExpr["CHILD"].test( match[0] ) ) {
      -                return null;
      -            }
      -
      -            // Accept quoted arguments as-is
      -            if ( match[4] ) {
      -                match[2] = match[4];
      -
      -            // Strip excess characters from unquoted arguments
      -            } else if ( unquoted && rpseudo.test( unquoted ) &&
      -                // Get excess from tokenize (recursively)
      -                (excess = tokenize( unquoted, true )) &&
      -                // advance to the next closing parenthesis
      -                (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
      -
      -                // excess is a negative index
      -                match[0] = match[0].slice( 0, excess );
      -                match[2] = unquoted.slice( 0, excess );
      -            }
      -
      -            // Return only captures needed by the pseudo filter method (type and argument)
      -            return match.slice( 0, 3 );
      -        }
      -    },
      -
      -    filter: {
      -
      -        "TAG": function( nodeName ) {
      -            if ( nodeName === "*" ) {
      -                return function() { return true; };
      -            }
      -
      -            nodeName = nodeName.replace( runescape, funescape ).toLowerCase();
      -            return function( elem ) {
      -                return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
      -            };
      -        },
      -
      -        "CLASS": function( className ) {
      -            var pattern = classCache[ className + " " ];
      -
      -            return pattern ||
      -                (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
      -                classCache( className, function( elem ) {
      -                    return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
      -                });
      -        },
      -
      -        "ATTR": function( name, operator, check ) {
      -            return function( elem ) {
      -                var result = Sizzle.attr( elem, name );
      -
      -                if ( result == null ) {
      -                    return operator === "!=";
      -                }
      -                if ( !operator ) {
      -                    return true;
      -                }
      -
      -                result += "";
      -
      -                return operator === "=" ? result === check :
      -                    operator === "!=" ? result !== check :
      -                    operator === "^=" ? check && result.indexOf( check ) === 0 :
      -                    operator === "*=" ? check && result.indexOf( check ) > -1 :
      -                    operator === "$=" ? check && result.slice( -check.length ) === check :
      -                    operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
      -                    operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
      -                    false;
      -            };
      -        },
      -
      -        "CHILD": function( type, what, argument, first, last ) {
      -            var simple = type.slice( 0, 3 ) !== "nth",
      -                forward = type.slice( -4 ) !== "last",
      -                ofType = what === "of-type";
      -
      -            return first === 1 && last === 0 ?
      -
      -                // Shortcut for :nth-*(n)
      -                function( elem ) {
      -                    return !!elem.parentNode;
      -                } :
      -
      -                function( elem, context, xml ) {
      -                    var cache, outerCache, node, diff, nodeIndex, start,
      -                        dir = simple !== forward ? "nextSibling" : "previousSibling",
      -                        parent = elem.parentNode,
      -                        name = ofType && elem.nodeName.toLowerCase(),
      -                        useCache = !xml && !ofType;
      -
      -                    if ( parent ) {
      -
      -                        // :(first|last|only)-(child|of-type)
      -                        if ( simple ) {
      -                            while ( dir ) {
      -                                node = elem;
      -                                while ( (node = node[ dir ]) ) {
      -                                    if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
      -                                        return false;
      -                                    }
      -                                }
      -                                // Reverse direction for :only-* (if we haven't yet done so)
      -                                start = dir = type === "only" && !start && "nextSibling";
      -                            }
      -                            return true;
      -                        }
      -
      -                        start = [ forward ? parent.firstChild : parent.lastChild ];
      -
      -                        // non-xml :nth-child(...) stores cache data on `parent`
      -                        if ( forward && useCache ) {
      -                            // Seek `elem` from a previously-cached index
      -                            outerCache = parent[ expando ] || (parent[ expando ] = {});
      -                            cache = outerCache[ type ] || [];
      -                            nodeIndex = cache[0] === dirruns && cache[1];
      -                            diff = cache[0] === dirruns && cache[2];
      -                            node = nodeIndex && parent.childNodes[ nodeIndex ];
      -
      -                            while ( (node = ++nodeIndex && node && node[ dir ] ||
      -
      -                                // Fallback to seeking `elem` from the start
      -                                (diff = nodeIndex = 0) || start.pop()) ) {
      -
      -                                // When found, cache indexes on `parent` and break
      -                                if ( node.nodeType === 1 && ++diff && node === elem ) {
      -                                    outerCache[ type ] = [ dirruns, nodeIndex, diff ];
      -                                    break;
      -                                }
      -                            }
      -
      -                        // Use previously-cached element index if available
      -                        } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
      -                            diff = cache[1];
      -
      -                        // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
      -                        } else {
      -                            // Use the same loop as above to seek `elem` from the start
      -                            while ( (node = ++nodeIndex && node && node[ dir ] ||
      -                                (diff = nodeIndex = 0) || start.pop()) ) {
      -
      -                                if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
      -                                    // Cache the index of each encountered element
      -                                    if ( useCache ) {
      -                                        (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
      -                                    }
      -
      -                                    if ( node === elem ) {
      -                                        break;
      -                                    }
      -                                }
      -                            }
      -                        }
      -
      -                        // Incorporate the offset, then check against cycle size
      -                        diff -= last;
      -                        return diff === first || ( diff % first === 0 && diff / first >= 0 );
      -                    }
      -                };
      -        },
      -
      -        "PSEUDO": function( pseudo, argument ) {
      -            // pseudo-class names are case-insensitive
      -            // http://www.w3.org/TR/selectors/#pseudo-classes
      -            // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
      -            // Remember that setFilters inherits from pseudos
      -            var args,
      -                fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
      -                    Sizzle.error( "unsupported pseudo: " + pseudo );
      -
      -            // The user may use createPseudo to indicate that
      -            // arguments are needed to create the filter function
      -            // just as Sizzle does
      -            if ( fn[ expando ] ) {
      -                return fn( argument );
      -            }
      -
      -            // But maintain support for old signatures
      -            if ( fn.length > 1 ) {
      -                args = [ pseudo, pseudo, "", argument ];
      -                return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
      -                    markFunction(function( seed, matches ) {
      -                        var idx,
      -                            matched = fn( seed, argument ),
      -                            i = matched.length;
      -                        while ( i-- ) {
      -                            idx = indexOf.call( seed, matched[i] );
      -                            seed[ idx ] = !( matches[ idx ] = matched[i] );
      -                        }
      -                    }) :
      -                    function( elem ) {
      -                        return fn( elem, 0, args );
      -                    };
      -            }
      -
      -            return fn;
      -        }
      -    },
      -
      -    pseudos: {
      -        // Potentially complex pseudos
      -        "not": markFunction(function( selector ) {
      -            // Trim the selector passed to compile
      -            // to avoid treating leading and trailing
      -            // spaces as combinators
      -            var input = [],
      -                results = [],
      -                matcher = compile( selector.replace( rtrim, "$1" ) );
      -
      -            return matcher[ expando ] ?
      -                markFunction(function( seed, matches, context, xml ) {
      -                    var elem,
      -                        unmatched = matcher( seed, null, xml, [] ),
      -                        i = seed.length;
      -
      -                    // Match elements unmatched by `matcher`
      -                    while ( i-- ) {
      -                        if ( (elem = unmatched[i]) ) {
      -                            seed[i] = !(matches[i] = elem);
      -                        }
      -                    }
      -                }) :
      -                function( elem, context, xml ) {
      -                    input[0] = elem;
      -                    matcher( input, null, xml, results );
      -                    return !results.pop();
      -                };
      -        }),
      -
      -        "has": markFunction(function( selector ) {
      -            return function( elem ) {
      -                return Sizzle( selector, elem ).length > 0;
      -            };
      -        }),
      -
      -        "contains": markFunction(function( text ) {
      -            return function( elem ) {
      -                return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
      -            };
      -        }),
      -
      -        // "Whether an element is represented by a :lang() selector
      -        // is based solely on the element's language value
      -        // being equal to the identifier C,
      -        // or beginning with the identifier C immediately followed by "-".
      -        // The matching of C against the element's language value is performed case-insensitively.
      -        // The identifier C does not have to be a valid language name."
      -        // http://www.w3.org/TR/selectors/#lang-pseudo
      -        "lang": markFunction( function( lang ) {
      -            // lang value must be a valid identifider
      -            if ( !ridentifier.test(lang || "") ) {
      -                Sizzle.error( "unsupported lang: " + lang );
      -            }
      -            lang = lang.replace( runescape, funescape ).toLowerCase();
      -            return function( elem ) {
      -                var elemLang;
      -                do {
      -                    if ( (elemLang = documentIsXML ?
      -                        elem.getAttribute("xml:lang") || elem.getAttribute("lang") :
      -                        elem.lang) ) {
      -
      -                        elemLang = elemLang.toLowerCase();
      -                        return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
      -                    }
      -                } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
      -                return false;
      -            };
      -        }),
      -
      -        // Miscellaneous
      -        "target": function( elem ) {
      -            var hash = window.location && window.location.hash;
      -            return hash && hash.slice( 1 ) === elem.id;
      -        },
      -
      -        "root": function( elem ) {
      -            return elem === docElem;
      -        },
      -
      -        "focus": function( elem ) {
      -            return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
      -        },
      -
      -        // Boolean properties
      -        "enabled": function( elem ) {
      -            return elem.disabled === false;
      -        },
      -
      -        "disabled": function( elem ) {
      -            return elem.disabled === true;
      -        },
      -
      -        "checked": function( elem ) {
      -            // In CSS3, :checked should return both checked and selected elements
      -            // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -            var nodeName = elem.nodeName.toLowerCase();
      -            return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
      -        },
      -
      -        "selected": function( elem ) {
      -            // Accessing this property makes selected-by-default
      -            // options in Safari work properly
      -            if ( elem.parentNode ) {
      -                elem.parentNode.selectedIndex;
      -            }
      -
      -            return elem.selected === true;
      -        },
      -
      -        // Contents
      -        "empty": function( elem ) {
      -            // http://www.w3.org/TR/selectors/#empty-pseudo
      -            // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
      -            //   not comment, processing instructions, or others
      -            // Thanks to Diego Perini for the nodeName shortcut
      -            //   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
      -            for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -                if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
      -                    return false;
      -                }
      -            }
      -            return true;
      -        },
      -
      -        "parent": function( elem ) {
      -            return !Expr.pseudos["empty"]( elem );
      -        },
      -
      -        // Element/input types
      -        "header": function( elem ) {
      -            return rheader.test( elem.nodeName );
      -        },
      -
      -        "input": function( elem ) {
      -            return rinputs.test( elem.nodeName );
      -        },
      -
      -        "button": function( elem ) {
      -            var name = elem.nodeName.toLowerCase();
      -            return name === "input" && elem.type === "button" || name === "button";
      -        },
      -
      -        "text": function( elem ) {
      -            var attr;
      -            // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
      -            // use getAttribute instead to test this case
      -            return elem.nodeName.toLowerCase() === "input" &&
      -                elem.type === "text" &&
      -                ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
      -        },
      -
      -        // Position-in-collection
      -        "first": createPositionalPseudo(function() {
      -            return [ 0 ];
      -        }),
      -
      -        "last": createPositionalPseudo(function( matchIndexes, length ) {
      -            return [ length - 1 ];
      -        }),
      -
      -        "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -            return [ argument < 0 ? argument + length : argument ];
      -        }),
      -
      -        "even": createPositionalPseudo(function( matchIndexes, length ) {
      -            var i = 0;
      -            for ( ; i < length; i += 2 ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        }),
      -
      -        "odd": createPositionalPseudo(function( matchIndexes, length ) {
      -            var i = 1;
      -            for ( ; i < length; i += 2 ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        }),
      -
      -        "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -            var i = argument < 0 ? argument + length : argument;
      -            for ( ; --i >= 0; ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        }),
      -
      -        "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -            var i = argument < 0 ? argument + length : argument;
      -            for ( ; ++i < length; ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        })
      -    }
      -};
      -
      -// Add button/input type pseudos
      -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
      -    Expr.pseudos[ i ] = createInputPseudo( i );
      -}
      -for ( i in { submit: true, reset: true } ) {
      -    Expr.pseudos[ i ] = createButtonPseudo( i );
      -}
      -
      -function tokenize( selector, parseOnly ) {
      -    var matched, match, tokens, type,
      -        soFar, groups, preFilters,
      -        cached = tokenCache[ selector + " " ];
      -
      -    if ( cached ) {
      -        return parseOnly ? 0 : cached.slice( 0 );
      -    }
      -
      -    soFar = selector;
      -    groups = [];
      -    preFilters = Expr.preFilter;
      -
      -    while ( soFar ) {
      -
      -        // Comma and first run
      -        if ( !matched || (match = rcomma.exec( soFar )) ) {
      -            if ( match ) {
      -                // Don't consume trailing commas as valid
      -                soFar = soFar.slice( match[0].length ) || soFar;
      -            }
      -            groups.push( tokens = [] );
      -        }
      -
      -        matched = false;
      -
      -        // Combinators
      -        if ( (match = rcombinators.exec( soFar )) ) {
      -            matched = match.shift();
      -            tokens.push( {
      -                value: matched,
      -                // Cast descendant combinators to space
      -                type: match[0].replace( rtrim, " " )
      -            } );
      -            soFar = soFar.slice( matched.length );
      -        }
      -
      -        // Filters
      -        for ( type in Expr.filter ) {
      -            if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
      -                (match = preFilters[ type ]( match ))) ) {
      -                matched = match.shift();
      -                tokens.push( {
      -                    value: matched,
      -                    type: type,
      -                    matches: match
      -                } );
      -                soFar = soFar.slice( matched.length );
      -            }
      -        }
      -
      -        if ( !matched ) {
      -            break;
      -        }
      -    }
      -
      -    // Return the length of the invalid excess
      -    // if we're just parsing
      -    // Otherwise, throw an error or return tokens
      -    return parseOnly ?
      -        soFar.length :
      -        soFar ?
      -            Sizzle.error( selector ) :
      -            // Cache the tokens
      -            tokenCache( selector, groups ).slice( 0 );
      -}
      -
      -function toSelector( tokens ) {
      -    var i = 0,
      -        len = tokens.length,
      -        selector = "";
      -    for ( ; i < len; i++ ) {
      -        selector += tokens[i].value;
      -    }
      -    return selector;
      -}
      -
      -function addCombinator( matcher, combinator, base ) {
      -    var dir = combinator.dir,
      -        checkNonElements = base && dir === "parentNode",
      -        doneName = done++;
      -
      -    return combinator.first ?
      -        // Check against closest ancestor/preceding element
      -        function( elem, context, xml ) {
      -            while ( (elem = elem[ dir ]) ) {
      -                if ( elem.nodeType === 1 || checkNonElements ) {
      -                    return matcher( elem, context, xml );
      -                }
      -            }
      -        } :
      -
      -        // Check against all ancestor/preceding elements
      -        function( elem, context, xml ) {
      -            var data, cache, outerCache,
      -                dirkey = dirruns + " " + doneName;
      -
      -            // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
      -            if ( xml ) {
      -                while ( (elem = elem[ dir ]) ) {
      -                    if ( elem.nodeType === 1 || checkNonElements ) {
      -                        if ( matcher( elem, context, xml ) ) {
      -                            return true;
      -                        }
      -                    }
      -                }
      -            } else {
      -                while ( (elem = elem[ dir ]) ) {
      -                    if ( elem.nodeType === 1 || checkNonElements ) {
      -                        outerCache = elem[ expando ] || (elem[ expando ] = {});
      -                        if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
      -                            if ( (data = cache[1]) === true || data === cachedruns ) {
      -                                return data === true;
      -                            }
      -                        } else {
      -                            cache = outerCache[ dir ] = [ dirkey ];
      -                            cache[1] = matcher( elem, context, xml ) || cachedruns;
      -                            if ( cache[1] === true ) {
      -                                return true;
      -                            }
      -                        }
      -                    }
      -                }
      -            }
      -        };
      -}
      -
      -function elementMatcher( matchers ) {
      -    return matchers.length > 1 ?
      -        function( elem, context, xml ) {
      -            var i = matchers.length;
      -            while ( i-- ) {
      -                if ( !matchers[i]( elem, context, xml ) ) {
      -                    return false;
      -                }
      -            }
      -            return true;
      -        } :
      -        matchers[0];
      -}
      -
      -function condense( unmatched, map, filter, context, xml ) {
      -    var elem,
      -        newUnmatched = [],
      -        i = 0,
      -        len = unmatched.length,
      -        mapped = map != null;
      -
      -    for ( ; i < len; i++ ) {
      -        if ( (elem = unmatched[i]) ) {
      -            if ( !filter || filter( elem, context, xml ) ) {
      -                newUnmatched.push( elem );
      -                if ( mapped ) {
      -                    map.push( i );
      -                }
      -            }
      -        }
      -    }
      -
      -    return newUnmatched;
      -}
      -
      -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
      -    if ( postFilter && !postFilter[ expando ] ) {
      -        postFilter = setMatcher( postFilter );
      -    }
      -    if ( postFinder && !postFinder[ expando ] ) {
      -        postFinder = setMatcher( postFinder, postSelector );
      -    }
      -    return markFunction(function( seed, results, context, xml ) {
      -        var temp, i, elem,
      -            preMap = [],
      -            postMap = [],
      -            preexisting = results.length,
      -
      -            // Get initial elements from seed or context
      -            elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
      -
      -            // Prefilter to get matcher input, preserving a map for seed-results synchronization
      -            matcherIn = preFilter && ( seed || !selector ) ?
      -                condense( elems, preMap, preFilter, context, xml ) :
      -                elems,
      -
      -            matcherOut = matcher ?
      -                // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
      -                postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
      -
      -                    // ...intermediate processing is necessary
      -                    [] :
      -
      -                    // ...otherwise use results directly
      -                    results :
      -                matcherIn;
      -
      -        // Find primary matches
      -        if ( matcher ) {
      -            matcher( matcherIn, matcherOut, context, xml );
      -        }
      -
      -        // Apply postFilter
      -        if ( postFilter ) {
      -            temp = condense( matcherOut, postMap );
      -            postFilter( temp, [], context, xml );
      -
      -            // Un-match failing elements by moving them back to matcherIn
      -            i = temp.length;
      -            while ( i-- ) {
      -                if ( (elem = temp[i]) ) {
      -                    matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
      -                }
      -            }
      -        }
      -
      -        if ( seed ) {
      -            if ( postFinder || preFilter ) {
      -                if ( postFinder ) {
      -                    // Get the final matcherOut by condensing this intermediate into postFinder contexts
      -                    temp = [];
      -                    i = matcherOut.length;
      -                    while ( i-- ) {
      -                        if ( (elem = matcherOut[i]) ) {
      -                            // Restore matcherIn since elem is not yet a final match
      -                            temp.push( (matcherIn[i] = elem) );
      -                        }
      -                    }
      -                    postFinder( null, (matcherOut = []), temp, xml );
      -                }
      -
      -                // Move matched elements from seed to results to keep them synchronized
      -                i = matcherOut.length;
      -                while ( i-- ) {
      -                    if ( (elem = matcherOut[i]) &&
      -                        (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
      -
      -                        seed[temp] = !(results[temp] = elem);
      -                    }
      -                }
      -            }
      -
      -        // Add elements to results, through postFinder if defined
      -        } else {
      -            matcherOut = condense(
      -                matcherOut === results ?
      -                    matcherOut.splice( preexisting, matcherOut.length ) :
      -                    matcherOut
      -            );
      -            if ( postFinder ) {
      -                postFinder( null, results, matcherOut, xml );
      -            } else {
      -                push.apply( results, matcherOut );
      -            }
      -        }
      -    });
      -}
      -
      -function matcherFromTokens( tokens ) {
      -    var checkContext, matcher, j,
      -        len = tokens.length,
      -        leadingRelative = Expr.relative[ tokens[0].type ],
      -        implicitRelative = leadingRelative || Expr.relative[" "],
      -        i = leadingRelative ? 1 : 0,
      -
      -        // The foundational matcher ensures that elements are reachable from top-level context(s)
      -        matchContext = addCombinator( function( elem ) {
      -            return elem === checkContext;
      -        }, implicitRelative, true ),
      -        matchAnyContext = addCombinator( function( elem ) {
      -            return indexOf.call( checkContext, elem ) > -1;
      -        }, implicitRelative, true ),
      -        matchers = [ function( elem, context, xml ) {
      -            return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
      -                (checkContext = context).nodeType ?
      -                    matchContext( elem, context, xml ) :
      -                    matchAnyContext( elem, context, xml ) );
      -        } ];
      -
      -    for ( ; i < len; i++ ) {
      -        if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
      -            matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
      -        } else {
      -            matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
      -
      -            // Return special upon seeing a positional matcher
      -            if ( matcher[ expando ] ) {
      -                // Find the next relative operator (if any) for proper handling
      -                j = ++i;
      -                for ( ; j < len; j++ ) {
      -                    if ( Expr.relative[ tokens[j].type ] ) {
      -                        break;
      -                    }
      -                }
      -                return setMatcher(
      -                    i > 1 && elementMatcher( matchers ),
      -                    i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ),
      -                    matcher,
      -                    i < j && matcherFromTokens( tokens.slice( i, j ) ),
      -                    j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
      -                    j < len && toSelector( tokens )
      -                );
      -            }
      -            matchers.push( matcher );
      -        }
      -    }
      -
      -    return elementMatcher( matchers );
      -}
      -
      -function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
      -    // A counter to specify which element is currently being matched
      -    var matcherCachedRuns = 0,
      -        bySet = setMatchers.length > 0,
      -        byElement = elementMatchers.length > 0,
      -        superMatcher = function( seed, context, xml, results, expandContext ) {
      -            var elem, j, matcher,
      -                setMatched = [],
      -                matchedCount = 0,
      -                i = "0",
      -                unmatched = seed && [],
      -                outermost = expandContext != null,
      -                contextBackup = outermostContext,
      -                // We must always have either seed elements or context
      -                elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
      -                // Use integer dirruns iff this is the outermost matcher
      -                dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
      -
      -            if ( outermost ) {
      -                outermostContext = context !== document && context;
      -                cachedruns = matcherCachedRuns;
      -            }
      -
      -            // Add elements passing elementMatchers directly to results
      -            // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
      -            for ( ; (elem = elems[i]) != null; i++ ) {
      -                if ( byElement && elem ) {
      -                    j = 0;
      -                    while ( (matcher = elementMatchers[j++]) ) {
      -                        if ( matcher( elem, context, xml ) ) {
      -                            results.push( elem );
      -                            break;
      -                        }
      -                    }
      -                    if ( outermost ) {
      -                        dirruns = dirrunsUnique;
      -                        cachedruns = ++matcherCachedRuns;
      -                    }
      -                }
      -
      -                // Track unmatched elements for set filters
      -                if ( bySet ) {
      -                    // They will have gone through all possible matchers
      -                    if ( (elem = !matcher && elem) ) {
      -                        matchedCount--;
      -                    }
      -
      -                    // Lengthen the array for every element, matched or not
      -                    if ( seed ) {
      -                        unmatched.push( elem );
      -                    }
      -                }
      -            }
      -
      -            // Apply set filters to unmatched elements
      -            matchedCount += i;
      -            if ( bySet && i !== matchedCount ) {
      -                j = 0;
      -                while ( (matcher = setMatchers[j++]) ) {
      -                    matcher( unmatched, setMatched, context, xml );
      -                }
      -
      -                if ( seed ) {
      -                    // Reintegrate element matches to eliminate the need for sorting
      -                    if ( matchedCount > 0 ) {
      -                        while ( i-- ) {
      -                            if ( !(unmatched[i] || setMatched[i]) ) {
      -                                setMatched[i] = pop.call( results );
      -                            }
      -                        }
      -                    }
      -
      -                    // Discard index placeholder values to get only actual matches
      -                    setMatched = condense( setMatched );
      -                }
      -
      -                // Add matches to results
      -                push.apply( results, setMatched );
      -
      -                // Seedless set matches succeeding multiple successful matchers stipulate sorting
      -                if ( outermost && !seed && setMatched.length > 0 &&
      -                    ( matchedCount + setMatchers.length ) > 1 ) {
      -
      -                    Sizzle.uniqueSort( results );
      -                }
      -            }
      -
      -            // Override manipulation of globals by nested matchers
      -            if ( outermost ) {
      -                dirruns = dirrunsUnique;
      -                outermostContext = contextBackup;
      -            }
      -
      -            return unmatched;
      -        };
      -
      -    return bySet ?
      -        markFunction( superMatcher ) :
      -        superMatcher;
      -}
      -
      -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
      -    var i,
      -        setMatchers = [],
      -        elementMatchers = [],
      -        cached = compilerCache[ selector + " " ];
      -
      -    if ( !cached ) {
      -        // Generate a function of recursive functions that can be used to check each element
      -        if ( !group ) {
      -            group = tokenize( selector );
      -        }
      -        i = group.length;
      -        while ( i-- ) {
      -            cached = matcherFromTokens( group[i] );
      -            if ( cached[ expando ] ) {
      -                setMatchers.push( cached );
      -            } else {
      -                elementMatchers.push( cached );
      -            }
      -        }
      -
      -        // Cache the compiled function
      -        cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
      -    }
      -    return cached;
      -};
      -
      -function multipleContexts( selector, contexts, results ) {
      -    var i = 0,
      -        len = contexts.length;
      -    for ( ; i < len; i++ ) {
      -        Sizzle( selector, contexts[i], results );
      -    }
      -    return results;
      -}
      -
      -function select( selector, context, results, seed ) {
      -    var i, tokens, token, type, find,
      -        match = tokenize( selector );
      -
      -    if ( !seed ) {
      -        // Try to minimize operations if there is only one group
      -        if ( match.length === 1 ) {
      -
      -            // Take a shortcut and set the context if the root selector is an ID
      -            tokens = match[0] = match[0].slice( 0 );
      -            if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
      -                    context.nodeType === 9 && !documentIsXML &&
      -                    Expr.relative[ tokens[1].type ] ) {
      -
      -                context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0];
      -                if ( !context ) {
      -                    return results;
      -                }
      -
      -                selector = selector.slice( tokens.shift().value.length );
      -            }
      -
      -            // Fetch a seed set for right-to-left matching
      -            i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
      -            while ( i-- ) {
      -                token = tokens[i];
      -
      -                // Abort if we hit a combinator
      -                if ( Expr.relative[ (type = token.type) ] ) {
      -                    break;
      -                }
      -                if ( (find = Expr.find[ type ]) ) {
      -                    // Search, expanding context for leading sibling combinators
      -                    if ( (seed = find(
      -                        token.matches[0].replace( runescape, funescape ),
      -                        rsibling.test( tokens[0].type ) && context.parentNode || context
      -                    )) ) {
      -
      -                        // If seed is empty or no tokens remain, we can return early
      -                        tokens.splice( i, 1 );
      -                        selector = seed.length && toSelector( tokens );
      -                        if ( !selector ) {
      -                            push.apply( results, slice.call( seed, 0 ) );
      -                            return results;
      -                        }
      -
      -                        break;
      -                    }
      -                }
      -            }
      -        }
      -    }
      -
      -    // Compile and execute a filtering function
      -    // Provide `match` to avoid retokenization if we modified the selector above
      -    compile( selector, match )(
      -        seed,
      -        context,
      -        documentIsXML,
      -        results,
      -        rsibling.test( selector )
      -    );
      -    return results;
      -}
      -
      -// Deprecated
      -Expr.pseudos["nth"] = Expr.pseudos["eq"];
      -
      -// Easy API for creating new setFilters
      -function setFilters() {}
      -Expr.filters = setFilters.prototype = Expr.pseudos;
      -Expr.setFilters = new setFilters();
      -
      -// Initialize with the default document
      -setDocument();
      -
      -// Override sizzle attribute retrieval
      -Sizzle.attr = jQuery.attr;
      -jQuery.find = Sizzle;
      -jQuery.expr = Sizzle.selectors;
      -jQuery.expr[":"] = jQuery.expr.pseudos;
      -jQuery.unique = Sizzle.uniqueSort;
      -jQuery.text = Sizzle.getText;
      -jQuery.isXMLDoc = Sizzle.isXML;
      -jQuery.contains = Sizzle.contains;
      -
      -
      -})( window );
      -var runtil = /Until$/,
      -    rparentsprev = /^(?:parents|prev(?:Until|All))/,
      -    isSimple = /^.[^:#\[\.,]*$/,
      -    rneedsContext = jQuery.expr.match.needsContext,
      -    // methods guaranteed to produce a unique set when starting from a unique set
      -    guaranteedUnique = {
      -        children: true,
      -        contents: true,
      -        next: true,
      -        prev: true
      -    };
      -
      -jQuery.fn.extend({
      -    find: function( selector ) {
      -        var i, ret, self,
      -            len = this.length;
      -
      -        if ( typeof selector !== "string" ) {
      -            self = this;
      -            return this.pushStack( jQuery( selector ).filter(function() {
      -                for ( i = 0; i < len; i++ ) {
      -                    if ( jQuery.contains( self[ i ], this ) ) {
      -                        return true;
      -                    }
      -                }
      -            }) );
      -        }
      -
      -        ret = [];
      -        for ( i = 0; i < len; i++ ) {
      -            jQuery.find( selector, this[ i ], ret );
      -        }
      -
      -        // Needed because $( selector, context ) becomes $( context ).find( selector )
      -        ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
      -        ret.selector = ( this.selector ? this.selector + " " : "" ) + selector;
      -        return ret;
      -    },
      -
      -    has: function( target ) {
      -        var i,
      -            targets = jQuery( target, this ),
      -            len = targets.length;
      -
      -        return this.filter(function() {
      -            for ( i = 0; i < len; i++ ) {
      -                if ( jQuery.contains( this, targets[i] ) ) {
      -                    return true;
      -                }
      -            }
      -        });
      -    },
      -
      -    not: function( selector ) {
      -        return this.pushStack( winnow(this, selector, false) );
      -    },
      -
      -    filter: function( selector ) {
      -        return this.pushStack( winnow(this, selector, true) );
      -    },
      -
      -    is: function( selector ) {
      -        return !!selector && (
      -            typeof selector === "string" ?
      -                // If this is a positional/relative selector, check membership in the returned set
      -                // so $("p:first").is("p:last") won't return true for a doc with two "p".
      -                rneedsContext.test( selector ) ?
      -                    jQuery( selector, this.context ).index( this[0] ) >= 0 :
      -                    jQuery.filter( selector, this ).length > 0 :
      -                this.filter( selector ).length > 0 );
      -    },
      -
      -    closest: function( selectors, context ) {
      -        var cur,
      -            i = 0,
      -            l = this.length,
      -            ret = [],
      -            pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
      -                jQuery( selectors, context || this.context ) :
      -                0;
      -
      -        for ( ; i < l; i++ ) {
      -            cur = this[i];
      -
      -            while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {
      -                if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
      -                    ret.push( cur );
      -                    break;
      -                }
      -                cur = cur.parentNode;
      -            }
      -        }
      -
      -        return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
      -    },
      -
      -    // Determine the position of an element within
      -    // the matched set of elements
      -    index: function( elem ) {
      -
      -        // No argument, return index in parent
      -        if ( !elem ) {
      -            return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
      -        }
      -
      -        // index in selector
      -        if ( typeof elem === "string" ) {
      -            return jQuery.inArray( this[0], jQuery( elem ) );
      -        }
      -
      -        // Locate the position of the desired element
      -        return jQuery.inArray(
      -            // If it receives a jQuery object, the first element is used
      -            elem.jquery ? elem[0] : elem, this );
      -    },
      -
      -    add: function( selector, context ) {
      -        var set = typeof selector === "string" ?
      -                jQuery( selector, context ) :
      -                jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
      -            all = jQuery.merge( this.get(), set );
      -
      -        return this.pushStack( jQuery.unique(all) );
      -    },
      -
      -    addBack: function( selector ) {
      -        return this.add( selector == null ?
      -            this.prevObject : this.prevObject.filter(selector)
      -        );
      -    }
      -});
      -
      -jQuery.fn.andSelf = jQuery.fn.addBack;
      -
      -function sibling( cur, dir ) {
      -    do {
      -        cur = cur[ dir ];
      -    } while ( cur && cur.nodeType !== 1 );
      -
      -    return cur;
      -}
      -
      -jQuery.each({
      -    parent: function( elem ) {
      -        var parent = elem.parentNode;
      -        return parent && parent.nodeType !== 11 ? parent : null;
      -    },
      -    parents: function( elem ) {
      -        return jQuery.dir( elem, "parentNode" );
      -    },
      -    parentsUntil: function( elem, i, until ) {
      -        return jQuery.dir( elem, "parentNode", until );
      -    },
      -    next: function( elem ) {
      -        return sibling( elem, "nextSibling" );
      -    },
      -    prev: function( elem ) {
      -        return sibling( elem, "previousSibling" );
      -    },
      -    nextAll: function( elem ) {
      -        return jQuery.dir( elem, "nextSibling" );
      -    },
      -    prevAll: function( elem ) {
      -        return jQuery.dir( elem, "previousSibling" );
      -    },
      -    nextUntil: function( elem, i, until ) {
      -        return jQuery.dir( elem, "nextSibling", until );
      -    },
      -    prevUntil: function( elem, i, until ) {
      -        return jQuery.dir( elem, "previousSibling", until );
      -    },
      -    siblings: function( elem ) {
      -        return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
      -    },
      -    children: function( elem ) {
      -        return jQuery.sibling( elem.firstChild );
      -    },
      -    contents: function( elem ) {
      -        return jQuery.nodeName( elem, "iframe" ) ?
      -            elem.contentDocument || elem.contentWindow.document :
      -            jQuery.merge( [], elem.childNodes );
      -    }
      -}, function( name, fn ) {
      -    jQuery.fn[ name ] = function( until, selector ) {
      -        var ret = jQuery.map( this, fn, until );
      -
      -        if ( !runtil.test( name ) ) {
      -            selector = until;
      -        }
      -
      -        if ( selector && typeof selector === "string" ) {
      -            ret = jQuery.filter( selector, ret );
      -        }
      -
      -        ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
      -
      -        if ( this.length > 1 && rparentsprev.test( name ) ) {
      -            ret = ret.reverse();
      -        }
      -
      -        return this.pushStack( ret );
      -    };
      -});
      -
      -jQuery.extend({
      -    filter: function( expr, elems, not ) {
      -        if ( not ) {
      -            expr = ":not(" + expr + ")";
      -        }
      -
      -        return elems.length === 1 ?
      -            jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
      -            jQuery.find.matches(expr, elems);
      -    },
      -
      -    dir: function( elem, dir, until ) {
      -        var matched = [],
      -            cur = elem[ dir ];
      -
      -        while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
      -            if ( cur.nodeType === 1 ) {
      -                matched.push( cur );
      -            }
      -            cur = cur[dir];
      -        }
      -        return matched;
      -    },
      -
      -    sibling: function( n, elem ) {
      -        var r = [];
      -
      -        for ( ; n; n = n.nextSibling ) {
      -            if ( n.nodeType === 1 && n !== elem ) {
      -                r.push( n );
      -            }
      -        }
      -
      -        return r;
      -    }
      -});
      -
      -// Implement the identical functionality for filter and not
      -function winnow( elements, qualifier, keep ) {
      -
      -    // Can't pass null or undefined to indexOf in Firefox 4
      -    // Set to 0 to skip string check
      -    qualifier = qualifier || 0;
      -
      -    if ( jQuery.isFunction( qualifier ) ) {
      -        return jQuery.grep(elements, function( elem, i ) {
      -            var retVal = !!qualifier.call( elem, i, elem );
      -            return retVal === keep;
      -        });
      -
      -    } else if ( qualifier.nodeType ) {
      -        return jQuery.grep(elements, function( elem ) {
      -            return ( elem === qualifier ) === keep;
      -        });
      -
      -    } else if ( typeof qualifier === "string" ) {
      -        var filtered = jQuery.grep(elements, function( elem ) {
      -            return elem.nodeType === 1;
      -        });
      -
      -        if ( isSimple.test( qualifier ) ) {
      -            return jQuery.filter(qualifier, filtered, !keep);
      -        } else {
      -            qualifier = jQuery.filter( qualifier, filtered );
      -        }
      -    }
      -
      -    return jQuery.grep(elements, function( elem ) {
      -        return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
      -    });
      -}
      -function createSafeFragment( document ) {
      -    var list = nodeNames.split( "|" ),
      -        safeFrag = document.createDocumentFragment();
      -
      -    if ( safeFrag.createElement ) {
      -        while ( list.length ) {
      -            safeFrag.createElement(
      -                list.pop()
      -            );
      -        }
      -    }
      -    return safeFrag;
      -}
      -
      -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
      -        "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
      -    rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
      -    rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
      -    rleadingWhitespace = /^\s+/,
      -    rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
      -    rtagName = /<([\w:]+)/,
      -    rtbody = /<tbody/i,
      -    rhtml = /<|&#?\w+;/,
      -    rnoInnerhtml = /<(?:script|style|link)/i,
      -    manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
      -    // checked="checked" or checked
      -    rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
      -    rscriptType = /^$|\/(?:java|ecma)script/i,
      -    rscriptTypeMasked = /^true\/(.*)/,
      -    rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
      -
      -    // We have to close these tags to support XHTML (#13200)
      -    wrapMap = {
      -        option: [ 1, "<select multiple='multiple'>", "</select>" ],
      -        legend: [ 1, "<fieldset>", "</fieldset>" ],
      -        area: [ 1, "<map>", "</map>" ],
      -        param: [ 1, "<object>", "</object>" ],
      -        thead: [ 1, "<table>", "</table>" ],
      -        tr: [ 2, "<table><tbody>", "</tbody></table>" ],
      -        col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
      -        td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
      -
      -        // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
      -        // unless wrapped in a div with non-breaking characters in front of it.
      -        _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
      -    },
      -    safeFragment = createSafeFragment( document ),
      -    fragmentDiv = safeFragment.appendChild( document.createElement("div") );
      -
      -wrapMap.optgroup = wrapMap.option;
      -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
      -wrapMap.th = wrapMap.td;
      -
      -jQuery.fn.extend({
      -    text: function( value ) {
      -        return jQuery.access( this, function( value ) {
      -            return value === undefined ?
      -                jQuery.text( this ) :
      -                this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
      -        }, null, value, arguments.length );
      -    },
      -
      -    wrapAll: function( html ) {
      -        if ( jQuery.isFunction( html ) ) {
      -            return this.each(function(i) {
      -                jQuery(this).wrapAll( html.call(this, i) );
      -            });
      -        }
      -
      -        if ( this[0] ) {
      -            // The elements to wrap the target around
      -            var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
      -
      -            if ( this[0].parentNode ) {
      -                wrap.insertBefore( this[0] );
      -            }
      -
      -            wrap.map(function() {
      -                var elem = this;
      -
      -                while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
      -                    elem = elem.firstChild;
      -                }
      -
      -                return elem;
      -            }).append( this );
      -        }
      -
      -        return this;
      -    },
      -
      -    wrapInner: function( html ) {
      -        if ( jQuery.isFunction( html ) ) {
      -            return this.each(function(i) {
      -                jQuery(this).wrapInner( html.call(this, i) );
      -            });
      -        }
      -
      -        return this.each(function() {
      -            var self = jQuery( this ),
      -                contents = self.contents();
      -
      -            if ( contents.length ) {
      -                contents.wrapAll( html );
      -
      -            } else {
      -                self.append( html );
      -            }
      -        });
      -    },
      -
      -    wrap: function( html ) {
      -        var isFunction = jQuery.isFunction( html );
      -
      -        return this.each(function(i) {
      -            jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
      -        });
      -    },
      -
      -    unwrap: function() {
      -        return this.parent().each(function() {
      -            if ( !jQuery.nodeName( this, "body" ) ) {
      -                jQuery( this ).replaceWith( this.childNodes );
      -            }
      -        }).end();
      -    },
      -
      -    append: function() {
      -        return this.domManip(arguments, true, function( elem ) {
      -            if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -                this.appendChild( elem );
      -            }
      -        });
      -    },
      -
      -    prepend: function() {
      -        return this.domManip(arguments, true, function( elem ) {
      -            if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -                this.insertBefore( elem, this.firstChild );
      -            }
      -        });
      -    },
      -
      -    before: function() {
      -        return this.domManip( arguments, false, function( elem ) {
      -            if ( this.parentNode ) {
      -                this.parentNode.insertBefore( elem, this );
      -            }
      -        });
      -    },
      -
      -    after: function() {
      -        return this.domManip( arguments, false, function( elem ) {
      -            if ( this.parentNode ) {
      -                this.parentNode.insertBefore( elem, this.nextSibling );
      -            }
      -        });
      -    },
      -
      -    // keepData is for internal use only--do not document
      -    remove: function( selector, keepData ) {
      -        var elem,
      -            i = 0;
      -
      -        for ( ; (elem = this[i]) != null; i++ ) {
      -            if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) {
      -                if ( !keepData && elem.nodeType === 1 ) {
      -                    jQuery.cleanData( getAll( elem ) );
      -                }
      -
      -                if ( elem.parentNode ) {
      -                    if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
      -                        setGlobalEval( getAll( elem, "script" ) );
      -                    }
      -                    elem.parentNode.removeChild( elem );
      -                }
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    empty: function() {
      -        var elem,
      -            i = 0;
      -
      -        for ( ; (elem = this[i]) != null; i++ ) {
      -            // Remove element nodes and prevent memory leaks
      -            if ( elem.nodeType === 1 ) {
      -                jQuery.cleanData( getAll( elem, false ) );
      -            }
      -
      -            // Remove any remaining nodes
      -            while ( elem.firstChild ) {
      -                elem.removeChild( elem.firstChild );
      -            }
      -
      -            // If this is a select, ensure that it displays empty (#12336)
      -            // Support: IE<9
      -            if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
      -                elem.options.length = 0;
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    clone: function( dataAndEvents, deepDataAndEvents ) {
      -        dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
      -        deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
      -
      -        return this.map( function () {
      -            return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
      -        });
      -    },
      -
      -    html: function( value ) {
      -        return jQuery.access( this, function( value ) {
      -            var elem = this[0] || {},
      -                i = 0,
      -                l = this.length;
      -
      -            if ( value === undefined ) {
      -                return elem.nodeType === 1 ?
      -                    elem.innerHTML.replace( rinlinejQuery, "" ) :
      -                    undefined;
      -            }
      -
      -            // See if we can take a shortcut and just use innerHTML
      -            if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
      -                ( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&
      -                ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
      -                !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
      -
      -                value = value.replace( rxhtmlTag, "<$1></$2>" );
      -
      -                try {
      -                    for (; i < l; i++ ) {
      -                        // Remove element nodes and prevent memory leaks
      -                        elem = this[i] || {};
      -                        if ( elem.nodeType === 1 ) {
      -                            jQuery.cleanData( getAll( elem, false ) );
      -                            elem.innerHTML = value;
      -                        }
      -                    }
      -
      -                    elem = 0;
      -
      -                // If using innerHTML throws an exception, use the fallback method
      -                } catch(e) {}
      -            }
      -
      -            if ( elem ) {
      -                this.empty().append( value );
      -            }
      -        }, null, value, arguments.length );
      -    },
      -
      -    replaceWith: function( value ) {
      -        var isFunc = jQuery.isFunction( value );
      -
      -        // Make sure that the elements are removed from the DOM before they are inserted
      -        // this can help fix replacing a parent with child elements
      -        if ( !isFunc && typeof value !== "string" ) {
      -            value = jQuery( value ).not( this ).detach();
      -        }
      -
      -        return this.domManip( [ value ], true, function( elem ) {
      -            var next = this.nextSibling,
      -                parent = this.parentNode;
      -
      -            if ( parent ) {
      -                jQuery( this ).remove();
      -                parent.insertBefore( elem, next );
      -            }
      -        });
      -    },
      -
      -    detach: function( selector ) {
      -        return this.remove( selector, true );
      -    },
      -
      -    domManip: function( args, table, callback ) {
      -
      -        // Flatten any nested arrays
      -        args = core_concat.apply( [], args );
      -
      -        var first, node, hasScripts,
      -            scripts, doc, fragment,
      -            i = 0,
      -            l = this.length,
      -            set = this,
      -            iNoClone = l - 1,
      -            value = args[0],
      -            isFunction = jQuery.isFunction( value );
      -
      -        // We can't cloneNode fragments that contain checked, in WebKit
      -        if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
      -            return this.each(function( index ) {
      -                var self = set.eq( index );
      -                if ( isFunction ) {
      -                    args[0] = value.call( this, index, table ? self.html() : undefined );
      -                }
      -                self.domManip( args, table, callback );
      -            });
      -        }
      -
      -        if ( l ) {
      -            fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
      -            first = fragment.firstChild;
      -
      -            if ( fragment.childNodes.length === 1 ) {
      -                fragment = first;
      -            }
      -
      -            if ( first ) {
      -                table = table && jQuery.nodeName( first, "tr" );
      -                scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
      -                hasScripts = scripts.length;
      -
      -                // Use the original fragment for the last item instead of the first because it can end up
      -                // being emptied incorrectly in certain situations (#8070).
      -                for ( ; i < l; i++ ) {
      -                    node = fragment;
      -
      -                    if ( i !== iNoClone ) {
      -                        node = jQuery.clone( node, true, true );
      -
      -                        // Keep references to cloned scripts for later restoration
      -                        if ( hasScripts ) {
      -                            jQuery.merge( scripts, getAll( node, "script" ) );
      -                        }
      -                    }
      -
      -                    callback.call(
      -                        table && jQuery.nodeName( this[i], "table" ) ?
      -                            findOrAppend( this[i], "tbody" ) :
      -                            this[i],
      -                        node,
      -                        i
      -                    );
      -                }
      -
      -                if ( hasScripts ) {
      -                    doc = scripts[ scripts.length - 1 ].ownerDocument;
      -
      -                    // Reenable scripts
      -                    jQuery.map( scripts, restoreScript );
      -
      -                    // Evaluate executable scripts on first document insertion
      -                    for ( i = 0; i < hasScripts; i++ ) {
      -                        node = scripts[ i ];
      -                        if ( rscriptType.test( node.type || "" ) &&
      -                            !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
      -
      -                            if ( node.src ) {
      -                                // Hope ajax is available...
      -                                jQuery.ajax({
      -                                    url: node.src,
      -                                    type: "GET",
      -                                    dataType: "script",
      -                                    async: false,
      -                                    global: false,
      -                                    "throws": true
      -                                });
      -                            } else {
      -                                jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                // Fix #11809: Avoid leaking memory
      -                fragment = first = null;
      -            }
      -        }
      -
      -        return this;
      -    }
      -});
      -
      -function findOrAppend( elem, tag ) {
      -    return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );
      -}
      -
      -// Replace/restore the type attribute of script elements for safe DOM manipulation
      -function disableScript( elem ) {
      -    var attr = elem.getAttributeNode("type");
      -    elem.type = ( attr && attr.specified ) + "/" + elem.type;
      -    return elem;
      -}
      -function restoreScript( elem ) {
      -    var match = rscriptTypeMasked.exec( elem.type );
      -    if ( match ) {
      -        elem.type = match[1];
      -    } else {
      -        elem.removeAttribute("type");
      -    }
      -    return elem;
      -}
      -
      -// Mark scripts as having already been evaluated
      -function setGlobalEval( elems, refElements ) {
      -    var elem,
      -        i = 0;
      -    for ( ; (elem = elems[i]) != null; i++ ) {
      -        jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
      -    }
      -}
      -
      -function cloneCopyEvent( src, dest ) {
      -
      -    if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
      -        return;
      -    }
      -
      -    var type, i, l,
      -        oldData = jQuery._data( src ),
      -        curData = jQuery._data( dest, oldData ),
      -        events = oldData.events;
      -
      -    if ( events ) {
      -        delete curData.handle;
      -        curData.events = {};
      -
      -        for ( type in events ) {
      -            for ( i = 0, l = events[ type ].length; i < l; i++ ) {
      -                jQuery.event.add( dest, type, events[ type ][ i ] );
      -            }
      -        }
      -    }
      -
      -    // make the cloned public data object a copy from the original
      -    if ( curData.data ) {
      -        curData.data = jQuery.extend( {}, curData.data );
      -    }
      -}
      -
      -function fixCloneNodeIssues( src, dest ) {
      -    var nodeName, e, data;
      -
      -    // We do not need to do anything for non-Elements
      -    if ( dest.nodeType !== 1 ) {
      -        return;
      -    }
      -
      -    nodeName = dest.nodeName.toLowerCase();
      -
      -    // IE6-8 copies events bound via attachEvent when using cloneNode.
      -    if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
      -        data = jQuery._data( dest );
      -
      -        for ( e in data.events ) {
      -            jQuery.removeEvent( dest, e, data.handle );
      -        }
      -
      -        // Event data gets referenced instead of copied if the expando gets copied too
      -        dest.removeAttribute( jQuery.expando );
      -    }
      -
      -    // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
      -    if ( nodeName === "script" && dest.text !== src.text ) {
      -        disableScript( dest ).text = src.text;
      -        restoreScript( dest );
      -
      -    // IE6-10 improperly clones children of object elements using classid.
      -    // IE10 throws NoModificationAllowedError if parent is null, #12132.
      -    } else if ( nodeName === "object" ) {
      -        if ( dest.parentNode ) {
      -            dest.outerHTML = src.outerHTML;
      -        }
      -
      -        // This path appears unavoidable for IE9. When cloning an object
      -        // element in IE9, the outerHTML strategy above is not sufficient.
      -        // If the src has innerHTML and the destination does not,
      -        // copy the src.innerHTML into the dest.innerHTML. #10324
      -        if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
      -            dest.innerHTML = src.innerHTML;
      -        }
      -
      -    } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
      -        // IE6-8 fails to persist the checked state of a cloned checkbox
      -        // or radio button. Worse, IE6-7 fail to give the cloned element
      -        // a checked appearance if the defaultChecked value isn't also set
      -
      -        dest.defaultChecked = dest.checked = src.checked;
      -
      -        // IE6-7 get confused and end up setting the value of a cloned
      -        // checkbox/radio button to an empty string instead of "on"
      -        if ( dest.value !== src.value ) {
      -            dest.value = src.value;
      -        }
      -
      -    // IE6-8 fails to return the selected option to the default selected
      -    // state when cloning options
      -    } else if ( nodeName === "option" ) {
      -        dest.defaultSelected = dest.selected = src.defaultSelected;
      -
      -    // IE6-8 fails to set the defaultValue to the correct value when
      -    // cloning other types of input fields
      -    } else if ( nodeName === "input" || nodeName === "textarea" ) {
      -        dest.defaultValue = src.defaultValue;
      -    }
      -}
      -
      -jQuery.each({
      -    appendTo: "append",
      -    prependTo: "prepend",
      -    insertBefore: "before",
      -    insertAfter: "after",
      -    replaceAll: "replaceWith"
      -}, function( name, original ) {
      -    jQuery.fn[ name ] = function( selector ) {
      -        var elems,
      -            i = 0,
      -            ret = [],
      -            insert = jQuery( selector ),
      -            last = insert.length - 1;
      -
      -        for ( ; i <= last; i++ ) {
      -            elems = i === last ? this : this.clone(true);
      -            jQuery( insert[i] )[ original ]( elems );
      -
      -            // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
      -            core_push.apply( ret, elems.get() );
      -        }
      -
      -        return this.pushStack( ret );
      -    };
      -});
      -
      -function getAll( context, tag ) {
      -    var elems, elem,
      -        i = 0,
      -        found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
      -            typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
      -            undefined;
      -
      -    if ( !found ) {
      -        for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
      -            if ( !tag || jQuery.nodeName( elem, tag ) ) {
      -                found.push( elem );
      -            } else {
      -                jQuery.merge( found, getAll( elem, tag ) );
      -            }
      -        }
      -    }
      -
      -    return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
      -        jQuery.merge( [ context ], found ) :
      -        found;
      -}
      -
      -// Used in buildFragment, fixes the defaultChecked property
      -function fixDefaultChecked( elem ) {
      -    if ( manipulation_rcheckableType.test( elem.type ) ) {
      -        elem.defaultChecked = elem.checked;
      -    }
      -}
      -
      -jQuery.extend({
      -    clone: function( elem, dataAndEvents, deepDataAndEvents ) {
      -        var destElements, node, clone, i, srcElements,
      -            inPage = jQuery.contains( elem.ownerDocument, elem );
      -
      -        if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
      -            clone = elem.cloneNode( true );
      -
      -        // IE<=8 does not properly clone detached, unknown element nodes
      -        } else {
      -            fragmentDiv.innerHTML = elem.outerHTML;
      -            fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
      -        }
      -
      -        if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
      -                (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
      -
      -            // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
      -            destElements = getAll( clone );
      -            srcElements = getAll( elem );
      -
      -            // Fix all IE cloning issues
      -            for ( i = 0; (node = srcElements[i]) != null; ++i ) {
      -                // Ensure that the destination node is not null; Fixes #9587
      -                if ( destElements[i] ) {
      -                    fixCloneNodeIssues( node, destElements[i] );
      -                }
      -            }
      -        }
      -
      -        // Copy the events from the original to the clone
      -        if ( dataAndEvents ) {
      -            if ( deepDataAndEvents ) {
      -                srcElements = srcElements || getAll( elem );
      -                destElements = destElements || getAll( clone );
      -
      -                for ( i = 0; (node = srcElements[i]) != null; i++ ) {
      -                    cloneCopyEvent( node, destElements[i] );
      -                }
      -            } else {
      -                cloneCopyEvent( elem, clone );
      -            }
      -        }
      -
      -        // Preserve script evaluation history
      -        destElements = getAll( clone, "script" );
      -        if ( destElements.length > 0 ) {
      -            setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
      -        }
      -
      -        destElements = srcElements = node = null;
      -
      -        // Return the cloned set
      -        return clone;
      -    },
      -
      -    buildFragment: function( elems, context, scripts, selection ) {
      -        var j, elem, contains,
      -            tmp, tag, tbody, wrap,
      -            l = elems.length,
      -
      -            // Ensure a safe fragment
      -            safe = createSafeFragment( context ),
      -
      -            nodes = [],
      -            i = 0;
      -
      -        for ( ; i < l; i++ ) {
      -            elem = elems[ i ];
      -
      -            if ( elem || elem === 0 ) {
      -
      -                // Add nodes directly
      -                if ( jQuery.type( elem ) === "object" ) {
      -                    jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
      -
      -                // Convert non-html into a text node
      -                } else if ( !rhtml.test( elem ) ) {
      -                    nodes.push( context.createTextNode( elem ) );
      -
      -                // Convert html into DOM nodes
      -                } else {
      -                    tmp = tmp || safe.appendChild( context.createElement("div") );
      -
      -                    // Deserialize a standard representation
      -                    tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
      -                    wrap = wrapMap[ tag ] || wrapMap._default;
      -
      -                    tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
      -
      -                    // Descend through wrappers to the right content
      -                    j = wrap[0];
      -                    while ( j-- ) {
      -                        tmp = tmp.lastChild;
      -                    }
      -
      -                    // Manually add leading whitespace removed by IE
      -                    if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
      -                        nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
      -                    }
      -
      -                    // Remove IE's autoinserted <tbody> from table fragments
      -                    if ( !jQuery.support.tbody ) {
      -
      -                        // String was a <table>, *may* have spurious <tbody>
      -                        elem = tag === "table" && !rtbody.test( elem ) ?
      -                            tmp.firstChild :
      -
      -                            // String was a bare <thead> or <tfoot>
      -                            wrap[1] === "<table>" && !rtbody.test( elem ) ?
      -                                tmp :
      -                                0;
      -
      -                        j = elem && elem.childNodes.length;
      -                        while ( j-- ) {
      -                            if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
      -                                elem.removeChild( tbody );
      -                            }
      -                        }
      -                    }
      -
      -                    jQuery.merge( nodes, tmp.childNodes );
      -
      -                    // Fix #12392 for WebKit and IE > 9
      -                    tmp.textContent = "";
      -
      -                    // Fix #12392 for oldIE
      -                    while ( tmp.firstChild ) {
      -                        tmp.removeChild( tmp.firstChild );
      -                    }
      -
      -                    // Remember the top-level container for proper cleanup
      -                    tmp = safe.lastChild;
      -                }
      -            }
      -        }
      -
      -        // Fix #11356: Clear elements from fragment
      -        if ( tmp ) {
      -            safe.removeChild( tmp );
      -        }
      -
      -        // Reset defaultChecked for any radios and checkboxes
      -        // about to be appended to the DOM in IE 6/7 (#8060)
      -        if ( !jQuery.support.appendChecked ) {
      -            jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
      -        }
      -
      -        i = 0;
      -        while ( (elem = nodes[ i++ ]) ) {
      -
      -            // #4087 - If origin and destination elements are the same, and this is
      -            // that element, do not do anything
      -            if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
      -                continue;
      -            }
      -
      -            contains = jQuery.contains( elem.ownerDocument, elem );
      -
      -            // Append to fragment
      -            tmp = getAll( safe.appendChild( elem ), "script" );
      -
      -            // Preserve script evaluation history
      -            if ( contains ) {
      -                setGlobalEval( tmp );
      -            }
      -
      -            // Capture executables
      -            if ( scripts ) {
      -                j = 0;
      -                while ( (elem = tmp[ j++ ]) ) {
      -                    if ( rscriptType.test( elem.type || "" ) ) {
      -                        scripts.push( elem );
      -                    }
      -                }
      -            }
      -        }
      -
      -        tmp = null;
      -
      -        return safe;
      -    },
      -
      -    cleanData: function( elems, /* internal */ acceptData ) {
      -        var elem, type, id, data,
      -            i = 0,
      -            internalKey = jQuery.expando,
      -            cache = jQuery.cache,
      -            deleteExpando = jQuery.support.deleteExpando,
      -            special = jQuery.event.special;
      -
      -        for ( ; (elem = elems[i]) != null; i++ ) {
      -
      -            if ( acceptData || jQuery.acceptData( elem ) ) {
      -
      -                id = elem[ internalKey ];
      -                data = id && cache[ id ];
      -
      -                if ( data ) {
      -                    if ( data.events ) {
      -                        for ( type in data.events ) {
      -                            if ( special[ type ] ) {
      -                                jQuery.event.remove( elem, type );
      -
      -                            // This is a shortcut to avoid jQuery.event.remove's overhead
      -                            } else {
      -                                jQuery.removeEvent( elem, type, data.handle );
      -                            }
      -                        }
      -                    }
      -
      -                    // Remove cache only if it was not already removed by jQuery.event.remove
      -                    if ( cache[ id ] ) {
      -
      -                        delete cache[ id ];
      -
      -                        // IE does not allow us to delete expando properties from nodes,
      -                        // nor does it have a removeAttribute function on Document nodes;
      -                        // we must handle all of these cases
      -                        if ( deleteExpando ) {
      -                            delete elem[ internalKey ];
      -
      -                        } else if ( typeof elem.removeAttribute !== core_strundefined ) {
      -                            elem.removeAttribute( internalKey );
      -
      -                        } else {
      -                            elem[ internalKey ] = null;
      -                        }
      -
      -                        core_deletedIds.push( id );
      -                    }
      -                }
      -            }
      -        }
      -    }
      -});
      -var iframe, getStyles, curCSS,
      -    ralpha = /alpha\([^)]*\)/i,
      -    ropacity = /opacity\s*=\s*([^)]*)/,
      -    rposition = /^(top|right|bottom|left)$/,
      -    // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
      -    // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
      -    rdisplayswap = /^(none|table(?!-c[ea]).+)/,
      -    rmargin = /^margin/,
      -    rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
      -    rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
      -    rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
      -    elemdisplay = { BODY: "block" },
      -
      -    cssShow = { position: "absolute", visibility: "hidden", display: "block" },
      -    cssNormalTransform = {
      -        letterSpacing: 0,
      -        fontWeight: 400
      -    },
      -
      -    cssExpand = [ "Top", "Right", "Bottom", "Left" ],
      -    cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
      -
      -// return a css property mapped to a potentially vendor prefixed property
      -function vendorPropName( style, name ) {
      -
      -    // shortcut for names that are not vendor prefixed
      -    if ( name in style ) {
      -        return name;
      -    }
      -
      -    // check for vendor prefixed names
      -    var capName = name.charAt(0).toUpperCase() + name.slice(1),
      -        origName = name,
      -        i = cssPrefixes.length;
      -
      -    while ( i-- ) {
      -        name = cssPrefixes[ i ] + capName;
      -        if ( name in style ) {
      -            return name;
      -        }
      -    }
      -
      -    return origName;
      -}
      -
      -function isHidden( elem, el ) {
      -    // isHidden might be called from jQuery#filter function;
      -    // in that case, element will be second argument
      -    elem = el || elem;
      -    return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
      -}
      -
      -function showHide( elements, show ) {
      -    var display, elem, hidden,
      -        values = [],
      -        index = 0,
      -        length = elements.length;
      -
      -    for ( ; index < length; index++ ) {
      -        elem = elements[ index ];
      -        if ( !elem.style ) {
      -            continue;
      -        }
      -
      -        values[ index ] = jQuery._data( elem, "olddisplay" );
      -        display = elem.style.display;
      -        if ( show ) {
      -            // Reset the inline display of this element to learn if it is
      -            // being hidden by cascaded rules or not
      -            if ( !values[ index ] && display === "none" ) {
      -                elem.style.display = "";
      -            }
      -
      -            // Set elements which have been overridden with display: none
      -            // in a stylesheet to whatever the default browser style is
      -            // for such an element
      -            if ( elem.style.display === "" && isHidden( elem ) ) {
      -                values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
      -            }
      -        } else {
      -
      -            if ( !values[ index ] ) {
      -                hidden = isHidden( elem );
      -
      -                if ( display && display !== "none" || !hidden ) {
      -                    jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
      -                }
      -            }
      -        }
      -    }
      -
      -    // Set the display of most of the elements in a second loop
      -    // to avoid the constant reflow
      -    for ( index = 0; index < length; index++ ) {
      -        elem = elements[ index ];
      -        if ( !elem.style ) {
      -            continue;
      -        }
      -        if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
      -            elem.style.display = show ? values[ index ] || "" : "none";
      -        }
      -    }
      -
      -    return elements;
      -}
      -
      -jQuery.fn.extend({
      -    css: function( name, value ) {
      -        return jQuery.access( this, function( elem, name, value ) {
      -            var len, styles,
      -                map = {},
      -                i = 0;
      -
      -            if ( jQuery.isArray( name ) ) {
      -                styles = getStyles( elem );
      -                len = name.length;
      -
      -                for ( ; i < len; i++ ) {
      -                    map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
      -                }
      -
      -                return map;
      -            }
      -
      -            return value !== undefined ?
      -                jQuery.style( elem, name, value ) :
      -                jQuery.css( elem, name );
      -        }, name, value, arguments.length > 1 );
      -    },
      -    show: function() {
      -        return showHide( this, true );
      -    },
      -    hide: function() {
      -        return showHide( this );
      -    },
      -    toggle: function( state ) {
      -        var bool = typeof state === "boolean";
      -
      -        return this.each(function() {
      -            if ( bool ? state : isHidden( this ) ) {
      -                jQuery( this ).show();
      -            } else {
      -                jQuery( this ).hide();
      -            }
      -        });
      -    }
      -});
      -
      -jQuery.extend({
      -    // Add in style property hooks for overriding the default
      -    // behavior of getting and setting a style property
      -    cssHooks: {
      -        opacity: {
      -            get: function( elem, computed ) {
      -                if ( computed ) {
      -                    // We should always get a number back from opacity
      -                    var ret = curCSS( elem, "opacity" );
      -                    return ret === "" ? "1" : ret;
      -                }
      -            }
      -        }
      -    },
      -
      -    // Exclude the following css properties to add px
      -    cssNumber: {
      -        "columnCount": true,
      -        "fillOpacity": true,
      -        "fontWeight": true,
      -        "lineHeight": true,
      -        "opacity": true,
      -        "orphans": true,
      -        "widows": true,
      -        "zIndex": true,
      -        "zoom": true
      -    },
      -
      -    // Add in properties whose names you wish to fix before
      -    // setting or getting the value
      -    cssProps: {
      -        // normalize float css property
      -        "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
      -    },
      -
      -    // Get and set the style property on a DOM Node
      -    style: function( elem, name, value, extra ) {
      -        // Don't set styles on text and comment nodes
      -        if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
      -            return;
      -        }
      -
      -        // Make sure that we're working with the right name
      -        var ret, type, hooks,
      -            origName = jQuery.camelCase( name ),
      -            style = elem.style;
      -
      -        name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
      -
      -        // gets hook for the prefixed version
      -        // followed by the unprefixed version
      -        hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -        // Check if we're setting a value
      -        if ( value !== undefined ) {
      -            type = typeof value;
      -
      -            // convert relative number strings (+= or -=) to relative numbers. #7345
      -            if ( type === "string" && (ret = rrelNum.exec( value )) ) {
      -                value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
      -                // Fixes bug #9237
      -                type = "number";
      -            }
      -
      -            // Make sure that NaN and null values aren't set. See: #7116
      -            if ( value == null || type === "number" && isNaN( value ) ) {
      -                return;
      -            }
      -
      -            // If a number was passed in, add 'px' to the (except for certain CSS properties)
      -            if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
      -                value += "px";
      -            }
      -
      -            // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
      -            // but it would mean to define eight (for every problematic property) identical functions
      -            if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
      -                style[ name ] = "inherit";
      -            }
      -
      -            // If a hook was provided, use that value, otherwise just set the specified value
      -            if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
      -
      -                // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
      -                // Fixes bug #5509
      -                try {
      -                    style[ name ] = value;
      -                } catch(e) {}
      -            }
      -
      -        } else {
      -            // If a hook was provided get the non-computed value from there
      -            if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
      -                return ret;
      -            }
      -
      -            // Otherwise just get the value from the style object
      -            return style[ name ];
      -        }
      -    },
      -
      -    css: function( elem, name, extra, styles ) {
      -        var num, val, hooks,
      -            origName = jQuery.camelCase( name );
      -
      -        // Make sure that we're working with the right name
      -        name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
      -
      -        // gets hook for the prefixed version
      -        // followed by the unprefixed version
      -        hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -        // If a hook was provided get the computed value from there
      -        if ( hooks && "get" in hooks ) {
      -            val = hooks.get( elem, true, extra );
      -        }
      -
      -        // Otherwise, if a way to get the computed value exists, use that
      -        if ( val === undefined ) {
      -            val = curCSS( elem, name, styles );
      -        }
      -
      -        //convert "normal" to computed value
      -        if ( val === "normal" && name in cssNormalTransform ) {
      -            val = cssNormalTransform[ name ];
      -        }
      -
      -        // Return, converting to number if forced or a qualifier was provided and val looks numeric
      -        if ( extra === "" || extra ) {
      -            num = parseFloat( val );
      -            return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
      -        }
      -        return val;
      -    },
      -
      -    // A method for quickly swapping in/out CSS properties to get correct calculations
      -    swap: function( elem, options, callback, args ) {
      -        var ret, name,
      -            old = {};
      -
      -        // Remember the old values, and insert the new ones
      -        for ( name in options ) {
      -            old[ name ] = elem.style[ name ];
      -            elem.style[ name ] = options[ name ];
      -        }
      -
      -        ret = callback.apply( elem, args || [] );
      -
      -        // Revert the old values
      -        for ( name in options ) {
      -            elem.style[ name ] = old[ name ];
      -        }
      -
      -        return ret;
      -    }
      -});
      -
      -// NOTE: we've included the "window" in window.getComputedStyle
      -// because jsdom on node.js will break without it.
      -if ( window.getComputedStyle ) {
      -    getStyles = function( elem ) {
      -        return window.getComputedStyle( elem, null );
      -    };
      -
      -    curCSS = function( elem, name, _computed ) {
      -        var width, minWidth, maxWidth,
      -            computed = _computed || getStyles( elem ),
      -
      -            // getPropertyValue is only needed for .css('filter') in IE9, see #12537
      -            ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
      -            style = elem.style;
      -
      -        if ( computed ) {
      -
      -            if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
      -                ret = jQuery.style( elem, name );
      -            }
      -
      -            // A tribute to the "awesome hack by Dean Edwards"
      -            // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
      -            // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
      -            // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
      -            if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
      -
      -                // Remember the original values
      -                width = style.width;
      -                minWidth = style.minWidth;
      -                maxWidth = style.maxWidth;
      -
      -                // Put in the new values to get a computed value out
      -                style.minWidth = style.maxWidth = style.width = ret;
      -                ret = computed.width;
      -
      -                // Revert the changed values
      -                style.width = width;
      -                style.minWidth = minWidth;
      -                style.maxWidth = maxWidth;
      -            }
      -        }
      -
      -        return ret;
      -    };
      -} else if ( document.documentElement.currentStyle ) {
      -    getStyles = function( elem ) {
      -        return elem.currentStyle;
      -    };
      -
      -    curCSS = function( elem, name, _computed ) {
      -        var left, rs, rsLeft,
      -            computed = _computed || getStyles( elem ),
      -            ret = computed ? computed[ name ] : undefined,
      -            style = elem.style;
      -
      -        // Avoid setting ret to empty string here
      -        // so we don't default to auto
      -        if ( ret == null && style && style[ name ] ) {
      -            ret = style[ name ];
      -        }
      -
      -        // From the awesome hack by Dean Edwards
      -        // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
      -
      -        // If we're not dealing with a regular pixel number
      -        // but a number that has a weird ending, we need to convert it to pixels
      -        // but not position css attributes, as those are proportional to the parent element instead
      -        // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
      -        if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
      -
      -            // Remember the original values
      -            left = style.left;
      -            rs = elem.runtimeStyle;
      -            rsLeft = rs && rs.left;
      -
      -            // Put in the new values to get a computed value out
      -            if ( rsLeft ) {
      -                rs.left = elem.currentStyle.left;
      -            }
      -            style.left = name === "fontSize" ? "1em" : ret;
      -            ret = style.pixelLeft + "px";
      -
      -            // Revert the changed values
      -            style.left = left;
      -            if ( rsLeft ) {
      -                rs.left = rsLeft;
      -            }
      -        }
      -
      -        return ret === "" ? "auto" : ret;
      -    };
      -}
      -
      -function setPositiveNumber( elem, value, subtract ) {
      -    var matches = rnumsplit.exec( value );
      -    return matches ?
      -        // Guard against undefined "subtract", e.g., when used as in cssHooks
      -        Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
      -        value;
      -}
      -
      -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
      -    var i = extra === ( isBorderBox ? "border" : "content" ) ?
      -        // If we already have the right measurement, avoid augmentation
      -        4 :
      -        // Otherwise initialize for horizontal or vertical properties
      -        name === "width" ? 1 : 0,
      -
      -        val = 0;
      -
      -    for ( ; i < 4; i += 2 ) {
      -        // both box models exclude margin, so add it if we want it
      -        if ( extra === "margin" ) {
      -            val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
      -        }
      -
      -        if ( isBorderBox ) {
      -            // border-box includes padding, so remove it if we want content
      -            if ( extra === "content" ) {
      -                val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -            }
      -
      -            // at this point, extra isn't border nor margin, so remove border
      -            if ( extra !== "margin" ) {
      -                val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -            }
      -        } else {
      -            // at this point, extra isn't content, so add padding
      -            val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -
      -            // at this point, extra isn't content nor padding, so add border
      -            if ( extra !== "padding" ) {
      -                val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -            }
      -        }
      -    }
      -
      -    return val;
      -}
      -
      -function getWidthOrHeight( elem, name, extra ) {
      -
      -    // Start with offset property, which is equivalent to the border-box value
      -    var valueIsBorderBox = true,
      -        val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
      -        styles = getStyles( elem ),
      -        isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
      -
      -    // some non-html elements return undefined for offsetWidth, so check for null/undefined
      -    // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
      -    // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
      -    if ( val <= 0 || val == null ) {
      -        // Fall back to computed then uncomputed css if necessary
      -        val = curCSS( elem, name, styles );
      -        if ( val < 0 || val == null ) {
      -            val = elem.style[ name ];
      -        }
      -
      -        // Computed unit is not pixels. Stop here and return.
      -        if ( rnumnonpx.test(val) ) {
      -            return val;
      -        }
      -
      -        // we need the check for style in case a browser which returns unreliable values
      -        // for getComputedStyle silently falls back to the reliable elem.style
      -        valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
      -
      -        // Normalize "", auto, and prepare for extra
      -        val = parseFloat( val ) || 0;
      -    }
      -
      -    // use the active box-sizing model to add/subtract irrelevant styles
      -    return ( val +
      -        augmentWidthOrHeight(
      -            elem,
      -            name,
      -            extra || ( isBorderBox ? "border" : "content" ),
      -            valueIsBorderBox,
      -            styles
      -        )
      -    ) + "px";
      -}
      -
      -// Try to determine the default display value of an element
      -function css_defaultDisplay( nodeName ) {
      -    var doc = document,
      -        display = elemdisplay[ nodeName ];
      -
      -    if ( !display ) {
      -        display = actualDisplay( nodeName, doc );
      -
      -        // If the simple way fails, read from inside an iframe
      -        if ( display === "none" || !display ) {
      -            // Use the already-created iframe if possible
      -            iframe = ( iframe ||
      -                jQuery("<iframe frameborder='0' width='0' height='0'/>")
      -                .css( "cssText", "display:block !important" )
      -            ).appendTo( doc.documentElement );
      -
      -            // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
      -            doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
      -            doc.write("<!doctype html><html><body>");
      -            doc.close();
      -
      -            display = actualDisplay( nodeName, doc );
      -            iframe.detach();
      -        }
      -
      -        // Store the correct default display
      -        elemdisplay[ nodeName ] = display;
      -    }
      -
      -    return display;
      -}
      -
      -// Called ONLY from within css_defaultDisplay
      -function actualDisplay( name, doc ) {
      -    var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
      -        display = jQuery.css( elem[0], "display" );
      -    elem.remove();
      -    return display;
      -}
      -
      -jQuery.each([ "height", "width" ], function( i, name ) {
      -    jQuery.cssHooks[ name ] = {
      -        get: function( elem, computed, extra ) {
      -            if ( computed ) {
      -                // certain elements can have dimension info if we invisibly show them
      -                // however, it must have a current display style that would benefit from this
      -                return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
      -                    jQuery.swap( elem, cssShow, function() {
      -                        return getWidthOrHeight( elem, name, extra );
      -                    }) :
      -                    getWidthOrHeight( elem, name, extra );
      -            }
      -        },
      -
      -        set: function( elem, value, extra ) {
      -            var styles = extra && getStyles( elem );
      -            return setPositiveNumber( elem, value, extra ?
      -                augmentWidthOrHeight(
      -                    elem,
      -                    name,
      -                    extra,
      -                    jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
      -                    styles
      -                ) : 0
      -            );
      -        }
      -    };
      -});
      -
      -if ( !jQuery.support.opacity ) {
      -    jQuery.cssHooks.opacity = {
      -        get: function( elem, computed ) {
      -            // IE uses filters for opacity
      -            return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
      -                ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
      -                computed ? "1" : "";
      -        },
      -
      -        set: function( elem, value ) {
      -            var style = elem.style,
      -                currentStyle = elem.currentStyle,
      -                opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
      -                filter = currentStyle && currentStyle.filter || style.filter || "";
      -
      -            // IE has trouble with opacity if it does not have layout
      -            // Force it by setting the zoom level
      -            style.zoom = 1;
      -
      -            // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
      -            // if value === "", then remove inline opacity #12685
      -            if ( ( value >= 1 || value === "" ) &&
      -                    jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
      -                    style.removeAttribute ) {
      -
      -                // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
      -                // if "filter:" is present at all, clearType is disabled, we want to avoid this
      -                // style.removeAttribute is IE Only, but so apparently is this code path...
      -                style.removeAttribute( "filter" );
      -
      -                // if there is no filter style applied in a css rule or unset inline opacity, we are done
      -                if ( value === "" || currentStyle && !currentStyle.filter ) {
      -                    return;
      -                }
      -            }
      -
      -            // otherwise, set new filter values
      -            style.filter = ralpha.test( filter ) ?
      -                filter.replace( ralpha, opacity ) :
      -                filter + " " + opacity;
      -        }
      -    };
      -}
      -
      -// These hooks cannot be added until DOM ready because the support test
      -// for it is not run until after DOM ready
      -jQuery(function() {
      -    if ( !jQuery.support.reliableMarginRight ) {
      -        jQuery.cssHooks.marginRight = {
      -            get: function( elem, computed ) {
      -                if ( computed ) {
      -                    // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -                    // Work around by temporarily setting element display to inline-block
      -                    return jQuery.swap( elem, { "display": "inline-block" },
      -                        curCSS, [ elem, "marginRight" ] );
      -                }
      -            }
      -        };
      -    }
      -
      -    // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
      -    // getComputedStyle returns percent when specified for top/left/bottom/right
      -    // rather than make the css module depend on the offset module, we just check for it here
      -    if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
      -        jQuery.each( [ "top", "left" ], function( i, prop ) {
      -            jQuery.cssHooks[ prop ] = {
      -                get: function( elem, computed ) {
      -                    if ( computed ) {
      -                        computed = curCSS( elem, prop );
      -                        // if curCSS returns percentage, fallback to offset
      -                        return rnumnonpx.test( computed ) ?
      -                            jQuery( elem ).position()[ prop ] + "px" :
      -                            computed;
      -                    }
      -                }
      -            };
      -        });
      -    }
      -
      -});
      -
      -if ( jQuery.expr && jQuery.expr.filters ) {
      -    jQuery.expr.filters.hidden = function( elem ) {
      -        // Support: Opera <= 12.12
      -        // Opera reports offsetWidths and offsetHeights less than zero on some elements
      -        return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
      -            (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
      -    };
      -
      -    jQuery.expr.filters.visible = function( elem ) {
      -        return !jQuery.expr.filters.hidden( elem );
      -    };
      -}
      -
      -// These hooks are used by animate to expand properties
      -jQuery.each({
      -    margin: "",
      -    padding: "",
      -    border: "Width"
      -}, function( prefix, suffix ) {
      -    jQuery.cssHooks[ prefix + suffix ] = {
      -        expand: function( value ) {
      -            var i = 0,
      -                expanded = {},
      -
      -                // assumes a single number if not a string
      -                parts = typeof value === "string" ? value.split(" ") : [ value ];
      -
      -            for ( ; i < 4; i++ ) {
      -                expanded[ prefix + cssExpand[ i ] + suffix ] =
      -                    parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
      -            }
      -
      -            return expanded;
      -        }
      -    };
      -
      -    if ( !rmargin.test( prefix ) ) {
      -        jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
      -    }
      -});
      -var r20 = /%20/g,
      -    rbracket = /\[\]$/,
      -    rCRLF = /\r?\n/g,
      -    rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
      -    rsubmittable = /^(?:input|select|textarea|keygen)/i;
      -
      -jQuery.fn.extend({
      -    serialize: function() {
      -        return jQuery.param( this.serializeArray() );
      -    },
      -    serializeArray: function() {
      -        return this.map(function(){
      -            // Can add propHook for "elements" to filter or add form elements
      -            var elements = jQuery.prop( this, "elements" );
      -            return elements ? jQuery.makeArray( elements ) : this;
      -        })
      -        .filter(function(){
      -            var type = this.type;
      -            // Use .is(":disabled") so that fieldset[disabled] works
      -            return this.name && !jQuery( this ).is( ":disabled" ) &&
      -                rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
      -                ( this.checked || !manipulation_rcheckableType.test( type ) );
      -        })
      -        .map(function( i, elem ){
      -            var val = jQuery( this ).val();
      -
      -            return val == null ?
      -                null :
      -                jQuery.isArray( val ) ?
      -                    jQuery.map( val, function( val ){
      -                        return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -                    }) :
      -                    { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -        }).get();
      -    }
      -});
      -
      -//Serialize an array of form elements or a set of
      -//key/values into a query string
      -jQuery.param = function( a, traditional ) {
      -    var prefix,
      -        s = [],
      -        add = function( key, value ) {
      -            // If value is a function, invoke it and return its value
      -            value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
      -            s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
      -        };
      -
      -    // Set traditional to true for jQuery <= 1.3.3 behavior.
      -    if ( traditional === undefined ) {
      -        traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
      -    }
      -
      -    // If an array was passed in, assume that it is an array of form elements.
      -    if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
      -        // Serialize the form elements
      -        jQuery.each( a, function() {
      -            add( this.name, this.value );
      -        });
      -
      -    } else {
      -        // If traditional, encode the "old" way (the way 1.3.3 or older
      -        // did it), otherwise encode params recursively.
      -        for ( prefix in a ) {
      -            buildParams( prefix, a[ prefix ], traditional, add );
      -        }
      -    }
      -
      -    // Return the resulting serialization
      -    return s.join( "&" ).replace( r20, "+" );
      -};
      -
      -function buildParams( prefix, obj, traditional, add ) {
      -    var name;
      -
      -    if ( jQuery.isArray( obj ) ) {
      -        // Serialize array item.
      -        jQuery.each( obj, function( i, v ) {
      -            if ( traditional || rbracket.test( prefix ) ) {
      -                // Treat each array item as a scalar.
      -                add( prefix, v );
      -
      -            } else {
      -                // Item is non-scalar (array or object), encode its numeric index.
      -                buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
      -            }
      -        });
      -
      -    } else if ( !traditional && jQuery.type( obj ) === "object" ) {
      -        // Serialize object item.
      -        for ( name in obj ) {
      -            buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
      -        }
      -
      -    } else {
      -        // Serialize scalar item.
      -        add( prefix, obj );
      -    }
      -}
      -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
      -    "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
      -    "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
      -
      -    // Handle event binding
      -    jQuery.fn[ name ] = function( data, fn ) {
      -        return arguments.length > 0 ?
      -            this.on( name, null, data, fn ) :
      -            this.trigger( name );
      -    };
      -});
      -
      -jQuery.fn.hover = function( fnOver, fnOut ) {
      -    return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
      -};
      -var
      -    // Document location
      -    ajaxLocParts,
      -    ajaxLocation,
      -    ajax_nonce = jQuery.now(),
      -
      -    ajax_rquery = /\?/,
      -    rhash = /#.*$/,
      -    rts = /([?&])_=[^&]*/,
      -    rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
      -    // #7653, #8125, #8152: local protocol detection
      -    rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
      -    rnoContent = /^(?:GET|HEAD)$/,
      -    rprotocol = /^\/\//,
      -    rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
      -
      -    // Keep a copy of the old load method
      -    _load = jQuery.fn.load,
      -
      -    /* Prefilters
      -     * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
      -     * 2) These are called:
      -     *    - BEFORE asking for a transport
      -     *    - AFTER param serialization (s.data is a string if s.processData is true)
      -     * 3) key is the dataType
      -     * 4) the catchall symbol "*" can be used
      -     * 5) execution will start with transport dataType and THEN continue down to "*" if needed
      -     */
      -    prefilters = {},
      -
      -    /* Transports bindings
      -     * 1) key is the dataType
      -     * 2) the catchall symbol "*" can be used
      -     * 3) selection will start with transport dataType and THEN go to "*" if needed
      -     */
      -    transports = {},
      -
      -    // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
      -    allTypes = "*/".concat("*");
      -
      -// #8138, IE may throw an exception when accessing
      -// a field from window.location if document.domain has been set
      -try {
      -    ajaxLocation = location.href;
      -} catch( e ) {
      -    // Use the href attribute of an A element
      -    // since IE will modify it given document.location
      -    ajaxLocation = document.createElement( "a" );
      -    ajaxLocation.href = "";
      -    ajaxLocation = ajaxLocation.href;
      -}
      -
      -// Segment location into parts
      -ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
      -
      -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
      -function addToPrefiltersOrTransports( structure ) {
      -
      -    // dataTypeExpression is optional and defaults to "*"
      -    return function( dataTypeExpression, func ) {
      -
      -        if ( typeof dataTypeExpression !== "string" ) {
      -            func = dataTypeExpression;
      -            dataTypeExpression = "*";
      -        }
      -
      -        var dataType,
      -            i = 0,
      -            dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
      -
      -        if ( jQuery.isFunction( func ) ) {
      -            // For each dataType in the dataTypeExpression
      -            while ( (dataType = dataTypes[i++]) ) {
      -                // Prepend if requested
      -                if ( dataType[0] === "+" ) {
      -                    dataType = dataType.slice( 1 ) || "*";
      -                    (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
      -
      -                // Otherwise append
      -                } else {
      -                    (structure[ dataType ] = structure[ dataType ] || []).push( func );
      -                }
      -            }
      -        }
      -    };
      -}
      -
      -// Base inspection function for prefilters and transports
      -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
      -
      -    var inspected = {},
      -        seekingTransport = ( structure === transports );
      -
      -    function inspect( dataType ) {
      -        var selected;
      -        inspected[ dataType ] = true;
      -        jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
      -            var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
      -            if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
      -                options.dataTypes.unshift( dataTypeOrTransport );
      -                inspect( dataTypeOrTransport );
      -                return false;
      -            } else if ( seekingTransport ) {
      -                return !( selected = dataTypeOrTransport );
      -            }
      -        });
      -        return selected;
      -    }
      -
      -    return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
      -}
      -
      -// A special extend for ajax options
      -// that takes "flat" options (not to be deep extended)
      -// Fixes #9887
      -function ajaxExtend( target, src ) {
      -    var deep, key,
      -        flatOptions = jQuery.ajaxSettings.flatOptions || {};
      -
      -    for ( key in src ) {
      -        if ( src[ key ] !== undefined ) {
      -            ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
      -        }
      -    }
      -    if ( deep ) {
      -        jQuery.extend( true, target, deep );
      -    }
      -
      -    return target;
      -}
      -
      -jQuery.fn.load = function( url, params, callback ) {
      -    if ( typeof url !== "string" && _load ) {
      -        return _load.apply( this, arguments );
      -    }
      -
      -    var selector, response, type,
      -        self = this,
      -        off = url.indexOf(" ");
      -
      -    if ( off >= 0 ) {
      -        selector = url.slice( off, url.length );
      -        url = url.slice( 0, off );
      -    }
      -
      -    // If it's a function
      -    if ( jQuery.isFunction( params ) ) {
      -
      -        // We assume that it's the callback
      -        callback = params;
      -        params = undefined;
      -
      -    // Otherwise, build a param string
      -    } else if ( params && typeof params === "object" ) {
      -        type = "POST";
      -    }
      -
      -    // If we have elements to modify, make the request
      -    if ( self.length > 0 ) {
      -        jQuery.ajax({
      -            url: url,
      -
      -            // if "type" variable is undefined, then "GET" method will be used
      -            type: type,
      -            dataType: "html",
      -            data: params
      -        }).done(function( responseText ) {
      -
      -            // Save response for use in complete callback
      -            response = arguments;
      -
      -            self.html( selector ?
      -
      -                // If a selector was specified, locate the right elements in a dummy div
      -                // Exclude scripts to avoid IE 'Permission Denied' errors
      -                jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
      -
      -                // Otherwise use the full result
      -                responseText );
      -
      -        }).complete( callback && function( jqXHR, status ) {
      -            self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
      -        });
      -    }
      -
      -    return this;
      -};
      -
      -// Attach a bunch of functions for handling common AJAX events
      -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
      -    jQuery.fn[ type ] = function( fn ){
      -        return this.on( type, fn );
      -    };
      -});
      -
      -jQuery.each( [ "get", "post" ], function( i, method ) {
      -    jQuery[ method ] = function( url, data, callback, type ) {
      -        // shift arguments if data argument was omitted
      -        if ( jQuery.isFunction( data ) ) {
      -            type = type || callback;
      -            callback = data;
      -            data = undefined;
      -        }
      -
      -        return jQuery.ajax({
      -            url: url,
      -            type: method,
      -            dataType: type,
      -            data: data,
      -            success: callback
      -        });
      -    };
      -});
      -
      -jQuery.extend({
      -
      -    // Counter for holding the number of active queries
      -    active: 0,
      -
      -    // Last-Modified header cache for next request
      -    lastModified: {},
      -    etag: {},
      -
      -    ajaxSettings: {
      -        url: ajaxLocation,
      -        type: "GET",
      -        isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
      -        global: true,
      -        processData: true,
      -        async: true,
      -        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      -        /*
      -        timeout: 0,
      -        data: null,
      -        dataType: null,
      -        username: null,
      -        password: null,
      -        cache: null,
      -        throws: false,
      -        traditional: false,
      -        headers: {},
      -        */
      -
      -        accepts: {
      -            "*": allTypes,
      -            text: "text/plain",
      -            html: "text/html",
      -            xml: "application/xml, text/xml",
      -            json: "application/json, text/javascript"
      -        },
      -
      -        contents: {
      -            xml: /xml/,
      -            html: /html/,
      -            json: /json/
      -        },
      -
      -        responseFields: {
      -            xml: "responseXML",
      -            text: "responseText"
      -        },
      -
      -        // Data converters
      -        // Keys separate source (or catchall "*") and destination types with a single space
      -        converters: {
      -
      -            // Convert anything to text
      -            "* text": window.String,
      -
      -            // Text to html (true = no transformation)
      -            "text html": true,
      -
      -            // Evaluate text as a json expression
      -            "text json": jQuery.parseJSON,
      -
      -            // Parse text as xml
      -            "text xml": jQuery.parseXML
      -        },
      -
      -        // For options that shouldn't be deep extended:
      -        // you can add your own custom options here if
      -        // and when you create one that shouldn't be
      -        // deep extended (see ajaxExtend)
      -        flatOptions: {
      -            url: true,
      -            context: true
      -        }
      -    },
      -
      -    // Creates a full fledged settings object into target
      -    // with both ajaxSettings and settings fields.
      -    // If target is omitted, writes into ajaxSettings.
      -    ajaxSetup: function( target, settings ) {
      -        return settings ?
      -
      -            // Building a settings object
      -            ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
      -
      -            // Extending ajaxSettings
      -            ajaxExtend( jQuery.ajaxSettings, target );
      -    },
      -
      -    ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
      -    ajaxTransport: addToPrefiltersOrTransports( transports ),
      -
      -    // Main method
      -    ajax: function( url, options ) {
      -
      -        // If url is an object, simulate pre-1.5 signature
      -        if ( typeof url === "object" ) {
      -            options = url;
      -            url = undefined;
      -        }
      -
      -        // Force options to be an object
      -        options = options || {};
      -
      -        var // Cross-domain detection vars
      -            parts,
      -            // Loop variable
      -            i,
      -            // URL without anti-cache param
      -            cacheURL,
      -            // Response headers as string
      -            responseHeadersString,
      -            // timeout handle
      -            timeoutTimer,
      -
      -            // To know if global events are to be dispatched
      -            fireGlobals,
      -
      -            transport,
      -            // Response headers
      -            responseHeaders,
      -            // Create the final options object
      -            s = jQuery.ajaxSetup( {}, options ),
      -            // Callbacks context
      -            callbackContext = s.context || s,
      -            // Context for global events is callbackContext if it is a DOM node or jQuery collection
      -            globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
      -                jQuery( callbackContext ) :
      -                jQuery.event,
      -            // Deferreds
      -            deferred = jQuery.Deferred(),
      -            completeDeferred = jQuery.Callbacks("once memory"),
      -            // Status-dependent callbacks
      -            statusCode = s.statusCode || {},
      -            // Headers (they are sent all at once)
      -            requestHeaders = {},
      -            requestHeadersNames = {},
      -            // The jqXHR state
      -            state = 0,
      -            // Default abort message
      -            strAbort = "canceled",
      -            // Fake xhr
      -            jqXHR = {
      -                readyState: 0,
      -
      -                // Builds headers hashtable if needed
      -                getResponseHeader: function( key ) {
      -                    var match;
      -                    if ( state === 2 ) {
      -                        if ( !responseHeaders ) {
      -                            responseHeaders = {};
      -                            while ( (match = rheaders.exec( responseHeadersString )) ) {
      -                                responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
      -                            }
      -                        }
      -                        match = responseHeaders[ key.toLowerCase() ];
      -                    }
      -                    return match == null ? null : match;
      -                },
      -
      -                // Raw string
      -                getAllResponseHeaders: function() {
      -                    return state === 2 ? responseHeadersString : null;
      -                },
      -
      -                // Caches the header
      -                setRequestHeader: function( name, value ) {
      -                    var lname = name.toLowerCase();
      -                    if ( !state ) {
      -                        name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
      -                        requestHeaders[ name ] = value;
      -                    }
      -                    return this;
      -                },
      -
      -                // Overrides response content-type header
      -                overrideMimeType: function( type ) {
      -                    if ( !state ) {
      -                        s.mimeType = type;
      -                    }
      -                    return this;
      -                },
      -
      -                // Status-dependent callbacks
      -                statusCode: function( map ) {
      -                    var code;
      -                    if ( map ) {
      -                        if ( state < 2 ) {
      -                            for ( code in map ) {
      -                                // Lazy-add the new callback in a way that preserves old ones
      -                                statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
      -                            }
      -                        } else {
      -                            // Execute the appropriate callbacks
      -                            jqXHR.always( map[ jqXHR.status ] );
      -                        }
      -                    }
      -                    return this;
      -                },
      -
      -                // Cancel the request
      -                abort: function( statusText ) {
      -                    var finalText = statusText || strAbort;
      -                    if ( transport ) {
      -                        transport.abort( finalText );
      -                    }
      -                    done( 0, finalText );
      -                    return this;
      -                }
      -            };
      -
      -        // Attach deferreds
      -        deferred.promise( jqXHR ).complete = completeDeferred.add;
      -        jqXHR.success = jqXHR.done;
      -        jqXHR.error = jqXHR.fail;
      -
      -        // Remove hash character (#7531: and string promotion)
      -        // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
      -        // Handle falsy url in the settings object (#10093: consistency with old signature)
      -        // We also use the url parameter if available
      -        s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
      -
      -        // Alias method option to type as per ticket #12004
      -        s.type = options.method || options.type || s.method || s.type;
      -
      -        // Extract dataTypes list
      -        s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
      -
      -        // A cross-domain request is in order when we have a protocol:host:port mismatch
      -        if ( s.crossDomain == null ) {
      -            parts = rurl.exec( s.url.toLowerCase() );
      -            s.crossDomain = !!( parts &&
      -                ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
      -                    ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
      -                        ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
      -            );
      -        }
      -
      -        // Convert data if not already a string
      -        if ( s.data && s.processData && typeof s.data !== "string" ) {
      -            s.data = jQuery.param( s.data, s.traditional );
      -        }
      -
      -        // Apply prefilters
      -        inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
      -
      -        // If request was aborted inside a prefilter, stop there
      -        if ( state === 2 ) {
      -            return jqXHR;
      -        }
      -
      -        // We can fire global events as of now if asked to
      -        fireGlobals = s.global;
      -
      -        // Watch for a new set of requests
      -        if ( fireGlobals && jQuery.active++ === 0 ) {
      -            jQuery.event.trigger("ajaxStart");
      -        }
      -
      -        // Uppercase the type
      -        s.type = s.type.toUpperCase();
      -
      -        // Determine if request has content
      -        s.hasContent = !rnoContent.test( s.type );
      -
      -        // Save the URL in case we're toying with the If-Modified-Since
      -        // and/or If-None-Match header later on
      -        cacheURL = s.url;
      -
      -        // More options handling for requests with no content
      -        if ( !s.hasContent ) {
      -
      -            // If data is available, append data to url
      -            if ( s.data ) {
      -                cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
      -                // #9682: remove data so that it's not used in an eventual retry
      -                delete s.data;
      -            }
      -
      -            // Add anti-cache in url if needed
      -            if ( s.cache === false ) {
      -                s.url = rts.test( cacheURL ) ?
      -
      -                    // If there is already a '_' parameter, set its value
      -                    cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
      -
      -                    // Otherwise add one to the end
      -                    cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
      -            }
      -        }
      -
      -        // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -        if ( s.ifModified ) {
      -            if ( jQuery.lastModified[ cacheURL ] ) {
      -                jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
      -            }
      -            if ( jQuery.etag[ cacheURL ] ) {
      -                jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
      -            }
      -        }
      -
      -        // Set the correct header, if data is being sent
      -        if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
      -            jqXHR.setRequestHeader( "Content-Type", s.contentType );
      -        }
      -
      -        // Set the Accepts header for the server, depending on the dataType
      -        jqXHR.setRequestHeader(
      -            "Accept",
      -            s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
      -                s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
      -                s.accepts[ "*" ]
      -        );
      -
      -        // Check for headers option
      -        for ( i in s.headers ) {
      -            jqXHR.setRequestHeader( i, s.headers[ i ] );
      -        }
      -
      -        // Allow custom headers/mimetypes and early abort
      -        if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
      -            // Abort if not done already and return
      -            return jqXHR.abort();
      -        }
      -
      -        // aborting is no longer a cancellation
      -        strAbort = "abort";
      -
      -        // Install callbacks on deferreds
      -        for ( i in { success: 1, error: 1, complete: 1 } ) {
      -            jqXHR[ i ]( s[ i ] );
      -        }
      -
      -        // Get transport
      -        transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
      -
      -        // If no transport, we auto-abort
      -        if ( !transport ) {
      -            done( -1, "No Transport" );
      -        } else {
      -            jqXHR.readyState = 1;
      -
      -            // Send global event
      -            if ( fireGlobals ) {
      -                globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
      -            }
      -            // Timeout
      -            if ( s.async && s.timeout > 0 ) {
      -                timeoutTimer = setTimeout(function() {
      -                    jqXHR.abort("timeout");
      -                }, s.timeout );
      -            }
      -
      -            try {
      -                state = 1;
      -                transport.send( requestHeaders, done );
      -            } catch ( e ) {
      -                // Propagate exception as error if not done
      -                if ( state < 2 ) {
      -                    done( -1, e );
      -                // Simply rethrow otherwise
      -                } else {
      -                    throw e;
      -                }
      -            }
      -        }
      -
      -        // Callback for when everything is done
      -        function done( status, nativeStatusText, responses, headers ) {
      -            var isSuccess, success, error, response, modified,
      -                statusText = nativeStatusText;
      -
      -            // Called once
      -            if ( state === 2 ) {
      -                return;
      -            }
      -
      -            // State is "done" now
      -            state = 2;
      -
      -            // Clear timeout if it exists
      -            if ( timeoutTimer ) {
      -                clearTimeout( timeoutTimer );
      -            }
      -
      -            // Dereference transport for early garbage collection
      -            // (no matter how long the jqXHR object will be used)
      -            transport = undefined;
      -
      -            // Cache response headers
      -            responseHeadersString = headers || "";
      -
      -            // Set readyState
      -            jqXHR.readyState = status > 0 ? 4 : 0;
      -
      -            // Get response data
      -            if ( responses ) {
      -                response = ajaxHandleResponses( s, jqXHR, responses );
      -            }
      -
      -            // If successful, handle type chaining
      -            if ( status >= 200 && status < 300 || status === 304 ) {
      -
      -                // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -                if ( s.ifModified ) {
      -                    modified = jqXHR.getResponseHeader("Last-Modified");
      -                    if ( modified ) {
      -                        jQuery.lastModified[ cacheURL ] = modified;
      -                    }
      -                    modified = jqXHR.getResponseHeader("etag");
      -                    if ( modified ) {
      -                        jQuery.etag[ cacheURL ] = modified;
      -                    }
      -                }
      -
      -                // if no content
      -                if ( status === 204 ) {
      -                    isSuccess = true;
      -                    statusText = "nocontent";
      -
      -                // if not modified
      -                } else if ( status === 304 ) {
      -                    isSuccess = true;
      -                    statusText = "notmodified";
      -
      -                // If we have data, let's convert it
      -                } else {
      -                    isSuccess = ajaxConvert( s, response );
      -                    statusText = isSuccess.state;
      -                    success = isSuccess.data;
      -                    error = isSuccess.error;
      -                    isSuccess = !error;
      -                }
      -            } else {
      -                // We extract error from statusText
      -                // then normalize statusText and status for non-aborts
      -                error = statusText;
      -                if ( status || !statusText ) {
      -                    statusText = "error";
      -                    if ( status < 0 ) {
      -                        status = 0;
      -                    }
      -                }
      -            }
      -
      -            // Set data for the fake xhr object
      -            jqXHR.status = status;
      -            jqXHR.statusText = ( nativeStatusText || statusText ) + "";
      -
      -            // Success/Error
      -            if ( isSuccess ) {
      -                deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
      -            } else {
      -                deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
      -            }
      -
      -            // Status-dependent callbacks
      -            jqXHR.statusCode( statusCode );
      -            statusCode = undefined;
      -
      -            if ( fireGlobals ) {
      -                globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
      -                    [ jqXHR, s, isSuccess ? success : error ] );
      -            }
      -
      -            // Complete
      -            completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
      -
      -            if ( fireGlobals ) {
      -                globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
      -                // Handle the global AJAX counter
      -                if ( !( --jQuery.active ) ) {
      -                    jQuery.event.trigger("ajaxStop");
      -                }
      -            }
      -        }
      -
      -        return jqXHR;
      -    },
      -
      -    getScript: function( url, callback ) {
      -        return jQuery.get( url, undefined, callback, "script" );
      -    },
      -
      -    getJSON: function( url, data, callback ) {
      -        return jQuery.get( url, data, callback, "json" );
      -    }
      -});
      -
      -/* Handles responses to an ajax request:
      - * - sets all responseXXX fields accordingly
      - * - finds the right dataType (mediates between content-type and expected dataType)
      - * - returns the corresponding response
      - */
      -function ajaxHandleResponses( s, jqXHR, responses ) {
      -    var firstDataType, ct, finalDataType, type,
      -        contents = s.contents,
      -        dataTypes = s.dataTypes,
      -        responseFields = s.responseFields;
      -
      -    // Fill responseXXX fields
      -    for ( type in responseFields ) {
      -        if ( type in responses ) {
      -            jqXHR[ responseFields[type] ] = responses[ type ];
      -        }
      -    }
      -
      -    // Remove auto dataType and get content-type in the process
      -    while( dataTypes[ 0 ] === "*" ) {
      -        dataTypes.shift();
      -        if ( ct === undefined ) {
      -            ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
      -        }
      -    }
      -
      -    // Check if we're dealing with a known content-type
      -    if ( ct ) {
      -        for ( type in contents ) {
      -            if ( contents[ type ] && contents[ type ].test( ct ) ) {
      -                dataTypes.unshift( type );
      -                break;
      -            }
      -        }
      -    }
      -
      -    // Check to see if we have a response for the expected dataType
      -    if ( dataTypes[ 0 ] in responses ) {
      -        finalDataType = dataTypes[ 0 ];
      -    } else {
      -        // Try convertible dataTypes
      -        for ( type in responses ) {
      -            if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
      -                finalDataType = type;
      -                break;
      -            }
      -            if ( !firstDataType ) {
      -                firstDataType = type;
      -            }
      -        }
      -        // Or just use first one
      -        finalDataType = finalDataType || firstDataType;
      -    }
      -
      -    // If we found a dataType
      -    // We add the dataType to the list if needed
      -    // and return the corresponding response
      -    if ( finalDataType ) {
      -        if ( finalDataType !== dataTypes[ 0 ] ) {
      -            dataTypes.unshift( finalDataType );
      -        }
      -        return responses[ finalDataType ];
      -    }
      -}
      -
      -// Chain conversions given the request and the original response
      -function ajaxConvert( s, response ) {
      -    var conv2, current, conv, tmp,
      -        converters = {},
      -        i = 0,
      -        // Work with a copy of dataTypes in case we need to modify it for conversion
      -        dataTypes = s.dataTypes.slice(),
      -        prev = dataTypes[ 0 ];
      -
      -    // Apply the dataFilter if provided
      -    if ( s.dataFilter ) {
      -        response = s.dataFilter( response, s.dataType );
      -    }
      -
      -    // Create converters map with lowercased keys
      -    if ( dataTypes[ 1 ] ) {
      -        for ( conv in s.converters ) {
      -            converters[ conv.toLowerCase() ] = s.converters[ conv ];
      -        }
      -    }
      -
      -    // Convert to each sequential dataType, tolerating list modification
      -    for ( ; (current = dataTypes[++i]); ) {
      -
      -        // There's only work to do if current dataType is non-auto
      -        if ( current !== "*" ) {
      -
      -            // Convert response if prev dataType is non-auto and differs from current
      -            if ( prev !== "*" && prev !== current ) {
      -
      -                // Seek a direct converter
      -                conv = converters[ prev + " " + current ] || converters[ "* " + current ];
      -
      -                // If none found, seek a pair
      -                if ( !conv ) {
      -                    for ( conv2 in converters ) {
      -
      -                        // If conv2 outputs current
      -                        tmp = conv2.split(" ");
      -                        if ( tmp[ 1 ] === current ) {
      -
      -                            // If prev can be converted to accepted input
      -                            conv = converters[ prev + " " + tmp[ 0 ] ] ||
      -                                converters[ "* " + tmp[ 0 ] ];
      -                            if ( conv ) {
      -                                // Condense equivalence converters
      -                                if ( conv === true ) {
      -                                    conv = converters[ conv2 ];
      -
      -                                // Otherwise, insert the intermediate dataType
      -                                } else if ( converters[ conv2 ] !== true ) {
      -                                    current = tmp[ 0 ];
      -                                    dataTypes.splice( i--, 0, current );
      -                                }
      -
      -                                break;
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                // Apply converter (if not an equivalence)
      -                if ( conv !== true ) {
      -
      -                    // Unless errors are allowed to bubble, catch and return them
      -                    if ( conv && s["throws"] ) {
      -                        response = conv( response );
      -                    } else {
      -                        try {
      -                            response = conv( response );
      -                        } catch ( e ) {
      -                            return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
      -                        }
      -                    }
      -                }
      -            }
      -
      -            // Update prev for next iteration
      -            prev = current;
      -        }
      -    }
      -
      -    return { state: "success", data: response };
      -}
      -// Install script dataType
      -jQuery.ajaxSetup({
      -    accepts: {
      -        script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
      -    },
      -    contents: {
      -        script: /(?:java|ecma)script/
      -    },
      -    converters: {
      -        "text script": function( text ) {
      -            jQuery.globalEval( text );
      -            return text;
      -        }
      -    }
      -});
      -
      -// Handle cache's special case and global
      -jQuery.ajaxPrefilter( "script", function( s ) {
      -    if ( s.cache === undefined ) {
      -        s.cache = false;
      -    }
      -    if ( s.crossDomain ) {
      -        s.type = "GET";
      -        s.global = false;
      -    }
      -});
      -
      -// Bind script tag hack transport
      -jQuery.ajaxTransport( "script", function(s) {
      -
      -    // This transport only deals with cross domain requests
      -    if ( s.crossDomain ) {
      -
      -        var script,
      -            head = document.head || jQuery("head")[0] || document.documentElement;
      -
      -        return {
      -
      -            send: function( _, callback ) {
      -
      -                script = document.createElement("script");
      -
      -                script.async = true;
      -
      -                if ( s.scriptCharset ) {
      -                    script.charset = s.scriptCharset;
      -                }
      -
      -                script.src = s.url;
      -
      -                // Attach handlers for all browsers
      -                script.onload = script.onreadystatechange = function( _, isAbort ) {
      -
      -                    if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
      -
      -                        // Handle memory leak in IE
      -                        script.onload = script.onreadystatechange = null;
      -
      -                        // Remove the script
      -                        if ( script.parentNode ) {
      -                            script.parentNode.removeChild( script );
      -                        }
      -
      -                        // Dereference the script
      -                        script = null;
      -
      -                        // Callback if not abort
      -                        if ( !isAbort ) {
      -                            callback( 200, "success" );
      -                        }
      -                    }
      -                };
      -
      -                // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
      -                // Use native DOM manipulation to avoid our domManip AJAX trickery
      -                head.insertBefore( script, head.firstChild );
      -            },
      -
      -            abort: function() {
      -                if ( script ) {
      -                    script.onload( undefined, true );
      -                }
      -            }
      -        };
      -    }
      -});
      -var oldCallbacks = [],
      -    rjsonp = /(=)\?(?=&|$)|\?\?/;
      -
      -// Default jsonp settings
      -jQuery.ajaxSetup({
      -    jsonp: "callback",
      -    jsonpCallback: function() {
      -        var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
      -        this[ callback ] = true;
      -        return callback;
      -    }
      -});
      -
      -// Detect, normalize options and install callbacks for jsonp requests
      -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
      -
      -    var callbackName, overwritten, responseContainer,
      -        jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
      -            "url" :
      -            typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
      -        );
      -
      -    // Handle iff the expected data type is "jsonp" or we have a parameter to set
      -    if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
      -
      -        // Get callback name, remembering preexisting value associated with it
      -        callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
      -            s.jsonpCallback() :
      -            s.jsonpCallback;
      -
      -        // Insert callback into url or form data
      -        if ( jsonProp ) {
      -            s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
      -        } else if ( s.jsonp !== false ) {
      -            s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
      -        }
      -
      -        // Use data converter to retrieve json after script execution
      -        s.converters["script json"] = function() {
      -            if ( !responseContainer ) {
      -                jQuery.error( callbackName + " was not called" );
      -            }
      -            return responseContainer[ 0 ];
      -        };
      -
      -        // force json dataType
      -        s.dataTypes[ 0 ] = "json";
      -
      -        // Install callback
      -        overwritten = window[ callbackName ];
      -        window[ callbackName ] = function() {
      -            responseContainer = arguments;
      -        };
      -
      -        // Clean-up function (fires after converters)
      -        jqXHR.always(function() {
      -            // Restore preexisting value
      -            window[ callbackName ] = overwritten;
      -
      -            // Save back as free
      -            if ( s[ callbackName ] ) {
      -                // make sure that re-using the options doesn't screw things around
      -                s.jsonpCallback = originalSettings.jsonpCallback;
      -
      -                // save the callback name for future use
      -                oldCallbacks.push( callbackName );
      -            }
      -
      -            // Call if it was a function and we have a response
      -            if ( responseContainer && jQuery.isFunction( overwritten ) ) {
      -                overwritten( responseContainer[ 0 ] );
      -            }
      -
      -            responseContainer = overwritten = undefined;
      -        });
      -
      -        // Delegate to script
      -        return "script";
      -    }
      -});
      -var xhrCallbacks, xhrSupported,
      -    xhrId = 0,
      -    // #5280: Internet Explorer will keep connections alive if we don't abort on unload
      -    xhrOnUnloadAbort = window.ActiveXObject && function() {
      -        // Abort all pending requests
      -        var key;
      -        for ( key in xhrCallbacks ) {
      -            xhrCallbacks[ key ]( undefined, true );
      -        }
      -    };
      -
      -// Functions to create xhrs
      -function createStandardXHR() {
      -    try {
      -        return new window.XMLHttpRequest();
      -    } catch( e ) {}
      -}
      -
      -function createActiveXHR() {
      -    try {
      -        return new window.ActiveXObject("Microsoft.XMLHTTP");
      -    } catch( e ) {}
      -}
      -
      -// Create the request object
      -// (This is still attached to ajaxSettings for backward compatibility)
      -jQuery.ajaxSettings.xhr = window.ActiveXObject ?
      -    /* Microsoft failed to properly
      -     * implement the XMLHttpRequest in IE7 (can't request local files),
      -     * so we use the ActiveXObject when it is available
      -     * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
      -     * we need a fallback.
      -     */
      -    function() {
      -        return !this.isLocal && createStandardXHR() || createActiveXHR();
      -    } :
      -    // For all other browsers, use the standard XMLHttpRequest object
      -    createStandardXHR;
      -
      -// Determine support properties
      -xhrSupported = jQuery.ajaxSettings.xhr();
      -jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
      -xhrSupported = jQuery.support.ajax = !!xhrSupported;
      -
      -// Create transport if the browser can provide an xhr
      -if ( xhrSupported ) {
      -
      -    jQuery.ajaxTransport(function( s ) {
      -        // Cross domain only allowed if supported through XMLHttpRequest
      -        if ( !s.crossDomain || jQuery.support.cors ) {
      -
      -            var callback;
      -
      -            return {
      -                send: function( headers, complete ) {
      -
      -                    // Get a new xhr
      -                    var handle, i,
      -                        xhr = s.xhr();
      -
      -                    // Open the socket
      -                    // Passing null username, generates a login popup on Opera (#2865)
      -                    if ( s.username ) {
      -                        xhr.open( s.type, s.url, s.async, s.username, s.password );
      -                    } else {
      -                        xhr.open( s.type, s.url, s.async );
      -                    }
      -
      -                    // Apply custom fields if provided
      -                    if ( s.xhrFields ) {
      -                        for ( i in s.xhrFields ) {
      -                            xhr[ i ] = s.xhrFields[ i ];
      -                        }
      -                    }
      -
      -                    // Override mime type if needed
      -                    if ( s.mimeType && xhr.overrideMimeType ) {
      -                        xhr.overrideMimeType( s.mimeType );
      -                    }
      -
      -                    // X-Requested-With header
      -                    // For cross-domain requests, seeing as conditions for a preflight are
      -                    // akin to a jigsaw puzzle, we simply never set it to be sure.
      -                    // (it can always be set on a per-request basis or even using ajaxSetup)
      -                    // For same-domain requests, won't change header if already provided.
      -                    if ( !s.crossDomain && !headers["X-Requested-With"] ) {
      -                        headers["X-Requested-With"] = "XMLHttpRequest";
      -                    }
      -
      -                    // Need an extra try/catch for cross domain requests in Firefox 3
      -                    try {
      -                        for ( i in headers ) {
      -                            xhr.setRequestHeader( i, headers[ i ] );
      -                        }
      -                    } catch( err ) {}
      -
      -                    // Do send the request
      -                    // This may raise an exception which is actually
      -                    // handled in jQuery.ajax (so no try/catch here)
      -                    xhr.send( ( s.hasContent && s.data ) || null );
      -
      -                    // Listener
      -                    callback = function( _, isAbort ) {
      -                        var status, responseHeaders, statusText, responses;
      -
      -                        // Firefox throws exceptions when accessing properties
      -                        // of an xhr when a network error occurred
      -                        // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
      -                        try {
      -
      -                            // Was never called and is aborted or complete
      -                            if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
      -
      -                                // Only called once
      -                                callback = undefined;
      -
      -                                // Do not keep as active anymore
      -                                if ( handle ) {
      -                                    xhr.onreadystatechange = jQuery.noop;
      -                                    if ( xhrOnUnloadAbort ) {
      -                                        delete xhrCallbacks[ handle ];
      -                                    }
      -                                }
      -
      -                                // If it's an abort
      -                                if ( isAbort ) {
      -                                    // Abort it manually if needed
      -                                    if ( xhr.readyState !== 4 ) {
      -                                        xhr.abort();
      -                                    }
      -                                } else {
      -                                    responses = {};
      -                                    status = xhr.status;
      -                                    responseHeaders = xhr.getAllResponseHeaders();
      -
      -                                    // When requesting binary data, IE6-9 will throw an exception
      -                                    // on any attempt to access responseText (#11426)
      -                                    if ( typeof xhr.responseText === "string" ) {
      -                                        responses.text = xhr.responseText;
      -                                    }
      -
      -                                    // Firefox throws an exception when accessing
      -                                    // statusText for faulty cross-domain requests
      -                                    try {
      -                                        statusText = xhr.statusText;
      -                                    } catch( e ) {
      -                                        // We normalize with Webkit giving an empty statusText
      -                                        statusText = "";
      -                                    }
      -
      -                                    // Filter status for non standard behaviors
      -
      -                                    // If the request is local and we have data: assume a success
      -                                    // (success with no data won't get notified, that's the best we
      -                                    // can do given current implementations)
      -                                    if ( !status && s.isLocal && !s.crossDomain ) {
      -                                        status = responses.text ? 200 : 404;
      -                                    // IE - #1450: sometimes returns 1223 when it should be 204
      -                                    } else if ( status === 1223 ) {
      -                                        status = 204;
      -                                    }
      -                                }
      -                            }
      -                        } catch( firefoxAccessException ) {
      -                            if ( !isAbort ) {
      -                                complete( -1, firefoxAccessException );
      -                            }
      -                        }
      -
      -                        // Call complete if needed
      -                        if ( responses ) {
      -                            complete( status, statusText, responses, responseHeaders );
      -                        }
      -                    };
      -
      -                    if ( !s.async ) {
      -                        // if we're in sync mode we fire the callback
      -                        callback();
      -                    } else if ( xhr.readyState === 4 ) {
      -                        // (IE6 & IE7) if it's in cache and has been
      -                        // retrieved directly we need to fire the callback
      -                        setTimeout( callback );
      -                    } else {
      -                        handle = ++xhrId;
      -                        if ( xhrOnUnloadAbort ) {
      -                            // Create the active xhrs callbacks list if needed
      -                            // and attach the unload handler
      -                            if ( !xhrCallbacks ) {
      -                                xhrCallbacks = {};
      -                                jQuery( window ).unload( xhrOnUnloadAbort );
      -                            }
      -                            // Add to list of active xhrs callbacks
      -                            xhrCallbacks[ handle ] = callback;
      -                        }
      -                        xhr.onreadystatechange = callback;
      -                    }
      -                },
      -
      -                abort: function() {
      -                    if ( callback ) {
      -                        callback( undefined, true );
      -                    }
      -                }
      -            };
      -        }
      -    });
      -}
      -var fxNow, timerId,
      -    rfxtypes = /^(?:toggle|show|hide)$/,
      -    rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
      -    rrun = /queueHooks$/,
      -    animationPrefilters = [ defaultPrefilter ],
      -    tweeners = {
      -        "*": [function( prop, value ) {
      -            var end, unit,
      -                tween = this.createTween( prop, value ),
      -                parts = rfxnum.exec( value ),
      -                target = tween.cur(),
      -                start = +target || 0,
      -                scale = 1,
      -                maxIterations = 20;
      -
      -            if ( parts ) {
      -                end = +parts[2];
      -                unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
      -
      -                // We need to compute starting value
      -                if ( unit !== "px" && start ) {
      -                    // Iteratively approximate from a nonzero starting point
      -                    // Prefer the current property, because this process will be trivial if it uses the same units
      -                    // Fallback to end or a simple constant
      -                    start = jQuery.css( tween.elem, prop, true ) || end || 1;
      -
      -                    do {
      -                        // If previous iteration zeroed out, double until we get *something*
      -                        // Use a string for doubling factor so we don't accidentally see scale as unchanged below
      -                        scale = scale || ".5";
      -
      -                        // Adjust and apply
      -                        start = start / scale;
      -                        jQuery.style( tween.elem, prop, start + unit );
      -
      -                    // Update scale, tolerating zero or NaN from tween.cur()
      -                    // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
      -                    } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
      -                }
      -
      -                tween.unit = unit;
      -                tween.start = start;
      -                // If a +=/-= token was provided, we're doing a relative animation
      -                tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
      -            }
      -            return tween;
      -        }]
      -    };
      -
      -// Animations created synchronously will run synchronously
      -function createFxNow() {
      -    setTimeout(function() {
      -        fxNow = undefined;
      -    });
      -    return ( fxNow = jQuery.now() );
      -}
      -
      -function createTweens( animation, props ) {
      -    jQuery.each( props, function( prop, value ) {
      -        var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
      -            index = 0,
      -            length = collection.length;
      -        for ( ; index < length; index++ ) {
      -            if ( collection[ index ].call( animation, prop, value ) ) {
      -
      -                // we're done with this property
      -                return;
      -            }
      -        }
      -    });
      -}
      -
      -function Animation( elem, properties, options ) {
      -    var result,
      -        stopped,
      -        index = 0,
      -        length = animationPrefilters.length,
      -        deferred = jQuery.Deferred().always( function() {
      -            // don't match elem in the :animated selector
      -            delete tick.elem;
      -        }),
      -        tick = function() {
      -            if ( stopped ) {
      -                return false;
      -            }
      -            var currentTime = fxNow || createFxNow(),
      -                remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
      -                // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
      -                temp = remaining / animation.duration || 0,
      -                percent = 1 - temp,
      -                index = 0,
      -                length = animation.tweens.length;
      -
      -            for ( ; index < length ; index++ ) {
      -                animation.tweens[ index ].run( percent );
      -            }
      -
      -            deferred.notifyWith( elem, [ animation, percent, remaining ]);
      -
      -            if ( percent < 1 && length ) {
      -                return remaining;
      -            } else {
      -                deferred.resolveWith( elem, [ animation ] );
      -                return false;
      -            }
      -        },
      -        animation = deferred.promise({
      -            elem: elem,
      -            props: jQuery.extend( {}, properties ),
      -            opts: jQuery.extend( true, { specialEasing: {} }, options ),
      -            originalProperties: properties,
      -            originalOptions: options,
      -            startTime: fxNow || createFxNow(),
      -            duration: options.duration,
      -            tweens: [],
      -            createTween: function( prop, end ) {
      -                var tween = jQuery.Tween( elem, animation.opts, prop, end,
      -                        animation.opts.specialEasing[ prop ] || animation.opts.easing );
      -                animation.tweens.push( tween );
      -                return tween;
      -            },
      -            stop: function( gotoEnd ) {
      -                var index = 0,
      -                    // if we are going to the end, we want to run all the tweens
      -                    // otherwise we skip this part
      -                    length = gotoEnd ? animation.tweens.length : 0;
      -                if ( stopped ) {
      -                    return this;
      -                }
      -                stopped = true;
      -                for ( ; index < length ; index++ ) {
      -                    animation.tweens[ index ].run( 1 );
      -                }
      -
      -                // resolve when we played the last frame
      -                // otherwise, reject
      -                if ( gotoEnd ) {
      -                    deferred.resolveWith( elem, [ animation, gotoEnd ] );
      -                } else {
      -                    deferred.rejectWith( elem, [ animation, gotoEnd ] );
      -                }
      -                return this;
      -            }
      -        }),
      -        props = animation.props;
      -
      -    propFilter( props, animation.opts.specialEasing );
      -
      -    for ( ; index < length ; index++ ) {
      -        result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
      -        if ( result ) {
      -            return result;
      -        }
      -    }
      -
      -    createTweens( animation, props );
      -
      -    if ( jQuery.isFunction( animation.opts.start ) ) {
      -        animation.opts.start.call( elem, animation );
      -    }
      -
      -    jQuery.fx.timer(
      -        jQuery.extend( tick, {
      -            elem: elem,
      -            anim: animation,
      -            queue: animation.opts.queue
      -        })
      -    );
      -
      -    // attach callbacks from options
      -    return animation.progress( animation.opts.progress )
      -        .done( animation.opts.done, animation.opts.complete )
      -        .fail( animation.opts.fail )
      -        .always( animation.opts.always );
      -}
      -
      -function propFilter( props, specialEasing ) {
      -    var value, name, index, easing, hooks;
      -
      -    // camelCase, specialEasing and expand cssHook pass
      -    for ( index in props ) {
      -        name = jQuery.camelCase( index );
      -        easing = specialEasing[ name ];
      -        value = props[ index ];
      -        if ( jQuery.isArray( value ) ) {
      -            easing = value[ 1 ];
      -            value = props[ index ] = value[ 0 ];
      -        }
      -
      -        if ( index !== name ) {
      -            props[ name ] = value;
      -            delete props[ index ];
      -        }
      -
      -        hooks = jQuery.cssHooks[ name ];
      -        if ( hooks && "expand" in hooks ) {
      -            value = hooks.expand( value );
      -            delete props[ name ];
      -
      -            // not quite $.extend, this wont overwrite keys already present.
      -            // also - reusing 'index' from above because we have the correct "name"
      -            for ( index in value ) {
      -                if ( !( index in props ) ) {
      -                    props[ index ] = value[ index ];
      -                    specialEasing[ index ] = easing;
      -                }
      -            }
      -        } else {
      -            specialEasing[ name ] = easing;
      -        }
      -    }
      -}
      -
      -jQuery.Animation = jQuery.extend( Animation, {
      -
      -    tweener: function( props, callback ) {
      -        if ( jQuery.isFunction( props ) ) {
      -            callback = props;
      -            props = [ "*" ];
      -        } else {
      -            props = props.split(" ");
      -        }
      -
      -        var prop,
      -            index = 0,
      -            length = props.length;
      -
      -        for ( ; index < length ; index++ ) {
      -            prop = props[ index ];
      -            tweeners[ prop ] = tweeners[ prop ] || [];
      -            tweeners[ prop ].unshift( callback );
      -        }
      -    },
      -
      -    prefilter: function( callback, prepend ) {
      -        if ( prepend ) {
      -            animationPrefilters.unshift( callback );
      -        } else {
      -            animationPrefilters.push( callback );
      -        }
      -    }
      -});
      -
      -function defaultPrefilter( elem, props, opts ) {
      -    /*jshint validthis:true */
      -    var prop, index, length,
      -        value, dataShow, toggle,
      -        tween, hooks, oldfire,
      -        anim = this,
      -        style = elem.style,
      -        orig = {},
      -        handled = [],
      -        hidden = elem.nodeType && isHidden( elem );
      -
      -    // handle queue: false promises
      -    if ( !opts.queue ) {
      -        hooks = jQuery._queueHooks( elem, "fx" );
      -        if ( hooks.unqueued == null ) {
      -            hooks.unqueued = 0;
      -            oldfire = hooks.empty.fire;
      -            hooks.empty.fire = function() {
      -                if ( !hooks.unqueued ) {
      -                    oldfire();
      -                }
      -            };
      -        }
      -        hooks.unqueued++;
      -
      -        anim.always(function() {
      -            // doing this makes sure that the complete handler will be called
      -            // before this completes
      -            anim.always(function() {
      -                hooks.unqueued--;
      -                if ( !jQuery.queue( elem, "fx" ).length ) {
      -                    hooks.empty.fire();
      -                }
      -            });
      -        });
      -    }
      -
      -    // height/width overflow pass
      -    if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
      -        // Make sure that nothing sneaks out
      -        // Record all 3 overflow attributes because IE does not
      -        // change the overflow attribute when overflowX and
      -        // overflowY are set to the same value
      -        opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
      -
      -        // Set display property to inline-block for height/width
      -        // animations on inline elements that are having width/height animated
      -        if ( jQuery.css( elem, "display" ) === "inline" &&
      -                jQuery.css( elem, "float" ) === "none" ) {
      -
      -            // inline-level elements accept inline-block;
      -            // block-level elements need to be inline with layout
      -            if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
      -                style.display = "inline-block";
      -
      -            } else {
      -                style.zoom = 1;
      -            }
      -        }
      -    }
      -
      -    if ( opts.overflow ) {
      -        style.overflow = "hidden";
      -        if ( !jQuery.support.shrinkWrapBlocks ) {
      -            anim.always(function() {
      -                style.overflow = opts.overflow[ 0 ];
      -                style.overflowX = opts.overflow[ 1 ];
      -                style.overflowY = opts.overflow[ 2 ];
      -            });
      -        }
      -    }
      -
      -
      -    // show/hide pass
      -    for ( index in props ) {
      -        value = props[ index ];
      -        if ( rfxtypes.exec( value ) ) {
      -            delete props[ index ];
      -            toggle = toggle || value === "toggle";
      -            if ( value === ( hidden ? "hide" : "show" ) ) {
      -                continue;
      -            }
      -            handled.push( index );
      -        }
      -    }
      -
      -    length = handled.length;
      -    if ( length ) {
      -        dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
      -        if ( "hidden" in dataShow ) {
      -            hidden = dataShow.hidden;
      -        }
      -
      -        // store state if its toggle - enables .stop().toggle() to "reverse"
      -        if ( toggle ) {
      -            dataShow.hidden = !hidden;
      -        }
      -        if ( hidden ) {
      -            jQuery( elem ).show();
      -        } else {
      -            anim.done(function() {
      -                jQuery( elem ).hide();
      -            });
      -        }
      -        anim.done(function() {
      -            var prop;
      -            jQuery._removeData( elem, "fxshow" );
      -            for ( prop in orig ) {
      -                jQuery.style( elem, prop, orig[ prop ] );
      -            }
      -        });
      -        for ( index = 0 ; index < length ; index++ ) {
      -            prop = handled[ index ];
      -            tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
      -            orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
      -
      -            if ( !( prop in dataShow ) ) {
      -                dataShow[ prop ] = tween.start;
      -                if ( hidden ) {
      -                    tween.end = tween.start;
      -                    tween.start = prop === "width" || prop === "height" ? 1 : 0;
      -                }
      -            }
      -        }
      -    }
      -}
      -
      -function Tween( elem, options, prop, end, easing ) {
      -    return new Tween.prototype.init( elem, options, prop, end, easing );
      -}
      -jQuery.Tween = Tween;
      -
      -Tween.prototype = {
      -    constructor: Tween,
      -    init: function( elem, options, prop, end, easing, unit ) {
      -        this.elem = elem;
      -        this.prop = prop;
      -        this.easing = easing || "swing";
      -        this.options = options;
      -        this.start = this.now = this.cur();
      -        this.end = end;
      -        this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
      -    },
      -    cur: function() {
      -        var hooks = Tween.propHooks[ this.prop ];
      -
      -        return hooks && hooks.get ?
      -            hooks.get( this ) :
      -            Tween.propHooks._default.get( this );
      -    },
      -    run: function( percent ) {
      -        var eased,
      -            hooks = Tween.propHooks[ this.prop ];
      -
      -        if ( this.options.duration ) {
      -            this.pos = eased = jQuery.easing[ this.easing ](
      -                percent, this.options.duration * percent, 0, 1, this.options.duration
      -            );
      -        } else {
      -            this.pos = eased = percent;
      -        }
      -        this.now = ( this.end - this.start ) * eased + this.start;
      -
      -        if ( this.options.step ) {
      -            this.options.step.call( this.elem, this.now, this );
      -        }
      -
      -        if ( hooks && hooks.set ) {
      -            hooks.set( this );
      -        } else {
      -            Tween.propHooks._default.set( this );
      -        }
      -        return this;
      -    }
      -};
      -
      -Tween.prototype.init.prototype = Tween.prototype;
      -
      -Tween.propHooks = {
      -    _default: {
      -        get: function( tween ) {
      -            var result;
      -
      -            if ( tween.elem[ tween.prop ] != null &&
      -                (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
      -                return tween.elem[ tween.prop ];
      -            }
      -
      -            // passing an empty string as a 3rd parameter to .css will automatically
      -            // attempt a parseFloat and fallback to a string if the parse fails
      -            // so, simple values such as "10px" are parsed to Float.
      -            // complex values such as "rotate(1rad)" are returned as is.
      -            result = jQuery.css( tween.elem, tween.prop, "" );
      -            // Empty strings, null, undefined and "auto" are converted to 0.
      -            return !result || result === "auto" ? 0 : result;
      -        },
      -        set: function( tween ) {
      -            // use step hook for back compat - use cssHook if its there - use .style if its
      -            // available and use plain properties where available
      -            if ( jQuery.fx.step[ tween.prop ] ) {
      -                jQuery.fx.step[ tween.prop ]( tween );
      -            } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
      -                jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
      -            } else {
      -                tween.elem[ tween.prop ] = tween.now;
      -            }
      -        }
      -    }
      -};
      -
      -// Remove in 2.0 - this supports IE8's panic based approach
      -// to setting things on disconnected nodes
      -
      -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
      -    set: function( tween ) {
      -        if ( tween.elem.nodeType && tween.elem.parentNode ) {
      -            tween.elem[ tween.prop ] = tween.now;
      -        }
      -    }
      -};
      -
      -jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
      -    var cssFn = jQuery.fn[ name ];
      -    jQuery.fn[ name ] = function( speed, easing, callback ) {
      -        return speed == null || typeof speed === "boolean" ?
      -            cssFn.apply( this, arguments ) :
      -            this.animate( genFx( name, true ), speed, easing, callback );
      -    };
      -});
      -
      -jQuery.fn.extend({
      -    fadeTo: function( speed, to, easing, callback ) {
      -
      -        // show any hidden elements after setting opacity to 0
      -        return this.filter( isHidden ).css( "opacity", 0 ).show()
      -
      -            // animate to the value specified
      -            .end().animate({ opacity: to }, speed, easing, callback );
      -    },
      -    animate: function( prop, speed, easing, callback ) {
      -        var empty = jQuery.isEmptyObject( prop ),
      -            optall = jQuery.speed( speed, easing, callback ),
      -            doAnimation = function() {
      -                // Operate on a copy of prop so per-property easing won't be lost
      -                var anim = Animation( this, jQuery.extend( {}, prop ), optall );
      -                doAnimation.finish = function() {
      -                    anim.stop( true );
      -                };
      -                // Empty animations, or finishing resolves immediately
      -                if ( empty || jQuery._data( this, "finish" ) ) {
      -                    anim.stop( true );
      -                }
      -            };
      -            doAnimation.finish = doAnimation;
      -
      -        return empty || optall.queue === false ?
      -            this.each( doAnimation ) :
      -            this.queue( optall.queue, doAnimation );
      -    },
      -    stop: function( type, clearQueue, gotoEnd ) {
      -        var stopQueue = function( hooks ) {
      -            var stop = hooks.stop;
      -            delete hooks.stop;
      -            stop( gotoEnd );
      -        };
      -
      -        if ( typeof type !== "string" ) {
      -            gotoEnd = clearQueue;
      -            clearQueue = type;
      -            type = undefined;
      -        }
      -        if ( clearQueue && type !== false ) {
      -            this.queue( type || "fx", [] );
      -        }
      -
      -        return this.each(function() {
      -            var dequeue = true,
      -                index = type != null && type + "queueHooks",
      -                timers = jQuery.timers,
      -                data = jQuery._data( this );
      -
      -            if ( index ) {
      -                if ( data[ index ] && data[ index ].stop ) {
      -                    stopQueue( data[ index ] );
      -                }
      -            } else {
      -                for ( index in data ) {
      -                    if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
      -                        stopQueue( data[ index ] );
      -                    }
      -                }
      -            }
      -
      -            for ( index = timers.length; index--; ) {
      -                if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
      -                    timers[ index ].anim.stop( gotoEnd );
      -                    dequeue = false;
      -                    timers.splice( index, 1 );
      -                }
      -            }
      -
      -            // start the next in the queue if the last step wasn't forced
      -            // timers currently will call their complete callbacks, which will dequeue
      -            // but only if they were gotoEnd
      -            if ( dequeue || !gotoEnd ) {
      -                jQuery.dequeue( this, type );
      -            }
      -        });
      -    },
      -    finish: function( type ) {
      -        if ( type !== false ) {
      -            type = type || "fx";
      -        }
      -        return this.each(function() {
      -            var index,
      -                data = jQuery._data( this ),
      -                queue = data[ type + "queue" ],
      -                hooks = data[ type + "queueHooks" ],
      -                timers = jQuery.timers,
      -                length = queue ? queue.length : 0;
      -
      -            // enable finishing flag on private data
      -            data.finish = true;
      -
      -            // empty the queue first
      -            jQuery.queue( this, type, [] );
      -
      -            if ( hooks && hooks.cur && hooks.cur.finish ) {
      -                hooks.cur.finish.call( this );
      -            }
      -
      -            // look for any active animations, and finish them
      -            for ( index = timers.length; index--; ) {
      -                if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
      -                    timers[ index ].anim.stop( true );
      -                    timers.splice( index, 1 );
      -                }
      -            }
      -
      -            // look for any animations in the old queue and finish them
      -            for ( index = 0; index < length; index++ ) {
      -                if ( queue[ index ] && queue[ index ].finish ) {
      -                    queue[ index ].finish.call( this );
      -                }
      -            }
      -
      -            // turn off finishing flag
      -            delete data.finish;
      -        });
      -    }
      -});
      -
      -// Generate parameters to create a standard animation
      -function genFx( type, includeWidth ) {
      -    var which,
      -        attrs = { height: type },
      -        i = 0;
      -
      -    // if we include width, step value is 1 to do all cssExpand values,
      -    // if we don't include width, step value is 2 to skip over Left and Right
      -    includeWidth = includeWidth? 1 : 0;
      -    for( ; i < 4 ; i += 2 - includeWidth ) {
      -        which = cssExpand[ i ];
      -        attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
      -    }
      -
      -    if ( includeWidth ) {
      -        attrs.opacity = attrs.width = type;
      -    }
      -
      -    return attrs;
      -}
      -
      -// Generate shortcuts for custom animations
      -jQuery.each({
      -    slideDown: genFx("show"),
      -    slideUp: genFx("hide"),
      -    slideToggle: genFx("toggle"),
      -    fadeIn: { opacity: "show" },
      -    fadeOut: { opacity: "hide" },
      -    fadeToggle: { opacity: "toggle" }
      -}, function( name, props ) {
      -    jQuery.fn[ name ] = function( speed, easing, callback ) {
      -        return this.animate( props, speed, easing, callback );
      -    };
      -});
      -
      -jQuery.speed = function( speed, easing, fn ) {
      -    var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
      -        complete: fn || !fn && easing ||
      -            jQuery.isFunction( speed ) && speed,
      -        duration: speed,
      -        easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
      -    };
      -
      -    opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
      -        opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
      -
      -    // normalize opt.queue - true/undefined/null -> "fx"
      -    if ( opt.queue == null || opt.queue === true ) {
      -        opt.queue = "fx";
      -    }
      -
      -    // Queueing
      -    opt.old = opt.complete;
      -
      -    opt.complete = function() {
      -        if ( jQuery.isFunction( opt.old ) ) {
      -            opt.old.call( this );
      -        }
      -
      -        if ( opt.queue ) {
      -            jQuery.dequeue( this, opt.queue );
      -        }
      -    };
      -
      -    return opt;
      -};
      -
      -jQuery.easing = {
      -    linear: function( p ) {
      -        return p;
      -    },
      -    swing: function( p ) {
      -        return 0.5 - Math.cos( p*Math.PI ) / 2;
      -    }
      -};
      -
      -jQuery.timers = [];
      -jQuery.fx = Tween.prototype.init;
      -jQuery.fx.tick = function() {
      -    var timer,
      -        timers = jQuery.timers,
      -        i = 0;
      -
      -    fxNow = jQuery.now();
      -
      -    for ( ; i < timers.length; i++ ) {
      -        timer = timers[ i ];
      -        // Checks the timer has not already been removed
      -        if ( !timer() && timers[ i ] === timer ) {
      -            timers.splice( i--, 1 );
      -        }
      -    }
      -
      -    if ( !timers.length ) {
      -        jQuery.fx.stop();
      -    }
      -    fxNow = undefined;
      -};
      -
      -jQuery.fx.timer = function( timer ) {
      -    if ( timer() && jQuery.timers.push( timer ) ) {
      -        jQuery.fx.start();
      -    }
      -};
      -
      -jQuery.fx.interval = 13;
      -
      -jQuery.fx.start = function() {
      -    if ( !timerId ) {
      -        timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
      -    }
      -};
      -
      -jQuery.fx.stop = function() {
      -    clearInterval( timerId );
      -    timerId = null;
      -};
      -
      -jQuery.fx.speeds = {
      -    slow: 600,
      -    fast: 200,
      -    // Default speed
      -    _default: 400
      -};
      -
      -// Back Compat <1.8 extension point
      -jQuery.fx.step = {};
      -
      -if ( jQuery.expr && jQuery.expr.filters ) {
      -    jQuery.expr.filters.animated = function( elem ) {
      -        return jQuery.grep(jQuery.timers, function( fn ) {
      -            return elem === fn.elem;
      -        }).length;
      -    };
      -}
      -jQuery.fn.offset = function( options ) {
      -    if ( arguments.length ) {
      -        return options === undefined ?
      -            this :
      -            this.each(function( i ) {
      -                jQuery.offset.setOffset( this, options, i );
      -            });
      -    }
      -
      -    var docElem, win,
      -        box = { top: 0, left: 0 },
      -        elem = this[ 0 ],
      -        doc = elem && elem.ownerDocument;
      -
      -    if ( !doc ) {
      -        return;
      -    }
      -
      -    docElem = doc.documentElement;
      -
      -    // Make sure it's not a disconnected DOM node
      -    if ( !jQuery.contains( docElem, elem ) ) {
      -        return box;
      -    }
      -
      -    // If we don't have gBCR, just use 0,0 rather than error
      -    // BlackBerry 5, iOS 3 (original iPhone)
      -    if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
      -        box = elem.getBoundingClientRect();
      -    }
      -    win = getWindow( doc );
      -    return {
      -        top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
      -        left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
      -    };
      -};
      -
      -jQuery.offset = {
      -
      -    setOffset: function( elem, options, i ) {
      -        var position = jQuery.css( elem, "position" );
      -
      -        // set position first, in-case top/left are set even on static elem
      -        if ( position === "static" ) {
      -            elem.style.position = "relative";
      -        }
      -
      -        var curElem = jQuery( elem ),
      -            curOffset = curElem.offset(),
      -            curCSSTop = jQuery.css( elem, "top" ),
      -            curCSSLeft = jQuery.css( elem, "left" ),
      -            calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
      -            props = {}, curPosition = {}, curTop, curLeft;
      -
      -        // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
      -        if ( calculatePosition ) {
      -            curPosition = curElem.position();
      -            curTop = curPosition.top;
      -            curLeft = curPosition.left;
      -        } else {
      -            curTop = parseFloat( curCSSTop ) || 0;
      -            curLeft = parseFloat( curCSSLeft ) || 0;
      -        }
      -
      -        if ( jQuery.isFunction( options ) ) {
      -            options = options.call( elem, i, curOffset );
      -        }
      -
      -        if ( options.top != null ) {
      -            props.top = ( options.top - curOffset.top ) + curTop;
      -        }
      -        if ( options.left != null ) {
      -            props.left = ( options.left - curOffset.left ) + curLeft;
      -        }
      -
      -        if ( "using" in options ) {
      -            options.using.call( elem, props );
      -        } else {
      -            curElem.css( props );
      -        }
      -    }
      -};
      -
      -
      -jQuery.fn.extend({
      -
      -    position: function() {
      -        if ( !this[ 0 ] ) {
      -            return;
      -        }
      -
      -        var offsetParent, offset,
      -            parentOffset = { top: 0, left: 0 },
      -            elem = this[ 0 ];
      -
      -        // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is its only offset parent
      -        if ( jQuery.css( elem, "position" ) === "fixed" ) {
      -            // we assume that getBoundingClientRect is available when computed position is fixed
      -            offset = elem.getBoundingClientRect();
      -        } else {
      -            // Get *real* offsetParent
      -            offsetParent = this.offsetParent();
      -
      -            // Get correct offsets
      -            offset = this.offset();
      -            if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
      -                parentOffset = offsetParent.offset();
      -            }
      -
      -            // Add offsetParent borders
      -            parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
      -            parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
      -        }
      -
      -        // Subtract parent offsets and element margins
      -        // note: when an element has margin: auto the offsetLeft and marginLeft
      -        // are the same in Safari causing offset.left to incorrectly be 0
      -        return {
      -            top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
      -            left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
      -        };
      -    },
      -
      -    offsetParent: function() {
      -        return this.map(function() {
      -            var offsetParent = this.offsetParent || document.documentElement;
      -            while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
      -                offsetParent = offsetParent.offsetParent;
      -            }
      -            return offsetParent || document.documentElement;
      -        });
      -    }
      -});
      -
      -
      -// Create scrollLeft and scrollTop methods
      -jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
      -    var top = /Y/.test( prop );
      -
      -    jQuery.fn[ method ] = function( val ) {
      -        return jQuery.access( this, function( elem, method, val ) {
      -            var win = getWindow( elem );
      -
      -            if ( val === undefined ) {
      -                return win ? (prop in win) ? win[ prop ] :
      -                    win.document.documentElement[ method ] :
      -                    elem[ method ];
      -            }
      -
      -            if ( win ) {
      -                win.scrollTo(
      -                    !top ? val : jQuery( win ).scrollLeft(),
      -                    top ? val : jQuery( win ).scrollTop()
      -                );
      -
      -            } else {
      -                elem[ method ] = val;
      -            }
      -        }, method, val, arguments.length, null );
      -    };
      -});
      -
      -function getWindow( elem ) {
      -    return jQuery.isWindow( elem ) ?
      -        elem :
      -        elem.nodeType === 9 ?
      -            elem.defaultView || elem.parentWindow :
      -            false;
      -}
      -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
      -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
      -    jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
      -        // margin is only for outerHeight, outerWidth
      -        jQuery.fn[ funcName ] = function( margin, value ) {
      -            var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
      -                extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
      -
      -            return jQuery.access( this, function( elem, type, value ) {
      -                var doc;
      -
      -                if ( jQuery.isWindow( elem ) ) {
      -                    // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
      -                    // isn't a whole lot we can do. See pull request at this URL for discussion:
      -                    // https://github.com/jquery/jquery/pull/764
      -                    return elem.document.documentElement[ "client" + name ];
      -                }
      -
      -                // Get document width or height
      -                if ( elem.nodeType === 9 ) {
      -                    doc = elem.documentElement;
      -
      -                    // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
      -                    // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
      -                    return Math.max(
      -                        elem.body[ "scroll" + name ], doc[ "scroll" + name ],
      -                        elem.body[ "offset" + name ], doc[ "offset" + name ],
      -                        doc[ "client" + name ]
      -                    );
      -                }
      -
      -                return value === undefined ?
      -                    // Get width or height on the element, requesting but not forcing parseFloat
      -                    jQuery.css( elem, type, extra ) :
      -
      -                    // Set width or height on the element
      -                    jQuery.style( elem, type, value, extra );
      -            }, type, chainable ? margin : undefined, chainable, null );
      -        };
      -    });
      -});
      -// Limit scope pollution from any deprecated API
      -// (function() {
      -
      -// })();
      -// Expose jQuery to the global object
      -window.jQuery = window.$ = jQuery;
      -
      -// Expose jQuery as an AMD module, but only for AMD loaders that
      -// understand the issues with loading multiple versions of jQuery
      -// in a page that all might call define(). The loader will indicate
      -// they have special allowances for multiple jQuery versions by
      -// specifying define.amd.jQuery = true. Register as a named module,
      -// since jQuery can be concatenated with other files that may use define,
      -// but not use a proper concatenation script that understands anonymous
      -// AMD modules. A named AMD is safest and most robust way to register.
      -// Lowercase jquery is used because AMD module names are derived from
      -// file names, and jQuery is normally delivered in a lowercase file name.
      -// Do this after creating the global so that if an AMD module wants to call
      -// noConflict to hide this version of jQuery, it will work.
      -if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
      -    define( "jquery", [], function () { return jQuery; } );
      -}
      -
      -})( window );
      \ No newline at end of file
      diff --git a/bower_components/tether/docs/welcome/js/log.js b/bower_components/tether/docs/welcome/js/log.js
      deleted file mode 100644
      index 6acd4fd9ef..0000000000
      --- a/bower_components/tether/docs/welcome/js/log.js
      +++ /dev/null
      @@ -1,134 +0,0 @@
      -(function() {
      -  var ffSupport, formats, getOrderedMatches, hasMatches, isFF, isIE, isOpera, isSafari, log, makeArray, operaSupport, safariSupport, stringToArgs, _log;
      -  if (!(window.console && window.console.log)) {
      -    return;
      -  }
      -  log = function() {
      -    var args;
      -    args = [];
      -    makeArray(arguments).forEach(function(arg) {
      -      if (typeof arg === 'string') {
      -        return args = args.concat(stringToArgs(arg));
      -      } else {
      -        return args.push(arg);
      -      }
      -    });
      -    return _log.apply(window, args);
      -  };
      -  _log = function() {
      -    return console.log.apply(console, makeArray(arguments));
      -  };
      -  makeArray = function(arrayLikeThing) {
      -    return Array.prototype.slice.call(arrayLikeThing);
      -  };
      -  formats = [
      -    {
      -      regex: /\*([^\*]+)\*/,
      -      replacer: function(m, p1) {
      -        return "%c" + p1 + "%c";
      -      },
      -      styles: function() {
      -        return ['font-style: italic', ''];
      -      }
      -    }, {
      -      regex: /\_([^\_]+)\_/,
      -      replacer: function(m, p1) {
      -        return "%c" + p1 + "%c";
      -      },
      -      styles: function() {
      -        return ['font-weight: bold', ''];
      -      }
      -    }, {
      -      regex: /\`([^\`]+)\`/,
      -      replacer: function(m, p1) {
      -        return "%c" + p1 + "%c";
      -      },
      -      styles: function() {
      -        return ['background: rgb(255, 255, 219); padding: 1px 5px; border: 1px solid rgba(0, 0, 0, 0.1)', ''];
      -      }
      -    }, {
      -      regex: /\[c\=(?:\"|\')?((?:(?!(?:\"|\')\]).)*)(?:\"|\')?\]((?:(?!\[c\]).)*)\[c\]/,
      -      replacer: function(m, p1, p2) {
      -        return "%c" + p2 + "%c";
      -      },
      -      styles: function(match) {
      -        return [match[1], ''];
      -      }
      -    }
      -  ];
      -  hasMatches = function(str) {
      -    var _hasMatches;
      -    _hasMatches = false;
      -    formats.forEach(function(format) {
      -      if (format.regex.test(str)) {
      -        return _hasMatches = true;
      -      }
      -    });
      -    return _hasMatches;
      -  };
      -  getOrderedMatches = function(str) {
      -    var matches;
      -    matches = [];
      -    formats.forEach(function(format) {
      -      var match;
      -      match = str.match(format.regex);
      -      if (match) {
      -        return matches.push({
      -          format: format,
      -          match: match
      -        });
      -      }
      -    });
      -    return matches.sort(function(a, b) {
      -      return a.match.index - b.match.index;
      -    });
      -  };
      -  stringToArgs = function(str) {
      -    var firstMatch, matches, styles;
      -    styles = [];
      -    while (hasMatches(str)) {
      -      matches = getOrderedMatches(str);
      -      firstMatch = matches[0];
      -      str = str.replace(firstMatch.format.regex, firstMatch.format.replacer);
      -      styles = styles.concat(firstMatch.format.styles(firstMatch.match));
      -    }
      -    return [str].concat(styles);
      -  };
      -  isSafari = function() {
      -    return /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
      -  };
      -  isOpera = function() {
      -    return /OPR/.test(navigator.userAgent) && /Opera/.test(navigator.vendor);
      -  };
      -  isFF = function() {
      -    return /Firefox/.test(navigator.userAgent);
      -  };
      -  isIE = function() {
      -    return /MSIE/.test(navigator.userAgent);
      -  };
      -  safariSupport = function() {
      -    var m;
      -    m = navigator.userAgent.match(/AppleWebKit\/(\d+)\.(\d+)(\.|\+|\s)/);
      -    if (!m) {
      -      return false;
      -    }
      -    return 537.38 <= parseInt(m[1], 10) + (parseInt(m[2], 10) / 100);
      -  };
      -  operaSupport = function() {
      -    var m;
      -    m = navigator.userAgent.match(/OPR\/(\d+)\./);
      -    if (!m) {
      -      return false;
      -    }
      -    return 15 <= parseInt(m[1], 10);
      -  };
      -  ffSupport = function() {
      -    return window.console.firebug || window.console.exception;
      -  };
      -  if (isIE() || (isFF() && !ffSupport()) || (isOpera() && !operaSupport()) || (isSafari() && !safariSupport())) {
      -    window.log = _log;
      -  } else {
      -    window.log = log;
      -  }
      -  window.log.l = _log;
      -}).call(this);
      \ No newline at end of file
      diff --git a/bower_components/tether/docs/welcome/js/tether-v0.1.3.js b/bower_components/tether/docs/welcome/js/tether-v0.1.3.js
      deleted file mode 100644
      index 98af16f1b0..0000000000
      --- a/bower_components/tether/docs/welcome/js/tether-v0.1.3.js
      +++ /dev/null
      @@ -1,2 +0,0 @@
      -/*! tether.js 0.1.3 */
      -(function(){var a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=[].slice,s=function(a,b){return function(){return a.apply(b,arguments)}};a=jQuery,l=/msie [\w.]+/.test(navigator.userAgent.toLowerCase()),k=function(b){var c,d;return c=b.css("position"),"fixed"===c?b:(d=void 0,d="absolute"===c||l&&("static"===c||"relative"===c)?b.parents().filter(function(){var b;return("relative"===(b=a.css(this,"position"))||"absolute"===b||"fixed"===b)&&/(auto|scroll)/.test(a.css(this,"overflow")+a.css(this,"overflow-y")+a.css(this,"overflow-x"))}).first():b.parents().filter(function(){return/(auto|scroll)/.test(a.css(this,"overflow")+a.css(this,"overflow-y")+a.css(this,"overflow-x"))}).first(),d.length?d:a("html"))},b=16,j=function(a,c){var d;return null==c&&(c=b),d=!1,function(){var b,e=this;if(!d)return b=arguments,d=!0,setTimeout(function(){return d=!1,a.apply(e,b)},c),!0}},q=[],p=function(){var a,b,c;for(b=0,c=q.length;c>b;b++)a=q[b],a.position();return!0},l&&(p=j(p)),a(window).on("resize scroll",p),c={center:"center",left:"right",right:"left"},d={middle:"middle",top:"bottom",bottom:"top"},e={top:"0",left:"0",middle:"50%",center:"50%",bottom:"100%",right:"100%"},i=function(a,b){var e,f;return e=a.left,f=a.top,"auto"===e&&(e=c[b.left]),"auto"===f&&(f=d[b.top]),{left:e,top:f}},h=function(a){var b,c;return{left:null!=(b=e[a.left])?b:a.left,top:null!=(c=e[a.top])?c:a.top}},g=function(){var a,b,c,d,e,f,g;for(b=1<=arguments.length?r.call(arguments,0):[],c={top:0,left:0},e=0,f=b.length;f>e;e++)g=b[e],d=g.top,a=g.left,"string"==typeof d&&(d=parseFloat(d,10)),"string"==typeof a&&(a=parseFloat(a,10)),c.top+=d,c.left+=a;return c},m=function(b,c){return"string"==typeof b.left&&-1!==b.left.indexOf("%")&&(b.left=parseFloat(b.left,10)/100*a(c).outerWidth()),"string"==typeof b.top&&-1!==b.top.indexOf("%")&&(b.top=parseFloat(b.top,10)/100*a(c).outerHeight()),b},n=o=function(a){var b,c,d;return d=a.split(" "),c=d[0],b=d[1],{top:c,left:b}},f=function(){function b(a){this.position=s(this.position,this);var c,d,e,f,g;for(q.push(this),this.history=[],this.setOptions(a,!1),f=b.modules,d=0,e=f.length;e>d;d++)c=f[d],null!=(g=c.initialize)&&g.call(this);this.position()}return b.modules=[],b.prototype.setOptions=function(b,c){var d,e;return this.options=b,null==c&&(c=!0),d={offset:"0 0",targetOffset:"0 0",targetAttachment:"auto auto"},this.options=a.extend(d,this.options),e=this.options,this.element=e.element,this.target=e.target,this.element.jquery&&(this.$element=this.element,this.element=this.element[0]),this.target.jquery&&(this.$target=this.target,this.target=this.target[0]),null==this.$element&&(this.$element=a(this.element)),null==this.$target&&(this.$target=a(this.target)),this.$element.addClass("tether-element"),this.$target.addClass("tether-target"),this.targetAttachment=n(this.options.targetAttachment),this.attachment=n(this.options.attachment),this.offset=o(this.options.offset),this.targetOffset=o(this.options.targetOffset),null!=this.scrollParent&&this.disable(),this.scrollParent=k(a(this.target)),this.options.enabled!==!1?this.enable(c):void 0},b.prototype.enable=function(a){return null==a&&(a=!0),this.addClass("tether-enabled"),this.enabled=!0,this.scrollParent.on("scroll",this.position),a?this.position():void 0},b.prototype.disable=function(){return this.removeClass("tether-enabled"),this.enabled=!1,null!=this.scrollParent?this.scrollParent.off("scroll",this.position):void 0},b.prototype.destroy=function(){var a,b,c,d,e;for(this.disable(),e=[],a=c=0,d=q.length;d>c;a=++c){if(b=q[a],b===this){q.splice(a,1);break}e.push(void 0)}return e},b.prototype.updateAttachClasses=function(a,b){var c,d,e,f,g,h;for(null==a&&(a=this.attachment),null==b&&(b=this.targetAttachment),d=["left","top","bottom","right","middle","center"],e=0,g=d.length;g>e;e++)c=d[e],this.removeClass("tether-element-attached-"+c);for(a.top&&this.addClass("tether-element-attached-"+a.top),a.left&&this.addClass("tether-element-attached-"+a.left),f=0,h=d.length;h>f;f++)c=d[f],this.removeClass("tether-target-attached-"+c);return b.top&&this.addClass("tether-target-attached-"+b.top),b.left?this.addClass("tether-target-attached-"+b.left):void 0},b.prototype.addClass=function(a){return this.$element.addClass(a),this.$target.addClass(a)},b.prototype.removeClass=function(a){return this.$element.removeClass(a),this.$target.removeClass(a)},b.prototype.position=function(){var a,c,d,e,f,j,k,l,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F;if(this.enabled){for(u=i(this.targetAttachment,this.attachment),this.updateAttachClasses(this.attachment,u),n=m(h(this.attachment),this.element),v=m(h(u),this.target),f=m(this.offset,this.element),j=m(this.targetOffset,this.target),n=g(n,f),v=g(v,j),w=this.$target.offset(),c=this.$element.offset(),e=w.left+v.left-n.left,x=w.top+v.top-n.top,D=b.modules,z=0,B=D.length;B>z;z++)if(k=D[z],q=k.position.call(this,{left:e,top:x,targetAttachment:u,targetPos:w,elementPos:c,offset:n,targetOffset:v,manualOffset:f,manualTargetOffset:j}),null!=q&&"object"==typeof q){if(q===!1)return!1;x=q.top,e=q.left}if(y=this.$element.outerWidth(),d=this.$element.outerHeight(),l={page:{top:x,bottom:document.body.scrollHeight-x-d,left:e,right:document.body.scrollWidth-e-y},viewport:{top:x-pageYOffset,bottom:pageYOffset-x-d+innerHeight,left:e-pageXOffset,right:pageXOffset-e-y+innerWidth}},(null!=(E=this.options.optimizations)?E.moveElement:void 0)!==!1){for(a=this.$target.offsetParent(),p=a.offset(),o={},F=["top","left","bottom","right"],A=0,C=F.length;C>A;A++)t=F[A],o[t]=parseFloat(a.css("border-"+t+"-width"));p.left+=o.left,p.top+=o.top,p.right=document.body.scrollWidth-p.left-a.width(),p.bottom=document.body.scrollHeight-p.top-a.height(),l.page.top>=p.top&&l.page.bottom>=p.bottom&&l.page.left>=p.left&&l.page.right>=p.right&&(s=a.scrollTop(),r=a.scrollLeft(),l.offset={top:l.page.top-p.top+s+o.top,left:l.page.left-p.left+r+o.left,right:l.page.right-p.right-r+o.right,bottom:l.page.bottom-p.bottom-s+o.bottom})}return this.move(l),this.history.unshift(l),this.history.length>3&&this.history.pop(),!0}},b.prototype.move=function(b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v;j={};for(m in b){j[m]={};for(f in b[m]){for(e=!1,t=this.history,p=0,r=t.length;r>p;p++)if(i=t[p],(null!=(u=i[m])?u[f]:void 0)!==b[m][f]){e=!0;break}e||(j[m][f]=!0)}}if(d={top:"",left:"",right:"",bottom:""},l=function(a,b){return a.top?d.top=""+b.top+"px":d.bottom=""+b.bottom+"px",a.left?d.left=""+b.left+"px":d.right=""+b.right+"px"},g=!1,(j.page.top||j.page.bottom)&&(j.page.left||j.page.right))d.position="absolute",l(j.page,b.page);else if((j.viewport.top||j.viewport.bottom)&&(j.viewport.left||j.viewport.right))d.position="fixed",l(j.viewport,b.viewport);else if(null!=j.offset&&(j.offset.top||j.offset.bottom)&&(j.offset.left||j.offset.right)){for(d.position="absolute",c=this.$target.offsetParent(),this.$element.offsetParent()[0]!==c[0]&&(this.$element.detach(),c.append(this.$element)),h=a.extend({},b.offset),v=["top","left","bottom","right"],q=0,s=v.length;s>q;q++)k=v[q],h[k]-=parseFloat(c.css("border-"+k+"-width"),10);l(j.offset,h),g=!0}else d.position="absolute",d.top=""+b.page.top+"px",d.left=""+b.page.left+"px";g||this.$element.parent().is("body")||(this.$element.detach(),a(document.body).append(this.$element)),o=!1;for(f in d)if(n=d[f],this.$element.css(f)!==n){o=!0;break}return o?this.$element.css(d):void 0},b}(),window.Tether=f}).call(this),function(){var a,b,c,d,e=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};a=jQuery,c={left:"right",right:"left",top:"bottom",bottom:"top",middle:"middle"},b=["left","top","right","bottom"],d=function(c,d){var e,f,g,h,i,j;if("scrollParent"===d?d=c.scrollParent[0]:"window"===d&&(d=[pageXOffset,pageYOffset,innerWidth+pageXOffset,innerHeight+pageYOffset]),null!=d.nodeType)for(e=a(d),g=e.offset(),d=[g.left,g.top,e.width()+g.left,e.height()+g.top],f=i=0,j=b.length;j>i;f=++i)h=b[f],d[f]+=parseFloat(e.css("border-"+h+"-width"),10);return d},Tether.modules.push({position:function(c){var f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T=this;if(C=c.top,n=c.left,y=c.targetAttachment,this.options.constraints){for(u=function(a){var c,d,e,f;for(T.removeClass(a),f=[],d=0,e=b.length;e>d;d++)c=b[d],f.push(T.removeClass(""+a+"-"+c));return f},m=this.$element.outerHeight(),D=this.$element.outerWidth(),z=this.$target.outerHeight(),A=this.$target.outerWidth(),x={},l={},v=["tether-pinned","tether-out-of-bounds"],O=this.options.constraints,E=0,I=O.length;I>E;E++)k=O[E],k.outOfBoundsClass&&v.push(k.outOfBoundsClass),k.pinnedClass&&v.push(k.pinnedClass);for(F=0,J=v.length;J>F;F++)j=v[F],u(j);for(x=a.extend({},y),l=a.extend({},this.attachment),P=this.options.constraints,G=0,K=P.length;K>G;G++){if(k=P[G],B=k.to,f=k.attachment,r=k.pin,null==f&&(f=""),e.call(f," ")>=0?(Q=f.split(" "),i=Q[0],h=Q[1]):h=i=f,g=d(this,B),("target"===i||"both"===i)&&(C<g[1]&&"top"===x.top&&(C+=z,x.top="bottom"),C+m>g[3]&&"bottom"===x.top&&(C-=z,x.top="top")),"together"===i&&(C<g[1]&&"top"===x.top&&("bottom"===l.top?(C+=z,x.top="bottom",C+=m,l.top="top"):"top"===l.top&&(C+=z,x.top="bottom",C-=m,l.top="bottom")),C+m>g[3]&&"bottom"===x.top&&("top"===l.top?(C-=z,x.top="top",C-=m,l.top="bottom"):"bottom"===l.top&&(C-=z,x.top="top",C+=m,l.top="top"))),("target"===h||"both"===h)&&(n<g[0]&&"left"===x.left&&(n+=A,x.left="right"),n+D>g[2]&&"right"===x.left&&(n-=A,x.left="left")),"together"===h&&(n<g[0]&&"left"===x.left?"right"===l.left?(n+=A,x.left="right",n+=D,l.left="left"):"left"===l.left&&(n+=A,x.left="right",n-=D,l.left="right"):n+D>g[2]&&"right"===x.left&&("left"===l.left?(n-=A,x.left="left",n-=D,l.left="right"):"right"===l.left&&(n-=A,x.left="left",n+=D,l.left="left"))),("element"===i||"both"===i)&&(C<g[1]&&"bottom"===l.top&&(C+=m,l.top="top"),C+m>g[3]&&"top"===l.top&&(C-=m,l.top="bottom")),("element"===h||"both"===h)&&(n<g[0]&&"right"===l.left&&(n+=D,l.left="left"),n+D>g[2]&&"left"===l.left&&(n-=D,l.left="right")),"string"==typeof r?r=function(){var a,b,c,d;for(c=r.split(","),d=[],a=0,b=c.length;b>a;a++)q=c[a],d.push(q.trim());return d}():r===!0&&(r=["top","left","right","bottom"]),r||(r=[]),s=[],o=[],C<g[1]&&(e.call(r,"top")>=0?(C=g[1],s.push("top")):o.push("top")),C+m>g[3]&&(e.call(r,"bottom")>=0?(C=g[3]-m,s.push("bottom")):o.push("bottom")),n<g[0]&&(e.call(r,"left")>=0?(n=g[0],s.push("left")):o.push("left")),n+D>g[2]&&(e.call(r,"right")>=0?(n=g[2]-D,s.push("right")):o.push("right")),s.length)for(t=null!=(R=this.options.pinnedClass)?R:"tether-pinned",this.addClass(t),H=0,L=s.length;L>H;H++)w=s[H],this.addClass(""+t+"-"+w);if(o.length)for(p=null!=(S=this.options.outOfBoundsClass)?S:"tether-out-of-bounds",this.addClass(p),N=0,M=o.length;M>N;N++)w=o[N],this.addClass(""+p+"-"+w);(e.call(s,"left")>=0||e.call(s,"right")>=0)&&(l.left=x.left=!1),(e.call(s,"top")>=0||e.call(s,"bottom")>=0)&&(l.top=x.top=!1),(x.top!==y.top||x.left!==y.left||l.top!==this.attachment.top||l.left!==this.attachment.left)&&this.updateAttachClasses(l,x)}return{top:C,left:n}}}})}.call(this),function(){var a;a=jQuery,Tether.modules.push({position:function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y;if(l=a.top,e=a.left,d=this.$element.outerHeight(),m=this.$element.outerWidth(),i=this.$target.outerHeight(),k=this.$target.outerWidth(),j=this.$target.offset(),j.bottom=j.top+i,j.right=j.left+k,c=l+d,f=e+m,b=[],l<=j.bottom&&c>=j.top)for(v=["left","right"],n=0,r=v.length;r>n;n++)g=v[n],((w=j[g])===e||w===f)&&b.push(g);if(e<=j.right&&f>=j.left)for(x=["top","bottom"],o=0,s=x.length;s>o;o++)g=x[o],((y=j[g])===l||y===c)&&b.push(g);for(h=["left","top","right","bottom"],this.removeClass("tether-abutted"),p=0,t=h.length;t>p;p++)g=h[p],this.removeClass("tether-abutted-"+g);for(b.length&&this.addClass("tether-abutted"),q=0,u=b.length;u>q;q++)g=b[q],this.addClass("tether-abutted-"+g);return!0}})}.call(this),function(){Tether.modules.push({position:function(a){var b,c,d,e,f,g,h;return g=a.top,b=a.left,this.options.shift?(c=function(a){return"function"==typeof a?a.call(this,{top:g,left:b}):a},d=c(this.options.shift),"string"==typeof d?(d=d.split(" "),d[1]||(d[1]=d[0]),f=d[0],e=d[1],f=parseFloat(f,10),e=parseFloat(e,10)):(h=[d.top,d.left],f=h[0],e=h[1]),g+=f,b+=e,{top:g,left:b}):void 0}})}.call(this);
      \ No newline at end of file
      diff --git a/bower_components/tether/docs/welcome/js/welcome.js b/bower_components/tether/docs/welcome/js/welcome.js
      deleted file mode 100644
      index 6f587e61b8..0000000000
      --- a/bower_components/tether/docs/welcome/js/welcome.js
      +++ /dev/null
      @@ -1,193 +0,0 @@
      -(function() {
      -  var init, isMobile, setupBrowserDemo, setupHero, _Drop;
      -
      -  _Drop = Drop.createContext({
      -    classPrefix: 'tether'
      -  });
      -
      -  isMobile = $(window).width() < 567;
      -
      -  init = function() {
      -    setupHero();
      -    return setupBrowserDemo();
      -  };
      -
      -  setupHero = function() {
      -    var $target, finalDropState, frameLengthMS, frames, openAllDrops, openIndex, openNextDrop, position, positions, _i, _len;
      -    $target = $('.tether-target-demo');
      -    positions = ['top left', 'left top', 'left middle', 'left bottom', 'bottom left', 'bottom center', 'bottom right', 'right bottom', 'right middle', 'right top', 'top right', 'top center'];
      -    if (isMobile) {
      -      positions = ['top left', 'bottom left', 'bottom right', 'top right'];
      -    }
      -    window.drops = {};
      -    for (_i = 0, _len = positions.length; _i < _len; _i++) {
      -      position = positions[_i];
      -      drops[position] = new _Drop({
      -        target: $target[0],
      -        classes: 'tether-theme-arrows-dark',
      -        position: position,
      -        constrainToWindow: false,
      -        openOn: '',
      -        content: '<div style="height: 50px; width: 50px"></div>'
      -      });
      -    }
      -    openIndex = 0;
      -    frames = 0;
      -    frameLengthMS = 10;
      -    openAllDrops = function() {
      -      var drop, _results;
      -      _results = [];
      -      for (position in drops) {
      -        drop = drops[position];
      -        _results.push(drop.open());
      -      }
      -      return _results;
      -    };
      -    openNextDrop = function() {
      -      var drop;
      -      for (position in drops) {
      -        drop = drops[position];
      -        drop.close();
      -      }
      -      drops[positions[openIndex]].open();
      -      drops[positions[(openIndex + 6) % positions.length]].open();
      -      openIndex = (openIndex + 1) % positions.length;
      -      if (frames > 5) {
      -        finalDropState();
      -        return;
      -      }
      -      frames += 1;
      -      return setTimeout(openNextDrop, frameLengthMS * frames);
      -    };
      -    finalDropState = function() {
      -      $(drops['top left'].dropContent).html('Marrying DOM elements for life.');
      -      $(drops['bottom right'].dropContent).html('<a class="button" href="http://github.com/HubSpot/tether">★ On Github</a>');
      -      drops['top left'].open();
      -      return drops['bottom right'].open();
      -    };
      -    if (true || isMobile) {
      -      drops['top left'].open();
      -      drops['top left'].tether.position();
      -      drops['bottom right'].open();
      -      drops['bottom right'].tether.position();
      -      return finalDropState();
      -    } else {
      -      return openNextDrop();
      -    }
      -  };
      -
      -  setupBrowserDemo = function() {
      -    var $browserContents, $browserDemo, $iframe, $sections, $startPoint, $stopPoint, scrollInterval, scrollTop, scrollTopDirection, setSection;
      -    $browserDemo = $('.browser-demo.showcase');
      -    $startPoint = $('.browser-demo-start-point');
      -    $stopPoint = $('.browser-demo-stop-point');
      -    $iframe = $('.browser-window iframe');
      -    $browserContents = $('.browser-content .browser-demo-inner');
      -    $sections = $('.browser-demo-section');
      -    $('body').append("<style>\n    table.showcase.browser-demo.fixed-bottom {\n        top: " + $sections.length + "00%\n    }\n</style>");
      -    $(window).scroll(function() {
      -      var scrollTop;
      -      scrollTop = $(window).scrollTop();
      -      if ($startPoint.position().top < scrollTop && scrollTop + window.innerHeight < $stopPoint.position().top) {
      -        $browserDemo.removeClass('fixed-bottom');
      -        $browserDemo.addClass('fixed');
      -        return $sections.each(function() {
      -          var $section;
      -          $section = $(this);
      -          if (($section.position().top < scrollTop && scrollTop < $section.position().top + $section.outerHeight())) {
      -            setSection($section.data('section'));
      -          }
      -          return true;
      -        });
      -      } else {
      -        $browserDemo.removeAttr('data-section');
      -        $browserDemo.removeClass('fixed');
      -        if (scrollTop + window.innerHeight > $stopPoint.position().top) {
      -          return $browserDemo.addClass('fixed-bottom');
      -        } else {
      -          return $browserDemo.removeClass('fixed-bottom');
      -        }
      -      }
      -    });
      -    $iframe.load(function() {
      -      var $items, iframeWindow;
      -      iframeWindow = $iframe[0].contentWindow;
      -      $items = $iframe.contents().find('.item');
      -      return $items.each(function(i) {
      -        var $item, drop, _iframeWindowDrop;
      -        $item = $(this);
      -        _iframeWindowDrop = iframeWindow.Drop.createContext({
      -          classPrefix: 'tether'
      -        });
      -        drop = new _iframeWindowDrop({
      -          target: $item[0],
      -          classes: 'tether-theme-arrows-dark',
      -          position: 'right top',
      -          constrainToWindow: true,
      -          openOn: 'click',
      -          content: '<ul>\n    <li>Action&nbsp;1</li>\n    <li>Action&nbsp;2</li>\n    <li>Action&nbsp;3</li>\n</ul>'
      -        });
      -        return $item.data('drop', drop);
      -      });
      -    });
      -    scrollInterval = void 0;
      -    scrollTop = 0;
      -    scrollTopDirection = 1;
      -    return setSection = function(section) {
      -      var closeAllItems, openExampleItem, scrollLeftSection, stopScrollingLeftSection;
      -      $browserDemo.attr('data-section', section);
      -      $('.section-copy').removeClass('active');
      -      $(".section-copy[data-section=\"" + section + "\"]").addClass('active');
      -      openExampleItem = function() {
      -        if (isMobile) {
      -          return $iframe.contents().find('.item:first').data().drop.open();
      -        } else {
      -          return $iframe.contents().find('.item:eq(2)').data().drop.open();
      -        }
      -      };
      -      closeAllItems = function() {
      -        return $iframe.contents().find('.item').each(function() {
      -          return $(this).data().drop.close() || true;
      -        });
      -      };
      -      scrollLeftSection = function() {
      -        return scrollInterval = setInterval(function() {
      -          $iframe.contents().find('.left').scrollTop(scrollTop);
      -          scrollTop += scrollTopDirection;
      -          if (scrollTop > 50) {
      -            scrollTopDirection = -1;
      -          }
      -          if (scrollTop < 0) {
      -            return scrollTopDirection = 1;
      -          }
      -        }, 30);
      -      };
      -      stopScrollingLeftSection = function() {
      -        return clearInterval(scrollInterval);
      -      };
      -      switch (section) {
      -        case 'what':
      -          closeAllItems();
      -          openExampleItem();
      -          return stopScrollingLeftSection();
      -        case 'how':
      -          closeAllItems();
      -          openExampleItem();
      -          stopScrollingLeftSection();
      -          return scrollLeftSection();
      -        case 'why':
      -          closeAllItems();
      -          openExampleItem();
      -          stopScrollingLeftSection();
      -          return scrollLeftSection();
      -        case 'outro':
      -          closeAllItems();
      -          openExampleItem();
      -          return stopScrollingLeftSection();
      -      }
      -    };
      -  };
      -
      -  init();
      -
      -}).call(this);
      diff --git a/bower_components/tether/docs/welcome/sass/_inline-block.sass b/bower_components/tether/docs/welcome/sass/_inline-block.sass
      deleted file mode 100644
      index 544a085d64..0000000000
      --- a/bower_components/tether/docs/welcome/sass/_inline-block.sass
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -@mixin inline-block
      -    display: inline-block
      -    vertical-align: middle
      -    *vertical-align: auto
      -    *zoom: 1
      -    *display: inline
      diff --git a/bower_components/tether/docs/welcome/sass/browser-demo.sass b/bower_components/tether/docs/welcome/sass/browser-demo.sass
      deleted file mode 100644
      index 2073798cd8..0000000000
      --- a/bower_components/tether/docs/welcome/sass/browser-demo.sass
      +++ /dev/null
      @@ -1,93 +0,0 @@
      -@import inline-block
      -
      -html, body
      -    height: 100%
      -    overflow: hidden
      -    font-family: "proxima-nova", sans-serif
      -
      -.tether.tether-theme-arrows-dark .tether-content
      -    filter: none
      -    background: #000
      -
      -    ul
      -        color: #fff
      -        list-style: none
      -        padding: 0
      -        margin: 0
      -
      -.tether.tether-theme-arrows-dark.tether-element-attached-top.tether-element-attached-left.tether-target-attached-right .tether-content:before
      -    border-right-color: #000
      -
      -.browser-demo
      -    position: absolute
      -    top: 0
      -    left: 0
      -    bottom: 0
      -    right: 0
      -
      -    *, *:after, *:before
      -        box-sizing: border-box
      -
      -    .top
      -        position: absolute
      -        height: 60px
      -        padding: 20px
      -        line-height: 40px
      -        width: 100%
      -        border-bottom: 1px solid rgba(0, 0, 0, .1)
      -
      -    .bottom
      -        position: absolute
      -        top: 60px
      -        bottom: 0
      -        width: 100%
      -
      -        .left
      -            border-right: 1px solid rgba(0, 0, 0, .1)
      -            position: absolute
      -            width: 30%
      -            height: 100%
      -            overflow: auto
      -
      -            .item
      -                height: 64px
      -                border-bottom: 1px solid rgba(0, 0, 0, .1)
      -                cursor: pointer
      -
      -                &:hover, &.tether-open
      -                    background: rgba(0, 0, 0, .1)
      -                    border-bottom: 1px solid rgba(0, 0, 0, 0)
      -
      -                &:last-child
      -                    border-bottom: 0
      -
      -        .right
      -            position: absolute
      -            width: 70%
      -            right: 0
      -            height: 100%
      -            padding: 20px
      -
      -    .title
      -        +inline-block
      -        background: rgba(0, 0, 0, .1)
      -        width: 150px
      -        height: 15px
      -        margin-bottom: 20px
      -
      -    .word
      -        +inline-block
      -        background: rgba(0, 0, 0, .1)
      -        width: 50px
      -        height: 8px
      -        margin-right: 5px
      -        margin-bottom: 5px
      -
      -        &:nth-last-child(4n+1)
      -            width: 73px
      -
      -        &:nth-last-child(10n+1)
      -            width: 14px
      -
      -        &:nth-last-child(9n+1)
      -            width: 80px
      diff --git a/bower_components/tether/docs/welcome/sass/welcome.sass b/bower_components/tether/docs/welcome/sass/welcome.sass
      deleted file mode 100644
      index 92992123ba..0000000000
      --- a/bower_components/tether/docs/welcome/sass/welcome.sass
      +++ /dev/null
      @@ -1,285 +0,0 @@
      -@import inline-block
      -
      -html, body
      -    height: 100%
      -
      -body
      -    margin: 0
      -    font-family: "proxima-nova", "Helvetica Neue", sans-serif
      -
      -.button
      -    display: inline-block
      -    border: 2px solid #333
      -    color: #333
      -    padding: 1em 1.25em
      -    font-weight: 500
      -    text-transform: uppercase
      -    letter-spacing: 3px
      -    text-decoration: none
      -    cursor: pointer
      -    width: 140px
      -    font-size: .8em
      -    line-height: 1.3em
      -    text-align: center
      -
      -.tether-element.tether-theme-arrows-dark .tether-content
      -    padding: 1em
      -    font-size: 1.1em
      -
      -    .button
      -        border-color: #fff
      -        color: #fff
      -        width: 170px
      -        pointer-events: all
      -
      -.mobile-copy
      -    display: none
      -
      -    @media (max-width: 568px)
      -        display: block
      -
      -.button.dark
      -    background: #333
      -    color: #fff
      -
      -.hero-wrap
      -    height: 100%
      -    overflow: hidden
      -
      -table.showcase
      -    height: 100%
      -    width: 100%
      -    position: relative
      -
      -    &:after
      -        content: ""
      -        display: block
      -        position: absolute
      -        left: 0
      -        right: 0
      -        bottom: 20px
      -        margin: auto
      -        height: 0
      -        width: 0
      -        border-width: 18px
      -        border-style: solid
      -        border-color: transparent
      -        border-top-color: rgba(0, 0, 0, 0.2)
      -
      -    &.no-next-arrow:after
      -        display: none
      -
      -    .showcase-inner
      -        margin: 40px auto 60px
      -        padding: 10px
      -
      -        h1
      -            font-size: 50px
      -            text-align: center
      -            font-weight: 300
      -
      -            @media (max-width: 567px)
      -                font-size: 40px
      -
      -        h2
      -            font-size: 24px
      -            text-align: center
      -            font-weight: 300
      -            margin: 1em 0 1em
      -
      -            @media (max-width: 567px)
      -                font-size: 14px
      -
      -        p
      -            text-align: center
      -
      -    &.hero
      -        text-align: center
      -
      -        .tether-target-demo
      -            +inline-block
      -            border: 2px dotted #000
      -            margin: 5rem auto
      -            padding: 5rem
      -
      -            @media (max-width: 567px)
      -                padding: 1rem
      -
      -    &.share
      -        background: #f3f3f3
      -
      -    &.projects-showcase .showcase-inner
      -
      -        .projects-list
      -            width: 80%
      -            max-width: 1200px
      -            margin: 0 auto
      -
      -            .project
      -                color: inherit
      -                text-decoration: none
      -                position: relative
      -                width: 50%
      -                float: left
      -                text-align: center
      -                margin-bottom: 2rem
      -
      -                &:nth-child(odd)
      -                    clear: left
      -
      -            .os-icon
      -                width: 8rem
      -                height: 8rem
      -                margin-bottom: 1rem
      -                background-size: 100%
      -
      -            h1
      -                font-size: 2.5rem
      -
      -            p
      -                font-size: 1.3rem
      -
      -    &.browser-demo
      -        background-image: linear-gradient(top left, #723362 0%, #9d223c 100%)
      -        background-color: #9d223c
      -        position: absolute
      -        top: 100%
      -
      -        &.fixed
      -            position: fixed
      -            top: 0
      -            bottom: 0
      -            left: 0
      -            right: 0
      -            z-index: 1
      -
      -            .browser-demo-inner
      -                transition: width 2s ease-in-out, height 2s ease-in-out
      -
      -            // Sections
      -
      -            &[data-section="what"]
      -                box-shadow: 0 0 0 0
      -
      -            &[data-section="why"]
      -
      -                .browser-demo-inner
      -                    width: 70%
      -
      -            &[data-section="outro"]
      -
      -                .showcase-inner
      -                    pointer-events: all
      -
      -        .showcase-inner
      -            pointer-events: none
      -            position: absolute
      -            left: 10%
      -            right: 40%
      -            top: 220px
      -            bottom: 120px
      -            margin: 0
      -            padding: 0
      -
      -            @media (max-width: 567px)
      -                bottom: 90px
      -                top: 180px
      -
      -        .browser-demo-inner
      -            height: 100%
      -            width: 100%
      -
      -        .section-copy
      -            transition: opacity .5s ease-in-out, top .5s ease-in-out
      -            opacity: 0
      -            position: absolute
      -            top: 0
      -            position: absolute
      -            height: 200px
      -            color: #fff
      -            text-align: center
      -            width: 100%
      -
      -            &.active
      -                opacity: 1
      -                top: -150px
      -
      -                @media (max-width: 567px)
      -                    top: -130px
      -
      -            h2
      -                font-size: 40px
      -                font-weight: bold
      -                line-height: 1
      -                margin: 25px 0 15px
      -
      -                @media (max-width: 567px)
      -                    font-size: 30px
      -
      -        .browser-window
      -            border-radius: 4px
      -            background: #fff
      -            position: relative
      -            height: 100%
      -            width: 100%
      -            max-width: 1200px
      -            margin: 0 auto
      -
      -            .browser-titlebar
      -                position: absolute
      -                top: 0
      -                left: 0
      -                right: 0
      -                border-bottom: 1px solid #eee
      -                height: 55px
      -
      -                .browser-dots
      -                    padding: 16px
      -
      -                    b
      -                        +inline-block
      -                        border-radius: 50%
      -                        width: 10px
      -                        height: 10px
      -                        margin-right: 7px
      -                        background: rgba(0, 0, 0, .1)
      -
      -            .browser-frame
      -                position: absolute
      -                top: 55px
      -                left: 0
      -                right: 0
      -                bottom: 0
      -
      -                iframe
      -                    border-radius: 0 0 4px 4px
      -                    border: 0
      -                    width: 100%
      -                    height: 100%
      -
      -    &.browser-demo-section
      -
      -        .section-scroll-copy
      -            position: relative
      -            z-index: 10
      -            color: #fff
      -            width: 100%
      -            font-size: 22px
      -
      -            .section-scroll-copy-inner
      -                position: absolute
      -                z-index: 10
      -                color: #fff
      -                right: 10%
      -                width: 23%
      -
      -                a
      -                    color: inherit
      -
      -                .example-paragraph
      -                    border-radius: 4px
      -                    background: #000
      -                    padding: 1rem
      -
      -.browser-content
      -    display: none
      diff --git a/bower_components/tether/examples/chosen/chosen-sprite.png b/bower_components/tether/examples/chosen/chosen-sprite.png
      deleted file mode 100644
      index 3611ae4ace1c4b1cbeacd6145b5a79cbc72e0bdc..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 646
      zcmV;10(t$3P)<h;3K|Lk000e1NJLTq001-q001Qj1^@s64f4v>0006_Nkl<Zc-rmO
      zziSh57=ZCp!No$b5DZk@+)pBbK$lj?l1Z>&pbAC0n?)s%2x5M$#UgGxI1~gymp~v;
      zh<`zGaTJP5BybQY4tlRo;SIcmE0t>ueW3>*u6N;@_u;;|BoL8PuhZ#FWY9$(fl<H!
      zS#Lpo2qF_z)MG*4ThJ;FOw@*n86tEQq?R#;AlCf|Ap&<nY7?=Es!U!p7aS|a8z(wx
      zQ1OU6l%Ge?!i<A#OoVkrHp*V`8j|3B%AhR1;@S*@dM2iz=kgjO7}yIIu@5mu$fXQ=
      z2SIO!K^gQWF-C}8<fbnuLyUVVm)sqQ@!%vurBdmi*+Hh4-iMT*p+yWKMueq#2ibx4
      zu#_@r2a=#WgP;t$$WMh7FhDlN(`l}c?dhOC1d)j<>an1oVvxDBL8~}0Q5z;^2p>Ov
      z7}Q$E7=l>$BZLUt1*uKMCaQwKYf$lsJCyerWMd+%BeGH6f_f&Vpy%=$BN%uK%Ahxi
      zF+%Jj=Pc-WXF;djS<ruDw`Q|>iJw|m4>cN%^Fi|FBZ!E{_yJLS?RI<3U696XLkQSs
      z{{&kQJ$K(#5CgC1;GbA>mjm56zJZ^-Hg2_ASKI_K@CybPh7Rq}8ud``)NM~eZx}qT
      z)oK?Lf>t!B;%Uh}*P+)Ef?jbx#w|BNEVb(l{2LK}m#fw4xx>ddF;&j}!S{N-e!<&Q
      z?k<D~VgCi+AjX!fAYEQJ@s{B~>vzyI_AT@H-u4tUz1h&GCh8>?TnA~?BZ7WGP<9`r
      gQ6DuZO!_~60ju@{TzXF%TmS$707*qoM6N<$g2#CqL;wH)
      
      diff --git a/bower_components/tether/examples/chosen/chosen-sprite@2x.png b/bower_components/tether/examples/chosen/chosen-sprite@2x.png
      deleted file mode 100644
      index 6b50545202cb4770039362c55025b0b9824663ad..0000000000000000000000000000000000000000
      GIT binary patch
      literal 0
      HcmV?d00001
      
      literal 738
      zcmV<80v-K{P)<h;3K|Lk000e1NJLTq003wJ002q|1ONa4{c+hB00081Nkl<ZXx{Cb
      zzi-n(6vrdMPzi=0x`M*U=070=Wa!j|-4k;LW_03*zb64wr%EujBU}E2{0GU11c;~u
      zE0(Md=?{nJv+Lx}_E6XD<(=+(QifM0_NVXN_uh-s>oJoIWh{eAG@xkM<0ryd(K3(}
      zP8JV&;uuIJ4nL%g8!wSG9E$P+3QVMGgj><+00}M5I5kMzaT<~M;uJ`UhLf<yaSq6_
      zl5@-ytlBmNghK}_2H7Pru-5uuQCFE*v<8~0_fM@grx?}(4clEh+Q0gQXy4lSfJp^s
      z((baNzs@%nqHk%yqpH^pF>bp9Ahdsrux5(g+(>Q*+9wU{AuYPH0}W_u4`|q(9c->{
      zt>Jn|lbhH<_x5jU6prFi#S}&XMZ=~Y5VyC3+ZN%hXc<TfCyR%7)UtGpV<43{%}Cp-
      zjT<kKG#rZZ0t!r|YJ}PNU;revIOEhHamQ&y;)_!tB^pk`8pk;x$4bsIQ*g|-ojX|F
      zYkgd6PFs!-TaR?T0nf|J%gf8l%WIn@`q3D3`bIoeYZi^WePnjWqNf*EkKNK@t>iz8
      zPcLpJgbIK#a49e31-%wf2zh2F&&(Nq<F$PH;fZ`Je_@$Jvdfa_t71!WiUYAzLOzz?
      zaH_HtGuuniSe4pRe$nHv?#V-(XIYBItbpV!+d268=0PQQJ2+AMXwC~r?VtKA;9YJH
      z?0|6j{#o7MKE5Q+V+!=#DWJxZlMG9)Xm@^yhZR%U#fbu%akK6GQ2i?I8y<Je(zeyX
      znyQ2KSnQU0dnCWBgLQ=^yC#)dAJydG9Dn2|yomPj8GrNaD9bqF*qj!vsn(pXe`3QA
      zsTd#9jp2ccjWtp>;AL%4zA(=QJRGq`sx3y3#0_cg9Fim739XTOu1NKKjlWs`52Q+3
      Uja*K~(*OVf07*qoM6N<$g3mu-GXMYp
      
      diff --git a/bower_components/tether/examples/chosen/chosen.css b/bower_components/tether/examples/chosen/chosen.css
      deleted file mode 100644
      index 828fe1f1ae..0000000000
      --- a/bower_components/tether/examples/chosen/chosen.css
      +++ /dev/null
      @@ -1,430 +0,0 @@
      -/* @group Base */
      -.chosen-container {
      -  position: relative;
      -  display: inline-block;
      -  vertical-align: middle;
      -  font-size: 13px;
      -  zoom: 1;
      -  *display: inline;
      -  -webkit-user-select: none;
      -  -moz-user-select: none;
      -  user-select: none;
      -}
      -.chosen-container .chosen-drop {
      -  position: absolute;
      -  top: 100%;
      -  left: -9999px;
      -  z-index: 1010;
      -  -webkit-box-sizing: border-box;
      -  -moz-box-sizing: border-box;
      -  box-sizing: border-box;
      -  width: 100%;
      -  border: 1px solid #aaa;
      -  border-top: 0;
      -  background: #fff;
      -  box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15);
      -}
      -.chosen-container.chosen-with-drop .chosen-drop {
      -  left: 0;
      -}
      -.chosen-container a {
      -  cursor: pointer;
      -}
      -
      -/* @end */
      -/* @group Single Chosen */
      -.chosen-container-single .chosen-single {
      -  position: relative;
      -  display: block;
      -  overflow: hidden;
      -  padding: 0 0 0 8px;
      -  height: 23px;
      -  border: 1px solid #aaa;
      -  border-radius: 5px;
      -  background-color: #fff;
      -  background: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #ffffff), color-stop(50%, #f6f6f6), color-stop(52%, #eeeeee), color-stop(100%, #f4f4f4));
      -  background: -webkit-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
      -  background: -moz-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
      -  background: -o-linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
      -  background: linear-gradient(top, #ffffff 20%, #f6f6f6 50%, #eeeeee 52%, #f4f4f4 100%);
      -  background-clip: padding-box;
      -  box-shadow: 0 0 3px white inset, 0 1px 1px rgba(0, 0, 0, 0.1);
      -  color: #444;
      -  text-decoration: none;
      -  white-space: nowrap;
      -  line-height: 24px;
      -}
      -.chosen-container-single .chosen-default {
      -  color: #999;
      -}
      -.chosen-container-single .chosen-single span {
      -  display: block;
      -  overflow: hidden;
      -  margin-right: 26px;
      -  text-overflow: ellipsis;
      -  white-space: nowrap;
      -}
      -.chosen-container-single .chosen-single-with-deselect span {
      -  margin-right: 38px;
      -}
      -.chosen-container-single .chosen-single abbr {
      -  position: absolute;
      -  top: 6px;
      -  right: 26px;
      -  display: block;
      -  width: 12px;
      -  height: 12px;
      -  background: url('chosen-sprite.png') -42px 1px no-repeat;
      -  font-size: 1px;
      -}
      -.chosen-container-single .chosen-single abbr:hover {
      -  background-position: -42px -10px;
      -}
      -.chosen-container-single.chosen-disabled .chosen-single abbr:hover {
      -  background-position: -42px -10px;
      -}
      -.chosen-container-single .chosen-single div {
      -  position: absolute;
      -  top: 0;
      -  right: 0;
      -  display: block;
      -  width: 18px;
      -  height: 100%;
      -}
      -.chosen-container-single .chosen-single div b {
      -  display: block;
      -  width: 100%;
      -  height: 100%;
      -  background: url('chosen-sprite.png') no-repeat 0px 2px;
      -}
      -.chosen-container-single .chosen-search {
      -  position: relative;
      -  z-index: 1010;
      -  margin: 0;
      -  padding: 3px 4px;
      -  white-space: nowrap;
      -}
      -.chosen-container-single .chosen-search input[type="text"] {
      -  -webkit-box-sizing: border-box;
      -  -moz-box-sizing: border-box;
      -  box-sizing: border-box;
      -  margin: 1px 0;
      -  padding: 4px 20px 4px 5px;
      -  width: 100%;
      -  height: auto;
      -  outline: 0;
      -  border: 1px solid #aaa;
      -  background: white url('chosen-sprite.png') no-repeat 100% -20px;
      -  background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
      -  background: url('chosen-sprite.png') no-repeat 100% -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background: url('chosen-sprite.png') no-repeat 100% -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background: url('chosen-sprite.png') no-repeat 100% -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background: url('chosen-sprite.png') no-repeat 100% -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  font-size: 1em;
      -  font-family: sans-serif;
      -  line-height: normal;
      -  border-radius: 0;
      -}
      -.chosen-container-single .chosen-drop {
      -  margin-top: -1px;
      -  border-radius: 0 0 4px 4px;
      -  background-clip: padding-box;
      -}
      -.chosen-container-single.chosen-container-single-nosearch .chosen-search {
      -  position: absolute;
      -  left: -9999px;
      -}
      -
      -/* @end */
      -/* @group Results */
      -.chosen-container .chosen-results {
      -  position: relative;
      -  overflow-x: hidden;
      -  overflow-y: auto;
      -  margin: 0 4px 4px 0;
      -  padding: 0 0 0 4px;
      -  max-height: 240px;
      -  -webkit-overflow-scrolling: touch;
      -}
      -.chosen-container .chosen-results li {
      -  display: none;
      -  margin: 0;
      -  padding: 5px 6px;
      -  list-style: none;
      -  line-height: 15px;
      -}
      -.chosen-container .chosen-results li.active-result {
      -  display: list-item;
      -  cursor: pointer;
      -}
      -.chosen-container .chosen-results li.disabled-result {
      -  display: list-item;
      -  color: #ccc;
      -  cursor: default;
      -}
      -.chosen-container .chosen-results li.highlighted {
      -  background-color: #3875d7;
      -  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #3875d7), color-stop(90%, #2a62bc));
      -  background-image: -webkit-linear-gradient(#3875d7 20%, #2a62bc 90%);
      -  background-image: -moz-linear-gradient(#3875d7 20%, #2a62bc 90%);
      -  background-image: -o-linear-gradient(#3875d7 20%, #2a62bc 90%);
      -  background-image: linear-gradient(#3875d7 20%, #2a62bc 90%);
      -  color: #fff;
      -}
      -.chosen-container .chosen-results li.no-results {
      -  display: list-item;
      -  background: #f4f4f4;
      -}
      -.chosen-container .chosen-results li.group-result {
      -  display: list-item;
      -  font-weight: bold;
      -  cursor: default;
      -}
      -.chosen-container .chosen-results li.group-option {
      -  padding-left: 15px;
      -}
      -.chosen-container .chosen-results li em {
      -  font-style: normal;
      -  text-decoration: underline;
      -}
      -
      -/* @end */
      -/* @group Multi Chosen */
      -.chosen-container-multi .chosen-choices {
      -  position: relative;
      -  overflow: hidden;
      -  -webkit-box-sizing: border-box;
      -  -moz-box-sizing: border-box;
      -  box-sizing: border-box;
      -  margin: 0;
      -  padding: 0;
      -  width: 100%;
      -  height: auto !important;
      -  height: 1%;
      -  border: 1px solid #aaa;
      -  background-color: #fff;
      -  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
      -  background-image: -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background-image: -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background-image: -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background-image: linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  cursor: text;
      -}
      -.chosen-container-multi .chosen-choices li {
      -  float: left;
      -  list-style: none;
      -}
      -.chosen-container-multi .chosen-choices li.search-field {
      -  margin: 0;
      -  padding: 0;
      -  white-space: nowrap;
      -}
      -.chosen-container-multi .chosen-choices li.search-field input[type="text"] {
      -  margin: 1px 0;
      -  padding: 5px;
      -  height: 15px;
      -  outline: 0;
      -  border: 0 !important;
      -  background: transparent !important;
      -  box-shadow: none;
      -  color: #666;
      -  font-size: 100%;
      -  font-family: sans-serif;
      -  line-height: normal;
      -  border-radius: 0;
      -}
      -.chosen-container-multi .chosen-choices li.search-field .default {
      -  color: #999;
      -}
      -.chosen-container-multi .chosen-choices li.search-choice {
      -  position: relative;
      -  margin: 3px 0 3px 5px;
      -  padding: 3px 20px 3px 5px;
      -  border: 1px solid #aaa;
      -  border-radius: 3px;
      -  background-color: #e4e4e4;
      -  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
      -  background-image: -webkit-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  background-image: -moz-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  background-image: -o-linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  background-image: linear-gradient(#f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  background-clip: padding-box;
      -  box-shadow: 0 0 2px white inset, 0 1px 0 rgba(0, 0, 0, 0.05);
      -  color: #333;
      -  line-height: 13px;
      -  cursor: default;
      -}
      -.chosen-container-multi .chosen-choices li.search-choice .search-choice-close {
      -  position: absolute;
      -  top: 4px;
      -  right: 3px;
      -  display: block;
      -  width: 12px;
      -  height: 12px;
      -  background: url('chosen-sprite.png') -42px 1px no-repeat;
      -  font-size: 1px;
      -}
      -.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover {
      -  background-position: -42px -10px;
      -}
      -.chosen-container-multi .chosen-choices li.search-choice-disabled {
      -  padding-right: 5px;
      -  border: 1px solid #ccc;
      -  background-color: #e4e4e4;
      -  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eeeeee));
      -  background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  background-image: -o-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  background-image: linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eeeeee 100%);
      -  color: #666;
      -}
      -.chosen-container-multi .chosen-choices li.search-choice-focus {
      -  background: #d4d4d4;
      -}
      -.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close {
      -  background-position: -42px -10px;
      -}
      -.chosen-container-multi .chosen-results {
      -  margin: 0;
      -  padding: 0;
      -}
      -.chosen-container-multi .chosen-drop .result-selected {
      -  display: list-item;
      -  color: #ccc;
      -  cursor: default;
      -}
      -
      -/* @end */
      -/* @group Active  */
      -.chosen-container-active .chosen-single {
      -  border: 1px solid #5897fb;
      -  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
      -}
      -.chosen-container-active.chosen-with-drop .chosen-single {
      -  border: 1px solid #aaa;
      -  -moz-border-radius-bottomright: 0;
      -  border-bottom-right-radius: 0;
      -  -moz-border-radius-bottomleft: 0;
      -  border-bottom-left-radius: 0;
      -  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(20%, #eeeeee), color-stop(80%, #ffffff));
      -  background-image: -webkit-linear-gradient(#eeeeee 20%, #ffffff 80%);
      -  background-image: -moz-linear-gradient(#eeeeee 20%, #ffffff 80%);
      -  background-image: -o-linear-gradient(#eeeeee 20%, #ffffff 80%);
      -  background-image: linear-gradient(#eeeeee 20%, #ffffff 80%);
      -  box-shadow: 0 1px 0 #fff inset;
      -}
      -.chosen-container-active.chosen-with-drop .chosen-single div {
      -  border-left: none;
      -  background: transparent;
      -}
      -.chosen-container-active.chosen-with-drop .chosen-single div b {
      -  background-position: -18px 2px;
      -}
      -.chosen-container-active .chosen-choices {
      -  border: 1px solid #5897fb;
      -  box-shadow: 0 0 5px rgba(0, 0, 0, 0.3);
      -}
      -.chosen-container-active .chosen-choices li.search-field input[type="text"] {
      -  color: #111 !important;
      -}
      -
      -/* @end */
      -/* @group Disabled Support */
      -.chosen-disabled {
      -  opacity: 0.5 !important;
      -  cursor: default;
      -}
      -.chosen-disabled .chosen-single {
      -  cursor: default;
      -}
      -.chosen-disabled .chosen-choices .search-choice .search-choice-close {
      -  cursor: default;
      -}
      -
      -/* @end */
      -/* @group Right to Left */
      -.chosen-rtl {
      -  text-align: right;
      -}
      -.chosen-rtl .chosen-single {
      -  overflow: visible;
      -  padding: 0 8px 0 0;
      -}
      -.chosen-rtl .chosen-single span {
      -  margin-right: 0;
      -  margin-left: 26px;
      -  direction: rtl;
      -}
      -.chosen-rtl .chosen-single-with-deselect span {
      -  margin-left: 38px;
      -}
      -.chosen-rtl .chosen-single div {
      -  right: auto;
      -  left: 3px;
      -}
      -.chosen-rtl .chosen-single abbr {
      -  right: auto;
      -  left: 26px;
      -}
      -.chosen-rtl .chosen-choices li {
      -  float: right;
      -}
      -.chosen-rtl .chosen-choices li.search-field input[type="text"] {
      -  direction: rtl;
      -}
      -.chosen-rtl .chosen-choices li.search-choice {
      -  margin: 3px 5px 3px 0;
      -  padding: 3px 5px 3px 19px;
      -}
      -.chosen-rtl .chosen-choices li.search-choice .search-choice-close {
      -  right: auto;
      -  left: 4px;
      -}
      -.chosen-rtl.chosen-container-single-nosearch .chosen-search,
      -.chosen-rtl .chosen-drop {
      -  left: 9999px;
      -}
      -.chosen-rtl.chosen-container-single .chosen-results {
      -  margin: 0 0 4px 4px;
      -  padding: 0 4px 0 0;
      -}
      -.chosen-rtl .chosen-results li.group-option {
      -  padding-right: 15px;
      -  padding-left: 0;
      -}
      -.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div {
      -  border-right: none;
      -}
      -.chosen-rtl .chosen-search input[type="text"] {
      -  padding: 4px 5px 4px 20px;
      -  background: white url('chosen-sprite.png') no-repeat -30px -20px;
      -  background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(1%, #eeeeee), color-stop(15%, #ffffff));
      -  background: url('chosen-sprite.png') no-repeat -30px -20px, -webkit-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background: url('chosen-sprite.png') no-repeat -30px -20px, -moz-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background: url('chosen-sprite.png') no-repeat -30px -20px, -o-linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  background: url('chosen-sprite.png') no-repeat -30px -20px, linear-gradient(#eeeeee 1%, #ffffff 15%);
      -  direction: rtl;
      -}
      -.chosen-rtl.chosen-container-single .chosen-single div b {
      -  background-position: 6px 2px;
      -}
      -.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b {
      -  background-position: -12px 2px;
      -}
      -
      -/* @end */
      -/* @group Retina compatibility */
      -@media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 144dpi) {
      -  .chosen-rtl .chosen-search input[type="text"],
      -  .chosen-container-single .chosen-single abbr,
      -  .chosen-container-single .chosen-single div b,
      -  .chosen-container-single .chosen-search input[type="text"],
      -  .chosen-container-multi .chosen-choices .search-choice .search-choice-close,
      -  .chosen-container .chosen-results-scroll-down span,
      -  .chosen-container .chosen-results-scroll-up span {
      -    background-image: url('chosen-sprite@2x.png') !important;
      -    background-size: 52px 37px !important;
      -    background-repeat: no-repeat !important;
      -  }
      -}
      -/* @end */
      \ No newline at end of file
      diff --git a/bower_components/tether/examples/chosen/chosen.js b/bower_components/tether/examples/chosen/chosen.js
      deleted file mode 100644
      index 521556ba53..0000000000
      --- a/bower_components/tether/examples/chosen/chosen.js
      +++ /dev/null
      @@ -1,1166 +0,0 @@
      -// Chosen, a Select Box Enhancer for jQuery and Prototype
      -// by Patrick Filler for Harvest, http://getharvest.com
      -//
      -// Version 1.0.0
      -// Full source at https://github.com/harvesthq/chosen
      -// Copyright (c) 2011 Harvest http://getharvest.com
      -
      -// MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md
      -// This file is generated by `grunt build`, do not edit it by hand.
      -(function() {
      -  var $, AbstractChosen, Chosen, SelectParser, _ref,
      -    __hasProp = {}.hasOwnProperty,
      -    __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
      -
      -  SelectParser = (function() {
      -    function SelectParser() {
      -      this.options_index = 0;
      -      this.parsed = [];
      -    }
      -
      -    SelectParser.prototype.add_node = function(child) {
      -      if (child.nodeName.toUpperCase() === "OPTGROUP") {
      -        return this.add_group(child);
      -      } else {
      -        return this.add_option(child);
      -      }
      -    };
      -
      -    SelectParser.prototype.add_group = function(group) {
      -      var group_position, option, _i, _len, _ref, _results;
      -
      -      group_position = this.parsed.length;
      -      this.parsed.push({
      -        array_index: group_position,
      -        group: true,
      -        label: this.escapeExpression(group.label),
      -        children: 0,
      -        disabled: group.disabled
      -      });
      -      _ref = group.childNodes;
      -      _results = [];
      -      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      -        option = _ref[_i];
      -        _results.push(this.add_option(option, group_position, group.disabled));
      -      }
      -      return _results;
      -    };
      -
      -    SelectParser.prototype.add_option = function(option, group_position, group_disabled) {
      -      if (option.nodeName.toUpperCase() === "OPTION") {
      -        if (option.text !== "") {
      -          if (group_position != null) {
      -            this.parsed[group_position].children += 1;
      -          }
      -          this.parsed.push({
      -            array_index: this.parsed.length,
      -            options_index: this.options_index,
      -            value: option.value,
      -            text: option.text,
      -            html: option.innerHTML,
      -            selected: option.selected,
      -            disabled: group_disabled === true ? group_disabled : option.disabled,
      -            group_array_index: group_position,
      -            classes: option.className,
      -            style: option.style.cssText
      -          });
      -        } else {
      -          this.parsed.push({
      -            array_index: this.parsed.length,
      -            options_index: this.options_index,
      -            empty: true
      -          });
      -        }
      -        return this.options_index += 1;
      -      }
      -    };
      -
      -    SelectParser.prototype.escapeExpression = function(text) {
      -      var map, unsafe_chars;
      -
      -      if ((text == null) || text === false) {
      -        return "";
      -      }
      -      if (!/[\&\<\>\"\'\`]/.test(text)) {
      -        return text;
      -      }
      -      map = {
      -        "<": "&lt;",
      -        ">": "&gt;",
      -        '"': "&quot;",
      -        "'": "&#x27;",
      -        "`": "&#x60;"
      -      };
      -      unsafe_chars = /&(?!\w+;)|[\<\>\"\'\`]/g;
      -      return text.replace(unsafe_chars, function(chr) {
      -        return map[chr] || "&amp;";
      -      });
      -    };
      -
      -    return SelectParser;
      -
      -  })();
      -
      -  SelectParser.select_to_array = function(select) {
      -    var child, parser, _i, _len, _ref;
      -
      -    parser = new SelectParser();
      -    _ref = select.childNodes;
      -    for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      -      child = _ref[_i];
      -      parser.add_node(child);
      -    }
      -    return parser.parsed;
      -  };
      -
      -  AbstractChosen = (function() {
      -    function AbstractChosen(form_field, options) {
      -      this.form_field = form_field;
      -      this.options = options != null ? options : {};
      -      if (!AbstractChosen.browser_is_supported()) {
      -        return;
      -      }
      -      this.is_multiple = this.form_field.multiple;
      -      this.set_default_text();
      -      this.set_default_values();
      -      this.setup();
      -      this.set_up_html();
      -      this.register_observers();
      -    }
      -
      -    AbstractChosen.prototype.set_default_values = function() {
      -      var _this = this;
      -
      -      this.click_test_action = function(evt) {
      -        return _this.test_active_click(evt);
      -      };
      -      this.activate_action = function(evt) {
      -        return _this.activate_field(evt);
      -      };
      -      this.active_field = false;
      -      this.mouse_on_container = false;
      -      this.results_showing = false;
      -      this.result_highlighted = null;
      -      this.result_single_selected = null;
      -      this.allow_single_deselect = (this.options.allow_single_deselect != null) && (this.form_field.options[0] != null) && this.form_field.options[0].text === "" ? this.options.allow_single_deselect : false;
      -      this.disable_search_threshold = this.options.disable_search_threshold || 0;
      -      this.disable_search = this.options.disable_search || false;
      -      this.enable_split_word_search = this.options.enable_split_word_search != null ? this.options.enable_split_word_search : true;
      -      this.group_search = this.options.group_search != null ? this.options.group_search : true;
      -      this.search_contains = this.options.search_contains || false;
      -      this.single_backstroke_delete = this.options.single_backstroke_delete != null ? this.options.single_backstroke_delete : true;
      -      this.max_selected_options = this.options.max_selected_options || Infinity;
      -      this.inherit_select_classes = this.options.inherit_select_classes || false;
      -      this.display_selected_options = this.options.display_selected_options != null ? this.options.display_selected_options : true;
      -      return this.display_disabled_options = this.options.display_disabled_options != null ? this.options.display_disabled_options : true;
      -    };
      -
      -    AbstractChosen.prototype.set_default_text = function() {
      -      if (this.form_field.getAttribute("data-placeholder")) {
      -        this.default_text = this.form_field.getAttribute("data-placeholder");
      -      } else if (this.is_multiple) {
      -        this.default_text = this.options.placeholder_text_multiple || this.options.placeholder_text || AbstractChosen.default_multiple_text;
      -      } else {
      -        this.default_text = this.options.placeholder_text_single || this.options.placeholder_text || AbstractChosen.default_single_text;
      -      }
      -      return this.results_none_found = this.form_field.getAttribute("data-no_results_text") || this.options.no_results_text || AbstractChosen.default_no_result_text;
      -    };
      -
      -    AbstractChosen.prototype.mouse_enter = function() {
      -      return this.mouse_on_container = true;
      -    };
      -
      -    AbstractChosen.prototype.mouse_leave = function() {
      -      return this.mouse_on_container = false;
      -    };
      -
      -    AbstractChosen.prototype.input_focus = function(evt) {
      -      var _this = this;
      -
      -      if (this.is_multiple) {
      -        if (!this.active_field) {
      -          return setTimeout((function() {
      -            return _this.container_mousedown();
      -          }), 50);
      -        }
      -      } else {
      -        if (!this.active_field) {
      -          return this.activate_field();
      -        }
      -      }
      -    };
      -
      -    AbstractChosen.prototype.input_blur = function(evt) {
      -      var _this = this;
      -
      -      if (!this.mouse_on_container) {
      -        this.active_field = false;
      -        return setTimeout((function() {
      -          return _this.blur_test();
      -        }), 100);
      -      }
      -    };
      -
      -    AbstractChosen.prototype.results_option_build = function(options) {
      -      var content, data, _i, _len, _ref;
      -
      -      content = '';
      -      _ref = this.results_data;
      -      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      -        data = _ref[_i];
      -        if (data.group) {
      -          content += this.result_add_group(data);
      -        } else {
      -          content += this.result_add_option(data);
      -        }
      -        if (options != null ? options.first : void 0) {
      -          if (data.selected && this.is_multiple) {
      -            this.choice_build(data);
      -          } else if (data.selected && !this.is_multiple) {
      -            this.single_set_selected_text(data.text);
      -          }
      -        }
      -      }
      -      return content;
      -    };
      -
      -    AbstractChosen.prototype.result_add_option = function(option) {
      -      var classes, style;
      -
      -      if (!option.search_match) {
      -        return '';
      -      }
      -      if (!this.include_option_in_results(option)) {
      -        return '';
      -      }
      -      classes = [];
      -      if (!option.disabled && !(option.selected && this.is_multiple)) {
      -        classes.push("active-result");
      -      }
      -      if (option.disabled && !(option.selected && this.is_multiple)) {
      -        classes.push("disabled-result");
      -      }
      -      if (option.selected) {
      -        classes.push("result-selected");
      -      }
      -      if (option.group_array_index != null) {
      -        classes.push("group-option");
      -      }
      -      if (option.classes !== "") {
      -        classes.push(option.classes);
      -      }
      -      style = option.style.cssText !== "" ? " style=\"" + option.style + "\"" : "";
      -      return "<li class=\"" + (classes.join(' ')) + "\"" + style + " data-option-array-index=\"" + option.array_index + "\">" + option.search_text + "</li>";
      -    };
      -
      -    AbstractChosen.prototype.result_add_group = function(group) {
      -      if (!(group.search_match || group.group_match)) {
      -        return '';
      -      }
      -      if (!(group.active_options > 0)) {
      -        return '';
      -      }
      -      return "<li class=\"group-result\">" + group.search_text + "</li>";
      -    };
      -
      -    AbstractChosen.prototype.results_update_field = function() {
      -      this.set_default_text();
      -      if (!this.is_multiple) {
      -        this.results_reset_cleanup();
      -      }
      -      this.result_clear_highlight();
      -      this.result_single_selected = null;
      -      this.results_build();
      -      if (this.results_showing) {
      -        return this.winnow_results();
      -      }
      -    };
      -
      -    AbstractChosen.prototype.results_toggle = function() {
      -      if (this.results_showing) {
      -        return this.results_hide();
      -      } else {
      -        return this.results_show();
      -      }
      -    };
      -
      -    AbstractChosen.prototype.results_search = function(evt) {
      -      if (this.results_showing) {
      -        return this.winnow_results();
      -      } else {
      -        return this.results_show();
      -      }
      -    };
      -
      -    AbstractChosen.prototype.winnow_results = function() {
      -      var escapedSearchText, option, regex, regexAnchor, results, results_group, searchText, startpos, text, zregex, _i, _len, _ref;
      -
      -      this.no_results_clear();
      -      results = 0;
      -      searchText = this.get_search_text();
      -      escapedSearchText = searchText.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
      -      regexAnchor = this.search_contains ? "" : "^";
      -      regex = new RegExp(regexAnchor + escapedSearchText, 'i');
      -      zregex = new RegExp(escapedSearchText, 'i');
      -      _ref = this.results_data;
      -      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      -        option = _ref[_i];
      -        option.search_match = false;
      -        results_group = null;
      -        if (this.include_option_in_results(option)) {
      -          if (option.group) {
      -            option.group_match = false;
      -            option.active_options = 0;
      -          }
      -          if ((option.group_array_index != null) && this.results_data[option.group_array_index]) {
      -            results_group = this.results_data[option.group_array_index];
      -            if (results_group.active_options === 0 && results_group.search_match) {
      -              results += 1;
      -            }
      -            results_group.active_options += 1;
      -          }
      -          if (!(option.group && !this.group_search)) {
      -            option.search_text = option.group ? option.label : option.html;
      -            option.search_match = this.search_string_match(option.search_text, regex);
      -            if (option.search_match && !option.group) {
      -              results += 1;
      -            }
      -            if (option.search_match) {
      -              if (searchText.length) {
      -                startpos = option.search_text.search(zregex);
      -                text = option.search_text.substr(0, startpos + searchText.length) + '</em>' + option.search_text.substr(startpos + searchText.length);
      -                option.search_text = text.substr(0, startpos) + '<em>' + text.substr(startpos);
      -              }
      -              if (results_group != null) {
      -                results_group.group_match = true;
      -              }
      -            } else if ((option.group_array_index != null) && this.results_data[option.group_array_index].search_match) {
      -              option.search_match = true;
      -            }
      -          }
      -        }
      -      }
      -      this.result_clear_highlight();
      -      if (results < 1 && searchText.length) {
      -        this.update_results_content("");
      -        return this.no_results(searchText);
      -      } else {
      -        this.update_results_content(this.results_option_build());
      -        return this.winnow_results_set_highlight();
      -      }
      -    };
      -
      -    AbstractChosen.prototype.search_string_match = function(search_string, regex) {
      -      var part, parts, _i, _len;
      -
      -      if (regex.test(search_string)) {
      -        return true;
      -      } else if (this.enable_split_word_search && (search_string.indexOf(" ") >= 0 || search_string.indexOf("[") === 0)) {
      -        parts = search_string.replace(/\[|\]/g, "").split(" ");
      -        if (parts.length) {
      -          for (_i = 0, _len = parts.length; _i < _len; _i++) {
      -            part = parts[_i];
      -            if (regex.test(part)) {
      -              return true;
      -            }
      -          }
      -        }
      -      }
      -    };
      -
      -    AbstractChosen.prototype.choices_count = function() {
      -      var option, _i, _len, _ref;
      -
      -      if (this.selected_option_count != null) {
      -        return this.selected_option_count;
      -      }
      -      this.selected_option_count = 0;
      -      _ref = this.form_field.options;
      -      for (_i = 0, _len = _ref.length; _i < _len; _i++) {
      -        option = _ref[_i];
      -        if (option.selected) {
      -          this.selected_option_count += 1;
      -        }
      -      }
      -      return this.selected_option_count;
      -    };
      -
      -    AbstractChosen.prototype.choices_click = function(evt) {
      -      evt.preventDefault();
      -      if (!(this.results_showing || this.is_disabled)) {
      -        return this.results_show();
      -      }
      -    };
      -
      -    AbstractChosen.prototype.keyup_checker = function(evt) {
      -      var stroke, _ref;
      -
      -      stroke = (_ref = evt.which) != null ? _ref : evt.keyCode;
      -      this.search_field_scale();
      -      switch (stroke) {
      -        case 8:
      -          if (this.is_multiple && this.backstroke_length < 1 && this.choices_count() > 0) {
      -            return this.keydown_backstroke();
      -          } else if (!this.pending_backstroke) {
      -            this.result_clear_highlight();
      -            return this.results_search();
      -          }
      -          break;
      -        case 13:
      -          evt.preventDefault();
      -          if (this.results_showing) {
      -            return this.result_select(evt);
      -          }
      -          break;
      -        case 27:
      -          if (this.results_showing) {
      -            this.results_hide();
      -          }
      -          return true;
      -        case 9:
      -        case 38:
      -        case 40:
      -        case 16:
      -        case 91:
      -        case 17:
      -          break;
      -        default:
      -          return this.results_search();
      -      }
      -    };
      -
      -    AbstractChosen.prototype.container_width = function() {
      -      if (this.options.width != null) {
      -        return this.options.width;
      -      } else {
      -        return "" + this.form_field.offsetWidth + "px";
      -      }
      -    };
      -
      -    AbstractChosen.prototype.include_option_in_results = function(option) {
      -      if (this.is_multiple && (!this.display_selected_options && option.selected)) {
      -        return false;
      -      }
      -      if (!this.display_disabled_options && option.disabled) {
      -        return false;
      -      }
      -      if (option.empty) {
      -        return false;
      -      }
      -      return true;
      -    };
      -
      -    AbstractChosen.browser_is_supported = function() {
      -      if (window.navigator.appName === "Microsoft Internet Explorer") {
      -        return document.documentMode >= 8;
      -      }
      -      if (/iP(od|hone)/i.test(window.navigator.userAgent)) {
      -        return false;
      -      }
      -      if (/Android/i.test(window.navigator.userAgent)) {
      -        if (/Mobile/i.test(window.navigator.userAgent)) {
      -          return false;
      -        }
      -      }
      -      return true;
      -    };
      -
      -    AbstractChosen.default_multiple_text = "Select Some Options";
      -
      -    AbstractChosen.default_single_text = "Select an Option";
      -
      -    AbstractChosen.default_no_result_text = "No results match";
      -
      -    return AbstractChosen;
      -
      -  })();
      -
      -  $ = jQuery;
      -
      -  $.fn.extend({
      -    chosen: function(options) {
      -      if (!AbstractChosen.browser_is_supported()) {
      -        return this;
      -      }
      -      return this.each(function(input_field) {
      -        var $this, chosen;
      -
      -        $this = $(this);
      -        chosen = $this.data('chosen');
      -        if (options === 'destroy' && chosen) {
      -          chosen.destroy();
      -        } else if (!chosen) {
      -          $this.data('chosen', new Chosen(this, options));
      -        }
      -      });
      -    }
      -  });
      -
      -  Chosen = (function(_super) {
      -    __extends(Chosen, _super);
      -
      -    function Chosen() {
      -      _ref = Chosen.__super__.constructor.apply(this, arguments);
      -      return _ref;
      -    }
      -
      -    Chosen.prototype.setup = function() {
      -      this.form_field_jq = $(this.form_field);
      -      this.current_selectedIndex = this.form_field.selectedIndex;
      -      return this.is_rtl = this.form_field_jq.hasClass("chosen-rtl");
      -    };
      -
      -    Chosen.prototype.set_up_html = function() {
      -      var container_classes, container_props;
      -
      -      container_classes = ["chosen-container"];
      -      container_classes.push("chosen-container-" + (this.is_multiple ? "multi" : "single"));
      -      if (this.inherit_select_classes && this.form_field.className) {
      -        container_classes.push(this.form_field.className);
      -      }
      -      if (this.is_rtl) {
      -        container_classes.push("chosen-rtl");
      -      }
      -      container_props = {
      -        'class': container_classes.join(' '),
      -        'style': "width: " + (this.container_width()) + ";",
      -        'title': this.form_field.title
      -      };
      -      if (this.form_field.id.length) {
      -        container_props.id = this.form_field.id.replace(/[^\w]/g, '_') + "_chosen";
      -      }
      -      this.container = $("<div />", container_props);
      -      if (this.is_multiple) {
      -        this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="' + this.default_text + '" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>');
      -      } else {
      -        this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>' + this.default_text + '</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>');
      -      }
      -      this.form_field_jq.hide().after(this.container);
      -      this.dropdown = this.container.find('div.chosen-drop').first();
      -      this.search_field = this.container.find('input').first();
      -      this.search_results = this.container.find('ul.chosen-results').first();
      -      this.search_field_scale();
      -      this.search_no_results = this.container.find('li.no-results').first();
      -      if (this.is_multiple) {
      -        this.search_choices = this.container.find('ul.chosen-choices').first();
      -        this.search_container = this.container.find('li.search-field').first();
      -      } else {
      -        this.search_container = this.container.find('div.chosen-search').first();
      -        this.selected_item = this.container.find('.chosen-single').first();
      -      }
      -      this.results_build();
      -      this.set_tab_index();
      -      this.set_label_behavior();
      -      return this.form_field_jq.trigger("chosen:ready", {
      -        chosen: this
      -      });
      -    };
      -
      -    Chosen.prototype.register_observers = function() {
      -      var _this = this;
      -
      -      this.container.bind('mousedown.chosen', function(evt) {
      -        _this.container_mousedown(evt);
      -      });
      -      this.container.bind('mouseup.chosen', function(evt) {
      -        _this.container_mouseup(evt);
      -      });
      -      this.container.bind('mouseenter.chosen', function(evt) {
      -        _this.mouse_enter(evt);
      -      });
      -      this.container.bind('mouseleave.chosen', function(evt) {
      -        _this.mouse_leave(evt);
      -      });
      -      this.search_results.bind('mouseup.chosen', function(evt) {
      -        _this.search_results_mouseup(evt);
      -      });
      -      this.search_results.bind('mouseover.chosen', function(evt) {
      -        _this.search_results_mouseover(evt);
      -      });
      -      this.search_results.bind('mouseout.chosen', function(evt) {
      -        _this.search_results_mouseout(evt);
      -      });
      -      this.search_results.bind('mousewheel.chosen DOMMouseScroll.chosen', function(evt) {
      -        _this.search_results_mousewheel(evt);
      -      });
      -      this.form_field_jq.bind("chosen:updated.chosen", function(evt) {
      -        _this.results_update_field(evt);
      -      });
      -      this.form_field_jq.bind("chosen:activate.chosen", function(evt) {
      -        _this.activate_field(evt);
      -      });
      -      this.form_field_jq.bind("chosen:open.chosen", function(evt) {
      -        _this.container_mousedown(evt);
      -      });
      -      this.search_field.bind('blur.chosen', function(evt) {
      -        _this.input_blur(evt);
      -      });
      -      this.search_field.bind('keyup.chosen', function(evt) {
      -        _this.keyup_checker(evt);
      -      });
      -      this.search_field.bind('keydown.chosen', function(evt) {
      -        _this.keydown_checker(evt);
      -      });
      -      this.search_field.bind('focus.chosen', function(evt) {
      -        _this.input_focus(evt);
      -      });
      -      if (this.is_multiple) {
      -        return this.search_choices.bind('click.chosen', function(evt) {
      -          _this.choices_click(evt);
      -        });
      -      } else {
      -        return this.container.bind('click.chosen', function(evt) {
      -          evt.preventDefault();
      -        });
      -      }
      -    };
      -
      -    Chosen.prototype.destroy = function() {
      -      $(document).unbind("click.chosen", this.click_test_action);
      -      if (this.search_field[0].tabIndex) {
      -        this.form_field_jq[0].tabIndex = this.search_field[0].tabIndex;
      -      }
      -      this.container.remove();
      -      this.form_field_jq.removeData('chosen');
      -      return this.form_field_jq.show();
      -    };
      -
      -    Chosen.prototype.search_field_disabled = function() {
      -      this.is_disabled = this.form_field_jq[0].disabled;
      -      if (this.is_disabled) {
      -        this.container.addClass('chosen-disabled');
      -        this.search_field[0].disabled = true;
      -        if (!this.is_multiple) {
      -          this.selected_item.unbind("focus.chosen", this.activate_action);
      -        }
      -        return this.close_field();
      -      } else {
      -        this.container.removeClass('chosen-disabled');
      -        this.search_field[0].disabled = false;
      -        if (!this.is_multiple) {
      -          return this.selected_item.bind("focus.chosen", this.activate_action);
      -        }
      -      }
      -    };
      -
      -    Chosen.prototype.container_mousedown = function(evt) {
      -      if (!this.is_disabled) {
      -        if (evt && evt.type === "mousedown" && !this.results_showing) {
      -          evt.preventDefault();
      -        }
      -        if (!((evt != null) && ($(evt.target)).hasClass("search-choice-close"))) {
      -          if (!this.active_field) {
      -            if (this.is_multiple) {
      -              this.search_field.val("");
      -            }
      -            $(document).bind('click.chosen', this.click_test_action);
      -            this.results_show();
      -          } else if (!this.is_multiple && evt && (($(evt.target)[0] === this.selected_item[0]) || $(evt.target).parents("a.chosen-single").length)) {
      -            evt.preventDefault();
      -            this.results_toggle();
      -          }
      -          return this.activate_field();
      -        }
      -      }
      -    };
      -
      -    Chosen.prototype.container_mouseup = function(evt) {
      -      if (evt.target.nodeName === "ABBR" && !this.is_disabled) {
      -        return this.results_reset(evt);
      -      }
      -    };
      -
      -    Chosen.prototype.search_results_mousewheel = function(evt) {
      -      var delta, _ref1, _ref2;
      -
      -      delta = -((_ref1 = evt.originalEvent) != null ? _ref1.wheelDelta : void 0) || ((_ref2 = evt.originialEvent) != null ? _ref2.detail : void 0);
      -      if (delta != null) {
      -        evt.preventDefault();
      -        if (evt.type === 'DOMMouseScroll') {
      -          delta = delta * 40;
      -        }
      -        return this.search_results.scrollTop(delta + this.search_results.scrollTop());
      -      }
      -    };
      -
      -    Chosen.prototype.blur_test = function(evt) {
      -      if (!this.active_field && this.container.hasClass("chosen-container-active")) {
      -        return this.close_field();
      -      }
      -    };
      -
      -    Chosen.prototype.close_field = function() {
      -      $(document).unbind("click.chosen", this.click_test_action);
      -      this.active_field = false;
      -      this.results_hide();
      -      this.container.removeClass("chosen-container-active");
      -      this.clear_backstroke();
      -      this.show_search_field_default();
      -      return this.search_field_scale();
      -    };
      -
      -    Chosen.prototype.activate_field = function() {
      -      this.container.addClass("chosen-container-active");
      -      this.active_field = true;
      -      this.search_field.val(this.search_field.val());
      -      return this.search_field.focus();
      -    };
      -
      -    Chosen.prototype.test_active_click = function(evt) {
      -      if (this.container.is($(evt.target).closest('.chosen-container'))) {
      -        return this.active_field = true;
      -      } else {
      -        return this.close_field();
      -      }
      -    };
      -
      -    Chosen.prototype.results_build = function() {
      -      this.parsing = true;
      -      this.selected_option_count = null;
      -      this.results_data = SelectParser.select_to_array(this.form_field);
      -      if (this.is_multiple) {
      -        this.search_choices.find("li.search-choice").remove();
      -      } else if (!this.is_multiple) {
      -        this.single_set_selected_text();
      -        if (this.disable_search || this.form_field.options.length <= this.disable_search_threshold) {
      -          this.search_field[0].readOnly = true;
      -          this.container.addClass("chosen-container-single-nosearch");
      -        } else {
      -          this.search_field[0].readOnly = false;
      -          this.container.removeClass("chosen-container-single-nosearch");
      -        }
      -      }
      -      this.update_results_content(this.results_option_build({
      -        first: true
      -      }));
      -      this.search_field_disabled();
      -      this.show_search_field_default();
      -      this.search_field_scale();
      -      return this.parsing = false;
      -    };
      -
      -    Chosen.prototype.result_do_highlight = function(el) {
      -      var high_bottom, high_top, maxHeight, visible_bottom, visible_top;
      -
      -      if (el.length) {
      -        this.result_clear_highlight();
      -        this.result_highlight = el;
      -        this.result_highlight.addClass("highlighted");
      -        maxHeight = parseInt(this.search_results.css("maxHeight"), 10);
      -        visible_top = this.search_results.scrollTop();
      -        visible_bottom = maxHeight + visible_top;
      -        high_top = this.result_highlight.position().top + this.search_results.scrollTop();
      -        high_bottom = high_top + this.result_highlight.outerHeight();
      -        if (high_bottom >= visible_bottom) {
      -          return this.search_results.scrollTop((high_bottom - maxHeight) > 0 ? high_bottom - maxHeight : 0);
      -        } else if (high_top < visible_top) {
      -          return this.search_results.scrollTop(high_top);
      -        }
      -      }
      -    };
      -
      -    Chosen.prototype.result_clear_highlight = function() {
      -      if (this.result_highlight) {
      -        this.result_highlight.removeClass("highlighted");
      -      }
      -      return this.result_highlight = null;
      -    };
      -
      -    Chosen.prototype.results_show = function() {
      -      if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
      -        this.form_field_jq.trigger("chosen:maxselected", {
      -          chosen: this
      -        });
      -        return false;
      -      }
      -      this.container.addClass("chosen-with-drop");
      -      this.form_field_jq.trigger("chosen:showing_dropdown", {
      -        chosen: this
      -      });
      -      this.results_showing = true;
      -      this.search_field.focus();
      -      this.search_field.val(this.search_field.val());
      -      return this.winnow_results();
      -    };
      -
      -    Chosen.prototype.update_results_content = function(content) {
      -      return this.search_results.html(content);
      -    };
      -
      -    Chosen.prototype.results_hide = function() {
      -      if (this.results_showing) {
      -        this.result_clear_highlight();
      -        this.container.removeClass("chosen-with-drop");
      -        this.form_field_jq.trigger("chosen:hiding_dropdown", {
      -          chosen: this
      -        });
      -      }
      -      return this.results_showing = false;
      -    };
      -
      -    Chosen.prototype.set_tab_index = function(el) {
      -      var ti;
      -
      -      if (this.form_field.tabIndex) {
      -        ti = this.form_field.tabIndex;
      -        this.form_field.tabIndex = -1;
      -        return this.search_field[0].tabIndex = ti;
      -      }
      -    };
      -
      -    Chosen.prototype.set_label_behavior = function() {
      -      var _this = this;
      -
      -      this.form_field_label = this.form_field_jq.parents("label");
      -      if (!this.form_field_label.length && this.form_field.id.length) {
      -        this.form_field_label = $("label[for='" + this.form_field.id + "']");
      -      }
      -      if (this.form_field_label.length > 0) {
      -        return this.form_field_label.bind('click.chosen', function(evt) {
      -          if (_this.is_multiple) {
      -            return _this.container_mousedown(evt);
      -          } else {
      -            return _this.activate_field();
      -          }
      -        });
      -      }
      -    };
      -
      -    Chosen.prototype.show_search_field_default = function() {
      -      if (this.is_multiple && this.choices_count() < 1 && !this.active_field) {
      -        this.search_field.val(this.default_text);
      -        return this.search_field.addClass("default");
      -      } else {
      -        this.search_field.val("");
      -        return this.search_field.removeClass("default");
      -      }
      -    };
      -
      -    Chosen.prototype.search_results_mouseup = function(evt) {
      -      var target;
      -
      -      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
      -      if (target.length) {
      -        this.result_highlight = target;
      -        this.result_select(evt);
      -        return this.search_field.focus();
      -      }
      -    };
      -
      -    Chosen.prototype.search_results_mouseover = function(evt) {
      -      var target;
      -
      -      target = $(evt.target).hasClass("active-result") ? $(evt.target) : $(evt.target).parents(".active-result").first();
      -      if (target) {
      -        return this.result_do_highlight(target);
      -      }
      -    };
      -
      -    Chosen.prototype.search_results_mouseout = function(evt) {
      -      if ($(evt.target).hasClass("active-result" || $(evt.target).parents('.active-result').first())) {
      -        return this.result_clear_highlight();
      -      }
      -    };
      -
      -    Chosen.prototype.choice_build = function(item) {
      -      var choice, close_link,
      -        _this = this;
      -
      -      choice = $('<li />', {
      -        "class": "search-choice"
      -      }).html("<span>" + item.html + "</span>");
      -      if (item.disabled) {
      -        choice.addClass('search-choice-disabled');
      -      } else {
      -        close_link = $('<a />', {
      -          "class": 'search-choice-close',
      -          'data-option-array-index': item.array_index
      -        });
      -        close_link.bind('click.chosen', function(evt) {
      -          return _this.choice_destroy_link_click(evt);
      -        });
      -        choice.append(close_link);
      -      }
      -      return this.search_container.before(choice);
      -    };
      -
      -    Chosen.prototype.choice_destroy_link_click = function(evt) {
      -      evt.preventDefault();
      -      evt.stopPropagation();
      -      if (!this.is_disabled) {
      -        return this.choice_destroy($(evt.target));
      -      }
      -    };
      -
      -    Chosen.prototype.choice_destroy = function(link) {
      -      if (this.result_deselect(link[0].getAttribute("data-option-array-index"))) {
      -        this.show_search_field_default();
      -        if (this.is_multiple && this.choices_count() > 0 && this.search_field.val().length < 1) {
      -          this.results_hide();
      -        }
      -        link.parents('li').first().remove();
      -        return this.search_field_scale();
      -      }
      -    };
      -
      -    Chosen.prototype.results_reset = function() {
      -      this.form_field.options[0].selected = true;
      -      this.selected_option_count = null;
      -      this.single_set_selected_text();
      -      this.show_search_field_default();
      -      this.results_reset_cleanup();
      -      this.form_field_jq.trigger("change");
      -      if (this.active_field) {
      -        return this.results_hide();
      -      }
      -    };
      -
      -    Chosen.prototype.results_reset_cleanup = function() {
      -      this.current_selectedIndex = this.form_field.selectedIndex;
      -      return this.selected_item.find("abbr").remove();
      -    };
      -
      -    Chosen.prototype.result_select = function(evt) {
      -      var high, item, selected_index;
      -
      -      if (this.result_highlight) {
      -        high = this.result_highlight;
      -        this.result_clear_highlight();
      -        if (this.is_multiple && this.max_selected_options <= this.choices_count()) {
      -          this.form_field_jq.trigger("chosen:maxselected", {
      -            chosen: this
      -          });
      -          return false;
      -        }
      -        if (this.is_multiple) {
      -          high.removeClass("active-result");
      -        } else {
      -          if (this.result_single_selected) {
      -            this.result_single_selected.removeClass("result-selected");
      -            selected_index = this.result_single_selected[0].getAttribute('data-option-array-index');
      -            this.results_data[selected_index].selected = false;
      -          }
      -          this.result_single_selected = high;
      -        }
      -        high.addClass("result-selected");
      -        item = this.results_data[high[0].getAttribute("data-option-array-index")];
      -        item.selected = true;
      -        this.form_field.options[item.options_index].selected = true;
      -        this.selected_option_count = null;
      -        if (this.is_multiple) {
      -          this.choice_build(item);
      -        } else {
      -          this.single_set_selected_text(item.text);
      -        }
      -        if (!((evt.metaKey || evt.ctrlKey) && this.is_multiple)) {
      -          this.results_hide();
      -        }
      -        this.search_field.val("");
      -        if (this.is_multiple || this.form_field.selectedIndex !== this.current_selectedIndex) {
      -          this.form_field_jq.trigger("change", {
      -            'selected': this.form_field.options[item.options_index].value
      -          });
      -        }
      -        this.current_selectedIndex = this.form_field.selectedIndex;
      -        return this.search_field_scale();
      -      }
      -    };
      -
      -    Chosen.prototype.single_set_selected_text = function(text) {
      -      if (text == null) {
      -        text = this.default_text;
      -      }
      -      if (text === this.default_text) {
      -        this.selected_item.addClass("chosen-default");
      -      } else {
      -        this.single_deselect_control_build();
      -        this.selected_item.removeClass("chosen-default");
      -      }
      -      return this.selected_item.find("span").text(text);
      -    };
      -
      -    Chosen.prototype.result_deselect = function(pos) {
      -      var result_data;
      -
      -      result_data = this.results_data[pos];
      -      if (!this.form_field.options[result_data.options_index].disabled) {
      -        result_data.selected = false;
      -        this.form_field.options[result_data.options_index].selected = false;
      -        this.selected_option_count = null;
      -        this.result_clear_highlight();
      -        if (this.results_showing) {
      -          this.winnow_results();
      -        }
      -        this.form_field_jq.trigger("change", {
      -          deselected: this.form_field.options[result_data.options_index].value
      -        });
      -        this.search_field_scale();
      -        return true;
      -      } else {
      -        return false;
      -      }
      -    };
      -
      -    Chosen.prototype.single_deselect_control_build = function() {
      -      if (!this.allow_single_deselect) {
      -        return;
      -      }
      -      if (!this.selected_item.find("abbr").length) {
      -        this.selected_item.find("span").first().after("<abbr class=\"search-choice-close\"></abbr>");
      -      }
      -      return this.selected_item.addClass("chosen-single-with-deselect");
      -    };
      -
      -    Chosen.prototype.get_search_text = function() {
      -      if (this.search_field.val() === this.default_text) {
      -        return "";
      -      } else {
      -        return $('<div/>').text($.trim(this.search_field.val())).html();
      -      }
      -    };
      -
      -    Chosen.prototype.winnow_results_set_highlight = function() {
      -      var do_high, selected_results;
      -
      -      selected_results = !this.is_multiple ? this.search_results.find(".result-selected.active-result") : [];
      -      do_high = selected_results.length ? selected_results.first() : this.search_results.find(".active-result").first();
      -      if (do_high != null) {
      -        return this.result_do_highlight(do_high);
      -      }
      -    };
      -
      -    Chosen.prototype.no_results = function(terms) {
      -      var no_results_html;
      -
      -      no_results_html = $('<li class="no-results">' + this.results_none_found + ' "<span></span>"</li>');
      -      no_results_html.find("span").first().html(terms);
      -      return this.search_results.append(no_results_html);
      -    };
      -
      -    Chosen.prototype.no_results_clear = function() {
      -      return this.search_results.find(".no-results").remove();
      -    };
      -
      -    Chosen.prototype.keydown_arrow = function() {
      -      var next_sib;
      -
      -      if (this.results_showing && this.result_highlight) {
      -        next_sib = this.result_highlight.nextAll("li.active-result").first();
      -        if (next_sib) {
      -          return this.result_do_highlight(next_sib);
      -        }
      -      } else {
      -        return this.results_show();
      -      }
      -    };
      -
      -    Chosen.prototype.keyup_arrow = function() {
      -      var prev_sibs;
      -
      -      if (!this.results_showing && !this.is_multiple) {
      -        return this.results_show();
      -      } else if (this.result_highlight) {
      -        prev_sibs = this.result_highlight.prevAll("li.active-result");
      -        if (prev_sibs.length) {
      -          return this.result_do_highlight(prev_sibs.first());
      -        } else {
      -          if (this.choices_count() > 0) {
      -            this.results_hide();
      -          }
      -          return this.result_clear_highlight();
      -        }
      -      }
      -    };
      -
      -    Chosen.prototype.keydown_backstroke = function() {
      -      var next_available_destroy;
      -
      -      if (this.pending_backstroke) {
      -        this.choice_destroy(this.pending_backstroke.find("a").first());
      -        return this.clear_backstroke();
      -      } else {
      -        next_available_destroy = this.search_container.siblings("li.search-choice").last();
      -        if (next_available_destroy.length && !next_available_destroy.hasClass("search-choice-disabled")) {
      -          this.pending_backstroke = next_available_destroy;
      -          if (this.single_backstroke_delete) {
      -            return this.keydown_backstroke();
      -          } else {
      -            return this.pending_backstroke.addClass("search-choice-focus");
      -          }
      -        }
      -      }
      -    };
      -
      -    Chosen.prototype.clear_backstroke = function() {
      -      if (this.pending_backstroke) {
      -        this.pending_backstroke.removeClass("search-choice-focus");
      -      }
      -      return this.pending_backstroke = null;
      -    };
      -
      -    Chosen.prototype.keydown_checker = function(evt) {
      -      var stroke, _ref1;
      -
      -      stroke = (_ref1 = evt.which) != null ? _ref1 : evt.keyCode;
      -      this.search_field_scale();
      -      if (stroke !== 8 && this.pending_backstroke) {
      -        this.clear_backstroke();
      -      }
      -      switch (stroke) {
      -        case 8:
      -          this.backstroke_length = this.search_field.val().length;
      -          break;
      -        case 9:
      -          if (this.results_showing && !this.is_multiple) {
      -            this.result_select(evt);
      -          }
      -          this.mouse_on_container = false;
      -          break;
      -        case 13:
      -          evt.preventDefault();
      -          break;
      -        case 38:
      -          evt.preventDefault();
      -          this.keyup_arrow();
      -          break;
      -        case 40:
      -          evt.preventDefault();
      -          this.keydown_arrow();
      -          break;
      -      }
      -    };
      -
      -    Chosen.prototype.search_field_scale = function() {
      -      var div, f_width, h, style, style_block, styles, w, _i, _len;
      -
      -      if (this.is_multiple) {
      -        h = 0;
      -        w = 0;
      -        style_block = "position:absolute; left: -1000px; top: -1000px; display:none;";
      -        styles = ['font-size', 'font-style', 'font-weight', 'font-family', 'line-height', 'text-transform', 'letter-spacing'];
      -        for (_i = 0, _len = styles.length; _i < _len; _i++) {
      -          style = styles[_i];
      -          style_block += style + ":" + this.search_field.css(style) + ";";
      -        }
      -        div = $('<div />', {
      -          'style': style_block
      -        });
      -        div.text(this.search_field.val());
      -        $('body').append(div);
      -        w = div.width() + 25;
      -        div.remove();
      -        f_width = this.container.outerWidth();
      -        if (w > f_width - 10) {
      -          w = f_width - 10;
      -        }
      -        return this.search_field.css({
      -          'width': w + 'px'
      -        });
      -      }
      -    };
      -
      -    return Chosen;
      -
      -  })(AbstractChosen);
      -
      -}).call(this);
      \ No newline at end of file
      diff --git a/bower_components/tether/examples/chosen/index.html b/bower_components/tether/examples/chosen/index.html
      deleted file mode 100644
      index cf5b49011d..0000000000
      --- a/bower_components/tether/examples/chosen/index.html
      +++ /dev/null
      @@ -1,110 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <link rel="stylesheet" href="../../css/drop.css" />
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="chosen.css" />
      -    </head>
      -    <body>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        <br/>
      -        Favorite pizza style: <br/>
      -        <div class="drop-chosen-target chosen-container chosen-container-single chosen-with-drop" style="width: 350px">
      -            <a class="chosen-single chosen-default" tabindex="-1"><span>Choose a style...</span><div><b></b></div></a>
      -        </div>
      -        <br/>
      -        <br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        text<br/>
      -        <script src="../resources/js/log.js"></script>
      -        <script src="../resources/js/jquery.js"></script>
      -        <script src="chosen.js"></script>
      -        <script src="../../drop.js"></script>
      -        <script>
      -            $(function(){
      -                var $target, $drop;
      -
      -                $target = $('.drop-chosen-target').drop({
      -                    className: 'drop-chosen',
      -                    attach: 'bottom-left',
      -                    content: ''
      -                });
      -
      -                $drop = $target.data().drop.$drop;
      -
      -                $drop.append('<select><option>Plain</option><option>Pepperoni</option><option>Supreme</option></select>');
      -
      -                $drop.on('openDrop', function(event){
      -                    $target.addClass('chosen-container-active');
      -                }).on('closeDrop', function(event){
      -                    $target.removeClass('chosen-container-active');
      -                });
      -
      -                $drop.on('openDrop', function(event) {
      -                    var $select = $drop.find('select');
      -
      -                    if (!$drop.find('.chosen-container').length) {
      -                        $select
      -                            .css('width', $target.outerWidth())
      -                            .chosen({
      -                                allow_single_deselect: true,
      -                                disable_search_threshold: 0
      -                            })
      -                        ;
      -                    }
      -
      -                    setTimeout(function(){
      -                        $drop.find('.chosen-search input').click().focus().keyup();
      -                        $target.drop('positionDrop');
      -                    }, 0);
      -                });
      -            });
      -        </script>
      -        <style>
      -            .drop-chosen-target > a {
      -                outline: none;
      -            }
      -
      -            .drop.drop-chosen {
      -                background: transparent;
      -            }
      -
      -            .drop.drop-chosen .chosen-container > .chosen-single {
      -                display: none;
      -            }
      -
      -            .drop.drop-chosen .chosen-container .chosen-drop {
      -                position: static;
      -            }
      -        </style>
      -    </body>
      -</html>
      \ No newline at end of file
      diff --git a/bower_components/tether/examples/common/css/style.css b/bower_components/tether/examples/common/css/style.css
      deleted file mode 100644
      index 2d82380779..0000000000
      --- a/bower_components/tether/examples/common/css/style.css
      +++ /dev/null
      @@ -1,48 +0,0 @@
      -body {
      -    min-height: 3000px;
      -}
      -.element {
      -    width: 200px;
      -    height: 200px;
      -    background-color: #fe8;
      -    position: absolute;
      -    z-index: 6;
      -}
      -
      -.target {
      -    width: 300px;
      -    height: 50px;
      -    margin: 0 35%;
      -    background-color: #4e9;
      -}
      -
      -.container {
      -    height: 600px;
      -    overflow: scroll;
      -    width: 600px;
      -    border: 20px solid #CCC;
      -    margin-top: 100px;
      -}
      -
      -body {
      -    padding: 15px;
      -}
      -
      -body > .container {
      -    margin: 0 auto;
      -}
      -
      -.pad {
      -    height: 400px;
      -    width: 100px;
      -}
      -
      -.instructions {
      -    width: 100%;
      -    text-align: center;
      -    font-size: 24px;
      -    padding: 15px;
      -    background-color: rgba(210, 180, 140, 0.4);
      -    margin: -15px -15px 0 -15px;
      -}
      -
      diff --git a/bower_components/tether/examples/content-visible/index.html b/bower_components/tether/examples/content-visible/index.html
      deleted file mode 100644
      index fd1559162b..0000000000
      --- a/bower_components/tether/examples/content-visible/index.html
      +++ /dev/null
      @@ -1,64 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -    </head>
      -    <body>
      -
      -    <div class="instructions">Scroll the page</div>
      -
      -    <style>
      -      .instructions {
      -        width: 100%;
      -        text-align: center;
      -        font-size: 24px;
      -        padding: 15px;
      -        background-color: rgba(210, 180, 140, 0.4);
      -      }
      -
      -      * {
      -        box-sizing: border-box;
      -      }
      -      body {
      -        min-height: 1200vh;
      -        height: 100%;
      -      }
      -
      -      .content-box {
      -        width: 600px;
      -        border: 10px solid #999;
      -        height: 600vh;
      -        background-color: #439CCC;
      -        margin: 200vh auto;
      -      }
      -      .element {
      -        border: 10px solid #999;
      -        background-color: #FFDC00;
      -        width: 300px;
      -        height: 200px;
      -        padding: 0 15px;
      -        font-size: 20px;
      -        font-weight: bold;
      -      }
      -    </style>
      -
      -    <div class="content-box">
      -      <div class="element">
      -        <p>This is some sort of crazy dialog.</p>
      -
      -        <p>It's setup to align with the center of the visible part of the blue area.</p>
      -      </div>
      -    </div>
      -
      -    <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -    <script>
      -      new Tether({
      -        element: '.element',
      -        target: '.content-box',
      -        attachment: 'middle center',
      -        targetAttachment: 'middle center',
      -        targetModifier: 'visible'
      -      });
      -    </script>
      -  </body>
      -</html>
      diff --git a/bower_components/tether/examples/dolls/dolls.css b/bower_components/tether/examples/dolls/dolls.css
      deleted file mode 100644
      index 931c0de252..0000000000
      --- a/bower_components/tether/examples/dolls/dolls.css
      +++ /dev/null
      @@ -1,18 +0,0 @@
      -.tether-element, .tether-target {
      -  width: 200px;
      -  height: 50px;
      -  background-color: #4cc;
      -  position: absolute;
      -}
      -body {
      -  width: 100%;
      -  height: 100%;
      -  overflow: scroll;
      -}
      -.scroll {
      -  width: 400%;
      -  height: 400%;
      -}
      -.tether-target:not(.tether-element) {
      -  cursor: move;
      -}
      diff --git a/bower_components/tether/examples/dolls/dolls.js b/bower_components/tether/examples/dolls/dolls.js
      deleted file mode 100644
      index 5d0b06b2c1..0000000000
      --- a/bower_components/tether/examples/dolls/dolls.js
      +++ /dev/null
      @@ -1,83 +0,0 @@
      -var tethers = [];
      -
      -document.addEventListener('DOMContentLoaded', function(){
      -  dragging = null;
      -
      -  document.body.addEventListener('mouseup', function(){
      -    dragging = null;
      -  });
      -
      -  document.body.addEventListener('mousemove', function(e){
      -    if (dragging){
      -      dragging.style.top = e.clientY + 'px';
      -      dragging.style.left = e.clientX + 'px';
      -
      -      Tether.position()
      -    }
      -  });
      -
      -  document.body.addEventListener('mousedown', function(e){
      -    if (e.target.getAttribute('data-index'))
      -      dragging = e.target;
      -  })
      -
      -  var count = 60;
      -  var parent = null;
      -  var dir = 'left';
      -  var first = null;
      -
      -  while (count--){
      -    var el = document.createElement('div');
      -    el.setAttribute('data-index', count);
      -    document.querySelector('.scroll').appendChild(el);
      -
      -    if (!first)
      -      first = el;
      - 
      -    if (count % 10 === 0)
      -      dir = dir == 'right' ? 'left' : 'right';
      -
      -    if (parent){
      -      tethers.push(new Tether({
      -        element: el,
      -        target: parent,
      -        attachment: 'middle ' + dir,
      -        targetOffset: (dir == 'left' ? '10px 10px' : '10px -10px')
      -      }));
      -
      -    }
      -
      -    parent = el;
      -  }
      -
      -  initAnim(first);
      -});
      -
      -function initAnim(el){
      -  var start = performance.now()
      -  var last = 0;
      -  var lastTop = 0;
      -  var tick = function(){
      -    var diff = performance.now() - last;
      -
      -    if (!last || diff > 50){
      -      last = performance.now();
      -
      -      var nextTop = 50 * Math.sin((last - start) / 1000);
      -
      -      var curTop = parseFloat(el.style.top || 0);
      -      var topChange = nextTop - lastTop;
      -      lastTop = nextTop;
      -
      -      var top = curTop + topChange;
      -
      -      el.style.top = top + 'px';
      -
      -      Tether.position();
      -    }
      -
      -    requestAnimationFrame(tick);
      -  };
      -
      -  tick();
      -}
      diff --git a/bower_components/tether/examples/dolls/index.html b/bower_components/tether/examples/dolls/index.html
      deleted file mode 100644
      index 8f0167f11a..0000000000
      --- a/bower_components/tether/examples/dolls/index.html
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -<link rel="stylesheet" href="./dolls.css" />
      -<script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -<script src="./dolls.js"></script>
      -<body>
      -  <div class="scroll">
      -  </div>
      -</body>
      diff --git a/bower_components/tether/examples/element-scroll/index.html b/bower_components/tether/examples/element-scroll/index.html
      deleted file mode 100644
      index e93181aed0..0000000000
      --- a/bower_components/tether/examples/element-scroll/index.html
      +++ /dev/null
      @@ -1,499 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -      <link rel="stylesheet" href="../resources/css/base.css" />
      -    </head>
      -    <body>
      -
      -    <div class="scroll">
      -      <p>For a long time after the course of the steamer <em>Sofala</em> had been
      -      altered for the land, the low swampy coast had retained its appearance
      -      of a mere smudge of darkness beyond a belt of glitter. The sunrays
      -      seemed to fall violently upon the calm sea--seemed to shatter themselves
      -      upon an adamantine surface into sparkling dust, into a dazzling vapor
      -      of light that blinded the eye and wearied the brain with its unsteady
      -      brightness.</p>
      -
      -      <p>Captain Whalley did not look at it. When his Serang, approaching the
      -      roomy cane arm-chair which he filled capably, had informed him in a low
      -      voice that the course was to be altered, he had risen at once and had
      -      remained on his feet, face forward, while the head of his ship swung
      -      through a quarter of a circle. He had not uttered a single word, not
      -      even the word to steady the helm. It was the Serang, an elderly, alert,
      -      little Malay, with a very dark skin, who murmured the order to the
      -      helmsman. And then slowly Captain Whalley sat down again in the
      -      arm-chair on the bridge and fixed his eyes on the deck between his feet.</p>
      -
      -      <p>He could not hope to see anything new upon this lane of the sea. He had
      -      been on these coasts for the last three years. From Low Cape to Malantan
      -      the distance was fifty miles, six hours' steaming for the old ship with
      -      the tide, or seven against. Then you steered straight for the land, and
      -      by-and-by three palms would appear on the sky, tall and slim, and with
      -      their disheveled heads in a bunch, as if in confidential criticism of
      -      the dark mangroves. The Sofala would be headed towards the somber
      -      strip of the coast, which at a given moment, as the ship closed with
      -      it obliquely, would show several clean shining fractures--the brimful
      -      estuary of a river. Then on through a brown liquid, three parts water
      -      and one part black earth, on and on between the low shores, three parts
      -      black earth and one part brackish water, the Sofala would plow her way
      -      up-stream, as she had done once every month for these seven years or
      -      more, long before he was aware of her existence, long before he had ever
      -      thought of having anything to do with her and her invariable voyages.
      -      The old ship ought to have known the road better than her men, who had
      -      not been kept so long at it without a change; better than the faithful
      -      Serang, whom he had brought over from his last ship to keep the
      -      captain's watch; better than he himself, who had been her captain for
      -      the last three years only. She could always be depended upon to make her
      -      courses. Her compasses were never out. She was no trouble at all to
      -      take about, as if her great age had given her knowledge, wisdom, and
      -      steadiness. She made her landfalls to a degree of the bearing, and
      -      almost to a minute of her allowed time. At any moment, as he sat on
      -      the bridge without looking up, or lay sleepless in his bed, simply by
      -      reckoning the days and the hours he could tell where he was--the precise
      -      spot of the beat. He knew it well too, this monotonous huckster's
      -      round, up and down the Straits; he knew its order and its sights and its
      -      people. Malacca to begin with, in at daylight and out at dusk, to cross
      -      over with a rigid phosphorescent wake this highway of the Far East.
      -      Darkness and gleams on the water, clear stars on a black sky, perhaps
      -      the lights of a home steamer keeping her unswerving course in the
      -      middle, or maybe the elusive shadow of a native craft with her mat sails
      -      flitting by silently--and the low land on the other side in sight
      -      at daylight. At noon the three palms of the next place of call, up a
      -      sluggish river. The only white man residing there was a retired young
      -      sailor, with whom he had become friendly in the course of many voyages.
      -      Sixty miles farther on there was another place of call, a deep bay with
      -      only a couple of houses on the beach. And so on, in and out, picking
      -      up coastwise cargo here and there, and finishing with a hundred miles'
      -      steady steaming through the maze of an archipelago of small islands up
      -      to a large native town at the end of the beat. There was a three days'
      -      rest for the old ship before he started her again in inverse order,
      -      seeing the same shores from another bearing, hearing the same voices
      -      in the same places, back again to the Sofala's port of registry on
      -      the great highway to the East, where he would take up a berth nearly
      -      opposite the big stone pile of the harbor office till it was time to
      -      start again on the old round of 1600 miles and thirty days. Not a very
      -      enterprising life, this, for Captain Whalley, Henry Whalley, otherwise
      -      Dare-devil Harry--Whalley of the Condor, a famous clipper in her day.
      -      No. Not a very enterprising life for a man who had served famous firms,
      -      who had sailed famous ships (more than one or two of them his own); who
      -      had made famous passages, had been the pioneer of new routes and new
      -      trades; who had steered across the unsurveyed tracts of the South Seas,
      -      and had seen the sun rise on uncharted islands. Fifty years at sea, and
      -      forty out in the East ("a pretty thorough apprenticeship," he used
      -      to remark smilingly), had made him honorably known to a generation of
      -      shipowners and merchants in all the ports from Bombay clear over to
      -      where the East merges into the West upon the coast of the two Americas.
      -      His fame remained writ, not very large but plain enough, on the
      -      Admiralty charts. Was there not somewhere between Australia and China a
      -      Whalley Island and a Condor Reef? On that dangerous coral formation the
      -      celebrated clipper had hung stranded for three days, her captain and
      -      crew throwing her cargo overboard with one hand and with the other, as
      -      it were, keeping off her a flotilla of savage war-canoes. At that time
      -      neither the island nor the reef had any official existence. Later the
      -      officers of her Majesty's steam vessel Fusilier, dispatched to make a
      -      survey of the route, recognized in the adoption of these two names the
      -      enterprise of the man and the solidity of the ship. Besides, as anyone
      -      who cares may see, the "General Directory," vol. ii. p. 410, begins the
      -      description of the "Malotu or Whalley Passage" with the words: "This
      -      advantageous route, first discovered in 1850 by Captain Whalley in the
      -      ship Condor," &amp;c., and ends by recommending it warmly to sailing vessels
      -      leaving the China ports for the south in the months from December to
      -      April inclusive.</p>
      -
      -      <p>This was the clearest gain he had out of life. Nothing could rob him
      -      of this kind of fame. The piercing of the Isthmus of Suez, like the
      -      breaking of a dam, had let in upon the East a flood of new ships, new
      -      men, new methods of trade. It had changed the face of the Eastern seas
      -      and the very spirit of their life; so that his early experiences meant
      -      nothing whatever to the new generation of seamen.</p>
      -
      -      <p>In those bygone days he had handled many thousands of pounds of his
      -      employers' money and of his own; he had attended faithfully, as by law
      -      a shipmaster is expected to do, to the conflicting interests of owners,
      -      charterers, and underwriters. He had never lost a ship or consented to
      -      a shady transaction; and he had lasted well, outlasting in the end the
      -      conditions that had gone to the making of his name. He had buried his
      -      wife (in the Gulf of Petchili), had married off his daughter to the man
      -      of her unlucky choice, and had lost more than an ample competence in the
      -      crash of the notorious Travancore and Deccan Banking Corporation, whose
      -      downfall had shaken the East like an earthquake. And he was sixty-five
      -      years old.</p>
      -
      -      <p>His age sat lightly enough on him; and of his ruin he was not ashamed.
      -      He had not been alone to believe in the stability of the Banking
      -      Corporation. Men whose judgment in matters of finance was as expert as
      -      his seamanship had commended the prudence of his investments, and had
      -      themselves lost much money in the great failure. The only difference
      -      between him and them was that he had lost his all. And yet not his all.
      -      There had remained to him from his lost fortune a very pretty little
      -      bark, Fair Maid, which he had bought to occupy his leisure of a retired
      -      sailor--"to play with," as he expressed it himself.</p>
      -
      -      <p>He had formally declared himself tired of the sea the year preceding his
      -      daughter's marriage. But after the young couple had gone to settle in
      -      Melbourne he found out that he could not make himself happy on shore. He
      -      was too much of a merchant sea-captain for mere yachting to satisfy him.
      -      He wanted the illusion of affairs; and his acquisition of the Fair
      -      Maid preserved the continuity of his life. He introduced her to his
      -      acquaintances in various ports as "my last command." When he grew too
      -      old to be trusted with a ship, he would lay her up and go ashore to be
      -      buried, leaving directions in his will to have the bark towed out and
      -      scuttled decently in deep water on the day of the funeral. His daughter
      -      would not grudge him the satisfaction of knowing that no stranger would
      -      handle his last command after him. With the fortune he was able to leave
      -      her, the value of a 500-ton bark was neither here nor there. All this
      -      would be said with a jocular twinkle in his eye: the vigorous old man
      -      had too much vitality for the sentimentalism of regret; and a little
      -      wistfully withal, because he was at home in life, taking a genuine
      -      pleasure in its feelings and its possessions; in the dignity of his
      -      reputation and his wealth, in his love for his daughter, and in his
      -      satisfaction with the ship--the plaything of his lonely leisure.</p>
      -
      -      <p>He had the cabin arranged in accordance with his simple ideal of comfort
      -      at sea. A big bookcase (he was a great reader) occupied one side of his
      -      stateroom; the portrait of his late wife, a flat bituminous oil-painting
      -      representing the profile and one long black ringlet of a young woman,
      -      faced his bed-place. Three chronometers ticked him to sleep and greeted
      -      him on waking with the tiny competition of their beats. He rose at five
      -      every day. The officer of the morning watch, drinking his early cup
      -      of coffee aft by the wheel, would hear through the wide orifice of the
      -      copper ventilators all the splashings, blowings, and splutterings of
      -      his captain's toilet. These noises would be followed by a sustained
      -      deep murmur of the Lord's Prayer recited in a loud earnest voice. Five
      -      minutes afterwards the head and shoulders of Captain Whalley emerged
      -      out of the companion-hatchway. Invariably he paused for a while on the
      -      stairs, looking all round at the horizon; upwards at the trim of the
      -      sails; inhaling deep draughts of the fresh air. Only then he would step
      -      out on the poop, acknowledging the hand raised to the peak of the cap
      -      with a majestic and benign "Good morning to you." He walked the deck
      -      till eight scrupulously. Sometimes, not above twice a year, he had to
      -      use a thick cudgel-like stick on account of a stiffness in the hip--a
      -      slight touch of rheumatism, he supposed. Otherwise he knew nothing of
      -      the ills of the flesh. At the ringing of the breakfast bell he went
      -      below to feed his canaries, wind up the chronometers, and take the
      -      head of the table. From there he had before his eyes the big carbon
      -      photographs of his daughter, her husband, and two fat-legged babies
      -      --his grandchildren--set in black frames into the maplewood bulkheads
      -      of the cuddy. After breakfast he dusted the glass over these portraits
      -      himself with a cloth, and brushed the oil painting of his wife with a
      -      plumate kept suspended from a small brass hook by the side of the heavy
      -      gold frame. Then with the door of his stateroom shut, he would sit down
      -      on the couch under the portrait to read a chapter out of a thick pocket
      -      Bible--her Bible. But on some days he only sat there for half an hour
      -      with his finger between the leaves and the closed book resting on his
      -      knees. Perhaps he had remembered suddenly how fond of boat-sailing she
      -      used to be.</p>
      -
      -      <p>She had been a real shipmate and a true woman too. It was like an
      -      article of faith with him that there never had been, and never could be,
      -      a brighter, cheerier home anywhere afloat or ashore than his home under
      -      the poop-deck of the Condor, with the big main cabin all white and gold,
      -      garlanded as if for a perpetual festival with an unfading wreath. She
      -      had decorated the center of every panel with a cluster of home flowers.
      -      It took her a twelvemonth to go round the cuddy with this labor of love.
      -      To him it had remained a marvel of painting, the highest achievement of
      -      taste and skill; and as to old Swinburne, his mate, every time he
      -      came down to his meals he stood transfixed with admiration before the
      -      progress of the work. You could almost smell these roses, he declared,
      -      sniffing the faint flavor of turpentine which at that time pervaded the
      -      saloon, and (as he confessed afterwards) made him somewhat less hearty
      -      than usual in tackling his food. But there was nothing of the sort to
      -      interfere with his enjoyment of her singing. "Mrs. Whalley is a regular
      -      out-and-out nightingale, sir," he would pronounce with a judicial air
      -      after listening profoundly over the skylight to the very end of the
      -      piece. In fine weather, in the second dog-watch, the two men could hear
      -      her trills and roulades going on to the accompaniment of the piano in
      -      the cabin. On the very day they got engaged he had written to London
      -      for the instrument; but they had been married for over a year before it
      -      reached them, coming out round the Cape. The big case made part of the
      -      first direct general cargo landed in Hong-kong harbor--an event that to
      -      the men who walked the busy quays of to-day seemed as hazily remote as
      -      the dark ages of history. But Captain Whalley could in a half hour of
      -      solitude live again all his life, with its romance, its idyl, and its
      -      sorrow. He had to close her eyes himself. She went away from under the
      -      ensign like a sailor's wife, a sailor herself at heart. He had read
      -      the service over her, out of her own prayer-book, without a break in his
      -      voice. When he raised his eyes he could see old Swinburne facing him
      -      with his cap pressed to his breast, and his rugged, weather-beaten,
      -      impassive face streaming with drops of water like a lump of chipped red
      -      granite in a shower. It was all very well for that old sea-dog to cry.
      -      He had to read on to the end; but after the splash he did not remember
      -      much of what happened for the next few days. An elderly sailor of the
      -      crew, deft at needlework, put together a mourning frock for the child
      -      out of one of her black skirts.</p>
      -
      -      <p>He was not likely to forget; but you cannot dam up life like a sluggish
      -      stream. It will break out and flow over a man's troubles, it will close
      -      upon a sorrow like the sea upon a dead body, no matter how much love has
      -      gone to the bottom. And the world is not bad. People had been very
      -      kind to him; especially Mrs. Gardner, the wife of the senior partner
      -      in Gardner, Patteson, &amp; Co., the owners of the Condor. It was she who
      -      volunteered to look after the little one, and in due course took her to
      -      England (something of a journey in those days, even by the overland
      -      mail route) with her own girls to finish her education. It was ten years
      -      before he saw her again.</p>
      -
      -      <p>As a little child she had never been frightened of bad weather; she
      -      would beg to be taken up on deck in the bosom of his oilskin coat to
      -      watch the big seas hurling themselves upon the Condor. The swirl and
      -      crash of the waves seemed to fill her small soul with a breathless
      -      delight. "A good boy spoiled," he used to say of her in joke. He had
      -      named her Ivy because of the sound of the word, and obscurely fascinated
      -      by a vague association of ideas. She had twined herself tightly round
      -      his heart, and he intended her to cling close to her father as to a
      -      tower of strength; forgetting, while she was little, that in the nature
      -      of things she would probably elect to cling to someone else. But
      -      he loved life well enough for even that event to give him a certain
      -      satisfaction, apart from his more intimate feeling of loss.</p>
      -
      -      <p>After he had purchased the Fair Maid to occupy his loneliness, he
      -      hastened to accept a rather unprofitable freight to Australia simply for
      -      the opportunity of seeing his daughter in her own home. What made him
      -      dissatisfied there was not to see that she clung now to somebody else,
      -      but that the prop she had selected seemed on closer examination "a
      -      rather poor stick"--even in the matter of health. He disliked his
      -      son-in-law's studied civility perhaps more than his method of
      -      handling the sum of money he had given Ivy at her marriage. But of his
      -      apprehensions he said nothing. Only on the day of his departure, with
      -      the hall-door open already, holding her hands and looking steadily into
      -      her eyes, he had said, "You know, my dear, all I have is for you and the
      -      chicks. Mind you write to me openly." She had answered him by an almost
      -      imperceptible movement of her head. She resembled her mother in
      -      the color of her eyes, and in character--and also in this, that she
      -      understood him without many words.</p>
      -
      -      <p>Sure enough she had to write; and some of these letters made Captain
      -      Whalley lift his white eye-brows. For the rest he considered he was
      -      reaping the true reward of his life by being thus able to produce on
      -      demand whatever was needed. He had not enjoyed himself so much in a
      -      way since his wife had died. Characteristically enough his son-in-law's
      -      punctuality in failure caused him at a distance to feel a sort of
      -      kindness towards the man. The fellow was so perpetually being jammed on
      -      a lee shore that to charge it all to his reckless navigation would be
      -      manifestly unfair. No, no! He knew well what that meant. It was bad
      -      luck. His own had been simply marvelous, but he had seen in his life too
      -      many good men--seamen and others--go under with the sheer weight of bad
      -      luck not to recognize the fatal signs. For all that, he was cogitating
      -      on the best way of tying up very strictly every penny he had to leave,
      -      when, with a preliminary rumble of rumors (whose first sound reached
      -      him in Shanghai as it happened), the shock of the big failure came;
      -      and, after passing through the phases of stupor, of incredulity, of
      -      indignation, he had to accept the fact that he had nothing to speak of
      -      to leave.</p>
      -
      -      <p>Upon that, as if he had only waited for this catastrophe, the unlucky
      -      man, away there in Melbourne, gave up his unprofitable game, and sat
      -      down--in an invalid's bath-chair at that too. "He will never walk
      -      again," wrote the wife. For the first time in his life Captain Whalley
      -      was a bit staggered.</p>
      -
      -      <p>The Fair Maid had to go to work in bitter earnest now. It was no longer
      -      a matter of preserving alive the memory of Dare-devil Harry Whalley in
      -      the Eastern Seas, or of keeping an old man in pocket-money and clothes,
      -      with, perhaps, a bill for a few hundred first-class cigars thrown in at
      -      the end of the year. He would have to buckle-to, and keep her going hard
      -      on a scant allowance of gilt for the ginger-bread scrolls at her stem
      -      and stern.</p>
      -
      -      <p>This necessity opened his eyes to the fundamental changes of the world.
      -      Of his past only the familiar names remained, here and there, but
      -      the things and the men, as he had known them, were gone. The name of
      -      Gardner, Patteson, &amp; Co. was still displayed on the walls of warehouses
      -      by the waterside, on the brass plates and window-panes in the business
      -      quarters of more than one Eastern port, but there was no longer a
      -      Gardner or a Patteson in the firm. There was no longer for Captain
      -      Whalley an arm-chair and a welcome in the private office, with a bit of
      -      business ready to be put in the way of an old friend, for the sake of
      -      bygone services. The husbands of the Gardner girls sat behind the desks
      -      in that room where, long after he had left the employ, he had kept his
      -      right of entrance in the old man's time. Their ships now had yellow
      -      funnels with black tops, and a time-table of appointed routes like a
      -      confounded service of tramways. The winds of December and June were all
      -      one to them; their captains (excellent young men he doubted not) were,
      -      to be sure, familiar with Whalley Island, because of late years the
      -      Government had established a white fixed light on the north end (with
      -      a red danger sector over the Condor Reef), but most of them would have
      -      been extremely surprised to hear that a flesh-and-blood Whalley still
      -      existed--an old man going about the world trying to pick up a cargo here
      -      and there for his little bark.</p>
      -
      -      <p>And everywhere it was the same. Departed the men who would have nodded
      -      appreciatively at the mention of his name, and would have thought
      -      themselves bound in honor to do something for Dare-devil Harry Whalley.
      -      Departed the opportunities which he would have known how to seize; and
      -      gone with them the white-winged flock of clippers that lived in the
      -      boisterous uncertain life of the winds, skimming big fortunes out of
      -      the foam of the sea. In a world that pared down the profits to an
      -      irreducible minimum, in a world that was able to count its disengaged
      -      tonnage twice over every day, and in which lean charters were snapped up
      -      by cable three months in advance, there were no chances of fortune for
      -      an individual wandering haphazard with a little bark--hardly indeed any
      -      room to exist.</p>
      -
      -      <p>He found it more difficult from year to year. He suffered greatly from
      -      the smallness of remittances he was able to send his daughter. Meantime
      -      he had given up good cigars, and even in the matter of inferior cheroots
      -      limited himself to six a day. He never told her of his difficulties, and
      -      she never enlarged upon her struggle to live. Their confidence in each
      -      other needed no explanations, and their perfect understanding endured
      -      without protestations of gratitude or regret. He would have been shocked
      -      if she had taken it into her head to thank him in so many words, but
      -      he found it perfectly natural that she should tell him she needed two
      -      hundred pounds.</p>
      -
      -      <p>He had come in with the Fair Maid in ballast to look for a freight in
      -      the Sofala's port of registry, and her letter met him there. Its tenor
      -      was that it was no use mincing matters. Her only resource was in opening
      -      a boarding-house, for which the prospects, she judged, were good. Good
      -      enough, at any rate, to make her tell him frankly that with two hundred
      -      pounds she could make a start. He had torn the envelope open, hastily,
      -      on deck, where it was handed to him by the ship-chandler's runner, who
      -      had brought his mail at the moment of anchoring. For the second time
      -      in his life he was appalled, and remained stock-still at the cabin door
      -      with the paper trembling between his fingers. Open a boarding-house! Two
      -      hundred pounds for a start! The only resource! And he did not know where
      -      to lay his hands on two hundred pence.</p>
      -
      -      <p>All that night Captain Whalley walked the poop of his anchored ship, as
      -      though he had been about to close with the land in thick weather, and
      -      uncertain of his position after a run of many gray days without a sight
      -      of sun, moon, or stars. The black night twinkled with the guiding lights
      -      of seamen and the steady straight lines of lights on shore; and all
      -      around the Fair Maid the riding lights of ships cast trembling trails
      -      upon the water of the roadstead. Captain Whalley saw not a gleam
      -      anywhere till the dawn broke and he found out that his clothing was
      -      soaked through with the heavy dew.</p>
      -
      -      <p>His ship was awake. He stopped short, stroked his wet beard, and
      -      descended the poop ladder backwards, with tired feet. At the sight
      -      of him the chief officer, lounging about sleepily on the quarterdeck,
      -      remained open-mouthed in the middle of a great early-morning yawn.</p>
      -
      -      <p>"Good morning to you," pronounced Captain Whalley solemnly, passing into
      -      the cabin. But he checked himself in the doorway, and without looking
      -      back, "By the bye," he said, "there should be an empty wooden case put
      -      away in the lazarette. It has not been broken up--has it?"</p>
      -
      -      <p>The mate shut his mouth, and then asked as if dazed, "What empty case,
      -      sir?"</p>
      -
      -      <p>"A big flat packing-case belonging to that painting in my room. Let it
      -      be taken up on deck and tell the carpenter to look it over. I may want
      -      to use it before long."</p>
      -
      -      <p>The chief officer did not stir a limb till he had heard the door of the
      -      captain's state-room slam within the cuddy. Then he beckoned aft the
      -      second mate with his forefinger to tell him that there was something "in
      -      the wind."</p>
      -
      -      <p>When the bell rang Captain Whalley's authoritative voice boomed out
      -      through a closed door, "Sit down and don't wait for me." And his
      -      impressed officers took their places, exchanging looks and whispers
      -      across the table. What! No breakfast? And after apparently knocking
      -      about all night on deck, too! Clearly, there was something in the wind.
      -      In the skylight above their heads, bowed earnestly over the plates,
      -      three wire cages rocked and rattled to the restless jumping of the
      -      hungry canaries; and they could detect the sounds of their "old
      -      man's" deliberate movements within his state-room. Captain Whalley was
      -      methodically winding up the chronometers, dusting the portrait of
      -      his late wife, getting a clean white shirt out of the drawers, making
      -      himself ready in his punctilious unhurried manner to go ashore. He could
      -      not have swallowed a single mouthful of food that morning. He had made
      -      up his mind to sell the Fair Maid.</p>
      -    </div>
      -
      -    <div class="pointer"></div>
      -
      -    <style>
      -      body {
      -        cursor: pointer;
      -      }
      -      .scroll {
      -        height: 80vh;
      -        width: 80vw;
      -        max-height: 600px;
      -        position: fixed;
      -        top: 5em;
      -        left: 10vw;
      -
      -        overflow-y: scroll;
      -        padding: 4em;
      -        box-sizing: border-box;
      -        line-height: 1.2;
      -      }
      -      .scroll::-webkit-scrollbar, .scroll::-webkit-scrollbar-track, .scroll::-webkit-scrollbar-thumb {
      -        display: none;
      -      }
      -
      -      .pointer {
      -        height: 3.6em;
      -        width: 77vw;
      -        border: 5px solid #CCC;
      -        border-radius: 15px;
      -        background-color: rgba(0, 0, 0, 0.05);
      -        pointer-events: none;
      -      }
      -      .highlight {
      -        background-color: rgba(255, 255, 0, 0.3);
      -      }
      -      .hover {
      -        background-color: rgba(0, 255, 255, 0.2);
      -      }
      -    </style>
      -
      -    <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -    <script>
      -      var pointer = document.querySelector('.pointer');
      -      var scroll = document.querySelector('.scroll');
      -
      -      // This creates the pointer tether and links it up
      -      // with the scroll handle
      -      new Tether({
      -        element: pointer,
      -        target: scroll,
      -        attachment: 'middle right',
      -        targetAttachment: 'middle left',
      -        targetModifier: 'scroll-handle'
      -      });
      -
      -      // Everything after this is for the highlighting effect
      -      var paras = document.querySelectorAll('p');
      -      for(var i=paras.length; i--;){
      -        var sents = paras[i].innerHTML.split('.');
      -        for (var j=sents.length; j--;){
      -          if (sents[j].trim().length)
      -            sents[j] = '<span>' + sents[j] + '.</span>';
      -        }
      -        paras[i].innerHTML = sents.join('');
      -      }
      -
      -      var spans = document.querySelectorAll('p span');
      -
      -      function highlight(){
      -        if (!spans) return;
      -
      -        var bar = pointer.getBoundingClientRect();
      -
      -        for (var i=spans.length; i--;){
      -          var coord = spans[i].getBoundingClientRect();
      -
      -          if (bar.top < coord.top && bar.bottom > coord.top){
      -            spans[i].classList.add('hover');
      -          } else if (spans[i].classList.contains('hover')) {
      -            spans[i].classList.remove('hover');
      -          }
      -        }
      -
      -        requestAnimationFrame(highlight);
      -      }
      -
      -      highlight();
      -
      -      document.body.addEventListener('click', function(){
      -        var els = document.querySelectorAll('.hover');
      -        for (var i=els.length; i--;)
      -          els[i].classList.toggle('highlight');
      -      });
      -    </script>
      -  </body>
      -</html>
      diff --git a/bower_components/tether/examples/enable-disable/index.html b/bower_components/tether/examples/enable-disable/index.html
      deleted file mode 100644
      index 00036d4c24..0000000000
      --- a/bower_components/tether/examples/enable-disable/index.html
      +++ /dev/null
      @@ -1,37 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="../common/css/style.css" />
      -    </head>
      -    <body>
      -        <div class="instructions">Click the green target to enable/disable the tethering.</div>
      -
      -        <div class="element"></div>
      -        <div class="container">
      -            <div class="pad"></div>
      -            <div class="target"></div>
      -            <div class="pad"></div>
      -        </div>
      -
      -        <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -        <script>
      -            var tether = new Tether({
      -                element: '.element',
      -                target: '.target',
      -                attachment: 'top left',
      -                targetAttachment: 'top right'
      -            });
      -
      -            document.querySelector('.target').addEventListener('click', function(){
      -                if (tether.enabled)
      -                    tether.disable();
      -                else
      -                    tether.enable();
      -            });
      -        </script>
      -    </body>
      -</html>
      diff --git a/bower_components/tether/examples/facebook/facebook.css b/bower_components/tether/examples/facebook/facebook.css
      deleted file mode 100644
      index eae1508801..0000000000
      --- a/bower_components/tether/examples/facebook/facebook.css
      +++ /dev/null
      @@ -1,86 +0,0 @@
      -.drop-target.drop-open {
      -    outline: 2px solid;
      -}
      -
      -.body {
      -    position: relative;
      -    margin-right: 300px;
      -}
      -
      -.page {
      -    max-width: 100%;
      -    width: 1080px;
      -    padding: 0 10px;
      -    box-sizing: border-box;
      -    margin: 0 auto;
      -}
      -
      -.navigation {
      -    background: blue;
      -    color: #fff;
      -    margin-right: 300px;
      -    margin-bottom: 30px;
      -}
      -
      -.navigation .item a {
      -    padding: 30px 20px;
      -    display: inline-block;
      -}
      -
      -.navigation .item a {
      -    color: inherit;
      -}
      -
      -.navigation .drop-target.drop-open {
      -    background: #fff;
      -    color: blue;
      -    outline: none;
      -}
      -
      -.right-sidebar {
      -    position: fixed;
      -    height: 50%;
      -    width: 300px;
      -    background: #eee;
      -    overflow: auto;
      -    right: 0;
      -}
      -
      -.right-sidebar .drop-target.drop-open {
      -    background: blue;
      -    color: #fff;
      -    outline: none;
      -}
      -
      -.right-sidebar .item a {
      -    display: block;
      -    padding: 20px;
      -    margin-bottom: 10px;
      -    background: rgba(0, 0, 0, .1);
      -}
      -
      -.right-sidebar-top {
      -    top: 0;
      -}
      -
      -.right-sidebar-bottom {
      -    top: 50%;
      -    background: #ccc;
      -}
      -
      -.scroll-container {
      -    position: relative; 
      -    overflow: auto;
      -    background: #eee;
      -    padding: 20px;
      -    margin-bottom: 20px;
      -    margin-right: 20px;
      -    height: 200px;
      -    width: 200px;
      -}
      -
      -.absolute-container {
      -    position: absolute;
      -    top: 20px;
      -    right: 300px;
      -}
      diff --git a/bower_components/tether/examples/facebook/index.html b/bower_components/tether/examples/facebook/index.html
      deleted file mode 100644
      index d4bcf8e0b2..0000000000
      --- a/bower_components/tether/examples/facebook/index.html
      +++ /dev/null
      @@ -1,209 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <link rel="stylesheet" href="../../css/drop.css" />
      -        <link rel="stylesheet" href="../../css/drop-theme-default.css" />
      -        <link rel="stylesheet" href="../../css/drop-theme-arrows.css" />
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="facebook.css" />
      -    </head>
      -    <body>
      -        <div class="navigation">
      -            <div class="page">
      -                <span class="item">DROPBOOK</span>
      -                <span class="item">
      -                    <a class="drop-target" data-constrain="false" data-attach="bottom left">DROP</a>
      -                </span>
      -                <span class="item">
      -                    <a class="drop-target" data-constrain="false" data-attach="bottom left">DROP</a>
      -                </span>
      -                <span class="item">
      -                    <a class="drop-target" data-constrain="false" data-attach="bottom left">DROP</a>
      -                </span>
      -            </div>
      -        </div>
      -        <div class="right-sidebar right-sidebar-top">
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="true" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left top">DROP</a>
      -            </div>
      -        </div>
      -        <div class="right-sidebar right-sidebar-bottom">
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="true" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -            <div class="item">
      -                <a class="drop-target" data-constrain="false" data-class="drop-theme-arrows" data-attach="left bottom">DROP</a>
      -            </div>
      -        </div>
      -        <div class="body">
      -            <div class="page">
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor<br/>
      -                incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud<br/>
      -                exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/><br/>
      -
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor<br/>
      -                incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud<br/>
      -                exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/><br/>
      -
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor<br/>
      -                incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud<br/>
      -                exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/><br/>
      -
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor<br/>
      -                incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud<br/>
      -                exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/><br/>
      -
      -                <a class="drop-target" data-constrain="true" data-attach="bottom left">DROP</a><br/><br/>
      -                <div class="scroll-container">
      -                  Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      -                  Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      -                  Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      -                  Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      -                  Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      -                  Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      -                  Lorem ipsum dolor sit amet, consectetur adipisicing elit,
      -                  <br/><br/><a class="drop-target" data-constrain="true" data-attach="bottom left">DROP</a><br/><br/> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/>
      -                </div>
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/><br/>
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/><br/>
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/><br/>
      -                Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/><br/>
      -                <div class="scroll-container">
      -                    <br/>
      -                    <a class="drop-target" data-constrain="true" data-attach="bottom left">DROP</a><br/>
      -                    <br/>
      -                    <div style="width: 150%; background: #ccc; height: 1px"></div>
      -                </div>
      -                <div class="scroll-container">
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    <br/><br/>
      -                    <div style="width: 150%; background: #ccc; height: 1px">
      -                        <div style="margin-left: 100%">
      -                            <a class="drop-target" data-constrain="true" data-attach="bottom left">DROP</a>
      -                        </div>
      -                    </div>
      -                    <br/><br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/>
      -                </div>
      -                <div class="scroll-container absolute-container">
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, <br/><br/><a class="drop-target" data-constrain="false" data-attach="left top">DROP</a><br/><br/> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.<br/>
      -                    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<br/>
      -                </div>
      -            </div>
      -        </div>
      -
      -        <script src="../resources/js/log.js"></script>
      -        <script src="../resources/js/jquery.js"></script>
      -        <script src="../../utils.js"></script>
      -        <script src="../../tether.js"></script>
      -        <script src="../../drop.js"></script>
      -        <script src="../../constraint.js"></script>
      -        <style>
      -            .drop .drop-content {
      -                min-height: 100px;
      -                min-width: 100px;
      -            }
      -        </style>
      -        <script>
      -            $('.drop-target').each(function(){
      -                new Drop({
      -                    target: this,
      -                    className: $(this).data().class || 'drop-theme-default',
      -                    attach: $(this).data().attach,
      -                    constrainToScrollParent: $(this).data().constrain,
      -                    openOn: 'click'
      -                });
      -            });
      -        </script>
      -    </body>
      -</html>
      diff --git a/bower_components/tether/examples/out-of-bounds/index.html b/bower_components/tether/examples/out-of-bounds/index.html
      deleted file mode 100644
      index c2a8c6d032..0000000000
      --- a/bower_components/tether/examples/out-of-bounds/index.html
      +++ /dev/null
      @@ -1,38 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="../common/css/style.css" />
      -        <style>
      -            .tether-element.tether-out-of-bounds {
      -                display: none;
      -            }
      -        </style>
      -    </head>
      -    <body>
      -        <div class="instructions">Resize the screen to see the tethered element disappear when it can't fit.</div>
      -
      -        <div class="element"></div>
      -        <div class="target"></div>
      -
      -        <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -        <script>
      -            var tether = new Tether({
      -                element: '.element',
      -                target: '.target',
      -                attachment: 'top left',
      -                targetAttachment: 'top right',
      -                constraints: [{
      -                    to: 'window',
      -                    attachment: 'together'
      -                }]
      -            });
      -            tether.on('update', function(event) {
      -                console.log(event);
      -            });
      -        </script>
      -    </body>
      -</html>
      diff --git a/bower_components/tether/examples/pin/index.html b/bower_components/tether/examples/pin/index.html
      deleted file mode 100644
      index cd040ab9af..0000000000
      --- a/bower_components/tether/examples/pin/index.html
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="../common/css/style.css" />
      -    </head>
      -    <body>
      -        <div class="instructions">Resize the screen to see the tethered element stick to the edges of the screen when it's resized.</div>
      -
      -        <div class="element"></div>
      -        <div class="target"></div>
      -
      -        <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -        <script>
      -            new Tether({
      -                element: '.element',
      -                target: '.target',
      -                attachment: 'top left',
      -                targetAttachment: 'top right',
      -                constraints: [{
      -                    to: 'window',
      -                    pin: true
      -                }]
      -            });
      -        </script>
      -    </body>
      -</html>
      diff --git a/bower_components/tether/examples/resources/css/base.css b/bower_components/tether/examples/resources/css/base.css
      deleted file mode 100644
      index 8006e9d80e..0000000000
      --- a/bower_components/tether/examples/resources/css/base.css
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -body {
      -    font-family: "Helvetica Neue", sans-serif;
      -    color: #444;
      -    margin: 0px;
      -}
      -
      -a {
      -    cursor: pointer;
      -    color: blue;
      -}
      \ No newline at end of file
      diff --git a/bower_components/tether/examples/resources/js/jquery.js b/bower_components/tether/examples/resources/js/jquery.js
      deleted file mode 100644
      index a4faed1200..0000000000
      --- a/bower_components/tether/examples/resources/js/jquery.js
      +++ /dev/null
      @@ -1,9597 +0,0 @@
      -/*!
      - * jQuery JavaScript Library v1.9.1
      - * http://jquery.com/
      - *
      - * Includes Sizzle.js
      - * http://sizzlejs.com/
      - *
      - * Copyright 2005, 2012 jQuery Foundation, Inc. and other contributors
      - * Released under the MIT license
      - * http://jquery.org/license
      - *
      - * Date: 2013-2-4
      - */
      -(function( window, undefined ) {
      -
      -// Can't do this because several apps including ASP.NET trace
      -// the stack via arguments.caller.callee and Firefox dies if
      -// you try to trace through "use strict" call chains. (#13335)
      -// Support: Firefox 18+
      -//"use strict";
      -var
      -    // The deferred used on DOM ready
      -    readyList,
      -
      -    // A central reference to the root jQuery(document)
      -    rootjQuery,
      -
      -    // Support: IE<9
      -    // For `typeof node.method` instead of `node.method !== undefined`
      -    core_strundefined = typeof undefined,
      -
      -    // Use the correct document accordingly with window argument (sandbox)
      -    document = window.document,
      -    location = window.location,
      -
      -    // Map over jQuery in case of overwrite
      -    _jQuery = window.jQuery,
      -
      -    // Map over the $ in case of overwrite
      -    _$ = window.$,
      -
      -    // [[Class]] -> type pairs
      -    class2type = {},
      -
      -    // List of deleted data cache ids, so we can reuse them
      -    core_deletedIds = [],
      -
      -    core_version = "1.9.1",
      -
      -    // Save a reference to some core methods
      -    core_concat = core_deletedIds.concat,
      -    core_push = core_deletedIds.push,
      -    core_slice = core_deletedIds.slice,
      -    core_indexOf = core_deletedIds.indexOf,
      -    core_toString = class2type.toString,
      -    core_hasOwn = class2type.hasOwnProperty,
      -    core_trim = core_version.trim,
      -
      -    // Define a local copy of jQuery
      -    jQuery = function( selector, context ) {
      -        // The jQuery object is actually just the init constructor 'enhanced'
      -        return new jQuery.fn.init( selector, context, rootjQuery );
      -    },
      -
      -    // Used for matching numbers
      -    core_pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,
      -
      -    // Used for splitting on whitespace
      -    core_rnotwhite = /\S+/g,
      -
      -    // Make sure we trim BOM and NBSP (here's looking at you, Safari 5.0 and IE)
      -    rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
      -
      -    // A simple way to check for HTML strings
      -    // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
      -    // Strict HTML recognition (#11290: must start with <)
      -    rquickExpr = /^(?:(<[\w\W]+>)[^>]*|#([\w-]*))$/,
      -
      -    // Match a standalone tag
      -    rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>|)$/,
      -
      -    // JSON RegExp
      -    rvalidchars = /^[\],:{}\s]*$/,
      -    rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
      -    rvalidescape = /\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,
      -    rvalidtokens = /"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,
      -
      -    // Matches dashed string for camelizing
      -    rmsPrefix = /^-ms-/,
      -    rdashAlpha = /-([\da-z])/gi,
      -
      -    // Used by jQuery.camelCase as callback to replace()
      -    fcamelCase = function( all, letter ) {
      -        return letter.toUpperCase();
      -    },
      -
      -    // The ready event handler
      -    completed = function( event ) {
      -
      -        // readyState === "complete" is good enough for us to call the dom ready in oldIE
      -        if ( document.addEventListener || event.type === "load" || document.readyState === "complete" ) {
      -            detach();
      -            jQuery.ready();
      -        }
      -    },
      -    // Clean-up method for dom ready events
      -    detach = function() {
      -        if ( document.addEventListener ) {
      -            document.removeEventListener( "DOMContentLoaded", completed, false );
      -            window.removeEventListener( "load", completed, false );
      -
      -        } else {
      -            document.detachEvent( "onreadystatechange", completed );
      -            window.detachEvent( "onload", completed );
      -        }
      -    };
      -
      -jQuery.fn = jQuery.prototype = {
      -    // The current version of jQuery being used
      -    jquery: core_version,
      -
      -    constructor: jQuery,
      -    init: function( selector, context, rootjQuery ) {
      -        var match, elem;
      -
      -        // HANDLE: $(""), $(null), $(undefined), $(false)
      -        if ( !selector ) {
      -            return this;
      -        }
      -
      -        // Handle HTML strings
      -        if ( typeof selector === "string" ) {
      -            if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
      -                // Assume that strings that start and end with <> are HTML and skip the regex check
      -                match = [ null, selector, null ];
      -
      -            } else {
      -                match = rquickExpr.exec( selector );
      -            }
      -
      -            // Match html or make sure no context is specified for #id
      -            if ( match && (match[1] || !context) ) {
      -
      -                // HANDLE: $(html) -> $(array)
      -                if ( match[1] ) {
      -                    context = context instanceof jQuery ? context[0] : context;
      -
      -                    // scripts is true for back-compat
      -                    jQuery.merge( this, jQuery.parseHTML(
      -                        match[1],
      -                        context && context.nodeType ? context.ownerDocument || context : document,
      -                        true
      -                    ) );
      -
      -                    // HANDLE: $(html, props)
      -                    if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
      -                        for ( match in context ) {
      -                            // Properties of context are called as methods if possible
      -                            if ( jQuery.isFunction( this[ match ] ) ) {
      -                                this[ match ]( context[ match ] );
      -
      -                            // ...and otherwise set as attributes
      -                            } else {
      -                                this.attr( match, context[ match ] );
      -                            }
      -                        }
      -                    }
      -
      -                    return this;
      -
      -                // HANDLE: $(#id)
      -                } else {
      -                    elem = document.getElementById( match[2] );
      -
      -                    // Check parentNode to catch when Blackberry 4.6 returns
      -                    // nodes that are no longer in the document #6963
      -                    if ( elem && elem.parentNode ) {
      -                        // Handle the case where IE and Opera return items
      -                        // by name instead of ID
      -                        if ( elem.id !== match[2] ) {
      -                            return rootjQuery.find( selector );
      -                        }
      -
      -                        // Otherwise, we inject the element directly into the jQuery object
      -                        this.length = 1;
      -                        this[0] = elem;
      -                    }
      -
      -                    this.context = document;
      -                    this.selector = selector;
      -                    return this;
      -                }
      -
      -            // HANDLE: $(expr, $(...))
      -            } else if ( !context || context.jquery ) {
      -                return ( context || rootjQuery ).find( selector );
      -
      -            // HANDLE: $(expr, context)
      -            // (which is just equivalent to: $(context).find(expr)
      -            } else {
      -                return this.constructor( context ).find( selector );
      -            }
      -
      -        // HANDLE: $(DOMElement)
      -        } else if ( selector.nodeType ) {
      -            this.context = this[0] = selector;
      -            this.length = 1;
      -            return this;
      -
      -        // HANDLE: $(function)
      -        // Shortcut for document ready
      -        } else if ( jQuery.isFunction( selector ) ) {
      -            return rootjQuery.ready( selector );
      -        }
      -
      -        if ( selector.selector !== undefined ) {
      -            this.selector = selector.selector;
      -            this.context = selector.context;
      -        }
      -
      -        return jQuery.makeArray( selector, this );
      -    },
      -
      -    // Start with an empty selector
      -    selector: "",
      -
      -    // The default length of a jQuery object is 0
      -    length: 0,
      -
      -    // The number of elements contained in the matched element set
      -    size: function() {
      -        return this.length;
      -    },
      -
      -    toArray: function() {
      -        return core_slice.call( this );
      -    },
      -
      -    // Get the Nth element in the matched element set OR
      -    // Get the whole matched element set as a clean array
      -    get: function( num ) {
      -        return num == null ?
      -
      -            // Return a 'clean' array
      -            this.toArray() :
      -
      -            // Return just the object
      -            ( num < 0 ? this[ this.length + num ] : this[ num ] );
      -    },
      -
      -    // Take an array of elements and push it onto the stack
      -    // (returning the new matched element set)
      -    pushStack: function( elems ) {
      -
      -        // Build a new jQuery matched element set
      -        var ret = jQuery.merge( this.constructor(), elems );
      -
      -        // Add the old object onto the stack (as a reference)
      -        ret.prevObject = this;
      -        ret.context = this.context;
      -
      -        // Return the newly-formed element set
      -        return ret;
      -    },
      -
      -    // Execute a callback for every element in the matched set.
      -    // (You can seed the arguments with an array of args, but this is
      -    // only used internally.)
      -    each: function( callback, args ) {
      -        return jQuery.each( this, callback, args );
      -    },
      -
      -    ready: function( fn ) {
      -        // Add the callback
      -        jQuery.ready.promise().done( fn );
      -
      -        return this;
      -    },
      -
      -    slice: function() {
      -        return this.pushStack( core_slice.apply( this, arguments ) );
      -    },
      -
      -    first: function() {
      -        return this.eq( 0 );
      -    },
      -
      -    last: function() {
      -        return this.eq( -1 );
      -    },
      -
      -    eq: function( i ) {
      -        var len = this.length,
      -            j = +i + ( i < 0 ? len : 0 );
      -        return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
      -    },
      -
      -    map: function( callback ) {
      -        return this.pushStack( jQuery.map(this, function( elem, i ) {
      -            return callback.call( elem, i, elem );
      -        }));
      -    },
      -
      -    end: function() {
      -        return this.prevObject || this.constructor(null);
      -    },
      -
      -    // For internal use only.
      -    // Behaves like an Array's method, not like a jQuery method.
      -    push: core_push,
      -    sort: [].sort,
      -    splice: [].splice
      -};
      -
      -// Give the init function the jQuery prototype for later instantiation
      -jQuery.fn.init.prototype = jQuery.fn;
      -
      -jQuery.extend = jQuery.fn.extend = function() {
      -    var src, copyIsArray, copy, name, options, clone,
      -        target = arguments[0] || {},
      -        i = 1,
      -        length = arguments.length,
      -        deep = false;
      -
      -    // Handle a deep copy situation
      -    if ( typeof target === "boolean" ) {
      -        deep = target;
      -        target = arguments[1] || {};
      -        // skip the boolean and the target
      -        i = 2;
      -    }
      -
      -    // Handle case when target is a string or something (possible in deep copy)
      -    if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
      -        target = {};
      -    }
      -
      -    // extend jQuery itself if only one argument is passed
      -    if ( length === i ) {
      -        target = this;
      -        --i;
      -    }
      -
      -    for ( ; i < length; i++ ) {
      -        // Only deal with non-null/undefined values
      -        if ( (options = arguments[ i ]) != null ) {
      -            // Extend the base object
      -            for ( name in options ) {
      -                src = target[ name ];
      -                copy = options[ name ];
      -
      -                // Prevent never-ending loop
      -                if ( target === copy ) {
      -                    continue;
      -                }
      -
      -                // Recurse if we're merging plain objects or arrays
      -                if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
      -                    if ( copyIsArray ) {
      -                        copyIsArray = false;
      -                        clone = src && jQuery.isArray(src) ? src : [];
      -
      -                    } else {
      -                        clone = src && jQuery.isPlainObject(src) ? src : {};
      -                    }
      -
      -                    // Never move original objects, clone them
      -                    target[ name ] = jQuery.extend( deep, clone, copy );
      -
      -                // Don't bring in undefined values
      -                } else if ( copy !== undefined ) {
      -                    target[ name ] = copy;
      -                }
      -            }
      -        }
      -    }
      -
      -    // Return the modified object
      -    return target;
      -};
      -
      -jQuery.extend({
      -    noConflict: function( deep ) {
      -        if ( window.$ === jQuery ) {
      -            window.$ = _$;
      -        }
      -
      -        if ( deep && window.jQuery === jQuery ) {
      -            window.jQuery = _jQuery;
      -        }
      -
      -        return jQuery;
      -    },
      -
      -    // Is the DOM ready to be used? Set to true once it occurs.
      -    isReady: false,
      -
      -    // A counter to track how many items to wait for before
      -    // the ready event fires. See #6781
      -    readyWait: 1,
      -
      -    // Hold (or release) the ready event
      -    holdReady: function( hold ) {
      -        if ( hold ) {
      -            jQuery.readyWait++;
      -        } else {
      -            jQuery.ready( true );
      -        }
      -    },
      -
      -    // Handle when the DOM is ready
      -    ready: function( wait ) {
      -
      -        // Abort if there are pending holds or we're already ready
      -        if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
      -            return;
      -        }
      -
      -        // Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
      -        if ( !document.body ) {
      -            return setTimeout( jQuery.ready );
      -        }
      -
      -        // Remember that the DOM is ready
      -        jQuery.isReady = true;
      -
      -        // If a normal DOM Ready event fired, decrement, and wait if need be
      -        if ( wait !== true && --jQuery.readyWait > 0 ) {
      -            return;
      -        }
      -
      -        // If there are functions bound, to execute
      -        readyList.resolveWith( document, [ jQuery ] );
      -
      -        // Trigger any bound ready events
      -        if ( jQuery.fn.trigger ) {
      -            jQuery( document ).trigger("ready").off("ready");
      -        }
      -    },
      -
      -    // See test/unit/core.js for details concerning isFunction.
      -    // Since version 1.3, DOM methods and functions like alert
      -    // aren't supported. They return false on IE (#2968).
      -    isFunction: function( obj ) {
      -        return jQuery.type(obj) === "function";
      -    },
      -
      -    isArray: Array.isArray || function( obj ) {
      -        return jQuery.type(obj) === "array";
      -    },
      -
      -    isWindow: function( obj ) {
      -        return obj != null && obj == obj.window;
      -    },
      -
      -    isNumeric: function( obj ) {
      -        return !isNaN( parseFloat(obj) ) && isFinite( obj );
      -    },
      -
      -    type: function( obj ) {
      -        if ( obj == null ) {
      -            return String( obj );
      -        }
      -        return typeof obj === "object" || typeof obj === "function" ?
      -            class2type[ core_toString.call(obj) ] || "object" :
      -            typeof obj;
      -    },
      -
      -    isPlainObject: function( obj ) {
      -        // Must be an Object.
      -        // Because of IE, we also have to check the presence of the constructor property.
      -        // Make sure that DOM nodes and window objects don't pass through, as well
      -        if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
      -            return false;
      -        }
      -
      -        try {
      -            // Not own constructor property must be Object
      -            if ( obj.constructor &&
      -                !core_hasOwn.call(obj, "constructor") &&
      -                !core_hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
      -                return false;
      -            }
      -        } catch ( e ) {
      -            // IE8,9 Will throw exceptions on certain host objects #9897
      -            return false;
      -        }
      -
      -        // Own properties are enumerated firstly, so to speed up,
      -        // if last one is own, then all properties are own.
      -
      -        var key;
      -        for ( key in obj ) {}
      -
      -        return key === undefined || core_hasOwn.call( obj, key );
      -    },
      -
      -    isEmptyObject: function( obj ) {
      -        var name;
      -        for ( name in obj ) {
      -            return false;
      -        }
      -        return true;
      -    },
      -
      -    error: function( msg ) {
      -        throw new Error( msg );
      -    },
      -
      -    // data: string of html
      -    // context (optional): If specified, the fragment will be created in this context, defaults to document
      -    // keepScripts (optional): If true, will include scripts passed in the html string
      -    parseHTML: function( data, context, keepScripts ) {
      -        if ( !data || typeof data !== "string" ) {
      -            return null;
      -        }
      -        if ( typeof context === "boolean" ) {
      -            keepScripts = context;
      -            context = false;
      -        }
      -        context = context || document;
      -
      -        var parsed = rsingleTag.exec( data ),
      -            scripts = !keepScripts && [];
      -
      -        // Single tag
      -        if ( parsed ) {
      -            return [ context.createElement( parsed[1] ) ];
      -        }
      -
      -        parsed = jQuery.buildFragment( [ data ], context, scripts );
      -        if ( scripts ) {
      -            jQuery( scripts ).remove();
      -        }
      -        return jQuery.merge( [], parsed.childNodes );
      -    },
      -
      -    parseJSON: function( data ) {
      -        // Attempt to parse using the native JSON parser first
      -        if ( window.JSON && window.JSON.parse ) {
      -            return window.JSON.parse( data );
      -        }
      -
      -        if ( data === null ) {
      -            return data;
      -        }
      -
      -        if ( typeof data === "string" ) {
      -
      -            // Make sure leading/trailing whitespace is removed (IE can't handle it)
      -            data = jQuery.trim( data );
      -
      -            if ( data ) {
      -                // Make sure the incoming data is actual JSON
      -                // Logic borrowed from http://json.org/json2.js
      -                if ( rvalidchars.test( data.replace( rvalidescape, "@" )
      -                    .replace( rvalidtokens, "]" )
      -                    .replace( rvalidbraces, "")) ) {
      -
      -                    return ( new Function( "return " + data ) )();
      -                }
      -            }
      -        }
      -
      -        jQuery.error( "Invalid JSON: " + data );
      -    },
      -
      -    // Cross-browser xml parsing
      -    parseXML: function( data ) {
      -        var xml, tmp;
      -        if ( !data || typeof data !== "string" ) {
      -            return null;
      -        }
      -        try {
      -            if ( window.DOMParser ) { // Standard
      -                tmp = new DOMParser();
      -                xml = tmp.parseFromString( data , "text/xml" );
      -            } else { // IE
      -                xml = new ActiveXObject( "Microsoft.XMLDOM" );
      -                xml.async = "false";
      -                xml.loadXML( data );
      -            }
      -        } catch( e ) {
      -            xml = undefined;
      -        }
      -        if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
      -            jQuery.error( "Invalid XML: " + data );
      -        }
      -        return xml;
      -    },
      -
      -    noop: function() {},
      -
      -    // Evaluates a script in a global context
      -    // Workarounds based on findings by Jim Driscoll
      -    // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
      -    globalEval: function( data ) {
      -        if ( data && jQuery.trim( data ) ) {
      -            // We use execScript on Internet Explorer
      -            // We use an anonymous function so that context is window
      -            // rather than jQuery in Firefox
      -            ( window.execScript || function( data ) {
      -                window[ "eval" ].call( window, data );
      -            } )( data );
      -        }
      -    },
      -
      -    // Convert dashed to camelCase; used by the css and data modules
      -    // Microsoft forgot to hump their vendor prefix (#9572)
      -    camelCase: function( string ) {
      -        return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
      -    },
      -
      -    nodeName: function( elem, name ) {
      -        return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
      -    },
      -
      -    // args is for internal usage only
      -    each: function( obj, callback, args ) {
      -        var value,
      -            i = 0,
      -            length = obj.length,
      -            isArray = isArraylike( obj );
      -
      -        if ( args ) {
      -            if ( isArray ) {
      -                for ( ; i < length; i++ ) {
      -                    value = callback.apply( obj[ i ], args );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            } else {
      -                for ( i in obj ) {
      -                    value = callback.apply( obj[ i ], args );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            }
      -
      -        // A special, fast, case for the most common use of each
      -        } else {
      -            if ( isArray ) {
      -                for ( ; i < length; i++ ) {
      -                    value = callback.call( obj[ i ], i, obj[ i ] );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            } else {
      -                for ( i in obj ) {
      -                    value = callback.call( obj[ i ], i, obj[ i ] );
      -
      -                    if ( value === false ) {
      -                        break;
      -                    }
      -                }
      -            }
      -        }
      -
      -        return obj;
      -    },
      -
      -    // Use native String.trim function wherever possible
      -    trim: core_trim && !core_trim.call("\uFEFF\xA0") ?
      -        function( text ) {
      -            return text == null ?
      -                "" :
      -                core_trim.call( text );
      -        } :
      -
      -        // Otherwise use our own trimming functionality
      -        function( text ) {
      -            return text == null ?
      -                "" :
      -                ( text + "" ).replace( rtrim, "" );
      -        },
      -
      -    // results is for internal usage only
      -    makeArray: function( arr, results ) {
      -        var ret = results || [];
      -
      -        if ( arr != null ) {
      -            if ( isArraylike( Object(arr) ) ) {
      -                jQuery.merge( ret,
      -                    typeof arr === "string" ?
      -                    [ arr ] : arr
      -                );
      -            } else {
      -                core_push.call( ret, arr );
      -            }
      -        }
      -
      -        return ret;
      -    },
      -
      -    inArray: function( elem, arr, i ) {
      -        var len;
      -
      -        if ( arr ) {
      -            if ( core_indexOf ) {
      -                return core_indexOf.call( arr, elem, i );
      -            }
      -
      -            len = arr.length;
      -            i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
      -
      -            for ( ; i < len; i++ ) {
      -                // Skip accessing in sparse arrays
      -                if ( i in arr && arr[ i ] === elem ) {
      -                    return i;
      -                }
      -            }
      -        }
      -
      -        return -1;
      -    },
      -
      -    merge: function( first, second ) {
      -        var l = second.length,
      -            i = first.length,
      -            j = 0;
      -
      -        if ( typeof l === "number" ) {
      -            for ( ; j < l; j++ ) {
      -                first[ i++ ] = second[ j ];
      -            }
      -        } else {
      -            while ( second[j] !== undefined ) {
      -                first[ i++ ] = second[ j++ ];
      -            }
      -        }
      -
      -        first.length = i;
      -
      -        return first;
      -    },
      -
      -    grep: function( elems, callback, inv ) {
      -        var retVal,
      -            ret = [],
      -            i = 0,
      -            length = elems.length;
      -        inv = !!inv;
      -
      -        // Go through the array, only saving the items
      -        // that pass the validator function
      -        for ( ; i < length; i++ ) {
      -            retVal = !!callback( elems[ i ], i );
      -            if ( inv !== retVal ) {
      -                ret.push( elems[ i ] );
      -            }
      -        }
      -
      -        return ret;
      -    },
      -
      -    // arg is for internal usage only
      -    map: function( elems, callback, arg ) {
      -        var value,
      -            i = 0,
      -            length = elems.length,
      -            isArray = isArraylike( elems ),
      -            ret = [];
      -
      -        // Go through the array, translating each of the items to their
      -        if ( isArray ) {
      -            for ( ; i < length; i++ ) {
      -                value = callback( elems[ i ], i, arg );
      -
      -                if ( value != null ) {
      -                    ret[ ret.length ] = value;
      -                }
      -            }
      -
      -        // Go through every key on the object,
      -        } else {
      -            for ( i in elems ) {
      -                value = callback( elems[ i ], i, arg );
      -
      -                if ( value != null ) {
      -                    ret[ ret.length ] = value;
      -                }
      -            }
      -        }
      -
      -        // Flatten any nested arrays
      -        return core_concat.apply( [], ret );
      -    },
      -
      -    // A global GUID counter for objects
      -    guid: 1,
      -
      -    // Bind a function to a context, optionally partially applying any
      -    // arguments.
      -    proxy: function( fn, context ) {
      -        var args, proxy, tmp;
      -
      -        if ( typeof context === "string" ) {
      -            tmp = fn[ context ];
      -            context = fn;
      -            fn = tmp;
      -        }
      -
      -        // Quick check to determine if target is callable, in the spec
      -        // this throws a TypeError, but we will just return undefined.
      -        if ( !jQuery.isFunction( fn ) ) {
      -            return undefined;
      -        }
      -
      -        // Simulated bind
      -        args = core_slice.call( arguments, 2 );
      -        proxy = function() {
      -            return fn.apply( context || this, args.concat( core_slice.call( arguments ) ) );
      -        };
      -
      -        // Set the guid of unique handler to the same of original handler, so it can be removed
      -        proxy.guid = fn.guid = fn.guid || jQuery.guid++;
      -
      -        return proxy;
      -    },
      -
      -    // Multifunctional method to get and set values of a collection
      -    // The value/s can optionally be executed if it's a function
      -    access: function( elems, fn, key, value, chainable, emptyGet, raw ) {
      -        var i = 0,
      -            length = elems.length,
      -            bulk = key == null;
      -
      -        // Sets many values
      -        if ( jQuery.type( key ) === "object" ) {
      -            chainable = true;
      -            for ( i in key ) {
      -                jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
      -            }
      -
      -        // Sets one value
      -        } else if ( value !== undefined ) {
      -            chainable = true;
      -
      -            if ( !jQuery.isFunction( value ) ) {
      -                raw = true;
      -            }
      -
      -            if ( bulk ) {
      -                // Bulk operations run against the entire set
      -                if ( raw ) {
      -                    fn.call( elems, value );
      -                    fn = null;
      -
      -                // ...except when executing function values
      -                } else {
      -                    bulk = fn;
      -                    fn = function( elem, key, value ) {
      -                        return bulk.call( jQuery( elem ), value );
      -                    };
      -                }
      -            }
      -
      -            if ( fn ) {
      -                for ( ; i < length; i++ ) {
      -                    fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
      -                }
      -            }
      -        }
      -
      -        return chainable ?
      -            elems :
      -
      -            // Gets
      -            bulk ?
      -                fn.call( elems ) :
      -                length ? fn( elems[0], key ) : emptyGet;
      -    },
      -
      -    now: function() {
      -        return ( new Date() ).getTime();
      -    }
      -});
      -
      -jQuery.ready.promise = function( obj ) {
      -    if ( !readyList ) {
      -
      -        readyList = jQuery.Deferred();
      -
      -        // Catch cases where $(document).ready() is called after the browser event has already occurred.
      -        // we once tried to use readyState "interactive" here, but it caused issues like the one
      -        // discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
      -        if ( document.readyState === "complete" ) {
      -            // Handle it asynchronously to allow scripts the opportunity to delay ready
      -            setTimeout( jQuery.ready );
      -
      -        // Standards-based browsers support DOMContentLoaded
      -        } else if ( document.addEventListener ) {
      -            // Use the handy event callback
      -            document.addEventListener( "DOMContentLoaded", completed, false );
      -
      -            // A fallback to window.onload, that will always work
      -            window.addEventListener( "load", completed, false );
      -
      -        // If IE event model is used
      -        } else {
      -            // Ensure firing before onload, maybe late but safe also for iframes
      -            document.attachEvent( "onreadystatechange", completed );
      -
      -            // A fallback to window.onload, that will always work
      -            window.attachEvent( "onload", completed );
      -
      -            // If IE and not a frame
      -            // continually check to see if the document is ready
      -            var top = false;
      -
      -            try {
      -                top = window.frameElement == null && document.documentElement;
      -            } catch(e) {}
      -
      -            if ( top && top.doScroll ) {
      -                (function doScrollCheck() {
      -                    if ( !jQuery.isReady ) {
      -
      -                        try {
      -                            // Use the trick by Diego Perini
      -                            // http://javascript.nwbox.com/IEContentLoaded/
      -                            top.doScroll("left");
      -                        } catch(e) {
      -                            return setTimeout( doScrollCheck, 50 );
      -                        }
      -
      -                        // detach all dom ready events
      -                        detach();
      -
      -                        // and execute any waiting functions
      -                        jQuery.ready();
      -                    }
      -                })();
      -            }
      -        }
      -    }
      -    return readyList.promise( obj );
      -};
      -
      -// Populate the class2type map
      -jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
      -    class2type[ "[object " + name + "]" ] = name.toLowerCase();
      -});
      -
      -function isArraylike( obj ) {
      -    var length = obj.length,
      -        type = jQuery.type( obj );
      -
      -    if ( jQuery.isWindow( obj ) ) {
      -        return false;
      -    }
      -
      -    if ( obj.nodeType === 1 && length ) {
      -        return true;
      -    }
      -
      -    return type === "array" || type !== "function" &&
      -        ( length === 0 ||
      -        typeof length === "number" && length > 0 && ( length - 1 ) in obj );
      -}
      -
      -// All jQuery objects should point back to these
      -rootjQuery = jQuery(document);
      -// String to Object options format cache
      -var optionsCache = {};
      -
      -// Convert String-formatted options into Object-formatted ones and store in cache
      -function createOptions( options ) {
      -    var object = optionsCache[ options ] = {};
      -    jQuery.each( options.match( core_rnotwhite ) || [], function( _, flag ) {
      -        object[ flag ] = true;
      -    });
      -    return object;
      -}
      -
      -/*
      - * Create a callback list using the following parameters:
      - *
      - *  options: an optional list of space-separated options that will change how
      - *          the callback list behaves or a more traditional option object
      - *
      - * By default a callback list will act like an event callback list and can be
      - * "fired" multiple times.
      - *
      - * Possible options:
      - *
      - *  once:           will ensure the callback list can only be fired once (like a Deferred)
      - *
      - *  memory:         will keep track of previous values and will call any callback added
      - *                  after the list has been fired right away with the latest "memorized"
      - *                  values (like a Deferred)
      - *
      - *  unique:         will ensure a callback can only be added once (no duplicate in the list)
      - *
      - *  stopOnFalse:    interrupt callings when a callback returns false
      - *
      - */
      -jQuery.Callbacks = function( options ) {
      -
      -    // Convert options from String-formatted to Object-formatted if needed
      -    // (we check in cache first)
      -    options = typeof options === "string" ?
      -        ( optionsCache[ options ] || createOptions( options ) ) :
      -        jQuery.extend( {}, options );
      -
      -    var // Flag to know if list is currently firing
      -        firing,
      -        // Last fire value (for non-forgettable lists)
      -        memory,
      -        // Flag to know if list was already fired
      -        fired,
      -        // End of the loop when firing
      -        firingLength,
      -        // Index of currently firing callback (modified by remove if needed)
      -        firingIndex,
      -        // First callback to fire (used internally by add and fireWith)
      -        firingStart,
      -        // Actual callback list
      -        list = [],
      -        // Stack of fire calls for repeatable lists
      -        stack = !options.once && [],
      -        // Fire callbacks
      -        fire = function( data ) {
      -            memory = options.memory && data;
      -            fired = true;
      -            firingIndex = firingStart || 0;
      -            firingStart = 0;
      -            firingLength = list.length;
      -            firing = true;
      -            for ( ; list && firingIndex < firingLength; firingIndex++ ) {
      -                if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
      -                    memory = false; // To prevent further calls using add
      -                    break;
      -                }
      -            }
      -            firing = false;
      -            if ( list ) {
      -                if ( stack ) {
      -                    if ( stack.length ) {
      -                        fire( stack.shift() );
      -                    }
      -                } else if ( memory ) {
      -                    list = [];
      -                } else {
      -                    self.disable();
      -                }
      -            }
      -        },
      -        // Actual Callbacks object
      -        self = {
      -            // Add a callback or a collection of callbacks to the list
      -            add: function() {
      -                if ( list ) {
      -                    // First, we save the current length
      -                    var start = list.length;
      -                    (function add( args ) {
      -                        jQuery.each( args, function( _, arg ) {
      -                            var type = jQuery.type( arg );
      -                            if ( type === "function" ) {
      -                                if ( !options.unique || !self.has( arg ) ) {
      -                                    list.push( arg );
      -                                }
      -                            } else if ( arg && arg.length && type !== "string" ) {
      -                                // Inspect recursively
      -                                add( arg );
      -                            }
      -                        });
      -                    })( arguments );
      -                    // Do we need to add the callbacks to the
      -                    // current firing batch?
      -                    if ( firing ) {
      -                        firingLength = list.length;
      -                    // With memory, if we're not firing then
      -                    // we should call right away
      -                    } else if ( memory ) {
      -                        firingStart = start;
      -                        fire( memory );
      -                    }
      -                }
      -                return this;
      -            },
      -            // Remove a callback from the list
      -            remove: function() {
      -                if ( list ) {
      -                    jQuery.each( arguments, function( _, arg ) {
      -                        var index;
      -                        while( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
      -                            list.splice( index, 1 );
      -                            // Handle firing indexes
      -                            if ( firing ) {
      -                                if ( index <= firingLength ) {
      -                                    firingLength--;
      -                                }
      -                                if ( index <= firingIndex ) {
      -                                    firingIndex--;
      -                                }
      -                            }
      -                        }
      -                    });
      -                }
      -                return this;
      -            },
      -            // Check if a given callback is in the list.
      -            // If no argument is given, return whether or not list has callbacks attached.
      -            has: function( fn ) {
      -                return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
      -            },
      -            // Remove all callbacks from the list
      -            empty: function() {
      -                list = [];
      -                return this;
      -            },
      -            // Have the list do nothing anymore
      -            disable: function() {
      -                list = stack = memory = undefined;
      -                return this;
      -            },
      -            // Is it disabled?
      -            disabled: function() {
      -                return !list;
      -            },
      -            // Lock the list in its current state
      -            lock: function() {
      -                stack = undefined;
      -                if ( !memory ) {
      -                    self.disable();
      -                }
      -                return this;
      -            },
      -            // Is it locked?
      -            locked: function() {
      -                return !stack;
      -            },
      -            // Call all callbacks with the given context and arguments
      -            fireWith: function( context, args ) {
      -                args = args || [];
      -                args = [ context, args.slice ? args.slice() : args ];
      -                if ( list && ( !fired || stack ) ) {
      -                    if ( firing ) {
      -                        stack.push( args );
      -                    } else {
      -                        fire( args );
      -                    }
      -                }
      -                return this;
      -            },
      -            // Call all the callbacks with the given arguments
      -            fire: function() {
      -                self.fireWith( this, arguments );
      -                return this;
      -            },
      -            // To know if the callbacks have already been called at least once
      -            fired: function() {
      -                return !!fired;
      -            }
      -        };
      -
      -    return self;
      -};
      -jQuery.extend({
      -
      -    Deferred: function( func ) {
      -        var tuples = [
      -                // action, add listener, listener list, final state
      -                [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
      -                [ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
      -                [ "notify", "progress", jQuery.Callbacks("memory") ]
      -            ],
      -            state = "pending",
      -            promise = {
      -                state: function() {
      -                    return state;
      -                },
      -                always: function() {
      -                    deferred.done( arguments ).fail( arguments );
      -                    return this;
      -                },
      -                then: function( /* fnDone, fnFail, fnProgress */ ) {
      -                    var fns = arguments;
      -                    return jQuery.Deferred(function( newDefer ) {
      -                        jQuery.each( tuples, function( i, tuple ) {
      -                            var action = tuple[ 0 ],
      -                                fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
      -                            // deferred[ done | fail | progress ] for forwarding actions to newDefer
      -                            deferred[ tuple[1] ](function() {
      -                                var returned = fn && fn.apply( this, arguments );
      -                                if ( returned && jQuery.isFunction( returned.promise ) ) {
      -                                    returned.promise()
      -                                        .done( newDefer.resolve )
      -                                        .fail( newDefer.reject )
      -                                        .progress( newDefer.notify );
      -                                } else {
      -                                    newDefer[ action + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
      -                                }
      -                            });
      -                        });
      -                        fns = null;
      -                    }).promise();
      -                },
      -                // Get a promise for this deferred
      -                // If obj is provided, the promise aspect is added to the object
      -                promise: function( obj ) {
      -                    return obj != null ? jQuery.extend( obj, promise ) : promise;
      -                }
      -            },
      -            deferred = {};
      -
      -        // Keep pipe for back-compat
      -        promise.pipe = promise.then;
      -
      -        // Add list-specific methods
      -        jQuery.each( tuples, function( i, tuple ) {
      -            var list = tuple[ 2 ],
      -                stateString = tuple[ 3 ];
      -
      -            // promise[ done | fail | progress ] = list.add
      -            promise[ tuple[1] ] = list.add;
      -
      -            // Handle state
      -            if ( stateString ) {
      -                list.add(function() {
      -                    // state = [ resolved | rejected ]
      -                    state = stateString;
      -
      -                // [ reject_list | resolve_list ].disable; progress_list.lock
      -                }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
      -            }
      -
      -            // deferred[ resolve | reject | notify ]
      -            deferred[ tuple[0] ] = function() {
      -                deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
      -                return this;
      -            };
      -            deferred[ tuple[0] + "With" ] = list.fireWith;
      -        });
      -
      -        // Make the deferred a promise
      -        promise.promise( deferred );
      -
      -        // Call given func if any
      -        if ( func ) {
      -            func.call( deferred, deferred );
      -        }
      -
      -        // All done!
      -        return deferred;
      -    },
      -
      -    // Deferred helper
      -    when: function( subordinate /* , ..., subordinateN */ ) {
      -        var i = 0,
      -            resolveValues = core_slice.call( arguments ),
      -            length = resolveValues.length,
      -
      -            // the count of uncompleted subordinates
      -            remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
      -
      -            // the master Deferred. If resolveValues consist of only a single Deferred, just use that.
      -            deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
      -
      -            // Update function for both resolve and progress values
      -            updateFunc = function( i, contexts, values ) {
      -                return function( value ) {
      -                    contexts[ i ] = this;
      -                    values[ i ] = arguments.length > 1 ? core_slice.call( arguments ) : value;
      -                    if( values === progressValues ) {
      -                        deferred.notifyWith( contexts, values );
      -                    } else if ( !( --remaining ) ) {
      -                        deferred.resolveWith( contexts, values );
      -                    }
      -                };
      -            },
      -
      -            progressValues, progressContexts, resolveContexts;
      -
      -        // add listeners to Deferred subordinates; treat others as resolved
      -        if ( length > 1 ) {
      -            progressValues = new Array( length );
      -            progressContexts = new Array( length );
      -            resolveContexts = new Array( length );
      -            for ( ; i < length; i++ ) {
      -                if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
      -                    resolveValues[ i ].promise()
      -                        .done( updateFunc( i, resolveContexts, resolveValues ) )
      -                        .fail( deferred.reject )
      -                        .progress( updateFunc( i, progressContexts, progressValues ) );
      -                } else {
      -                    --remaining;
      -                }
      -            }
      -        }
      -
      -        // if we're not waiting on anything, resolve the master
      -        if ( !remaining ) {
      -            deferred.resolveWith( resolveContexts, resolveValues );
      -        }
      -
      -        return deferred.promise();
      -    }
      -});
      -jQuery.support = (function() {
      -
      -    var support, all, a,
      -        input, select, fragment,
      -        opt, eventName, isSupported, i,
      -        div = document.createElement("div");
      -
      -    // Setup
      -    div.setAttribute( "className", "t" );
      -    div.innerHTML = "  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";
      -
      -    // Support tests won't run in some limited or non-browser environments
      -    all = div.getElementsByTagName("*");
      -    a = div.getElementsByTagName("a")[ 0 ];
      -    if ( !all || !a || !all.length ) {
      -        return {};
      -    }
      -
      -    // First batch of tests
      -    select = document.createElement("select");
      -    opt = select.appendChild( document.createElement("option") );
      -    input = div.getElementsByTagName("input")[ 0 ];
      -
      -    a.style.cssText = "top:1px;float:left;opacity:.5";
      -    support = {
      -        // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
      -        getSetAttribute: div.className !== "t",
      -
      -        // IE strips leading whitespace when .innerHTML is used
      -        leadingWhitespace: div.firstChild.nodeType === 3,
      -
      -        // Make sure that tbody elements aren't automatically inserted
      -        // IE will insert them into empty tables
      -        tbody: !div.getElementsByTagName("tbody").length,
      -
      -        // Make sure that link elements get serialized correctly by innerHTML
      -        // This requires a wrapper element in IE
      -        htmlSerialize: !!div.getElementsByTagName("link").length,
      -
      -        // Get the style information from getAttribute
      -        // (IE uses .cssText instead)
      -        style: /top/.test( a.getAttribute("style") ),
      -
      -        // Make sure that URLs aren't manipulated
      -        // (IE normalizes it by default)
      -        hrefNormalized: a.getAttribute("href") === "/a",
      -
      -        // Make sure that element opacity exists
      -        // (IE uses filter instead)
      -        // Use a regex to work around a WebKit issue. See #5145
      -        opacity: /^0.5/.test( a.style.opacity ),
      -
      -        // Verify style float existence
      -        // (IE uses styleFloat instead of cssFloat)
      -        cssFloat: !!a.style.cssFloat,
      -
      -        // Check the default checkbox/radio value ("" on WebKit; "on" elsewhere)
      -        checkOn: !!input.value,
      -
      -        // Make sure that a selected-by-default option has a working selected property.
      -        // (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
      -        optSelected: opt.selected,
      -
      -        // Tests for enctype support on a form (#6743)
      -        enctype: !!document.createElement("form").enctype,
      -
      -        // Makes sure cloning an html5 element does not cause problems
      -        // Where outerHTML is undefined, this still works
      -        html5Clone: document.createElement("nav").cloneNode( true ).outerHTML !== "<:nav></:nav>",
      -
      -        // jQuery.support.boxModel DEPRECATED in 1.8 since we don't support Quirks Mode
      -        boxModel: document.compatMode === "CSS1Compat",
      -
      -        // Will be defined later
      -        deleteExpando: true,
      -        noCloneEvent: true,
      -        inlineBlockNeedsLayout: false,
      -        shrinkWrapBlocks: false,
      -        reliableMarginRight: true,
      -        boxSizingReliable: true,
      -        pixelPosition: false
      -    };
      -
      -    // Make sure checked status is properly cloned
      -    input.checked = true;
      -    support.noCloneChecked = input.cloneNode( true ).checked;
      -
      -    // Make sure that the options inside disabled selects aren't marked as disabled
      -    // (WebKit marks them as disabled)
      -    select.disabled = true;
      -    support.optDisabled = !opt.disabled;
      -
      -    // Support: IE<9
      -    try {
      -        delete div.test;
      -    } catch( e ) {
      -        support.deleteExpando = false;
      -    }
      -
      -    // Check if we can trust getAttribute("value")
      -    input = document.createElement("input");
      -    input.setAttribute( "value", "" );
      -    support.input = input.getAttribute( "value" ) === "";
      -
      -    // Check if an input maintains its value after becoming a radio
      -    input.value = "t";
      -    input.setAttribute( "type", "radio" );
      -    support.radioValue = input.value === "t";
      -
      -    // #11217 - WebKit loses check when the name is after the checked attribute
      -    input.setAttribute( "checked", "t" );
      -    input.setAttribute( "name", "t" );
      -
      -    fragment = document.createDocumentFragment();
      -    fragment.appendChild( input );
      -
      -    // Check if a disconnected checkbox will retain its checked
      -    // value of true after appended to the DOM (IE6/7)
      -    support.appendChecked = input.checked;
      -
      -    // WebKit doesn't clone checked state correctly in fragments
      -    support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
      -
      -    // Support: IE<9
      -    // Opera does not clone events (and typeof div.attachEvent === undefined).
      -    // IE9-10 clones events bound via attachEvent, but they don't trigger with .click()
      -    if ( div.attachEvent ) {
      -        div.attachEvent( "onclick", function() {
      -            support.noCloneEvent = false;
      -        });
      -
      -        div.cloneNode( true ).click();
      -    }
      -
      -    // Support: IE<9 (lack submit/change bubble), Firefox 17+ (lack focusin event)
      -    // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP), test/csp.php
      -    for ( i in { submit: true, change: true, focusin: true }) {
      -        div.setAttribute( eventName = "on" + i, "t" );
      -
      -        support[ i + "Bubbles" ] = eventName in window || div.attributes[ eventName ].expando === false;
      -    }
      -
      -    div.style.backgroundClip = "content-box";
      -    div.cloneNode( true ).style.backgroundClip = "";
      -    support.clearCloneStyle = div.style.backgroundClip === "content-box";
      -
      -    // Run tests that need a body at doc ready
      -    jQuery(function() {
      -        var container, marginDiv, tds,
      -            divReset = "padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",
      -            body = document.getElementsByTagName("body")[0];
      -
      -        if ( !body ) {
      -            // Return for frameset docs that don't have a body
      -            return;
      -        }
      -
      -        container = document.createElement("div");
      -        container.style.cssText = "border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px";
      -
      -        body.appendChild( container ).appendChild( div );
      -
      -        // Support: IE8
      -        // Check if table cells still have offsetWidth/Height when they are set
      -        // to display:none and there are still other visible table cells in a
      -        // table row; if so, offsetWidth/Height are not reliable for use when
      -        // determining if an element has been hidden directly using
      -        // display:none (it is still safe to use offsets if a parent element is
      -        // hidden; don safety goggles and see bug #4512 for more information).
      -        div.innerHTML = "<table><tr><td></td><td>t</td></tr></table>";
      -        tds = div.getElementsByTagName("td");
      -        tds[ 0 ].style.cssText = "padding:0;margin:0;border:0;display:none";
      -        isSupported = ( tds[ 0 ].offsetHeight === 0 );
      -
      -        tds[ 0 ].style.display = "";
      -        tds[ 1 ].style.display = "none";
      -
      -        // Support: IE8
      -        // Check if empty table cells still have offsetWidth/Height
      -        support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
      -
      -        // Check box-sizing and margin behavior
      -        div.innerHTML = "";
      -        div.style.cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;";
      -        support.boxSizing = ( div.offsetWidth === 4 );
      -        support.doesNotIncludeMarginInBodyOffset = ( body.offsetTop !== 1 );
      -
      -        // Use window.getComputedStyle because jsdom on node.js will break without it.
      -        if ( window.getComputedStyle ) {
      -            support.pixelPosition = ( window.getComputedStyle( div, null ) || {} ).top !== "1%";
      -            support.boxSizingReliable = ( window.getComputedStyle( div, null ) || { width: "4px" } ).width === "4px";
      -
      -            // Check if div with explicit width and no margin-right incorrectly
      -            // gets computed margin-right based on width of container. (#3333)
      -            // Fails in WebKit before Feb 2011 nightlies
      -            // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -            marginDiv = div.appendChild( document.createElement("div") );
      -            marginDiv.style.cssText = div.style.cssText = divReset;
      -            marginDiv.style.marginRight = marginDiv.style.width = "0";
      -            div.style.width = "1px";
      -
      -            support.reliableMarginRight =
      -                !parseFloat( ( window.getComputedStyle( marginDiv, null ) || {} ).marginRight );
      -        }
      -
      -        if ( typeof div.style.zoom !== core_strundefined ) {
      -            // Support: IE<8
      -            // Check if natively block-level elements act like inline-block
      -            // elements when setting their display to 'inline' and giving
      -            // them layout
      -            div.innerHTML = "";
      -            div.style.cssText = divReset + "width:1px;padding:1px;display:inline;zoom:1";
      -            support.inlineBlockNeedsLayout = ( div.offsetWidth === 3 );
      -
      -            // Support: IE6
      -            // Check if elements with layout shrink-wrap their children
      -            div.style.display = "block";
      -            div.innerHTML = "<div></div>";
      -            div.firstChild.style.width = "5px";
      -            support.shrinkWrapBlocks = ( div.offsetWidth !== 3 );
      -
      -            if ( support.inlineBlockNeedsLayout ) {
      -                // Prevent IE 6 from affecting layout for positioned elements #11048
      -                // Prevent IE from shrinking the body in IE 7 mode #12869
      -                // Support: IE<8
      -                body.style.zoom = 1;
      -            }
      -        }
      -
      -        body.removeChild( container );
      -
      -        // Null elements to avoid leaks in IE
      -        container = div = tds = marginDiv = null;
      -    });
      -
      -    // Null elements to avoid leaks in IE
      -    all = select = fragment = opt = a = input = null;
      -
      -    return support;
      -})();
      -
      -var rbrace = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/,
      -    rmultiDash = /([A-Z])/g;
      -
      -function internalData( elem, name, data, pvt /* Internal Use Only */ ){
      -    if ( !jQuery.acceptData( elem ) ) {
      -        return;
      -    }
      -
      -    var thisCache, ret,
      -        internalKey = jQuery.expando,
      -        getByName = typeof name === "string",
      -
      -        // We have to handle DOM nodes and JS objects differently because IE6-7
      -        // can't GC object references properly across the DOM-JS boundary
      -        isNode = elem.nodeType,
      -
      -        // Only DOM nodes need the global jQuery cache; JS object data is
      -        // attached directly to the object so GC can occur automatically
      -        cache = isNode ? jQuery.cache : elem,
      -
      -        // Only defining an ID for JS objects if its cache already exists allows
      -        // the code to shortcut on the same path as a DOM node with no cache
      -        id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey;
      -
      -    // Avoid doing any more work than we need to when trying to get data on an
      -    // object that has no data at all
      -    if ( (!id || !cache[id] || (!pvt && !cache[id].data)) && getByName && data === undefined ) {
      -        return;
      -    }
      -
      -    if ( !id ) {
      -        // Only DOM nodes need a new unique ID for each element since their data
      -        // ends up in the global cache
      -        if ( isNode ) {
      -            elem[ internalKey ] = id = core_deletedIds.pop() || jQuery.guid++;
      -        } else {
      -            id = internalKey;
      -        }
      -    }
      -
      -    if ( !cache[ id ] ) {
      -        cache[ id ] = {};
      -
      -        // Avoids exposing jQuery metadata on plain JS objects when the object
      -        // is serialized using JSON.stringify
      -        if ( !isNode ) {
      -            cache[ id ].toJSON = jQuery.noop;
      -        }
      -    }
      -
      -    // An object can be passed to jQuery.data instead of a key/value pair; this gets
      -    // shallow copied over onto the existing cache
      -    if ( typeof name === "object" || typeof name === "function" ) {
      -        if ( pvt ) {
      -            cache[ id ] = jQuery.extend( cache[ id ], name );
      -        } else {
      -            cache[ id ].data = jQuery.extend( cache[ id ].data, name );
      -        }
      -    }
      -
      -    thisCache = cache[ id ];
      -
      -    // jQuery data() is stored in a separate object inside the object's internal data
      -    // cache in order to avoid key collisions between internal data and user-defined
      -    // data.
      -    if ( !pvt ) {
      -        if ( !thisCache.data ) {
      -            thisCache.data = {};
      -        }
      -
      -        thisCache = thisCache.data;
      -    }
      -
      -    if ( data !== undefined ) {
      -        thisCache[ jQuery.camelCase( name ) ] = data;
      -    }
      -
      -    // Check for both converted-to-camel and non-converted data property names
      -    // If a data property was specified
      -    if ( getByName ) {
      -
      -        // First Try to find as-is property data
      -        ret = thisCache[ name ];
      -
      -        // Test for null|undefined property data
      -        if ( ret == null ) {
      -
      -            // Try to find the camelCased property
      -            ret = thisCache[ jQuery.camelCase( name ) ];
      -        }
      -    } else {
      -        ret = thisCache;
      -    }
      -
      -    return ret;
      -}
      -
      -function internalRemoveData( elem, name, pvt ) {
      -    if ( !jQuery.acceptData( elem ) ) {
      -        return;
      -    }
      -
      -    var i, l, thisCache,
      -        isNode = elem.nodeType,
      -
      -        // See jQuery.data for more information
      -        cache = isNode ? jQuery.cache : elem,
      -        id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
      -
      -    // If there is already no cache entry for this object, there is no
      -    // purpose in continuing
      -    if ( !cache[ id ] ) {
      -        return;
      -    }
      -
      -    if ( name ) {
      -
      -        thisCache = pvt ? cache[ id ] : cache[ id ].data;
      -
      -        if ( thisCache ) {
      -
      -            // Support array or space separated string names for data keys
      -            if ( !jQuery.isArray( name ) ) {
      -
      -                // try the string as a key before any manipulation
      -                if ( name in thisCache ) {
      -                    name = [ name ];
      -                } else {
      -
      -                    // split the camel cased version by spaces unless a key with the spaces exists
      -                    name = jQuery.camelCase( name );
      -                    if ( name in thisCache ) {
      -                        name = [ name ];
      -                    } else {
      -                        name = name.split(" ");
      -                    }
      -                }
      -            } else {
      -                // If "name" is an array of keys...
      -                // When data is initially created, via ("key", "val") signature,
      -                // keys will be converted to camelCase.
      -                // Since there is no way to tell _how_ a key was added, remove
      -                // both plain key and camelCase key. #12786
      -                // This will only penalize the array argument path.
      -                name = name.concat( jQuery.map( name, jQuery.camelCase ) );
      -            }
      -
      -            for ( i = 0, l = name.length; i < l; i++ ) {
      -                delete thisCache[ name[i] ];
      -            }
      -
      -            // If there is no data left in the cache, we want to continue
      -            // and let the cache object itself get destroyed
      -            if ( !( pvt ? isEmptyDataObject : jQuery.isEmptyObject )( thisCache ) ) {
      -                return;
      -            }
      -        }
      -    }
      -
      -    // See jQuery.data for more information
      -    if ( !pvt ) {
      -        delete cache[ id ].data;
      -
      -        // Don't destroy the parent cache unless the internal data object
      -        // had been the only thing left in it
      -        if ( !isEmptyDataObject( cache[ id ] ) ) {
      -            return;
      -        }
      -    }
      -
      -    // Destroy the cache
      -    if ( isNode ) {
      -        jQuery.cleanData( [ elem ], true );
      -
      -    // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080)
      -    } else if ( jQuery.support.deleteExpando || cache != cache.window ) {
      -        delete cache[ id ];
      -
      -    // When all else fails, null
      -    } else {
      -        cache[ id ] = null;
      -    }
      -}
      -
      -jQuery.extend({
      -    cache: {},
      -
      -    // Unique for each copy of jQuery on the page
      -    // Non-digits removed to match rinlinejQuery
      -    expando: "jQuery" + ( core_version + Math.random() ).replace( /\D/g, "" ),
      -
      -    // The following elements throw uncatchable exceptions if you
      -    // attempt to add expando properties to them.
      -    noData: {
      -        "embed": true,
      -        // Ban all objects except for Flash (which handle expandos)
      -        "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
      -        "applet": true
      -    },
      -
      -    hasData: function( elem ) {
      -        elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
      -        return !!elem && !isEmptyDataObject( elem );
      -    },
      -
      -    data: function( elem, name, data ) {
      -        return internalData( elem, name, data );
      -    },
      -
      -    removeData: function( elem, name ) {
      -        return internalRemoveData( elem, name );
      -    },
      -
      -    // For internal use only.
      -    _data: function( elem, name, data ) {
      -        return internalData( elem, name, data, true );
      -    },
      -
      -    _removeData: function( elem, name ) {
      -        return internalRemoveData( elem, name, true );
      -    },
      -
      -    // A method for determining if a DOM node can handle the data expando
      -    acceptData: function( elem ) {
      -        // Do not set data on non-element because it will not be cleared (#8335).
      -        if ( elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9 ) {
      -            return false;
      -        }
      -
      -        var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
      -
      -        // nodes accept data unless otherwise specified; rejection can be conditional
      -        return !noData || noData !== true && elem.getAttribute("classid") === noData;
      -    }
      -});
      -
      -jQuery.fn.extend({
      -    data: function( key, value ) {
      -        var attrs, name,
      -            elem = this[0],
      -            i = 0,
      -            data = null;
      -
      -        // Gets all values
      -        if ( key === undefined ) {
      -            if ( this.length ) {
      -                data = jQuery.data( elem );
      -
      -                if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) {
      -                    attrs = elem.attributes;
      -                    for ( ; i < attrs.length; i++ ) {
      -                        name = attrs[i].name;
      -
      -                        if ( !name.indexOf( "data-" ) ) {
      -                            name = jQuery.camelCase( name.slice(5) );
      -
      -                            dataAttr( elem, name, data[ name ] );
      -                        }
      -                    }
      -                    jQuery._data( elem, "parsedAttrs", true );
      -                }
      -            }
      -
      -            return data;
      -        }
      -
      -        // Sets multiple values
      -        if ( typeof key === "object" ) {
      -            return this.each(function() {
      -                jQuery.data( this, key );
      -            });
      -        }
      -
      -        return jQuery.access( this, function( value ) {
      -
      -            if ( value === undefined ) {
      -                // Try to fetch any internally stored data first
      -                return elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : null;
      -            }
      -
      -            this.each(function() {
      -                jQuery.data( this, key, value );
      -            });
      -        }, null, value, arguments.length > 1, null, true );
      -    },
      -
      -    removeData: function( key ) {
      -        return this.each(function() {
      -            jQuery.removeData( this, key );
      -        });
      -    }
      -});
      -
      -function dataAttr( elem, key, data ) {
      -    // If nothing was found internally, try to fetch any
      -    // data from the HTML5 data-* attribute
      -    if ( data === undefined && elem.nodeType === 1 ) {
      -
      -        var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
      -
      -        data = elem.getAttribute( name );
      -
      -        if ( typeof data === "string" ) {
      -            try {
      -                data = data === "true" ? true :
      -                    data === "false" ? false :
      -                    data === "null" ? null :
      -                    // Only convert to a number if it doesn't change the string
      -                    +data + "" === data ? +data :
      -                    rbrace.test( data ) ? jQuery.parseJSON( data ) :
      -                        data;
      -            } catch( e ) {}
      -
      -            // Make sure we set the data so it isn't changed later
      -            jQuery.data( elem, key, data );
      -
      -        } else {
      -            data = undefined;
      -        }
      -    }
      -
      -    return data;
      -}
      -
      -// checks a cache object for emptiness
      -function isEmptyDataObject( obj ) {
      -    var name;
      -    for ( name in obj ) {
      -
      -        // if the public data object is empty, the private is still empty
      -        if ( name === "data" && jQuery.isEmptyObject( obj[name] ) ) {
      -            continue;
      -        }
      -        if ( name !== "toJSON" ) {
      -            return false;
      -        }
      -    }
      -
      -    return true;
      -}
      -jQuery.extend({
      -    queue: function( elem, type, data ) {
      -        var queue;
      -
      -        if ( elem ) {
      -            type = ( type || "fx" ) + "queue";
      -            queue = jQuery._data( elem, type );
      -
      -            // Speed up dequeue by getting out quickly if this is just a lookup
      -            if ( data ) {
      -                if ( !queue || jQuery.isArray(data) ) {
      -                    queue = jQuery._data( elem, type, jQuery.makeArray(data) );
      -                } else {
      -                    queue.push( data );
      -                }
      -            }
      -            return queue || [];
      -        }
      -    },
      -
      -    dequeue: function( elem, type ) {
      -        type = type || "fx";
      -
      -        var queue = jQuery.queue( elem, type ),
      -            startLength = queue.length,
      -            fn = queue.shift(),
      -            hooks = jQuery._queueHooks( elem, type ),
      -            next = function() {
      -                jQuery.dequeue( elem, type );
      -            };
      -
      -        // If the fx queue is dequeued, always remove the progress sentinel
      -        if ( fn === "inprogress" ) {
      -            fn = queue.shift();
      -            startLength--;
      -        }
      -
      -        hooks.cur = fn;
      -        if ( fn ) {
      -
      -            // Add a progress sentinel to prevent the fx queue from being
      -            // automatically dequeued
      -            if ( type === "fx" ) {
      -                queue.unshift( "inprogress" );
      -            }
      -
      -            // clear up the last queue stop function
      -            delete hooks.stop;
      -            fn.call( elem, next, hooks );
      -        }
      -
      -        if ( !startLength && hooks ) {
      -            hooks.empty.fire();
      -        }
      -    },
      -
      -    // not intended for public consumption - generates a queueHooks object, or returns the current one
      -    _queueHooks: function( elem, type ) {
      -        var key = type + "queueHooks";
      -        return jQuery._data( elem, key ) || jQuery._data( elem, key, {
      -            empty: jQuery.Callbacks("once memory").add(function() {
      -                jQuery._removeData( elem, type + "queue" );
      -                jQuery._removeData( elem, key );
      -            })
      -        });
      -    }
      -});
      -
      -jQuery.fn.extend({
      -    queue: function( type, data ) {
      -        var setter = 2;
      -
      -        if ( typeof type !== "string" ) {
      -            data = type;
      -            type = "fx";
      -            setter--;
      -        }
      -
      -        if ( arguments.length < setter ) {
      -            return jQuery.queue( this[0], type );
      -        }
      -
      -        return data === undefined ?
      -            this :
      -            this.each(function() {
      -                var queue = jQuery.queue( this, type, data );
      -
      -                // ensure a hooks for this queue
      -                jQuery._queueHooks( this, type );
      -
      -                if ( type === "fx" && queue[0] !== "inprogress" ) {
      -                    jQuery.dequeue( this, type );
      -                }
      -            });
      -    },
      -    dequeue: function( type ) {
      -        return this.each(function() {
      -            jQuery.dequeue( this, type );
      -        });
      -    },
      -    // Based off of the plugin by Clint Helfers, with permission.
      -    // http://blindsignals.com/index.php/2009/07/jquery-delay/
      -    delay: function( time, type ) {
      -        time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
      -        type = type || "fx";
      -
      -        return this.queue( type, function( next, hooks ) {
      -            var timeout = setTimeout( next, time );
      -            hooks.stop = function() {
      -                clearTimeout( timeout );
      -            };
      -        });
      -    },
      -    clearQueue: function( type ) {
      -        return this.queue( type || "fx", [] );
      -    },
      -    // Get a promise resolved when queues of a certain type
      -    // are emptied (fx is the type by default)
      -    promise: function( type, obj ) {
      -        var tmp,
      -            count = 1,
      -            defer = jQuery.Deferred(),
      -            elements = this,
      -            i = this.length,
      -            resolve = function() {
      -                if ( !( --count ) ) {
      -                    defer.resolveWith( elements, [ elements ] );
      -                }
      -            };
      -
      -        if ( typeof type !== "string" ) {
      -            obj = type;
      -            type = undefined;
      -        }
      -        type = type || "fx";
      -
      -        while( i-- ) {
      -            tmp = jQuery._data( elements[ i ], type + "queueHooks" );
      -            if ( tmp && tmp.empty ) {
      -                count++;
      -                tmp.empty.add( resolve );
      -            }
      -        }
      -        resolve();
      -        return defer.promise( obj );
      -    }
      -});
      -var nodeHook, boolHook,
      -    rclass = /[\t\r\n]/g,
      -    rreturn = /\r/g,
      -    rfocusable = /^(?:input|select|textarea|button|object)$/i,
      -    rclickable = /^(?:a|area)$/i,
      -    rboolean = /^(?:checked|selected|autofocus|autoplay|async|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped)$/i,
      -    ruseDefault = /^(?:checked|selected)$/i,
      -    getSetAttribute = jQuery.support.getSetAttribute,
      -    getSetInput = jQuery.support.input;
      -
      -jQuery.fn.extend({
      -    attr: function( name, value ) {
      -        return jQuery.access( this, jQuery.attr, name, value, arguments.length > 1 );
      -    },
      -
      -    removeAttr: function( name ) {
      -        return this.each(function() {
      -            jQuery.removeAttr( this, name );
      -        });
      -    },
      -
      -    prop: function( name, value ) {
      -        return jQuery.access( this, jQuery.prop, name, value, arguments.length > 1 );
      -    },
      -
      -    removeProp: function( name ) {
      -        name = jQuery.propFix[ name ] || name;
      -        return this.each(function() {
      -            // try/catch handles cases where IE balks (such as removing a property on window)
      -            try {
      -                this[ name ] = undefined;
      -                delete this[ name ];
      -            } catch( e ) {}
      -        });
      -    },
      -
      -    addClass: function( value ) {
      -        var classes, elem, cur, clazz, j,
      -            i = 0,
      -            len = this.length,
      -            proceed = typeof value === "string" && value;
      -
      -        if ( jQuery.isFunction( value ) ) {
      -            return this.each(function( j ) {
      -                jQuery( this ).addClass( value.call( this, j, this.className ) );
      -            });
      -        }
      -
      -        if ( proceed ) {
      -            // The disjunction here is for better compressibility (see removeClass)
      -            classes = ( value || "" ).match( core_rnotwhite ) || [];
      -
      -            for ( ; i < len; i++ ) {
      -                elem = this[ i ];
      -                cur = elem.nodeType === 1 && ( elem.className ?
      -                    ( " " + elem.className + " " ).replace( rclass, " " ) :
      -                    " "
      -                );
      -
      -                if ( cur ) {
      -                    j = 0;
      -                    while ( (clazz = classes[j++]) ) {
      -                        if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
      -                            cur += clazz + " ";
      -                        }
      -                    }
      -                    elem.className = jQuery.trim( cur );
      -
      -                }
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    removeClass: function( value ) {
      -        var classes, elem, cur, clazz, j,
      -            i = 0,
      -            len = this.length,
      -            proceed = arguments.length === 0 || typeof value === "string" && value;
      -
      -        if ( jQuery.isFunction( value ) ) {
      -            return this.each(function( j ) {
      -                jQuery( this ).removeClass( value.call( this, j, this.className ) );
      -            });
      -        }
      -        if ( proceed ) {
      -            classes = ( value || "" ).match( core_rnotwhite ) || [];
      -
      -            for ( ; i < len; i++ ) {
      -                elem = this[ i ];
      -                // This expression is here for better compressibility (see addClass)
      -                cur = elem.nodeType === 1 && ( elem.className ?
      -                    ( " " + elem.className + " " ).replace( rclass, " " ) :
      -                    ""
      -                );
      -
      -                if ( cur ) {
      -                    j = 0;
      -                    while ( (clazz = classes[j++]) ) {
      -                        // Remove *all* instances
      -                        while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
      -                            cur = cur.replace( " " + clazz + " ", " " );
      -                        }
      -                    }
      -                    elem.className = value ? jQuery.trim( cur ) : "";
      -                }
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    toggleClass: function( value, stateVal ) {
      -        var type = typeof value,
      -            isBool = typeof stateVal === "boolean";
      -
      -        if ( jQuery.isFunction( value ) ) {
      -            return this.each(function( i ) {
      -                jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
      -            });
      -        }
      -
      -        return this.each(function() {
      -            if ( type === "string" ) {
      -                // toggle individual class names
      -                var className,
      -                    i = 0,
      -                    self = jQuery( this ),
      -                    state = stateVal,
      -                    classNames = value.match( core_rnotwhite ) || [];
      -
      -                while ( (className = classNames[ i++ ]) ) {
      -                    // check each className given, space separated list
      -                    state = isBool ? state : !self.hasClass( className );
      -                    self[ state ? "addClass" : "removeClass" ]( className );
      -                }
      -
      -            // Toggle whole class name
      -            } else if ( type === core_strundefined || type === "boolean" ) {
      -                if ( this.className ) {
      -                    // store className if set
      -                    jQuery._data( this, "__className__", this.className );
      -                }
      -
      -                // If the element has a class name or if we're passed "false",
      -                // then remove the whole classname (if there was one, the above saved it).
      -                // Otherwise bring back whatever was previously saved (if anything),
      -                // falling back to the empty string if nothing was stored.
      -                this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
      -            }
      -        });
      -    },
      -
      -    hasClass: function( selector ) {
      -        var className = " " + selector + " ",
      -            i = 0,
      -            l = this.length;
      -        for ( ; i < l; i++ ) {
      -            if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
      -                return true;
      -            }
      -        }
      -
      -        return false;
      -    },
      -
      -    val: function( value ) {
      -        var ret, hooks, isFunction,
      -            elem = this[0];
      -
      -        if ( !arguments.length ) {
      -            if ( elem ) {
      -                hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
      -
      -                if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
      -                    return ret;
      -                }
      -
      -                ret = elem.value;
      -
      -                return typeof ret === "string" ?
      -                    // handle most common string cases
      -                    ret.replace(rreturn, "") :
      -                    // handle cases where value is null/undef or number
      -                    ret == null ? "" : ret;
      -            }
      -
      -            return;
      -        }
      -
      -        isFunction = jQuery.isFunction( value );
      -
      -        return this.each(function( i ) {
      -            var val,
      -                self = jQuery(this);
      -
      -            if ( this.nodeType !== 1 ) {
      -                return;
      -            }
      -
      -            if ( isFunction ) {
      -                val = value.call( this, i, self.val() );
      -            } else {
      -                val = value;
      -            }
      -
      -            // Treat null/undefined as ""; convert numbers to string
      -            if ( val == null ) {
      -                val = "";
      -            } else if ( typeof val === "number" ) {
      -                val += "";
      -            } else if ( jQuery.isArray( val ) ) {
      -                val = jQuery.map(val, function ( value ) {
      -                    return value == null ? "" : value + "";
      -                });
      -            }
      -
      -            hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
      -
      -            // If set returns undefined, fall back to normal setting
      -            if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
      -                this.value = val;
      -            }
      -        });
      -    }
      -});
      -
      -jQuery.extend({
      -    valHooks: {
      -        option: {
      -            get: function( elem ) {
      -                // attributes.value is undefined in Blackberry 4.7 but
      -                // uses .value. See #6932
      -                var val = elem.attributes.value;
      -                return !val || val.specified ? elem.value : elem.text;
      -            }
      -        },
      -        select: {
      -            get: function( elem ) {
      -                var value, option,
      -                    options = elem.options,
      -                    index = elem.selectedIndex,
      -                    one = elem.type === "select-one" || index < 0,
      -                    values = one ? null : [],
      -                    max = one ? index + 1 : options.length,
      -                    i = index < 0 ?
      -                        max :
      -                        one ? index : 0;
      -
      -                // Loop through all the selected options
      -                for ( ; i < max; i++ ) {
      -                    option = options[ i ];
      -
      -                    // oldIE doesn't update selected after form reset (#2551)
      -                    if ( ( option.selected || i === index ) &&
      -                            // Don't return options that are disabled or in a disabled optgroup
      -                            ( jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null ) &&
      -                            ( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
      -
      -                        // Get the specific value for the option
      -                        value = jQuery( option ).val();
      -
      -                        // We don't need an array for one selects
      -                        if ( one ) {
      -                            return value;
      -                        }
      -
      -                        // Multi-Selects return an array
      -                        values.push( value );
      -                    }
      -                }
      -
      -                return values;
      -            },
      -
      -            set: function( elem, value ) {
      -                var values = jQuery.makeArray( value );
      -
      -                jQuery(elem).find("option").each(function() {
      -                    this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
      -                });
      -
      -                if ( !values.length ) {
      -                    elem.selectedIndex = -1;
      -                }
      -                return values;
      -            }
      -        }
      -    },
      -
      -    attr: function( elem, name, value ) {
      -        var hooks, notxml, ret,
      -            nType = elem.nodeType;
      -
      -        // don't get/set attributes on text, comment and attribute nodes
      -        if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -            return;
      -        }
      -
      -        // Fallback to prop when attributes are not supported
      -        if ( typeof elem.getAttribute === core_strundefined ) {
      -            return jQuery.prop( elem, name, value );
      -        }
      -
      -        notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
      -
      -        // All attributes are lowercase
      -        // Grab necessary hook if one is defined
      -        if ( notxml ) {
      -            name = name.toLowerCase();
      -            hooks = jQuery.attrHooks[ name ] || ( rboolean.test( name ) ? boolHook : nodeHook );
      -        }
      -
      -        if ( value !== undefined ) {
      -
      -            if ( value === null ) {
      -                jQuery.removeAttr( elem, name );
      -
      -            } else if ( hooks && notxml && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
      -                return ret;
      -
      -            } else {
      -                elem.setAttribute( name, value + "" );
      -                return value;
      -            }
      -
      -        } else if ( hooks && notxml && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
      -            return ret;
      -
      -        } else {
      -
      -            // In IE9+, Flash objects don't have .getAttribute (#12945)
      -            // Support: IE9+
      -            if ( typeof elem.getAttribute !== core_strundefined ) {
      -                ret =  elem.getAttribute( name );
      -            }
      -
      -            // Non-existent attributes return null, we normalize to undefined
      -            return ret == null ?
      -                undefined :
      -                ret;
      -        }
      -    },
      -
      -    removeAttr: function( elem, value ) {
      -        var name, propName,
      -            i = 0,
      -            attrNames = value && value.match( core_rnotwhite );
      -
      -        if ( attrNames && elem.nodeType === 1 ) {
      -            while ( (name = attrNames[i++]) ) {
      -                propName = jQuery.propFix[ name ] || name;
      -
      -                // Boolean attributes get special treatment (#10870)
      -                if ( rboolean.test( name ) ) {
      -                    // Set corresponding property to false for boolean attributes
      -                    // Also clear defaultChecked/defaultSelected (if appropriate) for IE<8
      -                    if ( !getSetAttribute && ruseDefault.test( name ) ) {
      -                        elem[ jQuery.camelCase( "default-" + name ) ] =
      -                            elem[ propName ] = false;
      -                    } else {
      -                        elem[ propName ] = false;
      -                    }
      -
      -                // See #9699 for explanation of this approach (setting first, then removal)
      -                } else {
      -                    jQuery.attr( elem, name, "" );
      -                }
      -
      -                elem.removeAttribute( getSetAttribute ? name : propName );
      -            }
      -        }
      -    },
      -
      -    attrHooks: {
      -        type: {
      -            set: function( elem, value ) {
      -                if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
      -                    // Setting the type on a radio button after the value resets the value in IE6-9
      -                    // Reset value to default in case type is set after value during creation
      -                    var val = elem.value;
      -                    elem.setAttribute( "type", value );
      -                    if ( val ) {
      -                        elem.value = val;
      -                    }
      -                    return value;
      -                }
      -            }
      -        }
      -    },
      -
      -    propFix: {
      -        tabindex: "tabIndex",
      -        readonly: "readOnly",
      -        "for": "htmlFor",
      -        "class": "className",
      -        maxlength: "maxLength",
      -        cellspacing: "cellSpacing",
      -        cellpadding: "cellPadding",
      -        rowspan: "rowSpan",
      -        colspan: "colSpan",
      -        usemap: "useMap",
      -        frameborder: "frameBorder",
      -        contenteditable: "contentEditable"
      -    },
      -
      -    prop: function( elem, name, value ) {
      -        var ret, hooks, notxml,
      -            nType = elem.nodeType;
      -
      -        // don't get/set properties on text, comment and attribute nodes
      -        if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
      -            return;
      -        }
      -
      -        notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
      -
      -        if ( notxml ) {
      -            // Fix name and attach hooks
      -            name = jQuery.propFix[ name ] || name;
      -            hooks = jQuery.propHooks[ name ];
      -        }
      -
      -        if ( value !== undefined ) {
      -            if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
      -                return ret;
      -
      -            } else {
      -                return ( elem[ name ] = value );
      -            }
      -
      -        } else {
      -            if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
      -                return ret;
      -
      -            } else {
      -                return elem[ name ];
      -            }
      -        }
      -    },
      -
      -    propHooks: {
      -        tabIndex: {
      -            get: function( elem ) {
      -                // elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
      -                // http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
      -                var attributeNode = elem.getAttributeNode("tabindex");
      -
      -                return attributeNode && attributeNode.specified ?
      -                    parseInt( attributeNode.value, 10 ) :
      -                    rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
      -                        0 :
      -                        undefined;
      -            }
      -        }
      -    }
      -});
      -
      -// Hook for boolean attributes
      -boolHook = {
      -    get: function( elem, name ) {
      -        var
      -            // Use .prop to determine if this attribute is understood as boolean
      -            prop = jQuery.prop( elem, name ),
      -
      -            // Fetch it accordingly
      -            attr = typeof prop === "boolean" && elem.getAttribute( name ),
      -            detail = typeof prop === "boolean" ?
      -
      -                getSetInput && getSetAttribute ?
      -                    attr != null :
      -                    // oldIE fabricates an empty string for missing boolean attributes
      -                    // and conflates checked/selected into attroperties
      -                    ruseDefault.test( name ) ?
      -                        elem[ jQuery.camelCase( "default-" + name ) ] :
      -                        !!attr :
      -
      -                // fetch an attribute node for properties not recognized as boolean
      -                elem.getAttributeNode( name );
      -
      -        return detail && detail.value !== false ?
      -            name.toLowerCase() :
      -            undefined;
      -    },
      -    set: function( elem, value, name ) {
      -        if ( value === false ) {
      -            // Remove boolean attributes when set to false
      -            jQuery.removeAttr( elem, name );
      -        } else if ( getSetInput && getSetAttribute || !ruseDefault.test( name ) ) {
      -            // IE<8 needs the *property* name
      -            elem.setAttribute( !getSetAttribute && jQuery.propFix[ name ] || name, name );
      -
      -        // Use defaultChecked and defaultSelected for oldIE
      -        } else {
      -            elem[ jQuery.camelCase( "default-" + name ) ] = elem[ name ] = true;
      -        }
      -
      -        return name;
      -    }
      -};
      -
      -// fix oldIE value attroperty
      -if ( !getSetInput || !getSetAttribute ) {
      -    jQuery.attrHooks.value = {
      -        get: function( elem, name ) {
      -            var ret = elem.getAttributeNode( name );
      -            return jQuery.nodeName( elem, "input" ) ?
      -
      -                // Ignore the value *property* by using defaultValue
      -                elem.defaultValue :
      -
      -                ret && ret.specified ? ret.value : undefined;
      -        },
      -        set: function( elem, value, name ) {
      -            if ( jQuery.nodeName( elem, "input" ) ) {
      -                // Does not return so that setAttribute is also used
      -                elem.defaultValue = value;
      -            } else {
      -                // Use nodeHook if defined (#1954); otherwise setAttribute is fine
      -                return nodeHook && nodeHook.set( elem, value, name );
      -            }
      -        }
      -    };
      -}
      -
      -// IE6/7 do not support getting/setting some attributes with get/setAttribute
      -if ( !getSetAttribute ) {
      -
      -    // Use this for any attribute in IE6/7
      -    // This fixes almost every IE6/7 issue
      -    nodeHook = jQuery.valHooks.button = {
      -        get: function( elem, name ) {
      -            var ret = elem.getAttributeNode( name );
      -            return ret && ( name === "id" || name === "name" || name === "coords" ? ret.value !== "" : ret.specified ) ?
      -                ret.value :
      -                undefined;
      -        },
      -        set: function( elem, value, name ) {
      -            // Set the existing or create a new attribute node
      -            var ret = elem.getAttributeNode( name );
      -            if ( !ret ) {
      -                elem.setAttributeNode(
      -                    (ret = elem.ownerDocument.createAttribute( name ))
      -                );
      -            }
      -
      -            ret.value = value += "";
      -
      -            // Break association with cloned elements by also using setAttribute (#9646)
      -            return name === "value" || value === elem.getAttribute( name ) ?
      -                value :
      -                undefined;
      -        }
      -    };
      -
      -    // Set contenteditable to false on removals(#10429)
      -    // Setting to empty string throws an error as an invalid value
      -    jQuery.attrHooks.contenteditable = {
      -        get: nodeHook.get,
      -        set: function( elem, value, name ) {
      -            nodeHook.set( elem, value === "" ? false : value, name );
      -        }
      -    };
      -
      -    // Set width and height to auto instead of 0 on empty string( Bug #8150 )
      -    // This is for removals
      -    jQuery.each([ "width", "height" ], function( i, name ) {
      -        jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
      -            set: function( elem, value ) {
      -                if ( value === "" ) {
      -                    elem.setAttribute( name, "auto" );
      -                    return value;
      -                }
      -            }
      -        });
      -    });
      -}
      -
      -
      -// Some attributes require a special call on IE
      -// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
      -if ( !jQuery.support.hrefNormalized ) {
      -    jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
      -        jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
      -            get: function( elem ) {
      -                var ret = elem.getAttribute( name, 2 );
      -                return ret == null ? undefined : ret;
      -            }
      -        });
      -    });
      -
      -    // href/src property should get the full normalized URL (#10299/#12915)
      -    jQuery.each([ "href", "src" ], function( i, name ) {
      -        jQuery.propHooks[ name ] = {
      -            get: function( elem ) {
      -                return elem.getAttribute( name, 4 );
      -            }
      -        };
      -    });
      -}
      -
      -if ( !jQuery.support.style ) {
      -    jQuery.attrHooks.style = {
      -        get: function( elem ) {
      -            // Return undefined in the case of empty string
      -            // Note: IE uppercases css property names, but if we were to .toLowerCase()
      -            // .cssText, that would destroy case senstitivity in URL's, like in "background"
      -            return elem.style.cssText || undefined;
      -        },
      -        set: function( elem, value ) {
      -            return ( elem.style.cssText = value + "" );
      -        }
      -    };
      -}
      -
      -// Safari mis-reports the default selected property of an option
      -// Accessing the parent's selectedIndex property fixes it
      -if ( !jQuery.support.optSelected ) {
      -    jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
      -        get: function( elem ) {
      -            var parent = elem.parentNode;
      -
      -            if ( parent ) {
      -                parent.selectedIndex;
      -
      -                // Make sure that it also works with optgroups, see #5701
      -                if ( parent.parentNode ) {
      -                    parent.parentNode.selectedIndex;
      -                }
      -            }
      -            return null;
      -        }
      -    });
      -}
      -
      -// IE6/7 call enctype encoding
      -if ( !jQuery.support.enctype ) {
      -    jQuery.propFix.enctype = "encoding";
      -}
      -
      -// Radios and checkboxes getter/setter
      -if ( !jQuery.support.checkOn ) {
      -    jQuery.each([ "radio", "checkbox" ], function() {
      -        jQuery.valHooks[ this ] = {
      -            get: function( elem ) {
      -                // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
      -                return elem.getAttribute("value") === null ? "on" : elem.value;
      -            }
      -        };
      -    });
      -}
      -jQuery.each([ "radio", "checkbox" ], function() {
      -    jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
      -        set: function( elem, value ) {
      -            if ( jQuery.isArray( value ) ) {
      -                return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
      -            }
      -        }
      -    });
      -});
      -var rformElems = /^(?:input|select|textarea)$/i,
      -    rkeyEvent = /^key/,
      -    rmouseEvent = /^(?:mouse|contextmenu)|click/,
      -    rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
      -    rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
      -
      -function returnTrue() {
      -    return true;
      -}
      -
      -function returnFalse() {
      -    return false;
      -}
      -
      -/*
      - * Helper functions for managing events -- not part of the public interface.
      - * Props to Dean Edwards' addEvent library for many of the ideas.
      - */
      -jQuery.event = {
      -
      -    global: {},
      -
      -    add: function( elem, types, handler, data, selector ) {
      -        var tmp, events, t, handleObjIn,
      -            special, eventHandle, handleObj,
      -            handlers, type, namespaces, origType,
      -            elemData = jQuery._data( elem );
      -
      -        // Don't attach events to noData or text/comment nodes (but allow plain objects)
      -        if ( !elemData ) {
      -            return;
      -        }
      -
      -        // Caller can pass in an object of custom data in lieu of the handler
      -        if ( handler.handler ) {
      -            handleObjIn = handler;
      -            handler = handleObjIn.handler;
      -            selector = handleObjIn.selector;
      -        }
      -
      -        // Make sure that the handler has a unique ID, used to find/remove it later
      -        if ( !handler.guid ) {
      -            handler.guid = jQuery.guid++;
      -        }
      -
      -        // Init the element's event structure and main handler, if this is the first
      -        if ( !(events = elemData.events) ) {
      -            events = elemData.events = {};
      -        }
      -        if ( !(eventHandle = elemData.handle) ) {
      -            eventHandle = elemData.handle = function( e ) {
      -                // Discard the second event of a jQuery.event.trigger() and
      -                // when an event is called after a page has unloaded
      -                return typeof jQuery !== core_strundefined && (!e || jQuery.event.triggered !== e.type) ?
      -                    jQuery.event.dispatch.apply( eventHandle.elem, arguments ) :
      -                    undefined;
      -            };
      -            // Add elem as a property of the handle fn to prevent a memory leak with IE non-native events
      -            eventHandle.elem = elem;
      -        }
      -
      -        // Handle multiple events separated by a space
      -        // jQuery(...).bind("mouseover mouseout", fn);
      -        types = ( types || "" ).match( core_rnotwhite ) || [""];
      -        t = types.length;
      -        while ( t-- ) {
      -            tmp = rtypenamespace.exec( types[t] ) || [];
      -            type = origType = tmp[1];
      -            namespaces = ( tmp[2] || "" ).split( "." ).sort();
      -
      -            // If event changes its type, use the special event handlers for the changed type
      -            special = jQuery.event.special[ type ] || {};
      -
      -            // If selector defined, determine special event api type, otherwise given type
      -            type = ( selector ? special.delegateType : special.bindType ) || type;
      -
      -            // Update special based on newly reset type
      -            special = jQuery.event.special[ type ] || {};
      -
      -            // handleObj is passed to all event handlers
      -            handleObj = jQuery.extend({
      -                type: type,
      -                origType: origType,
      -                data: data,
      -                handler: handler,
      -                guid: handler.guid,
      -                selector: selector,
      -                needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
      -                namespace: namespaces.join(".")
      -            }, handleObjIn );
      -
      -            // Init the event handler queue if we're the first
      -            if ( !(handlers = events[ type ]) ) {
      -                handlers = events[ type ] = [];
      -                handlers.delegateCount = 0;
      -
      -                // Only use addEventListener/attachEvent if the special events handler returns false
      -                if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
      -                    // Bind the global event handler to the element
      -                    if ( elem.addEventListener ) {
      -                        elem.addEventListener( type, eventHandle, false );
      -
      -                    } else if ( elem.attachEvent ) {
      -                        elem.attachEvent( "on" + type, eventHandle );
      -                    }
      -                }
      -            }
      -
      -            if ( special.add ) {
      -                special.add.call( elem, handleObj );
      -
      -                if ( !handleObj.handler.guid ) {
      -                    handleObj.handler.guid = handler.guid;
      -                }
      -            }
      -
      -            // Add to the element's handler list, delegates in front
      -            if ( selector ) {
      -                handlers.splice( handlers.delegateCount++, 0, handleObj );
      -            } else {
      -                handlers.push( handleObj );
      -            }
      -
      -            // Keep track of which events have ever been used, for event optimization
      -            jQuery.event.global[ type ] = true;
      -        }
      -
      -        // Nullify elem to prevent memory leaks in IE
      -        elem = null;
      -    },
      -
      -    // Detach an event or set of events from an element
      -    remove: function( elem, types, handler, selector, mappedTypes ) {
      -        var j, handleObj, tmp,
      -            origCount, t, events,
      -            special, handlers, type,
      -            namespaces, origType,
      -            elemData = jQuery.hasData( elem ) && jQuery._data( elem );
      -
      -        if ( !elemData || !(events = elemData.events) ) {
      -            return;
      -        }
      -
      -        // Once for each type.namespace in types; type may be omitted
      -        types = ( types || "" ).match( core_rnotwhite ) || [""];
      -        t = types.length;
      -        while ( t-- ) {
      -            tmp = rtypenamespace.exec( types[t] ) || [];
      -            type = origType = tmp[1];
      -            namespaces = ( tmp[2] || "" ).split( "." ).sort();
      -
      -            // Unbind all events (on this namespace, if provided) for the element
      -            if ( !type ) {
      -                for ( type in events ) {
      -                    jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
      -                }
      -                continue;
      -            }
      -
      -            special = jQuery.event.special[ type ] || {};
      -            type = ( selector ? special.delegateType : special.bindType ) || type;
      -            handlers = events[ type ] || [];
      -            tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
      -
      -            // Remove matching events
      -            origCount = j = handlers.length;
      -            while ( j-- ) {
      -                handleObj = handlers[ j ];
      -
      -                if ( ( mappedTypes || origType === handleObj.origType ) &&
      -                    ( !handler || handler.guid === handleObj.guid ) &&
      -                    ( !tmp || tmp.test( handleObj.namespace ) ) &&
      -                    ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
      -                    handlers.splice( j, 1 );
      -
      -                    if ( handleObj.selector ) {
      -                        handlers.delegateCount--;
      -                    }
      -                    if ( special.remove ) {
      -                        special.remove.call( elem, handleObj );
      -                    }
      -                }
      -            }
      -
      -            // Remove generic event handler if we removed something and no more handlers exist
      -            // (avoids potential for endless recursion during removal of special event handlers)
      -            if ( origCount && !handlers.length ) {
      -                if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
      -                    jQuery.removeEvent( elem, type, elemData.handle );
      -                }
      -
      -                delete events[ type ];
      -            }
      -        }
      -
      -        // Remove the expando if it's no longer used
      -        if ( jQuery.isEmptyObject( events ) ) {
      -            delete elemData.handle;
      -
      -            // removeData also checks for emptiness and clears the expando if empty
      -            // so use it instead of delete
      -            jQuery._removeData( elem, "events" );
      -        }
      -    },
      -
      -    trigger: function( event, data, elem, onlyHandlers ) {
      -        var handle, ontype, cur,
      -            bubbleType, special, tmp, i,
      -            eventPath = [ elem || document ],
      -            type = core_hasOwn.call( event, "type" ) ? event.type : event,
      -            namespaces = core_hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
      -
      -        cur = tmp = elem = elem || document;
      -
      -        // Don't do events on text and comment nodes
      -        if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
      -            return;
      -        }
      -
      -        // focus/blur morphs to focusin/out; ensure we're not firing them right now
      -        if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
      -            return;
      -        }
      -
      -        if ( type.indexOf(".") >= 0 ) {
      -            // Namespaced trigger; create a regexp to match event type in handle()
      -            namespaces = type.split(".");
      -            type = namespaces.shift();
      -            namespaces.sort();
      -        }
      -        ontype = type.indexOf(":") < 0 && "on" + type;
      -
      -        // Caller can pass in a jQuery.Event object, Object, or just an event type string
      -        event = event[ jQuery.expando ] ?
      -            event :
      -            new jQuery.Event( type, typeof event === "object" && event );
      -
      -        event.isTrigger = true;
      -        event.namespace = namespaces.join(".");
      -        event.namespace_re = event.namespace ?
      -            new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
      -            null;
      -
      -        // Clean up the event in case it is being reused
      -        event.result = undefined;
      -        if ( !event.target ) {
      -            event.target = elem;
      -        }
      -
      -        // Clone any incoming data and prepend the event, creating the handler arg list
      -        data = data == null ?
      -            [ event ] :
      -            jQuery.makeArray( data, [ event ] );
      -
      -        // Allow special events to draw outside the lines
      -        special = jQuery.event.special[ type ] || {};
      -        if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
      -            return;
      -        }
      -
      -        // Determine event propagation path in advance, per W3C events spec (#9951)
      -        // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
      -        if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
      -
      -            bubbleType = special.delegateType || type;
      -            if ( !rfocusMorph.test( bubbleType + type ) ) {
      -                cur = cur.parentNode;
      -            }
      -            for ( ; cur; cur = cur.parentNode ) {
      -                eventPath.push( cur );
      -                tmp = cur;
      -            }
      -
      -            // Only add window if we got to document (e.g., not plain obj or detached DOM)
      -            if ( tmp === (elem.ownerDocument || document) ) {
      -                eventPath.push( tmp.defaultView || tmp.parentWindow || window );
      -            }
      -        }
      -
      -        // Fire handlers on the event path
      -        i = 0;
      -        while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
      -
      -            event.type = i > 1 ?
      -                bubbleType :
      -                special.bindType || type;
      -
      -            // jQuery handler
      -            handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
      -            if ( handle ) {
      -                handle.apply( cur, data );
      -            }
      -
      -            // Native handler
      -            handle = ontype && cur[ ontype ];
      -            if ( handle && jQuery.acceptData( cur ) && handle.apply && handle.apply( cur, data ) === false ) {
      -                event.preventDefault();
      -            }
      -        }
      -        event.type = type;
      -
      -        // If nobody prevented the default action, do it now
      -        if ( !onlyHandlers && !event.isDefaultPrevented() ) {
      -
      -            if ( (!special._default || special._default.apply( elem.ownerDocument, data ) === false) &&
      -                !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
      -
      -                // Call a native DOM method on the target with the same name name as the event.
      -                // Can't use an .isFunction() check here because IE6/7 fails that test.
      -                // Don't do default actions on window, that's where global variables be (#6170)
      -                if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) {
      -
      -                    // Don't re-trigger an onFOO event when we call its FOO() method
      -                    tmp = elem[ ontype ];
      -
      -                    if ( tmp ) {
      -                        elem[ ontype ] = null;
      -                    }
      -
      -                    // Prevent re-triggering of the same event, since we already bubbled it above
      -                    jQuery.event.triggered = type;
      -                    try {
      -                        elem[ type ]();
      -                    } catch ( e ) {
      -                        // IE<9 dies on focus/blur to hidden element (#1486,#12518)
      -                        // only reproducible on winXP IE8 native, not IE9 in IE8 mode
      -                    }
      -                    jQuery.event.triggered = undefined;
      -
      -                    if ( tmp ) {
      -                        elem[ ontype ] = tmp;
      -                    }
      -                }
      -            }
      -        }
      -
      -        return event.result;
      -    },
      -
      -    dispatch: function( event ) {
      -
      -        // Make a writable jQuery.Event from the native event object
      -        event = jQuery.event.fix( event );
      -
      -        var i, ret, handleObj, matched, j,
      -            handlerQueue = [],
      -            args = core_slice.call( arguments ),
      -            handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [],
      -            special = jQuery.event.special[ event.type ] || {};
      -
      -        // Use the fix-ed jQuery.Event rather than the (read-only) native event
      -        args[0] = event;
      -        event.delegateTarget = this;
      -
      -        // Call the preDispatch hook for the mapped type, and let it bail if desired
      -        if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
      -            return;
      -        }
      -
      -        // Determine handlers
      -        handlerQueue = jQuery.event.handlers.call( this, event, handlers );
      -
      -        // Run delegates first; they may want to stop propagation beneath us
      -        i = 0;
      -        while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
      -            event.currentTarget = matched.elem;
      -
      -            j = 0;
      -            while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
      -
      -                // Triggered event must either 1) have no namespace, or
      -                // 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
      -                if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
      -
      -                    event.handleObj = handleObj;
      -                    event.data = handleObj.data;
      -
      -                    ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
      -                            .apply( matched.elem, args );
      -
      -                    if ( ret !== undefined ) {
      -                        if ( (event.result = ret) === false ) {
      -                            event.preventDefault();
      -                            event.stopPropagation();
      -                        }
      -                    }
      -                }
      -            }
      -        }
      -
      -        // Call the postDispatch hook for the mapped type
      -        if ( special.postDispatch ) {
      -            special.postDispatch.call( this, event );
      -        }
      -
      -        return event.result;
      -    },
      -
      -    handlers: function( event, handlers ) {
      -        var sel, handleObj, matches, i,
      -            handlerQueue = [],
      -            delegateCount = handlers.delegateCount,
      -            cur = event.target;
      -
      -        // Find delegate handlers
      -        // Black-hole SVG <use> instance trees (#13180)
      -        // Avoid non-left-click bubbling in Firefox (#3861)
      -        if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
      -
      -            for ( ; cur != this; cur = cur.parentNode || this ) {
      -
      -                // Don't check non-elements (#13208)
      -                // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
      -                if ( cur.nodeType === 1 && (cur.disabled !== true || event.type !== "click") ) {
      -                    matches = [];
      -                    for ( i = 0; i < delegateCount; i++ ) {
      -                        handleObj = handlers[ i ];
      -
      -                        // Don't conflict with Object.prototype properties (#13203)
      -                        sel = handleObj.selector + " ";
      -
      -                        if ( matches[ sel ] === undefined ) {
      -                            matches[ sel ] = handleObj.needsContext ?
      -                                jQuery( sel, this ).index( cur ) >= 0 :
      -                                jQuery.find( sel, this, null, [ cur ] ).length;
      -                        }
      -                        if ( matches[ sel ] ) {
      -                            matches.push( handleObj );
      -                        }
      -                    }
      -                    if ( matches.length ) {
      -                        handlerQueue.push({ elem: cur, handlers: matches });
      -                    }
      -                }
      -            }
      -        }
      -
      -        // Add the remaining (directly-bound) handlers
      -        if ( delegateCount < handlers.length ) {
      -            handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
      -        }
      -
      -        return handlerQueue;
      -    },
      -
      -    fix: function( event ) {
      -        if ( event[ jQuery.expando ] ) {
      -            return event;
      -        }
      -
      -        // Create a writable copy of the event object and normalize some properties
      -        var i, prop, copy,
      -            type = event.type,
      -            originalEvent = event,
      -            fixHook = this.fixHooks[ type ];
      -
      -        if ( !fixHook ) {
      -            this.fixHooks[ type ] = fixHook =
      -                rmouseEvent.test( type ) ? this.mouseHooks :
      -                rkeyEvent.test( type ) ? this.keyHooks :
      -                {};
      -        }
      -        copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
      -
      -        event = new jQuery.Event( originalEvent );
      -
      -        i = copy.length;
      -        while ( i-- ) {
      -            prop = copy[ i ];
      -            event[ prop ] = originalEvent[ prop ];
      -        }
      -
      -        // Support: IE<9
      -        // Fix target property (#1925)
      -        if ( !event.target ) {
      -            event.target = originalEvent.srcElement || document;
      -        }
      -
      -        // Support: Chrome 23+, Safari?
      -        // Target should not be a text node (#504, #13143)
      -        if ( event.target.nodeType === 3 ) {
      -            event.target = event.target.parentNode;
      -        }
      -
      -        // Support: IE<9
      -        // For mouse/key events, metaKey==false if it's undefined (#3368, #11328)
      -        event.metaKey = !!event.metaKey;
      -
      -        return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
      -    },
      -
      -    // Includes some event props shared by KeyEvent and MouseEvent
      -    props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
      -
      -    fixHooks: {},
      -
      -    keyHooks: {
      -        props: "char charCode key keyCode".split(" "),
      -        filter: function( event, original ) {
      -
      -            // Add which for key events
      -            if ( event.which == null ) {
      -                event.which = original.charCode != null ? original.charCode : original.keyCode;
      -            }
      -
      -            return event;
      -        }
      -    },
      -
      -    mouseHooks: {
      -        props: "button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
      -        filter: function( event, original ) {
      -            var body, eventDoc, doc,
      -                button = original.button,
      -                fromElement = original.fromElement;
      -
      -            // Calculate pageX/Y if missing and clientX/Y available
      -            if ( event.pageX == null && original.clientX != null ) {
      -                eventDoc = event.target.ownerDocument || document;
      -                doc = eventDoc.documentElement;
      -                body = eventDoc.body;
      -
      -                event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
      -                event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
      -            }
      -
      -            // Add relatedTarget, if necessary
      -            if ( !event.relatedTarget && fromElement ) {
      -                event.relatedTarget = fromElement === event.target ? original.toElement : fromElement;
      -            }
      -
      -            // Add which for click: 1 === left; 2 === middle; 3 === right
      -            // Note: button is not normalized, so don't use it
      -            if ( !event.which && button !== undefined ) {
      -                event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
      -            }
      -
      -            return event;
      -        }
      -    },
      -
      -    special: {
      -        load: {
      -            // Prevent triggered image.load events from bubbling to window.load
      -            noBubble: true
      -        },
      -        click: {
      -            // For checkbox, fire native event so checked state will be right
      -            trigger: function() {
      -                if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) {
      -                    this.click();
      -                    return false;
      -                }
      -            }
      -        },
      -        focus: {
      -            // Fire native event if possible so blur/focus sequence is correct
      -            trigger: function() {
      -                if ( this !== document.activeElement && this.focus ) {
      -                    try {
      -                        this.focus();
      -                        return false;
      -                    } catch ( e ) {
      -                        // Support: IE<9
      -                        // If we error on focus to hidden element (#1486, #12518),
      -                        // let .trigger() run the handlers
      -                    }
      -                }
      -            },
      -            delegateType: "focusin"
      -        },
      -        blur: {
      -            trigger: function() {
      -                if ( this === document.activeElement && this.blur ) {
      -                    this.blur();
      -                    return false;
      -                }
      -            },
      -            delegateType: "focusout"
      -        },
      -
      -        beforeunload: {
      -            postDispatch: function( event ) {
      -
      -                // Even when returnValue equals to undefined Firefox will still show alert
      -                if ( event.result !== undefined ) {
      -                    event.originalEvent.returnValue = event.result;
      -                }
      -            }
      -        }
      -    },
      -
      -    simulate: function( type, elem, event, bubble ) {
      -        // Piggyback on a donor event to simulate a different one.
      -        // Fake originalEvent to avoid donor's stopPropagation, but if the
      -        // simulated event prevents default then we do the same on the donor.
      -        var e = jQuery.extend(
      -            new jQuery.Event(),
      -            event,
      -            { type: type,
      -                isSimulated: true,
      -                originalEvent: {}
      -            }
      -        );
      -        if ( bubble ) {
      -            jQuery.event.trigger( e, null, elem );
      -        } else {
      -            jQuery.event.dispatch.call( elem, e );
      -        }
      -        if ( e.isDefaultPrevented() ) {
      -            event.preventDefault();
      -        }
      -    }
      -};
      -
      -jQuery.removeEvent = document.removeEventListener ?
      -    function( elem, type, handle ) {
      -        if ( elem.removeEventListener ) {
      -            elem.removeEventListener( type, handle, false );
      -        }
      -    } :
      -    function( elem, type, handle ) {
      -        var name = "on" + type;
      -
      -        if ( elem.detachEvent ) {
      -
      -            // #8545, #7054, preventing memory leaks for custom events in IE6-8
      -            // detachEvent needed property on element, by name of that event, to properly expose it to GC
      -            if ( typeof elem[ name ] === core_strundefined ) {
      -                elem[ name ] = null;
      -            }
      -
      -            elem.detachEvent( name, handle );
      -        }
      -    };
      -
      -jQuery.Event = function( src, props ) {
      -    // Allow instantiation without the 'new' keyword
      -    if ( !(this instanceof jQuery.Event) ) {
      -        return new jQuery.Event( src, props );
      -    }
      -
      -    // Event object
      -    if ( src && src.type ) {
      -        this.originalEvent = src;
      -        this.type = src.type;
      -
      -        // Events bubbling up the document may have been marked as prevented
      -        // by a handler lower down the tree; reflect the correct value.
      -        this.isDefaultPrevented = ( src.defaultPrevented || src.returnValue === false ||
      -            src.getPreventDefault && src.getPreventDefault() ) ? returnTrue : returnFalse;
      -
      -    // Event type
      -    } else {
      -        this.type = src;
      -    }
      -
      -    // Put explicitly provided properties onto the event object
      -    if ( props ) {
      -        jQuery.extend( this, props );
      -    }
      -
      -    // Create a timestamp if incoming event doesn't have one
      -    this.timeStamp = src && src.timeStamp || jQuery.now();
      -
      -    // Mark it as fixed
      -    this[ jQuery.expando ] = true;
      -};
      -
      -// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
      -// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
      -jQuery.Event.prototype = {
      -    isDefaultPrevented: returnFalse,
      -    isPropagationStopped: returnFalse,
      -    isImmediatePropagationStopped: returnFalse,
      -
      -    preventDefault: function() {
      -        var e = this.originalEvent;
      -
      -        this.isDefaultPrevented = returnTrue;
      -        if ( !e ) {
      -            return;
      -        }
      -
      -        // If preventDefault exists, run it on the original event
      -        if ( e.preventDefault ) {
      -            e.preventDefault();
      -
      -        // Support: IE
      -        // Otherwise set the returnValue property of the original event to false
      -        } else {
      -            e.returnValue = false;
      -        }
      -    },
      -    stopPropagation: function() {
      -        var e = this.originalEvent;
      -
      -        this.isPropagationStopped = returnTrue;
      -        if ( !e ) {
      -            return;
      -        }
      -        // If stopPropagation exists, run it on the original event
      -        if ( e.stopPropagation ) {
      -            e.stopPropagation();
      -        }
      -
      -        // Support: IE
      -        // Set the cancelBubble property of the original event to true
      -        e.cancelBubble = true;
      -    },
      -    stopImmediatePropagation: function() {
      -        this.isImmediatePropagationStopped = returnTrue;
      -        this.stopPropagation();
      -    }
      -};
      -
      -// Create mouseenter/leave events using mouseover/out and event-time checks
      -jQuery.each({
      -    mouseenter: "mouseover",
      -    mouseleave: "mouseout"
      -}, function( orig, fix ) {
      -    jQuery.event.special[ orig ] = {
      -        delegateType: fix,
      -        bindType: fix,
      -
      -        handle: function( event ) {
      -            var ret,
      -                target = this,
      -                related = event.relatedTarget,
      -                handleObj = event.handleObj;
      -
      -            // For mousenter/leave call the handler if related is outside the target.
      -            // NB: No relatedTarget if the mouse left/entered the browser window
      -            if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
      -                event.type = handleObj.origType;
      -                ret = handleObj.handler.apply( this, arguments );
      -                event.type = fix;
      -            }
      -            return ret;
      -        }
      -    };
      -});
      -
      -// IE submit delegation
      -if ( !jQuery.support.submitBubbles ) {
      -
      -    jQuery.event.special.submit = {
      -        setup: function() {
      -            // Only need this for delegated form submit events
      -            if ( jQuery.nodeName( this, "form" ) ) {
      -                return false;
      -            }
      -
      -            // Lazy-add a submit handler when a descendant form may potentially be submitted
      -            jQuery.event.add( this, "click._submit keypress._submit", function( e ) {
      -                // Node name check avoids a VML-related crash in IE (#9807)
      -                var elem = e.target,
      -                    form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.form : undefined;
      -                if ( form && !jQuery._data( form, "submitBubbles" ) ) {
      -                    jQuery.event.add( form, "submit._submit", function( event ) {
      -                        event._submit_bubble = true;
      -                    });
      -                    jQuery._data( form, "submitBubbles", true );
      -                }
      -            });
      -            // return undefined since we don't need an event listener
      -        },
      -
      -        postDispatch: function( event ) {
      -            // If form was submitted by the user, bubble the event up the tree
      -            if ( event._submit_bubble ) {
      -                delete event._submit_bubble;
      -                if ( this.parentNode && !event.isTrigger ) {
      -                    jQuery.event.simulate( "submit", this.parentNode, event, true );
      -                }
      -            }
      -        },
      -
      -        teardown: function() {
      -            // Only need this for delegated form submit events
      -            if ( jQuery.nodeName( this, "form" ) ) {
      -                return false;
      -            }
      -
      -            // Remove delegated handlers; cleanData eventually reaps submit handlers attached above
      -            jQuery.event.remove( this, "._submit" );
      -        }
      -    };
      -}
      -
      -// IE change delegation and checkbox/radio fix
      -if ( !jQuery.support.changeBubbles ) {
      -
      -    jQuery.event.special.change = {
      -
      -        setup: function() {
      -
      -            if ( rformElems.test( this.nodeName ) ) {
      -                // IE doesn't fire change on a check/radio until blur; trigger it on click
      -                // after a propertychange. Eat the blur-change in special.change.handle.
      -                // This still fires onchange a second time for check/radio after blur.
      -                if ( this.type === "checkbox" || this.type === "radio" ) {
      -                    jQuery.event.add( this, "propertychange._change", function( event ) {
      -                        if ( event.originalEvent.propertyName === "checked" ) {
      -                            this._just_changed = true;
      -                        }
      -                    });
      -                    jQuery.event.add( this, "click._change", function( event ) {
      -                        if ( this._just_changed && !event.isTrigger ) {
      -                            this._just_changed = false;
      -                        }
      -                        // Allow triggered, simulated change events (#11500)
      -                        jQuery.event.simulate( "change", this, event, true );
      -                    });
      -                }
      -                return false;
      -            }
      -            // Delegated event; lazy-add a change handler on descendant inputs
      -            jQuery.event.add( this, "beforeactivate._change", function( e ) {
      -                var elem = e.target;
      -
      -                if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "changeBubbles" ) ) {
      -                    jQuery.event.add( elem, "change._change", function( event ) {
      -                        if ( this.parentNode && !event.isSimulated && !event.isTrigger ) {
      -                            jQuery.event.simulate( "change", this.parentNode, event, true );
      -                        }
      -                    });
      -                    jQuery._data( elem, "changeBubbles", true );
      -                }
      -            });
      -        },
      -
      -        handle: function( event ) {
      -            var elem = event.target;
      -
      -            // Swallow native change events from checkbox/radio, we already triggered them above
      -            if ( this !== elem || event.isSimulated || event.isTrigger || (elem.type !== "radio" && elem.type !== "checkbox") ) {
      -                return event.handleObj.handler.apply( this, arguments );
      -            }
      -        },
      -
      -        teardown: function() {
      -            jQuery.event.remove( this, "._change" );
      -
      -            return !rformElems.test( this.nodeName );
      -        }
      -    };
      -}
      -
      -// Create "bubbling" focus and blur events
      -if ( !jQuery.support.focusinBubbles ) {
      -    jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
      -
      -        // Attach a single capturing handler while someone wants focusin/focusout
      -        var attaches = 0,
      -            handler = function( event ) {
      -                jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
      -            };
      -
      -        jQuery.event.special[ fix ] = {
      -            setup: function() {
      -                if ( attaches++ === 0 ) {
      -                    document.addEventListener( orig, handler, true );
      -                }
      -            },
      -            teardown: function() {
      -                if ( --attaches === 0 ) {
      -                    document.removeEventListener( orig, handler, true );
      -                }
      -            }
      -        };
      -    });
      -}
      -
      -jQuery.fn.extend({
      -
      -    on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
      -        var type, origFn;
      -
      -        // Types can be a map of types/handlers
      -        if ( typeof types === "object" ) {
      -            // ( types-Object, selector, data )
      -            if ( typeof selector !== "string" ) {
      -                // ( types-Object, data )
      -                data = data || selector;
      -                selector = undefined;
      -            }
      -            for ( type in types ) {
      -                this.on( type, selector, data, types[ type ], one );
      -            }
      -            return this;
      -        }
      -
      -        if ( data == null && fn == null ) {
      -            // ( types, fn )
      -            fn = selector;
      -            data = selector = undefined;
      -        } else if ( fn == null ) {
      -            if ( typeof selector === "string" ) {
      -                // ( types, selector, fn )
      -                fn = data;
      -                data = undefined;
      -            } else {
      -                // ( types, data, fn )
      -                fn = data;
      -                data = selector;
      -                selector = undefined;
      -            }
      -        }
      -        if ( fn === false ) {
      -            fn = returnFalse;
      -        } else if ( !fn ) {
      -            return this;
      -        }
      -
      -        if ( one === 1 ) {
      -            origFn = fn;
      -            fn = function( event ) {
      -                // Can use an empty set, since event contains the info
      -                jQuery().off( event );
      -                return origFn.apply( this, arguments );
      -            };
      -            // Use same guid so caller can remove using origFn
      -            fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
      -        }
      -        return this.each( function() {
      -            jQuery.event.add( this, types, fn, data, selector );
      -        });
      -    },
      -    one: function( types, selector, data, fn ) {
      -        return this.on( types, selector, data, fn, 1 );
      -    },
      -    off: function( types, selector, fn ) {
      -        var handleObj, type;
      -        if ( types && types.preventDefault && types.handleObj ) {
      -            // ( event )  dispatched jQuery.Event
      -            handleObj = types.handleObj;
      -            jQuery( types.delegateTarget ).off(
      -                handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
      -                handleObj.selector,
      -                handleObj.handler
      -            );
      -            return this;
      -        }
      -        if ( typeof types === "object" ) {
      -            // ( types-object [, selector] )
      -            for ( type in types ) {
      -                this.off( type, selector, types[ type ] );
      -            }
      -            return this;
      -        }
      -        if ( selector === false || typeof selector === "function" ) {
      -            // ( types [, fn] )
      -            fn = selector;
      -            selector = undefined;
      -        }
      -        if ( fn === false ) {
      -            fn = returnFalse;
      -        }
      -        return this.each(function() {
      -            jQuery.event.remove( this, types, fn, selector );
      -        });
      -    },
      -
      -    bind: function( types, data, fn ) {
      -        return this.on( types, null, data, fn );
      -    },
      -    unbind: function( types, fn ) {
      -        return this.off( types, null, fn );
      -    },
      -
      -    delegate: function( selector, types, data, fn ) {
      -        return this.on( types, selector, data, fn );
      -    },
      -    undelegate: function( selector, types, fn ) {
      -        // ( namespace ) or ( selector, types [, fn] )
      -        return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
      -    },
      -
      -    trigger: function( type, data ) {
      -        return this.each(function() {
      -            jQuery.event.trigger( type, data, this );
      -        });
      -    },
      -    triggerHandler: function( type, data ) {
      -        var elem = this[0];
      -        if ( elem ) {
      -            return jQuery.event.trigger( type, data, elem, true );
      -        }
      -    }
      -});
      -/*!
      - * Sizzle CSS Selector Engine
      - * Copyright 2012 jQuery Foundation and other contributors
      - * Released under the MIT license
      - * http://sizzlejs.com/
      - */
      -(function( window, undefined ) {
      -
      -var i,
      -    cachedruns,
      -    Expr,
      -    getText,
      -    isXML,
      -    compile,
      -    hasDuplicate,
      -    outermostContext,
      -
      -    // Local document vars
      -    setDocument,
      -    document,
      -    docElem,
      -    documentIsXML,
      -    rbuggyQSA,
      -    rbuggyMatches,
      -    matches,
      -    contains,
      -    sortOrder,
      -
      -    // Instance-specific data
      -    expando = "sizzle" + -(new Date()),
      -    preferredDoc = window.document,
      -    support = {},
      -    dirruns = 0,
      -    done = 0,
      -    classCache = createCache(),
      -    tokenCache = createCache(),
      -    compilerCache = createCache(),
      -
      -    // General-purpose constants
      -    strundefined = typeof undefined,
      -    MAX_NEGATIVE = 1 << 31,
      -
      -    // Array methods
      -    arr = [],
      -    pop = arr.pop,
      -    push = arr.push,
      -    slice = arr.slice,
      -    // Use a stripped-down indexOf if we can't use a native one
      -    indexOf = arr.indexOf || function( elem ) {
      -        var i = 0,
      -            len = this.length;
      -        for ( ; i < len; i++ ) {
      -            if ( this[i] === elem ) {
      -                return i;
      -            }
      -        }
      -        return -1;
      -    },
      -
      -
      -    // Regular expressions
      -
      -    // Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
      -    whitespace = "[\\x20\\t\\r\\n\\f]",
      -    // http://www.w3.org/TR/css3-syntax/#characters
      -    characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
      -
      -    // Loosely modeled on CSS identifier characters
      -    // An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
      -    // Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
      -    identifier = characterEncoding.replace( "w", "w#" ),
      -
      -    // Acceptable operators http://www.w3.org/TR/selectors/#attribute-selectors
      -    operators = "([*^$|!~]?=)",
      -    attributes = "\\[" + whitespace + "*(" + characterEncoding + ")" + whitespace +
      -        "*(?:" + operators + whitespace + "*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|(" + identifier + ")|)|)" + whitespace + "*\\]",
      -
      -    // Prefer arguments quoted,
      -    //   then not containing pseudos/brackets,
      -    //   then attribute selectors/non-parenthetical expressions,
      -    //   then anything else
      -    // These preferences are here to reduce the number of selectors
      -    //   needing tokenize in the PSEUDO preFilter
      -    pseudos = ":(" + characterEncoding + ")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|" + attributes.replace( 3, 8 ) + ")*)|.*)\\)|)",
      -
      -    // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
      -    rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
      -
      -    rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
      -    rcombinators = new RegExp( "^" + whitespace + "*([\\x20\\t\\r\\n\\f>+~])" + whitespace + "*" ),
      -    rpseudo = new RegExp( pseudos ),
      -    ridentifier = new RegExp( "^" + identifier + "$" ),
      -
      -    matchExpr = {
      -        "ID": new RegExp( "^#(" + characterEncoding + ")" ),
      -        "CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
      -        "NAME": new RegExp( "^\\[name=['\"]?(" + characterEncoding + ")['\"]?\\]" ),
      -        "TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
      -        "ATTR": new RegExp( "^" + attributes ),
      -        "PSEUDO": new RegExp( "^" + pseudos ),
      -        "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
      -            "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
      -            "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
      -        // For use in libraries implementing .is()
      -        // We use this for POS matching in `select`
      -        "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
      -            whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
      -    },
      -
      -    rsibling = /[\x20\t\r\n\f]*[+~]/,
      -
      -    rnative = /^[^{]+\{\s*\[native code/,
      -
      -    // Easily-parseable/retrievable ID or TAG or CLASS selectors
      -    rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
      -
      -    rinputs = /^(?:input|select|textarea|button)$/i,
      -    rheader = /^h\d$/i,
      -
      -    rescape = /'|\\/g,
      -    rattributeQuotes = /\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,
      -
      -    // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
      -    runescape = /\\([\da-fA-F]{1,6}[\x20\t\r\n\f]?|.)/g,
      -    funescape = function( _, escaped ) {
      -        var high = "0x" + escaped - 0x10000;
      -        // NaN means non-codepoint
      -        return high !== high ?
      -            escaped :
      -            // BMP codepoint
      -            high < 0 ?
      -                String.fromCharCode( high + 0x10000 ) :
      -                // Supplemental Plane codepoint (surrogate pair)
      -                String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
      -    };
      -
      -// Use a stripped-down slice if we can't use a native one
      -try {
      -    slice.call( preferredDoc.documentElement.childNodes, 0 )[0].nodeType;
      -} catch ( e ) {
      -    slice = function( i ) {
      -        var elem,
      -            results = [];
      -        while ( (elem = this[i++]) ) {
      -            results.push( elem );
      -        }
      -        return results;
      -    };
      -}
      -
      -/**
      - * For feature detection
      - * @param {Function} fn The function to test for native support
      - */
      -function isNative( fn ) {
      -    return rnative.test( fn + "" );
      -}
      -
      -/**
      - * Create key-value caches of limited size
      - * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
      - *  property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
      - *  deleting the oldest entry
      - */
      -function createCache() {
      -    var cache,
      -        keys = [];
      -
      -    return (cache = function( key, value ) {
      -        // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
      -        if ( keys.push( key += " " ) > Expr.cacheLength ) {
      -            // Only keep the most recent entries
      -            delete cache[ keys.shift() ];
      -        }
      -        return (cache[ key ] = value);
      -    });
      -}
      -
      -/**
      - * Mark a function for special use by Sizzle
      - * @param {Function} fn The function to mark
      - */
      -function markFunction( fn ) {
      -    fn[ expando ] = true;
      -    return fn;
      -}
      -
      -/**
      - * Support testing using an element
      - * @param {Function} fn Passed the created div and expects a boolean result
      - */
      -function assert( fn ) {
      -    var div = document.createElement("div");
      -
      -    try {
      -        return fn( div );
      -    } catch (e) {
      -        return false;
      -    } finally {
      -        // release memory in IE
      -        div = null;
      -    }
      -}
      -
      -function Sizzle( selector, context, results, seed ) {
      -    var match, elem, m, nodeType,
      -        // QSA vars
      -        i, groups, old, nid, newContext, newSelector;
      -
      -    if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
      -        setDocument( context );
      -    }
      -
      -    context = context || document;
      -    results = results || [];
      -
      -    if ( !selector || typeof selector !== "string" ) {
      -        return results;
      -    }
      -
      -    if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
      -        return [];
      -    }
      -
      -    if ( !documentIsXML && !seed ) {
      -
      -        // Shortcuts
      -        if ( (match = rquickExpr.exec( selector )) ) {
      -            // Speed-up: Sizzle("#ID")
      -            if ( (m = match[1]) ) {
      -                if ( nodeType === 9 ) {
      -                    elem = context.getElementById( m );
      -                    // Check parentNode to catch when Blackberry 4.6 returns
      -                    // nodes that are no longer in the document #6963
      -                    if ( elem && elem.parentNode ) {
      -                        // Handle the case where IE, Opera, and Webkit return items
      -                        // by name instead of ID
      -                        if ( elem.id === m ) {
      -                            results.push( elem );
      -                            return results;
      -                        }
      -                    } else {
      -                        return results;
      -                    }
      -                } else {
      -                    // Context is not a document
      -                    if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
      -                        contains( context, elem ) && elem.id === m ) {
      -                        results.push( elem );
      -                        return results;
      -                    }
      -                }
      -
      -            // Speed-up: Sizzle("TAG")
      -            } else if ( match[2] ) {
      -                push.apply( results, slice.call(context.getElementsByTagName( selector ), 0) );
      -                return results;
      -
      -            // Speed-up: Sizzle(".CLASS")
      -            } else if ( (m = match[3]) && support.getByClassName && context.getElementsByClassName ) {
      -                push.apply( results, slice.call(context.getElementsByClassName( m ), 0) );
      -                return results;
      -            }
      -        }
      -
      -        // QSA path
      -        if ( support.qsa && !rbuggyQSA.test(selector) ) {
      -            old = true;
      -            nid = expando;
      -            newContext = context;
      -            newSelector = nodeType === 9 && selector;
      -
      -            // qSA works strangely on Element-rooted queries
      -            // We can work around this by specifying an extra ID on the root
      -            // and working up from there (Thanks to Andrew Dupont for the technique)
      -            // IE 8 doesn't work on object elements
      -            if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
      -                groups = tokenize( selector );
      -
      -                if ( (old = context.getAttribute("id")) ) {
      -                    nid = old.replace( rescape, "\\$&" );
      -                } else {
      -                    context.setAttribute( "id", nid );
      -                }
      -                nid = "[id='" + nid + "'] ";
      -
      -                i = groups.length;
      -                while ( i-- ) {
      -                    groups[i] = nid + toSelector( groups[i] );
      -                }
      -                newContext = rsibling.test( selector ) && context.parentNode || context;
      -                newSelector = groups.join(",");
      -            }
      -
      -            if ( newSelector ) {
      -                try {
      -                    push.apply( results, slice.call( newContext.querySelectorAll(
      -                        newSelector
      -                    ), 0 ) );
      -                    return results;
      -                } catch(qsaError) {
      -                } finally {
      -                    if ( !old ) {
      -                        context.removeAttribute("id");
      -                    }
      -                }
      -            }
      -        }
      -    }
      -
      -    // All others
      -    return select( selector.replace( rtrim, "$1" ), context, results, seed );
      -}
      -
      -/**
      - * Detect xml
      - * @param {Element|Object} elem An element or a document
      - */
      -isXML = Sizzle.isXML = function( elem ) {
      -    // documentElement is verified for cases where it doesn't yet exist
      -    // (such as loading iframes in IE - #4833)
      -    var documentElement = elem && (elem.ownerDocument || elem).documentElement;
      -    return documentElement ? documentElement.nodeName !== "HTML" : false;
      -};
      -
      -/**
      - * Sets document-related variables once based on the current document
      - * @param {Element|Object} [doc] An element or document object to use to set the document
      - * @returns {Object} Returns the current document
      - */
      -setDocument = Sizzle.setDocument = function( node ) {
      -    var doc = node ? node.ownerDocument || node : preferredDoc;
      -
      -    // If no document and documentElement is available, return
      -    if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
      -        return document;
      -    }
      -
      -    // Set our document
      -    document = doc;
      -    docElem = doc.documentElement;
      -
      -    // Support tests
      -    documentIsXML = isXML( doc );
      -
      -    // Check if getElementsByTagName("*") returns only elements
      -    support.tagNameNoComments = assert(function( div ) {
      -        div.appendChild( doc.createComment("") );
      -        return !div.getElementsByTagName("*").length;
      -    });
      -
      -    // Check if attributes should be retrieved by attribute nodes
      -    support.attributes = assert(function( div ) {
      -        div.innerHTML = "<select></select>";
      -        var type = typeof div.lastChild.getAttribute("multiple");
      -        // IE8 returns a string for some attributes even when not present
      -        return type !== "boolean" && type !== "string";
      -    });
      -
      -    // Check if getElementsByClassName can be trusted
      -    support.getByClassName = assert(function( div ) {
      -        // Opera can't find a second classname (in 9.6)
      -        div.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>";
      -        if ( !div.getElementsByClassName || !div.getElementsByClassName("e").length ) {
      -            return false;
      -        }
      -
      -        // Safari 3.2 caches class attributes and doesn't catch changes
      -        div.lastChild.className = "e";
      -        return div.getElementsByClassName("e").length === 2;
      -    });
      -
      -    // Check if getElementById returns elements by name
      -    // Check if getElementsByName privileges form controls or returns elements by ID
      -    support.getByName = assert(function( div ) {
      -        // Inject content
      -        div.id = expando + 0;
      -        div.innerHTML = "<a name='" + expando + "'></a><div name='" + expando + "'></div>";
      -        docElem.insertBefore( div, docElem.firstChild );
      -
      -        // Test
      -        var pass = doc.getElementsByName &&
      -            // buggy browsers will return fewer than the correct 2
      -            doc.getElementsByName( expando ).length === 2 +
      -            // buggy browsers will return more than the correct 0
      -            doc.getElementsByName( expando + 0 ).length;
      -        support.getIdNotName = !doc.getElementById( expando );
      -
      -        // Cleanup
      -        docElem.removeChild( div );
      -
      -        return pass;
      -    });
      -
      -    // IE6/7 return modified attributes
      -    Expr.attrHandle = assert(function( div ) {
      -        div.innerHTML = "<a href='#'></a>";
      -        return div.firstChild && typeof div.firstChild.getAttribute !== strundefined &&
      -            div.firstChild.getAttribute("href") === "#";
      -    }) ?
      -        {} :
      -        {
      -            "href": function( elem ) {
      -                return elem.getAttribute( "href", 2 );
      -            },
      -            "type": function( elem ) {
      -                return elem.getAttribute("type");
      -            }
      -        };
      -
      -    // ID find and filter
      -    if ( support.getIdNotName ) {
      -        Expr.find["ID"] = function( id, context ) {
      -            if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
      -                var m = context.getElementById( id );
      -                // Check parentNode to catch when Blackberry 4.6 returns
      -                // nodes that are no longer in the document #6963
      -                return m && m.parentNode ? [m] : [];
      -            }
      -        };
      -        Expr.filter["ID"] = function( id ) {
      -            var attrId = id.replace( runescape, funescape );
      -            return function( elem ) {
      -                return elem.getAttribute("id") === attrId;
      -            };
      -        };
      -    } else {
      -        Expr.find["ID"] = function( id, context ) {
      -            if ( typeof context.getElementById !== strundefined && !documentIsXML ) {
      -                var m = context.getElementById( id );
      -
      -                return m ?
      -                    m.id === id || typeof m.getAttributeNode !== strundefined && m.getAttributeNode("id").value === id ?
      -                        [m] :
      -                        undefined :
      -                    [];
      -            }
      -        };
      -        Expr.filter["ID"] =  function( id ) {
      -            var attrId = id.replace( runescape, funescape );
      -            return function( elem ) {
      -                var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
      -                return node && node.value === attrId;
      -            };
      -        };
      -    }
      -
      -    // Tag
      -    Expr.find["TAG"] = support.tagNameNoComments ?
      -        function( tag, context ) {
      -            if ( typeof context.getElementsByTagName !== strundefined ) {
      -                return context.getElementsByTagName( tag );
      -            }
      -        } :
      -        function( tag, context ) {
      -            var elem,
      -                tmp = [],
      -                i = 0,
      -                results = context.getElementsByTagName( tag );
      -
      -            // Filter out possible comments
      -            if ( tag === "*" ) {
      -                while ( (elem = results[i++]) ) {
      -                    if ( elem.nodeType === 1 ) {
      -                        tmp.push( elem );
      -                    }
      -                }
      -
      -                return tmp;
      -            }
      -            return results;
      -        };
      -
      -    // Name
      -    Expr.find["NAME"] = support.getByName && function( tag, context ) {
      -        if ( typeof context.getElementsByName !== strundefined ) {
      -            return context.getElementsByName( name );
      -        }
      -    };
      -
      -    // Class
      -    Expr.find["CLASS"] = support.getByClassName && function( className, context ) {
      -        if ( typeof context.getElementsByClassName !== strundefined && !documentIsXML ) {
      -            return context.getElementsByClassName( className );
      -        }
      -    };
      -
      -    // QSA and matchesSelector support
      -
      -    // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
      -    rbuggyMatches = [];
      -
      -    // qSa(:focus) reports false when true (Chrome 21),
      -    // no need to also add to buggyMatches since matches checks buggyQSA
      -    // A support test would require too much code (would include document ready)
      -    rbuggyQSA = [ ":focus" ];
      -
      -    if ( (support.qsa = isNative(doc.querySelectorAll)) ) {
      -        // Build QSA regex
      -        // Regex strategy adopted from Diego Perini
      -        assert(function( div ) {
      -            // Select is set to empty string on purpose
      -            // This is to test IE's treatment of not explictly
      -            // setting a boolean content attribute,
      -            // since its presence should be enough
      -            // http://bugs.jquery.com/ticket/12359
      -            div.innerHTML = "<select><option selected=''></option></select>";
      -
      -            // IE8 - Some boolean attributes are not treated correctly
      -            if ( !div.querySelectorAll("[selected]").length ) {
      -                rbuggyQSA.push( "\\[" + whitespace + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)" );
      -            }
      -
      -            // Webkit/Opera - :checked should return selected option elements
      -            // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -            // IE8 throws error here and will not see later tests
      -            if ( !div.querySelectorAll(":checked").length ) {
      -                rbuggyQSA.push(":checked");
      -            }
      -        });
      -
      -        assert(function( div ) {
      -
      -            // Opera 10-12/IE8 - ^= $= *= and empty values
      -            // Should not select anything
      -            div.innerHTML = "<input type='hidden' i=''/>";
      -            if ( div.querySelectorAll("[i^='']").length ) {
      -                rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:\"\"|'')" );
      -            }
      -
      -            // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
      -            // IE8 throws error here and will not see later tests
      -            if ( !div.querySelectorAll(":enabled").length ) {
      -                rbuggyQSA.push( ":enabled", ":disabled" );
      -            }
      -
      -            // Opera 10-11 does not throw on post-comma invalid pseudos
      -            div.querySelectorAll("*,:x");
      -            rbuggyQSA.push(",.*:");
      -        });
      -    }
      -
      -    if ( (support.matchesSelector = isNative( (matches = docElem.matchesSelector ||
      -        docElem.mozMatchesSelector ||
      -        docElem.webkitMatchesSelector ||
      -        docElem.oMatchesSelector ||
      -        docElem.msMatchesSelector) )) ) {
      -
      -        assert(function( div ) {
      -            // Check to see if it's possible to do matchesSelector
      -            // on a disconnected node (IE 9)
      -            support.disconnectedMatch = matches.call( div, "div" );
      -
      -            // This should fail with an exception
      -            // Gecko does not error, returns false instead
      -            matches.call( div, "[s!='']:x" );
      -            rbuggyMatches.push( "!=", pseudos );
      -        });
      -    }
      -
      -    rbuggyQSA = new RegExp( rbuggyQSA.join("|") );
      -    rbuggyMatches = new RegExp( rbuggyMatches.join("|") );
      -
      -    // Element contains another
      -    // Purposefully does not implement inclusive descendent
      -    // As in, an element does not contain itself
      -    contains = isNative(docElem.contains) || docElem.compareDocumentPosition ?
      -        function( a, b ) {
      -            var adown = a.nodeType === 9 ? a.documentElement : a,
      -                bup = b && b.parentNode;
      -            return a === bup || !!( bup && bup.nodeType === 1 && (
      -                adown.contains ?
      -                    adown.contains( bup ) :
      -                    a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
      -            ));
      -        } :
      -        function( a, b ) {
      -            if ( b ) {
      -                while ( (b = b.parentNode) ) {
      -                    if ( b === a ) {
      -                        return true;
      -                    }
      -                }
      -            }
      -            return false;
      -        };
      -
      -    // Document order sorting
      -    sortOrder = docElem.compareDocumentPosition ?
      -    function( a, b ) {
      -        var compare;
      -
      -        if ( a === b ) {
      -            hasDuplicate = true;
      -            return 0;
      -        }
      -
      -        if ( (compare = b.compareDocumentPosition && a.compareDocumentPosition && a.compareDocumentPosition( b )) ) {
      -            if ( compare & 1 || a.parentNode && a.parentNode.nodeType === 11 ) {
      -                if ( a === doc || contains( preferredDoc, a ) ) {
      -                    return -1;
      -                }
      -                if ( b === doc || contains( preferredDoc, b ) ) {
      -                    return 1;
      -                }
      -                return 0;
      -            }
      -            return compare & 4 ? -1 : 1;
      -        }
      -
      -        return a.compareDocumentPosition ? -1 : 1;
      -    } :
      -    function( a, b ) {
      -        var cur,
      -            i = 0,
      -            aup = a.parentNode,
      -            bup = b.parentNode,
      -            ap = [ a ],
      -            bp = [ b ];
      -
      -        // Exit early if the nodes are identical
      -        if ( a === b ) {
      -            hasDuplicate = true;
      -            return 0;
      -
      -        // Parentless nodes are either documents or disconnected
      -        } else if ( !aup || !bup ) {
      -            return a === doc ? -1 :
      -                b === doc ? 1 :
      -                aup ? -1 :
      -                bup ? 1 :
      -                0;
      -
      -        // If the nodes are siblings, we can do a quick check
      -        } else if ( aup === bup ) {
      -            return siblingCheck( a, b );
      -        }
      -
      -        // Otherwise we need full lists of their ancestors for comparison
      -        cur = a;
      -        while ( (cur = cur.parentNode) ) {
      -            ap.unshift( cur );
      -        }
      -        cur = b;
      -        while ( (cur = cur.parentNode) ) {
      -            bp.unshift( cur );
      -        }
      -
      -        // Walk down the tree looking for a discrepancy
      -        while ( ap[i] === bp[i] ) {
      -            i++;
      -        }
      -
      -        return i ?
      -            // Do a sibling check if the nodes have a common ancestor
      -            siblingCheck( ap[i], bp[i] ) :
      -
      -            // Otherwise nodes in our document sort first
      -            ap[i] === preferredDoc ? -1 :
      -            bp[i] === preferredDoc ? 1 :
      -            0;
      -    };
      -
      -    // Always assume the presence of duplicates if sort doesn't
      -    // pass them to our comparison function (as in Google Chrome).
      -    hasDuplicate = false;
      -    [0, 0].sort( sortOrder );
      -    support.detectDuplicates = hasDuplicate;
      -
      -    return document;
      -};
      -
      -Sizzle.matches = function( expr, elements ) {
      -    return Sizzle( expr, null, null, elements );
      -};
      -
      -Sizzle.matchesSelector = function( elem, expr ) {
      -    // Set document vars if needed
      -    if ( ( elem.ownerDocument || elem ) !== document ) {
      -        setDocument( elem );
      -    }
      -
      -    // Make sure that attribute selectors are quoted
      -    expr = expr.replace( rattributeQuotes, "='$1']" );
      -
      -    // rbuggyQSA always contains :focus, so no need for an existence check
      -    if ( support.matchesSelector && !documentIsXML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && !rbuggyQSA.test(expr) ) {
      -        try {
      -            var ret = matches.call( elem, expr );
      -
      -            // IE 9's matchesSelector returns false on disconnected nodes
      -            if ( ret || support.disconnectedMatch ||
      -                    // As well, disconnected nodes are said to be in a document
      -                    // fragment in IE 9
      -                    elem.document && elem.document.nodeType !== 11 ) {
      -                return ret;
      -            }
      -        } catch(e) {}
      -    }
      -
      -    return Sizzle( expr, document, null, [elem] ).length > 0;
      -};
      -
      -Sizzle.contains = function( context, elem ) {
      -    // Set document vars if needed
      -    if ( ( context.ownerDocument || context ) !== document ) {
      -        setDocument( context );
      -    }
      -    return contains( context, elem );
      -};
      -
      -Sizzle.attr = function( elem, name ) {
      -    var val;
      -
      -    // Set document vars if needed
      -    if ( ( elem.ownerDocument || elem ) !== document ) {
      -        setDocument( elem );
      -    }
      -
      -    if ( !documentIsXML ) {
      -        name = name.toLowerCase();
      -    }
      -    if ( (val = Expr.attrHandle[ name ]) ) {
      -        return val( elem );
      -    }
      -    if ( documentIsXML || support.attributes ) {
      -        return elem.getAttribute( name );
      -    }
      -    return ( (val = elem.getAttributeNode( name )) || elem.getAttribute( name ) ) && elem[ name ] === true ?
      -        name :
      -        val && val.specified ? val.value : null;
      -};
      -
      -Sizzle.error = function( msg ) {
      -    throw new Error( "Syntax error, unrecognized expression: " + msg );
      -};
      -
      -// Document sorting and removing duplicates
      -Sizzle.uniqueSort = function( results ) {
      -    var elem,
      -        duplicates = [],
      -        i = 1,
      -        j = 0;
      -
      -    // Unless we *know* we can detect duplicates, assume their presence
      -    hasDuplicate = !support.detectDuplicates;
      -    results.sort( sortOrder );
      -
      -    if ( hasDuplicate ) {
      -        for ( ; (elem = results[i]); i++ ) {
      -            if ( elem === results[ i - 1 ] ) {
      -                j = duplicates.push( i );
      -            }
      -        }
      -        while ( j-- ) {
      -            results.splice( duplicates[ j ], 1 );
      -        }
      -    }
      -
      -    return results;
      -};
      -
      -function siblingCheck( a, b ) {
      -    var cur = b && a,
      -        diff = cur && ( ~b.sourceIndex || MAX_NEGATIVE ) - ( ~a.sourceIndex || MAX_NEGATIVE );
      -
      -    // Use IE sourceIndex if available on both nodes
      -    if ( diff ) {
      -        return diff;
      -    }
      -
      -    // Check if b follows a
      -    if ( cur ) {
      -        while ( (cur = cur.nextSibling) ) {
      -            if ( cur === b ) {
      -                return -1;
      -            }
      -        }
      -    }
      -
      -    return a ? 1 : -1;
      -}
      -
      -// Returns a function to use in pseudos for input types
      -function createInputPseudo( type ) {
      -    return function( elem ) {
      -        var name = elem.nodeName.toLowerCase();
      -        return name === "input" && elem.type === type;
      -    };
      -}
      -
      -// Returns a function to use in pseudos for buttons
      -function createButtonPseudo( type ) {
      -    return function( elem ) {
      -        var name = elem.nodeName.toLowerCase();
      -        return (name === "input" || name === "button") && elem.type === type;
      -    };
      -}
      -
      -// Returns a function to use in pseudos for positionals
      -function createPositionalPseudo( fn ) {
      -    return markFunction(function( argument ) {
      -        argument = +argument;
      -        return markFunction(function( seed, matches ) {
      -            var j,
      -                matchIndexes = fn( [], seed.length, argument ),
      -                i = matchIndexes.length;
      -
      -            // Match elements found at the specified indexes
      -            while ( i-- ) {
      -                if ( seed[ (j = matchIndexes[i]) ] ) {
      -                    seed[j] = !(matches[j] = seed[j]);
      -                }
      -            }
      -        });
      -    });
      -}
      -
      -/**
      - * Utility function for retrieving the text value of an array of DOM nodes
      - * @param {Array|Element} elem
      - */
      -getText = Sizzle.getText = function( elem ) {
      -    var node,
      -        ret = "",
      -        i = 0,
      -        nodeType = elem.nodeType;
      -
      -    if ( !nodeType ) {
      -        // If no nodeType, this is expected to be an array
      -        for ( ; (node = elem[i]); i++ ) {
      -            // Do not traverse comment nodes
      -            ret += getText( node );
      -        }
      -    } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
      -        // Use textContent for elements
      -        // innerText usage removed for consistency of new lines (see #11153)
      -        if ( typeof elem.textContent === "string" ) {
      -            return elem.textContent;
      -        } else {
      -            // Traverse its children
      -            for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -                ret += getText( elem );
      -            }
      -        }
      -    } else if ( nodeType === 3 || nodeType === 4 ) {
      -        return elem.nodeValue;
      -    }
      -    // Do not include comment or processing instruction nodes
      -
      -    return ret;
      -};
      -
      -Expr = Sizzle.selectors = {
      -
      -    // Can be adjusted by the user
      -    cacheLength: 50,
      -
      -    createPseudo: markFunction,
      -
      -    match: matchExpr,
      -
      -    find: {},
      -
      -    relative: {
      -        ">": { dir: "parentNode", first: true },
      -        " ": { dir: "parentNode" },
      -        "+": { dir: "previousSibling", first: true },
      -        "~": { dir: "previousSibling" }
      -    },
      -
      -    preFilter: {
      -        "ATTR": function( match ) {
      -            match[1] = match[1].replace( runescape, funescape );
      -
      -            // Move the given value to match[3] whether quoted or unquoted
      -            match[3] = ( match[4] || match[5] || "" ).replace( runescape, funescape );
      -
      -            if ( match[2] === "~=" ) {
      -                match[3] = " " + match[3] + " ";
      -            }
      -
      -            return match.slice( 0, 4 );
      -        },
      -
      -        "CHILD": function( match ) {
      -            /* matches from matchExpr["CHILD"]
      -                1 type (only|nth|...)
      -                2 what (child|of-type)
      -                3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
      -                4 xn-component of xn+y argument ([+-]?\d*n|)
      -                5 sign of xn-component
      -                6 x of xn-component
      -                7 sign of y-component
      -                8 y of y-component
      -            */
      -            match[1] = match[1].toLowerCase();
      -
      -            if ( match[1].slice( 0, 3 ) === "nth" ) {
      -                // nth-* requires argument
      -                if ( !match[3] ) {
      -                    Sizzle.error( match[0] );
      -                }
      -
      -                // numeric x and y parameters for Expr.filter.CHILD
      -                // remember that false/true cast respectively to 0/1
      -                match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
      -                match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
      -
      -            // other types prohibit arguments
      -            } else if ( match[3] ) {
      -                Sizzle.error( match[0] );
      -            }
      -
      -            return match;
      -        },
      -
      -        "PSEUDO": function( match ) {
      -            var excess,
      -                unquoted = !match[5] && match[2];
      -
      -            if ( matchExpr["CHILD"].test( match[0] ) ) {
      -                return null;
      -            }
      -
      -            // Accept quoted arguments as-is
      -            if ( match[4] ) {
      -                match[2] = match[4];
      -
      -            // Strip excess characters from unquoted arguments
      -            } else if ( unquoted && rpseudo.test( unquoted ) &&
      -                // Get excess from tokenize (recursively)
      -                (excess = tokenize( unquoted, true )) &&
      -                // advance to the next closing parenthesis
      -                (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
      -
      -                // excess is a negative index
      -                match[0] = match[0].slice( 0, excess );
      -                match[2] = unquoted.slice( 0, excess );
      -            }
      -
      -            // Return only captures needed by the pseudo filter method (type and argument)
      -            return match.slice( 0, 3 );
      -        }
      -    },
      -
      -    filter: {
      -
      -        "TAG": function( nodeName ) {
      -            if ( nodeName === "*" ) {
      -                return function() { return true; };
      -            }
      -
      -            nodeName = nodeName.replace( runescape, funescape ).toLowerCase();
      -            return function( elem ) {
      -                return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
      -            };
      -        },
      -
      -        "CLASS": function( className ) {
      -            var pattern = classCache[ className + " " ];
      -
      -            return pattern ||
      -                (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
      -                classCache( className, function( elem ) {
      -                    return pattern.test( elem.className || (typeof elem.getAttribute !== strundefined && elem.getAttribute("class")) || "" );
      -                });
      -        },
      -
      -        "ATTR": function( name, operator, check ) {
      -            return function( elem ) {
      -                var result = Sizzle.attr( elem, name );
      -
      -                if ( result == null ) {
      -                    return operator === "!=";
      -                }
      -                if ( !operator ) {
      -                    return true;
      -                }
      -
      -                result += "";
      -
      -                return operator === "=" ? result === check :
      -                    operator === "!=" ? result !== check :
      -                    operator === "^=" ? check && result.indexOf( check ) === 0 :
      -                    operator === "*=" ? check && result.indexOf( check ) > -1 :
      -                    operator === "$=" ? check && result.slice( -check.length ) === check :
      -                    operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
      -                    operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
      -                    false;
      -            };
      -        },
      -
      -        "CHILD": function( type, what, argument, first, last ) {
      -            var simple = type.slice( 0, 3 ) !== "nth",
      -                forward = type.slice( -4 ) !== "last",
      -                ofType = what === "of-type";
      -
      -            return first === 1 && last === 0 ?
      -
      -                // Shortcut for :nth-*(n)
      -                function( elem ) {
      -                    return !!elem.parentNode;
      -                } :
      -
      -                function( elem, context, xml ) {
      -                    var cache, outerCache, node, diff, nodeIndex, start,
      -                        dir = simple !== forward ? "nextSibling" : "previousSibling",
      -                        parent = elem.parentNode,
      -                        name = ofType && elem.nodeName.toLowerCase(),
      -                        useCache = !xml && !ofType;
      -
      -                    if ( parent ) {
      -
      -                        // :(first|last|only)-(child|of-type)
      -                        if ( simple ) {
      -                            while ( dir ) {
      -                                node = elem;
      -                                while ( (node = node[ dir ]) ) {
      -                                    if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
      -                                        return false;
      -                                    }
      -                                }
      -                                // Reverse direction for :only-* (if we haven't yet done so)
      -                                start = dir = type === "only" && !start && "nextSibling";
      -                            }
      -                            return true;
      -                        }
      -
      -                        start = [ forward ? parent.firstChild : parent.lastChild ];
      -
      -                        // non-xml :nth-child(...) stores cache data on `parent`
      -                        if ( forward && useCache ) {
      -                            // Seek `elem` from a previously-cached index
      -                            outerCache = parent[ expando ] || (parent[ expando ] = {});
      -                            cache = outerCache[ type ] || [];
      -                            nodeIndex = cache[0] === dirruns && cache[1];
      -                            diff = cache[0] === dirruns && cache[2];
      -                            node = nodeIndex && parent.childNodes[ nodeIndex ];
      -
      -                            while ( (node = ++nodeIndex && node && node[ dir ] ||
      -
      -                                // Fallback to seeking `elem` from the start
      -                                (diff = nodeIndex = 0) || start.pop()) ) {
      -
      -                                // When found, cache indexes on `parent` and break
      -                                if ( node.nodeType === 1 && ++diff && node === elem ) {
      -                                    outerCache[ type ] = [ dirruns, nodeIndex, diff ];
      -                                    break;
      -                                }
      -                            }
      -
      -                        // Use previously-cached element index if available
      -                        } else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
      -                            diff = cache[1];
      -
      -                        // xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
      -                        } else {
      -                            // Use the same loop as above to seek `elem` from the start
      -                            while ( (node = ++nodeIndex && node && node[ dir ] ||
      -                                (diff = nodeIndex = 0) || start.pop()) ) {
      -
      -                                if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
      -                                    // Cache the index of each encountered element
      -                                    if ( useCache ) {
      -                                        (node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
      -                                    }
      -
      -                                    if ( node === elem ) {
      -                                        break;
      -                                    }
      -                                }
      -                            }
      -                        }
      -
      -                        // Incorporate the offset, then check against cycle size
      -                        diff -= last;
      -                        return diff === first || ( diff % first === 0 && diff / first >= 0 );
      -                    }
      -                };
      -        },
      -
      -        "PSEUDO": function( pseudo, argument ) {
      -            // pseudo-class names are case-insensitive
      -            // http://www.w3.org/TR/selectors/#pseudo-classes
      -            // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
      -            // Remember that setFilters inherits from pseudos
      -            var args,
      -                fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
      -                    Sizzle.error( "unsupported pseudo: " + pseudo );
      -
      -            // The user may use createPseudo to indicate that
      -            // arguments are needed to create the filter function
      -            // just as Sizzle does
      -            if ( fn[ expando ] ) {
      -                return fn( argument );
      -            }
      -
      -            // But maintain support for old signatures
      -            if ( fn.length > 1 ) {
      -                args = [ pseudo, pseudo, "", argument ];
      -                return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
      -                    markFunction(function( seed, matches ) {
      -                        var idx,
      -                            matched = fn( seed, argument ),
      -                            i = matched.length;
      -                        while ( i-- ) {
      -                            idx = indexOf.call( seed, matched[i] );
      -                            seed[ idx ] = !( matches[ idx ] = matched[i] );
      -                        }
      -                    }) :
      -                    function( elem ) {
      -                        return fn( elem, 0, args );
      -                    };
      -            }
      -
      -            return fn;
      -        }
      -    },
      -
      -    pseudos: {
      -        // Potentially complex pseudos
      -        "not": markFunction(function( selector ) {
      -            // Trim the selector passed to compile
      -            // to avoid treating leading and trailing
      -            // spaces as combinators
      -            var input = [],
      -                results = [],
      -                matcher = compile( selector.replace( rtrim, "$1" ) );
      -
      -            return matcher[ expando ] ?
      -                markFunction(function( seed, matches, context, xml ) {
      -                    var elem,
      -                        unmatched = matcher( seed, null, xml, [] ),
      -                        i = seed.length;
      -
      -                    // Match elements unmatched by `matcher`
      -                    while ( i-- ) {
      -                        if ( (elem = unmatched[i]) ) {
      -                            seed[i] = !(matches[i] = elem);
      -                        }
      -                    }
      -                }) :
      -                function( elem, context, xml ) {
      -                    input[0] = elem;
      -                    matcher( input, null, xml, results );
      -                    return !results.pop();
      -                };
      -        }),
      -
      -        "has": markFunction(function( selector ) {
      -            return function( elem ) {
      -                return Sizzle( selector, elem ).length > 0;
      -            };
      -        }),
      -
      -        "contains": markFunction(function( text ) {
      -            return function( elem ) {
      -                return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
      -            };
      -        }),
      -
      -        // "Whether an element is represented by a :lang() selector
      -        // is based solely on the element's language value
      -        // being equal to the identifier C,
      -        // or beginning with the identifier C immediately followed by "-".
      -        // The matching of C against the element's language value is performed case-insensitively.
      -        // The identifier C does not have to be a valid language name."
      -        // http://www.w3.org/TR/selectors/#lang-pseudo
      -        "lang": markFunction( function( lang ) {
      -            // lang value must be a valid identifider
      -            if ( !ridentifier.test(lang || "") ) {
      -                Sizzle.error( "unsupported lang: " + lang );
      -            }
      -            lang = lang.replace( runescape, funescape ).toLowerCase();
      -            return function( elem ) {
      -                var elemLang;
      -                do {
      -                    if ( (elemLang = documentIsXML ?
      -                        elem.getAttribute("xml:lang") || elem.getAttribute("lang") :
      -                        elem.lang) ) {
      -
      -                        elemLang = elemLang.toLowerCase();
      -                        return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
      -                    }
      -                } while ( (elem = elem.parentNode) && elem.nodeType === 1 );
      -                return false;
      -            };
      -        }),
      -
      -        // Miscellaneous
      -        "target": function( elem ) {
      -            var hash = window.location && window.location.hash;
      -            return hash && hash.slice( 1 ) === elem.id;
      -        },
      -
      -        "root": function( elem ) {
      -            return elem === docElem;
      -        },
      -
      -        "focus": function( elem ) {
      -            return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
      -        },
      -
      -        // Boolean properties
      -        "enabled": function( elem ) {
      -            return elem.disabled === false;
      -        },
      -
      -        "disabled": function( elem ) {
      -            return elem.disabled === true;
      -        },
      -
      -        "checked": function( elem ) {
      -            // In CSS3, :checked should return both checked and selected elements
      -            // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
      -            var nodeName = elem.nodeName.toLowerCase();
      -            return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
      -        },
      -
      -        "selected": function( elem ) {
      -            // Accessing this property makes selected-by-default
      -            // options in Safari work properly
      -            if ( elem.parentNode ) {
      -                elem.parentNode.selectedIndex;
      -            }
      -
      -            return elem.selected === true;
      -        },
      -
      -        // Contents
      -        "empty": function( elem ) {
      -            // http://www.w3.org/TR/selectors/#empty-pseudo
      -            // :empty is only affected by element nodes and content nodes(including text(3), cdata(4)),
      -            //   not comment, processing instructions, or others
      -            // Thanks to Diego Perini for the nodeName shortcut
      -            //   Greater than "@" means alpha characters (specifically not starting with "#" or "?")
      -            for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
      -                if ( elem.nodeName > "@" || elem.nodeType === 3 || elem.nodeType === 4 ) {
      -                    return false;
      -                }
      -            }
      -            return true;
      -        },
      -
      -        "parent": function( elem ) {
      -            return !Expr.pseudos["empty"]( elem );
      -        },
      -
      -        // Element/input types
      -        "header": function( elem ) {
      -            return rheader.test( elem.nodeName );
      -        },
      -
      -        "input": function( elem ) {
      -            return rinputs.test( elem.nodeName );
      -        },
      -
      -        "button": function( elem ) {
      -            var name = elem.nodeName.toLowerCase();
      -            return name === "input" && elem.type === "button" || name === "button";
      -        },
      -
      -        "text": function( elem ) {
      -            var attr;
      -            // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
      -            // use getAttribute instead to test this case
      -            return elem.nodeName.toLowerCase() === "input" &&
      -                elem.type === "text" &&
      -                ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === elem.type );
      -        },
      -
      -        // Position-in-collection
      -        "first": createPositionalPseudo(function() {
      -            return [ 0 ];
      -        }),
      -
      -        "last": createPositionalPseudo(function( matchIndexes, length ) {
      -            return [ length - 1 ];
      -        }),
      -
      -        "eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -            return [ argument < 0 ? argument + length : argument ];
      -        }),
      -
      -        "even": createPositionalPseudo(function( matchIndexes, length ) {
      -            var i = 0;
      -            for ( ; i < length; i += 2 ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        }),
      -
      -        "odd": createPositionalPseudo(function( matchIndexes, length ) {
      -            var i = 1;
      -            for ( ; i < length; i += 2 ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        }),
      -
      -        "lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -            var i = argument < 0 ? argument + length : argument;
      -            for ( ; --i >= 0; ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        }),
      -
      -        "gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
      -            var i = argument < 0 ? argument + length : argument;
      -            for ( ; ++i < length; ) {
      -                matchIndexes.push( i );
      -            }
      -            return matchIndexes;
      -        })
      -    }
      -};
      -
      -// Add button/input type pseudos
      -for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
      -    Expr.pseudos[ i ] = createInputPseudo( i );
      -}
      -for ( i in { submit: true, reset: true } ) {
      -    Expr.pseudos[ i ] = createButtonPseudo( i );
      -}
      -
      -function tokenize( selector, parseOnly ) {
      -    var matched, match, tokens, type,
      -        soFar, groups, preFilters,
      -        cached = tokenCache[ selector + " " ];
      -
      -    if ( cached ) {
      -        return parseOnly ? 0 : cached.slice( 0 );
      -    }
      -
      -    soFar = selector;
      -    groups = [];
      -    preFilters = Expr.preFilter;
      -
      -    while ( soFar ) {
      -
      -        // Comma and first run
      -        if ( !matched || (match = rcomma.exec( soFar )) ) {
      -            if ( match ) {
      -                // Don't consume trailing commas as valid
      -                soFar = soFar.slice( match[0].length ) || soFar;
      -            }
      -            groups.push( tokens = [] );
      -        }
      -
      -        matched = false;
      -
      -        // Combinators
      -        if ( (match = rcombinators.exec( soFar )) ) {
      -            matched = match.shift();
      -            tokens.push( {
      -                value: matched,
      -                // Cast descendant combinators to space
      -                type: match[0].replace( rtrim, " " )
      -            } );
      -            soFar = soFar.slice( matched.length );
      -        }
      -
      -        // Filters
      -        for ( type in Expr.filter ) {
      -            if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
      -                (match = preFilters[ type ]( match ))) ) {
      -                matched = match.shift();
      -                tokens.push( {
      -                    value: matched,
      -                    type: type,
      -                    matches: match
      -                } );
      -                soFar = soFar.slice( matched.length );
      -            }
      -        }
      -
      -        if ( !matched ) {
      -            break;
      -        }
      -    }
      -
      -    // Return the length of the invalid excess
      -    // if we're just parsing
      -    // Otherwise, throw an error or return tokens
      -    return parseOnly ?
      -        soFar.length :
      -        soFar ?
      -            Sizzle.error( selector ) :
      -            // Cache the tokens
      -            tokenCache( selector, groups ).slice( 0 );
      -}
      -
      -function toSelector( tokens ) {
      -    var i = 0,
      -        len = tokens.length,
      -        selector = "";
      -    for ( ; i < len; i++ ) {
      -        selector += tokens[i].value;
      -    }
      -    return selector;
      -}
      -
      -function addCombinator( matcher, combinator, base ) {
      -    var dir = combinator.dir,
      -        checkNonElements = base && dir === "parentNode",
      -        doneName = done++;
      -
      -    return combinator.first ?
      -        // Check against closest ancestor/preceding element
      -        function( elem, context, xml ) {
      -            while ( (elem = elem[ dir ]) ) {
      -                if ( elem.nodeType === 1 || checkNonElements ) {
      -                    return matcher( elem, context, xml );
      -                }
      -            }
      -        } :
      -
      -        // Check against all ancestor/preceding elements
      -        function( elem, context, xml ) {
      -            var data, cache, outerCache,
      -                dirkey = dirruns + " " + doneName;
      -
      -            // We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
      -            if ( xml ) {
      -                while ( (elem = elem[ dir ]) ) {
      -                    if ( elem.nodeType === 1 || checkNonElements ) {
      -                        if ( matcher( elem, context, xml ) ) {
      -                            return true;
      -                        }
      -                    }
      -                }
      -            } else {
      -                while ( (elem = elem[ dir ]) ) {
      -                    if ( elem.nodeType === 1 || checkNonElements ) {
      -                        outerCache = elem[ expando ] || (elem[ expando ] = {});
      -                        if ( (cache = outerCache[ dir ]) && cache[0] === dirkey ) {
      -                            if ( (data = cache[1]) === true || data === cachedruns ) {
      -                                return data === true;
      -                            }
      -                        } else {
      -                            cache = outerCache[ dir ] = [ dirkey ];
      -                            cache[1] = matcher( elem, context, xml ) || cachedruns;
      -                            if ( cache[1] === true ) {
      -                                return true;
      -                            }
      -                        }
      -                    }
      -                }
      -            }
      -        };
      -}
      -
      -function elementMatcher( matchers ) {
      -    return matchers.length > 1 ?
      -        function( elem, context, xml ) {
      -            var i = matchers.length;
      -            while ( i-- ) {
      -                if ( !matchers[i]( elem, context, xml ) ) {
      -                    return false;
      -                }
      -            }
      -            return true;
      -        } :
      -        matchers[0];
      -}
      -
      -function condense( unmatched, map, filter, context, xml ) {
      -    var elem,
      -        newUnmatched = [],
      -        i = 0,
      -        len = unmatched.length,
      -        mapped = map != null;
      -
      -    for ( ; i < len; i++ ) {
      -        if ( (elem = unmatched[i]) ) {
      -            if ( !filter || filter( elem, context, xml ) ) {
      -                newUnmatched.push( elem );
      -                if ( mapped ) {
      -                    map.push( i );
      -                }
      -            }
      -        }
      -    }
      -
      -    return newUnmatched;
      -}
      -
      -function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
      -    if ( postFilter && !postFilter[ expando ] ) {
      -        postFilter = setMatcher( postFilter );
      -    }
      -    if ( postFinder && !postFinder[ expando ] ) {
      -        postFinder = setMatcher( postFinder, postSelector );
      -    }
      -    return markFunction(function( seed, results, context, xml ) {
      -        var temp, i, elem,
      -            preMap = [],
      -            postMap = [],
      -            preexisting = results.length,
      -
      -            // Get initial elements from seed or context
      -            elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
      -
      -            // Prefilter to get matcher input, preserving a map for seed-results synchronization
      -            matcherIn = preFilter && ( seed || !selector ) ?
      -                condense( elems, preMap, preFilter, context, xml ) :
      -                elems,
      -
      -            matcherOut = matcher ?
      -                // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
      -                postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
      -
      -                    // ...intermediate processing is necessary
      -                    [] :
      -
      -                    // ...otherwise use results directly
      -                    results :
      -                matcherIn;
      -
      -        // Find primary matches
      -        if ( matcher ) {
      -            matcher( matcherIn, matcherOut, context, xml );
      -        }
      -
      -        // Apply postFilter
      -        if ( postFilter ) {
      -            temp = condense( matcherOut, postMap );
      -            postFilter( temp, [], context, xml );
      -
      -            // Un-match failing elements by moving them back to matcherIn
      -            i = temp.length;
      -            while ( i-- ) {
      -                if ( (elem = temp[i]) ) {
      -                    matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
      -                }
      -            }
      -        }
      -
      -        if ( seed ) {
      -            if ( postFinder || preFilter ) {
      -                if ( postFinder ) {
      -                    // Get the final matcherOut by condensing this intermediate into postFinder contexts
      -                    temp = [];
      -                    i = matcherOut.length;
      -                    while ( i-- ) {
      -                        if ( (elem = matcherOut[i]) ) {
      -                            // Restore matcherIn since elem is not yet a final match
      -                            temp.push( (matcherIn[i] = elem) );
      -                        }
      -                    }
      -                    postFinder( null, (matcherOut = []), temp, xml );
      -                }
      -
      -                // Move matched elements from seed to results to keep them synchronized
      -                i = matcherOut.length;
      -                while ( i-- ) {
      -                    if ( (elem = matcherOut[i]) &&
      -                        (temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
      -
      -                        seed[temp] = !(results[temp] = elem);
      -                    }
      -                }
      -            }
      -
      -        // Add elements to results, through postFinder if defined
      -        } else {
      -            matcherOut = condense(
      -                matcherOut === results ?
      -                    matcherOut.splice( preexisting, matcherOut.length ) :
      -                    matcherOut
      -            );
      -            if ( postFinder ) {
      -                postFinder( null, results, matcherOut, xml );
      -            } else {
      -                push.apply( results, matcherOut );
      -            }
      -        }
      -    });
      -}
      -
      -function matcherFromTokens( tokens ) {
      -    var checkContext, matcher, j,
      -        len = tokens.length,
      -        leadingRelative = Expr.relative[ tokens[0].type ],
      -        implicitRelative = leadingRelative || Expr.relative[" "],
      -        i = leadingRelative ? 1 : 0,
      -
      -        // The foundational matcher ensures that elements are reachable from top-level context(s)
      -        matchContext = addCombinator( function( elem ) {
      -            return elem === checkContext;
      -        }, implicitRelative, true ),
      -        matchAnyContext = addCombinator( function( elem ) {
      -            return indexOf.call( checkContext, elem ) > -1;
      -        }, implicitRelative, true ),
      -        matchers = [ function( elem, context, xml ) {
      -            return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
      -                (checkContext = context).nodeType ?
      -                    matchContext( elem, context, xml ) :
      -                    matchAnyContext( elem, context, xml ) );
      -        } ];
      -
      -    for ( ; i < len; i++ ) {
      -        if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
      -            matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
      -        } else {
      -            matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
      -
      -            // Return special upon seeing a positional matcher
      -            if ( matcher[ expando ] ) {
      -                // Find the next relative operator (if any) for proper handling
      -                j = ++i;
      -                for ( ; j < len; j++ ) {
      -                    if ( Expr.relative[ tokens[j].type ] ) {
      -                        break;
      -                    }
      -                }
      -                return setMatcher(
      -                    i > 1 && elementMatcher( matchers ),
      -                    i > 1 && toSelector( tokens.slice( 0, i - 1 ) ).replace( rtrim, "$1" ),
      -                    matcher,
      -                    i < j && matcherFromTokens( tokens.slice( i, j ) ),
      -                    j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
      -                    j < len && toSelector( tokens )
      -                );
      -            }
      -            matchers.push( matcher );
      -        }
      -    }
      -
      -    return elementMatcher( matchers );
      -}
      -
      -function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
      -    // A counter to specify which element is currently being matched
      -    var matcherCachedRuns = 0,
      -        bySet = setMatchers.length > 0,
      -        byElement = elementMatchers.length > 0,
      -        superMatcher = function( seed, context, xml, results, expandContext ) {
      -            var elem, j, matcher,
      -                setMatched = [],
      -                matchedCount = 0,
      -                i = "0",
      -                unmatched = seed && [],
      -                outermost = expandContext != null,
      -                contextBackup = outermostContext,
      -                // We must always have either seed elements or context
      -                elems = seed || byElement && Expr.find["TAG"]( "*", expandContext && context.parentNode || context ),
      -                // Use integer dirruns iff this is the outermost matcher
      -                dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1);
      -
      -            if ( outermost ) {
      -                outermostContext = context !== document && context;
      -                cachedruns = matcherCachedRuns;
      -            }
      -
      -            // Add elements passing elementMatchers directly to results
      -            // Keep `i` a string if there are no elements so `matchedCount` will be "00" below
      -            for ( ; (elem = elems[i]) != null; i++ ) {
      -                if ( byElement && elem ) {
      -                    j = 0;
      -                    while ( (matcher = elementMatchers[j++]) ) {
      -                        if ( matcher( elem, context, xml ) ) {
      -                            results.push( elem );
      -                            break;
      -                        }
      -                    }
      -                    if ( outermost ) {
      -                        dirruns = dirrunsUnique;
      -                        cachedruns = ++matcherCachedRuns;
      -                    }
      -                }
      -
      -                // Track unmatched elements for set filters
      -                if ( bySet ) {
      -                    // They will have gone through all possible matchers
      -                    if ( (elem = !matcher && elem) ) {
      -                        matchedCount--;
      -                    }
      -
      -                    // Lengthen the array for every element, matched or not
      -                    if ( seed ) {
      -                        unmatched.push( elem );
      -                    }
      -                }
      -            }
      -
      -            // Apply set filters to unmatched elements
      -            matchedCount += i;
      -            if ( bySet && i !== matchedCount ) {
      -                j = 0;
      -                while ( (matcher = setMatchers[j++]) ) {
      -                    matcher( unmatched, setMatched, context, xml );
      -                }
      -
      -                if ( seed ) {
      -                    // Reintegrate element matches to eliminate the need for sorting
      -                    if ( matchedCount > 0 ) {
      -                        while ( i-- ) {
      -                            if ( !(unmatched[i] || setMatched[i]) ) {
      -                                setMatched[i] = pop.call( results );
      -                            }
      -                        }
      -                    }
      -
      -                    // Discard index placeholder values to get only actual matches
      -                    setMatched = condense( setMatched );
      -                }
      -
      -                // Add matches to results
      -                push.apply( results, setMatched );
      -
      -                // Seedless set matches succeeding multiple successful matchers stipulate sorting
      -                if ( outermost && !seed && setMatched.length > 0 &&
      -                    ( matchedCount + setMatchers.length ) > 1 ) {
      -
      -                    Sizzle.uniqueSort( results );
      -                }
      -            }
      -
      -            // Override manipulation of globals by nested matchers
      -            if ( outermost ) {
      -                dirruns = dirrunsUnique;
      -                outermostContext = contextBackup;
      -            }
      -
      -            return unmatched;
      -        };
      -
      -    return bySet ?
      -        markFunction( superMatcher ) :
      -        superMatcher;
      -}
      -
      -compile = Sizzle.compile = function( selector, group /* Internal Use Only */ ) {
      -    var i,
      -        setMatchers = [],
      -        elementMatchers = [],
      -        cached = compilerCache[ selector + " " ];
      -
      -    if ( !cached ) {
      -        // Generate a function of recursive functions that can be used to check each element
      -        if ( !group ) {
      -            group = tokenize( selector );
      -        }
      -        i = group.length;
      -        while ( i-- ) {
      -            cached = matcherFromTokens( group[i] );
      -            if ( cached[ expando ] ) {
      -                setMatchers.push( cached );
      -            } else {
      -                elementMatchers.push( cached );
      -            }
      -        }
      -
      -        // Cache the compiled function
      -        cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
      -    }
      -    return cached;
      -};
      -
      -function multipleContexts( selector, contexts, results ) {
      -    var i = 0,
      -        len = contexts.length;
      -    for ( ; i < len; i++ ) {
      -        Sizzle( selector, contexts[i], results );
      -    }
      -    return results;
      -}
      -
      -function select( selector, context, results, seed ) {
      -    var i, tokens, token, type, find,
      -        match = tokenize( selector );
      -
      -    if ( !seed ) {
      -        // Try to minimize operations if there is only one group
      -        if ( match.length === 1 ) {
      -
      -            // Take a shortcut and set the context if the root selector is an ID
      -            tokens = match[0] = match[0].slice( 0 );
      -            if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
      -                    context.nodeType === 9 && !documentIsXML &&
      -                    Expr.relative[ tokens[1].type ] ) {
      -
      -                context = Expr.find["ID"]( token.matches[0].replace( runescape, funescape ), context )[0];
      -                if ( !context ) {
      -                    return results;
      -                }
      -
      -                selector = selector.slice( tokens.shift().value.length );
      -            }
      -
      -            // Fetch a seed set for right-to-left matching
      -            i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
      -            while ( i-- ) {
      -                token = tokens[i];
      -
      -                // Abort if we hit a combinator
      -                if ( Expr.relative[ (type = token.type) ] ) {
      -                    break;
      -                }
      -                if ( (find = Expr.find[ type ]) ) {
      -                    // Search, expanding context for leading sibling combinators
      -                    if ( (seed = find(
      -                        token.matches[0].replace( runescape, funescape ),
      -                        rsibling.test( tokens[0].type ) && context.parentNode || context
      -                    )) ) {
      -
      -                        // If seed is empty or no tokens remain, we can return early
      -                        tokens.splice( i, 1 );
      -                        selector = seed.length && toSelector( tokens );
      -                        if ( !selector ) {
      -                            push.apply( results, slice.call( seed, 0 ) );
      -                            return results;
      -                        }
      -
      -                        break;
      -                    }
      -                }
      -            }
      -        }
      -    }
      -
      -    // Compile and execute a filtering function
      -    // Provide `match` to avoid retokenization if we modified the selector above
      -    compile( selector, match )(
      -        seed,
      -        context,
      -        documentIsXML,
      -        results,
      -        rsibling.test( selector )
      -    );
      -    return results;
      -}
      -
      -// Deprecated
      -Expr.pseudos["nth"] = Expr.pseudos["eq"];
      -
      -// Easy API for creating new setFilters
      -function setFilters() {}
      -Expr.filters = setFilters.prototype = Expr.pseudos;
      -Expr.setFilters = new setFilters();
      -
      -// Initialize with the default document
      -setDocument();
      -
      -// Override sizzle attribute retrieval
      -Sizzle.attr = jQuery.attr;
      -jQuery.find = Sizzle;
      -jQuery.expr = Sizzle.selectors;
      -jQuery.expr[":"] = jQuery.expr.pseudos;
      -jQuery.unique = Sizzle.uniqueSort;
      -jQuery.text = Sizzle.getText;
      -jQuery.isXMLDoc = Sizzle.isXML;
      -jQuery.contains = Sizzle.contains;
      -
      -
      -})( window );
      -var runtil = /Until$/,
      -    rparentsprev = /^(?:parents|prev(?:Until|All))/,
      -    isSimple = /^.[^:#\[\.,]*$/,
      -    rneedsContext = jQuery.expr.match.needsContext,
      -    // methods guaranteed to produce a unique set when starting from a unique set
      -    guaranteedUnique = {
      -        children: true,
      -        contents: true,
      -        next: true,
      -        prev: true
      -    };
      -
      -jQuery.fn.extend({
      -    find: function( selector ) {
      -        var i, ret, self,
      -            len = this.length;
      -
      -        if ( typeof selector !== "string" ) {
      -            self = this;
      -            return this.pushStack( jQuery( selector ).filter(function() {
      -                for ( i = 0; i < len; i++ ) {
      -                    if ( jQuery.contains( self[ i ], this ) ) {
      -                        return true;
      -                    }
      -                }
      -            }) );
      -        }
      -
      -        ret = [];
      -        for ( i = 0; i < len; i++ ) {
      -            jQuery.find( selector, this[ i ], ret );
      -        }
      -
      -        // Needed because $( selector, context ) becomes $( context ).find( selector )
      -        ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
      -        ret.selector = ( this.selector ? this.selector + " " : "" ) + selector;
      -        return ret;
      -    },
      -
      -    has: function( target ) {
      -        var i,
      -            targets = jQuery( target, this ),
      -            len = targets.length;
      -
      -        return this.filter(function() {
      -            for ( i = 0; i < len; i++ ) {
      -                if ( jQuery.contains( this, targets[i] ) ) {
      -                    return true;
      -                }
      -            }
      -        });
      -    },
      -
      -    not: function( selector ) {
      -        return this.pushStack( winnow(this, selector, false) );
      -    },
      -
      -    filter: function( selector ) {
      -        return this.pushStack( winnow(this, selector, true) );
      -    },
      -
      -    is: function( selector ) {
      -        return !!selector && (
      -            typeof selector === "string" ?
      -                // If this is a positional/relative selector, check membership in the returned set
      -                // so $("p:first").is("p:last") won't return true for a doc with two "p".
      -                rneedsContext.test( selector ) ?
      -                    jQuery( selector, this.context ).index( this[0] ) >= 0 :
      -                    jQuery.filter( selector, this ).length > 0 :
      -                this.filter( selector ).length > 0 );
      -    },
      -
      -    closest: function( selectors, context ) {
      -        var cur,
      -            i = 0,
      -            l = this.length,
      -            ret = [],
      -            pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
      -                jQuery( selectors, context || this.context ) :
      -                0;
      -
      -        for ( ; i < l; i++ ) {
      -            cur = this[i];
      -
      -            while ( cur && cur.ownerDocument && cur !== context && cur.nodeType !== 11 ) {
      -                if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
      -                    ret.push( cur );
      -                    break;
      -                }
      -                cur = cur.parentNode;
      -            }
      -        }
      -
      -        return this.pushStack( ret.length > 1 ? jQuery.unique( ret ) : ret );
      -    },
      -
      -    // Determine the position of an element within
      -    // the matched set of elements
      -    index: function( elem ) {
      -
      -        // No argument, return index in parent
      -        if ( !elem ) {
      -            return ( this[0] && this[0].parentNode ) ? this.first().prevAll().length : -1;
      -        }
      -
      -        // index in selector
      -        if ( typeof elem === "string" ) {
      -            return jQuery.inArray( this[0], jQuery( elem ) );
      -        }
      -
      -        // Locate the position of the desired element
      -        return jQuery.inArray(
      -            // If it receives a jQuery object, the first element is used
      -            elem.jquery ? elem[0] : elem, this );
      -    },
      -
      -    add: function( selector, context ) {
      -        var set = typeof selector === "string" ?
      -                jQuery( selector, context ) :
      -                jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
      -            all = jQuery.merge( this.get(), set );
      -
      -        return this.pushStack( jQuery.unique(all) );
      -    },
      -
      -    addBack: function( selector ) {
      -        return this.add( selector == null ?
      -            this.prevObject : this.prevObject.filter(selector)
      -        );
      -    }
      -});
      -
      -jQuery.fn.andSelf = jQuery.fn.addBack;
      -
      -function sibling( cur, dir ) {
      -    do {
      -        cur = cur[ dir ];
      -    } while ( cur && cur.nodeType !== 1 );
      -
      -    return cur;
      -}
      -
      -jQuery.each({
      -    parent: function( elem ) {
      -        var parent = elem.parentNode;
      -        return parent && parent.nodeType !== 11 ? parent : null;
      -    },
      -    parents: function( elem ) {
      -        return jQuery.dir( elem, "parentNode" );
      -    },
      -    parentsUntil: function( elem, i, until ) {
      -        return jQuery.dir( elem, "parentNode", until );
      -    },
      -    next: function( elem ) {
      -        return sibling( elem, "nextSibling" );
      -    },
      -    prev: function( elem ) {
      -        return sibling( elem, "previousSibling" );
      -    },
      -    nextAll: function( elem ) {
      -        return jQuery.dir( elem, "nextSibling" );
      -    },
      -    prevAll: function( elem ) {
      -        return jQuery.dir( elem, "previousSibling" );
      -    },
      -    nextUntil: function( elem, i, until ) {
      -        return jQuery.dir( elem, "nextSibling", until );
      -    },
      -    prevUntil: function( elem, i, until ) {
      -        return jQuery.dir( elem, "previousSibling", until );
      -    },
      -    siblings: function( elem ) {
      -        return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
      -    },
      -    children: function( elem ) {
      -        return jQuery.sibling( elem.firstChild );
      -    },
      -    contents: function( elem ) {
      -        return jQuery.nodeName( elem, "iframe" ) ?
      -            elem.contentDocument || elem.contentWindow.document :
      -            jQuery.merge( [], elem.childNodes );
      -    }
      -}, function( name, fn ) {
      -    jQuery.fn[ name ] = function( until, selector ) {
      -        var ret = jQuery.map( this, fn, until );
      -
      -        if ( !runtil.test( name ) ) {
      -            selector = until;
      -        }
      -
      -        if ( selector && typeof selector === "string" ) {
      -            ret = jQuery.filter( selector, ret );
      -        }
      -
      -        ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
      -
      -        if ( this.length > 1 && rparentsprev.test( name ) ) {
      -            ret = ret.reverse();
      -        }
      -
      -        return this.pushStack( ret );
      -    };
      -});
      -
      -jQuery.extend({
      -    filter: function( expr, elems, not ) {
      -        if ( not ) {
      -            expr = ":not(" + expr + ")";
      -        }
      -
      -        return elems.length === 1 ?
      -            jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
      -            jQuery.find.matches(expr, elems);
      -    },
      -
      -    dir: function( elem, dir, until ) {
      -        var matched = [],
      -            cur = elem[ dir ];
      -
      -        while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
      -            if ( cur.nodeType === 1 ) {
      -                matched.push( cur );
      -            }
      -            cur = cur[dir];
      -        }
      -        return matched;
      -    },
      -
      -    sibling: function( n, elem ) {
      -        var r = [];
      -
      -        for ( ; n; n = n.nextSibling ) {
      -            if ( n.nodeType === 1 && n !== elem ) {
      -                r.push( n );
      -            }
      -        }
      -
      -        return r;
      -    }
      -});
      -
      -// Implement the identical functionality for filter and not
      -function winnow( elements, qualifier, keep ) {
      -
      -    // Can't pass null or undefined to indexOf in Firefox 4
      -    // Set to 0 to skip string check
      -    qualifier = qualifier || 0;
      -
      -    if ( jQuery.isFunction( qualifier ) ) {
      -        return jQuery.grep(elements, function( elem, i ) {
      -            var retVal = !!qualifier.call( elem, i, elem );
      -            return retVal === keep;
      -        });
      -
      -    } else if ( qualifier.nodeType ) {
      -        return jQuery.grep(elements, function( elem ) {
      -            return ( elem === qualifier ) === keep;
      -        });
      -
      -    } else if ( typeof qualifier === "string" ) {
      -        var filtered = jQuery.grep(elements, function( elem ) {
      -            return elem.nodeType === 1;
      -        });
      -
      -        if ( isSimple.test( qualifier ) ) {
      -            return jQuery.filter(qualifier, filtered, !keep);
      -        } else {
      -            qualifier = jQuery.filter( qualifier, filtered );
      -        }
      -    }
      -
      -    return jQuery.grep(elements, function( elem ) {
      -        return ( jQuery.inArray( elem, qualifier ) >= 0 ) === keep;
      -    });
      -}
      -function createSafeFragment( document ) {
      -    var list = nodeNames.split( "|" ),
      -        safeFrag = document.createDocumentFragment();
      -
      -    if ( safeFrag.createElement ) {
      -        while ( list.length ) {
      -            safeFrag.createElement(
      -                list.pop()
      -            );
      -        }
      -    }
      -    return safeFrag;
      -}
      -
      -var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|" +
      -        "header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",
      -    rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g,
      -    rnoshimcache = new RegExp("<(?:" + nodeNames + ")[\\s/>]", "i"),
      -    rleadingWhitespace = /^\s+/,
      -    rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
      -    rtagName = /<([\w:]+)/,
      -    rtbody = /<tbody/i,
      -    rhtml = /<|&#?\w+;/,
      -    rnoInnerhtml = /<(?:script|style|link)/i,
      -    manipulation_rcheckableType = /^(?:checkbox|radio)$/i,
      -    // checked="checked" or checked
      -    rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
      -    rscriptType = /^$|\/(?:java|ecma)script/i,
      -    rscriptTypeMasked = /^true\/(.*)/,
      -    rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,
      -
      -    // We have to close these tags to support XHTML (#13200)
      -    wrapMap = {
      -        option: [ 1, "<select multiple='multiple'>", "</select>" ],
      -        legend: [ 1, "<fieldset>", "</fieldset>" ],
      -        area: [ 1, "<map>", "</map>" ],
      -        param: [ 1, "<object>", "</object>" ],
      -        thead: [ 1, "<table>", "</table>" ],
      -        tr: [ 2, "<table><tbody>", "</tbody></table>" ],
      -        col: [ 2, "<table><tbody></tbody><colgroup>", "</colgroup></table>" ],
      -        td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
      -
      -        // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags,
      -        // unless wrapped in a div with non-breaking characters in front of it.
      -        _default: jQuery.support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X<div>", "</div>"  ]
      -    },
      -    safeFragment = createSafeFragment( document ),
      -    fragmentDiv = safeFragment.appendChild( document.createElement("div") );
      -
      -wrapMap.optgroup = wrapMap.option;
      -wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
      -wrapMap.th = wrapMap.td;
      -
      -jQuery.fn.extend({
      -    text: function( value ) {
      -        return jQuery.access( this, function( value ) {
      -            return value === undefined ?
      -                jQuery.text( this ) :
      -                this.empty().append( ( this[0] && this[0].ownerDocument || document ).createTextNode( value ) );
      -        }, null, value, arguments.length );
      -    },
      -
      -    wrapAll: function( html ) {
      -        if ( jQuery.isFunction( html ) ) {
      -            return this.each(function(i) {
      -                jQuery(this).wrapAll( html.call(this, i) );
      -            });
      -        }
      -
      -        if ( this[0] ) {
      -            // The elements to wrap the target around
      -            var wrap = jQuery( html, this[0].ownerDocument ).eq(0).clone(true);
      -
      -            if ( this[0].parentNode ) {
      -                wrap.insertBefore( this[0] );
      -            }
      -
      -            wrap.map(function() {
      -                var elem = this;
      -
      -                while ( elem.firstChild && elem.firstChild.nodeType === 1 ) {
      -                    elem = elem.firstChild;
      -                }
      -
      -                return elem;
      -            }).append( this );
      -        }
      -
      -        return this;
      -    },
      -
      -    wrapInner: function( html ) {
      -        if ( jQuery.isFunction( html ) ) {
      -            return this.each(function(i) {
      -                jQuery(this).wrapInner( html.call(this, i) );
      -            });
      -        }
      -
      -        return this.each(function() {
      -            var self = jQuery( this ),
      -                contents = self.contents();
      -
      -            if ( contents.length ) {
      -                contents.wrapAll( html );
      -
      -            } else {
      -                self.append( html );
      -            }
      -        });
      -    },
      -
      -    wrap: function( html ) {
      -        var isFunction = jQuery.isFunction( html );
      -
      -        return this.each(function(i) {
      -            jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
      -        });
      -    },
      -
      -    unwrap: function() {
      -        return this.parent().each(function() {
      -            if ( !jQuery.nodeName( this, "body" ) ) {
      -                jQuery( this ).replaceWith( this.childNodes );
      -            }
      -        }).end();
      -    },
      -
      -    append: function() {
      -        return this.domManip(arguments, true, function( elem ) {
      -            if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -                this.appendChild( elem );
      -            }
      -        });
      -    },
      -
      -    prepend: function() {
      -        return this.domManip(arguments, true, function( elem ) {
      -            if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
      -                this.insertBefore( elem, this.firstChild );
      -            }
      -        });
      -    },
      -
      -    before: function() {
      -        return this.domManip( arguments, false, function( elem ) {
      -            if ( this.parentNode ) {
      -                this.parentNode.insertBefore( elem, this );
      -            }
      -        });
      -    },
      -
      -    after: function() {
      -        return this.domManip( arguments, false, function( elem ) {
      -            if ( this.parentNode ) {
      -                this.parentNode.insertBefore( elem, this.nextSibling );
      -            }
      -        });
      -    },
      -
      -    // keepData is for internal use only--do not document
      -    remove: function( selector, keepData ) {
      -        var elem,
      -            i = 0;
      -
      -        for ( ; (elem = this[i]) != null; i++ ) {
      -            if ( !selector || jQuery.filter( selector, [ elem ] ).length > 0 ) {
      -                if ( !keepData && elem.nodeType === 1 ) {
      -                    jQuery.cleanData( getAll( elem ) );
      -                }
      -
      -                if ( elem.parentNode ) {
      -                    if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
      -                        setGlobalEval( getAll( elem, "script" ) );
      -                    }
      -                    elem.parentNode.removeChild( elem );
      -                }
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    empty: function() {
      -        var elem,
      -            i = 0;
      -
      -        for ( ; (elem = this[i]) != null; i++ ) {
      -            // Remove element nodes and prevent memory leaks
      -            if ( elem.nodeType === 1 ) {
      -                jQuery.cleanData( getAll( elem, false ) );
      -            }
      -
      -            // Remove any remaining nodes
      -            while ( elem.firstChild ) {
      -                elem.removeChild( elem.firstChild );
      -            }
      -
      -            // If this is a select, ensure that it displays empty (#12336)
      -            // Support: IE<9
      -            if ( elem.options && jQuery.nodeName( elem, "select" ) ) {
      -                elem.options.length = 0;
      -            }
      -        }
      -
      -        return this;
      -    },
      -
      -    clone: function( dataAndEvents, deepDataAndEvents ) {
      -        dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
      -        deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
      -
      -        return this.map( function () {
      -            return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
      -        });
      -    },
      -
      -    html: function( value ) {
      -        return jQuery.access( this, function( value ) {
      -            var elem = this[0] || {},
      -                i = 0,
      -                l = this.length;
      -
      -            if ( value === undefined ) {
      -                return elem.nodeType === 1 ?
      -                    elem.innerHTML.replace( rinlinejQuery, "" ) :
      -                    undefined;
      -            }
      -
      -            // See if we can take a shortcut and just use innerHTML
      -            if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
      -                ( jQuery.support.htmlSerialize || !rnoshimcache.test( value )  ) &&
      -                ( jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value ) ) &&
      -                !wrapMap[ ( rtagName.exec( value ) || ["", ""] )[1].toLowerCase() ] ) {
      -
      -                value = value.replace( rxhtmlTag, "<$1></$2>" );
      -
      -                try {
      -                    for (; i < l; i++ ) {
      -                        // Remove element nodes and prevent memory leaks
      -                        elem = this[i] || {};
      -                        if ( elem.nodeType === 1 ) {
      -                            jQuery.cleanData( getAll( elem, false ) );
      -                            elem.innerHTML = value;
      -                        }
      -                    }
      -
      -                    elem = 0;
      -
      -                // If using innerHTML throws an exception, use the fallback method
      -                } catch(e) {}
      -            }
      -
      -            if ( elem ) {
      -                this.empty().append( value );
      -            }
      -        }, null, value, arguments.length );
      -    },
      -
      -    replaceWith: function( value ) {
      -        var isFunc = jQuery.isFunction( value );
      -
      -        // Make sure that the elements are removed from the DOM before they are inserted
      -        // this can help fix replacing a parent with child elements
      -        if ( !isFunc && typeof value !== "string" ) {
      -            value = jQuery( value ).not( this ).detach();
      -        }
      -
      -        return this.domManip( [ value ], true, function( elem ) {
      -            var next = this.nextSibling,
      -                parent = this.parentNode;
      -
      -            if ( parent ) {
      -                jQuery( this ).remove();
      -                parent.insertBefore( elem, next );
      -            }
      -        });
      -    },
      -
      -    detach: function( selector ) {
      -        return this.remove( selector, true );
      -    },
      -
      -    domManip: function( args, table, callback ) {
      -
      -        // Flatten any nested arrays
      -        args = core_concat.apply( [], args );
      -
      -        var first, node, hasScripts,
      -            scripts, doc, fragment,
      -            i = 0,
      -            l = this.length,
      -            set = this,
      -            iNoClone = l - 1,
      -            value = args[0],
      -            isFunction = jQuery.isFunction( value );
      -
      -        // We can't cloneNode fragments that contain checked, in WebKit
      -        if ( isFunction || !( l <= 1 || typeof value !== "string" || jQuery.support.checkClone || !rchecked.test( value ) ) ) {
      -            return this.each(function( index ) {
      -                var self = set.eq( index );
      -                if ( isFunction ) {
      -                    args[0] = value.call( this, index, table ? self.html() : undefined );
      -                }
      -                self.domManip( args, table, callback );
      -            });
      -        }
      -
      -        if ( l ) {
      -            fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
      -            first = fragment.firstChild;
      -
      -            if ( fragment.childNodes.length === 1 ) {
      -                fragment = first;
      -            }
      -
      -            if ( first ) {
      -                table = table && jQuery.nodeName( first, "tr" );
      -                scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
      -                hasScripts = scripts.length;
      -
      -                // Use the original fragment for the last item instead of the first because it can end up
      -                // being emptied incorrectly in certain situations (#8070).
      -                for ( ; i < l; i++ ) {
      -                    node = fragment;
      -
      -                    if ( i !== iNoClone ) {
      -                        node = jQuery.clone( node, true, true );
      -
      -                        // Keep references to cloned scripts for later restoration
      -                        if ( hasScripts ) {
      -                            jQuery.merge( scripts, getAll( node, "script" ) );
      -                        }
      -                    }
      -
      -                    callback.call(
      -                        table && jQuery.nodeName( this[i], "table" ) ?
      -                            findOrAppend( this[i], "tbody" ) :
      -                            this[i],
      -                        node,
      -                        i
      -                    );
      -                }
      -
      -                if ( hasScripts ) {
      -                    doc = scripts[ scripts.length - 1 ].ownerDocument;
      -
      -                    // Reenable scripts
      -                    jQuery.map( scripts, restoreScript );
      -
      -                    // Evaluate executable scripts on first document insertion
      -                    for ( i = 0; i < hasScripts; i++ ) {
      -                        node = scripts[ i ];
      -                        if ( rscriptType.test( node.type || "" ) &&
      -                            !jQuery._data( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
      -
      -                            if ( node.src ) {
      -                                // Hope ajax is available...
      -                                jQuery.ajax({
      -                                    url: node.src,
      -                                    type: "GET",
      -                                    dataType: "script",
      -                                    async: false,
      -                                    global: false,
      -                                    "throws": true
      -                                });
      -                            } else {
      -                                jQuery.globalEval( ( node.text || node.textContent || node.innerHTML || "" ).replace( rcleanScript, "" ) );
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                // Fix #11809: Avoid leaking memory
      -                fragment = first = null;
      -            }
      -        }
      -
      -        return this;
      -    }
      -});
      -
      -function findOrAppend( elem, tag ) {
      -    return elem.getElementsByTagName( tag )[0] || elem.appendChild( elem.ownerDocument.createElement( tag ) );
      -}
      -
      -// Replace/restore the type attribute of script elements for safe DOM manipulation
      -function disableScript( elem ) {
      -    var attr = elem.getAttributeNode("type");
      -    elem.type = ( attr && attr.specified ) + "/" + elem.type;
      -    return elem;
      -}
      -function restoreScript( elem ) {
      -    var match = rscriptTypeMasked.exec( elem.type );
      -    if ( match ) {
      -        elem.type = match[1];
      -    } else {
      -        elem.removeAttribute("type");
      -    }
      -    return elem;
      -}
      -
      -// Mark scripts as having already been evaluated
      -function setGlobalEval( elems, refElements ) {
      -    var elem,
      -        i = 0;
      -    for ( ; (elem = elems[i]) != null; i++ ) {
      -        jQuery._data( elem, "globalEval", !refElements || jQuery._data( refElements[i], "globalEval" ) );
      -    }
      -}
      -
      -function cloneCopyEvent( src, dest ) {
      -
      -    if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
      -        return;
      -    }
      -
      -    var type, i, l,
      -        oldData = jQuery._data( src ),
      -        curData = jQuery._data( dest, oldData ),
      -        events = oldData.events;
      -
      -    if ( events ) {
      -        delete curData.handle;
      -        curData.events = {};
      -
      -        for ( type in events ) {
      -            for ( i = 0, l = events[ type ].length; i < l; i++ ) {
      -                jQuery.event.add( dest, type, events[ type ][ i ] );
      -            }
      -        }
      -    }
      -
      -    // make the cloned public data object a copy from the original
      -    if ( curData.data ) {
      -        curData.data = jQuery.extend( {}, curData.data );
      -    }
      -}
      -
      -function fixCloneNodeIssues( src, dest ) {
      -    var nodeName, e, data;
      -
      -    // We do not need to do anything for non-Elements
      -    if ( dest.nodeType !== 1 ) {
      -        return;
      -    }
      -
      -    nodeName = dest.nodeName.toLowerCase();
      -
      -    // IE6-8 copies events bound via attachEvent when using cloneNode.
      -    if ( !jQuery.support.noCloneEvent && dest[ jQuery.expando ] ) {
      -        data = jQuery._data( dest );
      -
      -        for ( e in data.events ) {
      -            jQuery.removeEvent( dest, e, data.handle );
      -        }
      -
      -        // Event data gets referenced instead of copied if the expando gets copied too
      -        dest.removeAttribute( jQuery.expando );
      -    }
      -
      -    // IE blanks contents when cloning scripts, and tries to evaluate newly-set text
      -    if ( nodeName === "script" && dest.text !== src.text ) {
      -        disableScript( dest ).text = src.text;
      -        restoreScript( dest );
      -
      -    // IE6-10 improperly clones children of object elements using classid.
      -    // IE10 throws NoModificationAllowedError if parent is null, #12132.
      -    } else if ( nodeName === "object" ) {
      -        if ( dest.parentNode ) {
      -            dest.outerHTML = src.outerHTML;
      -        }
      -
      -        // This path appears unavoidable for IE9. When cloning an object
      -        // element in IE9, the outerHTML strategy above is not sufficient.
      -        // If the src has innerHTML and the destination does not,
      -        // copy the src.innerHTML into the dest.innerHTML. #10324
      -        if ( jQuery.support.html5Clone && ( src.innerHTML && !jQuery.trim(dest.innerHTML) ) ) {
      -            dest.innerHTML = src.innerHTML;
      -        }
      -
      -    } else if ( nodeName === "input" && manipulation_rcheckableType.test( src.type ) ) {
      -        // IE6-8 fails to persist the checked state of a cloned checkbox
      -        // or radio button. Worse, IE6-7 fail to give the cloned element
      -        // a checked appearance if the defaultChecked value isn't also set
      -
      -        dest.defaultChecked = dest.checked = src.checked;
      -
      -        // IE6-7 get confused and end up setting the value of a cloned
      -        // checkbox/radio button to an empty string instead of "on"
      -        if ( dest.value !== src.value ) {
      -            dest.value = src.value;
      -        }
      -
      -    // IE6-8 fails to return the selected option to the default selected
      -    // state when cloning options
      -    } else if ( nodeName === "option" ) {
      -        dest.defaultSelected = dest.selected = src.defaultSelected;
      -
      -    // IE6-8 fails to set the defaultValue to the correct value when
      -    // cloning other types of input fields
      -    } else if ( nodeName === "input" || nodeName === "textarea" ) {
      -        dest.defaultValue = src.defaultValue;
      -    }
      -}
      -
      -jQuery.each({
      -    appendTo: "append",
      -    prependTo: "prepend",
      -    insertBefore: "before",
      -    insertAfter: "after",
      -    replaceAll: "replaceWith"
      -}, function( name, original ) {
      -    jQuery.fn[ name ] = function( selector ) {
      -        var elems,
      -            i = 0,
      -            ret = [],
      -            insert = jQuery( selector ),
      -            last = insert.length - 1;
      -
      -        for ( ; i <= last; i++ ) {
      -            elems = i === last ? this : this.clone(true);
      -            jQuery( insert[i] )[ original ]( elems );
      -
      -            // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get()
      -            core_push.apply( ret, elems.get() );
      -        }
      -
      -        return this.pushStack( ret );
      -    };
      -});
      -
      -function getAll( context, tag ) {
      -    var elems, elem,
      -        i = 0,
      -        found = typeof context.getElementsByTagName !== core_strundefined ? context.getElementsByTagName( tag || "*" ) :
      -            typeof context.querySelectorAll !== core_strundefined ? context.querySelectorAll( tag || "*" ) :
      -            undefined;
      -
      -    if ( !found ) {
      -        for ( found = [], elems = context.childNodes || context; (elem = elems[i]) != null; i++ ) {
      -            if ( !tag || jQuery.nodeName( elem, tag ) ) {
      -                found.push( elem );
      -            } else {
      -                jQuery.merge( found, getAll( elem, tag ) );
      -            }
      -        }
      -    }
      -
      -    return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
      -        jQuery.merge( [ context ], found ) :
      -        found;
      -}
      -
      -// Used in buildFragment, fixes the defaultChecked property
      -function fixDefaultChecked( elem ) {
      -    if ( manipulation_rcheckableType.test( elem.type ) ) {
      -        elem.defaultChecked = elem.checked;
      -    }
      -}
      -
      -jQuery.extend({
      -    clone: function( elem, dataAndEvents, deepDataAndEvents ) {
      -        var destElements, node, clone, i, srcElements,
      -            inPage = jQuery.contains( elem.ownerDocument, elem );
      -
      -        if ( jQuery.support.html5Clone || jQuery.isXMLDoc(elem) || !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) {
      -            clone = elem.cloneNode( true );
      -
      -        // IE<=8 does not properly clone detached, unknown element nodes
      -        } else {
      -            fragmentDiv.innerHTML = elem.outerHTML;
      -            fragmentDiv.removeChild( clone = fragmentDiv.firstChild );
      -        }
      -
      -        if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
      -                (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
      -
      -            // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
      -            destElements = getAll( clone );
      -            srcElements = getAll( elem );
      -
      -            // Fix all IE cloning issues
      -            for ( i = 0; (node = srcElements[i]) != null; ++i ) {
      -                // Ensure that the destination node is not null; Fixes #9587
      -                if ( destElements[i] ) {
      -                    fixCloneNodeIssues( node, destElements[i] );
      -                }
      -            }
      -        }
      -
      -        // Copy the events from the original to the clone
      -        if ( dataAndEvents ) {
      -            if ( deepDataAndEvents ) {
      -                srcElements = srcElements || getAll( elem );
      -                destElements = destElements || getAll( clone );
      -
      -                for ( i = 0; (node = srcElements[i]) != null; i++ ) {
      -                    cloneCopyEvent( node, destElements[i] );
      -                }
      -            } else {
      -                cloneCopyEvent( elem, clone );
      -            }
      -        }
      -
      -        // Preserve script evaluation history
      -        destElements = getAll( clone, "script" );
      -        if ( destElements.length > 0 ) {
      -            setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
      -        }
      -
      -        destElements = srcElements = node = null;
      -
      -        // Return the cloned set
      -        return clone;
      -    },
      -
      -    buildFragment: function( elems, context, scripts, selection ) {
      -        var j, elem, contains,
      -            tmp, tag, tbody, wrap,
      -            l = elems.length,
      -
      -            // Ensure a safe fragment
      -            safe = createSafeFragment( context ),
      -
      -            nodes = [],
      -            i = 0;
      -
      -        for ( ; i < l; i++ ) {
      -            elem = elems[ i ];
      -
      -            if ( elem || elem === 0 ) {
      -
      -                // Add nodes directly
      -                if ( jQuery.type( elem ) === "object" ) {
      -                    jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
      -
      -                // Convert non-html into a text node
      -                } else if ( !rhtml.test( elem ) ) {
      -                    nodes.push( context.createTextNode( elem ) );
      -
      -                // Convert html into DOM nodes
      -                } else {
      -                    tmp = tmp || safe.appendChild( context.createElement("div") );
      -
      -                    // Deserialize a standard representation
      -                    tag = ( rtagName.exec( elem ) || ["", ""] )[1].toLowerCase();
      -                    wrap = wrapMap[ tag ] || wrapMap._default;
      -
      -                    tmp.innerHTML = wrap[1] + elem.replace( rxhtmlTag, "<$1></$2>" ) + wrap[2];
      -
      -                    // Descend through wrappers to the right content
      -                    j = wrap[0];
      -                    while ( j-- ) {
      -                        tmp = tmp.lastChild;
      -                    }
      -
      -                    // Manually add leading whitespace removed by IE
      -                    if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
      -                        nodes.push( context.createTextNode( rleadingWhitespace.exec( elem )[0] ) );
      -                    }
      -
      -                    // Remove IE's autoinserted <tbody> from table fragments
      -                    if ( !jQuery.support.tbody ) {
      -
      -                        // String was a <table>, *may* have spurious <tbody>
      -                        elem = tag === "table" && !rtbody.test( elem ) ?
      -                            tmp.firstChild :
      -
      -                            // String was a bare <thead> or <tfoot>
      -                            wrap[1] === "<table>" && !rtbody.test( elem ) ?
      -                                tmp :
      -                                0;
      -
      -                        j = elem && elem.childNodes.length;
      -                        while ( j-- ) {
      -                            if ( jQuery.nodeName( (tbody = elem.childNodes[j]), "tbody" ) && !tbody.childNodes.length ) {
      -                                elem.removeChild( tbody );
      -                            }
      -                        }
      -                    }
      -
      -                    jQuery.merge( nodes, tmp.childNodes );
      -
      -                    // Fix #12392 for WebKit and IE > 9
      -                    tmp.textContent = "";
      -
      -                    // Fix #12392 for oldIE
      -                    while ( tmp.firstChild ) {
      -                        tmp.removeChild( tmp.firstChild );
      -                    }
      -
      -                    // Remember the top-level container for proper cleanup
      -                    tmp = safe.lastChild;
      -                }
      -            }
      -        }
      -
      -        // Fix #11356: Clear elements from fragment
      -        if ( tmp ) {
      -            safe.removeChild( tmp );
      -        }
      -
      -        // Reset defaultChecked for any radios and checkboxes
      -        // about to be appended to the DOM in IE 6/7 (#8060)
      -        if ( !jQuery.support.appendChecked ) {
      -            jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked );
      -        }
      -
      -        i = 0;
      -        while ( (elem = nodes[ i++ ]) ) {
      -
      -            // #4087 - If origin and destination elements are the same, and this is
      -            // that element, do not do anything
      -            if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
      -                continue;
      -            }
      -
      -            contains = jQuery.contains( elem.ownerDocument, elem );
      -
      -            // Append to fragment
      -            tmp = getAll( safe.appendChild( elem ), "script" );
      -
      -            // Preserve script evaluation history
      -            if ( contains ) {
      -                setGlobalEval( tmp );
      -            }
      -
      -            // Capture executables
      -            if ( scripts ) {
      -                j = 0;
      -                while ( (elem = tmp[ j++ ]) ) {
      -                    if ( rscriptType.test( elem.type || "" ) ) {
      -                        scripts.push( elem );
      -                    }
      -                }
      -            }
      -        }
      -
      -        tmp = null;
      -
      -        return safe;
      -    },
      -
      -    cleanData: function( elems, /* internal */ acceptData ) {
      -        var elem, type, id, data,
      -            i = 0,
      -            internalKey = jQuery.expando,
      -            cache = jQuery.cache,
      -            deleteExpando = jQuery.support.deleteExpando,
      -            special = jQuery.event.special;
      -
      -        for ( ; (elem = elems[i]) != null; i++ ) {
      -
      -            if ( acceptData || jQuery.acceptData( elem ) ) {
      -
      -                id = elem[ internalKey ];
      -                data = id && cache[ id ];
      -
      -                if ( data ) {
      -                    if ( data.events ) {
      -                        for ( type in data.events ) {
      -                            if ( special[ type ] ) {
      -                                jQuery.event.remove( elem, type );
      -
      -                            // This is a shortcut to avoid jQuery.event.remove's overhead
      -                            } else {
      -                                jQuery.removeEvent( elem, type, data.handle );
      -                            }
      -                        }
      -                    }
      -
      -                    // Remove cache only if it was not already removed by jQuery.event.remove
      -                    if ( cache[ id ] ) {
      -
      -                        delete cache[ id ];
      -
      -                        // IE does not allow us to delete expando properties from nodes,
      -                        // nor does it have a removeAttribute function on Document nodes;
      -                        // we must handle all of these cases
      -                        if ( deleteExpando ) {
      -                            delete elem[ internalKey ];
      -
      -                        } else if ( typeof elem.removeAttribute !== core_strundefined ) {
      -                            elem.removeAttribute( internalKey );
      -
      -                        } else {
      -                            elem[ internalKey ] = null;
      -                        }
      -
      -                        core_deletedIds.push( id );
      -                    }
      -                }
      -            }
      -        }
      -    }
      -});
      -var iframe, getStyles, curCSS,
      -    ralpha = /alpha\([^)]*\)/i,
      -    ropacity = /opacity\s*=\s*([^)]*)/,
      -    rposition = /^(top|right|bottom|left)$/,
      -    // swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
      -    // see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
      -    rdisplayswap = /^(none|table(?!-c[ea]).+)/,
      -    rmargin = /^margin/,
      -    rnumsplit = new RegExp( "^(" + core_pnum + ")(.*)$", "i" ),
      -    rnumnonpx = new RegExp( "^(" + core_pnum + ")(?!px)[a-z%]+$", "i" ),
      -    rrelNum = new RegExp( "^([+-])=(" + core_pnum + ")", "i" ),
      -    elemdisplay = { BODY: "block" },
      -
      -    cssShow = { position: "absolute", visibility: "hidden", display: "block" },
      -    cssNormalTransform = {
      -        letterSpacing: 0,
      -        fontWeight: 400
      -    },
      -
      -    cssExpand = [ "Top", "Right", "Bottom", "Left" ],
      -    cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
      -
      -// return a css property mapped to a potentially vendor prefixed property
      -function vendorPropName( style, name ) {
      -
      -    // shortcut for names that are not vendor prefixed
      -    if ( name in style ) {
      -        return name;
      -    }
      -
      -    // check for vendor prefixed names
      -    var capName = name.charAt(0).toUpperCase() + name.slice(1),
      -        origName = name,
      -        i = cssPrefixes.length;
      -
      -    while ( i-- ) {
      -        name = cssPrefixes[ i ] + capName;
      -        if ( name in style ) {
      -            return name;
      -        }
      -    }
      -
      -    return origName;
      -}
      -
      -function isHidden( elem, el ) {
      -    // isHidden might be called from jQuery#filter function;
      -    // in that case, element will be second argument
      -    elem = el || elem;
      -    return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
      -}
      -
      -function showHide( elements, show ) {
      -    var display, elem, hidden,
      -        values = [],
      -        index = 0,
      -        length = elements.length;
      -
      -    for ( ; index < length; index++ ) {
      -        elem = elements[ index ];
      -        if ( !elem.style ) {
      -            continue;
      -        }
      -
      -        values[ index ] = jQuery._data( elem, "olddisplay" );
      -        display = elem.style.display;
      -        if ( show ) {
      -            // Reset the inline display of this element to learn if it is
      -            // being hidden by cascaded rules or not
      -            if ( !values[ index ] && display === "none" ) {
      -                elem.style.display = "";
      -            }
      -
      -            // Set elements which have been overridden with display: none
      -            // in a stylesheet to whatever the default browser style is
      -            // for such an element
      -            if ( elem.style.display === "" && isHidden( elem ) ) {
      -                values[ index ] = jQuery._data( elem, "olddisplay", css_defaultDisplay(elem.nodeName) );
      -            }
      -        } else {
      -
      -            if ( !values[ index ] ) {
      -                hidden = isHidden( elem );
      -
      -                if ( display && display !== "none" || !hidden ) {
      -                    jQuery._data( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
      -                }
      -            }
      -        }
      -    }
      -
      -    // Set the display of most of the elements in a second loop
      -    // to avoid the constant reflow
      -    for ( index = 0; index < length; index++ ) {
      -        elem = elements[ index ];
      -        if ( !elem.style ) {
      -            continue;
      -        }
      -        if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
      -            elem.style.display = show ? values[ index ] || "" : "none";
      -        }
      -    }
      -
      -    return elements;
      -}
      -
      -jQuery.fn.extend({
      -    css: function( name, value ) {
      -        return jQuery.access( this, function( elem, name, value ) {
      -            var len, styles,
      -                map = {},
      -                i = 0;
      -
      -            if ( jQuery.isArray( name ) ) {
      -                styles = getStyles( elem );
      -                len = name.length;
      -
      -                for ( ; i < len; i++ ) {
      -                    map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
      -                }
      -
      -                return map;
      -            }
      -
      -            return value !== undefined ?
      -                jQuery.style( elem, name, value ) :
      -                jQuery.css( elem, name );
      -        }, name, value, arguments.length > 1 );
      -    },
      -    show: function() {
      -        return showHide( this, true );
      -    },
      -    hide: function() {
      -        return showHide( this );
      -    },
      -    toggle: function( state ) {
      -        var bool = typeof state === "boolean";
      -
      -        return this.each(function() {
      -            if ( bool ? state : isHidden( this ) ) {
      -                jQuery( this ).show();
      -            } else {
      -                jQuery( this ).hide();
      -            }
      -        });
      -    }
      -});
      -
      -jQuery.extend({
      -    // Add in style property hooks for overriding the default
      -    // behavior of getting and setting a style property
      -    cssHooks: {
      -        opacity: {
      -            get: function( elem, computed ) {
      -                if ( computed ) {
      -                    // We should always get a number back from opacity
      -                    var ret = curCSS( elem, "opacity" );
      -                    return ret === "" ? "1" : ret;
      -                }
      -            }
      -        }
      -    },
      -
      -    // Exclude the following css properties to add px
      -    cssNumber: {
      -        "columnCount": true,
      -        "fillOpacity": true,
      -        "fontWeight": true,
      -        "lineHeight": true,
      -        "opacity": true,
      -        "orphans": true,
      -        "widows": true,
      -        "zIndex": true,
      -        "zoom": true
      -    },
      -
      -    // Add in properties whose names you wish to fix before
      -    // setting or getting the value
      -    cssProps: {
      -        // normalize float css property
      -        "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
      -    },
      -
      -    // Get and set the style property on a DOM Node
      -    style: function( elem, name, value, extra ) {
      -        // Don't set styles on text and comment nodes
      -        if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
      -            return;
      -        }
      -
      -        // Make sure that we're working with the right name
      -        var ret, type, hooks,
      -            origName = jQuery.camelCase( name ),
      -            style = elem.style;
      -
      -        name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
      -
      -        // gets hook for the prefixed version
      -        // followed by the unprefixed version
      -        hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -        // Check if we're setting a value
      -        if ( value !== undefined ) {
      -            type = typeof value;
      -
      -            // convert relative number strings (+= or -=) to relative numbers. #7345
      -            if ( type === "string" && (ret = rrelNum.exec( value )) ) {
      -                value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
      -                // Fixes bug #9237
      -                type = "number";
      -            }
      -
      -            // Make sure that NaN and null values aren't set. See: #7116
      -            if ( value == null || type === "number" && isNaN( value ) ) {
      -                return;
      -            }
      -
      -            // If a number was passed in, add 'px' to the (except for certain CSS properties)
      -            if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
      -                value += "px";
      -            }
      -
      -            // Fixes #8908, it can be done more correctly by specifing setters in cssHooks,
      -            // but it would mean to define eight (for every problematic property) identical functions
      -            if ( !jQuery.support.clearCloneStyle && value === "" && name.indexOf("background") === 0 ) {
      -                style[ name ] = "inherit";
      -            }
      -
      -            // If a hook was provided, use that value, otherwise just set the specified value
      -            if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
      -
      -                // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
      -                // Fixes bug #5509
      -                try {
      -                    style[ name ] = value;
      -                } catch(e) {}
      -            }
      -
      -        } else {
      -            // If a hook was provided get the non-computed value from there
      -            if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
      -                return ret;
      -            }
      -
      -            // Otherwise just get the value from the style object
      -            return style[ name ];
      -        }
      -    },
      -
      -    css: function( elem, name, extra, styles ) {
      -        var num, val, hooks,
      -            origName = jQuery.camelCase( name );
      -
      -        // Make sure that we're working with the right name
      -        name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
      -
      -        // gets hook for the prefixed version
      -        // followed by the unprefixed version
      -        hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
      -
      -        // If a hook was provided get the computed value from there
      -        if ( hooks && "get" in hooks ) {
      -            val = hooks.get( elem, true, extra );
      -        }
      -
      -        // Otherwise, if a way to get the computed value exists, use that
      -        if ( val === undefined ) {
      -            val = curCSS( elem, name, styles );
      -        }
      -
      -        //convert "normal" to computed value
      -        if ( val === "normal" && name in cssNormalTransform ) {
      -            val = cssNormalTransform[ name ];
      -        }
      -
      -        // Return, converting to number if forced or a qualifier was provided and val looks numeric
      -        if ( extra === "" || extra ) {
      -            num = parseFloat( val );
      -            return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
      -        }
      -        return val;
      -    },
      -
      -    // A method for quickly swapping in/out CSS properties to get correct calculations
      -    swap: function( elem, options, callback, args ) {
      -        var ret, name,
      -            old = {};
      -
      -        // Remember the old values, and insert the new ones
      -        for ( name in options ) {
      -            old[ name ] = elem.style[ name ];
      -            elem.style[ name ] = options[ name ];
      -        }
      -
      -        ret = callback.apply( elem, args || [] );
      -
      -        // Revert the old values
      -        for ( name in options ) {
      -            elem.style[ name ] = old[ name ];
      -        }
      -
      -        return ret;
      -    }
      -});
      -
      -// NOTE: we've included the "window" in window.getComputedStyle
      -// because jsdom on node.js will break without it.
      -if ( window.getComputedStyle ) {
      -    getStyles = function( elem ) {
      -        return window.getComputedStyle( elem, null );
      -    };
      -
      -    curCSS = function( elem, name, _computed ) {
      -        var width, minWidth, maxWidth,
      -            computed = _computed || getStyles( elem ),
      -
      -            // getPropertyValue is only needed for .css('filter') in IE9, see #12537
      -            ret = computed ? computed.getPropertyValue( name ) || computed[ name ] : undefined,
      -            style = elem.style;
      -
      -        if ( computed ) {
      -
      -            if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
      -                ret = jQuery.style( elem, name );
      -            }
      -
      -            // A tribute to the "awesome hack by Dean Edwards"
      -            // Chrome < 17 and Safari 5.0 uses "computed value" instead of "used value" for margin-right
      -            // Safari 5.1.7 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
      -            // this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
      -            if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
      -
      -                // Remember the original values
      -                width = style.width;
      -                minWidth = style.minWidth;
      -                maxWidth = style.maxWidth;
      -
      -                // Put in the new values to get a computed value out
      -                style.minWidth = style.maxWidth = style.width = ret;
      -                ret = computed.width;
      -
      -                // Revert the changed values
      -                style.width = width;
      -                style.minWidth = minWidth;
      -                style.maxWidth = maxWidth;
      -            }
      -        }
      -
      -        return ret;
      -    };
      -} else if ( document.documentElement.currentStyle ) {
      -    getStyles = function( elem ) {
      -        return elem.currentStyle;
      -    };
      -
      -    curCSS = function( elem, name, _computed ) {
      -        var left, rs, rsLeft,
      -            computed = _computed || getStyles( elem ),
      -            ret = computed ? computed[ name ] : undefined,
      -            style = elem.style;
      -
      -        // Avoid setting ret to empty string here
      -        // so we don't default to auto
      -        if ( ret == null && style && style[ name ] ) {
      -            ret = style[ name ];
      -        }
      -
      -        // From the awesome hack by Dean Edwards
      -        // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
      -
      -        // If we're not dealing with a regular pixel number
      -        // but a number that has a weird ending, we need to convert it to pixels
      -        // but not position css attributes, as those are proportional to the parent element instead
      -        // and we can't measure the parent instead because it might trigger a "stacking dolls" problem
      -        if ( rnumnonpx.test( ret ) && !rposition.test( name ) ) {
      -
      -            // Remember the original values
      -            left = style.left;
      -            rs = elem.runtimeStyle;
      -            rsLeft = rs && rs.left;
      -
      -            // Put in the new values to get a computed value out
      -            if ( rsLeft ) {
      -                rs.left = elem.currentStyle.left;
      -            }
      -            style.left = name === "fontSize" ? "1em" : ret;
      -            ret = style.pixelLeft + "px";
      -
      -            // Revert the changed values
      -            style.left = left;
      -            if ( rsLeft ) {
      -                rs.left = rsLeft;
      -            }
      -        }
      -
      -        return ret === "" ? "auto" : ret;
      -    };
      -}
      -
      -function setPositiveNumber( elem, value, subtract ) {
      -    var matches = rnumsplit.exec( value );
      -    return matches ?
      -        // Guard against undefined "subtract", e.g., when used as in cssHooks
      -        Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
      -        value;
      -}
      -
      -function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
      -    var i = extra === ( isBorderBox ? "border" : "content" ) ?
      -        // If we already have the right measurement, avoid augmentation
      -        4 :
      -        // Otherwise initialize for horizontal or vertical properties
      -        name === "width" ? 1 : 0,
      -
      -        val = 0;
      -
      -    for ( ; i < 4; i += 2 ) {
      -        // both box models exclude margin, so add it if we want it
      -        if ( extra === "margin" ) {
      -            val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
      -        }
      -
      -        if ( isBorderBox ) {
      -            // border-box includes padding, so remove it if we want content
      -            if ( extra === "content" ) {
      -                val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -            }
      -
      -            // at this point, extra isn't border nor margin, so remove border
      -            if ( extra !== "margin" ) {
      -                val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -            }
      -        } else {
      -            // at this point, extra isn't content, so add padding
      -            val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
      -
      -            // at this point, extra isn't content nor padding, so add border
      -            if ( extra !== "padding" ) {
      -                val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
      -            }
      -        }
      -    }
      -
      -    return val;
      -}
      -
      -function getWidthOrHeight( elem, name, extra ) {
      -
      -    // Start with offset property, which is equivalent to the border-box value
      -    var valueIsBorderBox = true,
      -        val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
      -        styles = getStyles( elem ),
      -        isBorderBox = jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
      -
      -    // some non-html elements return undefined for offsetWidth, so check for null/undefined
      -    // svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
      -    // MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
      -    if ( val <= 0 || val == null ) {
      -        // Fall back to computed then uncomputed css if necessary
      -        val = curCSS( elem, name, styles );
      -        if ( val < 0 || val == null ) {
      -            val = elem.style[ name ];
      -        }
      -
      -        // Computed unit is not pixels. Stop here and return.
      -        if ( rnumnonpx.test(val) ) {
      -            return val;
      -        }
      -
      -        // we need the check for style in case a browser which returns unreliable values
      -        // for getComputedStyle silently falls back to the reliable elem.style
      -        valueIsBorderBox = isBorderBox && ( jQuery.support.boxSizingReliable || val === elem.style[ name ] );
      -
      -        // Normalize "", auto, and prepare for extra
      -        val = parseFloat( val ) || 0;
      -    }
      -
      -    // use the active box-sizing model to add/subtract irrelevant styles
      -    return ( val +
      -        augmentWidthOrHeight(
      -            elem,
      -            name,
      -            extra || ( isBorderBox ? "border" : "content" ),
      -            valueIsBorderBox,
      -            styles
      -        )
      -    ) + "px";
      -}
      -
      -// Try to determine the default display value of an element
      -function css_defaultDisplay( nodeName ) {
      -    var doc = document,
      -        display = elemdisplay[ nodeName ];
      -
      -    if ( !display ) {
      -        display = actualDisplay( nodeName, doc );
      -
      -        // If the simple way fails, read from inside an iframe
      -        if ( display === "none" || !display ) {
      -            // Use the already-created iframe if possible
      -            iframe = ( iframe ||
      -                jQuery("<iframe frameborder='0' width='0' height='0'/>")
      -                .css( "cssText", "display:block !important" )
      -            ).appendTo( doc.documentElement );
      -
      -            // Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
      -            doc = ( iframe[0].contentWindow || iframe[0].contentDocument ).document;
      -            doc.write("<!doctype html><html><body>");
      -            doc.close();
      -
      -            display = actualDisplay( nodeName, doc );
      -            iframe.detach();
      -        }
      -
      -        // Store the correct default display
      -        elemdisplay[ nodeName ] = display;
      -    }
      -
      -    return display;
      -}
      -
      -// Called ONLY from within css_defaultDisplay
      -function actualDisplay( name, doc ) {
      -    var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
      -        display = jQuery.css( elem[0], "display" );
      -    elem.remove();
      -    return display;
      -}
      -
      -jQuery.each([ "height", "width" ], function( i, name ) {
      -    jQuery.cssHooks[ name ] = {
      -        get: function( elem, computed, extra ) {
      -            if ( computed ) {
      -                // certain elements can have dimension info if we invisibly show them
      -                // however, it must have a current display style that would benefit from this
      -                return elem.offsetWidth === 0 && rdisplayswap.test( jQuery.css( elem, "display" ) ) ?
      -                    jQuery.swap( elem, cssShow, function() {
      -                        return getWidthOrHeight( elem, name, extra );
      -                    }) :
      -                    getWidthOrHeight( elem, name, extra );
      -            }
      -        },
      -
      -        set: function( elem, value, extra ) {
      -            var styles = extra && getStyles( elem );
      -            return setPositiveNumber( elem, value, extra ?
      -                augmentWidthOrHeight(
      -                    elem,
      -                    name,
      -                    extra,
      -                    jQuery.support.boxSizing && jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
      -                    styles
      -                ) : 0
      -            );
      -        }
      -    };
      -});
      -
      -if ( !jQuery.support.opacity ) {
      -    jQuery.cssHooks.opacity = {
      -        get: function( elem, computed ) {
      -            // IE uses filters for opacity
      -            return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
      -                ( 0.01 * parseFloat( RegExp.$1 ) ) + "" :
      -                computed ? "1" : "";
      -        },
      -
      -        set: function( elem, value ) {
      -            var style = elem.style,
      -                currentStyle = elem.currentStyle,
      -                opacity = jQuery.isNumeric( value ) ? "alpha(opacity=" + value * 100 + ")" : "",
      -                filter = currentStyle && currentStyle.filter || style.filter || "";
      -
      -            // IE has trouble with opacity if it does not have layout
      -            // Force it by setting the zoom level
      -            style.zoom = 1;
      -
      -            // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
      -            // if value === "", then remove inline opacity #12685
      -            if ( ( value >= 1 || value === "" ) &&
      -                    jQuery.trim( filter.replace( ralpha, "" ) ) === "" &&
      -                    style.removeAttribute ) {
      -
      -                // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
      -                // if "filter:" is present at all, clearType is disabled, we want to avoid this
      -                // style.removeAttribute is IE Only, but so apparently is this code path...
      -                style.removeAttribute( "filter" );
      -
      -                // if there is no filter style applied in a css rule or unset inline opacity, we are done
      -                if ( value === "" || currentStyle && !currentStyle.filter ) {
      -                    return;
      -                }
      -            }
      -
      -            // otherwise, set new filter values
      -            style.filter = ralpha.test( filter ) ?
      -                filter.replace( ralpha, opacity ) :
      -                filter + " " + opacity;
      -        }
      -    };
      -}
      -
      -// These hooks cannot be added until DOM ready because the support test
      -// for it is not run until after DOM ready
      -jQuery(function() {
      -    if ( !jQuery.support.reliableMarginRight ) {
      -        jQuery.cssHooks.marginRight = {
      -            get: function( elem, computed ) {
      -                if ( computed ) {
      -                    // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
      -                    // Work around by temporarily setting element display to inline-block
      -                    return jQuery.swap( elem, { "display": "inline-block" },
      -                        curCSS, [ elem, "marginRight" ] );
      -                }
      -            }
      -        };
      -    }
      -
      -    // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
      -    // getComputedStyle returns percent when specified for top/left/bottom/right
      -    // rather than make the css module depend on the offset module, we just check for it here
      -    if ( !jQuery.support.pixelPosition && jQuery.fn.position ) {
      -        jQuery.each( [ "top", "left" ], function( i, prop ) {
      -            jQuery.cssHooks[ prop ] = {
      -                get: function( elem, computed ) {
      -                    if ( computed ) {
      -                        computed = curCSS( elem, prop );
      -                        // if curCSS returns percentage, fallback to offset
      -                        return rnumnonpx.test( computed ) ?
      -                            jQuery( elem ).position()[ prop ] + "px" :
      -                            computed;
      -                    }
      -                }
      -            };
      -        });
      -    }
      -
      -});
      -
      -if ( jQuery.expr && jQuery.expr.filters ) {
      -    jQuery.expr.filters.hidden = function( elem ) {
      -        // Support: Opera <= 12.12
      -        // Opera reports offsetWidths and offsetHeights less than zero on some elements
      -        return elem.offsetWidth <= 0 && elem.offsetHeight <= 0 ||
      -            (!jQuery.support.reliableHiddenOffsets && ((elem.style && elem.style.display) || jQuery.css( elem, "display" )) === "none");
      -    };
      -
      -    jQuery.expr.filters.visible = function( elem ) {
      -        return !jQuery.expr.filters.hidden( elem );
      -    };
      -}
      -
      -// These hooks are used by animate to expand properties
      -jQuery.each({
      -    margin: "",
      -    padding: "",
      -    border: "Width"
      -}, function( prefix, suffix ) {
      -    jQuery.cssHooks[ prefix + suffix ] = {
      -        expand: function( value ) {
      -            var i = 0,
      -                expanded = {},
      -
      -                // assumes a single number if not a string
      -                parts = typeof value === "string" ? value.split(" ") : [ value ];
      -
      -            for ( ; i < 4; i++ ) {
      -                expanded[ prefix + cssExpand[ i ] + suffix ] =
      -                    parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
      -            }
      -
      -            return expanded;
      -        }
      -    };
      -
      -    if ( !rmargin.test( prefix ) ) {
      -        jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
      -    }
      -});
      -var r20 = /%20/g,
      -    rbracket = /\[\]$/,
      -    rCRLF = /\r?\n/g,
      -    rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
      -    rsubmittable = /^(?:input|select|textarea|keygen)/i;
      -
      -jQuery.fn.extend({
      -    serialize: function() {
      -        return jQuery.param( this.serializeArray() );
      -    },
      -    serializeArray: function() {
      -        return this.map(function(){
      -            // Can add propHook for "elements" to filter or add form elements
      -            var elements = jQuery.prop( this, "elements" );
      -            return elements ? jQuery.makeArray( elements ) : this;
      -        })
      -        .filter(function(){
      -            var type = this.type;
      -            // Use .is(":disabled") so that fieldset[disabled] works
      -            return this.name && !jQuery( this ).is( ":disabled" ) &&
      -                rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
      -                ( this.checked || !manipulation_rcheckableType.test( type ) );
      -        })
      -        .map(function( i, elem ){
      -            var val = jQuery( this ).val();
      -
      -            return val == null ?
      -                null :
      -                jQuery.isArray( val ) ?
      -                    jQuery.map( val, function( val ){
      -                        return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -                    }) :
      -                    { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
      -        }).get();
      -    }
      -});
      -
      -//Serialize an array of form elements or a set of
      -//key/values into a query string
      -jQuery.param = function( a, traditional ) {
      -    var prefix,
      -        s = [],
      -        add = function( key, value ) {
      -            // If value is a function, invoke it and return its value
      -            value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
      -            s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
      -        };
      -
      -    // Set traditional to true for jQuery <= 1.3.3 behavior.
      -    if ( traditional === undefined ) {
      -        traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
      -    }
      -
      -    // If an array was passed in, assume that it is an array of form elements.
      -    if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
      -        // Serialize the form elements
      -        jQuery.each( a, function() {
      -            add( this.name, this.value );
      -        });
      -
      -    } else {
      -        // If traditional, encode the "old" way (the way 1.3.3 or older
      -        // did it), otherwise encode params recursively.
      -        for ( prefix in a ) {
      -            buildParams( prefix, a[ prefix ], traditional, add );
      -        }
      -    }
      -
      -    // Return the resulting serialization
      -    return s.join( "&" ).replace( r20, "+" );
      -};
      -
      -function buildParams( prefix, obj, traditional, add ) {
      -    var name;
      -
      -    if ( jQuery.isArray( obj ) ) {
      -        // Serialize array item.
      -        jQuery.each( obj, function( i, v ) {
      -            if ( traditional || rbracket.test( prefix ) ) {
      -                // Treat each array item as a scalar.
      -                add( prefix, v );
      -
      -            } else {
      -                // Item is non-scalar (array or object), encode its numeric index.
      -                buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
      -            }
      -        });
      -
      -    } else if ( !traditional && jQuery.type( obj ) === "object" ) {
      -        // Serialize object item.
      -        for ( name in obj ) {
      -            buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
      -        }
      -
      -    } else {
      -        // Serialize scalar item.
      -        add( prefix, obj );
      -    }
      -}
      -jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
      -    "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
      -    "change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
      -
      -    // Handle event binding
      -    jQuery.fn[ name ] = function( data, fn ) {
      -        return arguments.length > 0 ?
      -            this.on( name, null, data, fn ) :
      -            this.trigger( name );
      -    };
      -});
      -
      -jQuery.fn.hover = function( fnOver, fnOut ) {
      -    return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
      -};
      -var
      -    // Document location
      -    ajaxLocParts,
      -    ajaxLocation,
      -    ajax_nonce = jQuery.now(),
      -
      -    ajax_rquery = /\?/,
      -    rhash = /#.*$/,
      -    rts = /([?&])_=[^&]*/,
      -    rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
      -    // #7653, #8125, #8152: local protocol detection
      -    rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
      -    rnoContent = /^(?:GET|HEAD)$/,
      -    rprotocol = /^\/\//,
      -    rurl = /^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,
      -
      -    // Keep a copy of the old load method
      -    _load = jQuery.fn.load,
      -
      -    /* Prefilters
      -     * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
      -     * 2) These are called:
      -     *    - BEFORE asking for a transport
      -     *    - AFTER param serialization (s.data is a string if s.processData is true)
      -     * 3) key is the dataType
      -     * 4) the catchall symbol "*" can be used
      -     * 5) execution will start with transport dataType and THEN continue down to "*" if needed
      -     */
      -    prefilters = {},
      -
      -    /* Transports bindings
      -     * 1) key is the dataType
      -     * 2) the catchall symbol "*" can be used
      -     * 3) selection will start with transport dataType and THEN go to "*" if needed
      -     */
      -    transports = {},
      -
      -    // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
      -    allTypes = "*/".concat("*");
      -
      -// #8138, IE may throw an exception when accessing
      -// a field from window.location if document.domain has been set
      -try {
      -    ajaxLocation = location.href;
      -} catch( e ) {
      -    // Use the href attribute of an A element
      -    // since IE will modify it given document.location
      -    ajaxLocation = document.createElement( "a" );
      -    ajaxLocation.href = "";
      -    ajaxLocation = ajaxLocation.href;
      -}
      -
      -// Segment location into parts
      -ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
      -
      -// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
      -function addToPrefiltersOrTransports( structure ) {
      -
      -    // dataTypeExpression is optional and defaults to "*"
      -    return function( dataTypeExpression, func ) {
      -
      -        if ( typeof dataTypeExpression !== "string" ) {
      -            func = dataTypeExpression;
      -            dataTypeExpression = "*";
      -        }
      -
      -        var dataType,
      -            i = 0,
      -            dataTypes = dataTypeExpression.toLowerCase().match( core_rnotwhite ) || [];
      -
      -        if ( jQuery.isFunction( func ) ) {
      -            // For each dataType in the dataTypeExpression
      -            while ( (dataType = dataTypes[i++]) ) {
      -                // Prepend if requested
      -                if ( dataType[0] === "+" ) {
      -                    dataType = dataType.slice( 1 ) || "*";
      -                    (structure[ dataType ] = structure[ dataType ] || []).unshift( func );
      -
      -                // Otherwise append
      -                } else {
      -                    (structure[ dataType ] = structure[ dataType ] || []).push( func );
      -                }
      -            }
      -        }
      -    };
      -}
      -
      -// Base inspection function for prefilters and transports
      -function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
      -
      -    var inspected = {},
      -        seekingTransport = ( structure === transports );
      -
      -    function inspect( dataType ) {
      -        var selected;
      -        inspected[ dataType ] = true;
      -        jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
      -            var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
      -            if( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
      -                options.dataTypes.unshift( dataTypeOrTransport );
      -                inspect( dataTypeOrTransport );
      -                return false;
      -            } else if ( seekingTransport ) {
      -                return !( selected = dataTypeOrTransport );
      -            }
      -        });
      -        return selected;
      -    }
      -
      -    return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
      -}
      -
      -// A special extend for ajax options
      -// that takes "flat" options (not to be deep extended)
      -// Fixes #9887
      -function ajaxExtend( target, src ) {
      -    var deep, key,
      -        flatOptions = jQuery.ajaxSettings.flatOptions || {};
      -
      -    for ( key in src ) {
      -        if ( src[ key ] !== undefined ) {
      -            ( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
      -        }
      -    }
      -    if ( deep ) {
      -        jQuery.extend( true, target, deep );
      -    }
      -
      -    return target;
      -}
      -
      -jQuery.fn.load = function( url, params, callback ) {
      -    if ( typeof url !== "string" && _load ) {
      -        return _load.apply( this, arguments );
      -    }
      -
      -    var selector, response, type,
      -        self = this,
      -        off = url.indexOf(" ");
      -
      -    if ( off >= 0 ) {
      -        selector = url.slice( off, url.length );
      -        url = url.slice( 0, off );
      -    }
      -
      -    // If it's a function
      -    if ( jQuery.isFunction( params ) ) {
      -
      -        // We assume that it's the callback
      -        callback = params;
      -        params = undefined;
      -
      -    // Otherwise, build a param string
      -    } else if ( params && typeof params === "object" ) {
      -        type = "POST";
      -    }
      -
      -    // If we have elements to modify, make the request
      -    if ( self.length > 0 ) {
      -        jQuery.ajax({
      -            url: url,
      -
      -            // if "type" variable is undefined, then "GET" method will be used
      -            type: type,
      -            dataType: "html",
      -            data: params
      -        }).done(function( responseText ) {
      -
      -            // Save response for use in complete callback
      -            response = arguments;
      -
      -            self.html( selector ?
      -
      -                // If a selector was specified, locate the right elements in a dummy div
      -                // Exclude scripts to avoid IE 'Permission Denied' errors
      -                jQuery("<div>").append( jQuery.parseHTML( responseText ) ).find( selector ) :
      -
      -                // Otherwise use the full result
      -                responseText );
      -
      -        }).complete( callback && function( jqXHR, status ) {
      -            self.each( callback, response || [ jqXHR.responseText, status, jqXHR ] );
      -        });
      -    }
      -
      -    return this;
      -};
      -
      -// Attach a bunch of functions for handling common AJAX events
      -jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ){
      -    jQuery.fn[ type ] = function( fn ){
      -        return this.on( type, fn );
      -    };
      -});
      -
      -jQuery.each( [ "get", "post" ], function( i, method ) {
      -    jQuery[ method ] = function( url, data, callback, type ) {
      -        // shift arguments if data argument was omitted
      -        if ( jQuery.isFunction( data ) ) {
      -            type = type || callback;
      -            callback = data;
      -            data = undefined;
      -        }
      -
      -        return jQuery.ajax({
      -            url: url,
      -            type: method,
      -            dataType: type,
      -            data: data,
      -            success: callback
      -        });
      -    };
      -});
      -
      -jQuery.extend({
      -
      -    // Counter for holding the number of active queries
      -    active: 0,
      -
      -    // Last-Modified header cache for next request
      -    lastModified: {},
      -    etag: {},
      -
      -    ajaxSettings: {
      -        url: ajaxLocation,
      -        type: "GET",
      -        isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
      -        global: true,
      -        processData: true,
      -        async: true,
      -        contentType: "application/x-www-form-urlencoded; charset=UTF-8",
      -        /*
      -        timeout: 0,
      -        data: null,
      -        dataType: null,
      -        username: null,
      -        password: null,
      -        cache: null,
      -        throws: false,
      -        traditional: false,
      -        headers: {},
      -        */
      -
      -        accepts: {
      -            "*": allTypes,
      -            text: "text/plain",
      -            html: "text/html",
      -            xml: "application/xml, text/xml",
      -            json: "application/json, text/javascript"
      -        },
      -
      -        contents: {
      -            xml: /xml/,
      -            html: /html/,
      -            json: /json/
      -        },
      -
      -        responseFields: {
      -            xml: "responseXML",
      -            text: "responseText"
      -        },
      -
      -        // Data converters
      -        // Keys separate source (or catchall "*") and destination types with a single space
      -        converters: {
      -
      -            // Convert anything to text
      -            "* text": window.String,
      -
      -            // Text to html (true = no transformation)
      -            "text html": true,
      -
      -            // Evaluate text as a json expression
      -            "text json": jQuery.parseJSON,
      -
      -            // Parse text as xml
      -            "text xml": jQuery.parseXML
      -        },
      -
      -        // For options that shouldn't be deep extended:
      -        // you can add your own custom options here if
      -        // and when you create one that shouldn't be
      -        // deep extended (see ajaxExtend)
      -        flatOptions: {
      -            url: true,
      -            context: true
      -        }
      -    },
      -
      -    // Creates a full fledged settings object into target
      -    // with both ajaxSettings and settings fields.
      -    // If target is omitted, writes into ajaxSettings.
      -    ajaxSetup: function( target, settings ) {
      -        return settings ?
      -
      -            // Building a settings object
      -            ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
      -
      -            // Extending ajaxSettings
      -            ajaxExtend( jQuery.ajaxSettings, target );
      -    },
      -
      -    ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
      -    ajaxTransport: addToPrefiltersOrTransports( transports ),
      -
      -    // Main method
      -    ajax: function( url, options ) {
      -
      -        // If url is an object, simulate pre-1.5 signature
      -        if ( typeof url === "object" ) {
      -            options = url;
      -            url = undefined;
      -        }
      -
      -        // Force options to be an object
      -        options = options || {};
      -
      -        var // Cross-domain detection vars
      -            parts,
      -            // Loop variable
      -            i,
      -            // URL without anti-cache param
      -            cacheURL,
      -            // Response headers as string
      -            responseHeadersString,
      -            // timeout handle
      -            timeoutTimer,
      -
      -            // To know if global events are to be dispatched
      -            fireGlobals,
      -
      -            transport,
      -            // Response headers
      -            responseHeaders,
      -            // Create the final options object
      -            s = jQuery.ajaxSetup( {}, options ),
      -            // Callbacks context
      -            callbackContext = s.context || s,
      -            // Context for global events is callbackContext if it is a DOM node or jQuery collection
      -            globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
      -                jQuery( callbackContext ) :
      -                jQuery.event,
      -            // Deferreds
      -            deferred = jQuery.Deferred(),
      -            completeDeferred = jQuery.Callbacks("once memory"),
      -            // Status-dependent callbacks
      -            statusCode = s.statusCode || {},
      -            // Headers (they are sent all at once)
      -            requestHeaders = {},
      -            requestHeadersNames = {},
      -            // The jqXHR state
      -            state = 0,
      -            // Default abort message
      -            strAbort = "canceled",
      -            // Fake xhr
      -            jqXHR = {
      -                readyState: 0,
      -
      -                // Builds headers hashtable if needed
      -                getResponseHeader: function( key ) {
      -                    var match;
      -                    if ( state === 2 ) {
      -                        if ( !responseHeaders ) {
      -                            responseHeaders = {};
      -                            while ( (match = rheaders.exec( responseHeadersString )) ) {
      -                                responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
      -                            }
      -                        }
      -                        match = responseHeaders[ key.toLowerCase() ];
      -                    }
      -                    return match == null ? null : match;
      -                },
      -
      -                // Raw string
      -                getAllResponseHeaders: function() {
      -                    return state === 2 ? responseHeadersString : null;
      -                },
      -
      -                // Caches the header
      -                setRequestHeader: function( name, value ) {
      -                    var lname = name.toLowerCase();
      -                    if ( !state ) {
      -                        name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
      -                        requestHeaders[ name ] = value;
      -                    }
      -                    return this;
      -                },
      -
      -                // Overrides response content-type header
      -                overrideMimeType: function( type ) {
      -                    if ( !state ) {
      -                        s.mimeType = type;
      -                    }
      -                    return this;
      -                },
      -
      -                // Status-dependent callbacks
      -                statusCode: function( map ) {
      -                    var code;
      -                    if ( map ) {
      -                        if ( state < 2 ) {
      -                            for ( code in map ) {
      -                                // Lazy-add the new callback in a way that preserves old ones
      -                                statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
      -                            }
      -                        } else {
      -                            // Execute the appropriate callbacks
      -                            jqXHR.always( map[ jqXHR.status ] );
      -                        }
      -                    }
      -                    return this;
      -                },
      -
      -                // Cancel the request
      -                abort: function( statusText ) {
      -                    var finalText = statusText || strAbort;
      -                    if ( transport ) {
      -                        transport.abort( finalText );
      -                    }
      -                    done( 0, finalText );
      -                    return this;
      -                }
      -            };
      -
      -        // Attach deferreds
      -        deferred.promise( jqXHR ).complete = completeDeferred.add;
      -        jqXHR.success = jqXHR.done;
      -        jqXHR.error = jqXHR.fail;
      -
      -        // Remove hash character (#7531: and string promotion)
      -        // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
      -        // Handle falsy url in the settings object (#10093: consistency with old signature)
      -        // We also use the url parameter if available
      -        s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
      -
      -        // Alias method option to type as per ticket #12004
      -        s.type = options.method || options.type || s.method || s.type;
      -
      -        // Extract dataTypes list
      -        s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( core_rnotwhite ) || [""];
      -
      -        // A cross-domain request is in order when we have a protocol:host:port mismatch
      -        if ( s.crossDomain == null ) {
      -            parts = rurl.exec( s.url.toLowerCase() );
      -            s.crossDomain = !!( parts &&
      -                ( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
      -                    ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
      -                        ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
      -            );
      -        }
      -
      -        // Convert data if not already a string
      -        if ( s.data && s.processData && typeof s.data !== "string" ) {
      -            s.data = jQuery.param( s.data, s.traditional );
      -        }
      -
      -        // Apply prefilters
      -        inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
      -
      -        // If request was aborted inside a prefilter, stop there
      -        if ( state === 2 ) {
      -            return jqXHR;
      -        }
      -
      -        // We can fire global events as of now if asked to
      -        fireGlobals = s.global;
      -
      -        // Watch for a new set of requests
      -        if ( fireGlobals && jQuery.active++ === 0 ) {
      -            jQuery.event.trigger("ajaxStart");
      -        }
      -
      -        // Uppercase the type
      -        s.type = s.type.toUpperCase();
      -
      -        // Determine if request has content
      -        s.hasContent = !rnoContent.test( s.type );
      -
      -        // Save the URL in case we're toying with the If-Modified-Since
      -        // and/or If-None-Match header later on
      -        cacheURL = s.url;
      -
      -        // More options handling for requests with no content
      -        if ( !s.hasContent ) {
      -
      -            // If data is available, append data to url
      -            if ( s.data ) {
      -                cacheURL = ( s.url += ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
      -                // #9682: remove data so that it's not used in an eventual retry
      -                delete s.data;
      -            }
      -
      -            // Add anti-cache in url if needed
      -            if ( s.cache === false ) {
      -                s.url = rts.test( cacheURL ) ?
      -
      -                    // If there is already a '_' parameter, set its value
      -                    cacheURL.replace( rts, "$1_=" + ajax_nonce++ ) :
      -
      -                    // Otherwise add one to the end
      -                    cacheURL + ( ajax_rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ajax_nonce++;
      -            }
      -        }
      -
      -        // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -        if ( s.ifModified ) {
      -            if ( jQuery.lastModified[ cacheURL ] ) {
      -                jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
      -            }
      -            if ( jQuery.etag[ cacheURL ] ) {
      -                jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
      -            }
      -        }
      -
      -        // Set the correct header, if data is being sent
      -        if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
      -            jqXHR.setRequestHeader( "Content-Type", s.contentType );
      -        }
      -
      -        // Set the Accepts header for the server, depending on the dataType
      -        jqXHR.setRequestHeader(
      -            "Accept",
      -            s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
      -                s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
      -                s.accepts[ "*" ]
      -        );
      -
      -        // Check for headers option
      -        for ( i in s.headers ) {
      -            jqXHR.setRequestHeader( i, s.headers[ i ] );
      -        }
      -
      -        // Allow custom headers/mimetypes and early abort
      -        if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
      -            // Abort if not done already and return
      -            return jqXHR.abort();
      -        }
      -
      -        // aborting is no longer a cancellation
      -        strAbort = "abort";
      -
      -        // Install callbacks on deferreds
      -        for ( i in { success: 1, error: 1, complete: 1 } ) {
      -            jqXHR[ i ]( s[ i ] );
      -        }
      -
      -        // Get transport
      -        transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
      -
      -        // If no transport, we auto-abort
      -        if ( !transport ) {
      -            done( -1, "No Transport" );
      -        } else {
      -            jqXHR.readyState = 1;
      -
      -            // Send global event
      -            if ( fireGlobals ) {
      -                globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
      -            }
      -            // Timeout
      -            if ( s.async && s.timeout > 0 ) {
      -                timeoutTimer = setTimeout(function() {
      -                    jqXHR.abort("timeout");
      -                }, s.timeout );
      -            }
      -
      -            try {
      -                state = 1;
      -                transport.send( requestHeaders, done );
      -            } catch ( e ) {
      -                // Propagate exception as error if not done
      -                if ( state < 2 ) {
      -                    done( -1, e );
      -                // Simply rethrow otherwise
      -                } else {
      -                    throw e;
      -                }
      -            }
      -        }
      -
      -        // Callback for when everything is done
      -        function done( status, nativeStatusText, responses, headers ) {
      -            var isSuccess, success, error, response, modified,
      -                statusText = nativeStatusText;
      -
      -            // Called once
      -            if ( state === 2 ) {
      -                return;
      -            }
      -
      -            // State is "done" now
      -            state = 2;
      -
      -            // Clear timeout if it exists
      -            if ( timeoutTimer ) {
      -                clearTimeout( timeoutTimer );
      -            }
      -
      -            // Dereference transport for early garbage collection
      -            // (no matter how long the jqXHR object will be used)
      -            transport = undefined;
      -
      -            // Cache response headers
      -            responseHeadersString = headers || "";
      -
      -            // Set readyState
      -            jqXHR.readyState = status > 0 ? 4 : 0;
      -
      -            // Get response data
      -            if ( responses ) {
      -                response = ajaxHandleResponses( s, jqXHR, responses );
      -            }
      -
      -            // If successful, handle type chaining
      -            if ( status >= 200 && status < 300 || status === 304 ) {
      -
      -                // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
      -                if ( s.ifModified ) {
      -                    modified = jqXHR.getResponseHeader("Last-Modified");
      -                    if ( modified ) {
      -                        jQuery.lastModified[ cacheURL ] = modified;
      -                    }
      -                    modified = jqXHR.getResponseHeader("etag");
      -                    if ( modified ) {
      -                        jQuery.etag[ cacheURL ] = modified;
      -                    }
      -                }
      -
      -                // if no content
      -                if ( status === 204 ) {
      -                    isSuccess = true;
      -                    statusText = "nocontent";
      -
      -                // if not modified
      -                } else if ( status === 304 ) {
      -                    isSuccess = true;
      -                    statusText = "notmodified";
      -
      -                // If we have data, let's convert it
      -                } else {
      -                    isSuccess = ajaxConvert( s, response );
      -                    statusText = isSuccess.state;
      -                    success = isSuccess.data;
      -                    error = isSuccess.error;
      -                    isSuccess = !error;
      -                }
      -            } else {
      -                // We extract error from statusText
      -                // then normalize statusText and status for non-aborts
      -                error = statusText;
      -                if ( status || !statusText ) {
      -                    statusText = "error";
      -                    if ( status < 0 ) {
      -                        status = 0;
      -                    }
      -                }
      -            }
      -
      -            // Set data for the fake xhr object
      -            jqXHR.status = status;
      -            jqXHR.statusText = ( nativeStatusText || statusText ) + "";
      -
      -            // Success/Error
      -            if ( isSuccess ) {
      -                deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
      -            } else {
      -                deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
      -            }
      -
      -            // Status-dependent callbacks
      -            jqXHR.statusCode( statusCode );
      -            statusCode = undefined;
      -
      -            if ( fireGlobals ) {
      -                globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
      -                    [ jqXHR, s, isSuccess ? success : error ] );
      -            }
      -
      -            // Complete
      -            completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
      -
      -            if ( fireGlobals ) {
      -                globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
      -                // Handle the global AJAX counter
      -                if ( !( --jQuery.active ) ) {
      -                    jQuery.event.trigger("ajaxStop");
      -                }
      -            }
      -        }
      -
      -        return jqXHR;
      -    },
      -
      -    getScript: function( url, callback ) {
      -        return jQuery.get( url, undefined, callback, "script" );
      -    },
      -
      -    getJSON: function( url, data, callback ) {
      -        return jQuery.get( url, data, callback, "json" );
      -    }
      -});
      -
      -/* Handles responses to an ajax request:
      - * - sets all responseXXX fields accordingly
      - * - finds the right dataType (mediates between content-type and expected dataType)
      - * - returns the corresponding response
      - */
      -function ajaxHandleResponses( s, jqXHR, responses ) {
      -    var firstDataType, ct, finalDataType, type,
      -        contents = s.contents,
      -        dataTypes = s.dataTypes,
      -        responseFields = s.responseFields;
      -
      -    // Fill responseXXX fields
      -    for ( type in responseFields ) {
      -        if ( type in responses ) {
      -            jqXHR[ responseFields[type] ] = responses[ type ];
      -        }
      -    }
      -
      -    // Remove auto dataType and get content-type in the process
      -    while( dataTypes[ 0 ] === "*" ) {
      -        dataTypes.shift();
      -        if ( ct === undefined ) {
      -            ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
      -        }
      -    }
      -
      -    // Check if we're dealing with a known content-type
      -    if ( ct ) {
      -        for ( type in contents ) {
      -            if ( contents[ type ] && contents[ type ].test( ct ) ) {
      -                dataTypes.unshift( type );
      -                break;
      -            }
      -        }
      -    }
      -
      -    // Check to see if we have a response for the expected dataType
      -    if ( dataTypes[ 0 ] in responses ) {
      -        finalDataType = dataTypes[ 0 ];
      -    } else {
      -        // Try convertible dataTypes
      -        for ( type in responses ) {
      -            if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
      -                finalDataType = type;
      -                break;
      -            }
      -            if ( !firstDataType ) {
      -                firstDataType = type;
      -            }
      -        }
      -        // Or just use first one
      -        finalDataType = finalDataType || firstDataType;
      -    }
      -
      -    // If we found a dataType
      -    // We add the dataType to the list if needed
      -    // and return the corresponding response
      -    if ( finalDataType ) {
      -        if ( finalDataType !== dataTypes[ 0 ] ) {
      -            dataTypes.unshift( finalDataType );
      -        }
      -        return responses[ finalDataType ];
      -    }
      -}
      -
      -// Chain conversions given the request and the original response
      -function ajaxConvert( s, response ) {
      -    var conv2, current, conv, tmp,
      -        converters = {},
      -        i = 0,
      -        // Work with a copy of dataTypes in case we need to modify it for conversion
      -        dataTypes = s.dataTypes.slice(),
      -        prev = dataTypes[ 0 ];
      -
      -    // Apply the dataFilter if provided
      -    if ( s.dataFilter ) {
      -        response = s.dataFilter( response, s.dataType );
      -    }
      -
      -    // Create converters map with lowercased keys
      -    if ( dataTypes[ 1 ] ) {
      -        for ( conv in s.converters ) {
      -            converters[ conv.toLowerCase() ] = s.converters[ conv ];
      -        }
      -    }
      -
      -    // Convert to each sequential dataType, tolerating list modification
      -    for ( ; (current = dataTypes[++i]); ) {
      -
      -        // There's only work to do if current dataType is non-auto
      -        if ( current !== "*" ) {
      -
      -            // Convert response if prev dataType is non-auto and differs from current
      -            if ( prev !== "*" && prev !== current ) {
      -
      -                // Seek a direct converter
      -                conv = converters[ prev + " " + current ] || converters[ "* " + current ];
      -
      -                // If none found, seek a pair
      -                if ( !conv ) {
      -                    for ( conv2 in converters ) {
      -
      -                        // If conv2 outputs current
      -                        tmp = conv2.split(" ");
      -                        if ( tmp[ 1 ] === current ) {
      -
      -                            // If prev can be converted to accepted input
      -                            conv = converters[ prev + " " + tmp[ 0 ] ] ||
      -                                converters[ "* " + tmp[ 0 ] ];
      -                            if ( conv ) {
      -                                // Condense equivalence converters
      -                                if ( conv === true ) {
      -                                    conv = converters[ conv2 ];
      -
      -                                // Otherwise, insert the intermediate dataType
      -                                } else if ( converters[ conv2 ] !== true ) {
      -                                    current = tmp[ 0 ];
      -                                    dataTypes.splice( i--, 0, current );
      -                                }
      -
      -                                break;
      -                            }
      -                        }
      -                    }
      -                }
      -
      -                // Apply converter (if not an equivalence)
      -                if ( conv !== true ) {
      -
      -                    // Unless errors are allowed to bubble, catch and return them
      -                    if ( conv && s["throws"] ) {
      -                        response = conv( response );
      -                    } else {
      -                        try {
      -                            response = conv( response );
      -                        } catch ( e ) {
      -                            return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
      -                        }
      -                    }
      -                }
      -            }
      -
      -            // Update prev for next iteration
      -            prev = current;
      -        }
      -    }
      -
      -    return { state: "success", data: response };
      -}
      -// Install script dataType
      -jQuery.ajaxSetup({
      -    accepts: {
      -        script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
      -    },
      -    contents: {
      -        script: /(?:java|ecma)script/
      -    },
      -    converters: {
      -        "text script": function( text ) {
      -            jQuery.globalEval( text );
      -            return text;
      -        }
      -    }
      -});
      -
      -// Handle cache's special case and global
      -jQuery.ajaxPrefilter( "script", function( s ) {
      -    if ( s.cache === undefined ) {
      -        s.cache = false;
      -    }
      -    if ( s.crossDomain ) {
      -        s.type = "GET";
      -        s.global = false;
      -    }
      -});
      -
      -// Bind script tag hack transport
      -jQuery.ajaxTransport( "script", function(s) {
      -
      -    // This transport only deals with cross domain requests
      -    if ( s.crossDomain ) {
      -
      -        var script,
      -            head = document.head || jQuery("head")[0] || document.documentElement;
      -
      -        return {
      -
      -            send: function( _, callback ) {
      -
      -                script = document.createElement("script");
      -
      -                script.async = true;
      -
      -                if ( s.scriptCharset ) {
      -                    script.charset = s.scriptCharset;
      -                }
      -
      -                script.src = s.url;
      -
      -                // Attach handlers for all browsers
      -                script.onload = script.onreadystatechange = function( _, isAbort ) {
      -
      -                    if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
      -
      -                        // Handle memory leak in IE
      -                        script.onload = script.onreadystatechange = null;
      -
      -                        // Remove the script
      -                        if ( script.parentNode ) {
      -                            script.parentNode.removeChild( script );
      -                        }
      -
      -                        // Dereference the script
      -                        script = null;
      -
      -                        // Callback if not abort
      -                        if ( !isAbort ) {
      -                            callback( 200, "success" );
      -                        }
      -                    }
      -                };
      -
      -                // Circumvent IE6 bugs with base elements (#2709 and #4378) by prepending
      -                // Use native DOM manipulation to avoid our domManip AJAX trickery
      -                head.insertBefore( script, head.firstChild );
      -            },
      -
      -            abort: function() {
      -                if ( script ) {
      -                    script.onload( undefined, true );
      -                }
      -            }
      -        };
      -    }
      -});
      -var oldCallbacks = [],
      -    rjsonp = /(=)\?(?=&|$)|\?\?/;
      -
      -// Default jsonp settings
      -jQuery.ajaxSetup({
      -    jsonp: "callback",
      -    jsonpCallback: function() {
      -        var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( ajax_nonce++ ) );
      -        this[ callback ] = true;
      -        return callback;
      -    }
      -});
      -
      -// Detect, normalize options and install callbacks for jsonp requests
      -jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
      -
      -    var callbackName, overwritten, responseContainer,
      -        jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
      -            "url" :
      -            typeof s.data === "string" && !( s.contentType || "" ).indexOf("application/x-www-form-urlencoded") && rjsonp.test( s.data ) && "data"
      -        );
      -
      -    // Handle iff the expected data type is "jsonp" or we have a parameter to set
      -    if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
      -
      -        // Get callback name, remembering preexisting value associated with it
      -        callbackName = s.jsonpCallback = jQuery.isFunction( s.jsonpCallback ) ?
      -            s.jsonpCallback() :
      -            s.jsonpCallback;
      -
      -        // Insert callback into url or form data
      -        if ( jsonProp ) {
      -            s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
      -        } else if ( s.jsonp !== false ) {
      -            s.url += ( ajax_rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
      -        }
      -
      -        // Use data converter to retrieve json after script execution
      -        s.converters["script json"] = function() {
      -            if ( !responseContainer ) {
      -                jQuery.error( callbackName + " was not called" );
      -            }
      -            return responseContainer[ 0 ];
      -        };
      -
      -        // force json dataType
      -        s.dataTypes[ 0 ] = "json";
      -
      -        // Install callback
      -        overwritten = window[ callbackName ];
      -        window[ callbackName ] = function() {
      -            responseContainer = arguments;
      -        };
      -
      -        // Clean-up function (fires after converters)
      -        jqXHR.always(function() {
      -            // Restore preexisting value
      -            window[ callbackName ] = overwritten;
      -
      -            // Save back as free
      -            if ( s[ callbackName ] ) {
      -                // make sure that re-using the options doesn't screw things around
      -                s.jsonpCallback = originalSettings.jsonpCallback;
      -
      -                // save the callback name for future use
      -                oldCallbacks.push( callbackName );
      -            }
      -
      -            // Call if it was a function and we have a response
      -            if ( responseContainer && jQuery.isFunction( overwritten ) ) {
      -                overwritten( responseContainer[ 0 ] );
      -            }
      -
      -            responseContainer = overwritten = undefined;
      -        });
      -
      -        // Delegate to script
      -        return "script";
      -    }
      -});
      -var xhrCallbacks, xhrSupported,
      -    xhrId = 0,
      -    // #5280: Internet Explorer will keep connections alive if we don't abort on unload
      -    xhrOnUnloadAbort = window.ActiveXObject && function() {
      -        // Abort all pending requests
      -        var key;
      -        for ( key in xhrCallbacks ) {
      -            xhrCallbacks[ key ]( undefined, true );
      -        }
      -    };
      -
      -// Functions to create xhrs
      -function createStandardXHR() {
      -    try {
      -        return new window.XMLHttpRequest();
      -    } catch( e ) {}
      -}
      -
      -function createActiveXHR() {
      -    try {
      -        return new window.ActiveXObject("Microsoft.XMLHTTP");
      -    } catch( e ) {}
      -}
      -
      -// Create the request object
      -// (This is still attached to ajaxSettings for backward compatibility)
      -jQuery.ajaxSettings.xhr = window.ActiveXObject ?
      -    /* Microsoft failed to properly
      -     * implement the XMLHttpRequest in IE7 (can't request local files),
      -     * so we use the ActiveXObject when it is available
      -     * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
      -     * we need a fallback.
      -     */
      -    function() {
      -        return !this.isLocal && createStandardXHR() || createActiveXHR();
      -    } :
      -    // For all other browsers, use the standard XMLHttpRequest object
      -    createStandardXHR;
      -
      -// Determine support properties
      -xhrSupported = jQuery.ajaxSettings.xhr();
      -jQuery.support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
      -xhrSupported = jQuery.support.ajax = !!xhrSupported;
      -
      -// Create transport if the browser can provide an xhr
      -if ( xhrSupported ) {
      -
      -    jQuery.ajaxTransport(function( s ) {
      -        // Cross domain only allowed if supported through XMLHttpRequest
      -        if ( !s.crossDomain || jQuery.support.cors ) {
      -
      -            var callback;
      -
      -            return {
      -                send: function( headers, complete ) {
      -
      -                    // Get a new xhr
      -                    var handle, i,
      -                        xhr = s.xhr();
      -
      -                    // Open the socket
      -                    // Passing null username, generates a login popup on Opera (#2865)
      -                    if ( s.username ) {
      -                        xhr.open( s.type, s.url, s.async, s.username, s.password );
      -                    } else {
      -                        xhr.open( s.type, s.url, s.async );
      -                    }
      -
      -                    // Apply custom fields if provided
      -                    if ( s.xhrFields ) {
      -                        for ( i in s.xhrFields ) {
      -                            xhr[ i ] = s.xhrFields[ i ];
      -                        }
      -                    }
      -
      -                    // Override mime type if needed
      -                    if ( s.mimeType && xhr.overrideMimeType ) {
      -                        xhr.overrideMimeType( s.mimeType );
      -                    }
      -
      -                    // X-Requested-With header
      -                    // For cross-domain requests, seeing as conditions for a preflight are
      -                    // akin to a jigsaw puzzle, we simply never set it to be sure.
      -                    // (it can always be set on a per-request basis or even using ajaxSetup)
      -                    // For same-domain requests, won't change header if already provided.
      -                    if ( !s.crossDomain && !headers["X-Requested-With"] ) {
      -                        headers["X-Requested-With"] = "XMLHttpRequest";
      -                    }
      -
      -                    // Need an extra try/catch for cross domain requests in Firefox 3
      -                    try {
      -                        for ( i in headers ) {
      -                            xhr.setRequestHeader( i, headers[ i ] );
      -                        }
      -                    } catch( err ) {}
      -
      -                    // Do send the request
      -                    // This may raise an exception which is actually
      -                    // handled in jQuery.ajax (so no try/catch here)
      -                    xhr.send( ( s.hasContent && s.data ) || null );
      -
      -                    // Listener
      -                    callback = function( _, isAbort ) {
      -                        var status, responseHeaders, statusText, responses;
      -
      -                        // Firefox throws exceptions when accessing properties
      -                        // of an xhr when a network error occurred
      -                        // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
      -                        try {
      -
      -                            // Was never called and is aborted or complete
      -                            if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
      -
      -                                // Only called once
      -                                callback = undefined;
      -
      -                                // Do not keep as active anymore
      -                                if ( handle ) {
      -                                    xhr.onreadystatechange = jQuery.noop;
      -                                    if ( xhrOnUnloadAbort ) {
      -                                        delete xhrCallbacks[ handle ];
      -                                    }
      -                                }
      -
      -                                // If it's an abort
      -                                if ( isAbort ) {
      -                                    // Abort it manually if needed
      -                                    if ( xhr.readyState !== 4 ) {
      -                                        xhr.abort();
      -                                    }
      -                                } else {
      -                                    responses = {};
      -                                    status = xhr.status;
      -                                    responseHeaders = xhr.getAllResponseHeaders();
      -
      -                                    // When requesting binary data, IE6-9 will throw an exception
      -                                    // on any attempt to access responseText (#11426)
      -                                    if ( typeof xhr.responseText === "string" ) {
      -                                        responses.text = xhr.responseText;
      -                                    }
      -
      -                                    // Firefox throws an exception when accessing
      -                                    // statusText for faulty cross-domain requests
      -                                    try {
      -                                        statusText = xhr.statusText;
      -                                    } catch( e ) {
      -                                        // We normalize with Webkit giving an empty statusText
      -                                        statusText = "";
      -                                    }
      -
      -                                    // Filter status for non standard behaviors
      -
      -                                    // If the request is local and we have data: assume a success
      -                                    // (success with no data won't get notified, that's the best we
      -                                    // can do given current implementations)
      -                                    if ( !status && s.isLocal && !s.crossDomain ) {
      -                                        status = responses.text ? 200 : 404;
      -                                    // IE - #1450: sometimes returns 1223 when it should be 204
      -                                    } else if ( status === 1223 ) {
      -                                        status = 204;
      -                                    }
      -                                }
      -                            }
      -                        } catch( firefoxAccessException ) {
      -                            if ( !isAbort ) {
      -                                complete( -1, firefoxAccessException );
      -                            }
      -                        }
      -
      -                        // Call complete if needed
      -                        if ( responses ) {
      -                            complete( status, statusText, responses, responseHeaders );
      -                        }
      -                    };
      -
      -                    if ( !s.async ) {
      -                        // if we're in sync mode we fire the callback
      -                        callback();
      -                    } else if ( xhr.readyState === 4 ) {
      -                        // (IE6 & IE7) if it's in cache and has been
      -                        // retrieved directly we need to fire the callback
      -                        setTimeout( callback );
      -                    } else {
      -                        handle = ++xhrId;
      -                        if ( xhrOnUnloadAbort ) {
      -                            // Create the active xhrs callbacks list if needed
      -                            // and attach the unload handler
      -                            if ( !xhrCallbacks ) {
      -                                xhrCallbacks = {};
      -                                jQuery( window ).unload( xhrOnUnloadAbort );
      -                            }
      -                            // Add to list of active xhrs callbacks
      -                            xhrCallbacks[ handle ] = callback;
      -                        }
      -                        xhr.onreadystatechange = callback;
      -                    }
      -                },
      -
      -                abort: function() {
      -                    if ( callback ) {
      -                        callback( undefined, true );
      -                    }
      -                }
      -            };
      -        }
      -    });
      -}
      -var fxNow, timerId,
      -    rfxtypes = /^(?:toggle|show|hide)$/,
      -    rfxnum = new RegExp( "^(?:([+-])=|)(" + core_pnum + ")([a-z%]*)$", "i" ),
      -    rrun = /queueHooks$/,
      -    animationPrefilters = [ defaultPrefilter ],
      -    tweeners = {
      -        "*": [function( prop, value ) {
      -            var end, unit,
      -                tween = this.createTween( prop, value ),
      -                parts = rfxnum.exec( value ),
      -                target = tween.cur(),
      -                start = +target || 0,
      -                scale = 1,
      -                maxIterations = 20;
      -
      -            if ( parts ) {
      -                end = +parts[2];
      -                unit = parts[3] || ( jQuery.cssNumber[ prop ] ? "" : "px" );
      -
      -                // We need to compute starting value
      -                if ( unit !== "px" && start ) {
      -                    // Iteratively approximate from a nonzero starting point
      -                    // Prefer the current property, because this process will be trivial if it uses the same units
      -                    // Fallback to end or a simple constant
      -                    start = jQuery.css( tween.elem, prop, true ) || end || 1;
      -
      -                    do {
      -                        // If previous iteration zeroed out, double until we get *something*
      -                        // Use a string for doubling factor so we don't accidentally see scale as unchanged below
      -                        scale = scale || ".5";
      -
      -                        // Adjust and apply
      -                        start = start / scale;
      -                        jQuery.style( tween.elem, prop, start + unit );
      -
      -                    // Update scale, tolerating zero or NaN from tween.cur()
      -                    // And breaking the loop if scale is unchanged or perfect, or if we've just had enough
      -                    } while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
      -                }
      -
      -                tween.unit = unit;
      -                tween.start = start;
      -                // If a +=/-= token was provided, we're doing a relative animation
      -                tween.end = parts[1] ? start + ( parts[1] + 1 ) * end : end;
      -            }
      -            return tween;
      -        }]
      -    };
      -
      -// Animations created synchronously will run synchronously
      -function createFxNow() {
      -    setTimeout(function() {
      -        fxNow = undefined;
      -    });
      -    return ( fxNow = jQuery.now() );
      -}
      -
      -function createTweens( animation, props ) {
      -    jQuery.each( props, function( prop, value ) {
      -        var collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
      -            index = 0,
      -            length = collection.length;
      -        for ( ; index < length; index++ ) {
      -            if ( collection[ index ].call( animation, prop, value ) ) {
      -
      -                // we're done with this property
      -                return;
      -            }
      -        }
      -    });
      -}
      -
      -function Animation( elem, properties, options ) {
      -    var result,
      -        stopped,
      -        index = 0,
      -        length = animationPrefilters.length,
      -        deferred = jQuery.Deferred().always( function() {
      -            // don't match elem in the :animated selector
      -            delete tick.elem;
      -        }),
      -        tick = function() {
      -            if ( stopped ) {
      -                return false;
      -            }
      -            var currentTime = fxNow || createFxNow(),
      -                remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
      -                // archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
      -                temp = remaining / animation.duration || 0,
      -                percent = 1 - temp,
      -                index = 0,
      -                length = animation.tweens.length;
      -
      -            for ( ; index < length ; index++ ) {
      -                animation.tweens[ index ].run( percent );
      -            }
      -
      -            deferred.notifyWith( elem, [ animation, percent, remaining ]);
      -
      -            if ( percent < 1 && length ) {
      -                return remaining;
      -            } else {
      -                deferred.resolveWith( elem, [ animation ] );
      -                return false;
      -            }
      -        },
      -        animation = deferred.promise({
      -            elem: elem,
      -            props: jQuery.extend( {}, properties ),
      -            opts: jQuery.extend( true, { specialEasing: {} }, options ),
      -            originalProperties: properties,
      -            originalOptions: options,
      -            startTime: fxNow || createFxNow(),
      -            duration: options.duration,
      -            tweens: [],
      -            createTween: function( prop, end ) {
      -                var tween = jQuery.Tween( elem, animation.opts, prop, end,
      -                        animation.opts.specialEasing[ prop ] || animation.opts.easing );
      -                animation.tweens.push( tween );
      -                return tween;
      -            },
      -            stop: function( gotoEnd ) {
      -                var index = 0,
      -                    // if we are going to the end, we want to run all the tweens
      -                    // otherwise we skip this part
      -                    length = gotoEnd ? animation.tweens.length : 0;
      -                if ( stopped ) {
      -                    return this;
      -                }
      -                stopped = true;
      -                for ( ; index < length ; index++ ) {
      -                    animation.tweens[ index ].run( 1 );
      -                }
      -
      -                // resolve when we played the last frame
      -                // otherwise, reject
      -                if ( gotoEnd ) {
      -                    deferred.resolveWith( elem, [ animation, gotoEnd ] );
      -                } else {
      -                    deferred.rejectWith( elem, [ animation, gotoEnd ] );
      -                }
      -                return this;
      -            }
      -        }),
      -        props = animation.props;
      -
      -    propFilter( props, animation.opts.specialEasing );
      -
      -    for ( ; index < length ; index++ ) {
      -        result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
      -        if ( result ) {
      -            return result;
      -        }
      -    }
      -
      -    createTweens( animation, props );
      -
      -    if ( jQuery.isFunction( animation.opts.start ) ) {
      -        animation.opts.start.call( elem, animation );
      -    }
      -
      -    jQuery.fx.timer(
      -        jQuery.extend( tick, {
      -            elem: elem,
      -            anim: animation,
      -            queue: animation.opts.queue
      -        })
      -    );
      -
      -    // attach callbacks from options
      -    return animation.progress( animation.opts.progress )
      -        .done( animation.opts.done, animation.opts.complete )
      -        .fail( animation.opts.fail )
      -        .always( animation.opts.always );
      -}
      -
      -function propFilter( props, specialEasing ) {
      -    var value, name, index, easing, hooks;
      -
      -    // camelCase, specialEasing and expand cssHook pass
      -    for ( index in props ) {
      -        name = jQuery.camelCase( index );
      -        easing = specialEasing[ name ];
      -        value = props[ index ];
      -        if ( jQuery.isArray( value ) ) {
      -            easing = value[ 1 ];
      -            value = props[ index ] = value[ 0 ];
      -        }
      -
      -        if ( index !== name ) {
      -            props[ name ] = value;
      -            delete props[ index ];
      -        }
      -
      -        hooks = jQuery.cssHooks[ name ];
      -        if ( hooks && "expand" in hooks ) {
      -            value = hooks.expand( value );
      -            delete props[ name ];
      -
      -            // not quite $.extend, this wont overwrite keys already present.
      -            // also - reusing 'index' from above because we have the correct "name"
      -            for ( index in value ) {
      -                if ( !( index in props ) ) {
      -                    props[ index ] = value[ index ];
      -                    specialEasing[ index ] = easing;
      -                }
      -            }
      -        } else {
      -            specialEasing[ name ] = easing;
      -        }
      -    }
      -}
      -
      -jQuery.Animation = jQuery.extend( Animation, {
      -
      -    tweener: function( props, callback ) {
      -        if ( jQuery.isFunction( props ) ) {
      -            callback = props;
      -            props = [ "*" ];
      -        } else {
      -            props = props.split(" ");
      -        }
      -
      -        var prop,
      -            index = 0,
      -            length = props.length;
      -
      -        for ( ; index < length ; index++ ) {
      -            prop = props[ index ];
      -            tweeners[ prop ] = tweeners[ prop ] || [];
      -            tweeners[ prop ].unshift( callback );
      -        }
      -    },
      -
      -    prefilter: function( callback, prepend ) {
      -        if ( prepend ) {
      -            animationPrefilters.unshift( callback );
      -        } else {
      -            animationPrefilters.push( callback );
      -        }
      -    }
      -});
      -
      -function defaultPrefilter( elem, props, opts ) {
      -    /*jshint validthis:true */
      -    var prop, index, length,
      -        value, dataShow, toggle,
      -        tween, hooks, oldfire,
      -        anim = this,
      -        style = elem.style,
      -        orig = {},
      -        handled = [],
      -        hidden = elem.nodeType && isHidden( elem );
      -
      -    // handle queue: false promises
      -    if ( !opts.queue ) {
      -        hooks = jQuery._queueHooks( elem, "fx" );
      -        if ( hooks.unqueued == null ) {
      -            hooks.unqueued = 0;
      -            oldfire = hooks.empty.fire;
      -            hooks.empty.fire = function() {
      -                if ( !hooks.unqueued ) {
      -                    oldfire();
      -                }
      -            };
      -        }
      -        hooks.unqueued++;
      -
      -        anim.always(function() {
      -            // doing this makes sure that the complete handler will be called
      -            // before this completes
      -            anim.always(function() {
      -                hooks.unqueued--;
      -                if ( !jQuery.queue( elem, "fx" ).length ) {
      -                    hooks.empty.fire();
      -                }
      -            });
      -        });
      -    }
      -
      -    // height/width overflow pass
      -    if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
      -        // Make sure that nothing sneaks out
      -        // Record all 3 overflow attributes because IE does not
      -        // change the overflow attribute when overflowX and
      -        // overflowY are set to the same value
      -        opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
      -
      -        // Set display property to inline-block for height/width
      -        // animations on inline elements that are having width/height animated
      -        if ( jQuery.css( elem, "display" ) === "inline" &&
      -                jQuery.css( elem, "float" ) === "none" ) {
      -
      -            // inline-level elements accept inline-block;
      -            // block-level elements need to be inline with layout
      -            if ( !jQuery.support.inlineBlockNeedsLayout || css_defaultDisplay( elem.nodeName ) === "inline" ) {
      -                style.display = "inline-block";
      -
      -            } else {
      -                style.zoom = 1;
      -            }
      -        }
      -    }
      -
      -    if ( opts.overflow ) {
      -        style.overflow = "hidden";
      -        if ( !jQuery.support.shrinkWrapBlocks ) {
      -            anim.always(function() {
      -                style.overflow = opts.overflow[ 0 ];
      -                style.overflowX = opts.overflow[ 1 ];
      -                style.overflowY = opts.overflow[ 2 ];
      -            });
      -        }
      -    }
      -
      -
      -    // show/hide pass
      -    for ( index in props ) {
      -        value = props[ index ];
      -        if ( rfxtypes.exec( value ) ) {
      -            delete props[ index ];
      -            toggle = toggle || value === "toggle";
      -            if ( value === ( hidden ? "hide" : "show" ) ) {
      -                continue;
      -            }
      -            handled.push( index );
      -        }
      -    }
      -
      -    length = handled.length;
      -    if ( length ) {
      -        dataShow = jQuery._data( elem, "fxshow" ) || jQuery._data( elem, "fxshow", {} );
      -        if ( "hidden" in dataShow ) {
      -            hidden = dataShow.hidden;
      -        }
      -
      -        // store state if its toggle - enables .stop().toggle() to "reverse"
      -        if ( toggle ) {
      -            dataShow.hidden = !hidden;
      -        }
      -        if ( hidden ) {
      -            jQuery( elem ).show();
      -        } else {
      -            anim.done(function() {
      -                jQuery( elem ).hide();
      -            });
      -        }
      -        anim.done(function() {
      -            var prop;
      -            jQuery._removeData( elem, "fxshow" );
      -            for ( prop in orig ) {
      -                jQuery.style( elem, prop, orig[ prop ] );
      -            }
      -        });
      -        for ( index = 0 ; index < length ; index++ ) {
      -            prop = handled[ index ];
      -            tween = anim.createTween( prop, hidden ? dataShow[ prop ] : 0 );
      -            orig[ prop ] = dataShow[ prop ] || jQuery.style( elem, prop );
      -
      -            if ( !( prop in dataShow ) ) {
      -                dataShow[ prop ] = tween.start;
      -                if ( hidden ) {
      -                    tween.end = tween.start;
      -                    tween.start = prop === "width" || prop === "height" ? 1 : 0;
      -                }
      -            }
      -        }
      -    }
      -}
      -
      -function Tween( elem, options, prop, end, easing ) {
      -    return new Tween.prototype.init( elem, options, prop, end, easing );
      -}
      -jQuery.Tween = Tween;
      -
      -Tween.prototype = {
      -    constructor: Tween,
      -    init: function( elem, options, prop, end, easing, unit ) {
      -        this.elem = elem;
      -        this.prop = prop;
      -        this.easing = easing || "swing";
      -        this.options = options;
      -        this.start = this.now = this.cur();
      -        this.end = end;
      -        this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
      -    },
      -    cur: function() {
      -        var hooks = Tween.propHooks[ this.prop ];
      -
      -        return hooks && hooks.get ?
      -            hooks.get( this ) :
      -            Tween.propHooks._default.get( this );
      -    },
      -    run: function( percent ) {
      -        var eased,
      -            hooks = Tween.propHooks[ this.prop ];
      -
      -        if ( this.options.duration ) {
      -            this.pos = eased = jQuery.easing[ this.easing ](
      -                percent, this.options.duration * percent, 0, 1, this.options.duration
      -            );
      -        } else {
      -            this.pos = eased = percent;
      -        }
      -        this.now = ( this.end - this.start ) * eased + this.start;
      -
      -        if ( this.options.step ) {
      -            this.options.step.call( this.elem, this.now, this );
      -        }
      -
      -        if ( hooks && hooks.set ) {
      -            hooks.set( this );
      -        } else {
      -            Tween.propHooks._default.set( this );
      -        }
      -        return this;
      -    }
      -};
      -
      -Tween.prototype.init.prototype = Tween.prototype;
      -
      -Tween.propHooks = {
      -    _default: {
      -        get: function( tween ) {
      -            var result;
      -
      -            if ( tween.elem[ tween.prop ] != null &&
      -                (!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
      -                return tween.elem[ tween.prop ];
      -            }
      -
      -            // passing an empty string as a 3rd parameter to .css will automatically
      -            // attempt a parseFloat and fallback to a string if the parse fails
      -            // so, simple values such as "10px" are parsed to Float.
      -            // complex values such as "rotate(1rad)" are returned as is.
      -            result = jQuery.css( tween.elem, tween.prop, "" );
      -            // Empty strings, null, undefined and "auto" are converted to 0.
      -            return !result || result === "auto" ? 0 : result;
      -        },
      -        set: function( tween ) {
      -            // use step hook for back compat - use cssHook if its there - use .style if its
      -            // available and use plain properties where available
      -            if ( jQuery.fx.step[ tween.prop ] ) {
      -                jQuery.fx.step[ tween.prop ]( tween );
      -            } else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
      -                jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
      -            } else {
      -                tween.elem[ tween.prop ] = tween.now;
      -            }
      -        }
      -    }
      -};
      -
      -// Remove in 2.0 - this supports IE8's panic based approach
      -// to setting things on disconnected nodes
      -
      -Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
      -    set: function( tween ) {
      -        if ( tween.elem.nodeType && tween.elem.parentNode ) {
      -            tween.elem[ tween.prop ] = tween.now;
      -        }
      -    }
      -};
      -
      -jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
      -    var cssFn = jQuery.fn[ name ];
      -    jQuery.fn[ name ] = function( speed, easing, callback ) {
      -        return speed == null || typeof speed === "boolean" ?
      -            cssFn.apply( this, arguments ) :
      -            this.animate( genFx( name, true ), speed, easing, callback );
      -    };
      -});
      -
      -jQuery.fn.extend({
      -    fadeTo: function( speed, to, easing, callback ) {
      -
      -        // show any hidden elements after setting opacity to 0
      -        return this.filter( isHidden ).css( "opacity", 0 ).show()
      -
      -            // animate to the value specified
      -            .end().animate({ opacity: to }, speed, easing, callback );
      -    },
      -    animate: function( prop, speed, easing, callback ) {
      -        var empty = jQuery.isEmptyObject( prop ),
      -            optall = jQuery.speed( speed, easing, callback ),
      -            doAnimation = function() {
      -                // Operate on a copy of prop so per-property easing won't be lost
      -                var anim = Animation( this, jQuery.extend( {}, prop ), optall );
      -                doAnimation.finish = function() {
      -                    anim.stop( true );
      -                };
      -                // Empty animations, or finishing resolves immediately
      -                if ( empty || jQuery._data( this, "finish" ) ) {
      -                    anim.stop( true );
      -                }
      -            };
      -            doAnimation.finish = doAnimation;
      -
      -        return empty || optall.queue === false ?
      -            this.each( doAnimation ) :
      -            this.queue( optall.queue, doAnimation );
      -    },
      -    stop: function( type, clearQueue, gotoEnd ) {
      -        var stopQueue = function( hooks ) {
      -            var stop = hooks.stop;
      -            delete hooks.stop;
      -            stop( gotoEnd );
      -        };
      -
      -        if ( typeof type !== "string" ) {
      -            gotoEnd = clearQueue;
      -            clearQueue = type;
      -            type = undefined;
      -        }
      -        if ( clearQueue && type !== false ) {
      -            this.queue( type || "fx", [] );
      -        }
      -
      -        return this.each(function() {
      -            var dequeue = true,
      -                index = type != null && type + "queueHooks",
      -                timers = jQuery.timers,
      -                data = jQuery._data( this );
      -
      -            if ( index ) {
      -                if ( data[ index ] && data[ index ].stop ) {
      -                    stopQueue( data[ index ] );
      -                }
      -            } else {
      -                for ( index in data ) {
      -                    if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
      -                        stopQueue( data[ index ] );
      -                    }
      -                }
      -            }
      -
      -            for ( index = timers.length; index--; ) {
      -                if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
      -                    timers[ index ].anim.stop( gotoEnd );
      -                    dequeue = false;
      -                    timers.splice( index, 1 );
      -                }
      -            }
      -
      -            // start the next in the queue if the last step wasn't forced
      -            // timers currently will call their complete callbacks, which will dequeue
      -            // but only if they were gotoEnd
      -            if ( dequeue || !gotoEnd ) {
      -                jQuery.dequeue( this, type );
      -            }
      -        });
      -    },
      -    finish: function( type ) {
      -        if ( type !== false ) {
      -            type = type || "fx";
      -        }
      -        return this.each(function() {
      -            var index,
      -                data = jQuery._data( this ),
      -                queue = data[ type + "queue" ],
      -                hooks = data[ type + "queueHooks" ],
      -                timers = jQuery.timers,
      -                length = queue ? queue.length : 0;
      -
      -            // enable finishing flag on private data
      -            data.finish = true;
      -
      -            // empty the queue first
      -            jQuery.queue( this, type, [] );
      -
      -            if ( hooks && hooks.cur && hooks.cur.finish ) {
      -                hooks.cur.finish.call( this );
      -            }
      -
      -            // look for any active animations, and finish them
      -            for ( index = timers.length; index--; ) {
      -                if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
      -                    timers[ index ].anim.stop( true );
      -                    timers.splice( index, 1 );
      -                }
      -            }
      -
      -            // look for any animations in the old queue and finish them
      -            for ( index = 0; index < length; index++ ) {
      -                if ( queue[ index ] && queue[ index ].finish ) {
      -                    queue[ index ].finish.call( this );
      -                }
      -            }
      -
      -            // turn off finishing flag
      -            delete data.finish;
      -        });
      -    }
      -});
      -
      -// Generate parameters to create a standard animation
      -function genFx( type, includeWidth ) {
      -    var which,
      -        attrs = { height: type },
      -        i = 0;
      -
      -    // if we include width, step value is 1 to do all cssExpand values,
      -    // if we don't include width, step value is 2 to skip over Left and Right
      -    includeWidth = includeWidth? 1 : 0;
      -    for( ; i < 4 ; i += 2 - includeWidth ) {
      -        which = cssExpand[ i ];
      -        attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
      -    }
      -
      -    if ( includeWidth ) {
      -        attrs.opacity = attrs.width = type;
      -    }
      -
      -    return attrs;
      -}
      -
      -// Generate shortcuts for custom animations
      -jQuery.each({
      -    slideDown: genFx("show"),
      -    slideUp: genFx("hide"),
      -    slideToggle: genFx("toggle"),
      -    fadeIn: { opacity: "show" },
      -    fadeOut: { opacity: "hide" },
      -    fadeToggle: { opacity: "toggle" }
      -}, function( name, props ) {
      -    jQuery.fn[ name ] = function( speed, easing, callback ) {
      -        return this.animate( props, speed, easing, callback );
      -    };
      -});
      -
      -jQuery.speed = function( speed, easing, fn ) {
      -    var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
      -        complete: fn || !fn && easing ||
      -            jQuery.isFunction( speed ) && speed,
      -        duration: speed,
      -        easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
      -    };
      -
      -    opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
      -        opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
      -
      -    // normalize opt.queue - true/undefined/null -> "fx"
      -    if ( opt.queue == null || opt.queue === true ) {
      -        opt.queue = "fx";
      -    }
      -
      -    // Queueing
      -    opt.old = opt.complete;
      -
      -    opt.complete = function() {
      -        if ( jQuery.isFunction( opt.old ) ) {
      -            opt.old.call( this );
      -        }
      -
      -        if ( opt.queue ) {
      -            jQuery.dequeue( this, opt.queue );
      -        }
      -    };
      -
      -    return opt;
      -};
      -
      -jQuery.easing = {
      -    linear: function( p ) {
      -        return p;
      -    },
      -    swing: function( p ) {
      -        return 0.5 - Math.cos( p*Math.PI ) / 2;
      -    }
      -};
      -
      -jQuery.timers = [];
      -jQuery.fx = Tween.prototype.init;
      -jQuery.fx.tick = function() {
      -    var timer,
      -        timers = jQuery.timers,
      -        i = 0;
      -
      -    fxNow = jQuery.now();
      -
      -    for ( ; i < timers.length; i++ ) {
      -        timer = timers[ i ];
      -        // Checks the timer has not already been removed
      -        if ( !timer() && timers[ i ] === timer ) {
      -            timers.splice( i--, 1 );
      -        }
      -    }
      -
      -    if ( !timers.length ) {
      -        jQuery.fx.stop();
      -    }
      -    fxNow = undefined;
      -};
      -
      -jQuery.fx.timer = function( timer ) {
      -    if ( timer() && jQuery.timers.push( timer ) ) {
      -        jQuery.fx.start();
      -    }
      -};
      -
      -jQuery.fx.interval = 13;
      -
      -jQuery.fx.start = function() {
      -    if ( !timerId ) {
      -        timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
      -    }
      -};
      -
      -jQuery.fx.stop = function() {
      -    clearInterval( timerId );
      -    timerId = null;
      -};
      -
      -jQuery.fx.speeds = {
      -    slow: 600,
      -    fast: 200,
      -    // Default speed
      -    _default: 400
      -};
      -
      -// Back Compat <1.8 extension point
      -jQuery.fx.step = {};
      -
      -if ( jQuery.expr && jQuery.expr.filters ) {
      -    jQuery.expr.filters.animated = function( elem ) {
      -        return jQuery.grep(jQuery.timers, function( fn ) {
      -            return elem === fn.elem;
      -        }).length;
      -    };
      -}
      -jQuery.fn.offset = function( options ) {
      -    if ( arguments.length ) {
      -        return options === undefined ?
      -            this :
      -            this.each(function( i ) {
      -                jQuery.offset.setOffset( this, options, i );
      -            });
      -    }
      -
      -    var docElem, win,
      -        box = { top: 0, left: 0 },
      -        elem = this[ 0 ],
      -        doc = elem && elem.ownerDocument;
      -
      -    if ( !doc ) {
      -        return;
      -    }
      -
      -    docElem = doc.documentElement;
      -
      -    // Make sure it's not a disconnected DOM node
      -    if ( !jQuery.contains( docElem, elem ) ) {
      -        return box;
      -    }
      -
      -    // If we don't have gBCR, just use 0,0 rather than error
      -    // BlackBerry 5, iOS 3 (original iPhone)
      -    if ( typeof elem.getBoundingClientRect !== core_strundefined ) {
      -        box = elem.getBoundingClientRect();
      -    }
      -    win = getWindow( doc );
      -    return {
      -        top: box.top  + ( win.pageYOffset || docElem.scrollTop )  - ( docElem.clientTop  || 0 ),
      -        left: box.left + ( win.pageXOffset || docElem.scrollLeft ) - ( docElem.clientLeft || 0 )
      -    };
      -};
      -
      -jQuery.offset = {
      -
      -    setOffset: function( elem, options, i ) {
      -        var position = jQuery.css( elem, "position" );
      -
      -        // set position first, in-case top/left are set even on static elem
      -        if ( position === "static" ) {
      -            elem.style.position = "relative";
      -        }
      -
      -        var curElem = jQuery( elem ),
      -            curOffset = curElem.offset(),
      -            curCSSTop = jQuery.css( elem, "top" ),
      -            curCSSLeft = jQuery.css( elem, "left" ),
      -            calculatePosition = ( position === "absolute" || position === "fixed" ) && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
      -            props = {}, curPosition = {}, curTop, curLeft;
      -
      -        // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
      -        if ( calculatePosition ) {
      -            curPosition = curElem.position();
      -            curTop = curPosition.top;
      -            curLeft = curPosition.left;
      -        } else {
      -            curTop = parseFloat( curCSSTop ) || 0;
      -            curLeft = parseFloat( curCSSLeft ) || 0;
      -        }
      -
      -        if ( jQuery.isFunction( options ) ) {
      -            options = options.call( elem, i, curOffset );
      -        }
      -
      -        if ( options.top != null ) {
      -            props.top = ( options.top - curOffset.top ) + curTop;
      -        }
      -        if ( options.left != null ) {
      -            props.left = ( options.left - curOffset.left ) + curLeft;
      -        }
      -
      -        if ( "using" in options ) {
      -            options.using.call( elem, props );
      -        } else {
      -            curElem.css( props );
      -        }
      -    }
      -};
      -
      -
      -jQuery.fn.extend({
      -
      -    position: function() {
      -        if ( !this[ 0 ] ) {
      -            return;
      -        }
      -
      -        var offsetParent, offset,
      -            parentOffset = { top: 0, left: 0 },
      -            elem = this[ 0 ];
      -
      -        // fixed elements are offset from window (parentOffset = {top:0, left: 0}, because it is it's only offset parent
      -        if ( jQuery.css( elem, "position" ) === "fixed" ) {
      -            // we assume that getBoundingClientRect is available when computed position is fixed
      -            offset = elem.getBoundingClientRect();
      -        } else {
      -            // Get *real* offsetParent
      -            offsetParent = this.offsetParent();
      -
      -            // Get correct offsets
      -            offset = this.offset();
      -            if ( !jQuery.nodeName( offsetParent[ 0 ], "html" ) ) {
      -                parentOffset = offsetParent.offset();
      -            }
      -
      -            // Add offsetParent borders
      -            parentOffset.top  += jQuery.css( offsetParent[ 0 ], "borderTopWidth", true );
      -            parentOffset.left += jQuery.css( offsetParent[ 0 ], "borderLeftWidth", true );
      -        }
      -
      -        // Subtract parent offsets and element margins
      -        // note: when an element has margin: auto the offsetLeft and marginLeft
      -        // are the same in Safari causing offset.left to incorrectly be 0
      -        return {
      -            top:  offset.top  - parentOffset.top - jQuery.css( elem, "marginTop", true ),
      -            left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true)
      -        };
      -    },
      -
      -    offsetParent: function() {
      -        return this.map(function() {
      -            var offsetParent = this.offsetParent || document.documentElement;
      -            while ( offsetParent && ( !jQuery.nodeName( offsetParent, "html" ) && jQuery.css( offsetParent, "position") === "static" ) ) {
      -                offsetParent = offsetParent.offsetParent;
      -            }
      -            return offsetParent || document.documentElement;
      -        });
      -    }
      -});
      -
      -
      -// Create scrollLeft and scrollTop methods
      -jQuery.each( {scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function( method, prop ) {
      -    var top = /Y/.test( prop );
      -
      -    jQuery.fn[ method ] = function( val ) {
      -        return jQuery.access( this, function( elem, method, val ) {
      -            var win = getWindow( elem );
      -
      -            if ( val === undefined ) {
      -                return win ? (prop in win) ? win[ prop ] :
      -                    win.document.documentElement[ method ] :
      -                    elem[ method ];
      -            }
      -
      -            if ( win ) {
      -                win.scrollTo(
      -                    !top ? val : jQuery( win ).scrollLeft(),
      -                    top ? val : jQuery( win ).scrollTop()
      -                );
      -
      -            } else {
      -                elem[ method ] = val;
      -            }
      -        }, method, val, arguments.length, null );
      -    };
      -});
      -
      -function getWindow( elem ) {
      -    return jQuery.isWindow( elem ) ?
      -        elem :
      -        elem.nodeType === 9 ?
      -            elem.defaultView || elem.parentWindow :
      -            false;
      -}
      -// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
      -jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
      -    jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name }, function( defaultExtra, funcName ) {
      -        // margin is only for outerHeight, outerWidth
      -        jQuery.fn[ funcName ] = function( margin, value ) {
      -            var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
      -                extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
      -
      -            return jQuery.access( this, function( elem, type, value ) {
      -                var doc;
      -
      -                if ( jQuery.isWindow( elem ) ) {
      -                    // As of 5/8/2012 this will yield incorrect results for Mobile Safari, but there
      -                    // isn't a whole lot we can do. See pull request at this URL for discussion:
      -                    // https://github.com/jquery/jquery/pull/764
      -                    return elem.document.documentElement[ "client" + name ];
      -                }
      -
      -                // Get document width or height
      -                if ( elem.nodeType === 9 ) {
      -                    doc = elem.documentElement;
      -
      -                    // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], whichever is greatest
      -                    // unfortunately, this causes bug #3838 in IE6/8 only, but there is currently no good, small way to fix it.
      -                    return Math.max(
      -                        elem.body[ "scroll" + name ], doc[ "scroll" + name ],
      -                        elem.body[ "offset" + name ], doc[ "offset" + name ],
      -                        doc[ "client" + name ]
      -                    );
      -                }
      -
      -                return value === undefined ?
      -                    // Get width or height on the element, requesting but not forcing parseFloat
      -                    jQuery.css( elem, type, extra ) :
      -
      -                    // Set width or height on the element
      -                    jQuery.style( elem, type, value, extra );
      -            }, type, chainable ? margin : undefined, chainable, null );
      -        };
      -    });
      -});
      -// Limit scope pollution from any deprecated API
      -// (function() {
      -
      -// })();
      -// Expose jQuery to the global object
      -window.jQuery = window.$ = jQuery;
      -
      -// Expose jQuery as an AMD module, but only for AMD loaders that
      -// understand the issues with loading multiple versions of jQuery
      -// in a page that all might call define(). The loader will indicate
      -// they have special allowances for multiple jQuery versions by
      -// specifying define.amd.jQuery = true. Register as a named module,
      -// since jQuery can be concatenated with other files that may use define,
      -// but not use a proper concatenation script that understands anonymous
      -// AMD modules. A named AMD is safest and most robust way to register.
      -// Lowercase jquery is used because AMD module names are derived from
      -// file names, and jQuery is normally delivered in a lowercase file name.
      -// Do this after creating the global so that if an AMD module wants to call
      -// noConflict to hide this version of jQuery, it will work.
      -if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
      -    define( "jquery", [], function () { return jQuery; } );
      -}
      -
      -})( window );
      \ No newline at end of file
      diff --git a/bower_components/tether/examples/resources/js/log.js b/bower_components/tether/examples/resources/js/log.js
      deleted file mode 100644
      index 6acd4fd9ef..0000000000
      --- a/bower_components/tether/examples/resources/js/log.js
      +++ /dev/null
      @@ -1,134 +0,0 @@
      -(function() {
      -  var ffSupport, formats, getOrderedMatches, hasMatches, isFF, isIE, isOpera, isSafari, log, makeArray, operaSupport, safariSupport, stringToArgs, _log;
      -  if (!(window.console && window.console.log)) {
      -    return;
      -  }
      -  log = function() {
      -    var args;
      -    args = [];
      -    makeArray(arguments).forEach(function(arg) {
      -      if (typeof arg === 'string') {
      -        return args = args.concat(stringToArgs(arg));
      -      } else {
      -        return args.push(arg);
      -      }
      -    });
      -    return _log.apply(window, args);
      -  };
      -  _log = function() {
      -    return console.log.apply(console, makeArray(arguments));
      -  };
      -  makeArray = function(arrayLikeThing) {
      -    return Array.prototype.slice.call(arrayLikeThing);
      -  };
      -  formats = [
      -    {
      -      regex: /\*([^\*]+)\*/,
      -      replacer: function(m, p1) {
      -        return "%c" + p1 + "%c";
      -      },
      -      styles: function() {
      -        return ['font-style: italic', ''];
      -      }
      -    }, {
      -      regex: /\_([^\_]+)\_/,
      -      replacer: function(m, p1) {
      -        return "%c" + p1 + "%c";
      -      },
      -      styles: function() {
      -        return ['font-weight: bold', ''];
      -      }
      -    }, {
      -      regex: /\`([^\`]+)\`/,
      -      replacer: function(m, p1) {
      -        return "%c" + p1 + "%c";
      -      },
      -      styles: function() {
      -        return ['background: rgb(255, 255, 219); padding: 1px 5px; border: 1px solid rgba(0, 0, 0, 0.1)', ''];
      -      }
      -    }, {
      -      regex: /\[c\=(?:\"|\')?((?:(?!(?:\"|\')\]).)*)(?:\"|\')?\]((?:(?!\[c\]).)*)\[c\]/,
      -      replacer: function(m, p1, p2) {
      -        return "%c" + p2 + "%c";
      -      },
      -      styles: function(match) {
      -        return [match[1], ''];
      -      }
      -    }
      -  ];
      -  hasMatches = function(str) {
      -    var _hasMatches;
      -    _hasMatches = false;
      -    formats.forEach(function(format) {
      -      if (format.regex.test(str)) {
      -        return _hasMatches = true;
      -      }
      -    });
      -    return _hasMatches;
      -  };
      -  getOrderedMatches = function(str) {
      -    var matches;
      -    matches = [];
      -    formats.forEach(function(format) {
      -      var match;
      -      match = str.match(format.regex);
      -      if (match) {
      -        return matches.push({
      -          format: format,
      -          match: match
      -        });
      -      }
      -    });
      -    return matches.sort(function(a, b) {
      -      return a.match.index - b.match.index;
      -    });
      -  };
      -  stringToArgs = function(str) {
      -    var firstMatch, matches, styles;
      -    styles = [];
      -    while (hasMatches(str)) {
      -      matches = getOrderedMatches(str);
      -      firstMatch = matches[0];
      -      str = str.replace(firstMatch.format.regex, firstMatch.format.replacer);
      -      styles = styles.concat(firstMatch.format.styles(firstMatch.match));
      -    }
      -    return [str].concat(styles);
      -  };
      -  isSafari = function() {
      -    return /Safari/.test(navigator.userAgent) && /Apple Computer/.test(navigator.vendor);
      -  };
      -  isOpera = function() {
      -    return /OPR/.test(navigator.userAgent) && /Opera/.test(navigator.vendor);
      -  };
      -  isFF = function() {
      -    return /Firefox/.test(navigator.userAgent);
      -  };
      -  isIE = function() {
      -    return /MSIE/.test(navigator.userAgent);
      -  };
      -  safariSupport = function() {
      -    var m;
      -    m = navigator.userAgent.match(/AppleWebKit\/(\d+)\.(\d+)(\.|\+|\s)/);
      -    if (!m) {
      -      return false;
      -    }
      -    return 537.38 <= parseInt(m[1], 10) + (parseInt(m[2], 10) / 100);
      -  };
      -  operaSupport = function() {
      -    var m;
      -    m = navigator.userAgent.match(/OPR\/(\d+)\./);
      -    if (!m) {
      -      return false;
      -    }
      -    return 15 <= parseInt(m[1], 10);
      -  };
      -  ffSupport = function() {
      -    return window.console.firebug || window.console.exception;
      -  };
      -  if (isIE() || (isFF() && !ffSupport()) || (isOpera() && !operaSupport()) || (isSafari() && !safariSupport())) {
      -    window.log = _log;
      -  } else {
      -    window.log = log;
      -  }
      -  window.log.l = _log;
      -}).call(this);
      \ No newline at end of file
      diff --git a/bower_components/tether/examples/scroll/index.html b/bower_components/tether/examples/scroll/index.html
      deleted file mode 100644
      index 4d4fd64a09..0000000000
      --- a/bower_components/tether/examples/scroll/index.html
      +++ /dev/null
      @@ -1,922 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="../common/css/style.css" />
      -    </head>
      -    <body>
      -
      -    <div class="instructions">Scroll the page</div>
      -
      -    <h2>THE END OF THE TETHER</h2>
      -
      -    <p>By Joseph Conrad</p>
      -
      -    <h3>Chapter I</h3>
      -
      -    <p>For a long time after the course of the steamer <em>Sofala</em> had been
      -    altered for the land, the low swampy coast had retained its appearance
      -    of a mere smudge of darkness beyond a belt of glitter. The sunrays
      -    seemed to fall violently upon the calm sea--seemed to shatter themselves
      -    upon an adamantine surface into sparkling dust, into a dazzling vapor
      -    of light that blinded the eye and wearied the brain with its unsteady
      -    brightness.</p>
      -
      -    <p>Captain Whalley did not look at it. When his Serang, approaching the
      -    roomy cane arm-chair which he filled capably, had informed him in a low
      -    voice that the course was to be altered, he had risen at once and had
      -    remained on his feet, face forward, while the head of his ship swung
      -    through a quarter of a circle. He had not uttered a single word, not
      -    even the word to steady the helm. It was the Serang, an elderly, alert,
      -    little Malay, with a very dark skin, who murmured the order to the
      -    helmsman. And then slowly Captain Whalley sat down again in the
      -    arm-chair on the bridge and fixed his eyes on the deck between his feet.</p>
      -
      -    <p>He could not hope to see anything new upon this lane of the sea. He had
      -    been on these coasts for the last three years. From Low Cape to Malantan
      -    the distance was fifty miles, six hours' steaming for the old ship with
      -    the tide, or seven against. Then you steered straight for the land, and
      -    by-and-by three palms would appear on the sky, tall and slim, and with
      -    their disheveled heads in a bunch, as if in confidential criticism of
      -    the dark mangroves. The Sofala would be headed towards the somber
      -    strip of the coast, which at a given moment, as the ship closed with
      -    it obliquely, would show several clean shining fractures--the brimful
      -    estuary of a river. Then on through a brown liquid, three parts water
      -    and one part black earth, on and on between the low shores, three parts
      -    black earth and one part brackish water, the Sofala would plow her way
      -    up-stream, as she had done once every month for these seven years or
      -    more, long before he was aware of her existence, long before he had ever
      -    thought of having anything to do with her and her invariable voyages.
      -    The old ship ought to have known the road better than her men, who had
      -    not been kept so long at it without a change; better than the faithful
      -    Serang, whom he had brought over from his last ship to keep the
      -    captain's watch; better than he himself, who had been her captain for
      -    the last three years only. She could always be depended upon to make her
      -    courses. Her compasses were never out. She was no trouble at all to
      -    take about, as if her great age had given her knowledge, wisdom, and
      -    steadiness. She made her landfalls to a degree of the bearing, and
      -    almost to a minute of her allowed time. At any moment, as he sat on
      -    the bridge without looking up, or lay sleepless in his bed, simply by
      -    reckoning the days and the hours he could tell where he was--the precise
      -    spot of the beat. He knew it well too, this monotonous huckster's
      -    round, up and down the Straits; he knew its order and its sights and its
      -    people. Malacca to begin with, in at daylight and out at dusk, to cross
      -    over with a rigid phosphorescent wake this highway of the Far East.
      -    Darkness and gleams on the water, clear stars on a black sky, perhaps
      -    the lights of a home steamer keeping her unswerving course in the
      -    middle, or maybe the elusive shadow of a native craft with her mat sails
      -    flitting by silently--and the low land on the other side in sight
      -    at daylight. At noon the three palms of the next place of call, up a
      -    sluggish river. The only white man residing there was a retired young
      -    sailor, with whom he had become friendly in the course of many voyages.
      -    Sixty miles farther on there was another place of call, a deep bay with
      -    only a couple of houses on the beach. And so on, in and out, picking
      -    up coastwise cargo here and there, and finishing with a hundred miles'
      -    steady steaming through the maze of an archipelago of small islands up
      -    to a large native town at the end of the beat. There was a three days'
      -    rest for the old ship before he started her again in inverse order,
      -    seeing the same shores from another bearing, hearing the same voices
      -    in the same places, back again to the Sofala's port of registry on
      -    the great highway to the East, where he would take up a berth nearly
      -    opposite the big stone pile of the harbor office till it was time to
      -    start again on the old round of 1600 miles and thirty days. Not a very
      -    enterprising life, this, for Captain Whalley, Henry Whalley, otherwise
      -    Dare-devil Harry--Whalley of the Condor, a famous clipper in her day.
      -    No. Not a very enterprising life for a man who had served famous firms,
      -    who had sailed famous ships (more than one or two of them his own); who
      -    had made famous passages, had been the pioneer of new routes and new
      -    trades; who had steered across the unsurveyed tracts of the South Seas,
      -    and had seen the sun rise on uncharted islands. Fifty years at sea, and
      -    forty out in the East ("a pretty thorough apprenticeship," he used
      -    to remark smilingly), had made him honorably known to a generation of
      -    shipowners and merchants in all the ports from Bombay clear over to
      -    where the East merges into the West upon the coast of the two Americas.
      -    His fame remained writ, not very large but plain enough, on the
      -    Admiralty charts. Was there not somewhere between Australia and China a
      -    Whalley Island and a Condor Reef? On that dangerous coral formation the
      -    celebrated clipper had hung stranded for three days, her captain and
      -    crew throwing her cargo overboard with one hand and with the other, as
      -    it were, keeping off her a flotilla of savage war-canoes. At that time
      -    neither the island nor the reef had any official existence. Later the
      -    officers of her Majesty's steam vessel Fusilier, dispatched to make a
      -    survey of the route, recognized in the adoption of these two names the
      -    enterprise of the man and the solidity of the ship. Besides, as anyone
      -    who cares may see, the "General Directory," vol. ii. p. 410, begins the
      -    description of the "Malotu or Whalley Passage" with the words: "This
      -    advantageous route, first discovered in 1850 by Captain Whalley in the
      -    ship Condor," &amp;c., and ends by recommending it warmly to sailing vessels
      -    leaving the China ports for the south in the months from December to
      -    April inclusive.</p>
      -
      -    <p>This was the clearest gain he had out of life. Nothing could rob him
      -    of this kind of fame. The piercing of the Isthmus of Suez, like the
      -    breaking of a dam, had let in upon the East a flood of new ships, new
      -    men, new methods of trade. It had changed the face of the Eastern seas
      -    and the very spirit of their life; so that his early experiences meant
      -    nothing whatever to the new generation of seamen.</p>
      -
      -    <p>In those bygone days he had handled many thousands of pounds of his
      -    employers' money and of his own; he had attended faithfully, as by law
      -    a shipmaster is expected to do, to the conflicting interests of owners,
      -    charterers, and underwriters. He had never lost a ship or consented to
      -    a shady transaction; and he had lasted well, outlasting in the end the
      -    conditions that had gone to the making of his name. He had buried his
      -    wife (in the Gulf of Petchili), had married off his daughter to the man
      -    of her unlucky choice, and had lost more than an ample competence in the
      -    crash of the notorious Travancore and Deccan Banking Corporation, whose
      -    downfall had shaken the East like an earthquake. And he was sixty-five
      -    years old.</p>
      -
      -    <h3>Chapter II</h3>
      -
      -    <p>His age sat lightly enough on him; and of his ruin he was not ashamed.
      -    He had not been alone to believe in the stability of the Banking
      -    Corporation. Men whose judgment in matters of finance was as expert as
      -    his seamanship had commended the prudence of his investments, and had
      -    themselves lost much money in the great failure. The only difference
      -    between him and them was that he had lost his all. And yet not his all.
      -    There had remained to him from his lost fortune a very pretty little
      -    bark, Fair Maid, which he had bought to occupy his leisure of a retired
      -    sailor--"to play with," as he expressed it himself.</p>
      -
      -    <p>He had formally declared himself tired of the sea the year preceding his
      -    daughter's marriage. But after the young couple had gone to settle in
      -    Melbourne he found out that he could not make himself happy on shore. He
      -    was too much of a merchant sea-captain for mere yachting to satisfy him.
      -    He wanted the illusion of affairs; and his acquisition of the Fair
      -    Maid preserved the continuity of his life. He introduced her to his
      -    acquaintances in various ports as "my last command." When he grew too
      -    old to be trusted with a ship, he would lay her up and go ashore to be
      -    buried, leaving directions in his will to have the bark towed out and
      -    scuttled decently in deep water on the day of the funeral. His daughter
      -    would not grudge him the satisfaction of knowing that no stranger would
      -    handle his last command after him. With the fortune he was able to leave
      -    her, the value of a 500-ton bark was neither here nor there. All this
      -    would be said with a jocular twinkle in his eye: the vigorous old man
      -    had too much vitality for the sentimentalism of regret; and a little
      -    wistfully withal, because he was at home in life, taking a genuine
      -    pleasure in its feelings and its possessions; in the dignity of his
      -    reputation and his wealth, in his love for his daughter, and in his
      -    satisfaction with the ship--the plaything of his lonely leisure.</p>
      -
      -    <p>He had the cabin arranged in accordance with his simple ideal of comfort
      -    at sea. A big bookcase (he was a great reader) occupied one side of his
      -    stateroom; the portrait of his late wife, a flat bituminous oil-painting
      -    representing the profile and one long black ringlet of a young woman,
      -    faced his bed-place. Three chronometers ticked him to sleep and greeted
      -    him on waking with the tiny competition of their beats. He rose at five
      -    every day. The officer of the morning watch, drinking his early cup
      -    of coffee aft by the wheel, would hear through the wide orifice of the
      -    copper ventilators all the splashings, blowings, and splutterings of
      -    his captain's toilet. These noises would be followed by a sustained
      -    deep murmur of the Lord's Prayer recited in a loud earnest voice. Five
      -    minutes afterwards the head and shoulders of Captain Whalley emerged
      -    out of the companion-hatchway. Invariably he paused for a while on the
      -    stairs, looking all round at the horizon; upwards at the trim of the
      -    sails; inhaling deep draughts of the fresh air. Only then he would step
      -    out on the poop, acknowledging the hand raised to the peak of the cap
      -    with a majestic and benign "Good morning to you." He walked the deck
      -    till eight scrupulously. Sometimes, not above twice a year, he had to
      -    use a thick cudgel-like stick on account of a stiffness in the hip--a
      -    slight touch of rheumatism, he supposed. Otherwise he knew nothing of
      -    the ills of the flesh. At the ringing of the breakfast bell he went
      -    below to feed his canaries, wind up the chronometers, and take the
      -    head of the table. From there he had before his eyes the big carbon
      -    photographs of his daughter, her husband, and two fat-legged babies
      -    --his grandchildren--set in black frames into the maplewood bulkheads
      -    of the cuddy. After breakfast he dusted the glass over these portraits
      -    himself with a cloth, and brushed the oil painting of his wife with a
      -    plumate kept suspended from a small brass hook by the side of the heavy
      -    gold frame. Then with the door of his stateroom shut, he would sit down
      -    on the couch under the portrait to read a chapter out of a thick pocket
      -    Bible--her Bible. But on some days he only sat there for half an hour
      -    with his finger between the leaves and the closed book resting on his
      -    knees. Perhaps he had remembered suddenly how fond of boat-sailing she
      -    used to be.</p>
      -
      -    <p>She had been a real shipmate and a true woman too. It was like an
      -    article of faith with him that there never had been, and never could be,
      -    a brighter, cheerier home anywhere afloat or ashore than his home under
      -    the poop-deck of the Condor, with the big main cabin all white and gold,
      -    garlanded as if for a perpetual festival with an unfading wreath. She
      -    had decorated the center of every panel with a cluster of home flowers.
      -    It took her a twelvemonth to go round the cuddy with this labor of love.
      -    To him it had remained a marvel of painting, the highest achievement of
      -    taste and skill; and as to old Swinburne, his mate, every time he
      -    came down to his meals he stood transfixed with admiration before the
      -    progress of the work. You could almost smell these roses, he declared,
      -    sniffing the faint flavor of turpentine which at that time pervaded the
      -    saloon, and (as he confessed afterwards) made him somewhat less hearty
      -    than usual in tackling his food. But there was nothing of the sort to
      -    interfere with his enjoyment of her singing. "Mrs. Whalley is a regular
      -    out-and-out nightingale, sir," he would pronounce with a judicial air
      -    after listening profoundly over the skylight to the very end of the
      -    piece. In fine weather, in the second dog-watch, the two men could hear
      -    her trills and roulades going on to the accompaniment of the piano in
      -    the cabin. On the very day they got engaged he had written to London
      -    for the instrument; but they had been married for over a year before it
      -    reached them, coming out round the Cape. The big case made part of the
      -    first direct general cargo landed in Hong-kong harbor--an event that to
      -    the men who walked the busy quays of to-day seemed as hazily remote as
      -    the dark ages of history. But Captain Whalley could in a half hour of
      -    solitude live again all his life, with its romance, its idyl, and its
      -    sorrow. He had to close her eyes himself. She went away from under the
      -    ensign like a sailor's wife, a sailor herself at heart. He had read
      -    the service over her, out of her own prayer-book, without a break in his
      -    voice. When he raised his eyes he could see old Swinburne facing him
      -    with his cap pressed to his breast, and his rugged, weather-beaten,
      -    impassive face streaming with drops of water like a lump of chipped red
      -    granite in a shower. It was all very well for that old sea-dog to cry.
      -    He had to read on to the end; but after the splash he did not remember
      -    much of what happened for the next few days. An elderly sailor of the
      -    crew, deft at needlework, put together a mourning frock for the child
      -    out of one of her black skirts.</p>
      -
      -    <p>He was not likely to forget; but you cannot dam up life like a sluggish
      -    stream. It will break out and flow over a man's troubles, it will close
      -    upon a sorrow like the sea upon a dead body, no matter how much love has
      -    gone to the bottom. And the world is not bad. People had been very
      -    kind to him; especially Mrs. Gardner, the wife of the senior partner
      -    in Gardner, Patteson, &amp; Co., the owners of the Condor. It was she who
      -    volunteered to look after the little one, and in due course took her to
      -    England (something of a journey in those days, even by the overland
      -    mail route) with her own girls to finish her education. It was ten years
      -    before he saw her again.</p>
      -
      -    <p>As a little child she had never been frightened of bad weather; she
      -    would beg to be taken up on deck in the bosom of his oilskin coat to
      -    watch the big seas hurling themselves upon the Condor. The swirl and
      -    crash of the waves seemed to fill her small soul with a breathless
      -    delight. "A good boy spoiled," he used to say of her in joke. He had
      -    named her Ivy because of the sound of the word, and obscurely fascinated
      -    by a vague association of ideas. She had twined herself tightly round
      -    his heart, and he intended her to cling close to her father as to a
      -    tower of strength; forgetting, while she was little, that in the nature
      -    of things she would probably elect to cling to someone else. But
      -    he loved life well enough for even that event to give him a certain
      -    satisfaction, apart from his more intimate feeling of loss.</p>
      -
      -    <p>After he had purchased the Fair Maid to occupy his loneliness, he
      -    hastened to accept a rather unprofitable freight to Australia simply for
      -    the opportunity of seeing his daughter in her own home. What made him
      -    dissatisfied there was not to see that she clung now to somebody else,
      -    but that the prop she had selected seemed on closer examination "a
      -    rather poor stick"--even in the matter of health. He disliked his
      -    son-in-law's studied civility perhaps more than his method of
      -    handling the sum of money he had given Ivy at her marriage. But of his
      -    apprehensions he said nothing. Only on the day of his departure, with
      -    the hall-door open already, holding her hands and looking steadily into
      -    her eyes, he had said, "You know, my dear, all I have is for you and the
      -    chicks. Mind you write to me openly." She had answered him by an almost
      -    imperceptible movement of her head. She resembled her mother in
      -    the color of her eyes, and in character--and also in this, that she
      -    understood him without many words.</p>
      -
      -    <p>Sure enough she had to write; and some of these letters made Captain
      -    Whalley lift his white eye-brows. For the rest he considered he was
      -    reaping the true reward of his life by being thus able to produce on
      -    demand whatever was needed. He had not enjoyed himself so much in a
      -    way since his wife had died. Characteristically enough his son-in-law's
      -    punctuality in failure caused him at a distance to feel a sort of
      -    kindness towards the man. The fellow was so perpetually being jammed on
      -    a lee shore that to charge it all to his reckless navigation would be
      -    manifestly unfair. No, no! He knew well what that meant. It was bad
      -    luck. His own had been simply marvelous, but he had seen in his life too
      -    many good men--seamen and others--go under with the sheer weight of bad
      -    luck not to recognize the fatal signs. For all that, he was cogitating
      -    on the best way of tying up very strictly every penny he had to leave,
      -    when, with a preliminary rumble of rumors (whose first sound reached
      -    him in Shanghai as it happened), the shock of the big failure came;
      -    and, after passing through the phases of stupor, of incredulity, of
      -    indignation, he had to accept the fact that he had nothing to speak of
      -    to leave.</p>
      -
      -    <p>Upon that, as if he had only waited for this catastrophe, the unlucky
      -    man, away there in Melbourne, gave up his unprofitable game, and sat
      -    down--in an invalid's bath-chair at that too. "He will never walk
      -    again," wrote the wife. For the first time in his life Captain Whalley
      -    was a bit staggered.</p>
      -
      -    <p>The Fair Maid had to go to work in bitter earnest now. It was no longer
      -    a matter of preserving alive the memory of Dare-devil Harry Whalley in
      -    the Eastern Seas, or of keeping an old man in pocket-money and clothes,
      -    with, perhaps, a bill for a few hundred first-class cigars thrown in at
      -    the end of the year. He would have to buckle-to, and keep her going hard
      -    on a scant allowance of gilt for the ginger-bread scrolls at her stem
      -    and stern.</p>
      -
      -    <p>This necessity opened his eyes to the fundamental changes of the world.
      -    Of his past only the familiar names remained, here and there, but
      -    the things and the men, as he had known them, were gone. The name of
      -    Gardner, Patteson, &amp; Co. was still displayed on the walls of warehouses
      -    by the waterside, on the brass plates and window-panes in the business
      -    quarters of more than one Eastern port, but there was no longer a
      -    Gardner or a Patteson in the firm. There was no longer for Captain
      -    Whalley an arm-chair and a welcome in the private office, with a bit of
      -    business ready to be put in the way of an old friend, for the sake of
      -    bygone services. The husbands of the Gardner girls sat behind the desks
      -    in that room where, long after he had left the employ, he had kept his
      -    right of entrance in the old man's time. Their ships now had yellow
      -    funnels with black tops, and a time-table of appointed routes like a
      -    confounded service of tramways. The winds of December and June were all
      -    one to them; their captains (excellent young men he doubted not) were,
      -    to be sure, familiar with Whalley Island, because of late years the
      -    Government had established a white fixed light on the north end (with
      -    a red danger sector over the Condor Reef), but most of them would have
      -    been extremely surprised to hear that a flesh-and-blood Whalley still
      -    existed--an old man going about the world trying to pick up a cargo here
      -    and there for his little bark.</p>
      -
      -    <p>And everywhere it was the same. Departed the men who would have nodded
      -    appreciatively at the mention of his name, and would have thought
      -    themselves bound in honor to do something for Dare-devil Harry Whalley.
      -    Departed the opportunities which he would have known how to seize; and
      -    gone with them the white-winged flock of clippers that lived in the
      -    boisterous uncertain life of the winds, skimming big fortunes out of
      -    the foam of the sea. In a world that pared down the profits to an
      -    irreducible minimum, in a world that was able to count its disengaged
      -    tonnage twice over every day, and in which lean charters were snapped up
      -    by cable three months in advance, there were no chances of fortune for
      -    an individual wandering haphazard with a little bark--hardly indeed any
      -    room to exist.</p>
      -
      -    <p>He found it more difficult from year to year. He suffered greatly from
      -    the smallness of remittances he was able to send his daughter. Meantime
      -    he had given up good cigars, and even in the matter of inferior cheroots
      -    limited himself to six a day. He never told her of his difficulties, and
      -    she never enlarged upon her struggle to live. Their confidence in each
      -    other needed no explanations, and their perfect understanding endured
      -    without protestations of gratitude or regret. He would have been shocked
      -    if she had taken it into her head to thank him in so many words, but
      -    he found it perfectly natural that she should tell him she needed two
      -    hundred pounds.</p>
      -
      -    <p>He had come in with the Fair Maid in ballast to look for a freight in
      -    the Sofala's port of registry, and her letter met him there. Its tenor
      -    was that it was no use mincing matters. Her only resource was in opening
      -    a boarding-house, for which the prospects, she judged, were good. Good
      -    enough, at any rate, to make her tell him frankly that with two hundred
      -    pounds she could make a start. He had torn the envelope open, hastily,
      -    on deck, where it was handed to him by the ship-chandler's runner, who
      -    had brought his mail at the moment of anchoring. For the second time
      -    in his life he was appalled, and remained stock-still at the cabin door
      -    with the paper trembling between his fingers. Open a boarding-house! Two
      -    hundred pounds for a start! The only resource! And he did not know where
      -    to lay his hands on two hundred pence.</p>
      -
      -    <p>All that night Captain Whalley walked the poop of his anchored ship, as
      -    though he had been about to close with the land in thick weather, and
      -    uncertain of his position after a run of many gray days without a sight
      -    of sun, moon, or stars. The black night twinkled with the guiding lights
      -    of seamen and the steady straight lines of lights on shore; and all
      -    around the Fair Maid the riding lights of ships cast trembling trails
      -    upon the water of the roadstead. Captain Whalley saw not a gleam
      -    anywhere till the dawn broke and he found out that his clothing was
      -    soaked through with the heavy dew.</p>
      -
      -    <p>His ship was awake. He stopped short, stroked his wet beard, and
      -    descended the poop ladder backwards, with tired feet. At the sight
      -    of him the chief officer, lounging about sleepily on the quarterdeck,
      -    remained open-mouthed in the middle of a great early-morning yawn.</p>
      -
      -    <p>"Good morning to you," pronounced Captain Whalley solemnly, passing into
      -    the cabin. But he checked himself in the doorway, and without looking
      -    back, "By the bye," he said, "there should be an empty wooden case put
      -    away in the lazarette. It has not been broken up--has it?"</p>
      -
      -    <p>The mate shut his mouth, and then asked as if dazed, "What empty case,
      -    sir?"</p>
      -
      -    <p>"A big flat packing-case belonging to that painting in my room. Let it
      -    be taken up on deck and tell the carpenter to look it over. I may want
      -    to use it before long."</p>
      -
      -    <p>The chief officer did not stir a limb till he had heard the door of the
      -    captain's state-room slam within the cuddy. Then he beckoned aft the
      -    second mate with his forefinger to tell him that there was something "in
      -    the wind."</p>
      -
      -    <p>When the bell rang Captain Whalley's authoritative voice boomed out
      -    through a closed door, "Sit down and don't wait for me." And his
      -    impressed officers took their places, exchanging looks and whispers
      -    across the table. What! No breakfast? And after apparently knocking
      -    about all night on deck, too! Clearly, there was something in the wind.
      -    In the skylight above their heads, bowed earnestly over the plates,
      -    three wire cages rocked and rattled to the restless jumping of the
      -    hungry canaries; and they could detect the sounds of their "old
      -    man's" deliberate movements within his state-room. Captain Whalley was
      -    methodically winding up the chronometers, dusting the portrait of
      -    his late wife, getting a clean white shirt out of the drawers, making
      -    himself ready in his punctilious unhurried manner to go ashore. He could
      -    not have swallowed a single mouthful of food that morning. He had made
      -    up his mind to sell the Fair Maid.</p>
      -
      -    <h3>Chapter III</h3>
      -
      -    <p>Just at that time the Japanese were casting far and wide for ships
      -    of European build, and he had no difficulty in finding a purchaser, a
      -    speculator who drove a hard bargain, but paid cash down for the Fair
      -    Maid, with a view to a profitable resale. Thus it came about that
      -    Captain Whalley found himself on a certain afternoon descending the
      -    steps of one of the most important post-offices of the East with a slip
      -    of bluish paper in his hand. This was the receipt of a registered letter
      -    enclosing a draft for two hundred pounds, and addressed to Melbourne.
      -    Captain Whalley pushed the paper into his waistcoat-pocket, took his
      -    stick from under his arm, and walked down the street.</p>
      -
      -    <p>It was a recently opened and untidy thoroughfare with rudimentary
      -    side-walks and a soft layer of dust cushioning the whole width of
      -    the road. One end touched the slummy street of Chinese shops near the
      -    harbor, the other drove straight on, without houses, for a couple of
      -    miles, through patches of jungle-like vegetation, to the yard gates
      -    of the new Consolidated Docks Company. The crude frontages of the new
      -    Government buildings alternated with the blank fencing of vacant plots,
      -    and the view of the sky seemed to give an added spaciousness to the
      -    broad vista. It was empty and shunned by natives after business
      -    hours, as though they had expected to see one of the tigers from the
      -    neighborhood of the New Waterworks on the hill coming at a loping canter
      -    down the middle to get a Chinese shopkeeper for supper. Captain Whalley
      -    was not dwarfed by the solitude of the grandly planned street. He
      -    had too fine a presence for that. He was only a lonely figure walking
      -    purposefully, with a great white beard like a pilgrim, and with a thick
      -    stick that resembled a weapon. On one side the new Courts of Justice had
      -    a low and unadorned portico of squat columns half concealed by a few old
      -    trees left in the approach. On the other the pavilion wings of the
      -    new Colonial Treasury came out to the line of the street. But Captain
      -    Whalley, who had now no ship and no home, remembered in passing that
      -    on that very site when he first came out from England there had stood a
      -    fishing village, a few mat huts erected on piles between a muddy tidal
      -    creek and a miry pathway that went writhing into a tangled wilderness
      -    without any docks or waterworks.</p>
      -
      -    <p>No ship--no home. And his poor Ivy away there had no home either. A
      -    boarding-house is no sort of home though it may get you a living. His
      -    feelings were horribly rasped by the idea of the boarding-house. In his
      -    rank of life he had that truly aristocratic temperament characterized by
      -    a scorn of vulgar gentility and by prejudiced views as to the derogatory
      -    nature of certain occupations. For his own part he had always preferred
      -    sailing merchant ships (which is a straightforward occupation) to buying
      -    and selling merchandise, of which the essence is to get the better of
      -    somebody in a bargain--an undignified trial of wits at best. His father
      -    had been Colonel Whalley (retired) of the H. E. I. Company's service,
      -    with very slender means besides his pension, but with distinguished
      -    connections. He could remember as a boy how frequently waiters at the
      -    inns, country tradesmen and small people of that sort, used to "My lord"
      -    the old warrior on the strength of his appearance.</p>
      -
      -    <p>Captain Whalley himself (he would have entered the Navy if his father
      -    had not died before he was fourteen) had something of a grand air which
      -    would have suited an old and glorious admiral; but he became lost like
      -    a straw in the eddy of a brook amongst the swarm of brown and yellow
      -    humanity filling a thoroughfare, that by contrast with the vast and
      -    empty avenue he had left seemed as narrow as a lane and absolutely
      -    riotous with life. The walls of the houses were blue; the shops of the
      -    Chinamen yawned like cavernous lairs; heaps of nondescript merchandise
      -    overflowed the gloom of the long range of arcades, and the fiery
      -    serenity of sunset took the middle of the street from end to end with a
      -    glow like the reflection of a fire. It fell on the bright colors and the
      -    dark faces of the bare-footed crowd, on the pallid yellow backs of the
      -    half-naked jostling coolies, on the accouterments of a tall Sikh trooper
      -    with a parted beard and fierce mustaches on sentry before the gate of
      -    the police compound. Looming very big above the heads in a red haze of
      -    dust, the tightly packed car of the cable tramway navigated cautiously
      -    up the human stream, with the incessant blare of its horn, in the manner
      -    of a steamer groping in a fog.</p>
      -
      -    <p>Captain Whalley emerged like a diver on the other side, and in the
      -    desert shade between the walls of closed warehouses removed his hat to
      -    cool his brow. A certain disrepute attached to the calling of a
      -    landlady of a boarding-house. These women were said to be rapacious,
      -    unscrupulous, untruthful; and though he contemned no class of his
      -    fellow-creatures--God forbid!--these were suspicions to which it was
      -    unseemly that a Whalley should lay herself open. He had not expostulated
      -    with her, however. He was confident she shared his feelings; he was
      -    sorry for her; he trusted her judgment; he considered it a merciful
      -    dispensation that he could help her once more,--but in his aristocratic
      -    heart of hearts he would have found it more easy to reconcile himself to
      -    the idea of her turning seamstress. Vaguely he remembered reading years
      -    ago a touching piece called the "Song of the Shirt." It was all very
      -    well making songs about poor women. The granddaughter of Colonel
      -    Whalley, the landlady of a boarding-house! Pooh! He replaced his hat,
      -    dived into two pockets, and stopping a moment to apply a flaring match
      -    to the end of a cheap cheroot, blew an embittered cloud of smoke at a
      -    world that could hold such surprises.</p>
      -
      -    <p>Of one thing he was certain--that she was the own child of a clever
      -    mother. Now he had got over the wrench of parting with his ship, he
      -    perceived clearly that such a step had been unavoidable. Perhaps he had
      -    been growing aware of it all along with an unconfessed knowledge. But
      -    she, far away there, must have had an intuitive perception of it, with
      -    the pluck to face that truth and the courage to speak out--all the
      -    qualities which had made her mother a woman of such excellent counsel.</p>
      -
      -    <p>It would have had to come to that in the end! It was fortunate she had
      -    forced his hand. In another year or two it would have been an utterly
      -    barren sale. To keep the ship going he had been involving himself deeper
      -    every year. He was defenseless before the insidious work of adversity,
      -    to whose more open assaults he could present a firm front; like a
      -    cliff that stands unmoved the open battering of the sea, with a lofty
      -    ignorance of the treacherous backwash undermining its base. As it was,
      -    every liability satisfied, her request answered, and owing no man a
      -    penny, there remained to him from the proceeds a sum of five hundred
      -    pounds put away safely. In addition he had upon his person some forty
      -    odd dollars--enough to pay his hotel bill, providing he did not linger
      -    too long in the modest bedroom where he had taken refuge.</p>
      -
      -    <p>Scantily furnished, and with a waxed floor, it opened into one of
      -    the side-verandas. The straggling building of bricks, as airy as a
      -    bird-cage, resounded with the incessant flapping of rattan screens
      -    worried by the wind between the white-washed square pillars of the
      -    sea-front. The rooms were lofty, a ripple of sunshine flowed over the
      -    ceilings; and the periodical invasions of tourists from some passenger
      -    steamer in the harbor flitted through the wind-swept dusk of the
      -    apartments with the tumult of their unfamiliar voices and impermanent
      -    presences, like relays of migratory shades condemned to speed headlong
      -    round the earth without leaving a trace. The babble of their irruptions
      -    ebbed out as suddenly as it had arisen; the draughty corridors and
      -    the long chairs of the verandas knew their sight-seeing hurry or
      -    their prostrate repose no more; and Captain Whalley, substantial and
      -    dignified, left well-nigh alone in the vast hotel by each light-hearted
      -    skurry, felt more and more like a stranded tourist with no aim in view,
      -    like a forlorn traveler without a home. In the solitude of his room he
      -    smoked thoughtfully, gazing at the two sea-chests which held all that he
      -    could call his own in this world. A thick roll of charts in a sheath
      -    of sailcloth leaned in a corner; the flat packing-case containing the
      -    portrait in oils and the three carbon photographs had been pushed under
      -    the bed. He was tired of discussing terms, of assisting at surveys, of
      -    all the routine of the business. What to the other parties was merely
      -    the sale of a ship was to him a momentous event involving a radically
      -    new view of existence. He knew that after this ship there would be no
      -    other; and the hopes of his youth, the exercise of his abilities, every
      -    feeling and achievement of his manhood, had been indissolubly connected
      -    with ships. He had served ships; he had owned ships; and even the years
      -    of his actual retirement from the sea had been made bearable by the idea
      -    that he had only to stretch out his hand full of money to get a ship. He
      -    had been at liberty to feel as though he were the owner of all the
      -    ships in the world. The selling of this one was weary work; but when
      -    she passed from him at last, when he signed the last receipt, it was as
      -    though all the ships had gone out of the world together, leaving him on
      -    the shore of inaccessible oceans with seven hundred pounds in his hands.</p>
      -
      -    <p>Striding firmly, without haste, along the quay, Captain Whalley averted
      -    his glances from the familiar roadstead. Two generations of seamen born
      -    since his first day at sea stood between him and all these ships at the
      -    anchorage. His own was sold, and he had been asking himself, What next?</p>
      -
      -    <p>From the feeling of loneliness, of inward emptiness,--and of loss
      -    too, as if his very soul had been taken out of him forcibly,--there had
      -    sprung at first a desire to start right off and join his daughter.
      -    "Here are the last pence," he would say to her; "take them, my dear. And
      -    here's your old father: you must take him too."</p>
      -
      -    <p>His soul recoiled, as if afraid of what lay hidden at the bottom of
      -    this impulse. Give up! Never! When one is thoroughly weary all sorts of
      -    nonsense come into one's head. A pretty gift it would have been for a
      -    poor woman--this seven hundred pounds with the incumbrance of a hale old
      -    fellow more than likely to last for years and years to come. Was he not
      -    as fit to die in harness as any of the youngsters in charge of these
      -    anchored ships out yonder? He was as solid now as ever he had been. But
      -    as to who would give him work to do, that was another matter. Were he,
      -    with his appearance and antecedents, to go about looking for a junior's
      -    berth, people, he was afraid, would not take him seriously; or else if
      -    he succeeded in impressing them, he would maybe obtain their pity, which
      -    would be like stripping yourself naked to be kicked. He was not anxious
      -    to give himself away for less than nothing. He had no use for anybody's
      -    pity. On the other hand, a command--the only thing he could try for with
      -    due regard for common decency--was not likely to be lying in wait
      -    for him at the corner of the next street. Commands don't go a-begging
      -    nowadays. Ever since he had come ashore to carry out the business of
      -    the sale he had kept his ears open, but had heard no hint of one being
      -    vacant in the port. And even if there had been one, his successful past
      -    itself stood in his way. He had been his own employer too long. The only
      -    credential he could produce was the testimony of his whole life. What
      -    better recommendation could anyone require? But vaguely he felt that
      -    the unique document would be looked upon as an archaic curiosity of the
      -    Eastern waters, a screed traced in obsolete words--in a half-forgotten
      -    language.</p>
      -
      -    <h3>Chapter IV</h3>
      -
      -    <p>Revolving these thoughts, he strolled on near the railings of the quay,
      -    broad-chested, without a stoop, as though his big shoulders had never
      -    felt the burden of the loads that must be carried between the cradle
      -    and the grave. No single betraying fold or line of care disfigured the
      -    reposeful modeling of his face. It was full and untanned; and the upper
      -    part emerged, massively quiet, out of the downward flow of silvery hair,
      -    with the striking delicacy of its clear complexion and the powerful
      -    width of the forehead. The first cast of his glance fell on you candid
      -    and swift, like a boy's; but because of the ragged snowy thatch of the
      -    eyebrows the affability of his attention acquired the character of a
      -    dark and searching scrutiny. With age he had put on flesh a little, had
      -    increased his girth like an old tree presenting no symptoms of decay;
      -    and even the opulent, lustrous ripple of white hairs upon his chest
      -    seemed an attribute of unquenchable vitality and vigor.</p>
      -
      -    <p>Once rather proud of his great bodily strength, and even of his personal
      -    appearance, conscious of his worth, and firm in his rectitude, there had
      -    remained to him, like the heritage of departed prosperity, the tranquil
      -    bearing of a man who had proved himself fit in every sort of way for the
      -    life of his choice. He strode on squarely under the projecting brim of
      -    an ancient Panama hat. It had a low crown, a crease through its whole
      -    diameter, a narrow black ribbon. Imperishable and a little discolored,
      -    this headgear made it easy to pick him out from afar on thronged wharves
      -    and in the busy streets. He had never adopted the comparatively modern
      -    fashion of pipeclayed cork helmets. He disliked the form; and he hoped
      -    he could manage to keep a cool head to the end of his life without all
      -    these contrivances for hygienic ventilation. His hair was cropped close,
      -    his linen always of immaculate whiteness; a suit of thin gray flannel,
      -    worn threadbare but scrupulously brushed, floated about his burly limbs,
      -    adding to his bulk by the looseness of its cut. The years had mellowed
      -    the good-humored, imperturbable audacity of his prime into a temper
      -    carelessly serene; and the leisurely tapping of his iron-shod stick
      -    accompanied his footfalls with a self-confident sound on the flagstones.
      -    It was impossible to connect such a fine presence and this unruffled
      -    aspect with the belittling troubles of poverty; the man's whole
      -    existence appeared to pass before you, facile and large, in the freedom
      -    of means as ample as the clothing of his body.</p>
      -
      -    <p>The irrational dread of having to break into his five hundred pounds for
      -    personal expenses in the hotel disturbed the steady poise of his mind.
      -    There was no time to lose. The bill was running up. He nourished the
      -    hope that this five hundred would perhaps be the means, if everything
      -    else failed, of obtaining some work which, keeping his body and soul
      -    together (not a matter of great outlay), would enable him to be of use
      -    to his daughter. To his mind it was her own money which he employed, as
      -    it were, in backing her father and solely for her benefit. Once at work,
      -    he would help her with the greater part of his earnings; he was good for
      -    many years yet, and this boarding-house business, he argued to himself,
      -    whatever the prospects, could not be much of a gold-mine from the first
      -    start. But what work? He was ready to lay hold of anything in an honest
      -    way so that it came quickly to his hand; because the five hundred pounds
      -    must be preserved intact for eventual use. That was the great point.
      -    With the entire five hundred one felt a substance at one's back; but
      -    it seemed to him that should he let it dwindle to four-fifty or even
      -    four-eighty, all the efficiency would be gone out of the money, as though
      -    there were some magic power in the round figure. But what sort of work?</p>
      -
      -    <p>Confronted by that haunting question as by an uneasy ghost, for whom he
      -    had no exorcising formula, Captain Whalley stopped short on the apex
      -    of a small bridge spanning steeply the bed of a canalized creek with
      -    granite shores. Moored between the square blocks a seagoing Malay prau
      -    floated half hidden under the arch of masonry, with her spars lowered
      -    down, without a sound of life on board, and covered from stem to stern
      -    with a ridge of palm-leaf mats. He had left behind him the overheated
      -    pavements bordered by the stone frontages that, like the sheer face of
      -    cliffs, followed the sweep of the quays; and an unconfined spaciousness
      -    of orderly and sylvan aspect opened before him its wide plots of rolled
      -    grass, like pieces of green carpet smoothly pegged out, its long ranges
      -    of trees lined up in colossal porticos of dark shafts roofed with a
      -    vault of branches.</p>
      -
      -    <p>Some of these avenues ended at the sea. It was a terraced shore; and
      -    beyond, upon the level expanse, profound and glistening like the gaze
      -    of a dark-blue eye, an oblique band of stippled purple lengthened itself
      -    indefinitely through the gap between a couple of verdant twin islets.
      -    The masts and spars of a few ships far away, hull down in the outer
      -    roads, sprang straight from the water in a fine maze of rosy lines
      -    penciled on the clear shadow of the eastern board. Captain Whalley gave
      -    them a long glance. The ship, once his own, was anchored out there. It
      -    was staggering to think that it was open to him no longer to take a boat
      -    at the jetty and get himself pulled off to her when the evening came. To
      -    no ship. Perhaps never more. Before the sale was concluded, and till the
      -    purchase-money had been paid, he had spent daily some time on board the
      -    Fair Maid. The money had been paid this very morning, and now, all at
      -    once, there was positively no ship that he could go on board of when he
      -    liked; no ship that would need his presence in order to do her work--to
      -    live. It seemed an incredible state of affairs, something too bizarre
      -    to last. And the sea was full of craft of all sorts. There was that prau
      -    lying so still swathed in her shroud of sewn palm-leaves--she too had
      -    her indispensable man. They lived through each other, this Malay he had
      -    never seen, and this high-sterned thing of no size that seemed to be
      -    resting after a long journey. And of all the ships in sight, near and
      -    far, each was provided with a man, the man without whom the finest ship
      -    is a dead thing, a floating and purposeless log.</p>
      -
      -    <p>After his one glance at the roadstead he went on, since there was
      -    nothing to turn back for, and the time must be got through somehow. The
      -    avenues of big trees ran straight over the Esplanade, cutting each other
      -    at diverse angles, columnar below and luxuriant above. The interlaced
      -    boughs high up there seemed to slumber; not a leaf stirred overhead:
      -    and the reedy cast-iron lampposts in the middle of the road, gilt like
      -    scepters, diminished in a long perspective, with their globes of white
      -    porcelain atop, resembling a barbarous decoration of ostriches' eggs
      -    displayed in a row. The flaming sky kindled a tiny crimson spark upon
      -    the glistening surface of each glassy shell.</p>
      -
      -    <p>With his chin sunk a little, his hands behind his back, and the end of
      -    his stick marking the gravel with a faint wavering line at his heels,
      -    Captain Whalley reflected that if a ship without a man was like a body
      -    without a soul, a sailor without a ship was of not much more account
      -    in this world than an aimless log adrift upon the sea. The log might be
      -    sound enough by itself, tough of fiber, and hard to destroy--but what of
      -    that! And a sudden sense of irremediable idleness weighted his feet like
      -    a great fatigue.</p>
      -
      -    <p>A succession of open carriages came bowling along the newly opened
      -    sea-road. You could see across the wide grass-plots the discs of
      -    vibration made by the spokes. The bright domes of the parasols swayed
      -    lightly outwards like full-blown blossoms on the rim of a vase; and
      -    the quiet sheet of dark-blue water, crossed by a bar of purple, made a
      -    background for the spinning wheels and the high action of the horses,
      -    whilst the turbaned heads of the Indian servants elevated above the line
      -    of the sea horizon glided rapidly on the paler blue of the sky. In an
      -    open space near the little bridge each turn-out trotted smartly in a
      -    wide curve away from the sunset; then pulling up sharp, entered the main
      -    alley in a long slow-moving file with the great red stillness of the sky
      -    at the back. The trunks of mighty trees stood all touched with red on
      -    the same side, the air seemed aflame under the high foliage, the
      -    very ground under the hoofs of the horses was red. The wheels turned
      -    solemnly; one after another the sunshades drooped, folding their colors
      -    like gorgeous flowers shutting their petals at the end of the day. In
      -    the whole half-mile of human beings no voice uttered a distinct word,
      -    only a faint thudding noise went on mingled with slight jingling sounds,
      -    and the motionless heads and shoulders of men and women sitting in
      -    couples emerged stolidly above the lowered hoods--as if wooden. But one
      -    carriage and pair coming late did not join the line.</p>
      -
      -    <p>It fled along in a noiseless roll; but on entering the avenue one of the
      -    dark bays snorted, arching his neck and shying against the steel-tipped
      -    pole; a flake of foam fell from the bit upon the point of a satiny
      -    shoulder, and the dusky face of the coachman leaned forward at once over
      -    the hands taking a fresh grip of the reins. It was a long dark-green
      -    landau, having a dignified and buoyant motion between the sharply
      -    curved C-springs, and a sort of strictly official majesty in its supreme
      -    elegance. It seemed more roomy than is usual, its horses seemed slightly
      -    bigger, the appointments a shade more perfect, the servants perched
      -    somewhat higher on the box. The dresses of three women--two young
      -    and pretty, and one, handsome, large, of mature age--seemed to fill
      -    completely the shallow body of the carriage. The fourth face was that
      -    of a man, heavy lidded, distinguished and sallow, with a somber, thick,
      -    iron-gray imperial and mustaches, which somehow had the air of solid
      -    appendages. His Excellency--</p>
      -
      -    <p>The rapid motion of that one equipage made all the others appear utterly
      -    inferior, blighted, and reduced to crawl painfully at a snail's pace.
      -    The landau distanced the whole file in a sort of sustained rush; the
      -    features of the occupant whirling out of sight left behind an impression
      -    of fixed stares and impassive vacancy; and after it had vanished in full
      -    flight as it were, notwithstanding the long line of vehicles hugging the
      -    curb at a walk, the whole lofty vista of the avenue seemed to lie open
      -    and emptied of life in the enlarged impression of an august solitude.</p>
      -
      -    <p>Captain Whalley had lifted his head to look, and his mind, disturbed in
      -    its meditation, turned with wonder (as men's minds will do) to matters
      -    of no importance. It struck him that it was to this port, where he had
      -    just sold his last ship, that he had come with the very first he had
      -    ever owned, and with his head full of a plan for opening a new trade
      -    with a distant part of the Archipelago. The then governor had given
      -    him no end of encouragement. No Excellency he--this Mr. Denham--this
      -    governor with his jacket off; a man who tended night and day, so to
      -    speak, the growing prosperity of the settlement with the self-forgetful
      -    devotion of a nurse for a child she loves; a lone bachelor who lived as
      -    in a camp with the few servants and his three dogs in what was called
      -    then the Government Bungalow: a low-roofed structure on the half-cleared
      -    slope of a hill, with a new flagstaff in front and a police orderly on
      -    the veranda. He remembered toiling up that hill under a heavy sun for
      -    his audience; the unfurnished aspect of the cool shaded room; the long
      -    table covered at one end with piles of papers, and with two guns, a
      -    brass telescope, a small bottle of oil with a feather stuck in the neck
      -    at the other--and the flattering attention given to him by the man in
      -    power. It was an undertaking full of risk he had come to expound, but a
      -    twenty minutes' talk in the Government Bungalow on the hill had made it
      -    go smoothly from the start. And as he was retiring Mr. Denham, already
      -    seated before the papers, called out after him, "Next month the Dido
      -    starts for a cruise that way, and I shall request her captain officially
      -    to give you a look in and see how you get on." The Dido was one of the
      -    smart frigates on the China station--and five-and-thirty years make a
      -    big slice of time. Five-and-thirty years ago an enterprise like his had
      -    for the colony enough importance to be looked after by a Queen's ship.
      -    A big slice of time. Individuals were of some account then. Men like
      -    himself; men, too, like poor Evans, for instance, with his red face,
      -    his coal-black whiskers, and his restless eyes, who had set up the first
      -    patent slip for repairing small ships, on the edge of the forest, in
      -    a lonely bay three miles up the coast. Mr. Denham had encouraged that
      -    enterprise too, and yet somehow poor Evans had ended by dying at
      -    home deucedly hard up. His son, they said, was squeezing oil out of
      -    cocoa-nuts for a living on some God-forsaken islet of the Indian Ocean;
      -    but it was from that patent slip in a lonely wooded bay that had sprung
      -    the workshops of the Consolidated Docks Company, with its three
      -    graving basins carved out of solid rock, its wharves, its jetties,
      -    its electric-light plant, its steam-power houses--with its gigantic
      -    sheer-legs, fit to lift the heaviest weight ever carried afloat, and
      -    whose head could be seen like the top of a queer white monument peeping
      -    over bushy points of land and sandy promontories, as you approached the
      -    New Harbor from the west.</p>
      -
      -    <p>There had been a time when men counted: there were not so many carriages
      -    in the colony then, though Mr. Denham, he fancied, had a buggy. And
      -    Captain Whalley seemed to be swept out of the great avenue by the swirl
      -    of a mental backwash. He remembered muddy shores, a harbor without
      -    quays, the one solitary wooden pier (but that was a public work) jutting
      -    out crookedly, the first coal-sheds erected on Monkey Point, that caught
      -    fire mysteriously and smoldered for days, so that amazed ships came
      -    into a roadstead full of sulphurous smoke, and the sun hung blood-red
      -    at midday. He remembered the things, the faces, and something more
      -    besides--like the faint flavor of a cup quaffed to the bottom, like a
      -    subtle sparkle of the air that was not to be found in the atmosphere of
      -    to-day.</p>
      -
      -    <p>In this evocation, swift and full of detail like a flash of magnesium
      -    light into the niches of a dark memorial hall, Captain Whalley
      -    contemplated things once important, the efforts of small men, the growth
      -    of a great place, but now robbed of all consequence by the greatness
      -    of accomplished facts, by hopes greater still; and they gave him for a
      -    moment such an almost physical grip upon time, such a comprehension of
      -    our unchangeable feelings, that he stopped short, struck the ground with
      -    his stick, and ejaculated mentally, "What the devil am I doing here!" He
      -    seemed lost in a sort of surprise; but he heard his name called out in
      -    wheezy tones once, twice--and turned on his heels slowly.</p>
      -
      -    <p>He beheld then, waddling towards him autocratically, a man of an
      -    old-fashioned and gouty aspect, with hair as white as his own, but with
      -    shaved, florid cheeks, wearing a necktie--almost a neckcloth--whose
      -    stiff ends projected far beyond his chin; with round legs, round arms,
      -    a round body, a round face--generally producing the effect of his short
      -    figure having been distended by means of an air-pump as much as the
      -    seams of his clothing would stand. This was the Master-Attendant of the
      -    port. A master-attendant is a superior sort of harbor-master; a person,
      -    out in the East, of some consequence in his sphere; a Government
      -    official, a magistrate for the waters of the port, and possessed of vast
      -    but ill-defined disciplinary authority over seamen of all classes.
      -    This particular Master-Attendant was reported to consider it miserably
      -    inadequate, on the ground that it did not include the power of life
      -    and death. This was a jocular exaggeration. Captain Eliott was fairly
      -    satisfied with his position, and nursed no inconsiderable sense of such
      -    power as he had. His conceited and tyrannical disposition did not allow
      -    him to let it dwindle in his hands for want of use. The uproarious,
      -    choleric frankness of his comments on people's character and conduct
      -    caused him to be feared at bottom; though in conversation many pretended
      -    not to mind him in the least, others would only smile sourly at the
      -    mention of his name, and there were even some who dared to pronounce him
      -    "a meddlesome old ruffian." But for almost all of them one of Captain
      -    Eliott's outbreaks was nearly as distasteful to face as a chance of
      -    annihilation.</p>
      -
      -      <style>
      -        body {
      -          padding: 15px;
      -        }
      -
      -        .pointer {
      -          padding: 15px;
      -          background-color: rgba(0, 0, 0, 0.4);
      -          color: white;
      -          border-radius: 10px;
      -          pointer-events: none;
      -          opacity: 0;
      -
      -          transition: opacity 300ms;
      -          -webkit-transition: opacity 300ms;
      -        }
      -
      -        .pointer.show {
      -          opacity: 1;
      -        }
      -      </style>
      -
      -
      -      <div class="pointer"></div>
      -
      -      <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -      <script>
      -        new Tether({
      -          element: '.pointer',
      -          attachment: 'middle right',
      -          targetAttachment: 'middle left',
      -          targetModifier: 'scroll-handle',
      -          target: document.body
      -        });
      -
      -        var headers = document.querySelectorAll('h1,h2,h3,h4,h5,h6');
      -        var hideTimeout = null;
      -        var pointer = document.querySelector('.pointer')
      -
      -        var getSection = function(){
      -          var closest, closestTop;
      -          for (var i=0; i < headers.length; i++){
      -            var rect = headers[i].getBoundingClientRect();
      -
      -            if (closestTop === undefined || (rect.top < 0 && rect.top > closestTop)){
      -              closestTop = rect.top;
      -              closest = headers[i];
      -            }
      -          }
      -          return closest.innerHTML;
      -        }
      -
      -        document.addEventListener('scroll', function(){
      -          var percentage = Math.floor((100 * Math.max(0, pageYOffset)) / (document.body.scrollHeight - innerHeight)) + '%'
      -          pointer.innerHTML = getSection() + ' - ' + percentage
      -
      -          pointer.classList.add('show');
      -
      -          if (hideTimeout)
      -            clearTimeout(hideTimeout);
      -  
      -          hideTimeout = setTimeout(function(){
      -            pointer.classList.remove('show');
      -          }, 1000);
      -        });
      -    </script>
      -  </body>
      -</html>
      diff --git a/bower_components/tether/examples/simple/index.html b/bower_components/tether/examples/simple/index.html
      deleted file mode 100644
      index c648c648c8..0000000000
      --- a/bower_components/tether/examples/simple/index.html
      +++ /dev/null
      @@ -1,30 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="../common/css/style.css" />
      -    </head>
      -    <body>
      -        <div class="instructions">Resize the page to see the Tether flip.</div>
      -
      -        <div class="element"></div>
      -        <div class="target"></div>
      -
      -        <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -        <script>
      -            new Tether({
      -                element: '.element',
      -                target: '.target',
      -                attachment: 'top left',
      -                targetAttachment: 'top right',
      -                constraints: [{
      -                    to: 'window',
      -                    attachment: 'together'
      -                }]
      -            });
      -        </script>
      -    </body>
      -</html>
      diff --git a/bower_components/tether/examples/testbed/index.html b/bower_components/tether/examples/testbed/index.html
      deleted file mode 100644
      index 1a39445936..0000000000
      --- a/bower_components/tether/examples/testbed/index.html
      +++ /dev/null
      @@ -1,36 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <link rel="stylesheet" href="../resources/css/base.css" />
      -        <link rel="stylesheet" href="../common/css/style.css" />
      -    </head>
      -    <body>
      -
      -        <div class="element">
      -        </div>
      -
      -        <div class="container">
      -            <div class="pad"></div>
      -            <div class="target"></div>
      -            <div class="pad"></div>
      -            <div class="pad"></div>
      -        </div>
      -
      -        <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -        <script>
      -            new Tether({
      -                element: '.element',
      -                target: '.target',
      -                attachment: 'top center',
      -                targetAttachment: 'bottom center',
      -                constraints: [{
      -                  to: 'scrollParent',
      -                  attachment: 'together'
      -                }]
      -            });
      -        </script>
      -    </body>
      -  </html>
      diff --git a/bower_components/tether/examples/tooltip/index.html b/bower_components/tether/examples/tooltip/index.html
      deleted file mode 100644
      index fbf247f4df..0000000000
      --- a/bower_components/tether/examples/tooltip/index.html
      +++ /dev/null
      @@ -1,86 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -    <head>
      -        <meta charset="utf-8">
      -        <meta http-equiv="X-UA-Compatible" content="chrome=1">
      -        <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
      -        <script type="text/javascript" src="//use.typekit.net/jbn8qxr.js"></script>
      -        <script type="text/javascript">try{Typekit.load();}catch(e){}</script>
      -        <link rel="stylesheet" href="../../css/drop.css" />
      -        <link rel="stylesheet" href="../../css/drop-tooltip-theme-arrows.css" />
      -        <style>
      -            body {
      -                font-family: "proxima-nova", "Helvetica Neue", sans-serif;
      -                color: #444;
      -            }
      -
      -            .scroll-parent {
      -                margin: 200px;
      -                height: 300px;
      -                width: 300px;
      -                display: inline-block;
      -                overflow: auto;
      -                border: 2px solid #eee;
      -                padding: 40px;
      -            }
      -        </style>
      -    </head>
      -    <body>
      -        <div class="scroll-parent">
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="top center">Tooltip on Top</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="bottom center">Tooltip on Bottom</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="left middle">Tooltip on Left</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="right middle">Tooltip on Right</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="bottom left">Tooltip on Bottom Left</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="bottom right">Tooltip on Bottom Right</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="top left">Tooltip on Top Left</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="top right">Tooltip on Top Right</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="left bottom">Tooltip on Left Bottom</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="left top">Tooltip on Left Top</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="right bottom">Tooltip on Right Bottom</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -            <p><a href="javascript:;" class="drop-tooltip" data-tooltip-content="Whoa, I'm a tooltip" data-attach="right top">Tooltip on Right Top</a></p>
      -            <p>This is a paragraph of text</p>
      -            <p>This is a paragraph of text</p>
      -        </div>
      -
      -        <script src="../resources/js/log.js"></script>
      -        <script src="../resources/js/jquery.js"></script>
      -        <script src="../../utils.js"></script>
      -        <script src="../../tether.js"></script>
      -        <script src="/drop/drop.min.js"></script>
      -        <script src="../../tooltip.js"></script>
      -        <script src="../../constraint.js"></script>
      -        <script>
      -            $('.drop-tooltip').each(function(){
      -                new Tooltip({
      -                    el: this,
      -                    attach: $(this).data('attach')
      -                });
      -            });
      -        </script>
      -    </body>
      -</html>
      diff --git a/bower_components/tether/examples/viewport/colors.css b/bower_components/tether/examples/viewport/colors.css
      deleted file mode 100644
      index 64f8c1ca90..0000000000
      --- a/bower_components/tether/examples/viewport/colors.css
      +++ /dev/null
      @@ -1,145 +0,0 @@
      -@charset "UTF-8";
      -/****
      -
      -   colors.css v1.0 For a friendlier looking web
      -   MIT License • http://clrs.cc • http://github.com/mrmrs/colors
      -
      -   Author: mrmrs
      -           http://mrmrs.cc
      -           @mrmrs_
      -
      -****/
      -/*
      -
      -   SKINS
      -   • Backgrounds
      -   • Colors
      -
      -*/
      -/* Backgrounds */
      -.bg-navy {
      -  background-color: #001f3f; }
      -
      -.bg-blue {
      -  background-color: #0074d9; }
      -
      -.bg-aqua {
      -  background-color: #7fdbff; }
      -
      -.bg-teal {
      -  background-color: #39cccc; }
      -
      -.bg-olive {
      -  background-color: #3d9970; }
      -
      -.bg-green {
      -  background-color: #2ecc40; }
      -
      -.bg-lime {
      -  background-color: #01ff70; }
      -
      -.bg-yellow {
      -  background-color: #ffdc00; }
      -
      -.bg-orange {
      -  background-color: #ff851b; }
      -
      -.bg-red {
      -  background-color: #ff4136; }
      -
      -.bg-fuchsia {
      -  background-color: #f012be; }
      -
      -.bg-purple {
      -  background-color: #b10dc9; }
      -
      -.bg-maroon {
      -  background-color: #85144b; }
      -
      -.bg-white {
      -  background-color: white; }
      -
      -.bg-gray {
      -  background-color: #aaaaaa; }
      -
      -.bg-silver {
      -  background-color: #dddddd; }
      -
      -.bg-black {
      -  background-color: #111111; }
      -
      -/* Colors */
      -.navy {
      -  color: #001f3f; }
      -
      -.blue {
      -  color: #0074d9; }
      -
      -.aqua {
      -  color: #7fdbff; }
      -
      -.teal {
      -  color: #39cccc; }
      -
      -.olive {
      -  color: #3d9970; }
      -
      -.green {
      -  color: #2ecc40; }
      -
      -.lime {
      -  color: #01ff70; }
      -
      -.yellow {
      -  color: #ffdc00; }
      -
      -.orange {
      -  color: #ff851b; }
      -
      -.red {
      -  color: #ff4136; }
      -
      -.fuchsia {
      -  color: #f012be; }
      -
      -.purple {
      -  color: #b10dc9; }
      -
      -.maroon {
      -  color: #85144b; }
      -
      -.white {
      -  color: white; }
      -
      -.silver {
      -  color: #dddddd; }
      -
      -.gray {
      -  color: #aaaaaa; }
      -
      -.black {
      -  color: #111111; }
      -
      -/* PRETTIER LINKS */
      -a {
      -  text-decoration: none;
      -  -webkit-transition: color .3s ease-in-out;
      -  transition: color .3s ease-in-out; }
      -
      -a:link {
      -  color: #0074d9;
      -  -webkit-transition: color .3s ease-in-out;
      -  transition: color .3s ease-in-out; }
      -
      -a:visited {
      -  color: #b10dc9; }
      -
      -a:hover {
      -  color: #7fdbff;
      -  -webkit-transition: color .3s ease-in-out;
      -  transition: color .3s ease-in-out; }
      -
      -a:active {
      -  color: #ff851b;
      -  -webkit-transition: color .3s ease-in-out;
      -  transition: color .3s ease-in-out; }
      diff --git a/bower_components/tether/examples/viewport/index.html b/bower_components/tether/examples/viewport/index.html
      deleted file mode 100644
      index 742daa6b91..0000000000
      --- a/bower_components/tether/examples/viewport/index.html
      +++ /dev/null
      @@ -1,70 +0,0 @@
      -<!DOCTYPE html>
      -<html>
      -  <head>
      -    <link rel="stylesheet" href="../resources/css/base.css" />
      -    <link rel="stylesheet" href="./colors.css" />
      -    <style>
      -      * {
      -        box-sizing: border-box;
      -      }
      -
      -      .element {
      -        background-color: #FFDC00;
      -        width: 80%;
      -        max-width: 300px;
      -        padding: 0 15px;
      -        font-size: 20px;
      -        box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.3);
      -      }
      -
      -      @media (max-width: 380px) {
      -        .element {
      -          font-size: 16px;
      -        }
      -      }
      -
      -      .bit {
      -        width: 10vw;
      -        height: 10vw;
      -        float: left;
      -      }
      -    </style>
      -  </head>
      -  <body>
      -    <div class="element">
      -      <p>This element is tethered to the middle of the visible part of the body.</p>
      -
      -      <p>Inspect the element to see how Tether decided
      -      to use <code>position: fixed</code>.</p>
      -    </div>
      -
      -    <script src="//github.hubspot.com/tether/dist/js/tether.js"></script>
      -    <script>
      -      new Tether({
      -        element: '.element',
      -        target: document.body,
      -        attachment: 'middle center',
      -        targetAttachment: 'middle center',
      -        targetModifier: 'visible'
      -      });
      -    </script>
      -
      -    <script>
      -      // Random colors bit, don't mind this
      -      colors = ['navy', 'blue', 'aqua', 'teal', 'olive', 'green', 'lime',
      -        'yellow', 'orange', 'red', 'fuchsia', 'purple', 'maroon'];
      -
      -      curColors = null;
      -      for(var i=300; i--;){
      -        if (!curColors || !curColors.length)
      -          curColors = colors.slice(0);
      -
      -        var bit = document.createElement('div')
      -        var index = (Math.random() * curColors.length)|0;
      -        bit.className = 'bit bg-' + curColors[index]
      -        curColors.splice(index, 1);
      -        document.body.appendChild(bit);
      -      }
      -    </script>
      -  </body>
      -</html>
      diff --git a/bower_components/tether/gulpfile.js b/bower_components/tether/gulpfile.js
      deleted file mode 100644
      index 8b5e4305ee..0000000000
      --- a/bower_components/tether/gulpfile.js
      +++ /dev/null
      @@ -1,96 +0,0 @@
      -var del         = require('del');
      -var gulp        = require('gulp');
      -var babel       = require('gulp-babel');
      -var bump        = require('gulp-bump');
      -var concat      = require('gulp-concat');
      -var header      = require('gulp-header');
      -var minify      = require('gulp-minify-css');
      -var plumber     = require('gulp-plumber');
      -var prefixer    = require('gulp-autoprefixer');
      -var rename      = require('gulp-rename');
      -var uglify      = require('gulp-uglify');
      -var sass        = require('gulp-sass');
      -var umd         = require('gulp-wrap-umd');
      -
      -// Variables
      -var distDir = './dist';
      -var pkg = require('./package.json');
      -var banner = ['/*!', pkg.name, pkg.version, '*/\n'].join(' ');
      -var umdOptions = {
      -  exports: 'Tether',
      -  namespace: 'Tether'
      -};
      -
      -
      -// Clean
      -gulp.task('clean', function() {
      -  del.sync([distDir]);
      -});
      -
      -
      -// Javascript
      -gulp.task('js', function() {
      -  gulp.src([
      -    './src/js/utils.js',
      -    './src/js/tether.js',
      -    './src/js/constraint.js',
      -    './src/js/abutment.js',
      -    './src/js/shift.js'
      -  ])
      -    .pipe(plumber())
      -    .pipe(babel())
      -    .pipe(concat('tether.js'))
      -    .pipe(umd(umdOptions))
      -    .pipe(header(banner))
      -
      -    // Original
      -    .pipe(gulp.dest(distDir + '/js'))
      -
      -    // Minified
      -    .pipe(uglify())
      -    .pipe(rename({suffix: '.min'}))
      -    .pipe(gulp.dest(distDir + '/js'));
      -});
      -
      -
      -// CSS
      -gulp.task('css', function() {
      -  gulp.src('./src/css/**/*.sass')
      -    .pipe(plumber())
      -    .pipe(sass())
      -    .pipe(prefixer())
      -
      -    // Original
      -    .pipe(gulp.dest(distDir + '/css'))
      -
      -    // Minified
      -    .pipe(minify())
      -    .pipe(rename({suffix: '.min'}))
      -    .pipe(gulp.dest(distDir + '/css'));
      -});
      -
      -
      -// Version bump
      -var VERSIONS = ['patch', 'minor', 'major'];
      -for (var i = 0; i < VERSIONS.length; ++i){
      -  (function(version) {
      -    gulp.task('version:' + version, function() {
      -      gulp.src(['package.json', 'bower.json', 'component.json'])
      -        .pipe(bump({type: version}))
      -        .pipe(gulp.dest('.'));
      -    });
      -  })(VERSIONS[i]);
      -}
      -
      -
      -// Watch
      -gulp.task('watch', ['js', 'css'], function() {
      -  gulp.watch('./src/js/**/*', ['js']);
      -  gulp.watch('./src/css/**/*', ['css']);
      -});
      -
      -
      -// Defaults
      -gulp.task('build', ['js', 'css']);
      -gulp.task('default', ['build']);
      -
      diff --git a/bower_components/tether/package.json b/bower_components/tether/package.json
      deleted file mode 100644
      index 15f28d587a..0000000000
      --- a/bower_components/tether/package.json
      +++ /dev/null
      @@ -1,40 +0,0 @@
      -{
      -  "name": "tether",
      -  "version": "1.4.0",
      -  "description": "A client-side library to make absolutely positioned elements attach to elements in the page efficiently.",
      -  "authors": [
      -    "Zack Bloom <zackbloom@gmail.com>",
      -    "Adam Schwartz <adam.flynn.schwartz@gmail.com>"
      -  ],
      -  "maintainers": [
      -    "Nicholas Hwang <nick.joosung.hwang@gmail.com>",
      -    "Trevor Burnham <trevorburnham@gmail.com>"
      -  ],
      -  "scripts": {
      -    "reinstall": "del node_modules && npm install",
      -    "watch": "gulp watch",
      -    "build": "gulp build"
      -  },
      -  "repository": {
      -    "type": "git",
      -    "url": "https://github.com/HubSpot/tether.git"
      -  },
      -  "license": "MIT",
      -  "main": "dist/js/tether.js",
      -  "devDependencies": {
      -    "del": "^2.0.2",
      -    "del-cli": "^0.2.0",
      -    "gulp": "^3.9.0",
      -    "gulp-autoprefixer": "^3.0.1",
      -    "gulp-babel": "^5.2.1",
      -    "gulp-bump": "^0.3.1",
      -    "gulp-concat": "^2.6.0",
      -    "gulp-header": "^1.7.1",
      -    "gulp-minify-css": "^1.2.1",
      -    "gulp-plumber": "^1.0.1",
      -    "gulp-rename": "^1.2.2",
      -    "gulp-sass": "^2.0.4",
      -    "gulp-uglify": "^1.4.1",
      -    "gulp-wrap-umd": "^0.2.1"
      -  }
      -}
      diff --git a/bower_components/tether/src/css/helpers/_tether-theme-arrows.sass b/bower_components/tether/src/css/helpers/_tether-theme-arrows.sass
      deleted file mode 100644
      index 55f2463e8a..0000000000
      --- a/bower_components/tether/src/css/helpers/_tether-theme-arrows.sass
      +++ /dev/null
      @@ -1,192 +0,0 @@
      -=tether-theme-arrows($themePrefix: "tether", $themeName: "arrows", $arrowSize: 16px, $arrowPointerEvents: null, $backgroundColor: #fff, $color: inherit, $useDropShadow: false)
      -    .#{ $themePrefix }-element.#{ $themePrefix }-theme-#{ $themeName }
      -        max-width: 100%
      -        max-height: 100%
      -
      -        .#{ $themePrefix }-content
      -            border-radius: 5px
      -            position: relative
      -            font-family: inherit
      -            background: $backgroundColor
      -            color: $color
      -            padding: 1em
      -            font-size: 1.1em
      -            line-height: 1.5em
      -
      -            @if $useDropShadow
      -                transform: translateZ(0)
      -                filter: drop-shadow(0 1px 4px rgba(0, 0, 0, .2))
      -
      -            &:before
      -                content: ""
      -                display: block
      -                position: absolute
      -                width: 0
      -                height: 0
      -                border-color: transparent
      -                border-width: $arrowSize
      -                border-style: solid
      -                pointer-events: $arrowPointerEvents
      -
      -        // Centers and middles
      -
      -        &.#{ $themePrefix }-element-attached-bottom.#{ $themePrefix }-element-attached-center .#{ $themePrefix }-content
      -            margin-bottom: $arrowSize
      -
      -            &:before
      -                top: 100%
      -                left: 50%
      -                margin-left: - $arrowSize
      -                border-top-color: $backgroundColor
      -                border-bottom: 0
      -
      -        &.#{ $themePrefix }-element-attached-top.#{ $themePrefix }-element-attached-center .#{ $themePrefix }-content
      -            margin-top: $arrowSize
      -
      -            &:before
      -                bottom: 100%
      -                left: 50%
      -                margin-left: - $arrowSize
      -                border-bottom-color: $backgroundColor
      -                border-top: 0
      -
      -        &.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-element-attached-middle .#{ $themePrefix }-content
      -            margin-right: $arrowSize
      -
      -            &:before
      -                left: 100%
      -                top: 50%
      -                margin-top: - $arrowSize
      -                border-left-color: $backgroundColor
      -                border-right: 0
      -
      -        &.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-element-attached-middle .#{ $themePrefix }-content
      -            margin-left: $arrowSize
      -
      -            &:before
      -                right: 100%
      -                top: 50%
      -                margin-top: - $arrowSize
      -                border-right-color: $backgroundColor
      -                border-left: 0
      -
      -        // Target middle/center, element corner
      -
      -        &.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-target-attached-center .#{ $themePrefix }-content
      -            left: - $arrowSize * 2
      -
      -        &.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-target-attached-center .#{ $themePrefix }-content
      -            left: $arrowSize * 2
      -
      -        &.#{ $themePrefix }-element-attached-top.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-target-attached-middle .#{ $themePrefix }-content
      -            margin-top: $arrowSize
      -
      -            &:before
      -                bottom: 100%
      -                left: $arrowSize
      -                border-bottom-color: $backgroundColor
      -                border-top: 0
      -
      -        &.#{ $themePrefix }-element-attached-top.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-target-attached-middle .#{ $themePrefix }-content
      -            margin-top: $arrowSize
      -
      -            &:before
      -                bottom: 100%
      -                right: $arrowSize
      -                border-bottom-color: $backgroundColor
      -                border-top: 0
      -
      -        &.#{ $themePrefix }-element-attached-bottom.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-target-attached-middle .#{ $themePrefix }-content
      -            margin-bottom: $arrowSize
      -
      -            &:before
      -                top: 100%
      -                left: $arrowSize
      -                border-top-color: $backgroundColor
      -                border-bottom: 0
      -
      -        &.#{ $themePrefix }-element-attached-bottom.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-target-attached-middle .#{ $themePrefix }-content
      -            margin-bottom: $arrowSize
      -
      -            &:before
      -                top: 100%
      -                right: $arrowSize
      -                border-top-color: $backgroundColor
      -                border-bottom: 0
      -
      -
      -        // Top and bottom corners
      -
      -        &.#{ $themePrefix }-element-attached-top.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-target-attached-bottom .#{ $themePrefix }-content
      -            margin-top: $arrowSize
      -
      -            &:before
      -                bottom: 100%
      -                left: $arrowSize
      -                border-bottom-color: $backgroundColor
      -                border-top: 0
      -
      -        &.#{ $themePrefix }-element-attached-top.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-target-attached-bottom .#{ $themePrefix }-content
      -            margin-top: $arrowSize
      -
      -            &:before
      -                bottom: 100%
      -                right: $arrowSize
      -                border-bottom-color: $backgroundColor
      -                border-top: 0
      -
      -        &.#{ $themePrefix }-element-attached-bottom.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-target-attached-top .#{ $themePrefix }-content
      -            margin-bottom: $arrowSize
      -
      -            &:before
      -                top: 100%
      -                left: $arrowSize
      -                border-top-color: $backgroundColor
      -                border-bottom: 0
      -
      -        &.#{ $themePrefix }-element-attached-bottom.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-target-attached-top .#{ $themePrefix }-content
      -            margin-bottom: $arrowSize
      -
      -            &:before
      -                top: 100%
      -                right: $arrowSize
      -                border-top-color: $backgroundColor
      -                border-bottom: 0
      -
      -        // Side corners
      -
      -        &.#{ $themePrefix }-element-attached-top.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-target-attached-left .#{ $themePrefix }-content
      -            margin-right: $arrowSize
      -
      -            &:before
      -                top: $arrowSize
      -                left: 100%
      -                border-left-color: $backgroundColor
      -                border-right: 0
      -
      -        &.#{ $themePrefix }-element-attached-top.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-target-attached-right .#{ $themePrefix }-content
      -            margin-left: $arrowSize
      -
      -            &:before
      -                top: $arrowSize
      -                right: 100%
      -                border-right-color: $backgroundColor
      -                border-left: 0
      -
      -        &.#{ $themePrefix }-element-attached-bottom.#{ $themePrefix }-element-attached-right.#{ $themePrefix }-target-attached-left .#{ $themePrefix }-content
      -            margin-right: $arrowSize
      -
      -            &:before
      -                bottom: $arrowSize
      -                left: 100%
      -                border-left-color: $backgroundColor
      -                border-right: 0
      -
      -        &.#{ $themePrefix }-element-attached-bottom.#{ $themePrefix }-element-attached-left.#{ $themePrefix }-target-attached-right .#{ $themePrefix }-content
      -            margin-left: $arrowSize
      -
      -            &:before
      -                bottom: $arrowSize
      -                right: 100%
      -                border-right-color: $backgroundColor
      -                border-left: 0
      diff --git a/bower_components/tether/src/css/helpers/_tether-theme-basic.sass b/bower_components/tether/src/css/helpers/_tether-theme-basic.sass
      deleted file mode 100644
      index f7e9fb761f..0000000000
      --- a/bower_components/tether/src/css/helpers/_tether-theme-basic.sass
      +++ /dev/null
      @@ -1,14 +0,0 @@
      -=tether-theme-basic($themePrefix: "tether", $themeName: "basic", $backgroundColor: #fff, $color: inherit)
      -    .#{ $themePrefix }-element.#{ $themePrefix }-theme-#{ $themeName }
      -        max-width: 100%
      -        max-height: 100%
      -
      -        .#{ $themePrefix }-content
      -            border-radius: 5px
      -            box-shadow: 0 2px 8px rgba(0, 0, 0, .2)
      -            font-family: inherit
      -            background: $backgroundColor
      -            color: $color
      -            padding: 1em
      -            font-size: 1.1em
      -            line-height: 1.5em
      diff --git a/bower_components/tether/src/css/helpers/_tether.sass b/bower_components/tether/src/css/helpers/_tether.sass
      deleted file mode 100644
      index a6d8e506c7..0000000000
      --- a/bower_components/tether/src/css/helpers/_tether.sass
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -=tether($themePrefix: "tether")
      -    .#{ $themePrefix }-element, .#{ $themePrefix }-element *
      -
      -        &, &:after, &:before
      -            box-sizing: border-box
      -
      -    .#{ $themePrefix }-element
      -        position: absolute
      -        display: none
      -
      -        &.#{ $themePrefix }-open
      -            display: block
      diff --git a/bower_components/tether/src/css/mixins/_inline-block.sass b/bower_components/tether/src/css/mixins/_inline-block.sass
      deleted file mode 100644
      index 0e9814386f..0000000000
      --- a/bower_components/tether/src/css/mixins/_inline-block.sass
      +++ /dev/null
      @@ -1,6 +0,0 @@
      -@mixin inline-block
      -  display: inline-block
      -  vertical-align: middle
      -  *vertical-align: auto
      -  *zoom: 1
      -  *display: inline
      diff --git a/bower_components/tether/src/css/mixins/_pie-clearfix.sass b/bower_components/tether/src/css/mixins/_pie-clearfix.sass
      deleted file mode 100644
      index ef8c9c48ff..0000000000
      --- a/bower_components/tether/src/css/mixins/_pie-clearfix.sass
      +++ /dev/null
      @@ -1,7 +0,0 @@
      -@mixin pie-clearfix
      -  *zoom: 1
      -
      -  &:after
      -    content: ""
      -    display: table
      -    clear: both
      diff --git a/bower_components/tether/src/css/tether-theme-arrows-dark.sass b/bower_components/tether/src/css/tether-theme-arrows-dark.sass
      deleted file mode 100644
      index ad1caf0160..0000000000
      --- a/bower_components/tether/src/css/tether-theme-arrows-dark.sass
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -@import helpers/tether
      -@import helpers/tether-theme-arrows
      -
      -$themePrefix: "tether"
      -$themeName: "arrows-dark"
      -$arrowSize: 16px
      -$backgroundColor: #000
      -$color: #fff
      -$useDropShadow: false
      -
      -+tether($themePrefix: $themePrefix)
      -+tether-theme-arrows($themePrefix: $themePrefix, $themeName: $themeName, $arrowSize: $arrowSize, $backgroundColor: $backgroundColor, $color: $color, $useDropShadow: $useDropShadow)
      diff --git a/bower_components/tether/src/css/tether-theme-arrows.sass b/bower_components/tether/src/css/tether-theme-arrows.sass
      deleted file mode 100644
      index 87765b2232..0000000000
      --- a/bower_components/tether/src/css/tether-theme-arrows.sass
      +++ /dev/null
      @@ -1,12 +0,0 @@
      -@import helpers/tether
      -@import helpers/tether-theme-arrows
      -
      -$themePrefix: "tether"
      -$themeName: "arrows"
      -$arrowSize: 16px
      -$backgroundColor: #fff
      -$color: inherit
      -$useDropShadow: true
      -
      -+tether($themePrefix: $themePrefix)
      -+tether-theme-arrows($themePrefix: $themePrefix, $themeName: $themeName, $arrowSize: $arrowSize, $backgroundColor: $backgroundColor, $color: $color, $useDropShadow: $useDropShadow)
      diff --git a/bower_components/tether/src/css/tether-theme-basic.sass b/bower_components/tether/src/css/tether-theme-basic.sass
      deleted file mode 100644
      index 9a2be063df..0000000000
      --- a/bower_components/tether/src/css/tether-theme-basic.sass
      +++ /dev/null
      @@ -1,10 +0,0 @@
      -@import helpers/tether
      -@import helpers/tether-theme-basic
      -
      -$themePrefix: "tether"
      -$themeName: "basic"
      -$backgroundColor: #fff
      -$color: inherit
      -
      -+tether($themePrefix: $themePrefix)
      -+tether-theme-basic($themePrefix: $themePrefix, $themeName: $themeName, $backgroundColor: $backgroundColor, $color: $color)
      \ No newline at end of file
      diff --git a/bower_components/tether/src/css/tether.sass b/bower_components/tether/src/css/tether.sass
      deleted file mode 100644
      index 64210164d2..0000000000
      --- a/bower_components/tether/src/css/tether.sass
      +++ /dev/null
      @@ -1,5 +0,0 @@
      -@import helpers/tether
      -
      -$themePrefix: "tether"
      -
      -+tether($themePrefix: $themePrefix)
      \ No newline at end of file
      diff --git a/bower_components/tether/src/js/abutment.js b/bower_components/tether/src/js/abutment.js
      deleted file mode 100644
      index 960563534c..0000000000
      --- a/bower_components/tether/src/js/abutment.js
      +++ /dev/null
      @@ -1,61 +0,0 @@
      -/* globals TetherBase */
      -
      -const {getBounds, updateClasses, defer} = TetherBase.Utils;
      -
      -TetherBase.modules.push({
      -  position({top, left}) {
      -    const {height, width} = this.cache('element-bounds', () => {
      -      return getBounds(this.element);
      -    });
      -
      -    const targetPos = this.getTargetBounds();
      -
      -    const bottom = top + height;
      -    const right = left + width;
      -
      -    const abutted = [];
      -    if (top <= targetPos.bottom && bottom >= targetPos.top) {
      -      ['left', 'right'].forEach(side => {
      -        const targetPosSide = targetPos[side];
      -        if (targetPosSide === left || targetPosSide === right) {
      -          abutted.push(side);
      -        }
      -      });
      -    }
      -
      -    if (left <= targetPos.right && right >= targetPos.left) {
      -      ['top', 'bottom'].forEach(side => {
      -        const targetPosSide = targetPos[side];
      -        if (targetPosSide === top || targetPosSide === bottom) {
      -          abutted.push(side);
      -        }
      -      });
      -    }
      -
      -    const allClasses = [];
      -    const addClasses = [];
      -
      -    const sides = ['left', 'top', 'right', 'bottom'];
      -    allClasses.push(this.getClass('abutted'));
      -    sides.forEach(side => {
      -      allClasses.push(`${ this.getClass('abutted') }-${ side }`);
      -    });
      -
      -    if (abutted.length) {
      -      addClasses.push(this.getClass('abutted'));
      -    }
      -
      -    abutted.forEach(side => {
      -      addClasses.push(`${ this.getClass('abutted') }-${ side }`);
      -    });
      -
      -    defer(() => {
      -      if (!(this.options.addTargetClasses === false)) {
      -        updateClasses(this.target, addClasses, allClasses);
      -      }
      -      updateClasses(this.element, addClasses, allClasses);
      -    });
      -
      -    return true;
      -  }
      -});
      diff --git a/bower_components/tether/src/js/constraint.js b/bower_components/tether/src/js/constraint.js
      deleted file mode 100644
      index 1717149cff..0000000000
      --- a/bower_components/tether/src/js/constraint.js
      +++ /dev/null
      @@ -1,366 +0,0 @@
      -/* globals TetherBase */
      -
      -const {
      -  getBounds,
      -  extend,
      -  updateClasses,
      -  defer
      -} = TetherBase.Utils;
      -
      -const BOUNDS_FORMAT = ['left', 'top', 'right', 'bottom'];
      -
      -function getBoundingRect(tether, to) {
      -  if (to === 'scrollParent') {
      -    to = tether.scrollParents[0];
      -  } else if (to === 'window') {
      -    to = [pageXOffset, pageYOffset, innerWidth + pageXOffset, innerHeight + pageYOffset];
      -  }
      -
      -  if (to === document) {
      -    to = to.documentElement;
      -  }
      -
      -  if (typeof to.nodeType !== 'undefined') {
      -    const node = to;
      -    const size = getBounds(to);
      -    const pos = size;
      -    const style = getComputedStyle(to);
      -
      -    to = [pos.left, pos.top, size.width + pos.left, size.height + pos.top];
      -  
      -    // Account any parent Frames scroll offset
      -    if (node.ownerDocument !== document) {
      -      let win = node.ownerDocument.defaultView;
      -      to[0] += win.pageXOffset;
      -      to[1] += win.pageYOffset;
      -      to[2] += win.pageXOffset;
      -      to[3] += win.pageYOffset;
      -    }
      -  
      -    BOUNDS_FORMAT.forEach((side, i) => {
      -      side = side[0].toUpperCase() + side.substr(1);
      -      if (side === 'Top' || side === 'Left') {
      -        to[i] += parseFloat(style[`border${ side }Width`]);
      -      } else {
      -        to[i] -= parseFloat(style[`border${ side }Width`]);
      -      }
      -    });
      -  }
      -
      -  return to;
      -}
      -
      -TetherBase.modules.push({
      -  position({top, left, targetAttachment}) {
      -    if (!this.options.constraints) {
      -      return true;
      -    }
      -
      -    let {height, width} = this.cache('element-bounds', () => {
      -      return getBounds(this.element);
      -    });
      -
      -    if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {
      -      // Handle the item getting hidden as a result of our positioning without glitching
      -      // the classes in and out
      -      ({width, height} = this.lastSize);
      -    }
      -
      -    const targetSize = this.cache('target-bounds', () => {
      -      return this.getTargetBounds();
      -    });
      -
      -    const {height: targetHeight, width: targetWidth} = targetSize;
      -
      -    const allClasses = [this.getClass('pinned'), this.getClass('out-of-bounds')];
      -
      -    this.options.constraints.forEach(constraint => {
      -      const {outOfBoundsClass, pinnedClass} = constraint;
      -      if (outOfBoundsClass) {
      -        allClasses.push(outOfBoundsClass);
      -      }
      -      if (pinnedClass) {
      -        allClasses.push(pinnedClass);
      -      }
      -    });
      -
      -    allClasses.forEach(cls => {
      -      ['left', 'top', 'right', 'bottom'].forEach(side => {
      -        allClasses.push(`${ cls }-${ side }`);
      -      });
      -    });
      -
      -    const addClasses = [];
      -
      -    const tAttachment = extend({}, targetAttachment);
      -    const eAttachment = extend({}, this.attachment);
      -
      -    this.options.constraints.forEach(constraint => {
      -      let {to, attachment, pin} = constraint;
      -
      -      if (typeof attachment === 'undefined') {
      -        attachment = '';
      -      }
      -
      -      let changeAttachX, changeAttachY;
      -      if (attachment.indexOf(' ') >= 0) {
      -        [changeAttachY, changeAttachX] = attachment.split(' ');
      -      } else {
      -        changeAttachX = changeAttachY = attachment;
      -      }
      -
      -      const bounds = getBoundingRect(this, to);
      -
      -      if (changeAttachY === 'target' || changeAttachY === 'both') {
      -        if (top < bounds[1] && tAttachment.top === 'top') {
      -          top += targetHeight;
      -          tAttachment.top = 'bottom';
      -        }
      -
      -        if (top + height > bounds[3] && tAttachment.top === 'bottom') {
      -          top -= targetHeight;
      -          tAttachment.top = 'top';
      -        }
      -      }
      -
      -      if (changeAttachY === 'together') {
      -        if (tAttachment.top === 'top') {
      -          if (eAttachment.top === 'bottom' && top < bounds[1]) {
      -            top += targetHeight;
      -            tAttachment.top = 'bottom';
      -
      -            top += height;
      -            eAttachment.top = 'top';
      -
      -          } else if (eAttachment.top === 'top' && top + height > bounds[3] && top - (height - targetHeight) >= bounds[1]) {
      -            top -= height - targetHeight;
      -            tAttachment.top = 'bottom';
      -
      -            eAttachment.top = 'bottom';
      -          }
      -        }
      -
      -        if (tAttachment.top === 'bottom') {
      -          if (eAttachment.top === 'top' && top + height > bounds[3]) {
      -            top -= targetHeight;
      -            tAttachment.top = 'top';
      -
      -            top -= height;
      -            eAttachment.top = 'bottom';
      -
      -          } else if (eAttachment.top === 'bottom'&& top < bounds[1] && top + (height*2 - targetHeight) <= bounds[3]) {
      -            top += height - targetHeight;
      -            tAttachment.top = 'top';
      -
      -            eAttachment.top = 'top';
      -
      -          }
      -        }
      -
      -        if (tAttachment.top === 'middle') {
      -          if (top + height > bounds[3] && eAttachment.top === 'top') {
      -            top -= height;
      -            eAttachment.top = 'bottom';
      -
      -          } else if (top < bounds[1] && eAttachment.top === 'bottom') {
      -            top += height;
      -            eAttachment.top = 'top';
      -          }
      -        }
      -      }
      -
      -      if (changeAttachX === 'target' || changeAttachX === 'both') {
      -        if (left < bounds[0] && tAttachment.left === 'left') {
      -          left += targetWidth;
      -          tAttachment.left = 'right';
      -        }
      -
      -        if (left + width > bounds[2] && tAttachment.left === 'right') {
      -          left -= targetWidth;
      -          tAttachment.left = 'left';
      -        }
      -      }
      -
      -      if (changeAttachX === 'together') {
      -        if (left < bounds[0] && tAttachment.left === 'left') {
      -          if (eAttachment.left === 'right') {
      -            left += targetWidth;
      -            tAttachment.left = 'right';
      -
      -            left += width;
      -            eAttachment.left = 'left';
      -
      -          } else if (eAttachment.left === 'left') {
      -            left += targetWidth;
      -            tAttachment.left = 'right';
      -
      -            left -= width;
      -            eAttachment.left = 'right';
      -          }
      -
      -        } else if (left + width > bounds[2] && tAttachment.left === 'right') {
      -          if (eAttachment.left === 'left') {
      -            left -= targetWidth;
      -            tAttachment.left = 'left';
      -
      -            left -= width;
      -            eAttachment.left = 'right';
      -
      -          } else if (eAttachment.left === 'right') {
      -            left -= targetWidth;
      -            tAttachment.left = 'left';
      -
      -            left += width;
      -            eAttachment.left = 'left';
      -          }
      -
      -        } else if (tAttachment.left === 'center') {
      -          if (left + width > bounds[2] && eAttachment.left === 'left') {
      -            left -= width;
      -            eAttachment.left = 'right';
      -
      -          } else if (left < bounds[0] && eAttachment.left === 'right') {
      -            left += width;
      -            eAttachment.left = 'left';
      -          }
      -        }
      -      }
      -
      -      if (changeAttachY === 'element' || changeAttachY === 'both') {
      -        if (top < bounds[1] && eAttachment.top === 'bottom') {
      -          top += height;
      -          eAttachment.top = 'top';
      -        }
      -
      -        if (top + height > bounds[3] && eAttachment.top === 'top') {
      -          top -= height;
      -          eAttachment.top = 'bottom';
      -        }
      -      }
      -
      -      if (changeAttachX === 'element' || changeAttachX === 'both') {
      -        if (left < bounds[0]) {
      -          if (eAttachment.left === 'right') {
      -            left += width;
      -            eAttachment.left = 'left';
      -          } else if (eAttachment.left === 'center') {
      -            left += (width / 2);
      -            eAttachment.left = 'left';
      -          }
      -        }
      -
      -        if (left + width > bounds[2]) {
      -          if (eAttachment.left === 'left') {
      -            left -= width;
      -            eAttachment.left = 'right';
      -          } else if (eAttachment.left === 'center') {
      -            left -= (width / 2);
      -            eAttachment.left = 'right';
      -          }
      -        }
      -      }
      -
      -      if (typeof pin === 'string') {
      -        pin = pin.split(',').map(p => p.trim());
      -      } else if (pin === true) {
      -        pin = ['top', 'left', 'right', 'bottom'];
      -      }
      -
      -      pin = pin || [];
      -
      -      const pinned = [];
      -      const oob = [];
      -
      -      if (top < bounds[1]) {
      -        if (pin.indexOf('top') >= 0) {
      -          top = bounds[1];
      -          pinned.push('top');
      -        } else {
      -          oob.push('top');
      -        }
      -      }
      -
      -      if (top + height > bounds[3]) {
      -        if (pin.indexOf('bottom') >= 0) {
      -          top = bounds[3] - height;
      -          pinned.push('bottom');
      -        } else {
      -          oob.push('bottom');
      -        }
      -      }
      -
      -      if (left < bounds[0]) {
      -        if (pin.indexOf('left') >= 0) {
      -          left = bounds[0];
      -          pinned.push('left');
      -        } else {
      -          oob.push('left');
      -        }
      -      }
      -
      -      if (left + width > bounds[2]) {
      -        if (pin.indexOf('right') >= 0) {
      -          left = bounds[2] - width;
      -          pinned.push('right');
      -        } else {
      -          oob.push('right');
      -        }
      -      }
      -
      -      if (pinned.length) {
      -        let pinnedClass;
      -        if (typeof this.options.pinnedClass !== 'undefined') {
      -          pinnedClass = this.options.pinnedClass;
      -        } else {
      -          pinnedClass = this.getClass('pinned');
      -        }
      -
      -        addClasses.push(pinnedClass);
      -        pinned.forEach(side => {
      -          addClasses.push(`${ pinnedClass }-${ side }`);
      -        });
      -      }
      -
      -      if (oob.length) {
      -        let oobClass;
      -        if (typeof this.options.outOfBoundsClass !== 'undefined') {
      -          oobClass = this.options.outOfBoundsClass;
      -        } else {
      -          oobClass = this.getClass('out-of-bounds');
      -        }
      -
      -        addClasses.push(oobClass);
      -        oob.forEach(side => {
      -          addClasses.push(`${ oobClass }-${ side }`);
      -        });
      -      }
      -
      -      if (pinned.indexOf('left') >= 0 || pinned.indexOf('right') >= 0) {
      -        eAttachment.left = tAttachment.left = false;
      -      }
      -      if (pinned.indexOf('top') >= 0 || pinned.indexOf('bottom') >= 0) {
      -        eAttachment.top = tAttachment.top = false;
      -      }
      -
      -      if (tAttachment.top !== targetAttachment.top ||
      -          tAttachment.left !== targetAttachment.left ||
      -          eAttachment.top !== this.attachment.top ||
      -          eAttachment.left !== this.attachment.left) {
      -        this.updateAttachClasses(eAttachment, tAttachment);
      -        this.trigger('update', {
      -          attachment: eAttachment,
      -          targetAttachment: tAttachment,
      -        });
      -      }
      -    });
      -
      -    defer(() => {
      -      if (!(this.options.addTargetClasses === false)) {
      -        updateClasses(this.target, addClasses, allClasses);
      -      }
      -      updateClasses(this.element, addClasses, allClasses);
      -    });
      -
      -    return {top, left};
      -  }
      -});
      diff --git a/bower_components/tether/src/js/markAttachment.js b/bower_components/tether/src/js/markAttachment.js
      deleted file mode 100644
      index edcc79a187..0000000000
      --- a/bower_components/tether/src/js/markAttachment.js
      +++ /dev/null
      @@ -1,46 +0,0 @@
      -/* globals Tether */
      -
      -Tether.modules.push({
      -  initialize() {
      -    this.markers = {};
      -
      -    ['target', 'element'].forEach(type => {
      -      const el = document.createElement('div');
      -      el.className = this.getClass(`${ type }-marker`);
      -
      -      const dot = document.createElement('div');
      -      dot.className = this.getClass('marker-dot');
      -      el.appendChild(dot);
      -
      -      this[type].appendChild(el);
      -
      -      this.markers[type] = {dot, el};
      -    });
      -  },
      -
      -  position({manualOffset, manualTargetOffset}) {
      -    const offsets = {
      -      element: manualOffset,
      -      target: manualTargetOffset
      -    };
      -
      -    for (let type in offsets) {
      -      const offset = offsets[type];
      -      for (let side in offset) {
      -        let val = offset[side];
      -        const notString = typeof val !== 'string';
      -        if (notString ||
      -            val.indexOf('%') === -1 &&
      -            val.indexOf('px') === -1) {
      -          val += 'px';
      -        }
      -
      -        if (this.markers[type].dot.style[side] !== val) {
      -          this.markers[type].dot.style[side] = val;
      -        }
      -      }
      -    }
      -
      -    return true;
      -  }
      -});
      diff --git a/bower_components/tether/src/js/shift.js b/bower_components/tether/src/js/shift.js
      deleted file mode 100644
      index ecc872d27b..0000000000
      --- a/bower_components/tether/src/js/shift.js
      +++ /dev/null
      @@ -1,32 +0,0 @@
      -/* globals TetherBase */
      -
      -TetherBase.modules.push({
      -  position({top, left}) {
      -    if (!this.options.shift) {
      -      return;
      -    }
      -
      -    let shift = this.options.shift;
      -    if (typeof this.options.shift === 'function') {
      -      shift = this.options.shift.call(this, {top, left});
      -    }
      -
      -    let shiftTop, shiftLeft;
      -    if (typeof shift === 'string') {
      -      shift = shift.split(' ');
      -      shift[1] = shift[1] || shift[0];
      -
      -      ([shiftTop, shiftLeft] = shift);
      -
      -      shiftTop = parseFloat(shiftTop, 10);
      -      shiftLeft = parseFloat(shiftLeft, 10);
      -    } else {
      -      ([shiftTop, shiftLeft] = [shift.top, shift.left]);
      -    }
      -
      -    top += shiftTop;
      -    left += shiftLeft;
      -
      -    return {top, left};
      -  }
      -});
      diff --git a/bower_components/tether/src/js/tether.js b/bower_components/tether/src/js/tether.js
      deleted file mode 100644
      index 5ebc84fad1..0000000000
      --- a/bower_components/tether/src/js/tether.js
      +++ /dev/null
      @@ -1,809 +0,0 @@
      -/* globals TetherBase, performance */
      -
      -if (typeof TetherBase === 'undefined') {
      -  throw new Error('You must include the utils.js file before tether.js');
      -}
      -
      -const {
      -  getScrollParents,
      -  getBounds,
      -  getOffsetParent,
      -  extend,
      -  addClass,
      -  removeClass,
      -  updateClasses,
      -  defer,
      -  flush,
      -  getScrollBarSize,
      -  removeUtilElements
      -} = TetherBase.Utils;
      -
      -function within(a, b, diff=1) {
      -  return (a + diff >= b && b >= a - diff);
      -}
      -
      -const transformKey = (() => {
      -  if(typeof document === 'undefined') {
      -    return '';
      -  }
      -  const el = document.createElement('div');
      -
      -  const transforms = ['transform', 'WebkitTransform', 'OTransform', 'MozTransform', 'msTransform'];
      -  for (let i = 0; i < transforms.length; ++i) {
      -    const key = transforms[i];
      -    if (el.style[key] !== undefined) {
      -      return key;
      -    }
      -  }
      -})();
      -
      -const tethers = [];
      -
      -const position = () => {
      -  tethers.forEach(tether => {
      -    tether.position(false);
      -  });
      -  flush();
      -};
      -
      -function now() {
      -  if (typeof performance !== 'undefined' && typeof performance.now !== 'undefined') {
      -    return performance.now();
      -  }
      -  return +new Date;
      -}
      -
      -(() => {
      -  let lastCall = null;
      -  let lastDuration = null;
      -  let pendingTimeout = null;
      -
      -  const tick = () => {
      -    if (typeof lastDuration !== 'undefined' && lastDuration > 16) {
      -      // We voluntarily throttle ourselves if we can't manage 60fps
      -      lastDuration = Math.min(lastDuration - 16, 250);
      -
      -      // Just in case this is the last event, remember to position just once more
      -      pendingTimeout = setTimeout(tick, 250);
      -      return;
      -    }
      -
      -    if (typeof lastCall !== 'undefined' && (now() - lastCall) < 10) {
      -      // Some browsers call events a little too frequently, refuse to run more than is reasonable
      -      return;
      -    }
      -
      -    if (pendingTimeout != null) {
      -      clearTimeout(pendingTimeout);
      -      pendingTimeout = null;
      -    }
      -
      -    lastCall = now();
      -    position();
      -    lastDuration = now() - lastCall;
      -  };
      -
      -  if(typeof window !== 'undefined' && typeof window.addEventListener !== 'undefined') {
      -    ['resize', 'scroll', 'touchmove'].forEach(event => {
      -      window.addEventListener(event, tick);
      -    });
      -  }
      -})();
      -
      -const MIRROR_LR = {
      -  center: 'center',
      -  left: 'right',
      -  right: 'left'
      -};
      -
      -const MIRROR_TB = {
      -  middle: 'middle',
      -  top: 'bottom',
      -  bottom: 'top'
      -};
      -
      -const OFFSET_MAP = {
      -  top: 0,
      -  left: 0,
      -  middle: '50%',
      -  center: '50%',
      -  bottom: '100%',
      -  right: '100%'
      -};
      -
      -const autoToFixedAttachment = (attachment, relativeToAttachment) => {
      -  let {left, top} = attachment;
      -
      -  if (left === 'auto') {
      -    left = MIRROR_LR[relativeToAttachment.left];
      -  }
      -
      -  if (top === 'auto') {
      -    top = MIRROR_TB[relativeToAttachment.top];
      -  }
      -
      -  return {left, top};
      -};
      -
      -const attachmentToOffset = (attachment) => {
      -  let left = attachment.left;
      -  let top = attachment.top;
      -
      -  if (typeof OFFSET_MAP[attachment.left] !== 'undefined') {
      -    left = OFFSET_MAP[attachment.left];
      -  }
      -
      -  if (typeof OFFSET_MAP[attachment.top] !== 'undefined') {
      -    top = OFFSET_MAP[attachment.top];
      -  }
      -
      -  return {left, top};
      -};
      -
      -function addOffset(...offsets) {
      -  const out = {top: 0, left: 0};
      -
      -  offsets.forEach(({top, left}) => {
      -    if (typeof top === 'string') {
      -      top = parseFloat(top, 10);
      -    }
      -    if (typeof left === 'string') {
      -      left = parseFloat(left, 10);
      -    }
      -
      -    out.top += top;
      -    out.left += left;
      -  });
      -
      -  return out;
      -}
      -
      -function offsetToPx(offset, size) {
      -  if (typeof offset.left === 'string' && offset.left.indexOf('%') !== -1) {
      -    offset.left = parseFloat(offset.left, 10) / 100 * size.width;
      -  }
      -  if (typeof offset.top === 'string' && offset.top.indexOf('%') !== -1) {
      -    offset.top = parseFloat(offset.top, 10) / 100 * size.height;
      -  }
      -
      -  return offset;
      -}
      -
      -const parseOffset = (value) => {
      -  const [top, left] = value.split(' ');
      -  return {top, left};
      -};
      -const parseAttachment = parseOffset;
      -
      -class TetherClass extends Evented {
      -
      -  constructor(options) {
      -    super();
      -    this.position = this.position.bind(this);
      -
      -    tethers.push(this);
      -
      -    this.history = [];
      -
      -    this.setOptions(options, false);
      -
      -    TetherBase.modules.forEach(module => {
      -      if (typeof module.initialize !== 'undefined') {
      -        module.initialize.call(this);
      -      }
      -    });
      -
      -    this.position();
      -  }
      -
      -  getClass(key='') {
      -    const {classes} = this.options;
      -    if (typeof classes !== 'undefined' && classes[key]) {
      -      return this.options.classes[key];
      -    } else if (this.options.classPrefix) {
      -      return `${ this.options.classPrefix }-${ key }`;
      -    } else {
      -      return key;
      -    }
      -  }
      -
      -  setOptions(options, pos=true) {
      -    const defaults = {
      -      offset: '0 0',
      -      targetOffset: '0 0',
      -      targetAttachment: 'auto auto',
      -      classPrefix: 'tether'
      -    };
      -
      -    this.options = extend(defaults, options);
      -
      -    let {element, target, targetModifier} = this.options;
      -    this.element = element;
      -    this.target = target;
      -    this.targetModifier = targetModifier;
      -
      -    if (this.target === 'viewport') {
      -      this.target = document.body;
      -      this.targetModifier = 'visible';
      -    } else if (this.target === 'scroll-handle') {
      -      this.target = document.body;
      -      this.targetModifier = 'scroll-handle';
      -    }
      -
      -    ['element', 'target'].forEach(key => {
      -      if (typeof this[key] === 'undefined') {
      -        throw new Error('Tether Error: Both element and target must be defined');
      -      }
      -
      -      if (typeof this[key].jquery !== 'undefined') {
      -        this[key] = this[key][0];
      -      } else if (typeof this[key] === 'string') {
      -        this[key] = document.querySelector(this[key]);
      -      }
      -    });
      -
      -    addClass(this.element, this.getClass('element'));
      -    if (!(this.options.addTargetClasses === false)) {
      -      addClass(this.target, this.getClass('target'));
      -    }
      -
      -    if (!this.options.attachment) {
      -      throw new Error('Tether Error: You must provide an attachment');
      -    }
      -
      -    this.targetAttachment = parseAttachment(this.options.targetAttachment);
      -    this.attachment = parseAttachment(this.options.attachment);
      -    this.offset = parseOffset(this.options.offset);
      -    this.targetOffset = parseOffset(this.options.targetOffset);
      -
      -    if (typeof this.scrollParents !== 'undefined') {
      -      this.disable();
      -    }
      -
      -    if (this.targetModifier === 'scroll-handle') {
      -      this.scrollParents = [this.target];
      -    } else {
      -      this.scrollParents = getScrollParents(this.target);
      -    }
      -
      -    if(!(this.options.enabled === false)) {
      -      this.enable(pos);
      -    }
      -  }
      -
      -  getTargetBounds() {
      -    if (typeof this.targetModifier !== 'undefined') {
      -      if (this.targetModifier === 'visible') {
      -        if (this.target === document.body) {
      -          return {top: pageYOffset, left: pageXOffset, height: innerHeight, width: innerWidth};
      -        } else {
      -          const bounds = getBounds(this.target);
      -
      -          const out = {
      -            height: bounds.height,
      -            width: bounds.width,
      -            top: bounds.top,
      -            left: bounds.left
      -          };
      -
      -          out.height = Math.min(out.height, bounds.height - (pageYOffset - bounds.top));
      -          out.height = Math.min(out.height, bounds.height - ((bounds.top + bounds.height) - (pageYOffset + innerHeight)));
      -          out.height = Math.min(innerHeight, out.height);
      -          out.height -= 2;
      -
      -          out.width = Math.min(out.width, bounds.width - (pageXOffset - bounds.left));
      -          out.width = Math.min(out.width, bounds.width - ((bounds.left + bounds.width) - (pageXOffset + innerWidth)));
      -          out.width = Math.min(innerWidth, out.width);
      -          out.width -= 2;
      -
      -          if (out.top < pageYOffset) {
      -            out.top = pageYOffset;
      -          }
      -          if (out.left < pageXOffset) {
      -            out.left = pageXOffset;
      -          }
      -
      -          return out;
      -        }
      -      } else if (this.targetModifier === 'scroll-handle') {
      -        let bounds;
      -        let target = this.target;
      -        if (target === document.body) {
      -          target = document.documentElement;
      -
      -          bounds = {
      -            left: pageXOffset,
      -            top: pageYOffset,
      -            height: innerHeight,
      -            width: innerWidth
      -          };
      -        } else {
      -          bounds = getBounds(target);
      -        }
      -
      -        const style = getComputedStyle(target);
      -
      -        const hasBottomScroll = (
      -          target.scrollWidth > target.clientWidth ||
      -          [style.overflow, style.overflowX].indexOf('scroll') >= 0 ||
      -          this.target !== document.body
      -        );
      -
      -        let scrollBottom = 0;
      -        if (hasBottomScroll) {
      -          scrollBottom = 15;
      -        }
      -
      -        const height = bounds.height - parseFloat(style.borderTopWidth) - parseFloat(style.borderBottomWidth) - scrollBottom;
      -
      -        const out = {
      -          width: 15,
      -          height: height * 0.975 * (height / target.scrollHeight),
      -          left: bounds.left + bounds.width - parseFloat(style.borderLeftWidth) - 15
      -        };
      -
      -        let fitAdj = 0;
      -        if (height < 408 && this.target === document.body) {
      -          fitAdj = -0.00011 * Math.pow(height, 2) - 0.00727 * height + 22.58;
      -        }
      -
      -        if (this.target !== document.body) {
      -          out.height = Math.max(out.height, 24);
      -        }
      -
      -        const scrollPercentage = this.target.scrollTop / (target.scrollHeight - height);
      -        out.top = scrollPercentage * (height - out.height - fitAdj) + bounds.top + parseFloat(style.borderTopWidth);
      -
      -        if (this.target === document.body) {
      -          out.height = Math.max(out.height, 24);
      -        }
      -
      -        return out;
      -      }
      -    } else {
      -      return getBounds(this.target);
      -    }
      -  }
      -
      -  clearCache() {
      -    this._cache = {};
      -  }
      -
      -  cache(k, getter) {
      -    // More than one module will often need the same DOM info, so
      -    // we keep a cache which is cleared on each position call
      -    if (typeof this._cache === 'undefined') {
      -      this._cache = {};
      -    }
      -
      -    if (typeof this._cache[k] === 'undefined') {
      -      this._cache[k] = getter.call(this);
      -    }
      -
      -    return this._cache[k];
      -  }
      -
      -  enable(pos=true) {
      -    if (!(this.options.addTargetClasses === false)) {
      -      addClass(this.target, this.getClass('enabled'));
      -    }
      -    addClass(this.element, this.getClass('enabled'));
      -    this.enabled = true;
      -
      -    this.scrollParents.forEach((parent) => {
      -      if (parent !== this.target.ownerDocument) {
      -        parent.addEventListener('scroll', this.position);
      -      }
      -    })
      -
      -    if (pos) {
      -      this.position();
      -    }
      -  }
      -
      -  disable() {
      -    removeClass(this.target, this.getClass('enabled'));
      -    removeClass(this.element, this.getClass('enabled'));
      -    this.enabled = false;
      -
      -    if (typeof this.scrollParents !== 'undefined') {
      -      this.scrollParents.forEach((parent) => {
      -        parent.removeEventListener('scroll', this.position);
      -      })
      -    }
      -  }
      -
      -  destroy() {
      -    this.disable();
      -
      -    tethers.forEach((tether, i) => {
      -      if (tether === this) {
      -        tethers.splice(i, 1);
      -      }
      -    });
      -
      -    // Remove any elements we were using for convenience from the DOM
      -    if (tethers.length === 0) {
      -      removeUtilElements();
      -    }
      -  }
      -
      -  updateAttachClasses(elementAttach, targetAttach) {
      -    elementAttach = elementAttach || this.attachment;
      -    targetAttach = targetAttach || this.targetAttachment;
      -    const sides = ['left', 'top', 'bottom', 'right', 'middle', 'center'];
      -
      -    if (typeof this._addAttachClasses !== 'undefined' && this._addAttachClasses.length) {
      -      // updateAttachClasses can be called more than once in a position call, so
      -      // we need to clean up after ourselves such that when the last defer gets
      -      // ran it doesn't add any extra classes from previous calls.
      -      this._addAttachClasses.splice(0, this._addAttachClasses.length);
      -    }
      -
      -    if (typeof this._addAttachClasses === 'undefined') {
      -      this._addAttachClasses = [];
      -    }
      -    const add = this._addAttachClasses;
      -
      -    if (elementAttach.top) {
      -      add.push(`${ this.getClass('element-attached') }-${ elementAttach.top }`);
      -    }
      -    if (elementAttach.left) {
      -      add.push(`${ this.getClass('element-attached') }-${ elementAttach.left }`);
      -    }
      -    if (targetAttach.top) {
      -      add.push(`${ this.getClass('target-attached') }-${ targetAttach.top }`);
      -    }
      -    if (targetAttach.left) {
      -      add.push(`${ this.getClass('target-attached') }-${ targetAttach.left }`);
      -    }
      -
      -    const all = [];
      -    sides.forEach(side => {
      -      all.push(`${ this.getClass('element-attached') }-${ side }`);
      -      all.push(`${ this.getClass('target-attached') }-${ side }`);
      -    });
      -
      -    defer(() => {
      -      if (!(typeof this._addAttachClasses !== 'undefined')) {
      -        return;
      -      }
      -
      -      updateClasses(this.element, this._addAttachClasses, all);
      -      if (!(this.options.addTargetClasses === false)) {
      -        updateClasses(this.target, this._addAttachClasses, all);
      -      }
      -
      -      delete this._addAttachClasses;
      -    });
      -  }
      -
      -  position(flushChanges=true) {
      -    // flushChanges commits the changes immediately, leave true unless you are positioning multiple
      -    // tethers (in which case call Tether.Utils.flush yourself when you're done)
      -
      -    if (!this.enabled) {
      -      return;
      -    }
      -
      -    this.clearCache();
      -
      -    // Turn 'auto' attachments into the appropriate corner or edge
      -    const targetAttachment = autoToFixedAttachment(this.targetAttachment, this.attachment);
      -
      -    this.updateAttachClasses(this.attachment, targetAttachment);
      -
      -    const elementPos = this.cache('element-bounds', () => {
      -      return getBounds(this.element);
      -    });
      -
      -    let {width, height} = elementPos;
      -
      -    if (width === 0 && height === 0 && typeof this.lastSize !== 'undefined') {
      -      // We cache the height and width to make it possible to position elements that are
      -      // getting hidden.
      -      ({width, height} = this.lastSize);
      -    } else {
      -      this.lastSize = {width, height};
      -    }
      -
      -    const targetPos = this.cache('target-bounds', () => {
      -      return this.getTargetBounds();
      -    });
      -    const targetSize = targetPos;
      -
      -    // Get an actual px offset from the attachment
      -    let offset = offsetToPx(attachmentToOffset(this.attachment), {width, height});
      -    let targetOffset = offsetToPx(attachmentToOffset(targetAttachment), targetSize);
      -
      -    const manualOffset = offsetToPx(this.offset, {width, height});
      -    const manualTargetOffset = offsetToPx(this.targetOffset, targetSize);
      -
      -    // Add the manually provided offset
      -    offset = addOffset(offset, manualOffset);
      -    targetOffset = addOffset(targetOffset, manualTargetOffset);
      -
      -    // It's now our goal to make (element position + offset) == (target position + target offset)
      -    let left = targetPos.left + targetOffset.left - offset.left;
      -    let top = targetPos.top + targetOffset.top - offset.top;
      -
      -    for (let i = 0; i < TetherBase.modules.length; ++i) {
      -      const module = TetherBase.modules[i];
      -      const ret = module.position.call(this, {
      -        left,
      -        top,
      -        targetAttachment,
      -        targetPos,
      -        elementPos,
      -        offset,
      -        targetOffset,
      -        manualOffset,
      -        manualTargetOffset,
      -        scrollbarSize,
      -        attachment: this.attachment
      -      });
      -
      -      if (ret === false) {
      -        return false;
      -      } else if (typeof ret === 'undefined' || typeof ret !== 'object') {
      -        continue;
      -      } else {
      -        ({top, left} = ret);
      -      }
      -    }
      -
      -    // We describe the position three different ways to give the optimizer
      -    // a chance to decide the best possible way to position the element
      -    // with the fewest repaints.
      -    const next = {
      -      // It's position relative to the page (absolute positioning when
      -      // the element is a child of the body)
      -      page: {
      -        top: top,
      -        left: left
      -      },
      -
      -      // It's position relative to the viewport (fixed positioning)
      -      viewport: {
      -        top: top - pageYOffset,
      -        bottom: pageYOffset - top - height + innerHeight,
      -        left: left - pageXOffset,
      -        right: pageXOffset - left - width + innerWidth
      -      }
      -    };
      -
      -    var doc = this.target.ownerDocument;
      -    var win = doc.defaultView;
      -
      -    let scrollbarSize;
      -    if (win.innerHeight > doc.documentElement.clientHeight) {
      -      scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);
      -      next.viewport.bottom -= scrollbarSize.height;
      -    }
      -
      -    if (win.innerWidth > doc.documentElement.clientWidth) {
      -      scrollbarSize = this.cache('scrollbar-size', getScrollBarSize);
      -      next.viewport.right -= scrollbarSize.width;
      -    }
      -
      -    if (['', 'static'].indexOf(doc.body.style.position) === -1 ||
      -        ['', 'static'].indexOf(doc.body.parentElement.style.position) === -1) {
      -      // Absolute positioning in the body will be relative to the page, not the 'initial containing block'
      -      next.page.bottom = doc.body.scrollHeight - top - height;
      -      next.page.right = doc.body.scrollWidth - left - width;
      -    }
      -
      -    if (typeof this.options.optimizations !== 'undefined' &&
      -        this.options.optimizations.moveElement !== false &&
      -        !(typeof this.targetModifier !== 'undefined')) {
      -      const offsetParent = this.cache('target-offsetparent', () => getOffsetParent(this.target));
      -      const offsetPosition = this.cache('target-offsetparent-bounds', () => getBounds(offsetParent));
      -      const offsetParentStyle = getComputedStyle(offsetParent);
      -      const offsetParentSize = offsetPosition;
      -
      -      const offsetBorder = {};
      -      ['Top', 'Left', 'Bottom', 'Right'].forEach(side => {
      -        offsetBorder[side.toLowerCase()] = parseFloat(offsetParentStyle[`border${ side }Width`]);
      -      });
      -
      -      offsetPosition.right = doc.body.scrollWidth - offsetPosition.left - offsetParentSize.width + offsetBorder.right;
      -      offsetPosition.bottom = doc.body.scrollHeight - offsetPosition.top - offsetParentSize.height + offsetBorder.bottom;
      -
      -      if (next.page.top >= (offsetPosition.top + offsetBorder.top) && next.page.bottom >= offsetPosition.bottom) {
      -        if (next.page.left >= (offsetPosition.left + offsetBorder.left) && next.page.right >= offsetPosition.right) {
      -          // We're within the visible part of the target's scroll parent
      -          const scrollTop = offsetParent.scrollTop;
      -          const scrollLeft = offsetParent.scrollLeft;
      -
      -          // It's position relative to the target's offset parent (absolute positioning when
      -          // the element is moved to be a child of the target's offset parent).
      -          next.offset = {
      -            top: next.page.top - offsetPosition.top + scrollTop - offsetBorder.top,
      -            left: next.page.left - offsetPosition.left + scrollLeft - offsetBorder.left
      -          };
      -        }
      -      }
      -    }
      -
      -
      -    // We could also travel up the DOM and try each containing context, rather than only
      -    // looking at the body, but we're gonna get diminishing returns.
      -
      -    this.move(next);
      -
      -    this.history.unshift(next);
      -
      -    if (this.history.length > 3) {
      -      this.history.pop();
      -    }
      -
      -    if (flushChanges) {
      -      flush();
      -    }
      -
      -    return true;
      -  }
      -
      -  // THE ISSUE
      -  move(pos) {
      -    if (!(typeof this.element.parentNode !== 'undefined')) {
      -      return;
      -    }
      -
      -    const same = {};
      -
      -    for (let type in pos) {
      -      same[type] = {};
      -
      -      for (let key in pos[type]) {
      -        let found = false;
      -
      -        for (let i = 0; i < this.history.length; ++i) {
      -          const point = this.history[i];
      -          if (typeof point[type] !== 'undefined' &&
      -              !within(point[type][key], pos[type][key])) {
      -            found = true;
      -            break;
      -          }
      -
      -        }
      -
      -        if (!found) {
      -          same[type][key] = true;
      -        }
      -      }
      -    }
      -
      -    let css = {top: '', left: '', right: '', bottom: ''};
      -
      -    const transcribe = (_same, _pos) => {
      -      const hasOptimizations = typeof this.options.optimizations !== 'undefined';
      -      const gpu = hasOptimizations ? this.options.optimizations.gpu : null;
      -      if (gpu !== false) {
      -        let yPos, xPos;
      -        if (_same.top) {
      -          css.top = 0;
      -          yPos = _pos.top;
      -        } else {
      -          css.bottom = 0;
      -          yPos = -_pos.bottom;
      -        }
      -
      -        if (_same.left) {
      -          css.left = 0;
      -          xPos = _pos.left;
      -        } else {
      -          css.right = 0;
      -          xPos = -_pos.right;
      -        }
      -
      -        if (window.matchMedia) {
      -          // HubSpot/tether#207
      -          const retina = window.matchMedia('only screen and (min-resolution: 1.3dppx)').matches ||
      -                         window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3)').matches;
      -          if (!retina) {
      -            xPos = Math.round(xPos);
      -            yPos = Math.round(yPos);
      -          }
      -        }
      -
      -        css[transformKey] = `translateX(${ xPos }px) translateY(${ yPos }px)`;
      -
      -        if (transformKey !== 'msTransform') {
      -          // The Z transform will keep this in the GPU (faster, and prevents artifacts),
      -          // but IE9 doesn't support 3d transforms and will choke.
      -          css[transformKey] += " translateZ(0)";
      -        }
      -
      -      } else {
      -        if (_same.top) {
      -          css.top = `${ _pos.top }px`;
      -        } else {
      -          css.bottom = `${ _pos.bottom }px`;
      -        }
      -
      -        if (_same.left) {
      -          css.left = `${ _pos.left }px`;
      -        } else {
      -          css.right = `${ _pos.right }px`;
      -        }
      -      }
      -    };
      -
      -    let moved = false;
      -    if ((same.page.top || same.page.bottom) && (same.page.left || same.page.right)) {
      -      css.position = 'absolute';
      -      transcribe(same.page, pos.page);
      -
      -    } else if ((same.viewport.top || same.viewport.bottom) && (same.viewport.left || same.viewport.right)) {
      -      css.position = 'fixed';
      -      transcribe(same.viewport, pos.viewport);
      -
      -    } else if (typeof same.offset !== 'undefined' && same.offset.top && same.offset.left) {
      -      css.position = 'absolute';
      -      const offsetParent = this.cache('target-offsetparent', () => getOffsetParent(this.target));
      -
      -      if (getOffsetParent(this.element) !== offsetParent) {
      -        defer(() => {
      -          this.element.parentNode.removeChild(this.element);
      -          offsetParent.appendChild(this.element);
      -        });
      -      }
      -
      -      transcribe(same.offset, pos.offset);
      -      moved = true;
      -
      -    } else {
      -      css.position = 'absolute';
      -      transcribe({top: true, left: true}, pos.page);
      -    }
      -
      -    if (!moved) {
      -      if (this.options.bodyElement) {
      -        this.options.bodyElement.appendChild(this.element);
      -      } else {
      -        let offsetParentIsBody = true;
      -        let currentNode = this.element.parentNode;
      -        while (currentNode && currentNode.nodeType === 1 && currentNode.tagName !== 'BODY') {
      -          if (getComputedStyle(currentNode).position !== 'static') {
      -            offsetParentIsBody = false;
      -            break;
      -          }
      -
      -          currentNode = currentNode.parentNode;
      -        }
      -
      -        if (!offsetParentIsBody) {
      -          this.element.parentNode.removeChild(this.element);
      -          this.element.ownerDocument.body.appendChild(this.element);
      -        }
      -      }
      -    }
      -
      -    // Any css change will trigger a repaint, so let's avoid one if nothing changed
      -    const writeCSS = {};
      -    let write = false;
      -    for (let key in css) {
      -      let val = css[key];
      -      let elVal = this.element.style[key];
      -
      -      if (elVal !== val) {
      -        write = true;
      -        writeCSS[key] = val;
      -      }
      -    }
      -
      -    if (write) {
      -      defer(() => {
      -        extend(this.element.style, writeCSS);
      -        this.trigger('repositioned');
      -      });
      -    }
      -  }
      -}
      -
      -TetherClass.modules = [];
      -
      -TetherBase.position = position;
      -
      -let Tether = extend(TetherClass, TetherBase);
      diff --git a/bower_components/tether/src/js/utils.js b/bower_components/tether/src/js/utils.js
      deleted file mode 100644
      index 19ba7fe212..0000000000
      --- a/bower_components/tether/src/js/utils.js
      +++ /dev/null
      @@ -1,370 +0,0 @@
      -let TetherBase;
      -if (typeof TetherBase === 'undefined') {
      -  TetherBase = {modules: []};
      -}
      -
      -let zeroElement = null;
      -
      -// Same as native getBoundingClientRect, except it takes into account parent <frame> offsets
      -// if the element lies within a nested document (<frame> or <iframe>-like).
      -function getActualBoundingClientRect(node) {
      -  let boundingRect = node.getBoundingClientRect();
      -
      -  // The original object returned by getBoundingClientRect is immutable, so we clone it
      -  // We can't use extend because the properties are not considered part of the object by hasOwnProperty in IE9
      -  let rect = {};
      -  for (var k in boundingRect) {
      -    rect[k] = boundingRect[k];
      -  }
      -
      -  if (node.ownerDocument !== document) {
      -    let frameElement = node.ownerDocument.defaultView.frameElement;
      -    if (frameElement) {
      -      let frameRect = getActualBoundingClientRect(frameElement);
      -      rect.top += frameRect.top;
      -      rect.bottom += frameRect.top;
      -      rect.left += frameRect.left;
      -      rect.right += frameRect.left;
      -    }
      -  }
      -
      -  return rect;
      -}
      -
      -function getScrollParents(el) {
      -  // In firefox if the el is inside an iframe with display: none; window.getComputedStyle() will return null;
      -  // https://bugzilla.mozilla.org/show_bug.cgi?id=548397
      -  const computedStyle = getComputedStyle(el) || {};
      -  const position = computedStyle.position;
      -  let parents = [];
      -
      -  if (position === 'fixed') {
      -    return [el];
      -  }
      -
      -  let parent = el;
      -  while ((parent = parent.parentNode) && parent && parent.nodeType === 1) {
      -    let style;
      -    try {
      -      style = getComputedStyle(parent);
      -    } catch (err) {}
      -
      -    if (typeof style === 'undefined' || style === null) {
      -      parents.push(parent);
      -      return parents;
      -    }
      -
      -    const {overflow, overflowX, overflowY} = style;
      -    if (/(auto|scroll)/.test(overflow + overflowY + overflowX)) {
      -      if (position !== 'absolute' || ['relative', 'absolute', 'fixed'].indexOf(style.position) >= 0) {
      -        parents.push(parent)
      -      }
      -    }
      -  }
      -
      -  parents.push(el.ownerDocument.body);
      -
      -  // If the node is within a frame, account for the parent window scroll
      -  if (el.ownerDocument !== document) {
      -    parents.push(el.ownerDocument.defaultView);
      -  }
      -
      -  return parents;
      -}
      -
      -const uniqueId = (() => {
      -  let id = 0;
      -  return () => ++id;
      -})();
      -
      -const zeroPosCache = {};
      -const getOrigin = () => {
      -  // getBoundingClientRect is unfortunately too accurate.  It introduces a pixel or two of
      -  // jitter as the user scrolls that messes with our ability to detect if two positions
      -  // are equivilant or not.  We place an element at the top left of the page that will
      -  // get the same jitter, so we can cancel the two out.
      -  let node = zeroElement;
      -  if (!node || !document.body.contains(node)) {
      -    node = document.createElement('div');
      -    node.setAttribute('data-tether-id', uniqueId());
      -    extend(node.style, {
      -      top: 0,
      -      left: 0,
      -      position: 'absolute'
      -    });
      -
      -    document.body.appendChild(node);
      -
      -    zeroElement = node;
      -  }
      -
      -  const id = node.getAttribute('data-tether-id');
      -  if (typeof zeroPosCache[id] === 'undefined') {
      -    zeroPosCache[id] = getActualBoundingClientRect(node);
      -
      -    // Clear the cache when this position call is done
      -    defer(() => {
      -      delete zeroPosCache[id];
      -    });
      -  }
      -
      -  return zeroPosCache[id];
      -};
      -
      -function removeUtilElements() {
      -  if (zeroElement) {
      -    document.body.removeChild(zeroElement);
      -  }
      -  zeroElement = null;
      -};
      -
      -function getBounds(el) {
      -  let doc;
      -  if (el === document) {
      -    doc = document;
      -    el = document.documentElement;
      -  } else {
      -    doc = el.ownerDocument;
      -  }
      -
      -  const docEl = doc.documentElement;
      -
      -  const box = getActualBoundingClientRect(el);
      -
      -  const origin = getOrigin();
      -
      -  box.top -= origin.top;
      -  box.left -= origin.left;
      -
      -  if (typeof box.width === 'undefined') {
      -    box.width = document.body.scrollWidth - box.left - box.right;
      -  }
      -  if (typeof box.height === 'undefined') {
      -    box.height = document.body.scrollHeight - box.top - box.bottom;
      -  }
      -
      -  box.top = box.top - docEl.clientTop;
      -  box.left = box.left - docEl.clientLeft;
      -  box.right = doc.body.clientWidth - box.width - box.left;
      -  box.bottom = doc.body.clientHeight - box.height - box.top;
      -
      -  return box;
      -}
      -
      -function getOffsetParent(el) {
      -  return el.offsetParent || document.documentElement;
      -}
      -
      -let _scrollBarSize = null;
      -function getScrollBarSize() {
      -  if (_scrollBarSize) {
      -    return _scrollBarSize;
      -  }
      -  const inner = document.createElement('div');
      -  inner.style.width = '100%';
      -  inner.style.height = '200px';
      -
      -  const outer = document.createElement('div');
      -  extend(outer.style, {
      -    position: 'absolute',
      -    top: 0,
      -    left: 0,
      -    pointerEvents: 'none',
      -    visibility: 'hidden',
      -    width: '200px',
      -    height: '150px',
      -    overflow: 'hidden'
      -  });
      -
      -  outer.appendChild(inner);
      -
      -  document.body.appendChild(outer);
      -
      -  const widthContained = inner.offsetWidth;
      -  outer.style.overflow = 'scroll';
      -  let widthScroll = inner.offsetWidth;
      -
      -  if (widthContained === widthScroll) {
      -    widthScroll = outer.clientWidth;
      -  }
      -
      -  document.body.removeChild(outer);
      -
      -  const width = widthContained - widthScroll;
      -
      -  _scrollBarSize = {width, height: width};
      -  return _scrollBarSize;
      -}
      -
      -function extend(out={}) {
      -  const args = [];
      -
      -  Array.prototype.push.apply(args, arguments);
      -
      -  args.slice(1).forEach(obj => {
      -    if (obj) {
      -      for (let key in obj) {
      -        if ({}.hasOwnProperty.call(obj, key)) {
      -          out[key] = obj[key];
      -        }
      -      }
      -    }
      -  });
      -
      -  return out;
      -}
      -
      -function removeClass(el, name) {
      -  if (typeof el.classList !== 'undefined') {
      -    name.split(' ').forEach(cls => {
      -      if (cls.trim()) {
      -        el.classList.remove(cls);
      -      }
      -    });
      -  } else {
      -    const regex = new RegExp(`(^| )${ name.split(' ').join('|') }( |$)`, 'gi');
      -    const className = getClassName(el).replace(regex, ' ');
      -    setClassName(el, className);
      -  }
      -}
      -
      -function addClass(el, name) {
      -  if (typeof el.classList !== 'undefined') {
      -    name.split(' ').forEach(cls => {
      -      if (cls.trim()) {
      -        el.classList.add(cls);
      -      }
      -    });
      -  } else {
      -    removeClass(el, name);
      -    const cls = getClassName(el) + ` ${name}`;
      -    setClassName(el, cls);
      -  }
      -}
      -
      -function hasClass(el, name) {
      -  if (typeof el.classList !== 'undefined') {
      -    return el.classList.contains(name);
      -  }
      -  const className = getClassName(el);
      -  return new RegExp(`(^| )${ name }( |$)`, 'gi').test(className);
      -}
      -
      -function getClassName(el) {
      -  // Can't use just SVGAnimatedString here since nodes within a Frame in IE have
      -  // completely separately SVGAnimatedString base classes
      -  if (el.className instanceof el.ownerDocument.defaultView.SVGAnimatedString) {
      -    return el.className.baseVal;
      -  }
      -  return el.className;
      -}
      -
      -function setClassName(el, className) {
      -  el.setAttribute('class', className);
      -}
      -
      -
      -function updateClasses(el, add, all) {
      -  // Of the set of 'all' classes, we need the 'add' classes, and only the
      -  // 'add' classes to be set.
      -  all.forEach(cls => {
      -    if (add.indexOf(cls) === -1 && hasClass(el, cls)) {
      -      removeClass(el, cls);
      -    }
      -  });
      -
      -  add.forEach(cls => {
      -    if (!hasClass(el, cls)) {
      -      addClass(el, cls);
      -    }
      -  });
      -}
      -
      -const deferred = [];
      -
      -const defer = (fn) => {
      -  deferred.push(fn);
      -};
      -
      -const flush = () => {
      -  let fn;
      -  while(fn = deferred.pop()) {
      -    fn();
      -  }
      -};
      -
      -class Evented {
      -  on(event, handler, ctx, once=false) {
      -    if (typeof this.bindings === 'undefined') {
      -      this.bindings = {};
      -    }
      -    if (typeof this.bindings[event] === 'undefined') {
      -      this.bindings[event] = [];
      -    }
      -    this.bindings[event].push({handler, ctx, once});
      -  }
      -
      -  once(event, handler, ctx) {
      -    this.on(event, handler, ctx, true);
      -  }
      -
      -  off(event, handler) {
      -    if (typeof this.bindings === 'undefined' ||
      -        typeof this.bindings[event] === 'undefined') {
      -      return;
      -    }
      -
      -    if (typeof handler === 'undefined') {
      -      delete this.bindings[event];
      -    } else {
      -      let i = 0;
      -      while (i < this.bindings[event].length) {
      -        if (this.bindings[event][i].handler === handler) {
      -          this.bindings[event].splice(i, 1);
      -        } else {
      -          ++i;
      -        }
      -      }
      -    }
      -  }
      -
      -  trigger(event, ...args) {
      -    if (typeof this.bindings !== 'undefined' && this.bindings[event]) {
      -      let i = 0;
      -      while (i < this.bindings[event].length) {
      -        const {handler, ctx, once} = this.bindings[event][i];
      -
      -        let context = ctx;
      -        if (typeof context === 'undefined') {
      -          context = this;
      -        }
      -
      -        handler.apply(context, args);
      -
      -        if (once) {
      -          this.bindings[event].splice(i, 1);
      -        } else {
      -          ++i;
      -        }
      -      }
      -    }
      -  }
      -}
      -
      -TetherBase.Utils = {
      -  getActualBoundingClientRect,
      -  getScrollParents,
      -  getBounds,
      -  getOffsetParent,
      -  extend,
      -  addClass,
      -  removeClass,
      -  hasClass,
      -  updateClasses,
      -  defer,
      -  flush,
      -  uniqueId,
      -  Evented,
      -  getScrollBarSize,
      -  removeUtilElements
      -};
      
      From 6b257cc287c9b893f24ff500a0c191cf76f5a775 Mon Sep 17 00:00:00 2001
      From: snipe <snipe@snipe.net>
      Date: Tue, 12 Dec 2017 12:52:10 -0800
      Subject: [PATCH 3/3] Concat search for full name
      
      ---
       app/Models/Asset.php | 2 ++
       app/Models/User.php  | 1 +
       2 files changed, 3 insertions(+)
      
      diff --git a/app/Models/Asset.php b/app/Models/Asset.php
      index 6ecc883a38..bc421a8337 100644
      --- a/app/Models/Asset.php
      +++ b/app/Models/Asset.php
      @@ -814,6 +814,7 @@ class Asset extends Depreciable
                        })->orWhere(function ($query) use ($search) {
                                $query->where('assets_users.first_name', 'LIKE', '%'.$search.'%')
                                ->orWhere('assets_users.last_name', 'LIKE', '%'.$search.'%')
      +                         ->orWhereRaw('CONCAT(assets_users.first_name," ",assets_users.last_name) LIKE ?', ["%$search%", "%$search%"])
                                ->orWhere('assets_users.username', 'LIKE', '%'.$search.'%')
                                ->orWhere('assets_locations.name', 'LIKE', '%'.$search.'%')
                                ->orWhere('assigned_assets.name', 'LIKE', '%'.$search.'%');
      @@ -872,6 +873,7 @@ class Asset extends Depreciable
                       })->orWhere(function ($query) use ($search) {
                           $query->where('assets_users.first_name', 'LIKE', '%'.$search.'%')
                               ->orWhere('assets_users.last_name', 'LIKE', '%'.$search.'%')
      +                        ->orWhereRaw('CONCAT(assets_users.first_name," ",assets_users.last_name) LIKE ?', ["%$search%", "%$search%"])
                               ->orWhere('assets_users.username', 'LIKE', '%'.$search.'%')
                               ->orWhere('assets_locations.name', 'LIKE', '%'.$search.'%')
                               ->orWhere('assigned_assets.name', 'LIKE', '%'.$search.'%');
      diff --git a/app/Models/User.php b/app/Models/User.php
      index b1de55443b..a2ef5163ff 100755
      --- a/app/Models/User.php
      +++ b/app/Models/User.php
      @@ -424,6 +424,7 @@ class User extends SnipeModel implements AuthenticatableContract, CanResetPasswo
                       ->orWhere('users.phone', 'LIKE', "%$search%")
                       ->orWhere('users.jobtitle', 'LIKE', "%$search%")
                       ->orWhere('users.employee_num', 'LIKE', "%$search%")
      +                ->orWhereRaw('CONCAT('.DB::getTablePrefix().'users.first_name," ",'.DB::getTablePrefix().'users.last_name) LIKE ?', ["%$search%", "%$search%"])
                       ->orWhere(function ($query) use ($search) {
                           $query->whereHas('userloc', function ($query) use ($search) {
                               $query->where('locations.name', 'LIKE', '%'.$search.'%');